@huoweifang/dsh-mindmap 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/README.md +6 -6
- package/README.zh-CN.md +6 -6
- package/lib/client.js +90 -21
- package/lib/index.js +457 -107
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -1,29 +1,98 @@
|
|
|
1
1
|
window.__ModuleLoader__.load({id:"@huoweifang/dsh-mindmap",factory:function(require){var module={exports:{}},exports=module.exports;
|
|
2
|
-
"use strict";var
|
|
3
|
-
`),
|
|
2
|
+
"use strict";var Zt=Object.defineProperty;var ao=Object.getOwnPropertyDescriptor;var co=Object.getOwnPropertyNames;var uo=Object.prototype.hasOwnProperty;var mo=(e,t)=>{for(var n in t)Zt(e,n,{get:t[n],enumerable:!0})},po=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of co(t))!uo.call(e,o)&&o!==n&&Zt(e,o,{get:()=>t[o],enumerable:!(r=ao(t,o))||r.enumerable});return e};var fo=e=>po(Zt({},"__esModule",{value:!0}),e);var Oi={};mo(Oi,{apply:()=>Ti,inject:()=>Ni,name:()=>Si});module.exports=fo(Oi);var G=require("react");var Jt=0;function Dt(){Jt=(Jt+1)%1296;let e=Math.random().toString(36).slice(2,10).padEnd(8,"0");return`${Date.now().toString(36)}-${Jt.toString(36).padStart(2,"0")}${e}`}function go(e){let t={id:Dt(),text:e.text,children:[]};return typeof e.checked=="boolean"&&(t.checked=e.checked),typeof e.note=="string"&&e.note.length>0&&(t.note=e.note),t}function At(e,t,n){let r=[],o=[];for(let l=n.length-1;l>=0;l--)o.push([n[l],r]);let i=[];for(;o.length>0;){let[l,c]=o.pop(),d=go(l);e[d.id]=d,i.push([d.id,c]);for(let a=l.children.length-1;a>=0;a--)o.push([l.children[a],d.children])}for(let[l,c]of i)c.push(l);return t!==null&&e[t].children.push(...r),r}function Qt(e){let t={};for(let n of Object.values(e.nodes))for(let r of n.children)t[r]=n.id;return t}function Ge(e,t,n){let r=[],o=e.nodes[t];if(o===void 0)return r;let i=[];for(let l=o.children.length-1;l>=0;l--)i.push({id:o.children[l],depth:0});for(;i.length>0;){let l=i.pop(),c=e.nodes[l.id];if(c!==void 0&&(r.push(l),!n||!c.collapsed))for(let d=c.children.length-1;d>=0;d--)i.push({id:c.children[d],depth:l.depth+1})}return r}function bt(e,t){let n=Qt(e),r=[],o=n[t];for(;o!==void 0;)r.unshift(o),o=n[o];return r}function Et(e,t,n){return t===n?!0:bt(e,n).includes(t)}function Lt(e,t){let n=[],r=[];for(let o=t.length-1;o>=0;o--)r.push([t[o],n]);for(;r.length>0;){let[o,i]=r.pop(),l=e.nodes[o];if(l===void 0)continue;let c={text:l.text,children:[]};typeof l.checked=="boolean"&&(c.checked=l.checked),typeof l.note=="string"&&l.note.length>0&&(c.note=l.note),i.push(c);for(let d=l.children.length-1;d>=0;d--)r.push([l.children[d],c.children])}return n}function Re(e,t,n=[]){let r={...e.nodes};for(let o of n)delete r[o];for(let o of t)r[o.id]=o;return{...e,nodes:r}}function He(e,t){let n=e.nodes[t];if(n===void 0)throw new Error(`unknown node ${t}`);return n}var Kn=new WeakMap;function en(e){let t=Kn.get(e.nodes);return t===void 0&&(t=Qt(e),Kn.set(e.nodes,t)),t}function Be(e,t){let n=en(e)[t];return n===void 0?void 0:e.nodes[n]}function Kt(e,t){return en(e)[t]}function We(e,t){let n=new Set(t),r=en(e);return t.filter(o=>{let i=r[o];for(;i!==void 0;){if(n.has(i))return!1;i=r[i]}return e.nodes[o]!==void 0})}function Pn(e,t){let n=[],r=[t];for(;r.length>0;){let o=r.pop();n.push(o),r.push(...e.nodes[o]?.children??[])}return n}function qe(e,t,n){let r=He(e,t);return r.text===n?e:Re(e,[{...r,text:n}])}function tt(e,t,n,r=""){let o=He(e,t),i=Dt(),l=o.children.slice();return l.splice(Math.max(0,Math.min(n,l.length)),0,i),{doc:Re(e,[{...o,children:l,collapsed:!1},{id:i,text:r,children:[]}]),focusId:i,caret:0}}function Pt(e,t,n=""){let r=Be(e,t);return r===void 0?tt(e,t,0,n):tt(e,r.id,r.children.indexOf(t)+1,n)}function Fn(e,t,n,r=e.rootId){let o=He(e,t),i=Be(e,t),l=typeof o.checked=="boolean",c=b=>l?{id:Dt(),text:b,children:[],checked:!1}:{id:Dt(),text:b,children:[]};if(i===void 0)return tt(e,t,0);let d=i.children.indexOf(t);if(o.text.length===0&&o.children.length===0&&i.id!==r&&d===i.children.length-1){let b=at(e,t,r);if(b!==e)return{doc:b,focusId:t,caret:0}}if(n<=0&&o.text.length>0){let b=c(""),N=i.children.slice();return N.splice(d,0,b.id),{doc:Re(e,[{...i,children:N},b]),focusId:t,caret:0}}let a=o.text.slice(0,n),m=o.text.slice(n),g=c(m);if(m.length===0&&o.children.length>0&&!o.collapsed)return{doc:Re(e,[{...o,children:[g.id,...o.children]},g]),focusId:g.id,caret:0};let D=i.children.slice();return D.splice(d+1,0,g.id),{doc:Re(e,[{...i,children:D},{...o,text:a},g]),focusId:g.id,caret:0}}function Ft(e,t){let n=Be(e,t);if(n===void 0)return e;let r=n.children.indexOf(t);if(r<=0)return e;let o=He(e,n.children[r-1]);return Re(e,[{...n,children:n.children.filter(i=>i!==t)},{...o,children:[...o.children,t],collapsed:!1}])}function at(e,t,n=e.rootId){let r=Be(e,t);if(r===void 0||r.id===n)return e;let o=Be(e,r.id);if(o===void 0)return e;let i=o.children.slice();return i.splice(i.indexOf(r.id)+1,0,t),Re(e,[{...r,children:r.children.filter(l=>l!==t)},{...o,children:i}])}function rt(e,t){let n=Be(e,t);return n===void 0?e:Re(e,[{...n,children:n.children.filter(r=>r!==t)}],Pn(e,t))}function zn(e,t,n){let r=He(e,t),o=Be(e,t);if(o===void 0)return null;if(r.text.length===0&&r.children.length===0){if(n===void 0)return null;let a=rt(e,t);return{doc:a,focusId:n,caret:a.nodes[n]?.text.length??0}}let i=o.children.indexOf(t),l=i>0?He(e,o.children[i-1]):void 0;if(l===void 0||l.children.length>0&&!l.collapsed){if(n===void 0)return null;let a=e.nodes[n];if(a===void 0||a.id===e.rootId)return null;if(a.id===o.id){let g=o.children.slice();return g.splice(i,1,...r.children),{doc:Re(e,[{...o,text:o.text+r.text,children:g}],[t]),focusId:o.id,caret:o.text.length}}if(a.children.length>0)return null;let m=Re(e,[{...o,children:o.children.filter(g=>g!==t)}],[t]);return{doc:Re(m,[{...a,text:a.text+r.text,children:r.children.slice(),collapsed:r.collapsed}]),focusId:a.id,caret:a.text.length}}let c=l,d={...c,text:c.text+r.text,children:[...c.children,...r.children]};return{doc:Re(e,[d,{...o,children:o.children.filter(a=>a!==t)}],[t]),focusId:c.id,caret:c.text.length}}function _n(e,t){let n=He(e,t),r=Be(e,t);if(r===void 0||n.children.length>0)return null;let o=r.children.indexOf(t),i=r.children[o+1];if(i===void 0)return null;let l=He(e,i);return{doc:Re(e,[{...n,text:n.text+l.text,children:l.children.slice(),collapsed:l.collapsed},{...r,children:r.children.filter(c=>c!==i)}],[i]),focusId:t,caret:n.text.length}}function St(e,t,n,r){return!(t===e.rootId||e.nodes[t]===void 0||e.nodes[n]===void 0||Et(e,t,n)||r!=="inside"&&n===e.rootId)}function Nt(e,t,n,r){if(!St(e,t,n,r))return e;let o=Be(e,t),i=Re(e,[{...o,children:o.children.filter(d=>d!==t)}]);if(r==="inside"){let d=He(i,n);return Re(i,[{...d,children:[...d.children,t],collapsed:!1}])}let l=Be(i,n),c=l.children.slice();return c.splice(c.indexOf(n)+(r==="after"?1:0),0,t),Re(i,[{...l,children:c}])}function ct(e,t,n,r=e.rootId){let o=Be(e,t);if(o===void 0)return e;let i=o.children.indexOf(t),l=i+n;if(l<0||l>=o.children.length){if(o.id===r)return e;let d=Be(e,o.id);if(d===void 0)return e;let a=d.children[d.children.indexOf(o.id)+n];if(a===void 0)return e;let m=He(e,a);return Re(e,[{...o,children:o.children.filter(g=>g!==t)},{...m,children:n<0?[...m.children,t]:[t,...m.children],collapsed:!1}])}let c=o.children.slice();return c[i]=c[l],c[l]=t,Re(e,[{...o,children:c}])}function Ze(e,t,n){let r=He(e,t);return n&&r.children.length===0||!!r.collapsed===n?e:Re(e,[{...r,collapsed:n}])}function It(e,t,n){let r=[];for(let o of Pn(e,t)){if(o===t)continue;let i=e.nodes[o];i.children.length>0&&!!i.collapsed!==n&&r.push({...i,collapsed:n})}return r.length===0?e:Re(e,r)}function xt(e,t){let n=He(e,t);return Re(e,[{...n,checked:n.checked!==!0}])}function Hn(e,t){let n=He(e,t),r={...n};return typeof n.checked=="boolean"?delete r.checked:r.checked=!1,Re(e,[r])}function Bn(e,t,n){if(t.length===0)throw new Error("no items");let r={},o=At(r,null,t),i=Object.values(r),l,c;"afterId"in n?(l=Be(e,n.afterId)??He(e,e.rootId),c=l.children.indexOf(n.afterId)+1):(l=He(e,n.parentId),c=n.index);let d=l.children.slice();d.splice(c,0,...o);let a=i.find(m=>m.id===o[o.length-1]);return{doc:Re(e,[...i,{...l,children:d,collapsed:!1}]),focusId:a.id,caret:a.text.length}}function $n(e,t,n){let r=Ge(e,t,!0).map(i=>i.id),o=r.indexOf(n);return{prev:o>0?r[o-1]:void 0,next:o>=0?r[o+1]:void 0}}function jn(e,t,n,r,o){if(o.length===0)throw new Error("no items");let i=He(e,t),l=i.text.slice(0,n),c=i.text.slice(r),[d,...a]=o,m={},g=At(m,null,d.children),D=At(m,null,a),b={...i,text:l+d.text,children:[...g,...i.children]};i.text.length===0&&(typeof d.checked=="boolean"&&(b.checked=d.checked),d.note!==void 0&&d.note.length>0&&(i.note??"").length===0&&(b.note=d.note)),g.length>0&&(b.collapsed=!1);let N=[],U=t,ge;if(D.length===0)ge=b.text.length,b.text+=c;else{let J=D[D.length-1],we=m[J];ge=we.text.length,m[J]={...we,text:we.text+c};let j=Be(e,t)??He(e,e.rootId),le=j.children.slice();le.splice(le.indexOf(t)+1,0,...D),N.push({...j,children:le}),U=J}return N.push(b,...Object.values(m)),{doc:Re(e,N),focusId:U,caret:ge}}function dt(e,t,n){let r=He(e,t);if((r.note??"")===n)return e;let o={...r};return n.length===0?delete o.note:o.note=n,Re(e,[o])}function Un(e,t){let n=We(e,t),r=new Set,o=e;for(let i of n){let l=Be(o,i);if(l===void 0){r.add(i);continue}let c=l.children.indexOf(i);if(c<=0||r.has(l.children[c-1])){r.add(i);continue}o=Ft(o,i)}return o}function Xn(e,t,n=e.rootId){let r=We(e,t),o=e;for(let i=r.length-1;i>=0;i--)o=at(o,r[i],n);return o}function qn(e,t){let n=e;for(let r of We(e,t))n=rt(n,r);return n}function Vn(e,t,n,r=e.rootId){let o=We(e,t);if(o.length===0)return e;if(o.length===1)return ct(e,o[0],n,r);let i=Be(e,o[0]);if(i===void 0||o.some(g=>Be(e,g)!==i))return e;let l=o.map(g=>i.children.indexOf(g)).sort((g,D)=>g-D);if(l[l.length-1]-l[0]!==l.length-1)return e;let c=l[0],d=c+n;if(d<0||d+l.length>i.children.length)return e;let a=i.children.slice(),m=a.splice(c,l.length);return a.splice(d,0,...m),Re(e,[{...i,children:a}])}function Yn(e,t,n){let r=e;for(let o of t)r.nodes[o]!==void 0&&(r=n(r,o));return r}function Ht(e,t=e.rootId,n=e.title){let r=[];n!==null&&n.length>0&&r.push(`# ${n}`,"");let o=[],i=e.nodes[t]?.children??[];for(let l=i.length-1;l>=0;l--)o.push([i[l],0]);for(;o.length>0;){let[l,c]=o.pop(),d=e.nodes[l];if(d===void 0)continue;let a=" ".repeat(c),m=d.checked===!0?"[x] ":d.checked===!1?"[ ] ":"",[g="",...D]=d.text.split(`
|
|
3
|
+
`),b=`${a}- ${m}${ho(g)}`;r.push(g.length===0&&m.length===0?`${a}-`:b);for(let N of D)r.push(`${a} ${bo(N)}`);if(typeof d.note=="string"&&d.note.length>0)for(let N of d.note.split(`
|
|
4
|
+
`))r.push(N.length>0?`${a} > ${N}`:`${a} >`);for(let N=d.children.length-1;N>=0;N--)o.push([d.children[N],c+1])}return r.join(`
|
|
4
5
|
`)+`
|
|
5
|
-
`}function
|
|
6
|
+
`}function ho(e){let t=/^ +/.exec(e)?.[0].length??0,n=e.slice(t);return" ".repeat(t)+(t===0&&/^\[( |x|X)\]/.test(n)?"\\":"")+n}function Gn(e){return rn.test(e)||on.test(e)||e.startsWith("\\")||e.startsWith(">")||_t.test(e)}function bo(e){let t=e.trimStart();return t.length>0&&Gn(t)?e.slice(0,e.length-t.length)+"\\"+t:e}function xo(e){let t=/^(?: )+/.exec(e);return t!==null?" ".repeat(t[0].length/5)+e.slice(t[0].length):/^\\\[( |x|X)\]/.test(e)?e.slice(1):e}function vo(e){let t=e.trimStart();if(!t.startsWith("\\"))return e;let n=t.slice(1);return Gn(n)?e.slice(0,e.length-t.length)+n:e}var rn=/^(\s*)([-*+]|\d{1,9}[.)])(\s+|$)(.*)$/,on=/^(#{1,6})\s+(.*?)\s*#*\s*$/,yo=/^\[( |x|X)\](?:\s+|$)([\s\S]*)$/,_t=/^(```+|~~~+)/,wo=/^>\s?(.*)$/;function nn(e){return e.length-e.trimStart().length}function tn(e,t,n){e.note=e.note===void 0?t:e.note+`
|
|
7
|
+
`.repeat(n>0?2:1)+t}function ln(e,t={}){let n=t.detectTitle??!0,r=e.replace(/^\uFEFF/,"").replace(/\r\n?/g,`
|
|
6
8
|
`).split(`
|
|
7
|
-
`).map(
|
|
8
|
-
|
|
9
|
+
`).map(b=>b.replace(/\t/g," ")),o=0;{let b=null;for(let N of r){let U=_t.exec(N.trimStart());if(b!==null){U!==null&&U[1].startsWith(b)&&(b=null);continue}if(U!==null){b=U[1];continue}/^#\s+\S/.test(N)&&o++}}let i=[],l=[],c=[],d=null,a=null,m=0,g,D=()=>l.length>0?l[l.length-1].item.children:i;for(let b=0;b<r.length;b++){let N=r[b];if(N.trim().length===0){m++;continue}let U=nn(N),ge=N.slice(U),J=_t.exec(ge);if(J!==null){let E=[ge],B=b+1;for(;B<r.length;B++){let $=r[B],A=$.slice(Math.min(U,nn($)));E.push(A);let C=_t.exec($.trimStart());if(C!==null&&C[1].startsWith(J[1])&&$.trimStart().slice(C[1].length).trim().length===0)break}b=B;let w=E.join(`
|
|
10
|
+
`),_=d!==null&&U>d.marker?d.item:a??d?.item??null;_!==null?tn(_,w,m):D().push({text:w,children:[]}),m=0;continue}let we=on.exec(N);if(we!==null){let E=we[1].length;if(n&&g===void 0&&E===1&&o===1&&i.length===0)g=we[2],a=null;else{for(;l.length>0&&l[l.length-1].level>=E;)l.pop();let B={text:we[2],children:[]};D().push(B),l.push({level:E,item:B}),a=B}c=[],d=null,m=0;continue}let j=rn.exec(N);if(j!==null){let E=j[1].length,B=j[4]??"",w,_=yo.exec(B);for(_!==null&&(w=_[1]!==" ",B=_[2]),B=xo(B);c.length>0&&c[c.length-1].indent>=E;)c.pop();let $={text:B,children:[]};w!==void 0&&($.checked=w),(c.length>0?c[c.length-1].item.children:D()).push($),c.push({indent:E,item:$}),d={marker:E,content:E+j[2].length+Math.max(1,j[3].length),item:$},a=null,m=0;continue}let le=wo.exec(ge);if(d!==null&&U>d.marker){le!==null?tn(d.item,le[1],0):d.item.text+=`
|
|
11
|
+
`.repeat(m+1)+vo(N.slice(Math.min(U,d.content))),m=0;continue}let L=le!==null?le[1]:ge;if(a!==null){tn(a,L,m),m=0;continue}D().push({text:L,children:[]}),c=[],d=null,m=0}return g===void 0?{items:i}:{title:g,items:i}}function ko(e){let t=[],n=[];for(let r of e.replace(/\r\n?/g,`
|
|
9
12
|
`).split(`
|
|
10
|
-
`)){let r
|
|
13
|
+
`)){let o=r.replace(/\t/g," ");if(o.trim().length===0)continue;let i=nn(o);for(;n.length>0&&n[n.length-1].indent>=i;)n.pop();let l={text:o.trim(),children:[]};(n.length>0?n[n.length-1].item.children:t).push(l),n.push({indent:i,item:l})}return t}function Wn(e){return e.replace(/\r\n?/g,`
|
|
11
14
|
`).split(`
|
|
12
|
-
`).filter(
|
|
15
|
+
`).filter(r=>r.trim().length>0).some(r=>rn.test(r.replace(/\t/g," "))||on.test(r))?ln(e,{detectTitle:!1}).items:ko(e)}function sn(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/\n/g," ").replace(/\r/g,"")}function Zn(e){return e.replace(/&(#x[0-9a-fA-F]+|#\d+|lt|gt|quot|apos|amp);/g,(t,n)=>{if(n==="lt")return"<";if(n==="gt")return">";if(n==="quot")return'"';if(n==="apos")return"'";if(n==="amp")return"&";let r=n[1]==="x"?Number.parseInt(n.slice(2),16):Number.parseInt(n.slice(1),10);return Number.isFinite(r)&&r>0&&r<=1114111?String.fromCodePoint(r):""})}function Jn(e,t=e.rootId,n=e.title){let r=['<?xml version="1.0" encoding="UTF-8"?>','<opml version="2.0">',` <head><title>${sn(n)}</title></head>`," <body>"],o=(i,l)=>{for(let c of i){let d=e.nodes[c];if(d===void 0)continue;let a=" ".repeat(l+2),m=typeof d.note=="string"&&d.note.length>0?` _note="${sn(d.note)}"`:"",g=`text="${sn(d.text)}"${m}${typeof d.checked=="boolean"?` _checked="${d.checked}"`:""}`;d.children.length===0?r.push(`${a}<outline ${g}/>`):(r.push(`${a}<outline ${g}>`),o(d.children,l+1),r.push(`${a}</outline>`))}};return o(e.nodes[t]?.children??[],0),r.push(" </body>","</opml>"),r.join(`
|
|
13
16
|
`)+`
|
|
14
|
-
`}function pt(e){if(!/<opml[\s>]/i.test(e))throw new Error("\u4E0D\u662F\u6709\u6548\u7684 OPML \u6587\u4EF6");let t=/<title>([\s\S]*?)<\/title>/i.exec(e),n=e.search(/<body[\s>\/]/i),o=n>=0?e.slice(n):e,r=[],i=[],a=/<outline\b([^>]*?)(\/?)>|<\/outline\s*>/gi,f;for(;(f=a.exec(o))!==null;){if(f[0].startsWith("</")){i.pop();continue}let c={},D=/([\w:.-]+)\s*=\s*(?:"([^"]*)"|'([^']*)')/g,M;for(;(M=D.exec(f[1]??""))!==null;)c[M[1]]=ut(M[2]??M[3]??"");let w={text:(c.text??c.title??"").replace(/\r/g,""),children:[]};(c._checked??c._complete)==="true"?w.checked=!0:c._checked==="false"&&(w.checked=!1),(i.length>0?i[i.length-1].children:r).push(w),f[2]!=="/"&&i.push(w)}let u=t!==null?ut(t[1].trim()):void 0;return u!==void 0&&u.length>0?{title:u,items:r}:{items:r}}var Xe="/dsh-mindmap/api";var ue=class extends Error{code;current;constructor(t,n,o){super(n),this.code=t,o!==void 0&&(this.current=o)}};async function ne(e,t,n={}){let o;try{o=await fetch(Xe+e,t===void 0?{cache:"no-store"}:{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(t),keepalive:n.keepalive===!0})}catch(i){throw new ue("network","\u65E0\u6CD5\u8FDE\u63A5\u5230\u601D\u7EF4\u5BFC\u56FE\u670D\u52A1\uFF1A"+(i instanceof Error?i.message:String(i)))}let r;try{r=await o.json()}catch{throw new ue("internal",`\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6548\u54CD\u5E94 (HTTP ${o.status})`)}if(!r.ok)throw new ue(r.error.code,r.error.message,r.error.current);return r.value}var te={library:()=>ne("/library"),doc:e=>ne(`/docs/${e}`),createDoc:e=>ne("/docs",e),saveDoc:(e,t,n=!1)=>ne(`/docs/${e.id}/save`,{doc:e,baseRevision:t},{keepalive:n}),patchMeta:(e,t)=>ne(`/docs/${e}/meta`,t),trash:e=>ne(`/docs/${e}/trash`,{}),restore:e=>ne(`/docs/${e}/restore`,{}),purge:e=>ne(`/docs/${e}/purge`,{}),createFolder:e=>ne("/folders",{name:e}),renameFolder:(e,t)=>ne(`/folders/${e}/rename`,{name:t}),deleteFolder:e=>ne(`/folders/${e}/delete`,{}),search:e=>ne("/search?q="+encodeURIComponent(e)),backups:()=>ne("/backups"),backupNow:()=>ne("/backups/now",{}),restoreBackup:e=>ne(`/backups/${e}/restore`,{}),restoreFile:e=>ne("/restore",e),backupUrl:e=>`${Xe}/backups/${encodeURIComponent(e)}`};var $=require("react");var Ce=class{past=[];future=[];lastKey=null;lastAt=0;limit;constructor(t=200){this.limit=t}record(t,n,o=null,r=Date.now()){this.future=[];let i=o!==null&&o===this.lastKey&&r-this.lastAt<1e3;return this.lastKey=o,this.lastAt=r,i?!1:(this.past.push({state:t,selection:n}),this.past.length>this.limit&&this.past.shift(),!0)}breakMerge(){this.lastKey=null}undo(t,n){let o=this.past.pop();return o===void 0?null:(this.future.push({state:t,selection:n}),this.lastKey=null,o)}redo(t,n){let o=this.future.pop();return o===void 0?null:(this.past.push({state:t,selection:n}),this.lastKey=null,o)}canUndo(){return this.past.length>0}canRedo(){return this.future.length>0}clear(){this.past=[],this.future=[],this.lastKey=null}};var ft=800,gt=6e4;function ht(e,t){let[n,o]=(0,$.useState)(null),[r,i]=(0,$.useState)(!1),[a,f]=(0,$.useState)(null),[u,c]=(0,$.useState)("saved"),[D,M]=(0,$.useState)(null),[w,E]=(0,$.useState)(null),[k,L]=(0,$.useState)(null),[,X]=(0,$.useState)(0),[z,Y]=(0,$.useState)(0),F=(0,$.useRef)(null),B=(0,$.useRef)({rev:0}),S=(0,$.useRef)(null),h=(0,$.useRef)(!1),d=(0,$.useRef)(null),y=(0,$.useRef)(void 0),v=(0,$.useRef)(0),b=(0,$.useRef)(!1),T=(0,$.useRef)(null),I=(0,$.useRef)(new Ce(200)),R=(0,$.useRef)(0),N=(0,$.useRef)(t);N.current=t;let P=(0,$.useCallback)(async g=>{if(window.clearTimeout(y.current),y.current=void 0,d.current!==null){await d.current,h.current&&!b.current&&await P(g);return}let p=F.current;if(p===null||!h.current||b.current)return;let C=B.current,H={...p,revision:C.rev},G=g&&JSON.stringify(H).length<gt;c("saving"),S.current=p;let W=(async()=>{try{let Q=await te.saveDoc(H,C.rev,G);if(C.rev=Q.revision,N.current(Q),B.current!==C)return;v.current=0,M(null),F.current===p?(h.current=!1,c("saved")):c("dirty")}catch(Q){if(B.current!==C){console.warn("[dsh-mindmap] save of a closed document failed:",Q);return}Q instanceof ue&&Q.code==="conflict"&&Q.current!==void 0?(b.current=!0,E(Q.current),c("conflict"),M(Q.message)):Q instanceof ue&&Q.code==="invalid_input"?(b.current=!0,c("error"),M("\u4FDD\u5B58\u88AB\u62D2\u7EDD\uFF1A"+Q.message)):(c("error"),M((Q instanceof Error?Q.message:String(Q))+"\uFF0C\u7A0D\u540E\u81EA\u52A8\u91CD\u8BD5"),v.current=Math.min(v.current+1,6),window.clearTimeout(y.current),y.current=window.setTimeout(()=>{P(!1)},1e3*2**v.current))}})();d.current=W;try{await W}finally{d.current=null,S.current=null}h.current&&!b.current&&F.current!==p&&y.current===void 0&&(y.current=window.setTimeout(()=>{P(!1)},ft))},[]),K=(0,$.useCallback)(()=>P(!1),[P]);(0,$.useEffect)(()=>{let g=!0;if(window.clearTimeout(y.current),y.current=void 0,I.current.clear(),b.current=!1,h.current=!1,v.current=0,F.current=null,o(null),E(null),L(null),c("saved"),M(null),f(null),e===null){i(!1);return}return i(!0),te.doc(e).then(p=>{g&&(F.current=p,B.current={rev:p.revision},o(p),i(!1))},p=>{g&&(f(p instanceof Error?p.message:String(p)),i(!1))}),()=>{g=!1;let p=F.current,C=B.current,H=d.current,G=H!==null&&S.current===p;p!==null&&h.current&&!b.current&&!G&&(async()=>{H!==null&&await H.catch(()=>{});try{let W=await te.saveDoc({...p,revision:C.rev},C.rev,JSON.stringify(p).length<gt);C.rev=W.revision,N.current(W)}catch(W){console.warn("[dsh-mindmap] flush on close failed:",W)}})(),B.current={rev:0}}},[e,z,P]),(0,$.useEffect)(()=>{let g=()=>{document.visibilityState==="hidden"&&h.current&&P(!0)},p=()=>{h.current&&P(!0)};return document.addEventListener("visibilitychange",g),window.addEventListener("pagehide",p),window.addEventListener("beforeunload",p),()=>{document.removeEventListener("visibilitychange",g),window.removeEventListener("pagehide",p),window.removeEventListener("beforeunload",p)}},[P]);let _=(0,$.useCallback)(g=>{F.current=g,o(g),h.current=!0,b.current||(c(p=>p==="saving"?p:"dirty"),window.clearTimeout(y.current),y.current=window.setTimeout(()=>{P(!1)},ft))},[P]),A=(0,$.useCallback)((g,p)=>{R.current++,L({id:g,caret:p,nonce:R.current})},[]),l=(0,$.useCallback)((g,p={})=>{let C=F.current;C===null||g===C||(p.noHistory!==!0&&I.current.record(C,T.current,p.key??null),_(g),p.focus!==void 0&&A(p.focus.id,p.focus.caret),X(H=>H+1))},[_,A]),x=(0,$.useCallback)(g=>{let p=F.current;if(p===null)return;let C=g==="undo"?I.current.undo(p,T.current):I.current.redo(p,T.current);if(C===null)return;_({...C.state,revision:p.revision});let H=C.selection;H!==null&&C.state.nodes[H.nodeId]!==void 0&&A(H.nodeId,H.caret),X(G=>G+1)},[_,A]),s=(0,$.useCallback)(g=>{E(p=>(p===null||(b.current=!1,B.current.rev=p.revision,M(null),g==="theirs"?(I.current.clear(),h.current=!1,F.current=p,o(p),c("saved")):(h.current=!0,c("dirty"),window.setTimeout(()=>{P(!1)},0))),null))},[P]);return{doc:n,loading:r,loadError:a,status:u,statusMessage:D,conflict:w,focus:k,canUndo:I.current.canUndo(),canRedo:I.current.canRedo(),apply:l,setSelection:g=>{T.current=g},requestFocus:A,breakMerge:()=>I.current.breakMerge(),undo:()=>x("undo"),redo:()=>x("redo"),flush:K,resolveConflict:s,reload:()=>Y(g=>g+1)}}var Z=require("react");function Ye(e){return e.replace(/\[([^\]\n]+)\]\((https?:\/\/[^)\s]+)\)/g,"$1").replace(/\*\*([^*\n]+?)\*\*/g,"$1").replace(/~~([^~\n]+?)~~/g,"$1").replace(/`([^`\n]+)`/g,"$1").replace(/(^|[^*])\*([^*\s][^*\n]*?)\*/g,"$1$2")}var me=require("react/jsx-runtime"),Vt=/(`[^`\n]+`)|(\*\*[^*\n]+?\*\*)|(~~[^~\n]+?~~)|(\*[^*\s][^*\n]*?\*)|(\[[^\]\n]+\]\(https?:\/\/[^)\s]+\))|(https?:\/\/[^\s<>()]+[^\s<>().,;:!?,。;:!?])|((?:^|(?<=\s))#[^\s#]{1,40})/g;function bt(e){return t=>{t.preventDefault(),t.stopPropagation(),window.open(e,"_blank","noopener,noreferrer")}}function ge(e,t="i"){let n=[],o=0,r=0;for(let i of e.matchAll(Vt)){let a=i.index??0;a>o&&n.push(e.slice(o,a));let f=i[0],u=t+"-"+r++;if(i[1]!==void 0)n.push((0,me.jsx)("code",{className:"mm-code",children:f.slice(1,-1)},u));else if(i[2]!==void 0)n.push((0,me.jsx)("strong",{children:ge(f.slice(2,-2),u)},u));else if(i[3]!==void 0)n.push((0,me.jsx)("s",{children:ge(f.slice(2,-2),u)},u));else if(i[4]!==void 0)n.push((0,me.jsx)("em",{children:ge(f.slice(1,-1),u)},u));else if(i[5]!==void 0){let c=f.indexOf("]("),D=f.slice(c+2,-1);n.push((0,me.jsx)("a",{href:D,className:"mm-link",onMouseDown:M=>M.stopPropagation(),onClick:bt(D),children:f.slice(1,c)},u))}else i[6]!==void 0?n.push((0,me.jsx)("a",{href:f,className:"mm-link",onMouseDown:c=>c.stopPropagation(),onClick:bt(f),children:f},u)):n.push((0,me.jsx)("span",{className:"mm-tag",children:f},u));o=a+f.length}return o<e.length&&n.push(e.slice(o)),n}var q=require("react"),J=require("react/jsx-runtime"),Zt={plus:"M12 5v14M5 12h14",folderPlus:"M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2zM12 11v5M9.5 13.5h5",folder:"M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",doc:"M7 3h7l5 5v11a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zM14 3v5h5",star:"M12 3.5l2.6 5.3 5.9.9-4.3 4.1 1 5.8-5.2-2.7-5.2 2.7 1-5.8-4.3-4.1 5.9-.9z",search:"M11 4a7 7 0 1 1 0 14 7 7 0 0 1 0-14zM20 20l-4-4",chevron:"M6 9l6 6 6-6",chevronRight:"M9 6l6 6-6 6",undo:"M9 14L4 9l5-5M4 9h10a6 6 0 0 1 0 12h-3",redo:"M15 14l5-5-5-5M20 9H10a6 6 0 0 0 0 12h3",more:"M5 12h.01M12 12h.01M19 12h.01",download:"M12 4v11M7 10l5 5 5-5M5 20h14",upload:"M12 20V9M7 14l5-5 5 5M5 4h14",trash:"M4 7h16M9 7V4h6v3M6 7l1 13h10l1-13",menu:"M4 6h16M4 12h16M4 18h16",fit:"M4 9V4h5M15 4h5v5M20 15v5h-5M9 20H4v-5",center:"M12 8a4 4 0 1 1 0 8 4 4 0 0 1 0-8zM12 2v3M12 19v3M2 12h3M19 12h3",minus:"M5 12h14",expand:"M7 10l5-5 5 5M7 14l5 5 5-5",collapse:"M7 5l5 5 5-5M7 19l5-5 5 5",backup:"M4 7c0-1.7 3.6-3 8-3s8 1.3 8 3-3.6 3-8 3-8-1.3-8-3zM4 7v10c0 1.7 3.6 3 8 3s8-1.3 8-3V7M4 12c0 1.7 3.6 3 8 3s8-1.3 8-3",x:"M6 6l12 12M18 6L6 18",mindmap:"M9 12h3M12 12c2 0 2-5 4-5h1M12 12c2 0 2 5 4 5h1M4 10h5v4H4zM17 5h4v4h-4zM17 15h4v4h-4z",outline:"M8 6h12M8 12h12M8 18h12M4 6h.01M4 12h.01M4 18h.01"};function V(e){let t=e.size??16;return(0,J.jsx)("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.8,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",focusable:"false",children:(0,J.jsx)("path",{d:Zt[e.name]??""})})}function vt(e){let t=(0,q.useRef)(null),[n,o]=(0,q.useState)({x:e.x,y:e.y}),r=e.onClose;return(0,q.useLayoutEffect)(()=>{let i=t.current;if(i===null)return;let a=i.getBoundingClientRect();o({x:Math.max(4,Math.min(e.x,window.innerWidth-a.width-4)),y:Math.max(4,Math.min(e.y,window.innerHeight-a.height-4))}),i.querySelector("button:not(:disabled)")?.focus({preventScroll:!0})},[e.x,e.y]),(0,q.useEffect)(()=>{let i=f=>{t.current!==null&&!t.current.contains(f.target)&&r()},a=f=>{if(f.key==="Escape"){f.preventDefault(),f.stopPropagation(),r();return}if(f.key==="ArrowDown"||f.key==="ArrowUp"){f.preventDefault();let u=Array.from(t.current?.querySelectorAll("button:not(:disabled)")??[]);if(u.length===0)return;let c=u.indexOf(document.activeElement);u[(c+(f.key==="ArrowDown"?1:u.length-1)+u.length)%u.length]?.focus()}};return window.addEventListener("mousedown",i,!0),window.addEventListener("keydown",a,!0),window.addEventListener("blur",r),window.addEventListener("resize",r),()=>{window.removeEventListener("mousedown",i,!0),window.removeEventListener("keydown",a,!0),window.removeEventListener("blur",r),window.removeEventListener("resize",r)}},[r]),(0,J.jsx)("div",{ref:t,className:"mm-menu",role:"menu",style:{left:n.x,top:n.y},onContextMenu:i=>i.preventDefault(),children:e.items.map((i,a)=>i.kind==="sep"?(0,J.jsx)("div",{className:"mm-menu-sep",role:"separator"},a):i.kind==="label"?(0,J.jsx)("div",{className:"mm-menu-label",children:i.label},a):(0,J.jsxs)("button",{type:"button",role:"menuitem",disabled:i.disabled,className:"mm-menu-item"+(i.danger===!0?" mm-danger":""),onClick:()=>{r(),i.onSelect()},children:[i.label,i.shortcut!==void 0?(0,J.jsx)("span",{className:"mm-menu-key",children:i.shortcut}):null]},a))})}var xt=(0,q.createContext)(null);function be(){let e=(0,q.useContext)(xt);if(e===null)throw new Error("useDialogs outside DialogHost");return e}function yt(e){let[t,n]=(0,q.useState)(null),[o,r]=(0,q.useState)(null),i=(0,q.useRef)(void 0),a=(0,q.useMemo)(()=>({confirm:u=>new Promise(c=>n({kind:"confirm",title:u.title,message:u.message,ok:u.ok??"\u786E\u5B9A",danger:u.danger===!0,resolve:c})),prompt:u=>new Promise(c=>n({kind:"prompt",title:u.title,value:u.value??"",placeholder:u.placeholder??"",ok:u.ok??"\u786E\u5B9A",resolve:c})),show:u=>n({kind:"custom",title:u.title,body:u.body}),toast:u=>{r(u),window.clearTimeout(i.current),i.current=window.setTimeout(()=>r(null),2600)}}),[]);(0,q.useEffect)(()=>()=>window.clearTimeout(i.current),[]);let f=(0,q.useCallback)(()=>n(null),[]);return(0,J.jsxs)(xt.Provider,{value:a,children:[e.children,t!==null?(0,J.jsx)(Wt,{pending:t,onDone:f}):null,o!==null?(0,J.jsx)("div",{className:"mm-toast",role:"status",children:o}):null]})}function Wt(e){let t=e.pending,[n,o]=(0,q.useState)(t.kind==="prompt"?t.value:""),r=(0,q.useRef)(null),i=(0,q.useRef)(null),a=(0,q.useRef)(null);(0,q.useEffect)(()=>{let c=document.activeElement;return t.kind==="prompt"?(r.current?.focus(),r.current?.select()):i.current!==null?i.current.focus():a.current?.querySelector("button")?.focus(),()=>{c!==null&&document.contains(c)&&c.focus({preventScroll:!0})}},[t]);let f=c=>{e.onDone(),t.kind==="confirm"?t.resolve(c):t.kind==="prompt"&&t.resolve(c?n:null)};return(0,J.jsx)("div",{className:"mm-modal-mask",onMouseDown:c=>{c.target===c.currentTarget&&f(!1)},onKeyDown:c=>{c.key==="Escape"?(c.preventDefault(),c.stopPropagation(),f(!1)):c.key==="Enter"&&t.kind!=="custom"&&!c.nativeEvent.isComposing&&c.keyCode!==229&&(c.preventDefault(),f(!0))},children:(0,J.jsxs)("div",{ref:a,className:"mm-modal",role:"dialog","aria-modal":"true","aria-label":t.title,children:[(0,J.jsx)("h3",{children:t.title}),(0,J.jsxs)("div",{className:"mm-modal-body",children:[t.kind==="confirm"&&t.message!==void 0?(0,J.jsx)("p",{style:{margin:0,whiteSpace:"pre-wrap"},children:t.message}):null,t.kind==="prompt"?(0,J.jsx)("input",{ref:r,type:"text","aria-label":t.title,value:n,placeholder:t.placeholder,onChange:c=>o(c.target.value)}):null,t.kind==="custom"?t.body(e.onDone):null]}),t.kind!=="custom"?(0,J.jsxs)("div",{className:"mm-modal-foot",children:[(0,J.jsx)("button",{type:"button",className:"mm-btn",onClick:()=>f(!1),children:"\u53D6\u6D88"}),(0,J.jsx)("button",{ref:i,type:"button",className:"mm-btn mm-primary"+(t.kind==="confirm"&&t.danger?" mm-danger":""),onClick:()=>f(!0),children:t.ok})]}):(0,J.jsx)("div",{className:"mm-modal-foot",children:(0,J.jsx)("button",{type:"button",className:"mm-btn",onClick:e.onDone,children:"\u5173\u95ED"})})]})})}function wt(e,t=Date.now()){let n=Math.max(0,t-e);if(n<6e4)return"\u521A\u521A";if(n<36e5)return Math.floor(n/6e4)+" \u5206\u949F\u524D";if(n<864e5)return Math.floor(n/36e5)+" \u5C0F\u65F6\u524D";if(n<7*864e5)return Math.floor(n/864e5)+" \u5929\u524D";let o=new Date(e);return(new Date(t).getFullYear()===o.getFullYear()?"":o.getFullYear()+"/")+(o.getMonth()+1)+"/"+o.getDate()}function ye(e,t){let n=URL.createObjectURL(t),o=document.createElement("a");o.href=n,o.download=e,document.body.appendChild(o),o.click(),o.remove(),window.setTimeout(()=>URL.revokeObjectURL(n),1e4)}function we(e,t){return(e.replace(/[\/:*?"<>|\u0000-\u001f]+/g,"_").trim().slice(0,80)||"\u672A\u547D\u540D\u6587\u6863")+"."+t}var oe=require("react/jsx-runtime"),qe=24,Gt="application/x-dsh-mindmap-node";function Jt(e,t,n,o){let r=e.ownerDocument,i=null,a=0;if(typeof r.caretPositionFromPoint=="function"){let c=r.caretPositionFromPoint(t,n);c!==null&&(i=c.offsetNode,a=c.offset)}else if(typeof r.caretRangeFromPoint=="function"){let c=r.caretRangeFromPoint(t,n);c!==null&&(i=c.startContainer,a=c.startOffset)}if(i===null||!e.contains(i)||e.textContent!==o)return"end";let f=r.createTreeWalker(e,NodeFilter.SHOW_TEXT),u=0;for(let c=f.nextNode();c!==null;c=f.nextNode()){if(c===i)return u+a;u+=c.textContent?.length??0}return"end"}var Qt=(0,Z.memo)(function(t){let{node:n,depth:o,ctl:r}=t,i=n.children.length>0,a=(0,Z.useRef)(null),f="mm-node"+(n.checked===!0?" mm-done":"")+(t.drop!==null?" mm-drop-"+t.drop:"")+(t.dragging?" mm-dragging":"");return(0,oe.jsxs)("div",{className:f,"data-node-id":n.id,role:"treeitem","aria-level":o+1,"aria-expanded":i?!n.collapsed:void 0,style:{paddingLeft:o*qe,"--mm-drop-left":o*qe+40+"px"},onDragOver:u=>r.dragOver(u,n.id,o),onDrop:r.drop,onContextMenu:u=>r.menu(u,n.id),children:[(0,oe.jsx)("button",{type:"button",tabIndex:-1,className:"mm-fold"+(n.collapsed===!0?" mm-closed mm-show":""),style:{visibility:i?"visible":"hidden"},"aria-label":n.collapsed===!0?"\u5C55\u5F00":"\u6298\u53E0",onClick:()=>r.toggleFold(n.id),children:(0,oe.jsx)(V,{name:"chevron",size:14})}),(0,oe.jsx)("button",{type:"button",tabIndex:-1,className:"mm-bullet"+(i&&n.collapsed===!0?" mm-collapsed":""),draggable:!0,title:"\u70B9\u51FB\u805A\u7126\uFF0C\u62D6\u52A8\u79FB\u52A8","aria-label":"\u805A\u7126\u6B64\u8282\u70B9",onClick:()=>r.zoom(n.id),onDragStart:u=>r.dragStart(u,n.id),onDragEnd:r.dragEnd,children:(0,oe.jsx)("span",{className:"mm-dot"})}),typeof n.checked=="boolean"?(0,oe.jsx)("input",{type:"checkbox",className:"mm-check",tabIndex:-1,checked:n.checked,"aria-label":"\u5B8C\u6210",onChange:()=>r.toggleCheck(n.id)}):null,t.editing?(0,oe.jsx)("textarea",{ref:r.bindInput,className:"mm-input",rows:1,value:n.text,spellCheck:!1,"aria-label":"\u8282\u70B9\u5185\u5BB9",onChange:u=>r.change(n.id,u.target.value,u.target.selectionStart),onKeyDown:u=>r.key(u,n.id),onSelect:u=>r.select(n.id,u.currentTarget.selectionStart),onPaste:u=>r.paste(u,n.id),onBlur:()=>r.blur(n.id)}):(0,oe.jsx)("div",{ref:a,className:"mm-text",onMouseDown:u=>{u.button===0&&(u.preventDefault(),r.startEdit(n.id,a.current!==null?Jt(a.current,u.clientX,u.clientY,n.text):"end"))},children:ge(n.text)})]})});function kt(e){let{state:t,doc:n,rootId:o}=e,r=be(),[i,a]=(0,Z.useState)(null),[f,u]=(0,Z.useState)(null),[c,D]=(0,Z.useState)(null),M=(0,Z.useRef)(null);M.current=i;let w=(0,Z.useRef)(null),E=(0,Z.useRef)(null),k=(0,Z.useRef)(n);k.current=n;let L=(0,Z.useRef)(e);L.current=e;let X=(0,Z.useMemo)(()=>et(n,o,!0),[n,o]);(0,Z.useEffect)(()=>{let h=t.focus;h===null||n.nodes[h.id]===void 0||(w.current=h.caret,a(h.id),M.current===h.id&&z())},[t.focus]);function z(){let h=E.current;if(h===null)return;let d=w.current;if(document.activeElement!==h&&h.focus({preventScroll:!0}),d!==null){let y=d==="end"?h.value.length:d==="start"?0:Math.min(d,h.value.length);h.setSelectionRange(y,y),w.current=null}h.scrollIntoView({block:"nearest"})}(0,Z.useLayoutEffect)(()=>{let h=E.current;h!==null&&(h.style.height="0px",h.style.height=h.scrollHeight+"px")}),(0,Z.useLayoutEffect)(()=>{i!==null&&z()},[i]);let Y=(0,Z.useMemo)(()=>{let h=(v,b,T)=>{L.current.state.apply(v,{focus:b,key:T})},d=v=>st(k.current,L.current.rootId,v),y=(v,b)=>{v!==void 0&&(w.current=b,a(v))};return{startEdit(v,b){w.current=b,M.current===v&&z(),a(v)},toggleFold(v){let b=k.current;L.current.state.apply(ae(b,v,b.nodes[v]?.collapsed!==!0),{noHistory:!0})},toggleCheck(v){h(Ee(k.current,v))},zoom(v){L.current.onZoom(v)},bindInput(v){E.current=v},change(v,b,T){L.current.state.setSelection({nodeId:v,caret:T}),h(de(k.current,v,b),void 0,"text:"+v)},select(v,b){L.current.state.setSelection({nodeId:v,caret:b})},blur(v){L.current.state.breakMerge(),window.setTimeout(()=>{M.current===v&&document.activeElement!==E.current&&a(null)},0)},key(v,b){if(v.nativeEvent.isComposing||v.keyCode===229)return;let T=v.currentTarget,I=k.current,R=L.current.rootId,N=T.selectionStart,P=T.selectionEnd,K=T.value,_=v.ctrlKey||v.metaKey,A=v.key,l=()=>{v.preventDefault(),v.stopPropagation()};if(L.current.state.setSelection({nodeId:b,caret:N}),_&&!v.altKey&&(A==="z"||A==="Z")){l(),v.shiftKey?L.current.state.redo():L.current.state.undo();return}if(_&&!v.altKey&&(A==="y"||A==="Y")){l(),L.current.state.redo();return}if(_&&(A==="b"||A==="i")){l();let x=A==="b"?"**":"*",s=K.slice(0,N)+x+K.slice(N,P)+x+K.slice(P);h(de(I,b,s),{id:b,caret:P+x.length*(N===P?1:2)});return}if(_&&A==="."){l(),h(ae(I,b,I.nodes[b]?.collapsed!==!0),{id:b,caret:N});return}if(A==="Enter"&&_){l(),h(Ee(I,b),{id:b,caret:N});return}if(A==="Enter"&&!v.shiftKey&&!v.altKey){l();let x=N!==P?de(I,b,K.slice(0,N)+K.slice(P)):I,s=nt(x,b,N);h(s.doc,{id:s.focusId,caret:s.caret});return}if(A==="Tab"&&!_&&!v.altKey){l();let x=v.shiftKey?He(I,b,R):Fe(I,b);x!==I&&h(x,{id:b,caret:N});return}if(A==="Escape"){l(),T.blur(),a(null);return}if(v.altKey&&!_&&(A==="ArrowUp"||A==="ArrowDown")){l();let x=De(I,b,A==="ArrowUp"?-1:1);x!==I&&h(x,{id:b,caret:N});return}if(v.altKey&&!_&&A==="ArrowRight"){l(),L.current.onZoom(b);return}if(v.altKey&&!_&&A==="ArrowLeft"){if(l(),R!==I.rootId){let x=he(I,R);L.current.onZoom(x[x.length-1]??I.rootId)}return}if(!(v.altKey||_||v.shiftKey)){if(A==="Backspace"&&N===0&&P===0){let x=ot(I,b,d(b).prev);x!==null&&(l(),h(x.doc,{id:x.focusId,caret:x.caret}));return}if(A==="Delete"&&N===K.length&&P===K.length){let x=rt(I,b);x!==null&&(l(),h(x.doc,{id:x.focusId,caret:x.caret}));return}if(A==="ArrowUp"&&N===P&&K.lastIndexOf(`
|
|
15
|
-
|
|
16
|
-
`)+1;y(x,Math.min(g+N,s.length))}return}if(A==="ArrowDown"&&N===P&&K.indexOf(`
|
|
17
|
-
`,N)===-1){let x=d(b).next;if(x!==void 0){l();let s=N-(K.lastIndexOf(`
|
|
18
|
-
|
|
19
|
-
`);
|
|
20
|
-
`).replace(/\n+$/,"");if(
|
|
21
|
-
`))return;let
|
|
22
|
-
`)
|
|
23
|
-
`)){if(t(r,n)<=Te){o.push(r);continue}let i="";for(let a of r.match(/[\u2e80-\u9fff\uac00-\ud7af\uff00-\uffef]|[^\s\u2e80-\u9fff\uac00-\ud7af\uff00-\uffef]+|\s+/g)??[])if(t(i+a,n)<=Te||i.length===0)if(t(a,n)>Te&&i.length===0)for(let f of a)t(i+f,n)>Te&&i.length>0&&(o.push(i),i=""),i+=f;else i+=a;else o.push(i.trimEnd()),i=a.trimStart();o.push(i)}return o.length===0?[""]:o}function Pe(e,t,n,o){let r=[],i=new Map,a=0,f=(c,D,M,w,E)=>{let k=e.nodes[c],L=D===0,X=L?n:k.text,z=tn(X.length>0?X:" ",o,L),Y=Math.max(...z.map(R=>o(R,L)),24),F=Math.ceil(Y)+Oe*2,B=z.length*ve+Re*2,S=L||k.collapsed!==!0?k.children:[],h={id:c,depth:D,x:M,y:0,w:F,h:B,lines:z,parent:E,hasKids:k.children.length>0,collapsed:!L&&k.collapsed===!0&&k.children.length>0,hidden:0,done:k.checked===!0};if(h.collapsed){let R=0,N=P=>{for(let K of e.nodes[P]?.children??[])R++,N(K)};N(c),h.hidden=R}r.push(h),i.set(c,h),a=Math.max(a,M+F);let d=M+F+en,y=w,v=[];for(let R of S){let N=f(R,D+1,d,y,c);v.push(i.get(R).y+i.get(R).h/2),y+=N+Mt}let b=S.length>0?y-Mt-w:0,T=Math.max(B,b),I=v.length>0?(v[0]+v[v.length-1])/2:w+T/2;if(h.y=I-B/2,h.y<w){let R=w-h.y;h.y=w;let N=P=>{let K=i.get(P);K.y+=R;for(let _ of K.collapsed?[]:e.nodes[P].children)i.has(_)&&N(_)};for(let P of S)N(P)}return Math.max(T,h.y+B-w)},u=f(t,0,0,0,null);return{nodes:r,byId:i,width:a,height:u}}function Ve(e,t){let n=e.x+e.w,o=e.y+e.h/2,r=t.x,i=t.y+t.h/2,a=(n+r)/2;return"M"+n+","+o+" C"+a+","+o+" "+a+","+i+" "+r+","+i}var ce=e=>e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""");function Dt(e,t){let o=Math.ceil(e.width+64+40),r=Math.ceil(e.height+64),i=[];i.push('<svg xmlns="http://www.w3.org/2000/svg" width="'+o+'" height="'+r+'" viewBox="0 0 '+o+" "+r+'" font-family="'+ce(t.font)+'" font-size="14">'),i.push('<rect width="100%" height="100%" fill="'+ce(t.bg)+'"/>'),i.push('<g transform="translate(32,32)">');for(let a of e.nodes)a.parent!==null&&i.push('<path d="'+Ve(e.byId.get(a.parent),a)+'" fill="none" stroke="'+ce(t.border)+'" stroke-width="1.5"/>');for(let a of e.nodes){let f=a.depth===0,u=f?t.accent:a.depth===1?t.panel:t.card,c=f?t.accent:t.border,D=f?"#ffffff":a.done?t.sub:t.text;if(i.push('<rect x="'+a.x+'" y="'+a.y+'" width="'+a.w+'" height="'+a.h+'" rx="6" fill="'+ce(u)+'" stroke="'+ce(c)+'"/>'),a.lines.forEach((M,w)=>{i.push('<text x="'+(a.x+Oe)+'" y="'+(a.y+Re+ve*w+ve/2)+'" dominant-baseline="central" fill="'+ce(D)+'"'+(f?' font-weight="600"':"")+(a.done?' text-decoration="line-through"':"")+' xml:space="preserve">'+ce(M)+"</text>")}),a.collapsed){let M=a.x+a.w+10,w=a.y+a.h/2;i.push('<circle cx="'+M+'" cy="'+w+'" r="8" fill="'+ce(t.card)+'" stroke="'+ce(t.border)+'"/>'),i.push('<text x="'+M+'" y="'+w+'" font-size="10" text-anchor="middle" dominant-baseline="central" fill="'+ce(t.sub)+'">'+(a.hidden>99?"99+":a.hidden)+"</text>")}}return i.push("</g></svg>"),{svg:i.join(""),width:o,height:r}}async function Et(e,t,n,o=2){let r=URL.createObjectURL(new Blob([e],{type:"image/svg+xml;charset=utf-8"}));try{let i=new Image;await new Promise((D,M)=>{i.onload=()=>D(),i.onerror=()=>M(new Error("\u56FE\u7247\u6E32\u67D3\u5931\u8D25")),i.src=r});let a=16e3,f=Math.min(o,a/t,a/n),u=document.createElement("canvas");u.width=Math.max(1,Math.floor(t*f)),u.height=Math.max(1,Math.floor(n*f));let c=u.getContext("2d");if(c===null)throw new Error("\u65E0\u6CD5\u521B\u5EFA\u753B\u5E03");return c.scale(f,f),c.drawImage(i,0,0,t,n),await new Promise((D,M)=>u.toBlob(w=>w!==null?D(w):M(new Error("PNG \u7F16\u7801\u5931\u8D25")),"image/png"))}finally{URL.revokeObjectURL(r)}}function It(e){let t=getComputedStyle(e),n=(o,r)=>t.getPropertyValue(o).trim()||r;return{bg:n("--mm-bg","#ffffff"),text:n("--mm-text","#1f2329"),sub:n("--mm-sub","#8a8f99"),border:n("--mm-border-strong","#c9ccd1"),accent:n("--mm-accent","#3964fe"),panel:n("--mm-panel","#f7f7f8"),card:n("--mm-elev","#ffffff"),font:t.fontFamily||"sans-serif"}}var U=require("react/jsx-runtime"),nn=.2,on=3,Nt=e=>Math.min(on,Math.max(nn,e));function St(e){let{doc:t,rootId:n,state:o}=e,r=(0,j.useRef)(null),[i,a]=(0,j.useState)({x:40,y:40,k:1}),[f,u]=(0,j.useState)(null),[c,D]=(0,j.useState)(!1),M=(0,j.useRef)(null),w=(0,j.useRef)(null),E=(0,j.useRef)(i);E.current=i;let[k,L]=(0,j.useState)("");(0,j.useLayoutEffect)(()=>{r.current!==null&&L(getComputedStyle(r.current).fontFamily||"sans-serif")},[]);let X=(0,j.useMemo)(()=>Ae(k||"sans-serif"),[k]),z=(0,j.useMemo)(()=>Pe(t,n,e.rootLabel,X),[t,n,e.rootLabel,X]),Y=e.selected!==null&&z.byId.has(e.selected)?e.selected:null,F=()=>{let l=r.current?.getBoundingClientRect();return{w:l?.width??800,h:l?.height??600}},B=(0,j.useCallback)(()=>{let{w:l,h:x}=F(),s=Nt(Math.min((l-80)/Math.max(z.width+40,1),(x-80)/Math.max(z.height,1),1));a({k:s,x:(l-(z.width+20)*s)/2,y:(x-z.height*s)/2})},[z]),S=(0,j.useCallback)((l,x=E.current.k)=>{let s=z.byId.get(l);if(s===void 0)return;let{w:g,h:p}=F();a({k:x,x:g/2-(s.x+s.w/2)*x,y:p/2-(s.y+s.h/2)*x})},[z]),h=(0,j.useCallback)((l,x,s)=>{let g=E.current,{w:p,h:C}=F(),H=x??p/2,G=s??C/2,W=Nt(g.k*l);a({k:W,x:H-(H-g.x)/g.k*W,y:G-(G-g.y)/g.k*W})},[]);(0,j.useLayoutEffect)(()=>{if(k==="")return;let l=t.id+":"+n;w.current!==l&&(w.current=l,B())},[t.id,n,B,k]),(0,j.useEffect)(()=>{if(Y===null)return;let l=z.byId.get(Y),x=E.current,{w:s,h:g}=F(),p=x.x+l.x*x.k,C=x.y+l.y*x.k,H=24,G=0,W=0;p<H?G=H-p:p+l.w*x.k>s-H&&(G=s-H-(p+l.w*x.k)),C<H?W=H-C:C+l.h*x.k>g-H&&(W=g-H-(C+l.h*x.k)),(G!==0||W!==0)&&a({...x,x:x.x+G,y:x.y+W})},[Y,z]),(0,j.useEffect)(()=>{let l=r.current;if(l===null)return;let x=s=>{s.preventDefault();let g=l.getBoundingClientRect();s.ctrlKey||s.metaKey?h(Math.exp(-s.deltaY*.0025),s.clientX-g.left,s.clientY-g.top):a(p=>({...p,x:p.x-(s.shiftKey?s.deltaY:s.deltaX),y:p.y-(s.shiftKey?0:s.deltaY)}))};return l.addEventListener("wheel",x,{passive:!1}),()=>l.removeEventListener("wheel",x)},[h]);let d=(0,j.useCallback)(l=>{u(null),l!==null&&(l.id===n&&n===t.rootId?l.text.trim()!==t.title&&o.apply({...t,title:l.text.replace(/\n/g," ").trim()||t.title}):t.nodes[l.id]!==void 0&&t.nodes[l.id].text!==l.text&&o.apply(de(t,l.id,l.text)),r.current?.focus({preventScroll:!0}))},[t,n,o]),y=(l,x)=>{let s=l===t.rootId?t.title:t.nodes[l]?.text??"";e.onSelect(l),u({id:l,text:x??s})},v=l=>{let x=t.nodes[l],s=ae(t,l,!1),g=se(s,l,x.children.length);o.apply(g.doc),e.onSelect(g.focusId),u({id:g.focusId,text:""})},b=l=>{if(l===n){v(l);return}let x=Me(t,l);o.apply(x.doc),e.onSelect(x.focusId),u({id:x.focusId,text:""})},T=l=>{if(l===n)return;let s=z.byId.get(l)?.parent??null,g=s!==null?t.nodes[s].children:[],p=g.indexOf(l),C=g[p+1]??g[p-1]??s;o.apply(fe(t,l)),e.onSelect(C)},I=l=>{let x=t.nodes[l];x===void 0||x.children.length===0||l===n||o.apply(ae(t,l,x.collapsed!==!0),{noHistory:!0})},R=l=>{if(f!==null||l.target!==l.currentTarget||l.nativeEvent.isComposing||l.keyCode===229)return;let x=l.ctrlKey||l.metaKey,s=l.key;if(x&&(s==="z"||s==="Z")){l.preventDefault(),l.shiftKey?o.redo():o.undo();return}if(x&&(s==="y"||s==="Y")){l.preventDefault(),o.redo();return}if(x&&(s==="="||s==="+")){l.preventDefault(),h(1.2);return}if(x&&s==="-"){l.preventDefault(),h(1/1.2);return}if(x&&s==="0"){l.preventDefault(),B();return}let g=Y??n,p=z.byId.get(g);if(p!==void 0){if(s==="Tab"){l.preventDefault(),v(g);return}if(s==="Enter"){l.preventDefault(),b(g);return}if(s==="F2"){l.preventDefault(),y(g);return}if(s==="Delete"||s==="Backspace"){l.preventDefault(),T(g);return}if(s===" "){l.preventDefault(),I(g);return}if(s==="Escape"){e.onSelect(null);return}if(s==="ArrowLeft"){l.preventDefault(),p.parent!==null&&e.onSelect(p.parent);return}if(s==="ArrowRight"){if(l.preventDefault(),p.collapsed){I(g);return}let C=t.nodes[g]?.children.find(H=>z.byId.has(H));C!==void 0&&e.onSelect(C);return}if(s==="ArrowUp"||s==="ArrowDown"){l.preventDefault();let C=s==="ArrowUp"?-1:1,H=p.y+p.h/2,G=null,W=1/0;for(let Q of z.nodes){if(Q.id===g)continue;let Ge=Q.y+Q.h/2;if((Ge-H)*C<=0)continue;let Je=Math.abs(Ge-H)+Math.abs(Q.x-p.x)*2+(Q.depth===p.depth?0:400);Je<W&&(W=Je,G=Q.id)}G!==null&&e.onSelect(G);return}!x&&!l.altKey&&s.length===1&&g!==n&&(l.preventDefault(),y(g,s))}},N=(l,x,s)=>{e.onSelect(l);let g=t.nodes[l],p=l===n;e.onMenu({x,y:s,items:[{label:"\u7F16\u8F91",shortcut:"F2",onSelect:()=>y(l)},{label:"\u6DFB\u52A0\u5B50\u8282\u70B9",shortcut:"Tab",onSelect:()=>v(l)},{label:"\u6DFB\u52A0\u540C\u7EA7\u8282\u70B9",shortcut:"Enter",disabled:p,onSelect:()=>b(l)},{label:g.collapsed===!0?"\u5C55\u5F00":"\u6298\u53E0",shortcut:"\u7A7A\u683C",disabled:p||g.children.length===0,onSelect:()=>I(l)},{label:"\u5728\u5927\u7EB2\u4E2D\u7F16\u8F91",disabled:p&&n===t.rootId,onSelect:()=>e.onEditInOutline(l)},{label:"\u4EE5\u6B64\u4E3A\u4E2D\u5FC3",onSelect:()=>S(l)},{kind:"sep"},{label:g.children.length>0?"\u5220\u9664\u8282\u70B9\u53CA\u5176\u5B50\u8282\u70B9":"\u5220\u9664\u8282\u70B9",shortcut:"Delete",danger:!0,disabled:p,onSelect:()=>T(l)}]})},P=l=>{l.button!==0||l.target.closest("[data-map-node],.mm-map-ctrl,.mm-map-edit")!==null||(M.current={px:l.clientX,py:l.clientY,vx:i.x,vy:i.y,moved:!1},l.currentTarget.setPointerCapture(l.pointerId),D(!0))},K=l=>{let x=M.current;if(x===null)return;let s=l.clientX-x.px,g=l.clientY-x.py;Math.abs(s)+Math.abs(g)>3&&(x.moved=!0),a(p=>({...p,x:x.vx+s,y:x.vy+g}))},_=()=>{let l=M.current;M.current=null,D(!1),l!==null&&!l.moved&&e.onSelect(null)},A=f!==null?z.byId.get(f.id):void 0;return(0,U.jsxs)("div",{ref:r,className:"mm-map"+(c?" mm-panning":""),tabIndex:0,role:"application","aria-label":"\u601D\u7EF4\u5BFC\u56FE",onKeyDown:R,onPointerDown:P,onPointerMove:K,onPointerUp:_,onPointerCancel:_,onContextMenu:l=>{l.target.closest("[data-map-node]")===null&&l.preventDefault()},children:[(0,U.jsx)("svg",{children:(0,U.jsxs)("g",{transform:"translate("+i.x+","+i.y+") scale("+i.k+")",children:[z.nodes.map(l=>l.parent===null?null:(0,U.jsx)("path",{className:"mm-map-edge",d:Ve(z.byId.get(l.parent),l)},"e"+l.id)),z.nodes.map(l=>{let x="mm-map-node"+(l.depth===0?" mm-root":l.depth===1?" mm-depth1":"")+(l.done?" mm-done":"")+(Y===l.id?" mm-sel":"");return(0,U.jsxs)("g",{className:x,"data-map-node":l.id,onMouseDown:s=>{s.button===0&&(s.stopPropagation(),e.onSelect(l.id),r.current?.focus({preventScroll:!0}))},onDoubleClick:s=>{s.stopPropagation(),y(l.id)},onContextMenu:s=>{s.preventDefault(),s.stopPropagation(),N(l.id,s.clientX,s.clientY)},children:[(0,U.jsx)("rect",{x:l.x,y:l.y,width:l.w,height:l.h,rx:6}),f?.id===l.id?null:l.lines.map((s,g)=>(0,U.jsx)("text",{x:l.x+Oe,y:l.y+Re+ve*g+ve/2,xmlSpace:"preserve",children:s},g))]},l.id)}),z.nodes.map(l=>l.depth===0||!l.hasKids?null:(0,U.jsxs)("g",{className:"mm-map-toggle","data-map-node":l.id,role:"button","aria-label":l.collapsed?"\u5C55\u5F00":"\u6298\u53E0",onMouseDown:x=>x.stopPropagation(),onClick:x=>{x.stopPropagation(),I(l.id)},children:[(0,U.jsx)("circle",{cx:l.x+l.w+10,cy:l.y+l.h/2,r:8}),(0,U.jsx)("text",{x:l.x+l.w+10,y:l.y+l.h/2,children:l.collapsed?l.hidden>99?"99+":String(l.hidden):"\u2212"})]},"t"+l.id))]})}),f!==null&&A!==void 0?(0,U.jsx)(rn,{value:f.text,left:i.x+A.x*i.k,top:i.y+A.y*i.k,width:Math.max(A.w,160),scale:i.k,onChange:l=>u({id:f.id,text:l}),onCommit:()=>d(f),onCancel:()=>{u(null),r.current?.focus({preventScroll:!0})},onTab:()=>{let l=f.id,x=t;l===t.rootId?x={...t,title:f.text.replace(/\n/g," ").trim()||t.title}:t.nodes[l]!==void 0&&(x=de(t,l,f.text));let s=se(ae(x,l,!1),l,x.nodes[l].children.length);o.apply(s.doc),e.onSelect(s.focusId),u({id:s.focusId,text:""})}},f.id):null,(0,U.jsx)("div",{className:"mm-map-hint mm-hide-narrow",children:"\u53CC\u51FB\u7F16\u8F91 \xB7 Tab \u5B50\u8282\u70B9 \xB7 Enter \u540C\u7EA7 \xB7 \u7A7A\u683C\u6298\u53E0 \xB7 \u62D6\u52A8\u753B\u5E03\u5E73\u79FB \xB7 Ctrl+\u6EDA\u8F6E\u7F29\u653E"}),(0,U.jsxs)("div",{className:"mm-map-ctrl",onPointerDown:l=>l.stopPropagation(),children:[(0,U.jsx)("button",{type:"button",className:"mm-icon-btn",title:"\u7F29\u5C0F","aria-label":"\u7F29\u5C0F",onClick:()=>h(1/1.2),children:(0,U.jsx)(V,{name:"minus"})}),(0,U.jsxs)("span",{"aria-live":"polite",children:[Math.round(i.k*100),"%"]}),(0,U.jsx)("button",{type:"button",className:"mm-icon-btn",title:"\u653E\u5927","aria-label":"\u653E\u5927",onClick:()=>h(1.2),children:(0,U.jsx)(V,{name:"plus"})}),(0,U.jsx)("button",{type:"button",className:"mm-btn",style:{height:26,padding:"0 8px",border:0},title:"\u5B9E\u9645\u5927\u5C0F",onClick:()=>S(Y??n,1),children:"100%"}),(0,U.jsx)("button",{type:"button",className:"mm-icon-btn",title:"\u9002\u5E94\u7A97\u53E3","aria-label":"\u9002\u5E94\u7A97\u53E3",onClick:B,children:(0,U.jsx)(V,{name:"fit"})}),(0,U.jsx)("button",{type:"button",className:"mm-icon-btn",title:"\u5C45\u4E2D","aria-label":"\u5C45\u4E2D",onClick:()=>S(Y??n),children:(0,U.jsx)(V,{name:"center"})})]})]})}function rn(e){let t=(0,j.useRef)(null),n=(0,j.useRef)(!1);(0,j.useLayoutEffect)(()=>{let r=t.current;if(r===null)return;r.focus({preventScroll:!0});let i=r.value.length;i>1?r.select():r.setSelectionRange(i,i)},[]),(0,j.useLayoutEffect)(()=>{let r=t.current;r!==null&&(r.style.height="0px",r.style.height=r.scrollHeight+"px")});let o=r=>{n.current||(n.current=!0,r())};return(0,U.jsx)("textarea",{ref:t,className:"mm-map-edit",rows:1,value:e.value,spellCheck:!1,"aria-label":"\u7F16\u8F91\u8282\u70B9",style:{left:e.left,top:e.top,width:e.width,transform:"scale("+e.scale+")"},onPointerDown:r=>r.stopPropagation(),onMouseDown:r=>r.stopPropagation(),onDoubleClick:r=>r.stopPropagation(),onChange:r=>e.onChange(r.target.value),onBlur:()=>o(e.onCommit),onKeyDown:r=>{r.stopPropagation(),!(r.nativeEvent.isComposing||r.keyCode===229)&&(r.key==="Enter"&&!r.shiftKey?(r.preventDefault(),o(e.onCommit)):r.key==="Escape"?(r.preventDefault(),o(e.onCancel)):r.key==="Tab"&&(r.preventDefault(),o(e.onTab)))}})}var m=require("react/jsx-runtime"),Ct="dsh-mindmap:last-doc",Tt="dsh-mindmap:view",Ot="dsh-mindmap:open-folders";function Ze(e){try{return window.localStorage.getItem(e)}catch{return null}}function We(e,t){try{t===null?window.localStorage.removeItem(e):window.localStorage.setItem(e,t)}catch{}}var ie=e=>e instanceof Error?e.message:String(e);function Rt(){return(0,m.jsx)(yt,{children:(0,m.jsx)(ln,{})})}function ln(){let e=be(),t=(0,O.useRef)(null),[n,o]=(0,O.useState)(null),[r,i]=(0,O.useState)(null),[a,f]=(0,O.useState)(()=>Ze(Ct)),[u,c]=(0,O.useState)(()=>Ze(Tt)==="map"?"map":"outline"),[D,M]=(0,O.useState)(null),[w,E]=(0,O.useState)(null),[k,L]=(0,O.useState)(null),[X,z]=(0,O.useState)(!1),Y=(0,O.useRef)(null),F=(0,O.useCallback)(async()=>{try{let s=await te.library();return o(s.library),i(null),s.warnings.length>0&&e.toast(s.warnings.join("\uFF1B")),s.library}catch(s){return i(ie(s)),null}},[e]);(0,O.useEffect)(()=>{F()},[F]),(0,O.useEffect)(()=>{if(n===null)return;let s=a===null?void 0:n.docs.find(g=>g.id===a);if(s===void 0||s.trashedAt!==void 0){let g=n.docs.filter(p=>p.trashedAt===void 0).sort((p,C)=>C.updatedAt-p.updatedAt)[0];f(g?.id??null)}},[n,a]),(0,O.useEffect)(()=>{We(Ct,a)},[a]);let B=(0,O.useCallback)(s=>{o(g=>g===null?g:{...g,docs:g.docs.map(p=>p.id===s.id?{...p,title:s.title,updatedAt:s.updatedAt}:p)})},[]),S=ht(a,B),h=S.doc;(0,O.useEffect)(()=>{M(null),E(null)},[a]);let d=h!==null&&D!==null&&h.nodes[D]!==void 0?D:h?.rootId??null,y=s=>{c(s),We(Tt,s)},v=(0,O.useCallback)((s,g)=>{let p=s;for(let C of he(s,g))p=ae(p,C,!1);p!==s&&S.apply(p,{noHistory:!0}),d!==null&&!ke(s,d,g)&&M(null),window.setTimeout(()=>S.requestFocus(g,"end"),0)},[S,d]);(0,O.useEffect)(()=>{if(h===null||Y.current===null)return;let s=Y.current;Y.current=null,h.nodes[s]!==void 0&&(y("outline"),v(h,s))},[h?.id]);let b=(0,O.useCallback)((s,g=null)=>{if(z(!1),s===a){g!==null&&h!==null&&h.nodes[g]!==void 0&&(y("outline"),v(h,g));return}Y.current=g,f(s)},[a,h,v]),T=(0,O.useCallback)(async(s={})=>{try{let g=await te.createDoc(s);return o(p=>p===null?p:{...p,docs:[...p.docs,g.meta]}),f(g.doc.id),y("outline"),z(!1),g.doc}catch(g){return e.toast("\u65B0\u5EFA\u5931\u8D25\uFF1A"+ie(g)),null}},[e]),I=(0,O.useCallback)(async(s,g)=>{if(g.title!==void 0&&h!==null&&h.id===s){let p=g.title.trim();p.length>0&&p!==h.title&&S.apply({...h,title:p});let C={...g};if(delete C.title,Object.keys(C).length===0)return;g=C}try{let p=await te.patchMeta(s,g);o(C=>C===null?C:{...C,docs:C.docs.map(H=>H.id===s?p.meta:H)})}catch(p){e.toast("\u64CD\u4F5C\u5931\u8D25\uFF1A"+ie(p))}},[h,S,e]),R=(0,O.useCallback)(async s=>{try{s===a&&await S.flush();let g=await te.trash(s);o(p=>p===null?p:{...p,docs:p.docs.map(C=>C.id===s?g:C)}),e.toast("\u5DF2\u79FB\u5230\u56DE\u6536\u7AD9")}catch(g){e.toast("\u5220\u9664\u5931\u8D25\uFF1A"+ie(g))}},[a,S,e]),N=(0,O.useCallback)(async s=>{if(h===null||d===null)return;let g=d,p=g===h.rootId?h.title:h.nodes[g].text.split(`
|
|
24
|
-
|
|
25
|
-
`)[0]||"\uFF08\u7A7A\uFF09"})]},E))}):null,(0,m.jsx)("textarea",{ref:r,className:i?"mm-title mm-zoom-title":"mm-title",rows:1,value:i?a:f,placeholder:i?"\uFF08\u7A7A\u8282\u70B9\uFF09":"\u6587\u6863\u6807\u9898","aria-label":i?"\u8282\u70B9\u5185\u5BB9":"\u6587\u6863\u6807\u9898",spellCheck:!1,onFocus:()=>{c.current=!0},onBlur:()=>{c.current=!1,o.breakMerge(),!i&&f.trim().length===0&&u(t.title)},onChange:E=>{let k=i?E.target.value:E.target.value.replace(/\n/g," ");i?D(k):(u(k),k.trim().length>0&&D(k))},onKeyDown:E=>{if(!(E.nativeEvent.isComposing||E.keyCode===229)){if(E.key==="Enter"&&!E.shiftKey)E.preventDefault(),M();else if(E.key==="ArrowDown"){let k=E.currentTarget;k.selectionStart===k.value.length&&(E.preventDefault(),M())}}}})]})}function an(e){let t=be(),[n,o]=(0,O.useState)(""),[r,i]=(0,O.useState)(null),[a,f]=(0,O.useState)(null),[u,c]=(0,O.useState)(()=>new Set((Ze(Ot)??"").split(",").filter(Boolean))),[D,M]=(0,O.useState)(!1),w=e.library;(0,O.useEffect)(()=>{We(Ot,Array.from(u).join(","))},[u]),(0,O.useEffect)(()=>{let d=n.trim();if(d.length===0){i(null);return}let y=!0,v=window.setTimeout(()=>{te.search(d).then(b=>{y&&i(b)},()=>{y&&i([])})},220);return()=>{y=!1,window.clearTimeout(v)}},[n,w]);let E=(0,O.useMemo)(()=>(w?.docs??[]).filter(d=>d.trashedAt===void 0).sort((d,y)=>y.updatedAt-d.updatedAt),[w]),k=(0,O.useMemo)(()=>(w?.docs??[]).filter(d=>d.trashedAt!==void 0).sort((d,y)=>(y.trashedAt??0)-(d.trashedAt??0)),[w]),L=(0,O.useMemo)(()=>[...w?.folders??[]].sort((d,y)=>d.name.localeCompare(y.name,"zh-CN")),[w]),X=d=>c(y=>{let v=new Set(y);return v.has(d)?v.delete(d):v.add(d),v}),z=async()=>{let d=await t.prompt({title:"\u65B0\u5EFA\u6587\u4EF6\u5939",placeholder:"\u6587\u4EF6\u5939\u540D\u79F0",ok:"\u521B\u5EFA"});if(!(d===null||d.trim().length===0))try{let y=await te.createFolder(d.trim());w!==null&&e.onChanged({...w,folders:[...w.folders,y]}),c(v=>new Set(v).add(y.id))}catch(y){t.toast("\u521B\u5EFA\u5931\u8D25\uFF1A"+ie(y))}},Y=(d,y,v)=>{let b=[{label:"\u6253\u5F00",onSelect:()=>e.onOpen(d.id)},{label:"\u91CD\u547D\u540D",onSelect:()=>f(d.id)},{label:d.favorite?"\u53D6\u6D88\u6536\u85CF":"\u6536\u85CF",onSelect:()=>{e.onPatch(d.id,{favorite:!d.favorite})}},{kind:"sep"},{kind:"label",label:"\u79FB\u52A8\u5230"},{label:(d.folderId===null?"\u2713 ":"")+"\u672A\u5206\u7C7B",disabled:d.folderId===null,onSelect:()=>{e.onPatch(d.id,{folderId:null})}},...L.map(T=>({label:(d.folderId===T.id?"\u2713 ":"")+T.name,disabled:d.folderId===T.id,onSelect:()=>{e.onPatch(d.id,{folderId:T.id})}})),{kind:"sep"},{label:"\u5220\u9664",danger:!0,onSelect:()=>{e.onTrash(d.id)}}];e.onMenu({x:y,y:v,items:b})},F=(d,y,v,b)=>{e.onMenu({x:v,y:b,items:[{label:"\u5728\u6B64\u65B0\u5EFA\u6587\u6863",onSelect:()=>e.onCreate(d)},{label:"\u91CD\u547D\u540D",onSelect:async()=>{let T=await t.prompt({title:"\u91CD\u547D\u540D\u6587\u4EF6\u5939",value:y,ok:"\u4FDD\u5B58"});if(!(T===null||T.trim().length===0||T.trim()===y))try{let I=await te.renameFolder(d,T.trim());w!==null&&e.onChanged({...w,folders:w.folders.map(R=>R.id===d?I:R)})}catch(I){t.toast("\u91CD\u547D\u540D\u5931\u8D25\uFF1A"+ie(I))}}},{label:"\u5220\u9664\u6587\u4EF6\u5939",danger:!0,onSelect:async()=>{if(await t.confirm({title:"\u5220\u9664\u6587\u4EF6\u5939\u300C"+y+"\u300D\uFF1F",message:"\u6587\u4EF6\u5939\u91CC\u7684\u6587\u6863\u4E0D\u4F1A\u88AB\u5220\u9664\uFF0C\u4F1A\u79FB\u5230\u300C\u672A\u5206\u7C7B\u300D\u3002",ok:"\u5220\u9664",danger:!0}))try{await te.deleteFolder(d),await e.onRefresh()}catch(I){t.toast("\u5220\u9664\u5931\u8D25\uFF1A"+ie(I))}}}]})},B=(d,y,v)=>(0,m.jsx)("div",{className:"mm-row"+(y?" mm-indent":"")+(d.id===e.activeId?" mm-active":""),role:"button",tabIndex:0,"aria-current":d.id===e.activeId?"page":void 0,onClick:()=>{a!==d.id&&e.onOpen(d.id)},onKeyDown:b=>{b.key==="Enter"&&a!==d.id?e.onOpen(d.id):b.key==="F2"&&f(d.id)},onDoubleClick:()=>f(d.id),onContextMenu:b=>{b.preventDefault(),Y(d,b.clientX,b.clientY)},children:a===d.id?(0,m.jsx)(cn,{value:d.title,onDone:b=>{f(null),b!==null&&b.trim().length>0&&b.trim()!==d.title&&e.onPatch(d.id,{title:b.trim()})}}):(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)("span",{className:"mm-row-title",title:d.title,children:d.title}),(0,m.jsx)("span",{className:"mm-row-time",title:new Date(d.updatedAt).toLocaleString(),children:wt(d.updatedAt)})]})},v+d.id),S=E.filter(d=>d.favorite),h=E.filter(d=>d.folderId===null);return(0,m.jsxs)("aside",{className:"mm-side","aria-label":"\u6587\u6863",children:[(0,m.jsxs)("div",{className:"mm-side-head",children:[(0,m.jsx)("span",{className:"mm-side-title",children:"\u601D\u7EF4\u5BFC\u56FE"}),(0,m.jsx)("button",{type:"button",className:"mm-icon-btn",title:"\u65B0\u5EFA\u6587\u4EF6\u5939","aria-label":"\u65B0\u5EFA\u6587\u4EF6\u5939",onClick:()=>{z()},children:(0,m.jsx)(V,{name:"folderPlus"})}),(0,m.jsx)("button",{type:"button",className:"mm-icon-btn",title:"\u65B0\u5EFA\u6587\u6863","aria-label":"\u65B0\u5EFA\u6587\u6863",onClick:()=>e.onCreate(null),children:(0,m.jsx)(V,{name:"plus"})})]}),(0,m.jsxs)("label",{className:"mm-search",children:[(0,m.jsx)(V,{name:"search",size:14}),(0,m.jsx)("input",{type:"search",placeholder:"\u641C\u7D22\u6587\u6863\u548C\u5185\u5BB9","aria-label":"\u641C\u7D22\u6587\u6863\u548C\u5185\u5BB9",value:n,onChange:d=>o(d.target.value),onKeyDown:d=>{d.key==="Escape"&&o("")}})]}),(0,m.jsxs)("div",{className:"mm-side-scroll",children:[e.error!==null?(0,m.jsxs)("div",{className:"mm-empty",children:["\u65E0\u6CD5\u8BFB\u53D6\u6587\u6863\u5217\u8868\uFF1A",e.error," ",(0,m.jsx)("button",{type:"button",className:"mm-btn",onClick:()=>{e.onRefresh()},children:"\u91CD\u8BD5"})]}):null,r!==null?(0,m.jsxs)("div",{className:"mm-section",children:[(0,m.jsxs)("div",{className:"mm-section-head",children:["\u641C\u7D22\u7ED3\u679C \xB7 ",r.length]}),r.length===0?(0,m.jsx)("div",{className:"mm-empty",children:"\u6CA1\u6709\u5339\u914D\u7684\u5185\u5BB9"}):r.map((d,y)=>(0,m.jsxs)("div",{className:"mm-hit",role:"button",tabIndex:0,onClick:()=>e.onOpen(d.docId,d.nodeId),onKeyDown:v=>{v.key==="Enter"&&e.onOpen(d.docId,d.nodeId)},children:[(0,m.jsx)("div",{className:"mm-hit-title",children:d.title}),d.nodeId!==null?(0,m.jsx)("div",{className:"mm-hit-snip",children:ge(d.snippet)}):null]},y))]}):w===null&&e.error===null?(0,m.jsx)("div",{className:"mm-empty",children:"\u52A0\u8F7D\u4E2D\u2026"}):(0,m.jsxs)(m.Fragment,{children:[S.length>0?(0,m.jsxs)("div",{className:"mm-section",children:[(0,m.jsx)("div",{className:"mm-section-head",children:"\u6536\u85CF"}),S.map(d=>B(d,!1,"fav-"))]}):null,L.length>0?(0,m.jsxs)("div",{className:"mm-section",children:[(0,m.jsx)("div",{className:"mm-section-head",children:"\u6587\u4EF6\u5939"}),L.map(d=>{let y=E.filter(b=>b.folderId===d.id),v=u.has(d.id);return(0,m.jsxs)("div",{children:[(0,m.jsxs)("div",{className:"mm-row",role:"button",tabIndex:0,"aria-expanded":v,onClick:()=>X(d.id),onKeyDown:b=>{b.key==="Enter"&&X(d.id)},onContextMenu:b=>{b.preventDefault(),F(d.id,d.name,b.clientX,b.clientY)},children:[(0,m.jsx)("span",{style:{display:"inline-flex",transform:v?"none":"rotate(-90deg)",color:"var(--mm-sub)"},children:(0,m.jsx)(V,{name:"chevron",size:12})}),(0,m.jsx)(V,{name:"folder",size:14}),(0,m.jsx)("span",{className:"mm-row-title",children:d.name}),(0,m.jsx)("span",{className:"mm-row-time",children:y.length})]}),v?y.length===0?(0,m.jsx)("div",{className:"mm-empty mm-indent",children:"\u7A7A\u6587\u4EF6\u5939"}):y.map(b=>B(b,!0,"f-")):null]},d.id)})]}):null,(0,m.jsxs)("div",{className:"mm-section",children:[(0,m.jsxs)("div",{className:"mm-section-head",children:[(0,m.jsx)("span",{className:"mm-grow",children:L.length>0?"\u672A\u5206\u7C7B":"\u6587\u6863"}),(0,m.jsx)("span",{children:"\u6700\u8FD1\u7F16\u8F91"})]}),h.length===0?(0,m.jsx)("div",{className:"mm-empty",children:E.length===0?"\u70B9\u51FB\u53F3\u4E0A\u89D2 + \u65B0\u5EFA\u6587\u6863":"\u6CA1\u6709\u672A\u5206\u7C7B\u7684\u6587\u6863"}):h.map(d=>B(d,!1,"d-"))]}),k.length>0?(0,m.jsxs)("div",{className:"mm-section",children:[(0,m.jsxs)("div",{className:"mm-row",role:"button",tabIndex:0,"aria-expanded":D,onClick:()=>M(d=>!d),onKeyDown:d=>{d.key==="Enter"&&M(y=>!y)},children:[(0,m.jsx)(V,{name:"trash",size:14}),(0,m.jsx)("span",{className:"mm-row-title",style:{color:"var(--mm-sub)"},children:"\u56DE\u6536\u7AD9"}),(0,m.jsx)("span",{className:"mm-row-time",children:k.length})]}),D?k.map(d=>(0,m.jsxs)("div",{className:"mm-row mm-indent",onContextMenu:y=>y.preventDefault(),children:[(0,m.jsx)("span",{className:"mm-row-title",style:{color:"var(--mm-sub)"},title:d.title,children:d.title}),(0,m.jsx)("button",{type:"button",className:"mm-btn",style:{height:22,padding:"0 6px",fontSize:12},onClick:async()=>{try{let y=await te.restore(d.id);w!==null&&e.onChanged({...w,docs:w.docs.map(v=>v.id===d.id?y:v)})}catch(y){t.toast("\u6062\u590D\u5931\u8D25\uFF1A"+ie(y))}},children:"\u6062\u590D"}),(0,m.jsx)("button",{type:"button",className:"mm-btn mm-danger",style:{height:22,padding:"0 6px",fontSize:12},onClick:async()=>{if(await t.confirm({title:"\u6C38\u4E45\u5220\u9664\u300C"+d.title+"\u300D\uFF1F",message:"\u6B64\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500\uFF08\u6BCF\u65E5\u5907\u4EFD\u4E2D\u4ECD\u53EF\u80FD\u4FDD\u7559\u65E7\u7248\u672C\uFF09\u3002",ok:"\u6C38\u4E45\u5220\u9664",danger:!0}))try{await te.purge(d.id),await e.onRefresh()}catch(v){t.toast("\u5220\u9664\u5931\u8D25\uFF1A"+ie(v))}},children:"\u5220\u9664"})]},"t-"+d.id)):null]}):null]})]}),(0,m.jsxs)("div",{className:"mm-side-head",style:{borderTop:"1px solid var(--mm-border)",padding:"8px 12px"},children:[(0,m.jsxs)("button",{type:"button",className:"mm-btn",style:{flex:1,display:"inline-flex",alignItems:"center",justifyContent:"center",gap:6},onClick:e.onImport,children:[(0,m.jsx)(V,{name:"upload",size:14}),"\u5BFC\u5165"]}),(0,m.jsxs)("button",{type:"button",className:"mm-btn",style:{flex:1,display:"inline-flex",alignItems:"center",justifyContent:"center",gap:6},onClick:e.onBackups,children:[(0,m.jsx)(V,{name:"backup",size:14}),"\u5907\u4EFD"]})]})]})}function cn(e){let[t,n]=(0,O.useState)(e.value),o=(0,O.useRef)(!1),r=i=>{o.current||(o.current=!0,e.onDone(i))};return(0,m.jsx)("input",{autoFocus:!0,value:t,"aria-label":"\u6587\u6863\u540D\u79F0",onFocus:i=>i.currentTarget.select(),onClick:i=>i.stopPropagation(),onChange:i=>n(i.target.value),onBlur:()=>r(t),onKeyDown:i=>{i.stopPropagation(),!(i.nativeEvent.isComposing||i.keyCode===229)&&(i.key==="Enter"?r(t):i.key==="Escape"&&r(null))}})}function dn(e){let t=be(),[n,o]=(0,O.useState)(null),[r,i]=(0,O.useState)(!1),a=(0,O.useRef)(null),f=(0,O.useCallback)(()=>{te.backups().then(o,c=>t.toast("\u8BFB\u53D6\u5907\u4EFD\u5931\u8D25\uFF1A"+ie(c)))},[t]);(0,O.useEffect)(f,[f]);let u=async(c,D)=>{if(window.confirm("\u7528"+D+`\u8986\u76D6\u5F53\u524D\u6240\u6709\u6587\u6863\uFF1F
|
|
26
|
-
|
|
17
|
+
`}function Qn(e){if(!/<opml[\s>]/i.test(e))throw new Error("\u4E0D\u662F\u6709\u6548\u7684 OPML \u6587\u4EF6");let t=/<title>([\s\S]*?)<\/title>/i.exec(e),n=e.search(/<body[\s>\/]/i),r=n>=0?e.slice(n):e,o=[],i=[],l=/<outline\b((?:[^>"']|"[^"]*"|'[^']*')*?)(\/?)>|<\/outline\s*>/gi,c;for(;(c=l.exec(r))!==null;){if(c[0].startsWith("</")){i.pop();continue}let a={},m=/([\w:.-]+)\s*=\s*(?:"([^"]*)"|'([^']*)')/g,g;for(;(g=m.exec(c[1]??""))!==null;)a[g[1]]=Zn(g[2]??g[3]??"");let D={text:(a.text??a.title??"").replace(/\r/g,""),children:[]};(a._checked??a._complete)==="true"?D.checked=!0:a._checked==="false"&&(D.checked=!1);let N=(a._note??"").replace(/\r/g,"");N.trim().length>0&&(D.note=N),(i.length>0?i[i.length-1].children:o).push(D),c[2]!=="/"&&i.push(D)}let d=t!==null?Zn(t[1].trim()):void 0;return d!==void 0&&d.length>0?{title:d,items:o}:{items:o}}var an="/dsh-mindmap/api";var Mo="dsh-mindmap",ut,cn=new Set;function Do(e){if(typeof e!="object"||e===null)return!1;let t=e;return t.kind==="library"?!0:t.kind==="doc"&&typeof t.docId=="string"&&typeof t.revision=="number"}function er(){if(ut!==void 0)return ut;try{ut=typeof BroadcastChannel>"u"?null:new BroadcastChannel(Mo)}catch{ut=null}return ut!==null&&(ut.onmessage=e=>{if(Do(e.data))for(let t of cn)try{t(e.data)}catch(n){console.warn("[dsh-mindmap] sync listener failed:",n)}}),ut}function Ct(e){try{er()?.postMessage(e)}catch{}}function Bt(e){return er(),cn.add(e),()=>{cn.delete(e)}}var ot=class extends Error{code;current;constructor(t,n,r){super(n),this.code=t,r!==void 0&&(this.current=r)}};async function ze(e,t,n={}){let r;try{r=await fetch(an+e,t===void 0?{cache:"no-store"}:{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(t),keepalive:n.keepalive===!0})}catch(i){throw new ot("network","\u65E0\u6CD5\u8FDE\u63A5\u5230\u601D\u7EF4\u5BFC\u56FE\u670D\u52A1\uFF1A"+(i instanceof Error?i.message:String(i)))}let o;try{o=await r.json()}catch{throw new ot("internal",`\u670D\u52A1\u8FD4\u56DE\u4E86\u65E0\u6548\u54CD\u5E94 (HTTP ${r.status})`)}if(!o.ok)throw new ot(o.error.code,o.error.message,o.error.current);return t!==void 0&&!e.endsWith("/save")&&Ct({kind:"library"}),o.value}var Ne={library:()=>ze("/library"),doc:e=>ze(`/docs/${e}`),createDoc:e=>ze("/docs",e),saveDoc:(e,t,n=!1)=>ze(`/docs/${e.id}/save`,{doc:e,baseRevision:t},{keepalive:n}),patchMeta:(e,t)=>ze(`/docs/${e}/meta`,t),trash:e=>ze(`/docs/${e}/trash`,{}),restore:e=>ze(`/docs/${e}/restore`,{}),purge:e=>ze(`/docs/${e}/purge`,{}),emptyTrash:()=>ze("/trash/empty",{}),createFolder:(e,t=null)=>ze("/folders",{name:e,parentId:t}),moveFolder:(e,t)=>ze(`/folders/${e}/move`,{parentId:t}),quarantine:()=>ze("/health/quarantine"),renameFolder:(e,t)=>ze(`/folders/${e}/rename`,{name:t}),deleteFolder:e=>ze(`/folders/${e}/delete`,{}),search:e=>ze("/search?q="+encodeURIComponent(e)),backups:()=>ze("/backups"),backupNow:()=>ze("/backups/now",{}),restoreBackup:e=>ze(`/backups/${e}/restore`,{}),restoreFile:e=>ze("/restore",e),backupUrl:e=>`${an}/backups/${encodeURIComponent(e)}`};function tr(e,t){let n=[...e];return t==="title"?n.sort((r,o)=>r.title.localeCompare(o.title,"zh-CN")||o.updatedAt-r.updatedAt):t==="created"?n.sort((r,o)=>o.createdAt-r.createdAt):n.sort((r,o)=>o.updatedAt-r.updatedAt),n}function dn(e,t){let n=new Set([t]),r=!0;for(;r;){r=!1;for(let o of e)o.parentId!=null&&n.has(o.parentId)&&!n.has(o.id)&&(n.add(o.id),r=!0)}return n}function nr(e,t){let n=0,r=0,o=0,i=0;for(let l of Ge(e,t,!1)){let c=e.nodes[l.id];n++,r+=c.text.replace(/\s/g,"").length+(c.note??"").replace(/\s/g,"").length,typeof c.checked=="boolean"&&(o++,c.checked&&i++)}return{nodes:n,chars:r,todo:o,done:i}}var Ae=require("react");function $t(e){return e.replace(/\[([^\]\n]+)\]\((https?:\/\/[^)\s]+)\)/g,"$1").replace(/\*\*([^*\n]+?)\*\*/g,"$1").replace(/~~([^~\n]+?)~~/g,"$1").replace(/`([^`\n]+)`/g,"$1").replace(/(^|[^*])\*([^*\s][^*\n]*?)\*/g,"$1$2")}var nt=require("react/jsx-runtime"),Eo=/(`[^`\n]+`)|(\*\*[^*\n]+?\*\*)|(~~[^~\n]+?~~)|(\*[^*\s][^*\n]*?\*)|(\[[^\]\n]+\]\(https?:\/\/[^)\s]+\))|(https?:\/\/[^\s<>()]+[^\s<>().,;:!?,。;:!?])|((?:^|(?<=\s))#[^\s#]{1,40})/g;function rr(e){return t=>{t.preventDefault(),t.stopPropagation(),window.open(e,"_blank","noopener,noreferrer")}}function mt(e,t,n,r){if(r===void 0||r.length===0)return[e];let o=[],i=0,l=0;for(let c of r){let d=Math.max(c.start-t,i),a=Math.min(c.end-t,e.length);a<=d||(d>i&&o.push(e.slice(i,d)),o.push((0,nt.jsx)("mark",{className:c.current===!0?"mm-find mm-find-cur":"mm-find",children:e.slice(d,a)},n+"m"+l++)),i=a)}return i<e.length&&o.push(e.slice(i)),o}function jt(e,t,n,r){let o=r?.marks,i=[],l=0,c=0;for(let d of e.matchAll(Eo)){let a=d.index??0,m=n+"-"+c++;a>l&&i.push(...mt(e.slice(l,a),t+l,m+"p",o));let g=d[0];if(d[1]!==void 0)i.push((0,nt.jsx)("code",{className:"mm-code",children:mt(g.slice(1,-1),t+a+1,m,o)},m));else if(d[2]!==void 0)i.push((0,nt.jsx)("strong",{children:jt(g.slice(2,-2),t+a+2,m,r)},m));else if(d[3]!==void 0)i.push((0,nt.jsx)("s",{children:jt(g.slice(2,-2),t+a+2,m,r)},m));else if(d[4]!==void 0)i.push((0,nt.jsx)("em",{children:jt(g.slice(1,-1),t+a+1,m,r)},m));else if(d[5]!==void 0){let D=g.indexOf("]("),b=g.slice(D+2,-1);i.push((0,nt.jsx)("a",{href:b,className:"mm-link",onMouseDown:N=>N.stopPropagation(),onClick:rr(b),children:mt(g.slice(1,D),t+a+1,m,o)},m))}else if(d[6]!==void 0)i.push((0,nt.jsx)("a",{href:g,className:"mm-link",onMouseDown:D=>D.stopPropagation(),onClick:rr(g),children:mt(g,t+a,m,o)},m));else{let D=r?.onTag;i.push(D===void 0?(0,nt.jsx)("span",{className:"mm-tag",children:mt(g,t+a,m,o)},m):(0,nt.jsx)("span",{className:"mm-tag mm-tag-click",title:"\u7B5B\u9009 "+g,onMouseDown:b=>{b.stopPropagation(),b.preventDefault()},onClick:b=>{b.stopPropagation(),D(g)},children:mt(g,t+a,m,o)},m))}l=a+g.length}return l<e.length&&i.push(...mt(e.slice(l),t+l,n+"-t",o)),i}function vt(e,t="i",n){let r=n?.marks!==void 0?[...n.marks].sort((o,i)=>o.start-i.start):void 0;return jt(e,0,t,r===n?.marks?n:{...n,marks:r})}var Oe=require("react"),Te=require("react/jsx-runtime"),So={plus:"M12 5v14M5 12h14",folderPlus:"M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2zM12 11v5M9.5 13.5h5",folder:"M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",doc:"M7 3h7l5 5v11a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zM14 3v5h5",star:"M12 3.5l2.6 5.3 5.9.9-4.3 4.1 1 5.8-5.2-2.7-5.2 2.7 1-5.8-4.3-4.1 5.9-.9z",search:"M11 4a7 7 0 1 1 0 14 7 7 0 0 1 0-14zM20 20l-4-4",chevron:"M6 9l6 6 6-6",chevronRight:"M9 6l6 6-6 6",undo:"M9 14L4 9l5-5M4 9h10a6 6 0 0 1 0 12h-3",redo:"M15 14l5-5-5-5M20 9H10a6 6 0 0 0 0 12h3",more:"M5 12h.01M12 12h.01M19 12h.01",download:"M12 4v11M7 10l5 5 5-5M5 20h14",upload:"M12 20V9M7 14l5-5 5 5M5 4h14",trash:"M4 7h16M9 7V4h6v3M6 7l1 13h10l1-13",menu:"M4 6h16M4 12h16M4 18h16",fit:"M4 9V4h5M15 4h5v5M20 15v5h-5M9 20H4v-5",center:"M12 8a4 4 0 1 1 0 8 4 4 0 0 1 0-8zM12 2v3M12 19v3M2 12h3M19 12h3",minus:"M5 12h14",expand:"M7 10l5-5 5 5M7 14l5 5 5-5",collapse:"M7 5l5 5 5-5M7 19l5-5 5 5",backup:"M4 7c0-1.7 3.6-3 8-3s8 1.3 8 3-3.6 3-8 3-8-1.3-8-3zM4 7v10c0 1.7 3.6 3 8 3s8-1.3 8-3V7M4 12c0 1.7 3.6 3 8 3s8-1.3 8-3",x:"M6 6l12 12M18 6L6 18",mindmap:"M9 12h3M12 12c2 0 2-5 4-5h1M12 12c2 0 2 5 4 5h1M4 10h5v4H4zM17 5h4v4h-4zM17 15h4v4h-4z",outline:"M8 6h12M8 12h12M8 18h12M4 6h.01M4 12h.01M4 18h.01"};function Se(e){let t=e.size??16;return(0,Te.jsx)("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.8,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",focusable:"false",children:(0,Te.jsx)("path",{d:So[e.name]??""})})}function or(e){let t=(0,Oe.useRef)(null),[n,r]=(0,Oe.useState)({x:e.x,y:e.y}),o=e.onClose,i=(0,Oe.useRef)(typeof document>"u"?null:document.activeElement);return(0,Oe.useEffect)(()=>()=>{let l=i.current;l!==null&&typeof l.focus=="function"&&document.contains(l)&&(document.activeElement===null||document.activeElement===document.body||t.current?.contains(document.activeElement)===!0)&&l.focus({preventScroll:!0})},[]),(0,Oe.useLayoutEffect)(()=>{let l=t.current;if(l===null)return;let c=l.getBoundingClientRect();r({x:Math.max(4,Math.min(e.x,window.innerWidth-c.width-4)),y:Math.max(4,Math.min(e.y,window.innerHeight-c.height-4))}),l.querySelector("button:not(:disabled)")?.focus({preventScroll:!0})},[e.x,e.y]),(0,Oe.useEffect)(()=>{let l=d=>{t.current!==null&&!t.current.contains(d.target)&&o()},c=d=>{if(d.key==="Escape"){d.preventDefault(),d.stopPropagation(),o();return}if(d.key==="Tab"){d.preventDefault(),o();return}if(d.key==="ArrowDown"||d.key==="ArrowUp"){d.preventDefault();let a=Array.from(t.current?.querySelectorAll("button:not(:disabled)")??[]);if(a.length===0)return;let m=a.indexOf(document.activeElement);a[(m+(d.key==="ArrowDown"?1:a.length-1)+a.length)%a.length]?.focus()}};return window.addEventListener("mousedown",l,!0),window.addEventListener("keydown",c,!0),window.addEventListener("blur",o),window.addEventListener("resize",o),()=>{window.removeEventListener("mousedown",l,!0),window.removeEventListener("keydown",c,!0),window.removeEventListener("blur",o),window.removeEventListener("resize",o)}},[o]),(0,Te.jsx)("div",{ref:t,className:"mm-menu",role:"menu",style:{left:n.x,top:n.y},onContextMenu:l=>l.preventDefault(),children:e.items.map((l,c)=>l.kind==="sep"?(0,Te.jsx)("div",{className:"mm-menu-sep",role:"separator"},c):l.kind==="label"?(0,Te.jsx)("div",{className:"mm-menu-label",children:l.label},c):(0,Te.jsxs)("button",{type:"button",role:"menuitem",disabled:l.disabled,className:"mm-menu-item"+(l.danger===!0?" mm-danger":""),onClick:()=>{o(),l.onSelect()},children:[l.label,l.shortcut!==void 0?(0,Te.jsx)("span",{className:"mm-menu-key",children:l.shortcut}):null]},c))})}var ir=(0,Oe.createContext)(null);function pt(){let e=(0,Oe.useContext)(ir);if(e===null)throw new Error("useDialogs outside DialogHost");return e}function lr(e){let[t,n]=(0,Oe.useState)(null),[r,o]=(0,Oe.useState)(null),i=(0,Oe.useRef)(void 0),l=(0,Oe.useMemo)(()=>({confirm:d=>new Promise(a=>n({kind:"confirm",title:d.title,message:d.message,ok:d.ok??"\u786E\u5B9A",danger:d.danger===!0,resolve:a})),prompt:d=>new Promise(a=>n({kind:"prompt",title:d.title,value:d.value??"",placeholder:d.placeholder??"",ok:d.ok??"\u786E\u5B9A",multiline:d.multiline===!0,message:d.message,resolve:a})),show:d=>n({kind:"custom",title:d.title,body:d.body}),toast:(d,a)=>{o(a===void 0?{message:d}:{message:d,action:a}),window.clearTimeout(i.current),i.current=window.setTimeout(()=>o(null),a===void 0?2600:6e3)}}),[]);(0,Oe.useEffect)(()=>()=>window.clearTimeout(i.current),[]);let c=(0,Oe.useCallback)(()=>n(null),[]);return(0,Te.jsxs)(ir.Provider,{value:l,children:[e.children,t!==null?(0,Te.jsx)(No,{pending:t,onDone:c}):null,r!==null?(0,Te.jsxs)("div",{className:"mm-toast",role:"status",children:[(0,Te.jsx)("span",{children:r.message}),r.action!==void 0?(0,Te.jsx)("button",{type:"button",className:"mm-toast-btn",onClick:()=>{let d=r.action;o(null),window.clearTimeout(i.current),d?.onClick()},children:r.action.label}):null]}):null]})}function No(e){let t=e.pending,[n,r]=(0,Oe.useState)(t.kind==="prompt"?t.value:""),o=(0,Oe.useRef)(null),i=(0,Oe.useRef)(null),l=(0,Oe.useRef)(null);(0,Oe.useEffect)(()=>{let a=document.activeElement;return t.kind==="prompt"?(o.current?.focus(),o.current?.select()):i.current!==null?i.current.focus():l.current?.querySelector("button")?.focus(),()=>{a!==null&&document.contains(a)&&a.focus({preventScroll:!0})}},[t]);let c=a=>{e.onDone(),t.kind==="confirm"?t.resolve(a):t.kind==="prompt"&&t.resolve(a?n:null)};return(0,Te.jsx)("div",{className:"mm-modal-mask",onMouseDown:a=>{a.target===a.currentTarget&&c(!1)},onKeyDown:a=>{if(a.key==="Escape"){a.preventDefault(),a.stopPropagation(),c(!1);return}if(a.key==="Tab"){let g=Array.from(l.current?.querySelectorAll('button:not(:disabled),input:not(:disabled),textarea:not(:disabled),select,a[href],[tabindex="0"]')??[]);if(g.length===0){a.preventDefault();return}let D=g.indexOf(document.activeElement),b=a.shiftKey?D<=0?g.length-1:D-1:D===-1||D===g.length-1?0:D+1;a.preventDefault(),g[b].focus();return}let m=t.kind==="prompt"&&t.multiline;if(a.key==="Enter"&&t.kind!=="custom"&&!a.nativeEvent.isComposing&&a.keyCode!==229&&(!m||a.ctrlKey||a.metaKey)){if(a.target.tagName==="BUTTON"&&!(a.ctrlKey||a.metaKey))return;a.preventDefault(),c(!0)}},children:(0,Te.jsxs)("div",{ref:l,className:"mm-modal",role:"dialog","aria-modal":"true","aria-label":t.title,children:[(0,Te.jsx)("h3",{children:t.title}),(0,Te.jsxs)("div",{className:"mm-modal-body",children:[t.kind==="confirm"&&t.message!==void 0?(0,Te.jsx)("p",{style:{margin:0,whiteSpace:"pre-wrap"},children:t.message}):null,t.kind==="prompt"&&t.message!==void 0?(0,Te.jsx)("p",{style:{margin:"0 0 8px",whiteSpace:"pre-wrap",color:"var(--mm-sub)"},children:t.message}):null,t.kind==="prompt"&&t.multiline?(0,Te.jsx)("textarea",{ref:o,className:"mm-modal-area","aria-label":t.title,value:n,placeholder:t.placeholder,rows:10,onChange:a=>r(a.target.value)}):null,t.kind==="prompt"&&!t.multiline?(0,Te.jsx)("input",{ref:o,type:"text","aria-label":t.title,value:n,placeholder:t.placeholder,onChange:a=>r(a.target.value)}):null,t.kind==="custom"?t.body(e.onDone):null]}),t.kind!=="custom"?(0,Te.jsxs)("div",{className:"mm-modal-foot",children:[(0,Te.jsx)("button",{type:"button",className:"mm-btn",onClick:()=>c(!1),children:"\u53D6\u6D88"}),(0,Te.jsx)("button",{ref:i,type:"button",className:"mm-btn mm-primary"+(t.kind==="confirm"&&t.danger?" mm-danger":""),onClick:()=>c(!0),children:t.ok})]}):(0,Te.jsx)("div",{className:"mm-modal-foot",children:(0,Te.jsx)("button",{type:"button",className:"mm-btn",onClick:e.onDone,children:"\u5173\u95ED"})})]})})}function sr(e,t=Date.now()){let n=Math.max(0,t-e);if(n<6e4)return"\u521A\u521A";if(n<36e5)return Math.floor(n/6e4)+" \u5206\u949F\u524D";if(n<864e5)return Math.floor(n/36e5)+" \u5C0F\u65F6\u524D";if(n<7*864e5)return Math.floor(n/864e5)+" \u5929\u524D";let r=new Date(e);return(new Date(t).getFullYear()===r.getFullYear()?"":r.getFullYear()+"/")+(r.getMonth()+1)+"/"+r.getDate()}function yt(e,t){let n=URL.createObjectURL(t),r=document.createElement("a");r.href=n,r.download=e,document.body.appendChild(r),r.click(),r.remove(),window.setTimeout(()=>URL.revokeObjectURL(n),1e4)}function wt(e,t){return(e.replace(/[\/:*?"<>|\u0000-\u001f]+/g,"_").trim().slice(0,80)||"\u672A\u547D\u540D\u6587\u6863")+"."+t}var S=require("react/jsx-runtime"),ar="dsh-mindmap:open-folders",cr="dsh-mindmap:sort",dr=30,Io="application/x-dsh-mindmap-doc",Co="application/x-dsh-mindmap-folder",Ut={updated:"\u6700\u8FD1\u7F16\u8F91",title:"\u6807\u9898",created:"\u521B\u5EFA\u65F6\u95F4"};function ur(e){try{return window.localStorage.getItem(e)}catch{return null}}function mr(e,t){try{window.localStorage.setItem(e,t)}catch{}}var it=e=>e instanceof Error?e.message:String(e);function pr(e,t){let n=[],r=new Set;for(let o=e.get(t);o!==void 0&&!r.has(o.id);o=o.parentId!=null?e.get(o.parentId):void 0)r.add(o.id),n.unshift(o.name);return n.join(" / ")}function fr(e){let t=pt(),[n,r]=(0,Ae.useState)(""),[o,i]=(0,Ae.useState)(null),[l,c]=(0,Ae.useState)(null),[d,a]=(0,Ae.useState)(()=>new Set((ur(ar)??"").split(",").filter(Boolean))),[m,g]=(0,Ae.useState)(!1),[D,b]=(0,Ae.useState)(()=>{let u=ur(cr);return u==="title"||u==="created"?u:"updated"}),[N,U]=(0,Ae.useState)(null),ge=(0,Ae.useRef)(null),J=e.library,we=(0,Ae.useRef)(e);we.current=e,(0,Ae.useEffect)(()=>{mr(ar,Array.from(d).join(","))},[d]);let j=u=>{b(u),mr(cr,u)};(0,Ae.useEffect)(()=>{let u=n.trim();if(u.length===0){i(null);return}let k=!0,R=window.setTimeout(()=>{Ne.search(u).then(Me=>{k&&i(Me)},()=>{k&&i([])})},250);return()=>{k=!1,window.clearTimeout(R)}},[n]);let le=(0,Ae.useMemo)(()=>tr((J?.docs??[]).filter(u=>u.trashedAt===void 0),D),[J,D]),L=(0,Ae.useMemo)(()=>(J?.docs??[]).filter(u=>u.trashedAt!==void 0).sort((u,k)=>(k.trashedAt??0)-(u.trashedAt??0)),[J]),E=(0,Ae.useMemo)(()=>[...J?.folders??[]].sort((u,k)=>u.name.localeCompare(k.name,"zh-CN")),[J]),B=(0,Ae.useMemo)(()=>new Map(E.map(u=>[u.id,u])),[E]),w=(0,Ae.useMemo)(()=>{let u=new Map;for(let k of E){let R=k.parentId!=null&&B.has(k.parentId)?k.parentId:null,Me=u.get(R)??[];Me.push(k),u.set(R,Me)}return u},[E,B]),_=le.filter(u=>u.favorite),$=le.filter(u=>u.folderId===null||!B.has(u.folderId));(0,Ae.useEffect)(()=>{let u=k=>{if(!k.altKey||k.ctrlKey||k.metaKey||k.shiftKey||!/^Digit[1-9]$/.test(k.code))return;let R=_[Number(k.code.slice(5))-1];R!==void 0&&(k.preventDefault(),we.current.onOpen(R.id))};return window.addEventListener("keydown",u),()=>window.removeEventListener("keydown",u)},[_]);let A=u=>a(k=>{let R=new Set(k);return R.has(u)?R.delete(u):R.add(u),R}),C=async u=>{let k=await t.prompt({title:u===null?"\u65B0\u5EFA\u6587\u4EF6\u5939":"\u65B0\u5EFA\u5B50\u6587\u4EF6\u5939",placeholder:"\u6587\u4EF6\u5939\u540D\u79F0",ok:"\u521B\u5EFA"});if(!(k===null||k.trim().length===0))try{let R=await Ne.createFolder(k.trim(),u);J!==null&&e.onChanged({...J,folders:[...J.folders,R]}),a(Me=>{let se=new Set(Me).add(R.id);return u!==null&&se.add(u),se})}catch(R){t.toast("\u521B\u5EFA\u5931\u8D25\uFF1A"+it(R))}},ve=async u=>{let k=await t.prompt({title:"\u4ECE Markdown \u65B0\u5EFA",message:"\u7C98\u8D34 Markdown \u5217\u8868\u6216\u6807\u9898\uFF08# \u6807\u9898\u3001- \u8981\u70B9\u3001\u7F29\u8FDB\u8868\u793A\u5C42\u7EA7\uFF09\u3002\u6309 Ctrl+Enter \u521B\u5EFA\u3002",placeholder:`# 2027 \u4E2A\u4EBA\u89C4\u5212
|
|
18
|
+
- \u5B66\u4E60
|
|
19
|
+
- Rust`,ok:"\u521B\u5EFA",multiline:!0});k===null||k.trim().length===0||e.onCreate(u,k)},ue=(u,k,R)=>{e.onMenu({x:u,y:k,items:[{label:"\u7A7A\u767D\u6587\u6863",onSelect:()=>e.onCreate(R)},{label:"\u4ECE\u7C98\u8D34\u7684 Markdown \u65B0\u5EFA\u2026",onSelect:()=>{ve(R)}},{label:"\u5BFC\u5165\u6587\u4EF6\uFF08.md / .opml\uFF09\u2026",onSelect:e.onImport},{kind:"sep"},{label:R===null?"\u65B0\u5EFA\u6587\u4EF6\u5939":"\u65B0\u5EFA\u5B50\u6587\u4EF6\u5939",onSelect:()=>{C(R)}}]})},De=async(u,k)=>{try{await Ne.moveFolder(u,k),await e.onRefresh(),k!==null&&a(R=>new Set(R).add(k))}catch(R){t.toast("\u79FB\u52A8\u5931\u8D25\uFF1A"+it(R))}},Ke=async(u,k)=>{await e.onPatch(u,{folderId:k}),k!==null&&a(R=>new Set(R).add(k))},Ie=(u,k,R)=>{let Me=[{label:"\u6253\u5F00",onSelect:()=>e.onOpen(u.id)},{label:"\u91CD\u547D\u540D",shortcut:"F2",onSelect:()=>c(u.id)},{label:u.favorite?"\u53D6\u6D88\u6536\u85CF":"\u6536\u85CF",onSelect:()=>{e.onPatch(u.id,{favorite:!u.favorite})}},{kind:"sep"},{kind:"label",label:"\u79FB\u52A8\u5230"},{label:(u.folderId===null?"\u2713 ":"")+"\u672A\u5206\u7C7B",disabled:u.folderId===null,onSelect:()=>{Ke(u.id,null)}},...E.map(se=>({label:(u.folderId===se.id?"\u2713 ":"")+pr(B,se.id),disabled:u.folderId===se.id,onSelect:()=>{Ke(u.id,se.id)}})),{kind:"sep"},{label:"\u79FB\u5230\u56DE\u6536\u7AD9",shortcut:"Delete",danger:!0,onSelect:()=>{e.onTrash(u.id)}}];e.onMenu({x:k,y:R,items:Me})},ke=(u,k,R)=>{let Me=dn(E,u.id),se=u.parentId??null;e.onMenu({x:k,y:R,items:[{label:"\u5728\u6B64\u65B0\u5EFA\u6587\u6863\u2026",onSelect:()=>ue(k,R,u.id)},{label:"\u65B0\u5EFA\u5B50\u6587\u4EF6\u5939",onSelect:()=>{C(u.id)}},{label:"\u91CD\u547D\u540D",onSelect:async()=>{let p=await t.prompt({title:"\u91CD\u547D\u540D\u6587\u4EF6\u5939",value:u.name,ok:"\u4FDD\u5B58"});if(!(p===null||p.trim().length===0||p.trim()===u.name))try{let X=await Ne.renameFolder(u.id,p.trim());J!==null&&e.onChanged({...J,folders:J.folders.map(K=>K.id===u.id?X:K)})}catch(X){t.toast("\u91CD\u547D\u540D\u5931\u8D25\uFF1A"+it(X))}}},{kind:"sep"},{kind:"label",label:"\u79FB\u52A8\u5230"},{label:(se===null?"\u2713 ":"")+"\u9876\u5C42",disabled:se===null,onSelect:()=>{De(u.id,null)}},...E.filter(p=>!Me.has(p.id)).map(p=>({label:(se===p.id?"\u2713 ":"")+pr(B,p.id),disabled:se===p.id,onSelect:()=>{De(u.id,p.id)}})),{kind:"sep"},{label:"\u5220\u9664\u6587\u4EF6\u5939",danger:!0,onSelect:async()=>{let p=se===null?"\u300C\u672A\u5206\u7C7B\u300D\u548C\u9876\u5C42":"\u4E0A\u4E00\u7EA7\u6587\u4EF6\u5939\u300C"+(B.get(se)?.name??"")+"\u300D";if(await t.confirm({title:"\u5220\u9664\u6587\u4EF6\u5939\u300C"+u.name+"\u300D\uFF1F",message:"\u91CC\u9762\u7684\u6587\u6863\u548C\u5B50\u6587\u4EF6\u5939\u4E0D\u4F1A\u88AB\u5220\u9664\uFF0C\u4F1A\u79FB\u5230"+p+"\u3002",ok:"\u5220\u9664",danger:!0}))try{await Ne.deleteFolder(u.id),await e.onRefresh()}catch(K){t.toast("\u5220\u9664\u5931\u8D25\uFF1A"+it(K))}}}]})},$e=(u,k,R)=>{ge.current=k,u.dataTransfer.effectAllowed="move",u.dataTransfer.setData(k.kind==="doc"?Io:Co,k.id),u.dataTransfer.setData("text/plain",R)},ye=u=>{let k=ge.current;if(k===null)return!1;if(k.kind==="doc"){let R=J?.docs.find(Me=>Me.id===k.id);return R!==void 0&&R.folderId!==u}return u!==null&&dn(E,k.id).has(u)?!1:(B.get(k.id)?.parentId??null)!==u},Ce=(u,k)=>({onDragOver:R=>{ye(u)&&(R.preventDefault(),R.dataTransfer.dropEffect="move",N!==k&&U(k))},onDragLeave:R=>{R.currentTarget.contains(R.relatedTarget)||U(Me=>Me===k?null:Me)},onDrop:R=>{let Me=ge.current;ge.current=null,U(null),!(Me===null||!ye(u))&&(R.preventDefault(),Me.kind==="doc"?Ke(Me.id,u):De(Me.id,u))}}),W=()=>{ge.current=null,U(null)},O=u=>(0,S.jsx)("button",{type:"button",className:"mm-row-more","aria-label":"\u66F4\u591A\u64CD\u4F5C",title:"\u66F4\u591A\u64CD\u4F5C",tabIndex:-1,onClick:k=>{k.stopPropagation();let R=k.currentTarget.getBoundingClientRect();u(R.left,R.bottom+2)},children:(0,S.jsx)(Se,{name:"more",size:14})}),ce=(u,k)=>{if(u.key==="ContextMenu"||u.key==="F10"&&u.shiftKey){u.preventDefault();let R=u.currentTarget.getBoundingClientRect();return k(R.left+24,R.bottom),!0}return!1},me=(u,k,R,Me=-1)=>(0,S.jsx)("div",{className:"mm-row"+(u.id===e.activeId?" mm-active":""),role:"button",tabIndex:0,draggable:l!==u.id,style:{paddingLeft:8+k*14},"aria-current":u.id===e.activeId?"page":void 0,title:Me>=0&&Me<9?u.title+"\uFF08Alt+"+(Me+1)+"\uFF09":void 0,onClick:()=>{l!==u.id&&e.onOpen(u.id)},onKeyDown:se=>{l===u.id||ce(se,(p,X)=>Ie(u,p,X))||(se.key==="Enter"?e.onOpen(u.id):se.key==="F2"?(se.preventDefault(),c(u.id)):se.key==="Delete"&&(se.preventDefault(),e.onTrash(u.id)))},onDoubleClick:()=>c(u.id),onDragStart:se=>$e(se,{kind:"doc",id:u.id},u.title),onDragEnd:W,onContextMenu:se=>{se.preventDefault(),Ie(u,se.clientX,se.clientY)},children:l===u.id?(0,S.jsx)(Oo,{value:u.title,onDone:se=>{c(null),se!==null&&se.trim().length>0&&se.trim()!==u.title&&e.onPatch(u.id,{title:se.trim()})}}):(0,S.jsxs)(S.Fragment,{children:[u.favorite&&R!=="fav-"?(0,S.jsx)("span",{className:"mm-row-star","aria-label":"\u5DF2\u6536\u85CF",children:(0,S.jsx)(Se,{name:"star",size:11})}):null,(0,S.jsx)("span",{className:"mm-row-title",children:u.title}),(0,S.jsx)("span",{className:"mm-row-time",title:new Date(D==="created"?u.createdAt:u.updatedAt).toLocaleString(),children:sr(D==="created"?u.createdAt:u.updatedAt)}),O((se,p)=>Ie(u,se,p))]})},R+u.id),Le=(u,k,R)=>{if(R.has(u.id))return null;R.add(u.id);let Me=le.filter(K=>K.folderId===u.id),se=w.get(u.id)??[],p=d.has(u.id),X=Me.length===0&&se.length===0;return(0,S.jsxs)("div",{role:"group",children:[(0,S.jsxs)("div",{className:"mm-row mm-folder-row"+(N==="f:"+u.id?" mm-drop-into":""),role:"button",tabIndex:0,"aria-expanded":p,draggable:!0,style:{paddingLeft:8+k*14},onClick:()=>A(u.id),onKeyDown:K=>{ce(K,(de,je)=>ke(u,de,je))||(K.key==="Enter"||K.key==="ArrowRight"&&!p||K.key==="ArrowLeft"&&p)&&A(u.id)},onDragStart:K=>$e(K,{kind:"folder",id:u.id},u.name),onDragEnd:W,...Ce(u.id,"f:"+u.id),onContextMenu:K=>{K.preventDefault(),ke(u,K.clientX,K.clientY)},children:[(0,S.jsx)("span",{className:"mm-folder-arrow",style:{transform:p?"none":"rotate(-90deg)"},children:(0,S.jsx)(Se,{name:"chevron",size:12})}),(0,S.jsx)(Se,{name:"folder",size:14}),(0,S.jsx)("span",{className:"mm-row-title",children:u.name}),(0,S.jsx)("span",{className:"mm-row-time",children:Me.length}),O((K,de)=>ke(u,K,de))]}),p?(0,S.jsxs)(S.Fragment,{children:[se.map(K=>Le(K,k+1,R)),Me.map(K=>me(K,k+1,"f-")),X?(0,S.jsx)("div",{className:"mm-empty",style:{paddingLeft:22+(k+1)*14},children:"\u7A7A\u6587\u4EF6\u5939"}):null]}):null]},u.id)},he=u=>{let k=u.currentTarget.getBoundingClientRect();e.onMenu({x:k.left,y:k.bottom+2,items:[{kind:"label",label:"\u6392\u5E8F"},...Object.keys(Ut).map(R=>({label:(D===R?"\u2713 ":"")+Ut[R],onSelect:()=>j(R)}))]})},ae=async u=>{try{let k=await Ne.restore(u.id);J!==null&&e.onChanged({...J,docs:J.docs.map(R=>R.id===u.id?k:R)}),t.toast("\u5DF2\u6062\u590D\u300C"+u.title+"\u300D")}catch(k){t.toast("\u6062\u590D\u5931\u8D25\uFF1A"+it(k))}},x=async u=>{if(!await t.confirm({title:"\u6C38\u4E45\u5220\u9664\u300C"+u.title+"\u300D\uFF1F",message:"\u5220\u9664\u524D\u4F1A\u81EA\u52A8\u505A\u4E00\u4EFD\u5907\u4EFD\uFF0C\u53EF\u5728\u300C\u5907\u4EFD\u300D\u91CC\u627E\u56DE\u3002",ok:"\u6C38\u4E45\u5220\u9664",danger:!0}))return!1;try{return await Ne.purge(u.id),await e.onRefresh(),!0}catch(R){return t.toast("\u5220\u9664\u5931\u8D25\uFF1A"+it(R)),!1}},P=async()=>{if(await t.confirm({title:"\u6E05\u7A7A\u56DE\u6536\u7AD9\uFF1F",message:"\u5C06\u6C38\u4E45\u5220\u9664 "+L.length+" \u7BC7\u6587\u6863\u3002\u5220\u9664\u524D\u4F1A\u81EA\u52A8\u505A\u4E00\u4EFD\u5907\u4EFD\uFF0C\u53EF\u5728\u300C\u5907\u4EFD\u300D\u91CC\u627E\u56DE\u3002",ok:"\u6E05\u7A7A",danger:!0}))try{let k=await Ne.emptyTrash();await e.onRefresh(),t.toast("\u5DF2\u6C38\u4E45\u5220\u9664 "+k.purged+" \u7BC7\u6587\u6863")}catch(k){t.toast("\u6E05\u7A7A\u5931\u8D25\uFF1A"+it(k))}},T=u=>{t.show({title:u.title,body:k=>(0,S.jsx)(To,{meta:u,onRestore:async()=>{k(),await ae(u)},onPurge:async()=>{k(),await x(u)}})})},Q=u=>Math.max(0,Math.ceil(((u.trashedAt??0)+dr*864e5-Date.now())/864e5)),Pe=w.get(null)??[];return(0,S.jsxs)("aside",{className:"mm-side","aria-label":"\u6587\u6863",children:[(0,S.jsxs)("div",{className:"mm-side-head",children:[(0,S.jsx)("span",{className:"mm-side-title",children:"\u601D\u7EF4\u5BFC\u56FE"}),(0,S.jsx)("button",{type:"button",className:"mm-icon-btn",title:"\u65B0\u5EFA\u6587\u4EF6\u5939","aria-label":"\u65B0\u5EFA\u6587\u4EF6\u5939",onClick:()=>{C(null)},children:(0,S.jsx)(Se,{name:"folderPlus"})}),(0,S.jsx)("button",{type:"button",className:"mm-icon-btn",title:"\u65B0\u5EFA\u6587\u6863","aria-label":"\u65B0\u5EFA\u6587\u6863","aria-haspopup":"menu",onClick:u=>{let k=u.currentTarget.getBoundingClientRect();ue(k.left,k.bottom+4,null)},children:(0,S.jsx)(Se,{name:"plus"})})]}),(0,S.jsxs)("label",{className:"mm-search",children:[(0,S.jsx)(Se,{name:"search",size:14}),(0,S.jsx)("input",{type:"search",placeholder:"\u641C\u7D22\u6587\u6863\u548C\u5185\u5BB9","aria-label":"\u641C\u7D22\u6587\u6863\u548C\u5185\u5BB9",value:n,onChange:u=>r(u.target.value),onKeyDown:u=>{u.key==="Escape"&&r("")}})]}),(0,S.jsxs)("div",{className:"mm-side-scroll",children:[e.error!==null?(0,S.jsxs)("div",{className:"mm-empty",children:["\u65E0\u6CD5\u8BFB\u53D6\u6587\u6863\u5217\u8868\uFF1A",e.error," ",(0,S.jsx)("button",{type:"button",className:"mm-btn",onClick:()=>{e.onRefresh()},children:"\u91CD\u8BD5"})]}):null,o!==null?(0,S.jsxs)("div",{className:"mm-section",children:[(0,S.jsxs)("div",{className:"mm-section-head",children:["\u641C\u7D22\u7ED3\u679C \xB7 ",o.length]}),o.length===0?(0,S.jsx)("div",{className:"mm-empty",children:"\u6CA1\u6709\u5339\u914D\u7684\u5185\u5BB9"}):o.map((u,k)=>(0,S.jsxs)("div",{className:"mm-hit",role:"button",tabIndex:0,onClick:()=>e.onOpen(u.docId,u.nodeId),onKeyDown:R=>{R.key==="Enter"&&e.onOpen(u.docId,u.nodeId)},children:[(0,S.jsx)("div",{className:"mm-hit-title",children:u.title}),u.nodeId!==null?(0,S.jsx)("div",{className:"mm-hit-snip",children:vt(u.snippet)}):null]},k))]}):J===null&&e.error===null?(0,S.jsx)("div",{className:"mm-empty",children:"\u52A0\u8F7D\u4E2D\u2026"}):(0,S.jsxs)(S.Fragment,{children:[_.length>0?(0,S.jsxs)("div",{className:"mm-section",children:[(0,S.jsx)("div",{className:"mm-section-head",children:"\u6536\u85CF"}),_.map((u,k)=>me(u,0,"fav-",k))]}):null,Pe.length>0?(0,S.jsxs)("div",{className:"mm-section",children:[(0,S.jsx)("div",{className:"mm-section-head"+(N==="top"?" mm-drop-into":""),...Ce(null,"top"),children:"\u6587\u4EF6\u5939"}),(()=>{let u=new Set;return Pe.map(k=>Le(k,0,u))})()]}):null,(0,S.jsxs)("div",{className:"mm-section",...Ce(null,"loose"),children:[(0,S.jsxs)("div",{className:"mm-section-head"+(N==="loose"?" mm-drop-into":""),children:[(0,S.jsx)("span",{className:"mm-grow",children:Pe.length>0?"\u672A\u5206\u7C7B":"\u6587\u6863"}),(0,S.jsxs)("button",{type:"button",className:"mm-sort-btn","aria-label":"\u6392\u5E8F\uFF1A"+Ut[D],"aria-haspopup":"menu",onClick:he,children:[Ut[D],(0,S.jsx)(Se,{name:"chevron",size:10})]})]}),$.length===0?(0,S.jsx)("div",{className:"mm-empty",children:le.length===0?"\u70B9\u51FB\u53F3\u4E0A\u89D2 + \u65B0\u5EFA\u6587\u6863":"\u6CA1\u6709\u672A\u5206\u7C7B\u7684\u6587\u6863"}):$.map(u=>me(u,0,"d-"))]}),L.length>0?(0,S.jsxs)("div",{className:"mm-section",children:[(0,S.jsxs)("div",{className:"mm-row",role:"button",tabIndex:0,"aria-expanded":m,onClick:()=>g(u=>!u),onKeyDown:u=>{u.key==="Enter"&&g(k=>!k)},children:[(0,S.jsx)(Se,{name:"trash",size:14}),(0,S.jsx)("span",{className:"mm-row-title",style:{color:"var(--mm-sub)"},children:"\u56DE\u6536\u7AD9"}),(0,S.jsx)("span",{className:"mm-row-time",children:L.length})]}),m?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)("div",{className:"mm-trash-note",children:[(0,S.jsxs)("span",{className:"mm-grow",children:[dr," \u5929\u540E\u81EA\u52A8\u6C38\u4E45\u5220\u9664"]}),(0,S.jsx)("button",{type:"button",className:"mm-link-btn mm-danger",onClick:()=>{P()},children:"\u6E05\u7A7A\u56DE\u6536\u7AD9"})]}),L.map(u=>(0,S.jsxs)("div",{className:"mm-row mm-indent mm-trashed",role:"button",tabIndex:0,title:"\u70B9\u51FB\u9884\u89C8",onClick:()=>T(u),onKeyDown:k=>{k.key==="Enter"&&T(u)},onContextMenu:k=>{k.preventDefault(),e.onMenu({x:k.clientX,y:k.clientY,items:[{label:"\u9884\u89C8",onSelect:()=>T(u)},{label:"\u6062\u590D",onSelect:()=>{ae(u)}},{kind:"sep"},{label:"\u6C38\u4E45\u5220\u9664",danger:!0,onSelect:()=>{x(u)}}]})},children:[(0,S.jsx)("span",{className:"mm-row-title",children:u.title}),(0,S.jsxs)("span",{className:"mm-row-time",children:["\u5269 ",Q(u)," \u5929"]}),(0,S.jsx)("button",{type:"button",className:"mm-btn mm-mini",onClick:k=>{k.stopPropagation(),ae(u)},children:"\u6062\u590D"})]},"t-"+u.id))]}):null]}):null]})]}),(0,S.jsxs)("div",{className:"mm-side-foot",children:[(0,S.jsxs)("button",{type:"button",className:"mm-btn",onClick:e.onImport,children:[(0,S.jsx)(Se,{name:"upload",size:14}),"\u5BFC\u5165"]}),(0,S.jsxs)("button",{type:"button",className:"mm-btn",onClick:e.onBackups,children:[(0,S.jsx)(Se,{name:"backup",size:14}),"\u5907\u4EFD"]})]})]})}function To(e){let[t,n]=(0,Ae.useState)(null),[r,o]=(0,Ae.useState)(null);(0,Ae.useEffect)(()=>{Ne.doc(e.meta.id).then(n,c=>o(it(c)))},[e.meta.id]);let i=t===null?[]:Ge(t,t.rootId,!1),l=60;return(0,S.jsxs)("div",{children:[(0,S.jsxs)("p",{style:{margin:"0 0 8px",color:"var(--mm-sub)"},children:["\u5220\u9664\u4E8E ",new Date(e.meta.trashedAt??0).toLocaleString(),t!==null?" \xB7 "+i.length+" \u4E2A\u8282\u70B9":""]}),(0,S.jsx)("div",{className:"mm-preview",children:r!==null?(0,S.jsxs)("div",{className:"mm-empty",children:["\u65E0\u6CD5\u8BFB\u53D6\uFF1A",r]}):t===null?(0,S.jsx)("div",{className:"mm-empty",children:"\u52A0\u8F7D\u4E2D\u2026"}):i.length===0?(0,S.jsx)("div",{className:"mm-empty",children:"\uFF08\u7A7A\u6587\u6863\uFF09"}):(0,S.jsxs)(S.Fragment,{children:[i.slice(0,l).map(c=>(0,S.jsxs)("div",{className:"mm-preview-row",style:{paddingLeft:c.depth*16},children:["\u2022 ",vt(t.nodes[c.id].text.split(`
|
|
20
|
+
`)[0]??"")]},c.id)),i.length>l?(0,S.jsxs)("div",{className:"mm-empty",children:["\u2026 \u8FD8\u6709 ",i.length-l," \u4E2A\u8282\u70B9"]}):null]})}),(0,S.jsxs)("div",{style:{display:"flex",gap:8,marginTop:12},children:[(0,S.jsx)("button",{type:"button",className:"mm-btn mm-primary",onClick:e.onRestore,children:"\u6062\u590D"}),(0,S.jsx)("button",{type:"button",className:"mm-btn mm-danger",onClick:e.onPurge,children:"\u6C38\u4E45\u5220\u9664"})]})]})}function Oo(e){let[t,n]=(0,Ae.useState)(e.value),r=(0,Ae.useRef)(!1),o=i=>{r.current||(r.current=!0,e.onDone(i))};return(0,S.jsx)("input",{autoFocus:!0,value:t,"aria-label":"\u6587\u6863\u540D\u79F0",onFocus:i=>i.currentTarget.select(),onClick:i=>i.stopPropagation(),onChange:i=>n(i.target.value),onBlur:()=>o(t),onKeyDown:i=>{i.stopPropagation(),!(i.nativeEvent.isComposing||i.keyCode===229)&&(i.key==="Enter"?o(t):i.key==="Escape"&&o(null))}})}var be=require("react");var Xt=class{past=[];future=[];lastKey=null;lastAt=0;runStart=0;limit;constructor(t=200){this.limit=t}record(t,n,r=null,o=Date.now()){this.future=[];let i=r!==null&&r===this.lastKey&&o-this.lastAt<1e3&&o-this.runStart<3e3;return this.lastKey=r,this.lastAt=o,i?!1:(this.runStart=o,this.past.push({state:t,selection:n}),this.past.length>this.limit&&this.past.shift(),!0)}breakMerge(){this.lastKey=null}undo(t,n){let r=this.past.pop();return r===void 0?null:(this.future.push({state:t,selection:n}),this.lastKey=null,r)}redo(t,n){let r=this.future.pop();return r===void 0?null:(this.past.push({state:t,selection:n}),this.lastKey=null,r)}canUndo(){return this.past.length>0}canRedo(){return this.future.length>0}clear(){this.past=[],this.future=[],this.lastKey=null}};var gr=800,hr=6e4;function br(e,t){let[n,r]=(0,be.useState)(null),[o,i]=(0,be.useState)(!1),[l,c]=(0,be.useState)(null),[d,a]=(0,be.useState)("saved"),[m,g]=(0,be.useState)(null),[D,b]=(0,be.useState)(null),[N,U]=(0,be.useState)(null),[,ge]=(0,be.useState)(0),[J,we]=(0,be.useState)(0),j=(0,be.useRef)(null),le=(0,be.useRef)({rev:0}),L=(0,be.useRef)(null),E=(0,be.useRef)(!1),B=(0,be.useRef)(null),w=(0,be.useRef)(void 0),_=(0,be.useRef)(0),$=(0,be.useRef)(!1),A=(0,be.useRef)(null),C=(0,be.useRef)(new Xt(200)),ve=(0,be.useRef)(0),ue=(0,be.useRef)(t);ue.current=t;let De=(0,be.useCallback)(async W=>{if(window.clearTimeout(w.current),w.current=void 0,B.current!==null){await B.current,E.current&&!$.current&&await De(W);return}let O=j.current;if(O===null||!E.current||$.current)return;let ce=le.current,me={...O,revision:ce.rev},Le=W&&JSON.stringify(me).length<hr;a("saving"),L.current=O;let he=(async()=>{try{let ae=await Ne.saveDoc(me,ce.rev,Le);if(ce.rev=ae.revision,ue.current(ae),Ct({kind:"doc",docId:ae.id,revision:ae.revision}),le.current!==ce)return;_.current=0,g(null),j.current===O?(E.current=!1,a("saved")):a("dirty")}catch(ae){if(le.current!==ce){console.warn("[dsh-mindmap] save of a closed document failed:",ae);return}ae instanceof ot&&ae.code==="conflict"&&ae.current!==void 0?($.current=!0,b(ae.current),a("conflict"),g(ae.message)):ae instanceof ot&&ae.code==="invalid_input"?($.current=!0,a("error"),g("\u4FDD\u5B58\u88AB\u62D2\u7EDD\uFF1A"+ae.message)):(a("error"),g((ae instanceof Error?ae.message:String(ae))+"\uFF0C\u7A0D\u540E\u81EA\u52A8\u91CD\u8BD5"),_.current=Math.min(_.current+1,6),window.clearTimeout(w.current),w.current=window.setTimeout(()=>{De(!1)},1e3*2**_.current))}})();B.current=he;try{await he}finally{B.current=null,L.current=null}E.current&&!$.current&&j.current!==O&&w.current===void 0&&(w.current=window.setTimeout(()=>{De(!1)},gr))},[]),Ke=(0,be.useCallback)(()=>De(!1),[De]);(0,be.useEffect)(()=>{let W=!0;if(window.clearTimeout(w.current),w.current=void 0,C.current.clear(),$.current=!1,E.current=!1,_.current=0,j.current=null,r(null),b(null),U(null),a("saved"),g(null),c(null),e===null){i(!1);return}return i(!0),Ne.doc(e).then(O=>{W&&(j.current=O,le.current={rev:O.revision},r(O),i(!1))},O=>{W&&(c(O instanceof Error?O.message:String(O)),i(!1))}),()=>{W=!1;let O=j.current,ce=le.current,me=B.current,Le=me!==null&&L.current===O;O!==null&&E.current&&!$.current&&!Le&&(async()=>{me!==null&&await me.catch(()=>{});try{let he=await Ne.saveDoc({...O,revision:ce.rev},ce.rev,JSON.stringify(O).length<hr);ce.rev=he.revision,ue.current(he),Ct({kind:"doc",docId:he.id,revision:he.revision})}catch(he){console.warn("[dsh-mindmap] flush on close failed:",he)}})(),le.current={rev:0}}},[e,J,De]),(0,be.useEffect)(()=>{let W=()=>{document.visibilityState==="hidden"&&E.current&&De(!0)},O=()=>{E.current&&De(!0)};return document.addEventListener("visibilitychange",W),window.addEventListener("pagehide",O),window.addEventListener("beforeunload",O),()=>{document.removeEventListener("visibilitychange",W),window.removeEventListener("pagehide",O),window.removeEventListener("beforeunload",O)}},[De]),(0,be.useEffect)(()=>{if(e===null)return;let W=!0,O=()=>!E.current&&!$.current&&B.current===null&&j.current!==null,ce=async he=>{if(!(!O()||he!==void 0&&he<=le.current.rev))try{let ae=await Ne.doc(e);if(!W||!O()||ae.id!==j.current?.id||ae.revision<=le.current.rev)return;le.current.rev=ae.revision,C.current.clear(),j.current=ae,r(ae),ue.current(ae),ge(x=>x+1)}catch(ae){console.warn("[dsh-mindmap] refetch failed:",ae)}},me=Bt(he=>{he.kind==="doc"&&he.docId===e&&ce(he.revision)}),Le=()=>{document.visibilityState==="visible"&&ce()};return document.addEventListener("visibilitychange",Le),()=>{W=!1,me(),document.removeEventListener("visibilitychange",Le)}},[e,J]);let Ie=(0,be.useCallback)(W=>{j.current=W,r(W),E.current=!0,$.current||(a(O=>O==="saving"?O:"dirty"),window.clearTimeout(w.current),w.current=window.setTimeout(()=>{De(!1)},gr))},[De]),ke=(0,be.useCallback)((W,O)=>{ve.current++,U({id:W,caret:O,nonce:ve.current})},[]),$e=(0,be.useCallback)((W,O={})=>{let ce=j.current;ce===null||W===ce||(O.noHistory!==!0&&C.current.record(ce,A.current,O.key??null),Ie(W),O.focus!==void 0&&ke(O.focus.id,O.focus.caret),ge(me=>me+1))},[Ie,ke]),ye=(0,be.useCallback)(W=>{let O=j.current;if(O===null)return;let ce=W==="undo"?C.current.undo(O,A.current):C.current.redo(O,A.current);if(ce===null)return;Ie({...ce.state,revision:O.revision});let me=ce.selection;me!==null&&ce.state.nodes[me.nodeId]!==void 0&&ke(me.nodeId,me.caret),ge(Le=>Le+1)},[Ie,ke]),Ce=(0,be.useCallback)(W=>{b(O=>(O===null||($.current=!1,le.current.rev=O.revision,g(null),W==="theirs"?(C.current.clear(),E.current=!1,j.current=O,r(O),a("saved")):(E.current=!0,a("dirty"),window.setTimeout(()=>{De(!1)},0))),null))},[De]);return{doc:n,loading:o,loadError:l,status:d,statusMessage:m,conflict:D,focus:N,canUndo:C.current.canUndo(),canRedo:C.current.canRedo(),apply:$e,setSelection:W=>{A.current=W},requestFocus:ke,breakMerge:()=>C.current.breakMerge(),undo:()=>ye("undo"),redo:()=>ye("redo"),flush:Ke,resolveConflict:Ce,reload:()=>we(W=>W+1)}}var ie=require("react");function xr(e,t,n){let r=0;for(;t-r-1>=0&&e[t-r-1]===n;)r++;return r}function vr(e,t,n){let r=0;for(;t+r<e.length&&e[t+r]===n;)r++;return r}function qt(e,t){return e==="*"?t%2===1:t>=e.length}function kr(e,t,n,r){let o=r[0],i=r.length,l=xr(e,t,o),c=vr(e,n,o);if(qt(r,l)&&qt(r,c)&&l>=i&&c>=i)return{text:e.slice(0,t-i)+e.slice(t,n)+e.slice(n+i),start:t-i,end:n-i};if(n-t>=2*i){let d=e.slice(t,n),a=vr(d,0,o),m=xr(d,d.length,o);if(a<d.length&&qt(r,a)&&qt(r,m)&&a>=i&&m>=i)return{text:e.slice(0,t)+d.slice(i,d.length-i)+e.slice(n),start:t,end:n-2*i}}return{text:e.slice(0,t)+r+e.slice(t,n)+r+e.slice(n),start:t+i,end:n+i}}function Mr(e,t){let n=e[t],r=e[0];return n===void 0||r===void 0||n.top<=r.top+1}function Dr(e,t){let n=e[t],r=e[e.length-1];return n===void 0||r===void 0||n.top>=r.top-1}function Er(e,t,n){if(e.length===0)return 0;let r=t==="first"?e[0].top:e[e.length-1].top,o=t==="first"?0:e.length-1,i=1/0;for(let l=0;l<e.length;l++){let c=e[l];if(Math.abs(c.top-r)>1)continue;let d=Math.abs(c.left-n);d<i&&(i=d,o=l)}return o}var Ro=/(?:^|(?<=\s))#[^\s#]{1,40}/g;function yr(e){return[...e.matchAll(Ro)].map(t=>t[0])}function Ao(e,t,n){let r=n.toLowerCase();return yr(e).some(o=>o.toLowerCase()===r)||t!==void 0&&yr(t).some(o=>o.toLowerCase()===r)}function Sr(e,t,n,r=[]){let o=Ge(e,t,!1),i=new Set,l=d=>{let a=d;for(;a!==void 0&&a!==t&&!i.has(a);)i.add(a),a=Kt(e,a)};for(let d of o){let a=e.nodes[d.id];Ao(a.text,a.note,n)&&l(d.id)}let c=new Set(o.map(d=>d.id));for(let d of r)c.has(d)&&l(d);return o.filter(d=>i.has(d.id))}function Lo(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function wr(e,t,n){if(t.length===0)return[];let r=new RegExp(Lo(t),n?"gu":"giu"),o=[];for(let i of e.matchAll(r))i[0].length>0&&o.push([i.index??0,(i.index??0)+i[0].length]);return o}function Nr(e,t,n,r){let o=[];if(n.length===0)return o;for(let i of Ge(e,t,!1)){let l=e.nodes[i.id];for(let[c,d]of wr(l.text,n,r))o.push({id:i.id,field:"text",start:c,end:d});if(l.note!==void 0)for(let[c,d]of wr(l.note,n,r))o.push({id:i.id,field:"note",start:c,end:d})}return o}function un(e,t,n){let r=e,o=[...t].sort((i,l)=>l[0]-i[0]);for(let[i,l]of o)r=r.slice(0,i)+n+r.slice(l);return r}function Ir(e,t,n){let r=e.nodes[t.id];if(r===void 0)return e;let o=t.field==="text"?r.text:r.note??"";if(t.end>o.length)return e;let i=un(o,[[t.start,t.end]],n);return t.field==="text"?qe(e,t.id,i):dt(e,t.id,i)}function Cr(e,t,n){let r=new Map;for(let i of t){let l=i.id+"\0"+i.field,c=r.get(l);c===void 0&&(c=[],r.set(l,c)),c.push([i.start,i.end])}let o=e;for(let[i,l]of r){let[c,d]=i.split("\0"),a=o.nodes[c];a!==void 0&&(d==="text"?o=qe(o,c,un(a.text,l,n)):o=dt(o,c,un(a.note??"",l,n)))}return o}function Tr(e,t,n){let r=[],o=Kt(e,n);for(;o!==void 0&&o!==t;)e.nodes[o]?.collapsed===!0&&r.push(o),o=Kt(e,o);return r}function Vt(e,t,n){let r=e.indexOf(t),o=e.indexOf(n);return r===-1||o===-1?o===-1?[]:[n]:e.slice(Math.min(r,o),Math.max(r,o)+1)}var Yt="application/x-dsh-mindmap+json";var Ko=["font-family","font-size","font-weight","font-style","font-variant","font-stretch","letter-spacing","word-spacing","line-height","text-transform","text-indent","tab-size","word-break","overflow-wrap","direction","padding-top","padding-right","padding-bottom","padding-left","border-top-width","border-right-width","border-bottom-width","border-left-width"];function mn(e){let t=e.value;if(t.length>5e3||typeof getComputedStyle!="function")return null;let n=e.ownerDocument,r=getComputedStyle(e),o=n.createElement("div"),i=o.style;for(let a of Ko)i.setProperty(a,r.getPropertyValue(a));i.position="absolute",i.visibility="hidden",i.pointerEvents="none",i.left="-99999px",i.top="0",i.boxSizing="border-box",i.borderStyle="solid",i.borderColor="transparent",i.width=e.offsetWidth+"px",i.height="auto",i.overflow="hidden",i.whiteSpace="pre-wrap";let l=[],c=[];for(let a=0;a<t.length;a++){let m=n.createElement("span"),g=t.charCodeAt(a),D=g>=55296&&g<=56319&&a+1<t.length;m.textContent=D?t.slice(a,a+2):t[a],o.appendChild(m),l.push(m),c.push(l.length-1),D&&(c.push(l.length-1),a++)}let d=n.createElement("span");d.textContent="\u200B",o.appendChild(d),l.push(d),c.push(l.length-1),n.body.appendChild(o);try{let a=parseFloat(r.fontSize),m=parseFloat(r.lineHeight)||(Number.isFinite(a)?a*1.2:20),g=parseFloat(r.paddingTop)||0,D=l.map(b=>{let N=b.offsetTop+b.offsetHeight/2-g;return{top:Math.max(0,Math.floor(N/m))*m,left:b.offsetLeft}});return c.map(b=>D[b])}finally{o.remove()}}var Fo=2e4;function Or(e,t){return Lt(e,We(e,t))}function pn(e,t){let n=We(e,t),r={...e,nodes:{...e.nodes,__copy:{id:"__copy",text:"",children:n}}};return Ht(r,"__copy",null)}function Rr(e,t,n){if(t>200||typeof e!="object"||e===null||Array.isArray(e)||++n.n>Fo)return null;let r=e;if(typeof r.text!="string")return null;let o=r.children===void 0?[]:r.children;if(!Array.isArray(o))return null;let i={text:r.text.replace(/\r\n?/g,`
|
|
21
|
+
`),children:[]};typeof r.checked=="boolean"&&(i.checked=r.checked),typeof r.note=="string"&&r.note.length>0&&(i.note=r.note.replace(/\r\n?/g,`
|
|
22
|
+
`));for(let l of o){let c=Rr(l,t+1,n);if(c===null)return null;i.children.push(c)}return i}function zo(e){let t;try{t=JSON.parse(e)}catch{return null}if(!Array.isArray(t)||t.length===0)return null;let n={n:0},r=[];for(let o of t){let i=Rr(o,1,n);if(i===null)return null;r.push(i)}return r}function fn(e,t){let n=e(Yt);if(n.length>0){let i=zo(n);if(i!==null)return i}let r=e("text/plain").replace(/\r\n?/g,`
|
|
23
|
+
`).replace(/\n+$/,"");if(r.trim().length===0||t&&!r.includes(`
|
|
24
|
+
`))return null;let o=Wn(r);return o.length===0||t&&o.length===1&&o[0].children.length===0&&o[0].note===void 0?null:o}var xe=require("react/jsx-runtime"),gn=24,_o="application/x-dsh-mindmap-node",Ho="`",Bo={};function $o(e,t,n,r){let o=e.ownerDocument,i=null,l=0;if(typeof o.caretPositionFromPoint=="function"){let a=o.caretPositionFromPoint(t,n);a!==null&&(i=a.offsetNode,l=a.offset)}else if(typeof o.caretRangeFromPoint=="function"){let a=o.caretRangeFromPoint(t,n);a!==null&&(i=a.startContainer,l=a.startOffset)}if(i===null||!e.contains(i)||e.textContent!==r)return"end";let c=o.createTreeWalker(e,NodeFilter.SHOW_TEXT),d=0;for(let a=c.nextNode();a!==null;a=c.nextNode()){if(a===i)return d+l;d+=a.textContent?.length??0}return"end"}var Gt=e=>e.nativeEvent.isComposing||e.keyCode===229,jo=(0,ie.memo)(function(t){let{node:n,depth:r,ctl:o}=t,i=n.children.length>0,l=(0,ie.useRef)(null),c=t.tags?o.tag:void 0,d=n.note??"",a="mm-node"+(n.checked===!0?" mm-done":"")+(t.selected?" mm-selected":"")+(t.drop!==null?" mm-drop-"+t.drop:"")+(t.dragging?" mm-dragging":"");return(0,xe.jsxs)("div",{className:a,"data-node-id":n.id,role:"treeitem","aria-level":r+1,"aria-expanded":i?!n.collapsed:void 0,"aria-selected":t.selected,tabIndex:t.tabStop?0:-1,style:{paddingLeft:r*gn,"--mm-drop-left":r*gn+40+"px"},onDragOver:m=>o.dragOver(m,n.id,r),onDrop:o.drop,onContextMenu:m=>o.menu(m,n.id),children:[(0,xe.jsx)("button",{type:"button",tabIndex:-1,className:"mm-fold"+(n.collapsed===!0?" mm-closed mm-show":""),style:{visibility:i?"visible":"hidden"},"aria-label":n.collapsed===!0?"\u5C55\u5F00":"\u6298\u53E0",onClick:()=>o.toggleFold(n.id),children:(0,xe.jsx)(Se,{name:"chevron",size:14})}),(0,xe.jsx)("button",{type:"button",tabIndex:-1,className:"mm-bullet"+(i&&n.collapsed===!0?" mm-collapsed":""),draggable:!0,title:"\u70B9\u51FB\u805A\u7126\uFF0CShift+\u70B9\u51FB\u6269\u5C55\u9009\u62E9\uFF0C\u62D6\u52A8\u79FB\u52A8","aria-label":"\u805A\u7126\u6B64\u8282\u70B9",onClick:m=>o.bulletClick(m,n.id),onDragStart:m=>o.dragStart(m,n.id),onDragEnd:o.dragEnd,children:(0,xe.jsx)("span",{className:"mm-dot"})}),typeof n.checked=="boolean"?(0,xe.jsx)("input",{type:"checkbox",className:"mm-check",tabIndex:-1,checked:n.checked,"aria-label":"\u5B8C\u6210",onChange:()=>o.toggleCheck(n.id)}):null,(0,xe.jsxs)("div",{className:"mm-body",children:[t.editing==="text"?(0,xe.jsx)("textarea",{ref:o.bindInput,className:"mm-input",rows:1,value:n.text,spellCheck:!1,"aria-label":"\u8282\u70B9\u5185\u5BB9",onChange:m=>o.change(n.id,m.target.value,m.target.selectionStart),onKeyDown:m=>o.key(m,n.id),onSelect:m=>o.select(n.id,m.currentTarget.selectionStart),onPaste:m=>o.paste(m,n.id),onBlur:()=>o.blur(n.id)}):(0,xe.jsx)("div",{ref:l,className:"mm-text",onMouseDown:m=>{m.button===0&&(m.preventDefault(),o.startEdit(n.id,l.current!==null?$o(l.current,m.clientX,m.clientY,n.text):"end"))},children:vt(n.text,"i",{marks:t.marks.text,onTag:c})}),t.editing==="note"?(0,xe.jsx)("textarea",{ref:o.bindInput,className:"mm-note mm-note-input",rows:1,value:d,spellCheck:!1,"aria-label":"\u5907\u6CE8",onChange:m=>o.noteChange(n.id,m.target.value),onKeyDown:m=>o.noteKey(m,n.id),onBlur:()=>o.noteBlur(n.id)}):d.length>0?(0,xe.jsx)("div",{className:"mm-note",onMouseDown:m=>{m.button===0&&(m.preventDefault(),o.startNote(n.id))},children:vt(d,"n",{marks:t.marks.note,onTag:c})}):null]})]})});function Ar(e){let{state:t,doc:n,rootId:r}=e,o=pt(),[i,l]=(0,ie.useState)(null),[c,d]=(0,ie.useState)("text"),[a,m]=(0,ie.useState)(null),[g,D]=(0,ie.useState)(null),[b,N]=(0,ie.useState)(null),[U,ge]=(0,ie.useState)(null),J=(0,ie.useRef)(null);J.current=i;let we=(0,ie.useRef)(c);we.current=c;let j=(0,ie.useRef)(a);j.current=a;let le=(0,ie.useRef)(null),L=(0,ie.useRef)(null),E=(0,ie.useRef)(null),B=(0,ie.useRef)(null),w=(0,ie.useRef)(null),_=(0,ie.useRef)(null),$=(0,ie.useRef)(null),A=(0,ie.useRef)(n);A.current=n;let C=(0,ie.useRef)(e);C.current=e;let ve=(0,ie.useRef)(o);ve.current=o;let ue=e.tagFilter??null,De=ue!==null?i:null,Ke=(0,ie.useMemo)(()=>ue!==null?Sr(n,r,ue,De!==null?[De]:[]):Ge(n,r,!0),[n,r,ue,De]),Ie=(0,ie.useMemo)(()=>Ke.map(p=>p.id),[Ke]),ke=(0,ie.useRef)(Ie);ke.current=Ie;let $e=(0,ie.useMemo)(()=>new Set(a!==null?Vt(Ie,a.anchor,a.head):[]),[a,Ie]),ye=(0,ie.useMemo)(()=>g!==null&&g.query.length>0?Nr(n,r,g.query,g.cs):[],[n,r,g?.query,g?.cs]),Ce=g!==null&&ye.length>0?Math.min(g.index,ye.length-1):-1,W=Ce>=0?ye[Ce]:void 0,O=(0,ie.useMemo)(()=>{let p=new Map;return ye.forEach((X,K)=>{let de=p.get(X.id);de===void 0&&(de={},p.set(X.id,de)),(de[X.field]??=[]).push({start:X.start,end:X.end,current:K===Ce})}),p},[ye,Ce]),ce=W!==void 0?W.id+":"+W.field+":"+W.start:null,me=(0,ie.useRef)(null);(0,ie.useEffect)(()=>{if(W===void 0)return;let p=A.current,X=Tr(p,C.current.rootId,W.id);X.length>0&&C.current.state.apply(Yn(p,X,(K,de)=>Ze(K,de,!1)),{noHistory:!0})},[ce]),(0,ie.useLayoutEffect)(()=>{if(ce===null){me.current=null;return}if(me.current===ce||W===void 0)return;let p=_.current?.querySelector('[data-node-id="'+W.id+'"]');if(p==null)return;me.current=ce,(p.querySelector(".mm-find-cur")??p).scrollIntoView({block:"nearest"})});let Le=(0,ie.useRef)(e.findRequest);(0,ie.useEffect)(()=>{if(e.findRequest===void 0||e.findRequest===Le.current)return;Le.current=e.findRequest;let p=w.current,X=p!==null&&p.selectionStart!==p.selectionEnd?p.value.slice(p.selectionStart,p.selectionEnd):"",K=X.includes(`
|
|
25
|
+
`)?"":X;m(null),D(de=>de===null?{query:K,replace:"",cs:!1,index:0}:K.length>0?{...de,query:K,index:0}:de),window.requestAnimationFrame(()=>{let de=$.current;de!==null&&(de.focus(),de.select())})},[e.findRequest]),(0,ie.useEffect)(()=>{let p=t.focus;p===null||n.nodes[p.id]===void 0||(le.current=p.caret,m(null),d("text"),l(p.id),J.current===p.id&&we.current==="text"&&he())},[t.focus]);function he(){let p=w.current;if(p===null)return;document.activeElement!==p&&p.focus({preventScroll:!0});let X=L.current;if(X!==null&&(L.current=null,X.id===J.current&&we.current==="text")){let de=mn(p);if(de!==null){let je=Er(de,X.line,X.x-p.getBoundingClientRect().left);p.setSelectionRange(je,je),le.current=null}}let K=le.current;if(K!==null){let de=K==="end"?p.value.length:K==="start"?0:Math.min(K,p.value.length);p.setSelectionRange(de,de),le.current=null}p.scrollIntoView({block:"nearest"})}(0,ie.useLayoutEffect)(()=>{let p=w.current;p!==null&&(p.style.height="0px",p.style.height=p.scrollHeight+"px");let X=E.current;X!==null&&p!==null&&J.current===X.id&&p.value===X.text&&(E.current=null,p.setSelectionRange(X.start,X.end))}),(0,ie.useLayoutEffect)(()=>{i!==null&&he()},[i,c]),(0,ie.useLayoutEffect)(()=>{if(a===null)return;if(!ke.current.includes(a.head)){m(null);return}if(!ke.current.includes(a.anchor)){m({anchor:a.head,head:a.head});return}let p=_.current?.querySelector('[data-node-id="'+a.head+'"]');p!=null&&(document.activeElement!==p&&p.focus({preventScroll:!0}),p.scrollIntoView({block:"nearest"}))},[a]);let ae=(0,ie.useMemo)(()=>{let p=(h,v,H)=>{C.current.state.apply(h,{focus:v,key:H})},X=h=>{let v=ke.current,H=v.indexOf(h);return H===-1?$n(A.current,C.current.rootId,h):{prev:v[H-1],next:v[H+1]}},K=(h,v,H="text")=>{h!==void 0&&(le.current=v,m(null),d(H),l(h),J.current===h&&we.current===H&&he())},de=(h,v)=>{let H=A.current,z=H.nodes[h];z===void 0||z.children.length===0||z.collapsed===!0===v||C.current.state.apply(Ze(H,h,v),{noHistory:!0})},je=h=>ve.current.toast(h),Qe=(h,v)=>{let H=A.current,z=ke.current,Y=qn(H,h);if(Y===H)return;let q=z.indexOf(h[0]),Ee=z.indexOf(h[h.length-1]),oe;for(let te=q-1;te>=0&&oe===void 0;te--)Y.nodes[z[te]]!==void 0&&(oe=z[te]);for(let te=Ee+1;te<z.length&&oe===void 0;te++)Y.nodes[z[te]]!==void 0&&(oe=z[te]);p(Y),m(oe!==void 0?{anchor:oe,head:oe}:null),v!==null&&ve.current.toast(v,{label:"\u64A4\u9500",onClick:()=>C.current.state.undo()})},gt=(h,v)=>{let H=A.current,z={text:pn(H,h),json:JSON.stringify(Or(H,h))};B.current=z;let Y=!1;try{Y=document.execCommand("copy")}catch{Y=!1}(!Y||B.current!==null)&&(B.current=null,navigator.clipboard?.writeText(z.text).catch(()=>je("\u65E0\u6CD5\u5199\u5165\u526A\u8D34\u677F")));let q=We(H,h).length;v?Qe(h,"\u5DF2\u526A\u5207 "+q+" \u4E2A\u8282\u70B9"):je("\u5DF2\u590D\u5236 "+q+" \u4E2A\u8282\u70B9")};return{startEdit(h,v){K(h,v)},startNote(h){K(h,"end","note")},toggleFold(h){let v=A.current;C.current.state.apply(Ze(v,h,v.nodes[h]?.collapsed!==!0),{noHistory:!0})},toggleCheck(h){p(xt(A.current,h))},bulletClick(h,v){if(h.shiftKey){h.preventDefault();let H=j.current,z=H!==null?H.anchor:J.current??v;l(null),m({anchor:z,head:v});return}C.current.onZoom(v)},tag(h){C.current.onTagFilter?.(h)},bindInput(h){w.current=h},change(h,v,H){C.current.state.setSelection({nodeId:h,caret:H}),p(qe(A.current,h,v),void 0,"text:"+h)},noteChange(h,v){p(dt(A.current,h,v.replace(/\r\n?/g,`
|
|
26
|
+
`)),void 0,"note:"+h)},select(h,v){C.current.state.setSelection({nodeId:h,caret:v})},blur(h){C.current.state.breakMerge(),window.setTimeout(()=>{J.current===h&&document.activeElement!==w.current&&l(null)},0)},noteBlur(h){let v=A.current,H=v.nodes[h]?.note;H!==void 0&&H.trim().length===0&&p(dt(v,h,""),void 0,"note:"+h),C.current.state.breakMerge(),window.setTimeout(()=>{J.current===h&&we.current==="note"&&document.activeElement!==w.current&&(l(null),d("text"))},0)},noteKey(h,v){if(Gt(h))return;let H=h.ctrlKey||h.metaKey,z=h.key,Y=()=>{h.preventDefault(),h.stopPropagation()};if(H&&!h.altKey&&(z==="z"||z==="Z")){Y(),h.shiftKey?C.current.state.redo():C.current.state.undo();return}if(H&&!h.altKey&&(z==="y"||z==="Y")){Y(),C.current.state.redo();return}if(z==="Escape"||z==="Enter"&&h.shiftKey&&!H&&!h.altKey){Y();let q=A.current,Ee=q.nodes[v]?.note;Ee!==void 0&&Ee.trim().length===0&&p(dt(q,v,""),void 0,"note:"+v),C.current.state.breakMerge(),K(v,"end","text")}},key(h,v){if(Gt(h))return;let H=h.currentTarget,z=A.current,Y=C.current.rootId,q=H.selectionStart,Ee=H.selectionEnd,oe=H.value,te=h.ctrlKey||h.metaKey,V=h.key,pe=()=>{h.preventDefault(),h.stopPropagation()};if(C.current.state.setSelection({nodeId:v,caret:q}),te&&!h.altKey&&(V==="z"||V==="Z")){pe(),h.shiftKey?C.current.state.redo():C.current.state.undo();return}if(te&&!h.altKey&&(V==="y"||V==="Y")){pe(),C.current.state.redo();return}if(te&&h.shiftKey&&!h.altKey&&V==="Backspace"){pe();let{prev:ne,next:Ue}=X(v),Xe=rt(z,v);if(Xe===z)return;ne!==void 0&&Xe.nodes[ne]!==void 0?p(Xe,{id:ne,caret:"end"}):Ue!==void 0&&Xe.nodes[Ue]!==void 0?p(Xe,{id:Ue,caret:0}):(p(Xe),l(null));return}let Ve=V.length===1?V.toLowerCase():V,et=!te||h.altKey?null:!h.shiftKey&&Ve==="b"?"**":!h.shiftKey&&Ve==="i"?"*":!h.shiftKey&&Ve==="e"?Ho:h.shiftKey&&Ve==="s"?"~~":null;if(et!==null){pe();let ne=kr(oe,q,Ee,et);E.current={id:v,text:ne.text,start:ne.start,end:ne.end},C.current.state.breakMerge(),p(qe(z,v,ne.text));return}if(te&&!h.altKey&&!h.shiftKey&&(V==="ArrowUp"||V==="ArrowDown")){pe(),de(v,V==="ArrowUp");return}if(te&&V==="."){pe(),de(v,z.nodes[v]?.collapsed!==!0);return}if(V==="Enter"&&te){pe(),p(xt(z,v),{id:v,caret:q});return}if(V==="Enter"&&h.altKey){pe(),p(qe(z,v,oe.slice(0,q)+`
|
|
27
|
+
`+oe.slice(Ee)),{id:v,caret:q+1},"text:"+v);return}if(V==="Enter"&&h.shiftKey){pe(),K(v,"end","note");return}if(V==="Enter"){pe();let ne=q!==Ee?qe(z,v,oe.slice(0,q)+oe.slice(Ee)):z,Ue=Fn(ne,v,q);p(Ue.doc,{id:Ue.focusId,caret:Ue.caret});return}if(V==="Tab"&&!te&&!h.altKey){pe();let ne=h.shiftKey?at(z,v,Y):Ft(z,v);ne!==z&&p(ne,{id:v,caret:q});return}if(V==="Escape"){pe(),C.current.state.breakMerge(),l(null),m({anchor:v,head:v});return}if(h.altKey&&!te&&(V==="ArrowUp"||V==="ArrowDown")){pe();let ne=ct(z,v,V==="ArrowUp"?-1:1,Y);ne!==z&&p(ne,{id:v,caret:q});return}if(h.altKey&&!te&&V==="ArrowRight"){pe(),C.current.onZoom(v);return}if(h.altKey&&!te&&V==="ArrowLeft"){if(pe(),Y!==z.rootId){let ne=bt(z,Y);C.current.onZoom(ne[ne.length-1]??z.rootId)}return}if(!(h.altKey||te||h.shiftKey)){if(V==="Backspace"&&q===0&&Ee===0){let ne=zn(z,v,X(v).prev);ne!==null&&(pe(),p(ne.doc,{id:ne.focusId,caret:ne.caret}));return}if(V==="Delete"&&q===oe.length&&Ee===oe.length){let ne=_n(z,v);ne!==null&&(pe(),p(ne.doc,{id:ne.focusId,caret:ne.caret}));return}if((V==="ArrowUp"||V==="ArrowDown")&&q===Ee){let ne=V==="ArrowUp",Ue=mn(H);if(!(Ue!==null?ne?Mr(Ue,q):Dr(Ue,q):ne?oe.lastIndexOf(`
|
|
28
|
+
`,q-1)===-1:oe.indexOf(`
|
|
29
|
+
`,q)===-1))return;let st=ne?X(v).prev:X(v).next;if(st===void 0){let I=C.current.onFocusTitle;ne&&I!==void 0&&ke.current[0]===v&&(pe(),C.current.state.breakMerge(),l(null),I());return}pe();let ht=q-(oe.lastIndexOf(`
|
|
30
|
+
`,q-1)+1),s=z.nodes[st].text,f;if(ne){let I=s.lastIndexOf(`
|
|
31
|
+
`)+1;f=Math.min(I+ht,s.length)}else{let I=s.indexOf(`
|
|
32
|
+
`);f=Math.min(ht,I===-1?s.length:I)}let y=Ue?.[q];L.current=y!==void 0?{id:st,line:ne?"last":"first",x:H.getBoundingClientRect().left+y.left}:null,K(st,f);return}if(V==="ArrowLeft"&&q===0&&Ee===0){let ne=X(v).prev;ne!==void 0&&(pe(),K(ne,"end"));return}if(V==="ArrowRight"&&q===oe.length&&Ee===oe.length){let ne=X(v).next;ne!==void 0&&(pe(),K(ne,"start"))}}},paste(h,v){let H=fn(q=>h.clipboardData.getData(q),!0);if(H===null)return;h.preventDefault();let z=h.currentTarget,Y=jn(A.current,v,z.selectionStart,z.selectionEnd,H);C.current.state.breakMerge(),p(Y.doc,{id:Y.focusId,caret:Y.caret})},treeKey(h){if(Gt(h))return;let v=j.current,H=h.target;if(v===null||!H.classList.contains("mm-node"))return;let z=A.current,Y=C.current.rootId,q=ke.current,Ee=Vt(q,v.anchor,v.head);if(Ee.length===0)return;let oe=h.ctrlKey||h.metaKey,te=h.key,V=te.length===1?te.toLowerCase():te,pe=()=>{h.preventDefault(),h.stopPropagation()};if(oe&&!h.altKey&&V==="z"){pe(),h.shiftKey?C.current.state.redo():C.current.state.undo();return}if(oe&&!h.altKey&&V==="y"){pe(),C.current.state.redo();return}if(oe&&!h.altKey&&!h.shiftKey&&V==="a"){pe(),q.length>0&&m({anchor:q[0],head:q[q.length-1]});return}if(oe&&!h.altKey&&(V==="c"||V==="x")){pe(),gt(Ee,V==="x");return}if(te==="Escape"){pe(),m(null),H.blur();return}if(te==="ArrowUp"||te==="ArrowDown"){let Ve=te==="ArrowUp"?-1:1;if(h.altKey&&!oe){pe();let ne=Vn(z,Ee,Ve,Y);ne!==z&&p(ne),m({...v});return}if(oe)return;pe();let et=q[q.indexOf(v.head)+Ve];et!==void 0&&m(h.shiftKey?{anchor:v.anchor,head:et}:{anchor:et,head:et});return}if((te==="Enter"||te==="F2")&&!oe&&!h.altKey&&!h.shiftKey){pe(),K(v.head,"end");return}if(te==="Tab"&&!oe&&!h.altKey){pe();let Ve=h.shiftKey?Xn(z,Ee,Y):Un(z,Ee);Ve!==z&&p(Ve),m({...v});return}(te==="Delete"||te==="Backspace")&&!oe&&!h.altKey&&(pe(),Qe(Ee,"\u5DF2\u5220\u9664 "+We(z,Ee).length+" \u4E2A\u8282\u70B9"))},menu(h,v){h.preventDefault();let H=C.current,z=A.current,Y=z.nodes[v],q=(oe,te=v)=>{let V=oe();V!==A.current&&p(V,{id:te,caret:"end"})},Ee=(oe,te)=>{navigator.clipboard.writeText(oe).then(()=>o.toast(te),()=>o.toast("\u65E0\u6CD5\u5199\u5165\u526A\u8D34\u677F"))};H.onMenu({x:h.clientX,y:h.clientY,items:[{label:"\u5728\u4E0B\u65B9\u6DFB\u52A0\u8282\u70B9",shortcut:"Enter",onSelect:()=>{let oe=Pt(A.current,v);p(oe.doc,{id:oe.focusId,caret:0})}},{label:"\u6DFB\u52A0\u5B50\u8282\u70B9",onSelect:()=>{let oe=tt(A.current,v,Y.children.length);p(oe.doc,{id:oe.focusId,caret:0})}},{label:(Y.note??"").length>0?"\u7F16\u8F91\u5907\u6CE8":"\u6DFB\u52A0\u5907\u6CE8",shortcut:"Shift+Enter",onSelect:()=>K(v,"end","note")},{kind:"sep"},{label:"\u7F29\u8FDB",shortcut:"Tab",onSelect:()=>q(()=>Ft(A.current,v))},{label:"\u53D6\u6D88\u7F29\u8FDB",shortcut:"Shift+Tab",onSelect:()=>q(()=>at(A.current,v,H.rootId))},{label:"\u4E0A\u79FB",shortcut:"Alt+\u2191",onSelect:()=>q(()=>ct(A.current,v,-1,H.rootId))},{label:"\u4E0B\u79FB",shortcut:"Alt+\u2193",onSelect:()=>q(()=>ct(A.current,v,1,H.rootId))},{kind:"sep"},{label:Y.children.length===0?"\u6298\u53E0\uFF08\u65E0\u5B50\u8282\u70B9\uFF09":Y.collapsed===!0?"\u5C55\u5F00":"\u6298\u53E0",shortcut:Y.collapsed===!0?"Ctrl+\u2193":"Ctrl+\u2191",disabled:Y.children.length===0,onSelect:()=>de(v,Y.collapsed!==!0)},{label:typeof Y.checked=="boolean"?"\u53D6\u6D88\u5F85\u529E":"\u8BBE\u4E3A\u5F85\u529E",onSelect:()=>q(()=>Hn(A.current,v))},{label:Y.checked===!0?"\u6807\u8BB0\u4E3A\u672A\u5B8C\u6210":"\u6807\u8BB0\u4E3A\u5B8C\u6210",shortcut:"Ctrl+Enter",onSelect:()=>q(()=>xt(A.current,v))},{label:"\u805A\u7126\u6B64\u8282\u70B9",shortcut:"Alt+\u2192",onSelect:()=>H.onZoom(v)},{kind:"sep"},{label:"\u590D\u5236\u4E3A Markdown",onSelect:()=>Ee(pn(z,[v]),"\u5DF2\u590D\u5236 Markdown\uFF08\u542B\u5B50\u8282\u70B9\uFF09")},{label:"\u590D\u5236\u6587\u672C",onSelect:()=>Ee(Y.text,"\u5DF2\u590D\u5236")},{kind:"sep"},{label:Y.children.length>0?"\u5220\u9664\u8282\u70B9\u53CA\u5176\u5B50\u8282\u70B9":"\u5220\u9664\u8282\u70B9",shortcut:"Ctrl+Shift+\u232B",danger:!0,onSelect:()=>{let{prev:oe,next:te}=X(v),V=rt(A.current,v);H.state.apply(V,oe!==void 0&&V.nodes[oe]!==void 0?{focus:{id:oe,caret:"end"}}:te!==void 0&&V.nodes[te]!==void 0?{focus:{id:te,caret:0}}:{}),o.toast("\u5DF2\u5220\u9664\uFF0C\u53EF\u6309 Ctrl+Z \u64A4\u9500")}}]})},dragStart(h,v){let H=A.current;h.dataTransfer.effectAllowed="move",h.dataTransfer.setData(_o,v),h.dataTransfer.setData("text/plain",Lt(H,[v]).map(Y=>Y.text).join(`
|
|
33
|
+
`));let z=h.currentTarget.closest(".mm-node");z!==null&&h.dataTransfer.setDragImage(z,20,15),x.current=v,ge(v),l(null),m(null)},dragOver(h,v,H){let z=x.current;if(z===null)return;let Y=h.currentTarget.getBoundingClientRect(),q=(h.clientY-Y.top)/Y.height,Ee=h.clientX-Y.left-H*gn,oe=A.current,te=oe.nodes[v],V=q<.3?"before":q>.7?"after":"inside";if(V==="after"&&Ee>64&&(te.children.length===0||te.collapsed===!0)&&(V="inside"),V==="after"&&te.children.length>0&&te.collapsed!==!0&&(V="inside"),!St(oe,z,v,V)){P.current=null,N(null);return}P.current={id:v,pos:V},h.preventDefault(),h.dataTransfer.dropEffect="move",N(pe=>pe?.id===v&&pe.pos===V?pe:{id:v,pos:V})},drop(h){let v=x.current,H=P.current;if(x.current=null,P.current=null,N(null),ge(null),v===null||H===null)return;h.preventDefault();let z=A.current,Y=H.pos==="inside"?Ze(z,H.id,!1):z;if(Y=Nt(Y,v,H.id,H.pos),H.pos==="inside"){let q=Y.nodes[H.id].children;q[q.length-1]===v&&q.length>1&&(Y=Nt(Y,v,q[0],"before"))}Y!==z&&p(Y)},dragEnd(){x.current=null,P.current=null,N(null),ge(null)}}},[]),x=(0,ie.useRef)(null);x.current=U;let P=(0,ie.useRef)(null);P.current=b,(0,ie.useEffect)(()=>{let p=K=>{let de=B.current;de===null||K.clipboardData===null||(B.current=null,K.clipboardData.setData("text/plain",de.text),K.clipboardData.setData(Yt,de.json),K.preventDefault())},X=K=>{let de=j.current,je=document.activeElement,Qe=K.clipboardData;if(de===null||Qe===null||!(je instanceof HTMLElement)||!je.classList.contains("mm-node")||_.current?.contains(je)!==!0)return;let gt=fn(Y=>Qe.getData(Y),!1);if(gt===null)return;K.preventDefault();let h=A.current,v=We(h,Vt(ke.current,de.anchor,de.head)),H=v[v.length-1];if(H===void 0)return;let z=Bn(h,gt,{afterId:H});C.current.state.apply(z.doc),m({anchor:z.focusId,head:z.focusId})};return document.addEventListener("copy",p,!0),document.addEventListener("cut",p,!0),document.addEventListener("paste",X),()=>{document.removeEventListener("copy",p,!0),document.removeEventListener("cut",p,!0),document.removeEventListener("paste",X)}},[]);let T=(0,ie.useCallback)(()=>{let p=tt(A.current,C.current.rootId,A.current.nodes[C.current.rootId]?.children.length??0);C.current.state.apply(p.doc,{focus:{id:p.focusId,caret:0}})},[]),Q=p=>{if(ye.length===0)return;let X=((Ce<0?0:Ce)+p+ye.length)%ye.length;me.current=null,D(K=>K===null?K:{...K,index:X})},Pe=()=>{D(null);let p=w.current;p!==null&&J.current!==null&&p.focus({preventScroll:!0})},u=()=>{if(g===null||W===void 0)return;let p=Ir(n,W,g.replace);p!==n&&t.apply(p)},k=()=>{if(g===null||ye.length===0)return;let p=Cr(n,ye,g.replace);if(p===n)return;let X=ye.length;t.apply(p),o.toast("\u5DF2\u66FF\u6362 "+X+" \u5904",{label:"\u64A4\u9500",onClick:()=>C.current.state.undo()})},R=p=>{if(!Gt(p)){if(p.key==="Escape"){p.preventDefault(),p.stopPropagation(),Pe();return}p.key==="Enter"&&(p.preventDefault(),p.stopPropagation(),Q(p.shiftKey?-1:1))}},Me=a!==null?a.head:i??Ie[0],se=e.onTagFilter!==void 0;return(0,xe.jsxs)(xe.Fragment,{children:[g!==null?(0,xe.jsxs)("div",{className:"mm-findbar",role:"search","aria-label":"\u67E5\u627E\u4E0E\u66FF\u6362",children:[(0,xe.jsx)("input",{ref:$,className:"mm-findbar-input",type:"text",placeholder:"\u67E5\u627E","aria-label":"\u67E5\u627E",value:g.query,spellCheck:!1,onChange:p=>{let X=p.target.value;me.current=null,D(K=>K===null?K:{...K,query:X,index:0})},onKeyDown:R}),(0,xe.jsx)("input",{className:"mm-findbar-input",type:"text",placeholder:"\u66FF\u6362\u4E3A","aria-label":"\u66FF\u6362\u4E3A",value:g.replace,spellCheck:!1,onChange:p=>{let X=p.target.value;D(K=>K===null?K:{...K,replace:X})},onKeyDown:R}),(0,xe.jsx)("button",{type:"button",className:"mm-findbar-btn"+(g.cs?" mm-on":""),"aria-pressed":g.cs,title:"\u533A\u5206\u5927\u5C0F\u5199",onClick:()=>D(p=>p===null?p:{...p,cs:!p.cs,index:0}),children:"Aa"}),(0,xe.jsx)("span",{className:"mm-findbar-count"+(g.query.length>0&&ye.length===0?" mm-none":""),"aria-live":"polite",children:g.query.length===0?"":ye.length===0?"0/0":Ce+1+"/"+ye.length}),(0,xe.jsx)("button",{type:"button",className:"mm-findbar-btn",title:"\u4E0A\u4E00\u4E2A (Shift+Enter)","aria-label":"\u4E0A\u4E00\u4E2A",disabled:ye.length===0,onClick:()=>Q(-1),children:"\u2191"}),(0,xe.jsx)("button",{type:"button",className:"mm-findbar-btn",title:"\u4E0B\u4E00\u4E2A (Enter)","aria-label":"\u4E0B\u4E00\u4E2A",disabled:ye.length===0,onClick:()=>Q(1),children:"\u2193"}),(0,xe.jsx)("button",{type:"button",className:"mm-findbar-btn",disabled:W===void 0,onClick:u,children:"\u66FF\u6362"}),(0,xe.jsx)("button",{type:"button",className:"mm-findbar-btn",disabled:ye.length===0,onClick:k,children:"\u5168\u90E8\u66FF\u6362"}),(0,xe.jsx)("button",{type:"button",className:"mm-findbar-btn",title:"\u5173\u95ED (Esc)","aria-label":"\u5173\u95ED\u67E5\u627E",onClick:Pe,children:"\xD7"})]}):null,ue!==null?(0,xe.jsxs)("div",{className:"mm-tagbar",children:[(0,xe.jsx)("span",{children:"\u7B5B\u9009"}),(0,xe.jsxs)("button",{type:"button",className:"mm-tagchip",title:"\u53D6\u6D88\u7B5B\u9009","aria-label":"\u53D6\u6D88\u7B5B\u9009 "+ue,onClick:()=>e.onTagFilter?.(null),children:[ue,(0,xe.jsx)("span",{"aria-hidden":"true",children:"\xD7"})]})]}):null,(0,xe.jsxs)("div",{ref:_,className:"mm-outline",role:"tree","aria-label":"\u5927\u7EB2","aria-multiselectable":"true",onKeyDown:ae.treeKey,onBlur:()=>window.setTimeout(()=>{let p=document.activeElement;j.current!==null&&p!==null&&p!==document.body&&_.current?.contains(p)!==!0&&m(null)},0),onDragLeave:p=>{p.currentTarget===p.target&&N(null)},children:[Ke.map(p=>{let X=n.nodes[p.id];return(0,xe.jsx)(jo,{node:X,depth:p.depth,editing:i===p.id?c:null,selected:$e.has(p.id),tabStop:Me===p.id,marks:O.get(p.id)??Bo,tags:se,drop:b?.id===p.id?b.pos:null,dragging:U===p.id,ctl:ae},p.id)}),Ke.length===0&&ue===null?(0,xe.jsxs)("button",{type:"button",className:"mm-add",onClick:T,children:[(0,xe.jsx)(Se,{name:"plus",size:14}),"\u6DFB\u52A0\u8282\u70B9"]}):Ke.length===0?null:(0,xe.jsx)("div",{style:{height:40,cursor:"text"},onMouseDown:p=>{p.preventDefault();let X=n.nodes[r]?.children??[],K=X[X.length-1];K!==void 0&&n.nodes[K].text.length===0&&n.nodes[K].children.length===0?ae.startEdit(K,"end"):T()}})]})]})}var re=require("react");var Uo=20,Xo=24,Ot=14,qo=17,bn=12,xn=7,Tt=260,Vo=6,Lr=56,ft=12,Fr=18,hn=10,Wt=8,kt=hn+Wt;function vn(e){let n=(typeof document<"u"?document.createElement("canvas"):null)?.getContext("2d")??null,r=new Map,o="";return(i,l,c=Ot)=>{if(n===null)return i.length*8*c/Ot;let d=(l?"b":"n")+c+"|"+i,a=r.get(d);if(a!==void 0)return a;let m=(l?"600 ":"")+c+"px "+e;m!==o&&(n.font=m,o=m);let g=n.measureText(i).width;return r.size>5e4&&r.clear(),r.set(d,g),g}}var Yo=/[\u2e80-\u9fff\uac00-\ud7af\uff00-\uffef]|[^\s\u2e80-\u9fff\uac00-\ud7af\uff00-\uffef]+|\s+/g;function Go(e,t,n,r=Ot){let o=[],i=l=>t(l,n,r);for(let l of $t(e).split(`
|
|
34
|
+
`)){if(i(l)<=Tt){o.push(l);continue}let c="";for(let d of l.match(Yo)??[])if(i(c+d)<=Tt||c.length===0)if(i(d)>Tt&&c.length===0)for(let a of d)i(c+a)>Tt&&c.length>0&&(o.push(c),c=""),c+=a;else c+=d;else o.push(c.trimEnd()),c=d.trimStart();o.push(c)}return o.length===0?[""]:o}function Wo(e,t,n,r=Ot,o=Vo){if(e.length<=o)return{lines:e,clipped:!1};let i=e.slice(0,o),l=Array.from(i[o-1].trimEnd());for(;l.length>0&&t(l.join("")+"\u2026",n,r)>Tt;)l.pop();return i[o-1]=l.join("")+"\u2026",{lines:i,clipped:!0}}function Zo(e,t){let n=0,r=[...e.nodes[t]?.children??[]];for(;r.length>0;){let o=r.pop(),i=e.nodes[o];if(i!==void 0){n++;for(let l of i.children)r.push(l)}}return n}function yn(e,t,n,r,o={}){let i=o.layout??"right",l=o.collapsedOverride??null,c=[],d=new Map,a=[],m=[],g=[{id:t,depth:0,parent:-1}];for(;g.length>0;){let w=g.pop(),_=e.nodes[w.id];if(_===void 0||d.has(w.id))continue;let $=w.depth===0,A=$?qo:Ot,C=$?Xo:Uo,ve=$?n:_.text,{lines:ue,clipped:De}=Wo(Go(ve.length>0?ve:" ",r,$,A),r,$,A),Ke=!$&&typeof _.checked=="boolean"?_.checked:null,Ie=24;for(let O of ue)Ie=Math.max(Ie,r(O,$,A));let ke=Math.ceil(Ie)+bn*2+(Ke!==null?Fr:0),$e=ue.length*C+xn*2,ye=!$&&_.children.length>0&&(_.collapsed===!0||l!==null&&l.has(w.id)),Ce=c.length,W={id:w.id,depth:w.depth,x:0,y:0,w:ke,h:$e,lines:ue,full:$t(ve),clipped:De,parent:w.parent>=0?c[w.parent].id:null,kids:[],hasKids:_.children.length>0,collapsed:ye,hidden:0,done:_.checked===!0,check:Ke,side:1,branch:-1,fs:A,lh:C};if(c.push(W),d.set(w.id,W),a.push([]),m.push(w.parent),w.parent>=0&&(a[w.parent].push(Ce),c[w.parent].kids.push(w.id)),ye)W.hidden=Zo(e,w.id);else for(let O=_.children.length-1;O>=0;O--){let ce=_.children[O];e.nodes[ce]!==void 0&&!d.has(ce)&&g.push({id:ce,depth:w.depth+1,parent:Ce})}}let D=c.length;if(D===0)return{nodes:c,byId:d,width:0,height:0,mode:i};let b=new Float64Array(D),N=new Float64Array(D),U=new Array(D),ge=w=>{let _=[],$=0;for(let De of w)_.push($),$+=b[De]+ft;if(w.length===0)return{o:_,K:0,c:0};let A=w[0],C=w[w.length-1],ve=_[0]+N[A]+c[A].h/2,ue=_[_.length-1]+N[C]+c[C].h/2;return{o:_,K:$-ft,c:(ve+ue)/2}};for(let w=D-1;w>=0;w--){if(w===0&&i==="both")continue;let _=a[w],$=c[w].h;if(_.length===0){b[w]=$,N[w]=0,U[w]=[];continue}let A=ge(_),C=A.c-$/2,ve=0;C<0&&(ve=-C,C=0),U[w]=ve===0?A.o:A.o.map(ue=>ue+ve),N[w]=C,b[w]=Math.max(C+$,ve+A.K)}let J=new Float64Array(D),we=c[0],j=a[0];if(j.forEach((w,_)=>{c[w].branch=_}),i==="both"){let w=j.slice().sort((A,C)=>b[C]-b[A]),_=0,$=0;for(let A of w)_<=$?(c[A].side=1,_+=b[A]+ft):(c[A].side=-1,$+=b[A]+ft);for(let A of[1,-1]){let C=j.filter(ue=>c[ue].side===A);if(C.length===0)continue;let ve=ge(C);C.forEach((ue,De)=>{J[ue]=ve.o[De]-ve.c})}we.y=-we.h/2}else{we.y=N[0];let w=U[0];j.forEach((_,$)=>{J[_]=w[$]})}for(let w=1;w<D;w++){let _=c[w],$=c[m[w]];_.depth>1?(_.side=$.side,_.branch=$.branch):i==="right"&&(_.side=1),_.y=J[w]+N[w],_.x=_.side>0?$.x+$.w+Lr:$.x-Lr-_.w;let A=a[w],C=U[w];for(let ve=0;ve<A.length;ve++)J[A[ve]]=J[w]+C[ve]}let le=1/0,L=1/0,E=-1/0,B=-1/0;for(let w of c){let _=w.x,$=w.x+w.w;w.depth>0&&w.hasKids&&(w.side>0?$+=kt:_-=kt),_<le&&(le=_),$>E&&(E=$),w.y<L&&(L=w.y),w.y+w.h>B&&(B=w.y+w.h)}for(let w of c)w.x-=le,w.y-=L;return{nodes:c,byId:d,width:E-le,height:B-L,mode:i}}var zr=(e,t)=>t>0?e.x+e.w:e.x;function _r(e,t){let n=t.side,r=e.y+e.h/2,o=t.y+t.h/2,i=zr(e,n),l=e.depth>0?i+n*kt:i,c=n>0?t.x:t.x+t.w,d=(l+c)/2;return(l!==i?"M"+i+","+r+" H"+l:"M"+l+","+r)+" C"+d+","+r+" "+d+","+o+" "+c+","+o}function Hr(e,t,n=4,r=1){let o=t.side,i=zr(e,o)-o*2,l=e.y+e.h/2,c=o>0?t.x:t.x+t.w,d=t.y+t.h/2,a=(i+c)/2,m=g=>String(Math.round(g*100)/100);return"M"+m(i)+","+m(l-n)+" C"+m(a)+","+m(l-n)+" "+m(a)+","+m(d-r)+" "+m(c)+","+m(d-r)+" L"+m(c)+","+m(d+r)+" C"+m(a)+","+m(d+r)+" "+m(a)+","+m(l+n)+" "+m(i)+","+m(l+n)+" Z"}var Br=(e,t)=>t.depth===1?Hr(e,t):_r(e,t),wn=e=>({cx:e.side>0?e.x+e.w+hn:e.x-hn,cy:e.y+e.h/2}),kn=e=>({x:e.x+bn,y:e.y+xn+e.lh/2-6}),Mn=(e,t)=>"M"+(e+2.5)+","+(t+6.2)+" L"+(e+5)+","+(t+8.7)+" L"+(e+9.5)+","+(t+3.5),Dn=(e,t)=>({x:e.x+bn+(e.check!==null?Fr:0),y:e.y+xn+e.lh*t+e.lh/2}),En=["#3964fe","#f08c00","#0ca678","#e64980","#7048e8","#1098ad","#e03131","#66a80f"],Sn=["#7b9bff","#ffc078","#38d9a9","#f783ac","#9775fa","#3bc9db","#ff8787","#a9e34b"],Nn=.1,In=.2;function Kr(e,t){let n=t?Sn:En;return n[(e%n.length+n.length)%n.length]}function Cn(e,t){let n=parseInt(e.slice(1),16);return"rgba("+(n>>16&255)+","+(n>>8&255)+","+(n&255)+","+t+")"}var Jo={bg:"#ffffff",text:"#1f2329",sub:"#8a8f99",border:"#c9ccd1",accent:"#3964fe",panel:"#f7f7f8",card:"#ffffff",dark:!1},Ye=e=>e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""),Qo=44;function ei(e,t,n={}){let o=n.background??"theme",i=o==="white"&&t.dark===!0?{...Jo,font:t.font}:t,l=i.dark===!0,c=n.title!==void 0&&n.title!==null&&n.title.trim()!==""?n.title.trim():null,d=c!==null?Qo:0,a=Math.ceil(e.width+64),m=Math.ceil(e.height+64+d),g=l?In:Nn,D=[];D.push('<svg xmlns="http://www.w3.org/2000/svg" width="'+a+'" height="'+m+'" viewBox="0 0 '+a+" "+m+'" font-family="'+Ye(i.font)+'" font-size="14">'),o!=="transparent"&&D.push('<rect width="100%" height="100%" fill="'+Ye(o==="white"?"#ffffff":i.bg)+'"/>'),c!==null&&D.push('<text x="32" y="42" font-size="20" font-weight="600" dominant-baseline="central" fill="'+Ye(i.text)+'" xml:space="preserve">'+Ye(c)+"</text>"),D.push('<g transform="translate(32,'+(32+d)+')">');for(let b of e.nodes){if(b.parent===null)continue;let N=e.byId.get(b.parent),U=Kr(b.branch,l);b.depth===1?D.push('<path d="'+Hr(N,b)+'" fill="'+U+'"/>'):D.push('<path d="'+_r(N,b)+'" fill="none" stroke="'+U+'" stroke-width="1.5"/>')}for(let b of e.nodes){let N=b.depth===0,U=N?i.accent:Kr(b.branch,l),ge=N?i.accent:b.depth===1?Cn(U,g):i.card,J=N?' stroke="'+Ye(i.accent)+'"':b.depth===1?' stroke="'+U+'" stroke-width="1.5"':' stroke="'+U+'" stroke-opacity="0.55"',we=N?"#ffffff":b.done?i.sub:i.text;if(b.depth===1&&o==="transparent"&&D.push('<rect x="'+b.x+'" y="'+b.y+'" width="'+b.w+'" height="'+b.h+'" rx="6" fill="'+Ye(i.card)+'"/>'),D.push('<rect x="'+b.x+'" y="'+b.y+'" width="'+b.w+'" height="'+b.h+'" rx="6" fill="'+Ye(ge)+'"'+J+"/>"),b.check!==null){let j=kn(b);b.check?D.push('<rect x="'+j.x+'" y="'+j.y+'" width="12" height="12" rx="3" fill="'+U+'"/><path d="'+Mn(j.x,j.y)+'" fill="none" stroke="#ffffff" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/>'):D.push('<rect x="'+(j.x+.5)+'" y="'+(j.y+.5)+'" width="11" height="11" rx="3" fill="none" stroke="'+Ye(i.sub)+'"/>')}if(b.lines.forEach((j,le)=>{let L=Dn(b,le);D.push('<text x="'+L.x+'" y="'+L.y+'" font-size="'+b.fs+'" dominant-baseline="central" fill="'+Ye(we)+'"'+(N?' font-weight="600"':"")+(b.done?' text-decoration="line-through"':"")+' xml:space="preserve">'+Ye(j)+"</text>")}),b.collapsed){let j=wn(b);D.push('<circle cx="'+j.cx+'" cy="'+j.cy+'" r="'+Wt+'" fill="'+Ye(i.card)+'" stroke="'+U+'"/>'),D.push('<text x="'+j.cx+'" y="'+j.cy+'" font-size="10" text-anchor="middle" dominant-baseline="central" fill="'+Ye(i.sub)+'">'+(b.hidden>99?"99+":b.hidden)+"</text>")}}return D.push("</g></svg>"),{svg:D.join(""),width:a,height:m}}var Pr=16384,ti=12e7;function Tn(e,t,n=2){let r=Math.ceil(e*n),o=Math.ceil(t*n);return r<=Pr&&o<=Pr&&r*o<=ti}var Rt=class extends Error{width;height;constructor(t,n){super("\u5BFC\u56FE\u8FC7\u5927\uFF08"+t+"\xD7"+n+"\uFF09\uFF0C\u65E0\u6CD5\u5BFC\u51FA PNG\uFF0C\u8BF7\u6539\u7528 SVG"),this.name="MapTooLargeError",this.width=t,this.height=n}};async function $r(e,t,n,r=2){if(!Tn(t,n,r))throw new Rt(Math.ceil(t*r),Math.ceil(n*r));let o=URL.createObjectURL(new Blob([e],{type:"image/svg+xml;charset=utf-8"}));try{let i=new Image;await new Promise((d,a)=>{i.onload=()=>d(),i.onerror=()=>a(new Error("\u56FE\u7247\u6E32\u67D3\u5931\u8D25")),i.src=o});let l=document.createElement("canvas");l.width=Math.max(1,Math.ceil(t*r)),l.height=Math.max(1,Math.ceil(n*r));let c=l.getContext("2d");if(c===null)throw new Error("\u65E0\u6CD5\u521B\u5EFA\u753B\u5E03");return c.scale(r,r),c.drawImage(i,0,0,t,n),await new Promise((d,a)=>l.toBlob(m=>m!==null?d(m):a(new Error("PNG \u7F16\u7801\u5931\u8D25")),"image/png"))}finally{URL.revokeObjectURL(o)}}function ni(){if(typeof document>"u"||document.body===null)return!1;let e=document.body.getAttribute("data-ds-dark-theme");return e!==null&&e!=="false"}function ri(e){let t=getComputedStyle(e),n=(r,o)=>t.getPropertyValue(r).trim()||o;return{bg:n("--mm-bg","#ffffff"),text:n("--mm-text","#1f2329"),sub:n("--mm-sub","#8a8f99"),border:n("--mm-border-strong","#c9ccd1"),accent:n("--mm-accent","#3964fe"),panel:n("--mm-panel","#f7f7f8"),card:n("--mm-elev","#ffffff"),font:t.fontFamily||"sans-serif",dark:ni()}}function On(e){return e.view?.mapLayout==="right"?"right":"both"}function jr(e,t,n,r,o={}){let i=ri(r),l=yn(e,t,n,vn(i.font),{layout:On(e)});return ei(l,i,o)}var Z=require("react/jsx-runtime"),oi=.2,ii=3,li=.5,Ur=300,si=2,ai=5,Vr="dsh-mindmap:map-hint-seen",Rn=e=>Math.min(ii,Math.max(oi,e)),Xr=e=>"translate("+e.x+","+e.y+") scale("+e.k+")",qr=(e,t,n,r,o)=>n>=o.x0&&e<=o.x1&&r>=o.y0&&t<=o.y1,An=e=>e.branch>=0?" mm-b"+e.branch%8:"";function ci(e,t){let n=new Set,r=0,o=[t];for(;o.length>0&&r<=Ur;){let l=e.nodes[o.pop()];if(l!==void 0){r++;for(let c of l.children)o.push(c)}}if(r<=Ur)return n;let i=[[t,0]];for(;i.length>0;){let[l,c]=i.pop(),d=e.nodes[l];if(!(d===void 0||d.children.length===0)){if(c>=si){d.collapsed!==!0&&n.add(l);continue}if(!(d.collapsed===!0&&c>0))for(let a of d.children)i.push([a,c+1])}}return n}function di(){try{return localStorage.getItem(Vr)==="1"}catch{return!1}}function Yr(e){let{doc:t,rootId:n,state:r}=e,o=e.onSelect,i=(0,re.useRef)(null),l=(0,re.useRef)(null),c=(0,re.useRef)(null),d=(0,re.useRef)(null),a=(0,re.useRef)({x:40,y:40,k:1}),m=(0,re.useRef)({w:800,h:600}),g=(0,re.useRef)(0),[D,b]=(0,re.useState)(null),N=(0,re.useRef)(D),[U,ge]=(0,re.useState)(null),[J,we]=(0,re.useState)(!1),j=(0,re.useRef)(null),le=(0,re.useRef)(null),[L,E]=(0,re.useState)(null),B=(0,re.useRef)(null),w=(0,re.useRef)(null),_=(0,re.useRef)(null),$=(0,re.useRef)(!1),A=(0,re.useRef)(null),[C,ve]=(0,re.useState)(di),[ue,De]=(0,re.useState)("");(0,re.useLayoutEffect)(()=>{i.current!==null&&De(getComputedStyle(i.current).fontFamily||"sans-serif")},[]);let Ke=(0,re.useMemo)(()=>vn(ue||"sans-serif"),[ue]),Ie=On(t),ke=t.id+":"+n,$e=(0,re.useRef)({key:"",set:new Set});$e.current.key!==ke&&($e.current={key:ke,set:ci(t,n)});let[,ye]=(0,re.useState)(0),Ce=$e.current.set,W=s=>{$e.current={key:ke,set:s},ye(f=>f+1)},O=(0,re.useMemo)(()=>yn(t,n,e.rootLabel,Ke,{layout:Ie,collapsedOverride:Ce}),[t,n,e.rootLabel,Ke,Ie,Ce]),ce=(0,re.useRef)(O);ce.current=O;let me=e.selected!==null&&O.byId.has(e.selected)?e.selected:null,Le=(0,re.useCallback)(()=>{let s=a.current;l.current?.setAttribute("transform",Xr(s)),c.current!==null&&(c.current.textContent=Math.round(s.k*100)+"%");let f=d.current;f!==null&&f.dataset.nx!==void 0&&(f.style.left=s.x+Number(f.dataset.nx)*s.k+"px",f.style.top=s.y+Number(f.dataset.ny)*s.k+"px",f.style.transform="scale("+s.k+")");let{w:y,h:I}=m.current,F={x0:-s.x/s.k,y0:-s.y/s.k,x1:(y-s.x)/s.k,y1:(I-s.y)/s.k},fe=N.current,ee=(F.x1-F.x0)*(F.y1-F.y0);if(fe===null||F.x0<fe.x0||F.y0<fe.y0||F.x1>fe.x1||F.y1>fe.y1||(fe.x1-fe.x0)*(fe.y1-fe.y0)>ee*9){let _e=(F.x1-F.x0)*.5+120/s.k,Mt=(F.y1-F.y0)*.5+120/s.k,Ln={x0:F.x0-_e,y0:F.y0-Mt,x1:F.x1+_e,y1:F.y1+Mt};N.current=Ln,b(Ln)}},[]),he=(0,re.useCallback)(s=>{a.current=s,g.current===0&&(g.current=requestAnimationFrame(()=>{g.current=0,Le()}))},[Le]),ae=(0,re.useCallback)(s=>{a.current=s,Le()},[Le]);(0,re.useEffect)(()=>()=>{g.current!==0&&cancelAnimationFrame(g.current)},[]),(0,re.useLayoutEffect)(()=>{let s=i.current;if(s===null)return;let f=()=>{let I=s.getBoundingClientRect();m.current={w:I.width||800,h:I.height||600}};if(f(),typeof ResizeObserver>"u")return;let y=new ResizeObserver(()=>{f(),Le()});return y.observe(s),()=>y.disconnect()},[Le]);let x=(0,re.useCallback)(()=>{let s=ce.current,f=s.nodes[0],{w:y,h:I}=m.current,F=Rn(Math.max(li,Math.min(1,(y-80)/Math.max(s.width,1)))),fe=s.width*F<=y-80||f===void 0?(y-s.width*F)/2:y/2-(f.x+f.w/2)*F,ee=s.height*F<=I-80||f===void 0?(I-s.height*F)/2:I/2-(f.y+f.h/2)*F;ae({k:F,x:fe,y:ee})},[ae]),P=(0,re.useCallback)(()=>{let s=ce.current,{w:f,h:y}=m.current,I=Rn(Math.min((f-80)/Math.max(s.width,1),(y-80)/Math.max(s.height,1),1));he({k:I,x:(f-s.width*I)/2,y:(y-s.height*I)/2})},[he]),T=(0,re.useCallback)((s,f=a.current.k)=>{let y=ce.current.byId.get(s);if(y===void 0)return;let{w:I,h:F}=m.current;he({k:f,x:I/2-(y.x+y.w/2)*f,y:F/2-(y.y+y.h/2)*f})},[he]),Q=(0,re.useCallback)((s,f,y)=>{let I=a.current,{w:F,h:fe}=m.current,ee=f??F/2,Fe=y??fe/2,_e=Rn(I.k*s);he({k:_e,x:ee-(ee-I.x)/I.k*_e,y:Fe-(Fe-I.y)/I.k*_e})},[he]);(0,re.useLayoutEffect)(()=>{if(ue==="")return;let s=O.byId.get(n);if(_.current!==ke||$.current)_.current=ke,$.current=!1,x();else if(s!==void 0&&A.current!==null&&A.current.key===ke){let f=a.current,y=(s.x-A.current.x)*f.k,I=(s.y-A.current.y)*f.k;y!==0||I!==0?ae({...f,x:f.x-y,y:f.y-I}):Le()}s!==void 0&&(A.current={key:ke,x:s.x,y:s.y})},[O,ke,n,ue,x,ae,Le]),(0,re.useLayoutEffect)(()=>{if(me===null)return;let s=O.byId.get(me),f=a.current,{w:y,h:I}=m.current,F=f.x+s.x*f.k,fe=f.y+s.y*f.k,ee=24,Fe=0,_e=0;s.w*f.k>y-2*ee||F<ee?Fe=ee-F:F+s.w*f.k>y-ee&&(Fe=y-ee-(F+s.w*f.k)),s.h*f.k>I-2*ee||fe<ee?_e=ee-fe:fe+s.h*f.k>I-ee&&(_e=I-ee-(fe+s.h*f.k)),(Fe!==0||_e!==0)&&he({...f,x:f.x+Fe,y:f.y+_e})},[me,O,he]),(0,re.useEffect)(()=>{let s=i.current;if(s===null)return;let f=y=>{y.preventDefault();let I=s.getBoundingClientRect();if(y.ctrlKey||y.metaKey)Q(Math.exp(-y.deltaY*.0025),y.clientX-I.left,y.clientY-I.top);else{let F=a.current;he({...F,x:F.x-(y.shiftKey?y.deltaY:y.deltaX),y:F.y-(y.shiftKey?0:y.deltaY)})}};return s.addEventListener("wheel",f,{passive:!1}),()=>s.removeEventListener("wheel",f)},[Q,he]);let Pe=()=>{if(!C){ve(!0);try{localStorage.setItem(Vr,"1")}catch{}}},u=()=>{i.current?.focus({preventScroll:!0})},k=()=>{let s=w.current;w.current=null,s!==null&&(t===s.doc?r.undo():t.nodes[s.id]!==void 0&&r.apply(rt(t,s.id)),o(s.prevSel!==null&&s.prevSel!==s.id?s.prevSel:null))},R=s=>{if(ge(null),s===null)return;let f=w.current;if(f!==null&&f.id===s.id){if(s.text.trim()===""){k(),u();return}w.current=null}s.id===n&&n===t.rootId?s.text.trim()!==t.title&&r.apply({...t,title:s.text.replace(/\n/g," ").trim()||t.title}):t.nodes[s.id]!==void 0&&t.nodes[s.id].text!==s.text&&r.apply(qe(t,s.id,s.text)),u()},Me=()=>{let s=U;ge(null),s!==null&&w.current!==null&&w.current.id===s.id&&k(),u()},se=(s,f)=>{let y=s===t.rootId?t.title:t.nodes[s]?.text??"";o(s),ge({id:s,text:f??y})},p=(s,f)=>{if(Ce.has(f)){let y=new Set(Ce);y.delete(f),W(y)}return s.nodes[f]?.collapsed===!0?Ze(s,f,!1):s},X=(s,f)=>{r.apply(s.doc),w.current={id:s.focusId,doc:s.doc,prevSel:f},o(s.focusId),ge({id:s.focusId,text:""})},K=(s,f)=>{let y=p(s,f);X(tt(y,f,y.nodes[f].children.length),f)},de=s=>{if(s===n){K(t,s);return}X(Pt(t,s),s)},je=s=>{if(s===n)return;let f=O.byId.get(s)?.parent??null,y=f!==null?O.byId.get(f).kids:[],I=y.indexOf(s),F=y[I+1]??y[I-1]??f;r.apply(rt(t,s)),o(F)},Qe=s=>{let f=t.nodes[s];if(!(f===void 0||f.children.length===0||s===n)){if(Ce.has(s)){let y=new Set(Ce);y.delete(s),W(y),f.collapsed===!0&&r.apply(Ze(t,s,!1),{noHistory:!0});return}r.apply(Ze(t,s,f.collapsed!==!0),{noHistory:!0})}},gt=s=>{if(s===n)return;let f=at(t,s,n);f!==t&&r.apply(f)},h=(s,f)=>{if(s===n)return;let y=ct(t,s,f);y!==t&&r.apply(y)},v=s=>{s===t.rootId||t.nodes[s]===void 0||r.apply(xt(t,s))},H=s=>{if(s===Ie)return;$.current=!0;let f=t;r.apply({...f,view:{...f.view??{},mapLayout:s}},{noHistory:!0})},z=(s,f)=>{let y=s.y+s.h/2,I=null,F=1/0;for(let fe of s.kids){let ee=O.byId.get(fe);if(ee===void 0||f!==null&&ee.side!==f)continue;let Fe=Math.abs(ee.y+ee.h/2-y);Fe<F&&(F=Fe,I=fe)}return I},Y=(s,f)=>{if(s.parent!==null){let ee=O.byId.get(s.parent).kids.filter(_e=>O.byId.get(_e)?.side===s.side),Fe=ee[ee.indexOf(s.id)+f];if(Fe!==void 0)return Fe}let y=s.y+s.h/2,I=s.side>0?s.x:s.x+s.w,F=null,fe=1/0;for(let ee of O.nodes){if(ee.id===s.id||s.depth>0&&ee.depth>0&&ee.side!==s.side)continue;let Fe=(ee.y+ee.h/2-y)*f;if(Fe<=0)continue;let _e=ee.side>0?ee.x:ee.x+ee.w,Mt=Fe+Math.abs(_e-I)*2+Math.abs(ee.depth-s.depth)*200;Mt<fe&&(fe=Mt,F=ee.id)}return F},q=s=>{if(Pe(),U!==null||s.target!==s.currentTarget||s.nativeEvent.isComposing||s.keyCode===229)return;let f=s.ctrlKey||s.metaKey,y=s.key;if(f&&(y==="z"||y==="Z")){s.preventDefault(),s.shiftKey?r.redo():r.undo();return}if(f&&(y==="y"||y==="Y")){s.preventDefault(),r.redo();return}if(f&&(y==="="||y==="+")){s.preventDefault(),Q(1.2);return}if(f&&y==="-"){s.preventDefault(),Q(1/1.2);return}if(f&&y==="0"){s.preventDefault(),P();return}let I=me??n,F=O.byId.get(I);if(F!==void 0){if(f&&y==="ArrowUp"){s.preventDefault(),h(I,-1);return}if(f&&y==="ArrowDown"){s.preventDefault(),h(I,1);return}if(f&&y==="Enter"){s.preventDefault(),v(I);return}if(y==="Tab"&&s.shiftKey){s.preventDefault(),gt(I);return}if(y==="Tab"){s.preventDefault(),K(t,I);return}if(y==="Enter"){s.preventDefault(),de(I);return}if(y==="F2"){s.preventDefault(),se(I);return}if(y==="Delete"||y==="Backspace"){s.preventDefault(),je(I);return}if(y===" "){s.preventDefault(),Qe(I);return}if(y==="Escape"){o(null);return}if(y==="ArrowLeft"||y==="ArrowRight"){s.preventDefault();let fe=y==="ArrowRight"?1:-1;if(F.depth===0){let ee=z(F,fe);ee!==null&&o(ee);return}if(fe===F.side){if(F.collapsed){Qe(I);return}let ee=z(F,null);ee!==null&&o(ee)}else F.parent!==null&&o(F.parent);return}if(y==="ArrowUp"||y==="ArrowDown"){s.preventDefault();let fe=Y(F,y==="ArrowUp"?-1:1);fe!==null&&o(fe);return}!f&&!s.altKey&&y.length===1&&I!==n&&(s.preventDefault(),se(I,y))}},Ee=(s,f,y)=>{o(s);let I=t.nodes[s],F=s===n;e.onMenu({x:f,y,items:[{label:"\u7F16\u8F91",shortcut:"F2",onSelect:()=>se(s)},{label:"\u6DFB\u52A0\u5B50\u8282\u70B9",shortcut:"Tab",onSelect:()=>K(t,s)},{label:"\u6DFB\u52A0\u540C\u7EA7\u8282\u70B9",shortcut:"Enter",disabled:F,onSelect:()=>de(s)},{label:I.checked===!0?"\u53D6\u6D88\u5B8C\u6210":"\u6807\u8BB0\u5B8C\u6210",shortcut:"Ctrl+Enter",disabled:s===t.rootId,onSelect:()=>v(s)},{label:I.collapsed===!0||Ce.has(s)?"\u5C55\u5F00":"\u6298\u53E0",shortcut:"\u7A7A\u683C",disabled:F||I.children.length===0,onSelect:()=>Qe(s)},{label:"\u5728\u5927\u7EB2\u4E2D\u7F16\u8F91",disabled:F&&n===t.rootId,onSelect:()=>e.onEditInOutline(s)},{label:"\u4EE5\u6B64\u4E3A\u4E2D\u5FC3",onSelect:()=>T(s)},{kind:"sep"},{label:I.children.length>0?"\u5220\u9664\u8282\u70B9\u53CA\u5176\u5B50\u8282\u70B9":"\u5220\u9664\u8282\u70B9",shortcut:"Delete",danger:!0,disabled:F,onSelect:()=>je(s)}]})},oe=(s,f)=>{let y=i.current.getBoundingClientRect(),I=a.current;return{x:(s-y.left-I.x)/I.k,y:(f-y.top-I.y)/I.k}},te=(s,f)=>{let y=O.nodes;for(let I=y.length-1;I>=0;I--){let F=y[I];if(s>=F.x&&s<=F.x+F.w&&f>=F.y&&f<=F.y+F.h)return F}return null},V=s=>{B.current=s,E(s)},pe=s=>{if(Pe(),s.button!==0)return;let f=s.target;if(f.closest(".mm-map-ctrl,.mm-map-edit,.mm-map-hint,[data-map-toggle]")!==null)return;let y=f.closest("[data-map-node]");if(y!==null){let F=y.getAttribute("data-map-node");F!==n&&U===null&&(le.current={id:F,px:s.clientX,py:s.clientY,started:!1});return}let I=a.current;j.current={px:s.clientX,py:s.clientY,vx:I.x,vy:I.y,moved:!1},s.currentTarget.setPointerCapture(s.pointerId),we(!0)},Ve=s=>{let f=le.current;if(f!==null){if(!f.started){if(Math.abs(s.clientX-f.px)+Math.abs(s.clientY-f.py)<ai)return;f.started=!0,s.currentTarget.setPointerCapture(s.pointerId)}let fe=oe(s.clientX,s.clientY),ee=te(fe.x,fe.y);if(ee===null||ee.id===f.id){V({id:f.id,target:null,pos:"inside",ok:!1,mx:fe.x,my:fe.y});return}let Fe=(fe.y-ee.y)/ee.h,_e=ee.depth===0?"inside":Fe<.25?"before":Fe>.75?"after":"inside";V({id:f.id,target:ee.id,pos:_e,ok:St(t,f.id,ee.id,_e),mx:fe.x,my:fe.y});return}let y=j.current;if(y===null)return;let I=s.clientX-y.px,F=s.clientY-y.py;Math.abs(I)+Math.abs(F)>3&&(y.moved=!0),he({...a.current,x:y.vx+I,y:y.vy+F})},et=()=>{let s=le.current;if(s!==null){le.current=null;let y=B.current;if(V(null),s.started&&y!==null&&y.ok&&y.target!==null){let I=Nt(t,s.id,y.target,y.pos);I!==t&&(r.apply(I),o(s.id))}return}let f=j.current;j.current=null,we(!1),f!==null&&!f.moved&&o(null)},ne=s=>{let f=s.target,y=f.closest("[data-map-toggle]");if(y!==null)return{id:y.getAttribute("data-map-toggle"),toggle:!0};let I=f.closest("[data-map-node]");return I!==null?{id:I.getAttribute("data-map-node"),toggle:!1}:null},Ue={onMouseDown:s=>{let f=ne(s);f===null||s.button!==0||(s.stopPropagation(),f.toggle||(o(f.id),u()))},onClick:s=>{let f=ne(s);f?.toggle===!0&&(s.stopPropagation(),Qe(f.id),u())},onDoubleClick:s=>{let f=ne(s);f!==null&&!f.toggle&&(s.stopPropagation(),se(f.id))},onContextMenu:s=>{let f=ne(s);f!==null&&(s.preventDefault(),s.stopPropagation(),Ee(f.id,s.clientX,s.clientY))}},Xe=U!==null?O.byId.get(U.id):void 0,st=me!==null?O.byId.get(me):void 0,ht=a.current;return(0,Z.jsxs)("div",{ref:i,className:"mm-map"+(J?" mm-panning":"")+(L!==null?" mm-dragging":""),tabIndex:0,role:"application","aria-label":"\u601D\u7EF4\u5BFC\u56FE",onKeyDown:q,onPointerDown:pe,onPointerMove:Ve,onPointerUp:et,onPointerCancel:et,onContextMenu:s=>{s.target.closest("[data-map-node]")===null&&s.preventDefault()},children:[(0,Z.jsx)("svg",{...Ue,children:(0,Z.jsxs)("g",{ref:l,transform:Xr(ht),children:[(0,Z.jsx)(pi,{layout:O,cull:D,editingId:U?.id??null}),st!==void 0?(0,Z.jsx)(fi,{n:st}):null,L!==null?(0,Z.jsx)(gi,{drop:L,layout:O}):null]})}),U!==null&&Xe!==void 0?(0,Z.jsx)(hi,{value:U.text,elRef:d,root:Xe.depth===0,nx:Xe.x,ny:Xe.y,view:ht,width:Math.max(Xe.w,160),onChange:s=>ge({id:U.id,text:s}),onCommit:()=>R(U),onCancel:Me,onTab:()=>{let s=U.id;ge(null);let f=t;w.current!==null&&w.current.id===s&&(w.current=null),s===t.rootId?f={...t,title:U.text.replace(/\n/g," ").trim()||t.title}:t.nodes[s]!==void 0&&t.nodes[s].text!==U.text&&(f=qe(t,s,U.text)),f!==t&&r.apply(f),K(f,s)}},U.id):null,C?null:(0,Z.jsx)("div",{className:"mm-map-hint mm-hide-narrow",children:"\u53CC\u51FB\u7F16\u8F91 \xB7 Tab \u5B50\u8282\u70B9 \xB7 Enter \u540C\u7EA7 \xB7 \u7A7A\u683C\u6298\u53E0 \xB7 \u62D6\u52A8\u8282\u70B9\u6539\u5C42\u7EA7 \xB7 \u62D6\u52A8\u753B\u5E03\u5E73\u79FB \xB7 Ctrl+\u6EDA\u8F6E\u7F29\u653E"}),(0,Z.jsxs)("div",{className:"mm-map-ctrl",onPointerDown:s=>s.stopPropagation(),children:[(0,Z.jsxs)("div",{className:"mm-map-seg",role:"group","aria-label":"\u5BFC\u56FE\u5E03\u5C40",children:[(0,Z.jsx)("button",{type:"button","aria-pressed":Ie==="both",title:"\u5206\u652F\u5206\u5E03\u5728\u4E2D\u5FC3\u4E24\u4FA7",onClick:()=>H("both"),children:"\u4E24\u4FA7"}),(0,Z.jsx)("button",{type:"button","aria-pressed":Ie==="right",title:"\u5206\u652F\u5168\u90E8\u5411\u53F3\u5C55\u5F00",onClick:()=>H("right"),children:"\u5411\u53F3"})]}),(0,Z.jsx)("button",{type:"button",className:"mm-icon-btn",title:"\u7F29\u5C0F","aria-label":"\u7F29\u5C0F",onClick:()=>Q(1/1.2),children:(0,Z.jsx)(Se,{name:"minus"})}),(0,Z.jsx)("button",{ref:c,type:"button",className:"mm-map-zoom",title:"\u6062\u590D 100%","aria-label":"\u7F29\u653E\u6BD4\u4F8B\uFF0C\u70B9\u51FB\u6062\u590D 100%",onClick:()=>T(me??n,1),children:Math.round(ht.k*100)+"%"}),(0,Z.jsx)("button",{type:"button",className:"mm-icon-btn",title:"\u653E\u5927","aria-label":"\u653E\u5927",onClick:()=>Q(1.2),children:(0,Z.jsx)(Se,{name:"plus"})}),(0,Z.jsx)("button",{type:"button",className:"mm-icon-btn",title:"\u9002\u5E94\u7A97\u53E3","aria-label":"\u9002\u5E94\u7A97\u53E3",onClick:P,children:(0,Z.jsx)(Se,{name:"fit"})}),(0,Z.jsx)("button",{type:"button",className:"mm-icon-btn",title:"\u5C45\u4E2D","aria-label":"\u5C45\u4E2D",onClick:()=>T(me??n),children:(0,Z.jsx)(Se,{name:"center"})})]})]})}function ui(e){return"mm-map-node"+(e.depth===0?" mm-root":e.depth===1?" mm-d1":" mm-dn")+An(e)+(e.done?" mm-done":"")}function Gr(e){let{n:t}=e,n=wn(t);return(0,Z.jsxs)("g",{className:"mm-map-toggle"+(t.collapsed?"":" mm-open"),"data-map-toggle":t.id,role:"button","aria-label":t.collapsed?"\u5C55\u5F00":"\u6298\u53E0",children:[(0,Z.jsx)("circle",{cx:n.cx,cy:n.cy,r:Wt}),(0,Z.jsx)("text",{x:n.cx,y:n.cy,children:t.collapsed?t.hidden>99?"99+":String(t.hidden):"\u2212"})]})}function mi(e){let{n:t}=e,n=t.check!==null?kn(t):null;return(0,Z.jsxs)("g",{className:ui(t),"data-map-node":t.id,children:[t.depth===1?(0,Z.jsx)("rect",{className:"mm-under",x:t.x,y:t.y,width:t.w,height:t.h,rx:6}):null,(0,Z.jsx)("rect",{className:"mm-box",x:t.x,y:t.y,width:t.w,height:t.h,rx:6}),n!==null?t.check===!0?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)("rect",{className:"mm-map-check-on",x:n.x,y:n.y,width:12,height:12,rx:3}),(0,Z.jsx)("path",{className:"mm-map-tick",d:Mn(n.x,n.y)})]}):(0,Z.jsx)("rect",{className:"mm-map-check-off",x:n.x+.5,y:n.y+.5,width:11,height:11,rx:3}):null,e.editing?null:t.lines.map((r,o)=>{let i=Dn(t,o);return(0,Z.jsx)("text",{x:i.x,y:i.y,xmlSpace:"preserve",children:r},o)}),t.clipped?(0,Z.jsx)("title",{children:t.full}):null,t.depth>0&&t.hasKids?(0,Z.jsx)(Gr,{n:t}):null]})}var pi=(0,re.memo)(function(t){let{layout:n,cull:r}=t,o=[],i=[];for(let l of n.nodes){if(l.parent!==null){let c=n.byId.get(l.parent);(r===null||qr(Math.min(c.x,l.x),Math.min(c.y,l.y),Math.max(c.x+c.w,l.x+l.w),Math.max(c.y+c.h,l.y+l.h),r))&&o.push((0,Z.jsx)("path",{className:"mm-map-edge"+An(l)+(l.depth===1?" mm-taper":""),d:Br(c,l)},"e"+l.id))}r!==null&&!qr(l.x-kt,l.y,l.x+l.w+kt,l.y+l.h,r)||i.push((0,Z.jsx)(mi,{n:l,editing:t.editingId===l.id},l.id))}return(0,Z.jsxs)(Z.Fragment,{children:[o,i]})});function fi(e){let{n:t}=e;return(0,Z.jsxs)("g",{className:"mm-map-selection"+An(t),"data-map-node":t.id,children:[(0,Z.jsx)("rect",{className:"mm-map-selring",x:t.x-3,y:t.y-3,width:t.w+6,height:t.h+6,rx:8}),t.depth>0&&t.hasKids&&!t.collapsed?(0,Z.jsx)(Gr,{n:t}):null]})}function gi(e){let{drop:t,layout:n}=e,r=n.byId.get(t.id),o=t.target!==null?n.byId.get(t.target):void 0,i=null;if(o!==void 0){let l=t.ok?"":" mm-map-drop-bad";if(t.pos==="inside")i=(0,Z.jsx)("rect",{className:"mm-map-drop-inside"+l,x:o.x-4,y:o.y-4,width:o.w+8,height:o.h+8,rx:9});else{let c=t.pos==="before"?o.y-ft/2:o.y+o.h+ft/2;i=(0,Z.jsx)("line",{className:"mm-map-drop-line"+l,x1:o.x,y1:c,x2:o.x+o.w,y2:c})}}return(0,Z.jsxs)(Z.Fragment,{children:[i,r!==void 0?(0,Z.jsxs)("g",{className:"mm-map-ghost",transform:"translate("+(t.mx+10)+","+(t.my+10)+")",children:[(0,Z.jsx)("rect",{x:0,y:0,width:Math.min(r.w,220),height:34,rx:6}),(0,Z.jsx)("text",{x:12,y:17,children:(r.lines[0]??"").slice(0,24)})]}):null]})}function hi(e){let t=e.elRef,n=(0,re.useRef)(!1);(0,re.useLayoutEffect)(()=>{let i=t.current;if(i===null)return;i.focus({preventScroll:!0});let l=i.value.length;return l>1?i.select():i.setSelectionRange(l,l),()=>{t.current=null}},[t]),(0,re.useLayoutEffect)(()=>{let i=t.current;i!==null&&(i.style.height="0px",i.style.height=i.scrollHeight+"px")});let r=i=>{n.current||(n.current=!0,i())},o=e.view;return(0,Z.jsx)("textarea",{ref:i=>{t.current=i},className:"mm-map-edit"+(e.root?" mm-root-edit":""),rows:1,value:e.value,spellCheck:!1,"aria-label":"\u7F16\u8F91\u8282\u70B9","data-nx":e.nx,"data-ny":e.ny,style:{left:o.x+e.nx*o.k,top:o.y+e.ny*o.k,width:e.width,transform:"scale("+o.k+")"},onPointerDown:i=>i.stopPropagation(),onMouseDown:i=>i.stopPropagation(),onDoubleClick:i=>i.stopPropagation(),onChange:i=>e.onChange(i.target.value),onBlur:()=>r(e.onCommit),onKeyDown:i=>{i.stopPropagation(),!(i.nativeEvent.isComposing||i.keyCode===229)&&(i.key==="Enter"&&!i.shiftKey?(i.preventDefault(),r(e.onCommit)):i.key==="Escape"?(i.preventDefault(),r(e.onCancel)):i.key==="Tab"&&!i.shiftKey&&(i.preventDefault(),r(e.onTab)))}})}var M=require("react/jsx-runtime"),Wr="dsh-mindmap:last-doc",Zr="dsh-mindmap:view";function Jr(e){try{return window.localStorage.getItem(e)}catch{return null}}function Qr(e,t){try{t===null?window.localStorage.removeItem(e):window.localStorage.setItem(e,t)}catch{}}var Je=e=>e instanceof Error?e.message:String(e);function eo(){return(0,M.jsx)(lr,{children:(0,M.jsx)(bi,{})})}function bi(){let e=pt(),t=(0,G.useRef)(null),[n,r]=(0,G.useState)(null),[o,i]=(0,G.useState)(null),[l,c]=(0,G.useState)(()=>Jr(Wr)),[d,a]=(0,G.useState)(()=>Jr(Zr)==="map"?"map":"outline"),[m,g]=(0,G.useState)(null),[D,b]=(0,G.useState)(null),[N,U]=(0,G.useState)(null),[ge,J]=(0,G.useState)(!1),we=(0,G.useRef)(null),j=(0,G.useCallback)(async()=>{try{let x=await Ne.library();return r(x.library),i(null),x.warnings.length>0&&e.toast(x.warnings.join("\uFF1B")),x.library}catch(x){return i(Je(x)),null}},[e]);(0,G.useEffect)(()=>{j()},[j]),(0,G.useEffect)(()=>Bt(()=>{j()}),[j]),(0,G.useEffect)(()=>{if(n===null)return;let x=l===null?void 0:n.docs.find(P=>P.id===l);if(x===void 0||x.trashedAt!==void 0){let P=n.docs.filter(T=>T.trashedAt===void 0).sort((T,Q)=>Q.updatedAt-T.updatedAt)[0];c(P?.id??null)}},[n,l]),(0,G.useEffect)(()=>{Qr(Wr,l)},[l]);let le=(0,G.useCallback)(x=>{r(P=>P===null?P:{...P,docs:P.docs.map(T=>T.id===x.id?{...T,title:x.title,updatedAt:x.updatedAt}:T)})},[]),L=br(l,le),E=L.doc;(0,G.useEffect)(()=>{g(null),b(null)},[l]);let B=E!==null&&m!==null&&E.nodes[m]!==void 0?m:E?.rootId??null,w=x=>{a(x),Qr(Zr,x)};(0,G.useEffect)(()=>{let x=L.focus;E===null||x===null||m===null||E.nodes[x.id]===void 0||Et(E,m,x.id)||g(null)},[L.focus]);let[_,$]=(0,G.useState)(0),[A,C]=(0,G.useState)(null);(0,G.useEffect)(()=>{C(null)},[l]);let ve=(0,G.useCallback)(()=>{e.show({title:"\u5FEB\u6377\u952E",body:()=>(0,M.jsx)(Mi,{})})},[e]),ue=(0,G.useCallback)((x,P)=>{let T=x;for(let Q of bt(x,P))T=Ze(T,Q,!1);T!==x&&L.apply(T,{noHistory:!0}),B!==null&&!Et(x,B,P)&&g(null),window.setTimeout(()=>L.requestFocus(P,"end"),0)},[L,B]);(0,G.useEffect)(()=>{if(E===null||we.current===null)return;let x=we.current;we.current=null,E.nodes[x]!==void 0&&(w("outline"),ue(E,x))},[E?.id]);let De=(0,G.useCallback)((x,P=null)=>{if(J(!1),x===l){P!==null&&E!==null&&E.nodes[P]!==void 0&&(w("outline"),ue(E,P));return}we.current=P,c(x)},[l,E,ue]),Ke=(0,G.useCallback)(async(x={})=>{try{let P=await Ne.createDoc(x);return r(T=>T===null?T:{...T,docs:[...T.docs,P.meta]}),c(P.doc.id),w("outline"),J(!1),P.doc}catch(P){return e.toast("\u65B0\u5EFA\u5931\u8D25\uFF1A"+Je(P)),null}},[e]),Ie=(0,G.useCallback)(async(x,P)=>{if(P.title!==void 0&&E!==null&&E.id===x){let T=P.title.trim();T.length>0&&T!==E.title&&L.apply({...E,title:T});let Q={...P};if(delete Q.title,Object.keys(Q).length===0)return;P=Q}try{let T=await Ne.patchMeta(x,P);r(Q=>Q===null?Q:{...Q,docs:Q.docs.map(Pe=>Pe.id===x?T.meta:Pe)})}catch(T){e.toast("\u64CD\u4F5C\u5931\u8D25\uFF1A"+Je(T))}},[E,L,e]),ke=(0,G.useCallback)(async x=>{try{x===l&&await L.flush();let P=await Ne.trash(x);r(T=>T===null?T:{...T,docs:T.docs.map(Q=>Q.id===x?P:Q)}),e.toast("\u5DF2\u79FB\u5230\u56DE\u6536\u7AD9\uFF0830 \u5929\u540E\u81EA\u52A8\u6C38\u4E45\u5220\u9664\uFF09",{label:"\u64A4\u9500",onClick:()=>{Ne.restore(x).then(T=>r(Q=>Q===null?Q:{...Q,docs:Q.docs.map(Pe=>Pe.id===x?T:Pe)}),T=>e.toast("\u6062\u590D\u5931\u8D25\uFF1A"+Je(T)))}})}catch(P){e.toast("\u5220\u9664\u5931\u8D25\uFF1A"+Je(P))}},[l,L,e]),$e=(0,G.useCallback)(async()=>{let x=L.doc;if(x===null)return;let P=n?.docs.find(T=>T.id===x.id);try{let T=await Ne.createDoc({copy:x,title:x.title+" \u526F\u672C",folderId:P?.folderId??null});L.resolveConflict("theirs"),r(Q=>Q===null?Q:{...Q,docs:[...Q.docs,T.meta]}),c(T.meta.id),e.toast("\u4F60\u7684\u4FEE\u6539\u5DF2\u53E6\u5B58\u4E3A\u300C"+T.meta.title+"\u300D")}catch(T){e.toast("\u53E6\u5B58\u5931\u8D25\uFF1A"+Je(T))}},[L,n,e]),ye=(0,G.useCallback)(async x=>{if(E===null||B===null)return;let P=B,T=P===E.rootId?E.title:E.nodes[P].text.split(`
|
|
35
|
+
`)[0];try{if(x==="md"||x==="copy-md"){let Q=Ht(E,P,T);if(x==="copy-md"){await navigator.clipboard.writeText(Q),e.toast("\u5DF2\u590D\u5236 Markdown");return}yt(wt(T,"md"),new Blob([Q],{type:"text/markdown;charset=utf-8"}))}else if(x==="opml")yt(wt(T,"opml"),new Blob([Jn(E,P,T)],{type:"text/x-opml;charset=utf-8"}));else{let Q=t.current,Pe=jr(E,P,T,Q,{title:null,background:x==="png"?"theme":"transparent"}),u=()=>new Blob([Pe.svg],{type:"image/svg+xml;charset=utf-8"});if(x==="svg"){yt(wt(T,"svg"),u());return}let k=async()=>{await e.confirm({title:"\u5BFC\u56FE\u8FC7\u5927\uFF0C\u65E0\u6CD5\u5BFC\u51FA PNG",message:"\u5C3A\u5BF8\u8D85\u8FC7\u6D4F\u89C8\u5668\u753B\u5E03\u4E0A\u9650\uFF0C\u6539\u4E3A\u5BFC\u51FA SVG\uFF1F",ok:"\u5BFC\u51FA SVG"})&&yt(wt(T,"svg"),u())};if(!Tn(Pe.width,Pe.height,2)){await k();return}try{yt(wt(T,"png"),await $r(Pe.svg,Pe.width,Pe.height,2))}catch(R){if(R instanceof Rt){await k();return}throw R}}}catch(Q){e.toast("\u5BFC\u51FA\u5931\u8D25\uFF1A"+Je(Q))}},[E,B,e]),Ce=()=>E===null?[]:[{kind:"label",label:B!==E.rootId?"\u5BFC\u51FA\u5F53\u524D\u805A\u7126\u7684\u8282\u70B9":"\u5BFC\u51FA\u6574\u7BC7\u6587\u6863"},{label:"\u5BFC\u51FA Markdown (.md)",onSelect:()=>{ye("md")}},{label:"\u5BFC\u51FA OPML (.opml)",onSelect:()=>{ye("opml")}},{label:"\u5BFC\u51FA\u56FE\u7247 (.png)",onSelect:()=>{ye("png")}},{label:"\u5BFC\u51FA\u77E2\u91CF\u56FE (.svg)",onSelect:()=>{ye("svg")}},{label:"\u590D\u5236\u4E3A Markdown",onSelect:()=>{ye("copy-md")}}],W=(0,G.useRef)(null),O=(0,G.useCallback)(async x=>{if(x!==null)for(let P of Array.from(x))try{if(P.size>8*1024*1024)throw new Error("\u6587\u4EF6\u8D85\u8FC7 8 MB");let T=await P.text(),Q=P.name.replace(/\.[^.]+$/,"");if(/\.(opml|xml)$/i.test(P.name)||/^\s*<\?xml|^\s*<opml/i.test(T)){let u=Qn(T);await Ke({opml:T,title:u.title??Q})}else{let u=ln(T);await Ke({markdown:T,title:u.title??Q})}e.toast("\u5DF2\u5BFC\u5165\u300C"+P.name+"\u300D")}catch(T){e.toast("\u5BFC\u5165\u5931\u8D25\uFF1A"+Je(T))}},[Ke,e]),ce=(0,G.useCallback)(()=>{e.show({title:"\u5907\u4EFD\u4E0E\u6062\u590D",body:x=>(0,M.jsx)(vi,{close:x,onRestored:async()=>{x(),await j(),L.reload()}})})},[e,j,L]),me=x=>{let P=x.target,T=x.ctrlKey||x.metaKey;if(P.closest(".mm-modal")===null){if(T&&!x.altKey&&(x.key==="/"||x.code==="Slash")){x.preventDefault(),ve();return}if(T&&!x.altKey&&!x.shiftKey&&(x.key==="f"||x.key==="F"||x.key==="h"||x.key==="H")&&E!==null&&P.closest(".mm-side")===null){x.preventDefault(),w("outline"),$(Q=>Q+1);return}if(P.closest("textarea,input,.mm-map")===null){if(x.key==="?"&&!T){x.preventDefault(),ve();return}T&&(x.key==="z"||x.key==="Z")?(x.preventDefault(),x.shiftKey?L.redo():L.undo()):T&&(x.key==="y"||x.key==="Y")&&(x.preventDefault(),L.redo())}}},Le=L.status==="saved"?"\u5DF2\u4FDD\u5B58":L.status==="saving"?"\u4FDD\u5B58\u4E2D\u2026":L.status==="dirty"?"\u672A\u4FDD\u5B58":L.status==="conflict"?"\u4FDD\u5B58\u51B2\u7A81":"\u4FDD\u5B58\u5931\u8D25",he=n?.docs.find(x=>x.id===l),ae=(0,G.useRef)(me);return ae.current=me,(0,G.useEffect)(()=>{let x=P=>{P.target!==document.body||t.current===null||!t.current.isConnected||ae.current(P)};return document.addEventListener("keydown",x),()=>document.removeEventListener("keydown",x)},[]),(0,M.jsxs)("div",{ref:t,className:"mm-app"+(ge?" mm-side-open":""),onKeyDown:me,children:[(0,M.jsx)("div",{className:"mm-scrim",onClick:()=>J(!1)}),(0,M.jsx)(fr,{library:n,error:o,activeId:l,onOpen:De,onCreate:(x,P)=>{Ke(P===void 0?{folderId:x}:{folderId:x,markdown:P})},onPatch:Ie,onTrash:ke,onRefresh:j,onMenu:U,onImport:()=>W.current?.click(),onBackups:ce,onChanged:r}),(0,M.jsx)("input",{ref:W,type:"file",accept:".md,.markdown,.txt,.opml,.xml",multiple:!0,hidden:!0,onChange:x=>{O(x.target.files),x.target.value=""}}),(0,M.jsxs)("main",{className:"mm-main",children:[(0,M.jsxs)("div",{className:"mm-toolbar",children:[(0,M.jsx)("button",{type:"button",className:"mm-icon-btn mm-side-toggle","aria-label":"\u6587\u6863\u5217\u8868",onClick:()=>J(x=>!x),children:(0,M.jsx)(Se,{name:"menu"})}),E!==null?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)("div",{className:"mm-seg",role:"tablist","aria-label":"\u89C6\u56FE",children:[(0,M.jsx)("button",{type:"button",role:"tab","aria-selected":d==="outline",className:d==="outline"?"mm-on":"",onClick:()=>w("outline"),children:"\u5927\u7EB2"}),(0,M.jsx)("button",{type:"button",role:"tab","aria-selected":d==="map",className:d==="map"?"mm-on":"",onClick:()=>w("map"),children:"\u5BFC\u56FE"})]}),(0,M.jsx)("span",{className:"mm-sep"}),(0,M.jsx)("button",{type:"button",className:"mm-icon-btn",title:"\u64A4\u9500 (Ctrl+Z)","aria-label":"\u64A4\u9500",disabled:!L.canUndo,onMouseDown:x=>x.preventDefault(),onClick:L.undo,children:(0,M.jsx)(Se,{name:"undo"})}),(0,M.jsx)("button",{type:"button",className:"mm-icon-btn",title:"\u91CD\u505A (Ctrl+Shift+Z)","aria-label":"\u91CD\u505A",disabled:!L.canRedo,onMouseDown:x=>x.preventDefault(),onClick:L.redo,children:(0,M.jsx)(Se,{name:"redo"})}),(0,M.jsx)("button",{type:"button",className:"mm-icon-btn mm-secondary",title:"\u5168\u90E8\u5C55\u5F00","aria-label":"\u5168\u90E8\u5C55\u5F00",onClick:()=>B!==null&&L.apply(It(E,B,!1),{noHistory:!0}),children:(0,M.jsx)(Se,{name:"expand"})}),(0,M.jsx)("button",{type:"button",className:"mm-icon-btn mm-secondary",title:"\u5168\u90E8\u6298\u53E0","aria-label":"\u5168\u90E8\u6298\u53E0",onClick:()=>B!==null&&L.apply(It(E,B,!0),{noHistory:!0}),children:(0,M.jsx)(Se,{name:"collapse"})}),(0,M.jsx)("span",{className:"mm-grow"}),(0,M.jsx)("span",{className:"mm-status"+(L.status==="error"||L.status==="conflict"?" mm-err":""),title:L.statusMessage??void 0,"aria-live":"polite",children:Le}),(0,M.jsx)("button",{type:"button",className:"mm-icon-btn mm-secondary",title:"\u5BFC\u51FA","aria-label":"\u5BFC\u51FA",onClick:x=>{let P=x.currentTarget.getBoundingClientRect();U({x:P.right-180,y:P.bottom+4,items:Ce()})},children:(0,M.jsx)(Se,{name:"download"})}),(0,M.jsx)("button",{type:"button",className:"mm-icon-btn mm-secondary",title:"\u5FEB\u6377\u952E (Ctrl+/)","aria-label":"\u5FEB\u6377\u952E",onClick:ve,children:(0,M.jsx)("span",{"aria-hidden":"true",style:{fontWeight:600,fontSize:14},children:"?"})}),(0,M.jsx)("button",{type:"button",className:"mm-icon-btn",title:"\u66F4\u591A","aria-label":"\u66F4\u591A",onClick:x=>{let P=x.currentTarget.getBoundingClientRect(),T=he;U({x:P.right-200,y:P.bottom+4,items:[{label:T?.favorite===!0?"\u53D6\u6D88\u6536\u85CF":"\u6536\u85CF",disabled:T===void 0,onSelect:()=>T!==void 0&&void Ie(T.id,{favorite:!T.favorite})},{label:"\u67E5\u627E\u548C\u66FF\u6362",shortcut:"Ctrl+F",onSelect:()=>{w("outline"),$(Q=>Q+1)}},{label:"\u5168\u90E8\u5C55\u5F00",onSelect:()=>B!==null&&L.apply(It(E,B,!1),{noHistory:!0})},{label:"\u5168\u90E8\u6298\u53E0",onSelect:()=>B!==null&&L.apply(It(E,B,!0),{noHistory:!0})},{label:"\u7ACB\u5373\u4FDD\u5B58",onSelect:()=>{L.flush()}},{kind:"sep"},...Ce(),{kind:"sep"},{label:"\u5FEB\u6377\u952E",shortcut:"Ctrl+/",onSelect:ve},{label:"\u5220\u9664\u6587\u6863",danger:!0,onSelect:()=>{ke(E.id)}}]})},children:(0,M.jsx)(Se,{name:"more"})})]}):(0,M.jsx)("span",{className:"mm-grow"})]}),L.conflict!==null?(0,M.jsxs)("div",{className:"mm-banner",role:"alert",children:[(0,M.jsx)("span",{className:"mm-grow",children:"\u8FD9\u7BC7\u6587\u6863\u5728\u522B\u5904\u88AB\u4FEE\u6539\u8FC7\uFF08\u4F8B\u5982\u53E6\u4E00\u4E2A\u7A97\u53E3\uFF09\u3002\u4F60\u7684\u4FEE\u6539\u5C1A\u672A\u4FDD\u5B58\u3002"}),(0,M.jsx)("button",{type:"button",className:"mm-btn",onClick:()=>L.resolveConflict("theirs"),children:"\u8F7D\u5165\u5BF9\u65B9\u7248\u672C"}),(0,M.jsx)("button",{type:"button",className:"mm-btn",onClick:()=>{$e()},children:"\u53E6\u5B58\u4E3A\u526F\u672C"}),(0,M.jsx)("button",{type:"button",className:"mm-btn mm-primary",onClick:()=>L.resolveConflict("mine"),children:"\u4FDD\u7559\u6211\u7684"})]}):null,L.status==="error"&&L.statusMessage!==null?(0,M.jsxs)("div",{className:"mm-banner",role:"alert",children:[(0,M.jsx)("span",{className:"mm-grow",children:L.statusMessage}),(0,M.jsx)("button",{type:"button",className:"mm-btn",onClick:()=>{L.flush()},children:"\u91CD\u8BD5"})]}):null,E===null||B===null?(0,M.jsx)("div",{className:"mm-blank",children:L.loading?"\u52A0\u8F7D\u4E2D\u2026":L.loadError!==null?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsxs)("span",{children:["\u65E0\u6CD5\u6253\u5F00\u6587\u6863\uFF1A",L.loadError]}),(0,M.jsx)("button",{type:"button",className:"mm-btn",onClick:L.reload,children:"\u91CD\u8BD5"})]}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)("span",{children:n!==null&&n.docs.some(x=>x.trashedAt===void 0)?"\u4ECE\u5DE6\u4FA7\u9009\u62E9\u4E00\u7BC7\u6587\u6863":"\u8FD8\u6CA1\u6709\u6587\u6863"}),(0,M.jsx)("button",{type:"button",className:"mm-btn mm-primary",onClick:()=>{Ke()},children:"\u65B0\u5EFA\u6587\u6863"})]})}):d==="outline"?(0,M.jsxs)("div",{className:"mm-doc",children:[(0,M.jsxs)("div",{className:"mm-doc-inner",children:[(0,M.jsx)(xi,{doc:E,rootId:B,state:L,onZoom:x=>g(x===E.rootId?null:x)}),(0,M.jsx)(Ar,{state:L,doc:E,rootId:B,onZoom:x=>g(x===E.rootId?null:x),onMenu:U,findRequest:_,tagFilter:A,onTagFilter:C,onFocusTitle:()=>{let x=document.querySelector(".mm-app .mm-title");x!==null&&(x.focus(),x.setSelectionRange(x.value.length,x.value.length))}})]}),(0,M.jsx)(wi,{doc:E,rootId:B})]}):(0,M.jsx)(Yr,{state:L,doc:E,rootId:B,rootLabel:B===E.rootId?E.title:E.nodes[B].text,onMenu:U,selected:D,onSelect:b,onEditInOutline:x=>{w("outline"),ue(E,x)}})]}),N!==null?(0,M.jsx)(or,{x:N.x,y:N.y,items:N.items,onClose:()=>U(null)}):null]})}function xi(e){let{doc:t,rootId:n,state:r}=e,o=(0,G.useRef)(null),i=n!==t.rootId,l=i?t.nodes[n].text:t.title,[c,d]=(0,G.useState)(l),a=(0,G.useRef)(!1);(0,G.useEffect)(()=>{a.current||d(l)},[l]),(0,G.useEffect)(()=>{let b=o.current;b!==null&&(b.style.height="0px",b.style.height=b.scrollHeight+"px")}),(0,G.useEffect)(()=>{let b=t.nodes[t.rootId].children;!i&&t.title==="\u672A\u547D\u540D\u6587\u6863"&&b.length===1&&t.nodes[b[0]].text===""&&t.revision===0&&(o.current?.focus(),o.current?.select())},[t.id]);let m=b=>{i?r.apply(qe(t,n,b),{key:"text:"+n}):r.apply({...t,title:b},{key:"title"})},g=()=>{let b=t.nodes[n].children;if(b.length>0)r.requestFocus(b[0],"end");else{let N=tt(t,n,0);r.apply(N.doc,{focus:{id:N.focusId,caret:0}})}},D=i?[...bt(t,n)]:[];return(0,M.jsxs)(M.Fragment,{children:[i?(0,M.jsx)("nav",{className:"mm-crumbs","aria-label":"\u8DEF\u5F84",children:D.map((b,N)=>(0,M.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[N>0?(0,M.jsx)(Se,{name:"chevronRight",size:12}):null,(0,M.jsx)("button",{type:"button",onClick:()=>e.onZoom(b),children:b===t.rootId?t.title:t.nodes[b].text.split(`
|
|
36
|
+
`)[0]||"\uFF08\u7A7A\uFF09"})]},b))}):null,(0,M.jsx)("textarea",{ref:o,className:i?"mm-title mm-zoom-title":"mm-title",rows:1,value:i?l:c,placeholder:i?"\uFF08\u7A7A\u8282\u70B9\uFF09":"\u6587\u6863\u6807\u9898","aria-label":i?"\u8282\u70B9\u5185\u5BB9":"\u6587\u6863\u6807\u9898",spellCheck:!1,onFocus:()=>{a.current=!0},onBlur:()=>{a.current=!1,r.breakMerge(),!i&&c.trim().length===0&&d(t.title)},onChange:b=>{let N=i?b.target.value:b.target.value.replace(/\n/g," ");i?m(N):(d(N),N.trim().length>0&&m(N))},onKeyDown:b=>{if(!(b.nativeEvent.isComposing||b.keyCode===229)){if(b.key==="Enter"&&!b.shiftKey)b.preventDefault(),g();else if(b.key==="ArrowDown"){let N=b.currentTarget;N.selectionStart===N.value.length&&(b.preventDefault(),g())}}}})]})}function vi(e){let t=pt(),[n,r]=(0,G.useState)(null),[o,i]=(0,G.useState)(!1),l=(0,G.useRef)(null),c=(0,G.useCallback)(()=>{Ne.backups().then(r,g=>t.toast("\u8BFB\u53D6\u5907\u4EFD\u5931\u8D25\uFF1A"+Je(g)))},[t]);(0,G.useEffect)(c,[c]);let[d,a]=(0,G.useState)([]);(0,G.useEffect)(()=>{Ne.quarantine().then(a,()=>a([]))},[]);let m=async(g,D)=>{if(await t.confirm({title:"\u6062\u590D\u5907\u4EFD",message:"\u7528"+D+`\u8986\u76D6\u5F53\u524D\u6240\u6709\u6587\u6863\uFF1F
|
|
37
|
+
\u6062\u590D\u524D\u4F1A\u81EA\u52A8\u5907\u4EFD\u5F53\u524D\u6570\u636E\uFF0C\u53EF\u4EE5\u518D\u6062\u590D\u56DE\u6765\u3002`,ok:"\u6062\u590D",danger:!0})){i(!0);try{let N=await g();t.toast("\u5DF2\u6062\u590D "+N.docs+" \u7BC7\u6587\u6863\uFF1B\u539F\u6570\u636E\u5DF2\u5907\u4EFD\u4E3A "+N.preRestore),await e.onRestored()}catch(N){t.toast("\u6062\u590D\u5931\u8D25\uFF1A"+Je(N))}finally{i(!1)}}};return(0,M.jsxs)("div",{children:[(0,M.jsx)("p",{style:{margin:"0 0 10px",color:"var(--mm-sub)"},children:"\u6BCF\u5929\u9996\u6B21\u4FDD\u5B58\u524D\u81EA\u52A8\u5907\u4EFD\u4E00\u6B21\uFF08\u4FDD\u7559 14 \u4EFD\uFF09\uFF1B\u53E6\u4FDD\u7559\u6700\u8FD1 10 \u4EFD\u624B\u52A8\u5907\u4EFD\u30015 \u4EFD\u6062\u590D\u524D\u5907\u4EFD\u548C 5 \u4EFD\u6C38\u4E45\u5220\u9664\u524D\u5907\u4EFD\u3002\u6570\u636E\u4FDD\u5B58\u5728\u672C\u673A ~/.dsh/dsh-mindmap\u3002"}),(0,M.jsxs)("div",{style:{display:"flex",gap:8,marginBottom:10},children:[(0,M.jsx)("button",{type:"button",className:"mm-btn mm-primary",disabled:o,onClick:async()=>{i(!0);try{let g=await Ne.backupNow();t.toast("\u5DF2\u5907\u4EFD\uFF1A"+g.name),c()}catch(g){t.toast("\u5907\u4EFD\u5931\u8D25\uFF1A"+Je(g))}finally{i(!1)}},children:"\u7ACB\u5373\u5907\u4EFD"}),(0,M.jsx)("button",{type:"button",className:"mm-btn",disabled:o,onClick:()=>l.current?.click(),children:"\u4ECE\u6587\u4EF6\u6062\u590D\u2026"}),(0,M.jsx)("input",{ref:l,type:"file",accept:".json,application/json",hidden:!0,onChange:async g=>{let D=g.target.files?.[0];if(g.target.value="",D===void 0)return;let b;try{b=JSON.parse(await D.text())}catch{t.toast("\u4E0D\u662F\u6709\u6548\u7684\u5907\u4EFD\u6587\u4EF6");return}await m(()=>Ne.restoreFile(b),"\u6587\u4EF6\u300C"+D.name+"\u300D")}})]}),n===null?(0,M.jsx)("div",{className:"mm-empty",children:"\u52A0\u8F7D\u4E2D\u2026"}):n.length===0?(0,M.jsx)("div",{className:"mm-empty",children:"\u8FD8\u6CA1\u6709\u5907\u4EFD"}):n.map(g=>(0,M.jsxs)("div",{className:"mm-backup-row",children:[(0,M.jsxs)("span",{title:g.name,children:[new Date(g.createdAt).toLocaleString(),(0,M.jsx)("br",{}),(0,M.jsxs)("small",{style:{color:"var(--mm-sub)"},children:[yi[g.kind??"manual"]," \xB7 ",(g.size/1024).toFixed(1)," KB"]})]}),(0,M.jsx)("a",{className:"mm-btn",style:{display:"inline-flex",alignItems:"center",textDecoration:"none"},href:Ne.backupUrl(g.name),download:g.name,children:"\u4E0B\u8F7D"}),(0,M.jsx)("button",{type:"button",className:"mm-btn",disabled:o,onClick:()=>{m(()=>Ne.restoreBackup(g.name),"\u5907\u4EFD "+g.name)},children:"\u6062\u590D"})]},g.name)),d.length>0?(0,M.jsxs)("div",{style:{marginTop:14},children:[(0,M.jsx)("div",{className:"mm-menu-label",style:{padding:"4px 0"},children:"\u5DF2\u9694\u79BB\u7684\u635F\u574F\u6587\u4EF6\uFF08\u672A\u5220\u9664\uFF0C\u53EF\u624B\u52A8\u68C0\u67E5\uFF09"}),d.map(g=>(0,M.jsx)("div",{className:"mm-backup-row",children:(0,M.jsxs)("span",{children:[(0,M.jsx)("code",{className:"mm-code",children:g.name}),(0,M.jsx)("br",{}),(0,M.jsxs)("small",{style:{color:"var(--mm-sub)"},children:[new Date(g.createdAt).toLocaleString()," \xB7 ",(g.size/1024).toFixed(1)," KB"]})]})},g.name))]}):null]})}var yi={daily:"\u6BCF\u65E5\u81EA\u52A8",manual:"\u624B\u52A8","pre-restore":"\u6062\u590D\u524D",purge:"\u6C38\u4E45\u5220\u9664\u524D"};function wi(e){let t=(0,G.useMemo)(()=>nr(e.doc,e.rootId),[e.doc,e.rootId]);return(0,M.jsxs)("div",{className:"mm-statusbar","aria-label":"\u7EDF\u8BA1",children:[(0,M.jsxs)("span",{children:[t.nodes," \u4E2A\u8282\u70B9"]}),(0,M.jsxs)("span",{children:[t.chars," \u5B57"]}),t.todo>0?(0,M.jsxs)("span",{children:["\u5F85\u529E ",t.done,"/",t.todo]}):null]})}var ki=[["\u7F16\u8F91",[["Enter","\u65B0\u5EFA\u540C\u7EA7\u8282\u70B9\uFF08\u5728\u5149\u6807\u5904\u62C6\u5206\uFF09"],["Tab / Shift+Tab","\u7F29\u8FDB / \u53D6\u6D88\u7F29\u8FDB"],["Shift+Enter","\u6DFB\u52A0\u6216\u7F16\u8F91\u5907\u6CE8"],["Alt+Enter","\u8282\u70B9\u5185\u6362\u884C"],["Backspace\uFF08\u884C\u9996\uFF09","\u4E0E\u4E0A\u4E00\u8282\u70B9\u5408\u5E76"],["Delete\uFF08\u884C\u5C3E\uFF09","\u5408\u5E76\u4E0B\u4E00\u8282\u70B9"],["Ctrl+Shift+Backspace","\u5220\u9664\u5F53\u524D\u8282\u70B9"],["Ctrl+Enter","\u6807\u8BB0\u5B8C\u6210"],["Ctrl+B / Ctrl+I","\u7C97\u4F53 / \u659C\u4F53"],["Ctrl+E / Ctrl+Shift+S","\u4EE3\u7801 / \u5220\u9664\u7EBF"]]],["\u79FB\u52A8\u4E0E\u6298\u53E0",[["\u2191 / \u2193","\u4E0A / \u4E0B\u4E00\u884C"],["Alt+\u2191 / Alt+\u2193","\u4E0A\u79FB / \u4E0B\u79FB\u8282\u70B9"],["Ctrl+.","\u6298\u53E0 / \u5C55\u5F00"],["Ctrl+\u2191 / Ctrl+\u2193","\u6298\u53E0 / \u5C55\u5F00"],["Alt+\u2192 / Alt+\u2190","\u805A\u7126\u8282\u70B9 / \u8FD4\u56DE\u4E0A\u4E00\u7EA7"]]],["\u9009\u62E9",[["Esc","\u9000\u51FA\u7F16\u8F91\u5E76\u9009\u4E2D\u8282\u70B9"],["Shift+\u2191 / Shift+\u2193","\u6269\u5C55\u9009\u62E9"],["Ctrl+C / Ctrl+X / Ctrl+V","\u590D\u5236 / \u526A\u5207 / \u7C98\u8D34\u8282\u70B9"]]],["\u5168\u5C40",[["Ctrl+Z / Ctrl+Shift+Z","\u64A4\u9500 / \u91CD\u505A"],["Ctrl+F","\u67E5\u627E\u548C\u66FF\u6362"],["Alt+1\u20269","\u6253\u5F00\u7B2C n \u7BC7\u6536\u85CF"],["Ctrl+/ \u6216 ?","\u663E\u793A\u5FEB\u6377\u952E"]]],["\u5BFC\u56FE",[["Tab / Enter","\u6DFB\u52A0\u5B50 / \u540C\u7EA7\u8282\u70B9"],["F2 \u6216 Space","\u7F16\u8F91\u8282\u70B9"],["\u65B9\u5411\u952E","\u5728\u8282\u70B9\u95F4\u79FB\u52A8"],["Delete","\u5220\u9664\u8282\u70B9"],["\u62D6\u52A8\u7A7A\u767D\u5904 / \u6EDA\u8F6E","\u5E73\u79FB / \u7F29\u653E"]]]];function Mi(){return(0,M.jsx)("div",{className:"mm-shortcuts",children:ki.map(([e,t])=>(0,M.jsxs)("section",{children:[(0,M.jsx)("h4",{children:e}),(0,M.jsx)("dl",{children:t.map(([n,r])=>(0,M.jsxs)("div",{children:[(0,M.jsx)("dt",{children:(0,M.jsx)("kbd",{children:n})}),(0,M.jsx)("dd",{children:r})]},n))})]},e))})}var Di='body[data-ds-dark-theme]:not([data-ds-dark-theme="false"])',to=e=>(e?Sn:En).map((t,n)=>(e?Di+" ":"")+".mm-map .mm-b"+n+"{--mm-bc:"+t+";--mm-bt:"+Cn(t,e?In:Nn)+"}").join(`
|
|
38
|
+
`),no=[to(!1),to(!0),".mm-map-edge{fill:none;stroke:var(--mm-bc,var(--mm-border-strong));stroke-width:1.5}",".mm-map-edge.mm-taper{fill:var(--mm-bc,var(--mm-border-strong));stroke:none}",".mm-map-node rect.mm-box{fill:var(--mm-elev);stroke:var(--mm-bc,var(--mm-border-strong));stroke-opacity:.55;stroke-width:1}",".mm-map-node.mm-d1 rect.mm-under{fill:var(--mm-elev);stroke:none}",".mm-map-node.mm-d1 rect.mm-box{fill:var(--mm-bt,var(--mm-panel));stroke-opacity:1;stroke-width:1.5}",".mm-map-node.mm-root rect.mm-box{fill:var(--mm-accent);stroke:var(--mm-accent);stroke-opacity:1}",".mm-map-node.mm-root text{fill:#fff;font-weight:600;font-size:17px}",".mm-map-node:hover rect.mm-box{stroke-opacity:1}",".mm-map-node rect.mm-map-check-on{stroke:none;fill:var(--mm-bc,var(--mm-accent))}",".mm-map-node rect.mm-map-check-off{fill:none;stroke:var(--mm-sub)}",".mm-map-tick{fill:none;stroke:#fff;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}",".mm-map-toggle circle{fill:var(--mm-elev);stroke:var(--mm-bc,var(--mm-border-strong))}",".mm-map-node .mm-map-toggle text{fill:var(--mm-sub);font-size:10px;font-weight:400;text-decoration:none;text-anchor:middle;dominant-baseline:central}",".mm-map-toggle.mm-open{opacity:0;transition:opacity .12s}",".mm-map-node:hover .mm-map-toggle.mm-open,.mm-map-selection .mm-map-toggle.mm-open{opacity:1}",".mm-map-selring{fill:none;stroke:var(--mm-accent);stroke-width:2;pointer-events:none}",".mm-map-drop-inside{fill:none;stroke:var(--mm-accent);stroke-width:2;stroke-dasharray:5 3;pointer-events:none}",".mm-map-drop-line{stroke:var(--mm-accent);stroke-width:3;stroke-linecap:round;pointer-events:none}",".mm-map-drop-bad{stroke:var(--mm-danger)}",".mm-map-ghost{opacity:.55;pointer-events:none}",".mm-map-ghost rect{fill:var(--mm-elev);stroke:var(--mm-accent);stroke-width:1.5}",".mm-map-ghost text{fill:var(--mm-text);font-size:14px;dominant-baseline:central}",".mm-map.mm-dragging,.mm-map.mm-dragging *{cursor:grabbing}",".mm-map-edit.mm-root-edit{font-size:17px;line-height:24px;font-weight:600}",".mm-map-hint{background:var(--mm-elev);border:1px solid var(--mm-border);border-radius:6px;padding:4px 10px;box-shadow:0 2px 8px rgba(0,0,0,.06)}",".mm-map-zoom{font-size:12px;color:var(--mm-sub);min-width:44px;height:26px;text-align:center;background:none;border:0;border-radius:6px;cursor:pointer;font-variant-numeric:tabular-nums}",".mm-map-zoom:hover{background:var(--mm-hover);color:var(--mm-text)}",".mm-map-seg{display:flex;gap:1px;margin-right:4px;padding-right:4px;border-right:1px solid var(--mm-border)}",".mm-map-seg button{height:26px;padding:0 8px;font-size:12px;border:0;border-radius:6px;background:none;color:var(--mm-sub);cursor:pointer}",".mm-map-seg button:hover{background:var(--mm-hover);color:var(--mm-text)}",".mm-map-seg button[aria-pressed='true']{color:var(--mm-accent);background:var(--mm-hover);font-weight:600}"].join(`
|
|
39
|
+
`);var ro=`/* v0.2 app chrome: sidebar extras, toast action, status bar, shortcuts, responsive */
|
|
40
|
+
.mm-row-more{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex:none;border:0;border-radius:4px;background:transparent;color:var(--mm-sub);cursor:pointer;opacity:0;padding:0}
|
|
41
|
+
.mm-row:hover .mm-row-more,.mm-row:focus-within .mm-row-more,.mm-row:focus .mm-row-more{opacity:1}
|
|
42
|
+
.mm-row-more:hover{background:var(--mm-hover);color:var(--mm-text)}
|
|
43
|
+
.mm-row:hover .mm-row-time{display:none}
|
|
44
|
+
.mm-row-star{display:inline-flex;color:#e8a317;flex:none}
|
|
45
|
+
.mm-folder-arrow{display:inline-flex;color:var(--mm-sub);transition:transform .12s;flex:none}
|
|
46
|
+
.mm-drop-into{background:var(--dsw-active,rgba(57,100,254,.12))!important;box-shadow:inset 0 0 0 1px var(--mm-accent);border-radius:6px}
|
|
47
|
+
.mm-sort-btn{display:inline-flex;align-items:center;gap:2px;border:0;background:transparent;color:var(--mm-sub);font-size:12px;cursor:pointer;padding:0 2px;border-radius:4px}
|
|
48
|
+
.mm-sort-btn:hover{color:var(--mm-text);background:var(--mm-hover)}
|
|
49
|
+
.mm-trash-note{display:flex;align-items:center;gap:6px;padding:2px 8px 4px 30px;font-size:11px;color:var(--mm-sub)}
|
|
50
|
+
.mm-link-btn{border:0;background:transparent;padding:0;font-size:11px;cursor:pointer;color:var(--mm-accent)}
|
|
51
|
+
.mm-link-btn.mm-danger{color:var(--mm-danger)}
|
|
52
|
+
.mm-link-btn:hover{text-decoration:underline}
|
|
53
|
+
.mm-trashed .mm-row-title{color:var(--mm-sub)}
|
|
54
|
+
.mm-btn.mm-mini{height:22px;padding:0 6px;font-size:12px;flex:none}
|
|
55
|
+
.mm-side-foot{display:flex;gap:8px;border-top:1px solid var(--mm-border);padding:8px 12px}
|
|
56
|
+
.mm-side-foot .mm-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px}
|
|
57
|
+
.mm-preview{max-height:46vh;overflow:auto;border:1px solid var(--mm-border);border-radius:8px;padding:8px 10px;background:var(--mm-panel)}
|
|
58
|
+
.mm-preview-row{font-size:13px;line-height:1.7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
59
|
+
.mm-modal-area{width:100%;min-height:180px;resize:vertical;border:1px solid var(--mm-border-strong);border-radius:6px;padding:8px;font:inherit;font-family:var(--mm-mono);font-size:12.5px;background:var(--mm-bg);color:var(--mm-text);outline:0}
|
|
60
|
+
.mm-modal-area:focus{border-color:var(--mm-accent)}
|
|
61
|
+
.mm-toast{display:flex;align-items:center;gap:12px;max-width:calc(100% - 32px)}
|
|
62
|
+
.mm-toast-btn{border:0;background:transparent;color:inherit;font-weight:600;cursor:pointer;padding:0 2px;text-decoration:underline;flex:none}
|
|
63
|
+
.mm-statusbar{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:14px;padding:4px 16px;font-size:11px;color:var(--mm-sub);background:linear-gradient(to bottom,transparent,var(--mm-bg) 40%);pointer-events:none;user-select:none}
|
|
64
|
+
.mm-shortcuts{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:4px 20px}
|
|
65
|
+
.mm-shortcuts h4{margin:10px 0 4px;font-size:12px;color:var(--mm-sub);font-weight:600}
|
|
66
|
+
.mm-shortcuts dl{margin:0}
|
|
67
|
+
.mm-shortcuts dl>div{display:flex;justify-content:space-between;gap:10px;padding:3px 0;border-bottom:1px solid var(--mm-border);font-size:12.5px}
|
|
68
|
+
.mm-shortcuts dt{flex:none}
|
|
69
|
+
.mm-shortcuts dd{margin:0;color:var(--mm-sub);text-align:right}
|
|
70
|
+
.mm-shortcuts kbd{font-family:var(--mm-mono);font-size:11.5px;background:var(--mm-panel);border:1px solid var(--mm-border-strong);border-radius:4px;padding:0 5px}
|
|
71
|
+
.mm-modal:has(.mm-shortcuts){width:min(640px,calc(100vw - 32px))}
|
|
72
|
+
.mm-app :focus-visible{outline:2px solid var(--mm-accent);outline-offset:-2px}
|
|
73
|
+
.mm-app textarea:focus-visible,.mm-app input:focus-visible{outline:0}
|
|
74
|
+
body[data-ds-dark-theme] .mm-app{color-scheme:dark}
|
|
75
|
+
.mm-app input[type=checkbox]{accent-color:var(--mm-accent)}
|
|
76
|
+
@media (prefers-color-scheme:dark){
|
|
77
|
+
.mm-app{--mm-bg:var(--dsw-bg,#1b1c1f);--mm-panel:var(--dsw-bg-panel,#232428);--mm-hover:var(--dsw-bg-hover,rgba(255,255,255,.06));--mm-elev:var(--dsw-bg-elevated,#2a2b30);--mm-text:var(--dsw-text-primary,var(--dsw-text,#e6e6e9));--mm-sub:var(--dsw-text-secondary,#9a9ca5);--mm-border:var(--dsw-border,rgba(255,255,255,.08));--mm-border-strong:var(--dsw-border-strong,rgba(255,255,255,.16))}
|
|
78
|
+
}
|
|
79
|
+
@media (hover:none){
|
|
80
|
+
.mm-row-more{opacity:1}
|
|
81
|
+
.mm-row:hover .mm-row-time{display:inline}
|
|
82
|
+
}
|
|
83
|
+
@media (max-width:560px){
|
|
84
|
+
.mm-secondary{display:none!important}
|
|
85
|
+
.mm-toolbar{padding:6px 8px;gap:2px}
|
|
86
|
+
.mm-doc-inner{padding:16px 12px 120px}
|
|
87
|
+
.mm-statusbar{padding:4px 10px}
|
|
88
|
+
}
|
|
89
|
+
@media (max-width:420px){
|
|
90
|
+
.mm-side{width:86vw;flex-basis:86vw}
|
|
91
|
+
.mm-modal{width:calc(100vw - 16px);padding:16px}
|
|
92
|
+
.mm-toolbar .mm-status{display:none}
|
|
93
|
+
}
|
|
94
|
+
`;var oo=[".mm-body{flex:1;min-width:0;display:flex;flex-direction:column}",".mm-body>.mm-text,.mm-body>.mm-input{flex:none}",".mm-done>.mm-body>.mm-text,.mm-done>.mm-body>.mm-input{color:var(--mm-sub);text-decoration:line-through}",".mm-node:focus{outline:0}",".mm-node:focus-visible{box-shadow:inset 0 0 0 2px var(--mm-accent)}",".mm-node.mm-selected{background:rgba(57,100,254,.12);background:color-mix(in srgb,var(--mm-accent) 14%,transparent)}",".mm-node.mm-selected:focus-visible{box-shadow:inset 0 0 0 1px var(--mm-accent)}",".mm-note{font-size:12.5px;line-height:20px;color:var(--mm-sub);padding:0 2px 4px;white-space:pre-wrap;word-break:break-word;cursor:text}",".mm-note-input{display:block;width:100%;box-sizing:border-box;min-height:24px;margin:0;border:0;outline:0;resize:none;overflow:hidden;background:transparent;font-family:inherit;color:var(--mm-text);border-left:2px solid var(--mm-border-strong);padding-left:6px}",".mm-done>.mm-body>.mm-note{text-decoration:none}",".mm-find{background:rgba(255,200,0,.35);color:inherit;border-radius:2px;padding:0}",".mm-find.mm-find-cur{background:rgba(255,150,0,.75);box-shadow:0 0 0 1px rgba(230,120,0,.9)}",".mm-findbar{position:sticky;top:0;z-index:3;display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:6px 8px;margin:0 0 6px;background:var(--mm-panel);border:1px solid var(--mm-border);border-radius:6px}",".mm-findbar-input{flex:1 1 120px;min-width:80px;height:26px;padding:0 8px;border:1px solid var(--mm-border-strong);border-radius:4px;background:var(--mm-bg);color:var(--mm-text);font:inherit;font-size:13px;outline:0;box-sizing:border-box}",".mm-findbar-input:focus{border-color:var(--mm-accent)}",".mm-findbar-btn{height:26px;min-width:26px;padding:0 8px;border:1px solid var(--mm-border);border-radius:4px;background:var(--mm-bg);color:var(--mm-text);font:inherit;font-size:12px;cursor:pointer}",".mm-findbar-btn:hover:not(:disabled){background:var(--mm-hover)}",".mm-findbar-btn:disabled{opacity:.45;cursor:default}",".mm-findbar-btn.mm-on{border-color:var(--mm-accent);color:var(--mm-accent)}",".mm-findbar-count{min-width:44px;text-align:center;font-size:12px;color:var(--mm-sub);font-variant-numeric:tabular-nums}",".mm-findbar-count.mm-none{color:var(--mm-danger)}",".mm-tagbar{display:flex;align-items:center;gap:6px;padding:4px 8px 8px;font-size:12px;color:var(--mm-sub)}",".mm-tagchip{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border:1px solid var(--mm-accent);border-radius:11px;background:transparent;color:var(--mm-accent);font:inherit;cursor:pointer}",".mm-tagchip:hover{background:var(--mm-hover)}",".mm-tag-click{cursor:pointer}",".mm-tag-click:hover{text-decoration:underline}","@media (hover:none){.mm-fold{opacity:1}}"].join(`
|
|
95
|
+
`);var Ei=`/* dsh-mindmap (\u601D\u7EF4\u5BFC\u56FE) \u2014 scoped under .mm-app */
|
|
27
96
|
.mm-app{--mm-bg:var(--dsw-bg,#fff);--mm-panel:var(--dsw-bg-panel,#f7f7f8);--mm-hover:var(--dsw-bg-hover,rgba(0,0,0,.05));--mm-elev:var(--dsw-bg-elevated,#fff);--mm-text:var(--dsw-text-primary,var(--dsw-text,#1f2329));--mm-sub:var(--dsw-text-secondary,#8a8f99);--mm-border:var(--dsw-border,rgba(0,0,0,.08));--mm-border-strong:var(--dsw-border-strong,rgba(0,0,0,.16));--mm-accent:var(--dsw-alias-brand-primary,var(--dsw-accent,#3964fe));--mm-danger:var(--dsw-alias-state-error-primary,#e5484d);--mm-shadow:var(--dsw-shadow-lv3,0 8px 24px rgba(0,0,0,.12));--mm-mono:var(--dsw-font-mono,ui-monospace,Consolas,monospace);
|
|
28
97
|
position:relative;display:flex;height:100%;width:100%;min-height:0;background:var(--mm-bg);color:var(--mm-text);font-size:14px;line-height:1.6;overflow:hidden;padding-top:var(--dsh-atb-viewport-top,0px);box-sizing:border-box}
|
|
29
98
|
.mm-app *{box-sizing:border-box}
|
|
@@ -155,6 +224,6 @@ window.__ModuleLoader__.load({id:"@huoweifang/dsh-mindmap",factory:function(requ
|
|
|
155
224
|
.mm-doc-inner{padding:20px 16px 120px}
|
|
156
225
|
.mm-hide-narrow{display:none}
|
|
157
226
|
}
|
|
158
|
-
`,
|
|
227
|
+
`,io="dsh-mindmap-style";function lo(){if(typeof document>"u")return()=>{};let e=document.getElementById(io);e===null&&(e=document.createElement("style"),e.id=io,e.textContent=Ei+ro+oo+no,document.head.appendChild(e));let t=e;return()=>{t.remove()}}var lt=require("react/jsx-runtime"),Si="dsh-mindmap/client",Ni=["slots"],so="dsh-mindmap";function Ii(e){let t=typeof e.size=="number"?e.size:16;return(0,lt.jsxs)("svg",{width:t,height:t,viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:1.3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,lt.jsx)("rect",{x:"1.5",y:"6",width:"4.5",height:"4",rx:"1"}),(0,lt.jsx)("rect",{x:"10",y:"2",width:"4.5",height:"3.2",rx:"1"}),(0,lt.jsx)("rect",{x:"10",y:"10.8",width:"4.5",height:"3.2",rx:"1"}),(0,lt.jsx)("path",{d:"M6 8h1.5c1 0 1-4.4 2.5-4.4M7.5 8c1 0 1 4.4 2.5 4.4"})]})}function Ci(){return(0,lt.jsx)(eo,{})}function Ti(e){let t=[];try{t.push(lo());let n=e.get?.("slots");if(n===void 0)throw new Error("DSH panel service (slots) unavailable");t.push(n.inject("main",()=>n.register({name:"main",key:so},Ci))),t.push(n.inject("sidebar.panellist",()=>n.register({name:"sidebar.panellist",id:so,order:20,label:()=>"\u601D\u7EF4\u5BFC\u56FE"},Ii)))}catch(n){console.error("[dsh-mindmap] client mount failed:",n)}try{e.effect?.(()=>()=>{for(let n of t.splice(0).reverse())try{n()}catch(r){console.warn("[dsh-mindmap] dispose failed:",r)}},"dsh-mindmap: client mount")}catch(n){console.error("[dsh-mindmap] client effect failed:",n)}}
|
|
159
228
|
|
|
160
229
|
return module.exports}});
|