isorite 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +6 -3
  2. package/dist/core.js +207 -426
  3. package/dist/embed-worker.js +9 -4
  4. package/dist/main.js +7917 -6864
  5. package/docs/setup-for-agents.md +166 -0
  6. package/docs/setup.md +133 -0
  7. package/docs/terminal.md +119 -0
  8. package/package.json +2 -1
  9. package/plugin/isorite.ts +3 -3
  10. package/plugin/notepage.tsx +1 -9
  11. package/plugin/tui.tsx +9 -10
  12. package/web/_app/immutable/assets/0.IOi79DXH.css +1 -0
  13. package/web/_app/immutable/assets/{4.PVZR2_N5.css → 4.CUdclsPi.css} +1 -1
  14. package/web/_app/immutable/assets/5.TsqJFEFF.css +1 -0
  15. package/web/_app/immutable/assets/{NoteEditor.ChlpmyHO.css → NoteEditor.BCjOff8L.css} +1 -1
  16. package/web/_app/immutable/chunks/{B_nIecMW.js → 8IM6BNk6.js} +36 -37
  17. package/web/_app/immutable/chunks/{BEVz4Dgg.js → BHPhFydX.js} +1 -1
  18. package/web/_app/immutable/chunks/B_AYGp9o.js +1 -0
  19. package/web/_app/immutable/chunks/Bze-M_kr.js +3 -0
  20. package/web/_app/immutable/chunks/CFA70_0c.js +20 -0
  21. package/web/_app/immutable/chunks/CGgq5NWd.js +1 -0
  22. package/web/_app/immutable/chunks/CHlFgDNB.js +1 -0
  23. package/web/_app/immutable/chunks/CMp5T_-1.js +1 -0
  24. package/web/_app/immutable/chunks/D89YN-Dr.js +1 -0
  25. package/web/_app/immutable/chunks/DF3lgcLW.js +1 -0
  26. package/web/_app/immutable/chunks/DGVcYHaJ.js +43 -0
  27. package/web/_app/immutable/chunks/DHMLhlug.js +1 -0
  28. package/web/_app/immutable/chunks/DmgpLvxp.js +1 -0
  29. package/web/_app/immutable/chunks/DrsVvzvg.js +1 -0
  30. package/web/_app/immutable/entry/app.hlk6OrE8.js +2 -0
  31. package/web/_app/immutable/entry/start.BE1F0HZV.js +1 -0
  32. package/web/_app/immutable/nodes/0.DMGdYhkH.js +15 -0
  33. package/web/_app/immutable/nodes/1.Dn_0fgt7.js +1 -0
  34. package/web/_app/immutable/nodes/2.Y1Dd5PBI.js +1 -0
  35. package/web/_app/immutable/nodes/3.BlxuRbLf.js +1 -0
  36. package/web/_app/immutable/nodes/4.Bt_H0MbN.js +2 -0
  37. package/web/_app/immutable/nodes/5.BJ-EVWbz.js +5 -0
  38. package/web/_app/immutable/nodes/6.DDIiJnwi.js +1 -0
  39. package/web/_app/immutable/nodes/7.DmPPLDvb.js +1 -0
  40. package/web/_app/immutable/nodes/{9.NF5w8YC2.js → 8.CwMTBog4.js} +2 -2
  41. package/web/_app/immutable/workers/worker-CWkpeSVG.js +1 -0
  42. package/web/_app/version.json +1 -1
  43. package/web/index.html +25 -19
  44. package/web/_app/immutable/assets/0.s5xqevrq.css +0 -1
  45. package/web/_app/immutable/assets/5.DCxNIgyW.css +0 -1
  46. package/web/_app/immutable/assets/8.C0NYkyNY.css +0 -1
  47. package/web/_app/immutable/chunks/B0NIb88Q.js +0 -1
  48. package/web/_app/immutable/chunks/B7ZjnqOt.js +0 -20
  49. package/web/_app/immutable/chunks/BEk5idXo.js +0 -1
  50. package/web/_app/immutable/chunks/C8UdwlAg.js +0 -3
  51. package/web/_app/immutable/chunks/CcQ3P3p1.js +0 -13
  52. package/web/_app/immutable/chunks/CcRs965g.js +0 -1
  53. package/web/_app/immutable/chunks/Cw2GjAJR.js +0 -1
  54. package/web/_app/immutable/chunks/DjBHskLm.js +0 -1
  55. package/web/_app/immutable/chunks/Dm229u8R.js +0 -1
  56. package/web/_app/immutable/chunks/UM_L7-f7.js +0 -1
  57. package/web/_app/immutable/chunks/b-AOhhy1.js +0 -1
  58. package/web/_app/immutable/chunks/k55859zq.js +0 -1
  59. package/web/_app/immutable/entry/app.B3QXxjjH.js +0 -2
  60. package/web/_app/immutable/entry/start.BauJm-6k.js +0 -1
  61. package/web/_app/immutable/nodes/0.DP4c84Wn.js +0 -14
  62. package/web/_app/immutable/nodes/1.BcwcVDJZ.js +0 -1
  63. package/web/_app/immutable/nodes/2.DgGnQZ7P.js +0 -1
  64. package/web/_app/immutable/nodes/3.BudzO7We.js +0 -1
  65. package/web/_app/immutable/nodes/4.DmswyrSt.js +0 -2
  66. package/web/_app/immutable/nodes/5.DjXsfjL5.js +0 -5
  67. package/web/_app/immutable/nodes/6.uBh-sdQx.js +0 -1
  68. package/web/_app/immutable/nodes/7.BYBNXM1A.js +0 -1
  69. package/web/_app/immutable/nodes/8.Tbz9Rh77.js +0 -1
  70. package/web/_app/immutable/workers/worker-rKDNrEKQ.js +0 -1
  71. /package/web/_app/immutable/assets/{9.CFA9_nYZ.css → 8.CFA9_nYZ.css} +0 -0
@@ -1 +0,0 @@
1
- (function(){function e(e){let{W:t,H:n,items:r}=e,i=new Int8Array(t*n),a=new Uint8Array(t*n),o=new Int32Array(t*n).fill(-1),s=new Int32Array(t*n).fill(-1),c=r.map((e,t)=>t).filter(e=>r[e].kind===`folder`).sort((e,t)=>r[e].depth-r[t].depth||e-t);for(let e of c){let n=r[e];for(let r=n.gy;r<n.gy+n.h;r++)for(let a=n.gx;a<n.gx+n.w;a++)i[r*t+a]=n.depth,o[r*t+a]=e}r.forEach((e,n)=>{if(e.kind===`note`)for(let r=e.gy;r<e.gy+e.h;r++)for(let i=e.gx;i<e.gx+e.w;i++)a[r*t+i]=1,s[r*t+i]=n});let l=new Uint8Array(t*n),u=e.keep??2,d=(e,r,i,a)=>{for(let o=Math.max(0,r);o<Math.min(n,a);o++)for(let n=Math.max(0,e);n<Math.min(t,i);n++)l[o*t+n]=1};for(let e of r)e.kind===`note`?d(e.gx-u,e.gy-u,e.gx+e.w+u,e.gy+e.h+u):(d(e.gx-u,e.gy-u,e.gx+e.w+u,e.gy+u),d(e.gx-u,e.gy+e.h-u,e.gx+e.w+u,e.gy+e.h+u),d(e.gx-u,e.gy-u,e.gx+u,e.gy+e.h+u),d(e.gx+e.w-u,e.gy-u,e.gx+e.w+u,e.gy+e.h+u));return{W:t,H:n,elev:i,blocked:a,owner:o,noteAt:s,close:l}}function t(e,t){let n=e[t].kind===`folder`?[t]:[];for(let r=e[t].parent;r>=0;r=e[r].parent)n.push(r);return n}let n={bend:4,flow:1,area:.01,aspect:1,shape:1.4,effort:1e3,seed:0,cross:20};function r(e,t,r,c,l={}){let{bend:u,flow:d,area:f,aspect:p,shape:m,effort:h,seed:g,cross:_}={...n,...l},v=e.length,y=e.map(e=>e[0]),b=e.map(e=>e[1]);if(!v)return{x:[],y:[],w:0,h:0};let x=Array.from({length:v},(e,t)=>Array.from({length:v},(e,n)=>r(t,n))),S=new Float64Array(v),C=new Float64Array(v),w=[...Array(v).keys()],T=[...w],E=new Int32Array(v),D=new Int32Array(v),O=0,k=0,A=()=>{w.forEach((e,t)=>{E[e]=t}),T.forEach((e,t)=>{D[e]=t}),O=0,k=0;for(let e=0;e<v;e++){let t=w[e],n=0,r=0;for(let i=0;i<e;i++){let e=w[i];D[e]<D[t]?n=Math.max(n,S[e]+y[e]+x[e][t]):r=Math.max(r,C[e]+b[e]+x[e][t])}S[t]=n,C[t]=r,O=Math.max(O,n+y[t]),k=Math.max(k,r+b[t])}},j=e=>[S[e]+y[e]/2,C[e]+b[e]/2],M=()=>{A();let e=0;for(let[n,r,i]of t){let t=Math.max(0,S[r]-S[n]-y[n],S[n]-S[r]-y[r]),a=Math.max(0,C[r]-C[n]-b[n],C[n]-C[r]-b[r]);e+=i*(Math.max(t,a)+.414*Math.min(t,a)+(t>0&&a>0?u:0));let o=c===`right`?S[n]+y[n]/2-(S[r]+y[r]/2):C[r]+b[r]/2-(C[n]+b[n]/2);o>0&&(e+=d*i*o)}if(_)for(let n=0;n<t.length;n++)for(let r=n+1;r<t.length;r++){let[i,o,s]=t[n],[c,l,u]=t[r];i!==c&&i!==l&&o!==c&&o!==l&&a(j(i),j(o),j(c),j(l))&&(e+=_*Math.min(s,u))}let n=Math.log(O/k/m);return e+f*O*k*(1+p*n*n)},N=i(v,t);if(w.sort((e,t)=>N[e]-N[t]),T.splice(0,v,...w),c===`up`&&w.reverse(),l.pair)return w.splice(0,v,...l.pair[0]),T.splice(0,v,...l.pair[1]),A(),{x:[...S],y:[...C],w:O,h:k,pair:l.pair};l.start&&(w.splice(0,v,...l.start[0]),T.splice(0,v,...l.start[1]));let P=M(),F=P,I=[...w],L=[...T];if(v<2)return A(),{x:[...S],y:[...C],w:O,h:k,pair:[[...w],[...T]]};let R=s(o(e,t)^g),z=h*v,B=l.start?Math.max(.5,P*.002):Math.max(1,P*.05),V=.001**(1/z);for(let e=0;e<z;e++,B*=V){let e=Math.floor(R()*v),t=(e+1+Math.floor(R()*(v-1)))%v,n=R(),r=n=>{let r=n[e];n[e]=n[t],n[t]=r};if(n<.4)r(w);else if(n<.8)r(T);else{let n=w.indexOf(T[e]),i=w.indexOf(T[t]);r(T);let a=w[n];w[n]=w[i],w[i]=a}let i=M();if(i<=P||R()<Math.exp((P-i)/B))P=i,P<F&&(F=P,I=[...w],L=[...T]);else if(n<.4)r(w);else if(n<.8)r(T);else{let n=w.indexOf(T[e]),i=w.indexOf(T[t]);r(T);let a=w[n];w[n]=w[i],w[i]=a}}return w.splice(0,v,...I),T.splice(0,v,...L),A(),{x:[...S],y:[...C],w:O,h:k,cost:F,pair:[I,L]}}function i(e,t){let n=Array(e).fill(0);for(let[e,r,i]of t)n[e]+=i,n[r]-=i;let r=[...Array(e).keys()].sort((e,t)=>n[t]-n[e]||e-t),i=Array(e);return r.forEach((e,t)=>{i[e]=t}),i}function a(e,t,n,r){let i=(e,t,n)=>(t[0]-e[0])*(n[1]-e[1])-(t[1]-e[1])*(n[0]-e[0]);return i(e,t,n)*i(e,t,r)<0&&i(n,r,e)*i(n,r,t)<0}function o(e,t){let n=2166136261;for(let r of[...e.flat(),...t.flat()])n^=r|0,n=Math.imul(n,16777619);return n>>>0}function s(e){return()=>{e|=0,e=e+1831565813|0;let t=Math.imul(e^e>>>15,1|e);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}let c={cell:7,note:[18,5],gap:6,gapFolders:8,channel:6,channelFolders:8,pad:6,head:2,margin:8,minFolder:12,slant:8,keep:2},l={fine:c,coarse:{cell:14,note:[9,3],gap:3,gapFolders:6,channel:3,channelFolders:6,pad:3,head:1,margin:6,minFolder:6,slant:4,keep:1},coarser:{cell:18,note:[7,2],gap:2,gapFolders:5,channel:2,channelFolders:5,pad:2,head:1,margin:5,minFolder:5,slant:3,keep:1}};c.pad;let u=1.4,d=c.note,f=0,p=0,m=0,h=0,g=0,_=0,v=0,y=0,b=0,x=2,S=0,C=0;function w(e){({note:d,gap:f,gapFolders:p,channel:m,channelFolders:h,head:g,margin:_,minFolder:v,slant:y,pad:b,keep:x}=e),S=d[0]+f,C=3*S}function T(e,{flow:t=`up`,grain:i=`fine`,plan:a=!1,planCosts:o={},planned:s=null,from:T=null}={}){let O=l[i]??c;w(O);let k=e=>e.kind===`dir`,A=/* @__PURE__ */ new Map,j=/* @__PURE__ */ new Map,M=[e.root];for(let e=0;e<M.length;e++)for(let t of M[e].children||[])A.set(t,M[e]),k(t)?M.push(t):j.set(t.ref,t);let N=e=>{let t=[];for(let n=e;n;n=A.get(n))t.push(n);return t.reverse()},P=new Map(M.map(e=>[e,/* @__PURE__ */ new Map])),F=/* @__PURE__ */ new Map;for(let e of M){F.set(e,F.size);for(let t of e.children||[])k(t)||F.set(t,F.size)}let I=new Map(j);if(e.code)for(let t of M)t!==e.root&&!I.has(t.ref)&&I.set(t.ref,t);for(let[t,n,r]of e.edges){if(r<2)continue;let e=I.get(t),i=I.get(n);if(!e||!i||e===i)continue;let a=N(e),o=N(i),s=0;for(;a[s+1]&&a[s+1]===o[s+1];)s++;if(!a[s+1]||!o[s+1])continue;let c=P.get(a[s]),l=o[s+1],u=a[s+1],d=F.get(l)+`|`+F.get(u),f=c.get(d)||{p:l,q:u,weight:0,count:0};f.weight+=r,f.count++,c.set(d,f)}let L=/* @__PURE__ */ new Map,R=/* @__PURE__ */ new Map,z={},B=/* @__PURE__ */ new Map,V=e=>e===`up`?`right`:`up`,H=(t,n)=>{let r=t.children||[];for(let e of r)k(e)?H(e,V(n)):L.set(e,{w:d[0],h:d[1]});let i=r.length?U(t,r,n):{w:0,h:0};L.set(t,t===e.root?i:r.length?{w:Math.max(v,i.w+2*b),h:i.h+b+g+b}:{w:v,h:g+2*b})};function U(e,t,n){if(a&&t.some(k))return W(e,t,n);let r=new Map(t.map(e=>[e,e])),i=e=>{for(;r.get(e)!==e;)e=r.get(e);return e};for(let t of P.get(e).values()){let e=i(t.p),n=i(t.q);e!==n&&r.set(n,e)}let o=/* @__PURE__ */ new Map,s=new Set([...P.get(e).values()].flatMap(e=>[e.p,e.q]));for(let e of t){let t=s.has(e)?i(e):null;o.set(t,[...o.get(t)||[],e])}if(o.size<2){let r=G(e,t,n);return B.set(e,r.out),{w:r.w,h:r.h}}let c=[...o].map(([t,r],i)=>({list:r,loose:t===null,k:i,...G(e,r,n)}));c.sort((e,t)=>e.loose-t.loose||t.w*t.h-e.w*e.h||e.k-t.k);let l=t.some(k)?p:f,d=c.reduce((e,t)=>e+(t.w+l)*(t.h+l),0),m=Math.max(Math.ceil(Math.sqrt(d*u)),...c.map(e=>e.w)),h=0,g=0,_=0,v=0,y=[];for(let e of c){h&&h+e.w>m&&(h=0,g+=_+l,_=0);for(let t of e.list){let e=L.get(t);e.x+=h,e.y+=g}for(let t of e.out)y.push({...t,pts:t.pts&&t.pts.map(([e,t])=>[e+h,t+g])});v=Math.max(v,h+e.w),_=Math.max(_,e.h),h+=e.w+l}return B.set(e,y),{w:v,h:g+_}}function W(t,i,a){let c=new Map(i.map((e,t)=>[e,t])),l=[...P.get(t).values()].filter(e=>c.has(e.p)&&c.has(e.q)),u=t===e.root?``:t.ref,d=s?.get(u),m=(e,t)=>d?.wider.get([i[e].ref,i[t].ref].sort().join(`|`))??0,h=(e,t)=>(k(i[e])||k(i[t])?p:f)+m(e,t),g=i.map(e=>[L.get(e).w,L.get(e).h]),_=t===e.root&&a===`up`?1/n.shape:n.shape,v,y=!d&&T?.[u];if(y){let e=new Map(i.map((e,t)=>[e.ref,t])),t=i.map((e,t)=>t).filter(e=>!y[0].includes(i[e].ref));v=y.map(n=>[...n.filter(t=>e.has(t)).map(t=>e.get(t)),...t])}let b=r(g,l.map(e=>[c.get(e.p),c.get(e.q),e.count]),h,a,{shape:_,...o,pair:d?.pair,start:v});R.set(u,b.pair),z[u]=b.pair.map(e=>e.map(e=>i[e].ref)),i.forEach((e,t)=>Object.assign(L.get(e),{x:b.x[t],y:b.y[t]}));let x=e=>a===`right`?b.x[e]+g[e][0]/2:-(b.y[e]+g[e][1]/2),S=/* @__PURE__ */ new Map;for(let e of l)S.set(e.p,[...S.get(e.p)||[],e.q]);let C=(e,t)=>{let n=/* @__PURE__ */ new Set,r=(S.get(e)||[]).filter(e=>e!==t);for(;r.length;){let e=r.pop();if(e===t)return!0;n.has(e)||(n.add(e),r.push(...S.get(e)||[]))}return!1};return B.set(t,l.map(e=>({p:e.p,q:e.q,count:e.count,back:x(c.get(e.p))>x(c.get(e.q)),implied:!k(e.p)&&!k(e.q)&&C(e.p,e.q),pts:null}))),{w:b.w,h:b.h}}function G(e,t,n){let r=t.length,i=new Map(t.map((e,t)=>[e,t])),a=n===`up`,o=t.some(k)?p:f,s=t.map(e=>a?L.get(e).h:L.get(e).w),c=t.map(e=>a?L.get(e).w:L.get(e).h),l=[...P.get(e).values()].filter(e=>i.has(e.p)&&i.has(e.q)).map(e=>({...e,p:i.get(e.p),q:i.get(e.q)})),d=D(r,l.map(e=>[e.p,e.q,e.weight]));for(let e of l)e.back=d[e.p]>d[e.q],e.u=e.back?e.q:e.p,e.v=e.back?e.p:e.q;let g=l.filter(e=>!e.back),_=Array(r).fill(0),v=t.map(()=>[]),b=t.map(()=>[]);for(let e of l)v[e.v].push(e.u),b[e.u].push(e.v);let w=t.map(()=>[]);for(let e of g)w[e.p].push(e.q);for(let e of[...Array(r).keys()].sort((e,t)=>d[e]-d[t]))for(let t of v[e])_[e]=Math.max(_[e],_[t]+1);for(let e=0;e<r;e++)!v[e].length&&b[e].length&&(_[e]=Math.min(...b[e].map(e=>_[e]))-1);let T=(e,t,n)=>{let r=/* @__PURE__ */ new Set,i=w[e].filter(e=>e!==n);for(;i.length;){let e=i.pop();if(e===t)return!0;r.has(e)||(r.add(e),i.push(...w[e]))}return!1};for(let e of g)e.implied=!k(t[e.p])&&!k(t[e.q])&&T(e.p,e.q,e.q);let E=l.filter(e=>!e.implied).sort((e,t)=>t.weight-e.weight||e.p-t.p||e.q-t.q),O=t.reduce((e,t,n)=>e+(c[n]+o)*(s[n]+m),0),A=Math.max(Math.ceil(Math.sqrt(a?O*u:O/u)),...c),j=[],M=Array(r),N=Array(r).fill(!1);for(let e of l)N[e.p]=!0,N[e.q]=!0;let F=N.some(Boolean)&&N.some(e=>!e),I=e=>{let t=e.reduce((e,t)=>e+c[t]+o,0),n=Math.max(1,Math.ceil((t-o)/A)),r=t/n,i=null,a=0;for(let t of e)(!i||a+c[t]>A||j.length-R<n&&a>=r)&&(i=[],j.push(i),a=0),M[t]=j.length-1,i.push(t),a+=c[t]+o},R=0,z=e=>v[e].length?+!!b[e].length:2,B=e=>e.length?e.reduce((e,t)=>e+d[t],0)/e.length:0;for(let e=0;e<=Math.max(..._);e++){let t=[...Array(r).keys()].filter(t=>_[t]===e&&(N[t]||!F));t.reduce((e,t)=>e+c[t]+o,0)-o>A&&t.sort((e,t)=>z(e)-z(t)||B(v[e])-B(v[t])||e-t),R=j.length,I(t)}F&&(R=j.length,I([...Array(r).keys()].filter(e=>!N[e])));let V=[...c],H=t.map(()=>[]),U=t.map(()=>[]),W=/* @__PURE__ */ new Map,G=/* @__PURE__ */ new Map,K=[],q=/* @__PURE__ */ new Set,ee=/* @__PURE__ */ new Map;for(let e of E){let t=[e.u];for(let n=M[e.u]+1;n<M[e.v];n++){let r=e.u+`|`+n;W.has(r)||(W.set(r,V.length),G.set(V.length,e.u),V.push(1),H.push([]),U.push([]),M.push(n),j[n].push(V.length-1)),t.push(W.get(r))}t.push(e.v);for(let e=1;e<t.length;e++){let n=t[e-1],r=t[e];q.has(n+`|`+r)||(q.add(n+`|`+r),K.push([n,r]),U[n].push(r),H[r].push(n))}ee.set(e,t)}let J=e=>e>=r,Y=Array(V.length);j.forEach(e=>e.forEach((e,t)=>{Y[e]=t}));let X=(e,t)=>{let n=new Map(j[e].map(e=>[e,t[e].length?t[e].reduce((e,t)=>e+Y[t],0)/t[e].length:Y[e]]));j[e].sort((e,t)=>n.get(e)-n.get(t)||Y[e]-Y[t]),j[e].forEach((e,t)=>{Y[e]=t})},te=()=>{let e=0;for(let t=0;t<j.length-1;t++){let n=[];for(let e of j[t])for(let t of U[e])n.push([Y[e],Y[t]]);for(let t=0;t<n.length;t++)for(let r=t+1;r<n.length;r++)(n[t][0]-n[r][0])*(n[t][1]-n[r][1])<0&&e++}return e},Z=()=>{let e=(e,t,n)=>{let r=0;for(let i of n[e])for(let e of n[t])r+=Y[i]>Y[e]?1:Y[i]<Y[e]?-1:0;return r};for(let t=!0,n=0;t&&n<8;n++){t=!1;for(let n of j)for(let r=0;r+1<n.length;r++){let i=n[r],a=n[r+1];e(i,a,H)+e(i,a,U)>0&&(n[r]=a,n[r+1]=i,Y[i]=r+1,Y[a]=r,t=!0)}}},ne=j.map(e=>[...e]),re=(e,t)=>(J(e)?d[G.get(e)]:d[e])-(J(t)?d[G.get(t)]:d[t])||e-t,ie=null,ae=1/0;for(let e of[e=>e,e=>[...e].sort(re),e=>[...e].reverse()]){j.forEach((t,n)=>{t.splice(0,t.length,...e(ne[n])),t.forEach((e,t)=>{Y[e]=t})});let t=1/0,n=0;for(let e=0;e<24&&n<4&&ae>0;e++,n++){if(e%2==0)for(let e=1;e<j.length;e++)X(e,H);else for(let e=j.length-2;e>=0;e--)X(e,U);Z();let r=te();r<t&&(t=r,n=0),r<ae&&(ae=r,ie=j.map(e=>[...e]))}}ie&&j.forEach((e,t)=>{e.splice(0,e.length,...ie[t]),e.forEach((e,t)=>{Y[e]=t})});let Q=(e,t)=>J(e)&&J(t)?1:J(e)||J(t)?x:o,$=Array(V.length).fill(0);for(let e of j){let t=0;e.forEach((n,r)=>{r&&(t+=Q(e[r-1],n)),$[n]=t,t+=V[n]})}let oe=e=>e.length?$[e[e.length-1]]+V[e[e.length-1]]:0,se=Math.max(...j.map(oe));for(let e of j){let t=(se-oe(e))/2;for(let n of e)$[n]+=t}let ce=e=>$[e]+V[e]/2;for(let e=0;e<12;e++)for(let t of e%2?[...j].reverse():j){if(!t.length)continue;let e=t.map(e=>{let t=[...H[e],...U[e]];return(t.length?t.reduce((e,t)=>e+ce(t),0)/t.length:ce(e))-V[e]/2}),n=[],r=[];t.forEach((r,i)=>{n[i]=i?Math.max(e[i],n[i-1]+V[t[i-1]]+Q(t[i-1],r)):e[i]});for(let n=t.length-1;n>=0;n--)r[n]=n<t.length-1?Math.min(e[n],r[n+1]-V[t[n]]-Q(t[n],t[n+1])):e[n];t.forEach((e,t)=>{$[e]=(n[t]+r[t])/2})}let le=e=>Math.floor((V[e]-1)/2),ue=Array(V.length).fill(-1),de=Array(V.length).fill(-1);for(let e of[!0,!1])for(let t=1;t<j.length;t++){let n=j[t].filter(e=>ue[e]>=0).map(e=>[Y[ue[e]],Y[e]]);for(let r of j[t]){if(ue[r]>=0||!H[r].length)continue;let t=[...H[r]].sort((e,t)=>Y[e]-Y[t]),i=(t.length-1)/2,a=t.map((e,t)=>[e,Math.abs(t-i)]).filter(([t])=>de[t]<0&&(!e||J(t)&&J(r))&&Math.abs($[t]+le(t)-$[r]-le(r))<=(e?C:S)).sort((e,t)=>e[1]-t[1]||Y[e[0]]-Y[t[0]]);for(let[e]of a)if(!n.some(([t,n])=>t<Y[e]!=n<Y[r])){ue[r]=e,de[e]=r,n.push([Y[e],Y[r]]);break}}}let fe=Array(V.length).fill(-1),pe=0;for(let e=0;e<V.length;e++)if(ue[e]<0){for(let t=e;t>=0;t=de[t])fe[t]=pe;pe++}let me=Array.from({length:pe},()=>[]);fe.forEach((e,t)=>me[e].push(t));let he=(e,t)=>V[e]-le(e)+Q(e,t)+le(t),ge=Array(V.length).fill(-1),_e=Array(V.length).fill(-1);for(let e of j)e.forEach((t,n)=>{n&&(ge[t]=e[n-1],_e[e[n-1]]=t)});let ve=Array(pe).fill(0),ye=!1;for(let e=0;e<=pe&&!ye;e++){ye=!0;for(let e of j)for(let t=1;t<e.length;t++){let n=ve[fe[e[t-1]]]+he(e[t-1],e[t]);ve[fe[e[t]]]<n&&(ve[fe[e[t]]]=n,ye=!1)}}if(ye){let e=me.map(e=>Math.round(e.reduce((e,t)=>e+$[t]+le(t),0)/e.length)),t=Math.min(...e.map((e,t)=>e-ve[t])),n=[...Array(pe).keys()].sort((t,n)=>e[n]-e[t]||t-n);for(let r=0;r<24;r++){let i=!1;for(let a of r%2?[...n].reverse():n){let n=-1/0,r=1/0;for(let e of me[a])ge[e]>=0&&(n=Math.max(n,ve[fe[ge[e]]]+he(ge[e],e))),_e[e]>=0&&(r=Math.min(r,ve[fe[_e[e]]]-he(e,_e[e])));let o=Math.max(n,Math.min(r,e[a]-t));o!==ve[a]&&(ve[a]=o,i=!0)}if(!i)break}for(let e=0;e<V.length;e++)$[e]=ve[fe[e]]-le(e)}else for(let e of j)e.forEach((t,n)=>{$[t]=n?Math.max(Math.round($[t]),$[e[n-1]]+V[e[n-1]]+Q(e[n-1],t)):Math.round($[t])});let be=Math.min(...$);for(let e=0;e<$.length;e++)$[e]-=be;let xe=Math.max(...$.map((e,t)=>e+V[t])),Se=e=>$[e]+Math.floor((V[e]-1)/2)+.5,Ce=/* @__PURE__ */ new Map;for(let e=0;e<V.length;e++){let t=[...H[e]].sort((e,t)=>Se(e)-Se(t)),n=$[e]+.5,r=$[e]+V[e]-.5;if(t.length>V[e]){t.forEach((r,i)=>Ce.set(r+`|`+e,n+Math.min(V[e]-1,Math.floor(i*V[e]/t.length))));continue}let i=t.map(e=>Math.max(n,Math.min(r,Se(e))));for(let e=1;e<i.length;e++)i[e]=Math.max(i[e],i[e-1]+1);for(let e=i.length-1;e>=0;e--)i[e]=Math.min(i[e],e===i.length-1?r:i[e+1]-1);t.forEach((t,n)=>Ce.set(t+`|`+e,i[n]))}let we=(e,t)=>{let n=Ce.get(e+`|`+t);return n>=$[e]+.5&&n<=$[e]+V[e]-.5},Te=Array(V.length);for(let e=0;e<V.length;e++){let t=U[e].filter(t=>!we(e,t)).map(t=>Ce.get(e+`|`+t)).sort((e,t)=>e-t);Te[e]=t.length?Math.max($[e]+.5,Math.min($[e]+V[e]-.5,t[t.length-1>>1])):Se(e)}let Ee=(e,t)=>we(e,t)?Ce.get(e+`|`+t):Te[e],De=(e,t)=>{let n=Ee(e,t),r=Ce.get(e+`|`+t);return[Math.min(n,r),Math.max(n,r)]},Oe=/* @__PURE__ */ new Set,ke=j.map(()=>0);for(let[e,t]of K){if(we(e,t))continue;let[n,r]=De(e,t),i=Ce.get(e+`|`+t)>Te[e];r-n>y||K.every(([a,o])=>{if(M[a]!==M[e]||a===e&&o===t)return!0;let[s,c]=De(a,o);return a===e?i?c<=n:s>=r:c<n-1||s>r+1})&&(Oe.add(e+`|`+t),ke[M[e]]=Math.max(ke[M[e]],r-n))}let Ae=/* @__PURE__ */ new Map;for(let[e,t]of K){if(we(e,t)||Oe.has(e+`|`+t))continue;let n=Ce.get(e+`|`+t),r=Ae.get(e)||{u:e,lo:Te[e],hi:Te[e],track:0};r.lo=Math.min(r.lo,n),r.hi=Math.max(r.hi,n),Ae.set(e,r)}let je=j.map(()=>0);j.forEach((e,t)=>{let n=[...Ae.values()].filter(e=>M[e.u]===t&&e.hi>e.lo).sort((e,t)=>e.lo-t.lo||e.hi-t.hi||e.u-t.u),r=n.map(e=>U[e.u].filter(t=>!we(e.u,t)&&!Oe.has(e.u+`|`+t)).map(t=>Ce.get(e.u+`|`+t))),i=(e,t)=>!(n[e].hi<n[t].lo-1||n[t].hi<n[e].lo-1),a=(e,t)=>+(Te[n[t].u]>n[e].lo&&Te[n[t].u]<n[e].hi)+r[e].filter(e=>e>n[t].lo&&e<n[t].hi).length,o=[];for(let e=0;e<n.length;e++)for(let t=e+1;t<n.length;t++){if(!i(e,t))continue;let n=a(t,e)-a(e,t);n>0?o.push([e,t,n]):n<0&&o.push([t,e,-n])}let s=D(n.length,o),c=[];for(let e of[...n.keys()].sort((e,t)=>s[e]-s[t]))n[e].track=Math.max(0,...c.filter(t=>i(e,t)).map(e=>n[e].track+1)),c.push(e);je[t]=Math.max(0,...n.map(e=>e.track+1))});let Me=j.map(e=>Math.max(0,...e.filter(e=>!J(e)).map(e=>s[e]))),Ne=[],Pe=[],Fe=[],Ie=0;j.forEach((e,n)=>{Ne[n]=Ie,Ie+=Me[n];let r=Math.max(t.some(k)?h:m,je[n]+2*x,ke[n]+2);Pe[n]=Ie+Math.max(x,Math.floor((r-je[n])/2));let i=Ie;Fe[n]=e=>i+Math.floor((r-e)/2),n<j.length-1&&(Ie+=r)});let Le=Ie,Re=e=>Ne[M[e]]+Math.floor((Me[M[e]]-s[e])/2),ze=(e,t)=>a?[t,Le-e]:[e,t];t.forEach((e,t)=>Object.assign(L.get(e),a?{x:$[t],y:Le-Re(t)-s[t]}:{x:Re(t),y:$[t]}));let Be=[];for(let e of l){let n=ee.get(e),r=null;if(n){r=[ze(Re(e.u)+s[e.u],Ee(e.u,n[1]))];for(let e=1;e<n.length;e++){let t=n[e-1],i=n[e],a=Ce.get(t+`|`+i);if(Oe.has(t+`|`+i)){let e=Math.abs(a-Te[t]),n=Fe[M[t]](e);r.push(ze(n,Te[t]),ze(n+e,a));continue}let o=Pe[M[t]]+(Ae.get(t)?.track||0)+.5;r.push(ze(o,Ee(t,i)),ze(o,a))}r.push(ze(Re(e.v),Ce.get(n[n.length-2]+`|`+e.v))),r=r.filter((e,t)=>!t||e[0]!==r[t-1][0]||e[1]!==r[t-1][1]),e.back&&r.reverse()}Be.push({p:t[e.p],q:t[e.q],count:e.count,back:e.back,implied:!!e.implied,pts:r})}return a?{w:xe,h:Le,out:Be}:{w:Le,h:xe,out:Be}}H(e.root,t);let K=[],q=/* @__PURE__ */ new Map,ee=/* @__PURE__ */ new Map([[e.root,[_,_]]]);for(let t of M){let[n,r]=ee.get(t),i=t===e.root?-1:q.get(t),a=N(t).length;for(let e of t.children||[]){let t=L.get(e);q.set(e,K.length),K.push({id:e.id,ref:e.ref,kind:k(e)?`folder`:`note`,parent:i,depth:a,gx:n+t.x,gy:r+t.y,w:t.w,h:t.h}),k(e)&&ee.set(e,[n+t.x+b,r+t.y+g+b])}}let J=[],Y=/* @__PURE__ */ new Set;for(let e of M){let[t,n]=ee.get(e);for(let r of B.get(e)||[]){let e=q.get(r.q),i=q.get(r.p);r.back&&Y.add(e+`|`+i),J.push({a:e,b:i,count:r.count,back:r.back,implied:r.implied,pts:r.pts&&r.pts.map(([e,r])=>[e+t,r+n])})}}let X=E(K,e.edges,new Map([...j].map(([e,t])=>[e,q.get(t)]))),te=(e,t)=>{for(;K[e].parent!==t;)e=K[e].parent;return e};for(let e of X)e.placed=e.s>=2&&!Y.has(te(e.a,e.level)+`|`+te(e.b,e.level));let Z=L.get(e.root);return{W:Z.w+2*_,H:Z.h+2*_,flow:t,cell:O.cell,keep:O.keep,margin:_,items:K,links:X,trunks:J,pairs:R,orders:z}}function E(e,t,n){let r=t=>{let n=[];for(let r=e[t].parent;r>=0;r=e[r].parent)n.push(r);return n},i=[];for(let[e,a,o]of t){let t=n.get(e),s=n.get(a);if(t===void 0||s===void 0||t===s)continue;let c=new Set(r(s));i.push({a:t,b:s,s:o,level:r(t).find(e=>c.has(e))??-1,placed:!1})}return i}function D(e,t){let n=Array.from({length:e},()=>/* @__PURE__ */ new Map),r=Array.from({length:e},()=>/* @__PURE__ */ new Map);for(let[e,i,a]of t)e!==i&&(n[e].set(i,(n[e].get(i)||0)+a),r[i].set(e,(r[i].get(e)||0)+a));let i=e=>{let t=0;for(let n of e.values())t+=n;return t},a=/* @__PURE__ */ new Set([...Array(e).keys()]),o=[],s=[],c=(e,t)=>{a.delete(e),t.push(e);for(let t of n[e].keys())r[t].delete(e);for(let t of r[e].keys())n[t].delete(e)};for(;a.size;){let e=!0;for(;e;){e=!1;for(let t of[...a])r[t].size?n[t].size||(c(t,s),e=!0):(c(t,o),e=!0)}if(!a.size)break;let t=-1,l=-1/0;for(let e of a){let a=i(n[e])-i(r[e]);a>l&&(l=a,t=e)}c(t,o)}let l=Array(e);return[...o,...s.reverse()].forEach((e,t)=>{l[e]=t}),l}let O={climb:5,turn45:1.5,turn90:3,foreign:2.5,crowd:.2,near:0,hug:2.5,haste:3.2},k=[1,1,0,-1,-1,-1,0,1],A=[0,1,1,1,0,-1,-1,-1];function j(e,n,r={}){let{climb:i,turn45:a,turn90:o,foreign:s,crowd:c,near:l,hug:u,haste:d}={...O,...r},{W:f,H:p,elev:m,blocked:h,owner:g}=n,_=n.close||new Uint8Array(f*p),v=f*p,y=e.items,b=new Uint16Array(v),x=new Uint16Array(v),S=new Float32Array(v*9),C=new Int32Array(v*9),w=new Uint32Array(v*9),T=new Uint32Array(y.length),E=v*9,D=0,j=/* @__PURE__ */ new Float32Array(4096),M=/* @__PURE__ */ new Float32Array(4096),N=/* @__PURE__ */ new Int32Array(4096),P=0,F=(e,t,n)=>{if(P===j.length){let e=(e,t)=>{let n=new t(e.length*2);return n.set(e),n};j=e(j,Float32Array),M=e(M,Float32Array),N=e(N,Int32Array)}let r=P++;for(;r>0;){let t=r-1>>1;if(j[t]<=e)break;j[r]=j[t],M[r]=M[t],N[r]=N[t],r=t}j[r]=e,M[r]=t,N[r]=n},I=()=>{L=M[0],R=N[0];let e=j[--P],t=M[P],n=N[P],r=0;for(;;){let t=2*r+1;if(t>=P||(t+1<P&&j[t+1]<j[t]&&t++,j[t]>=e))break;j[r]=j[t],M[r]=M[t],N[r]=N[t],r=t}j[r]=e,M[r]=t,N[r]=n},L=0,R=0,z=(e,t)=>{b[e]+=t;let n=e%f,r=e/f|0;for(let e=Math.max(0,r-1);e<=Math.min(p-1,r+1);e++)for(let i=Math.max(0,n-1);i<=Math.min(f-1,n+1);i++)(i!==n||e!==r)&&(x[e*f+i]+=t)},B=e=>{let t=[],n=(e,n,r,i)=>{e>=0&&n>=0&&e<f&&n<p&&!h[n*f+e]&&t.push([n*f+e,r,i])};for(let t=e.gx;t<e.gx+e.w;t++)n(t,e.gy-1,t+.5,e.gy),n(t,e.gy+e.h,t+.5,e.gy+e.h);for(let t=e.gy;t<e.gy+e.h;t++)n(e.gx-1,t,e.gx,t+.5),n(e.gx+e.w,t,e.gx+e.w,t+.5);return t};function V(e,n,r,p,v,O,j=null){D++,P=0;for(let n of t(y,e))T[n]=D;if(j){T[j.folder]=D;for(let e of t(y,j.folder))T[e]=D}else for(let e of t(y,n))T[e]=D;let M=y[e],N=j?null:y[n],V=j?j.ends:new Map(B(N).map(e=>[e[0],e])),H,U,W,G;if(j?.toward!==void 0)H=U=j.toward%f,W=G=j.toward/f|0;else if(j){H=W=1/0,U=G=-1/0;for(let e of V.keys()){let t=e%f,n=e/f|0;H=Math.min(H,t),U=Math.max(U,t),W=Math.min(W,n),G=Math.max(G,n)}}else H=N.gx-1,U=N.gx+N.w,W=N.gy-1,G=N.gy+N.h;let K=(e,t)=>{let n=Math.max(H-e,e-U,0),r=Math.max(W-t,t-G,0);return d*(Math.max(n,r)+.414*Math.min(n,r))},q=/* @__PURE__ */ new Map;for(let e of B(M)){let t=e[0],n=t*9+8,r=Math.fround(1+c*Math.min(b[t],3));w[n]===D&&S[n]<=r||(w[n]=D,S[n]=r,C[n]=-1,F(r+K(t%f,t/f|0),r,n),q.set(t,e))}let ee=!!j?.strict,J=-1;for(;P;){I();let e=R,t=L;if(e>=E){J=e-E;break}if(t!==S[e])continue;let n=e/9|0,d=e%9,y=V.get(n);if(y){if(!y[3]){J=e;break}F(Math.fround(t+y[3]),Math.fround(t+y[3]),E+e)}let M=n%f,N=n/f|0;for(let y=0;y<8;y++){let E=M+k[y],P=N+A[y];if(E<r||P<p||E>v||P>O)continue;let I=P*f+E;if(h[I]||ee&&g[I]!==j.folder)continue;if(k[y]&&A[y]){let e=N*f+E,t=P*f+M;if(h[e]||h[t]||m[e]!==m[n]||m[t]!==m[n]||m[I]!==m[n])continue}let L=(k[y]&&A[y]?1.414:1)*(1+c*Math.min(b[I],3)+l*Math.min(x[I],3))+i*Math.abs(m[I]-m[n]);if(d!==8&&d!==y){let e=Math.min((y-d+8)%8,(d-y+8)%8);L+=e===1?a:o*(e>=3?2:1)}g[I]>=0&&T[g[I]]!==D&&(L+=s),_[I]&&(L+=u);let R=I*9+y,z=Math.fround(t+L);w[R]===D&&S[R]<=z||(w[R]=D,S[R]=z,C[R]=e,F(z+K(E,P),z,R))}}if(J<0)return null;let Y=[];for(let e=J;e!==-1;e=C[e])Y.push(e/9|0);Y.reverse();for(let e of Y)z(e,1);let X=q.get(Y[0]),te=V.get(Y[Y.length-1]),Z=[[X[1],X[2]]];for(let e of Y)Z.push([e%f+.5,(e/f|0)+.5]);return Z.push([te[1],te[2]]),{cells:Int32Array.from(Y),pts:Z}}function H(e,t){let n=y[e],r=y[t],i=Math.max(Math.abs(n.gx-r.gx),Math.abs(n.gy-r.gy)),a=Math.max(12,Math.ceil(i*.4)),o=Math.max(0,Math.min(n.gx,r.gx)-a),s=Math.max(0,Math.min(n.gy,r.gy)-a),c=Math.min(f-1,Math.max(n.gx+n.w,r.gx+r.w)+a),l=Math.min(p-1,Math.max(n.gy+n.h,r.gy+r.h)+a);return V(e,t,o,s,c,l)||(o||s||c<f-1||l<p-1?V(e,t,0,0,f-1,p-1):null)}function U(e,t){return y[e],y[t.folder],W(e,{...t,strict:!0})||W(e,t)}function W(e,t){let n=y[e],r=y[t.folder];return V(e,-1,Math.max(0,Math.min(n.gx,r.gx)-2),Math.max(0,Math.min(n.gy,r.gy)-2),Math.min(f-1,Math.max(n.gx+n.w,r.gx+r.w)+2),Math.min(p-1,Math.max(n.gy+n.h,r.gy+r.h)+2),t)}function G(e){let t=/* @__PURE__ */ new Set;for(let n=1;n<e.length;n++){let[r,i]=e[n-1],[a,o]=e[n],s=Math.max(1,Math.ceil(Math.max(Math.abs(a-r),Math.abs(o-i))*2));for(let e=0;e<=s;e++){let n=Math.floor(r+(a-r)*e/s),c=Math.floor(i+(o-i)*e/s);n<0||c<0||n>=f||c>=p||h[c*f+n]||t.has(c*f+n)||(t.add(c*f+n),z(c*f+n,1))}}}return{route:H,routeTo:U,occupy:G,release:e=>{for(let t of e.cells)z(t,-1)},hold:e=>{for(let t of e.cells)z(t,1)}}}let M=[0,1,-1,2,-2,3,-3];function N(e,t){let n=/* @__PURE__ */ new Map;e.forEach((e,r)=>{e.edges=/* @__PURE__ */ new Set;for(let i=1;i<e.cells.length;i++){let a=e.cells[i-1],o=e.cells[i],s=a<o?a*t+o:o*t+a;e.edges.add(s),n.has(s)||n.set(s,[]),n.get(s).push(r)}}),e.forEach((t,r)=>{let i=/* @__PURE__ */ new Set;for(let a of t.edges)for(let t of n.get(a))t<r&&i.add(e[t].lane);t.lane=M.find(e=>!i.has(e))??0,delete t.edges})}let P=(e,t,n,r)=>{let i=(e,t,n)=>(t[0]-e[0])*(n[1]-e[1])-(t[1]-e[1])*(n[0]-e[0]);return i(e,t,n)*i(e,t,r)<0&&i(n,r,e)*i(n,r,t)<0};function F(e,t){let n=/* @__PURE__ */ new Map;e.forEach((e,t)=>{for(let r of e.cells)n.has(r)||n.set(r,/* @__PURE__ */ new Set),n.get(r).add(t)});let r=0,i=0;e.forEach((e,a)=>{for(let o of e.cells){r++;let e=!1,s=o%t;for(let r=-1;r<=1&&!e;r++)for(let i=-1;i<=1&&!e;i++){if(s+i<0||s+i>=t)continue;let c=n.get(o+r*t+i);if(c){for(let t of c)if(t!==a){e=!0;break}}}e||i++}});let a=e.map((e,t)=>{let n=[t*.618%1*.02-.01,t*.414%1*.02-.01],r=e.pts;return r.filter((e,t)=>t===0||t===r.length-1||Math.abs((e[0]-r[t-1][0])*(r[t+1][1]-e[1])-(e[1]-r[t-1][1])*(r[t+1][0]-e[0]))>1e-6).map(e=>[e[0]+n[0],e[1]+n[1]])}),o=0;for(let t=0;t<e.length;t++)for(let n=t+1;n<e.length;n++){let r=e[t],i=e[n];if(r.a!==i.a&&r.a!==i.b&&r.b!==i.a&&r.b!==i.b)for(let e=1;e<a[t].length;e++)for(let r=1;r<a[n].length;r++)P(a[t][e-1],a[t][e],a[n][r-1],a[n][r])&&o++}return{routes:e.length,crossings:o,length:r,beside:r?1-i/r:0}}function I(e,t,n,r,i=t.length<=100?2:+(t.length<=300)){let a=t.map(({a:t,b:n})=>{let r=e.route(t,n);return r&&{a:t,b:n,...r}});for(let t=0;t<i;t++)a.forEach((t,n)=>{if(!t)return;e.release(t);let r=e.route(t.a,t.b);r?Object.assign(t,r):e.hold(t)});let o=a.filter(Boolean);N(o,n*r);let s={...F(o,n),lost:a.length-o.length};for(let t of o)e.release(t);return{routes:a.map(e=>e&&{pts:e.pts,lane:e.lane}),measures:s}}let L=[1,1,0,-1,-1,-1,0,1],R=[0,1,1,1,0,-1,-1,-1],z={turn45:1.5,turn90:3,diag:1.3,hug:1,share:.35,centre:.3,gather:224};function B(t,n=e(t),r={}){let{turn45:i,turn90:a,diag:o,hug:s,share:c,centre:l,gather:u}={...z,...r},{items:d,trunks:f}=t,{W:p,H:m,blocked:h,owner:g}=n,_=p*m,v=Math.max(2,Math.round(28/(t.cell??7))),y=Y(n,v),b=v,x=new Uint8Array(_),S=10/(t.cell??7),C=(e,t)=>e>=0&&t>=0&&e<p&&t<m,w=(e,t,n)=>C(e,t)&&!h[t*p+e]&&g[t*p+e]===n;function T(e,t,n){let[r,i]=e,[a,o]=t,s=n?a-r:o-i,c=n?o-i:a-r,l=Math.sign(s),u=Math.sign(c),d=Math.abs(s),f=Math.abs(c),p=[];if(d>=f){let e=Math.floor((d-f)/2);for(let t=0;t<e;t++)p.push([l,0]);for(let e=0;e<f;e++)p.push([l,u]);for(let t=0;t<d-f-e;t++)p.push([l,0])}else{let e=Math.floor(d/2);for(let t=0;t<e;t++)p.push([l,u]);for(let e=0;e<f-d;e++)p.push([0,u]);for(let t=0;t<d-e;t++)p.push([l,u])}let m=[[r,i]],h=r,g=i;for(let[e,t]of p)n?(h+=e,g+=t):(h+=t,g+=e),m.push([h,g]);return m}function E(e,t,n,r,i){let a=Math.max(e.gx-(t.gx+t.w),t.gx-(e.gx+e.w)),o=Math.max(e.gy-(t.gy+t.h),t.gy-(e.gy+e.h)),s=a>=o;if((s?a:o)<1)return null;let[c,l]=s?t.gx<e.gx?[3,2]:[2,3]:t.gy<e.gy?[1,0]:[0,1];if(i&&i.side!==c||r&&r.side!==l)return null;let u=J(t)[c],d=J(e)[l],f=s?Math.max(e.gy,t.gy):Math.max(e.gx,t.gx),m=s?Math.min(e.gy+e.h,t.gy+t.h):Math.min(e.gx+e.w,t.gx+t.w),h=e=>Math.floor(e.mid-.5+1e-9),g=e=>e>=f&&e<m,_=r||i?[[i?i.t:g(r.t)?r.t:h(u),r?r.t:g(i.t)?i.t:h(d),0]]:m-f>=1?X(f,m).map(e=>[e,e,Math.abs(e+.5-(f+m)/2)]):[[h(u),h(d),0]],x=null;for(let[r,i,a]of _){if(V(t,c,r,S)||V(e,l,i,S))continue;let o=T(s?[c===3?t.gx+t.w:t.gx-1,r]:[r,c===1?t.gy+t.h:t.gy-1],s?[l===2?e.gx-1:e.gx+e.w,i]:[i,l===0?e.gy-1:e.gy+e.h],s);if(!o.every(([e,t])=>w(e,t,n)))continue;let u=o.slice(v,o.length-v),d=u.length?Math.min(...u.map(([e,t])=>y[t*p+e])):v;d<b||(!x||d>x.least||d===x.least&&a<x.off)&&(x={least:d,off:a,tb:r,ta:i,way:o})}return x?[u.wall(x.tb),...x.way.map(([e,t])=>[e+.5,t+.5]),d.wall(x.ta)]:null}let D=new Float32Array(_+1),O=new Int32Array(_+1),k=new Uint8Array(_+1),A=new Uint32Array(_+1),j=0,M=[],N=(e,t)=>{M.push([e,t]);let n=M.length-1;for(;n>0;){let t=n-1>>1;if(M[t][0]<=e)break;[M[t],M[n]]=[M[n],M[t]],n=t}},P=()=>{let e=M[0],t=M.pop();if(M.length){M[0]=t;let e=0;for(;;){let t=2*e+1;if(t>=M.length||(t+1<M.length&&M[t+1][0]<M[t][0]&&t++,M[t][0]>=M[e][0]))break;[M[t],M[e]]=[M[e],M[t]],e=t}}return e},F=(e,t)=>{if(e===8||e===t)return 0;let n=Math.min((t-e+8)%8,(e-t+8)%8);return n===1?i:a*(n>=3?2:1)};function I(e,t,n,r,i){j++,M.length=0;let a=_,u=/* @__PURE__ */ new Map,d=(e,t,n)=>!e||e.side===t&&e.t===n;if(J(e).forEach((t,i)=>t.cells.forEach(([a,o])=>{let s=t.dir===6||t.dir===2?a:o;w(a,o,n)&&d(r,i,s)&&!V(e,i,s,S)&&u.set(o*p+a,[(t.dir+4)%8,l*Math.abs(s+.5-t.mid),t.wall(s)])})),!r)for(let t of H(e,S))w(...t.out,n)&&u.set(t.out[1]*p+t.out[0],[(t.dir+4)%8,l*Math.min(e.w,e.h)/2,t.pt]);if(!u.size)return null;let f=e.gx-1,m=e.gx+e.w,h=e.gy-1,g=e.gy+e.h,b=(e,t)=>{let n=Math.max(f-e,e-m,0),r=Math.max(h-t,t-g,0);return Math.max(n,r)+.414*Math.min(n,r)},C=/* @__PURE__ */ new Map,T=(e,t,n,r)=>{A[e]===j&&D[e]<=t||(A[e]=j,D[e]=t,O[e]=-1,k[e]=n,C.set(e,r),N(t+b(e%p,e/p|0),e))};if(J(t).forEach((e,r)=>e.cells.forEach(([a,o])=>{let s=e.dir===6||e.dir===2?a:o;w(a,o,n)&&d(i,r,s)&&!V(t,r,s,S)&&T(o*p+a,l*Math.abs(s+.5-e.mid),e.dir,e.wall(s))})),!i)for(let e of H(t,S))w(...e.out,n)&&T(e.out[1]*p+e.out[0],l*Math.min(t.w,t.h)/2,e.dir,e.pt);for(;M.length;){let[e,t]=P();if(t===a)break;let r=D[t];if(e-b(t%p,t/p|0)>r+1e-4)continue;let i=u.get(t);if(i){let e=r+i[1]+F(k[t],i[0]);(A[a]!==j||e<D[a])&&(A[a]=j,D[a]=e,O[a]=t,N(e,a))}let l=t%p,d=t/p|0;for(let e=0;e<8;e++){let i=l+L[e],a=d+R[e];if(!w(i,a,n)||L[e]&&R[e]&&(!w(i,d,n)||!w(l,a,n)))continue;let u=a*p+i,f=r+(L[e]&&R[e]?Math.SQRT2*o:1)*(x[u]?1-c:1)+s*(v-y[u])+F(k[t],e);A[u]===j&&D[u]<=f||(A[u]=j,D[u]=f,O[u]=t,k[u]=e,N(f+b(i,a),u))}}if(A[a]!==j)return null;let E=[];for(let e=O[a];e!==-1;e=O[e])E.push(e);return E.reverse(),[C.get(E[0]),...E.map(e=>[e%p+.5,Math.floor(e/p)+.5]),u.get(E.at(-1))[2]]}let B=f.map((e,t)=>t).sort((e,t)=>f[t].count-f[e].count||e-t),K=f.map(e=>({a:e.a,b:e.b,count:e.count,back:e.back,implied:e.implied})),q=e=>G(e,(e,t)=>{C(e,t)&&!h[t*p+e]&&(x[t*p+e]=1)}),ee=(e,t,n)=>{let r=f[e],i=d[r.a],a=d[r.b];return E(i,a,i.parent,t,n)??I(i,a,i.parent,t,n)};for(let e of B){let t=ee(e);t&&(K[e].pts=t,q(t))}let te=u/(t.cell??7),Z=/* @__PURE__ */ new Map;K.forEach((e,t)=>{if(e.pts)for(let[n,r,i]of[[`b`,e.b,e.pts[0]],[`a`,e.a,e.pts.at(-1)]]){let a=d[r];if(a.kind!==`folder`||!U(a,i))continue;let o=W(a,i),s=`${r}|${o}`;Z.set(s,[...Z.get(s)||[],{k:t,end:n,t:Math.floor(o<2?i[0]:i[1]),count:e.count}])}});let ne=/* @__PURE__ */ new Map;for(let[e,t]of Z){let[n,r]=e.split(`|`).map(Number),i=d[n];J(i)[r],r<2?i.gx:i.gy,t.sort((e,t)=>e.t-t.t);for(let e=0;e<t.length;){let n=e+1;for(;n<t.length&&t[n].t-t[n-1].t<=te;)n++;let a=t.slice(e,n);if(e=n,a.length<2||a.every(e=>e.t===a[0].t))continue;let o=/* @__PURE__ */ new Map;for(let e of a)o.set(e.t,(o.get(e.t)||0)+e.count);let s=(a[0].t+a.at(-1).t)/2,c=[...o].filter(([e])=>!V(i,r,e,S)).reduce((e,t)=>t[1]>e[1]||t[1]===e[1]&&Math.abs(t[0]-s)<Math.abs(e[0]-s)?t:e)[0];for(let e of a)e.t!==c&&ne.set(e.k,{...ne.get(e.k),[e.end]:{side:r,t:c}})}}if(ne.size){x.fill(0),K.forEach((e,t)=>{e.pts&&!ne.has(t)&&q(e.pts)});for(let e of B){let t=ne.get(e);if(!t)continue;let n=K[e],r=(e,t)=>{if(!U(d[e],t))return;let n=W(d[e],t);return{side:n,t:Math.floor(n<2?t[0]:t[1])}},i=ee(e,t.a??r(n.a,n.pts.at(-1)),t.b??r(n.b,n.pts[0]));i&&(K[e].pts=i),q(K[e].pts)}}return K}function V(e,t,n,r){if(e.kind!==`folder`)return!1;let i=t<2?e.gx:e.gy,a=i+(t<2?e.w:e.h);return n+.5-i<r||a-(n+.5)<r}function H(e,t){return e.kind===`folder`?[[e.gx,e.gy,1,1,5],[e.gx+e.w,e.gy,-1,1,7],[e.gx+e.w,e.gy+e.h,-1,-1,1],[e.gx,e.gy+e.h,1,-1,3]].map(([e,n,r,i,a])=>({out:[Math.floor(e-r*.5),Math.floor(n-i*.5)],in:[Math.floor(e+r*.5),Math.floor(n+i*.5)],dir:a,pt:[e+r*t/2,n+i*t/2]})):[]}function U(e,[t,n]){let r=(e,t)=>Math.abs(e-t)<1e-6;return(r(t,e.gx)||r(t,e.gx+e.w))&&n>=e.gy-1e-6&&n<=e.gy+e.h+1e-6||(r(n,e.gy)||r(n,e.gy+e.h))&&t>=e.gx-1e-6&&t<=e.gx+e.w+1e-6}function W(e,[t,n]){let r=(e,t)=>Math.abs(e-t)<1e-6;return r(n,e.gy)?0:r(n,e.gy+e.h)?1:r(t,e.gx)?2:3}function G(e,t){for(let n=1;n<e.length;n++){let[r,i]=e[n-1],[a,o]=e[n],s=Math.max(1,Math.ceil(Math.max(Math.abs(a-r),Math.abs(o-i))*2));for(let e=0;e<=s;e++)t(Math.floor(r+(a-r)*e/s),Math.floor(i+(o-i)*e/s))}}let K={turn45:1.5,turn90:3,diag:1.3,hug:1,centre:1,join:.5,cross:1,haste:1.5,hasteNote:4};function q(t,n,r=e(t),i={}){let{turn45:a,turn90:o,diag:s,hug:c,centre:l,join:u,cross:d,haste:f,hasteNote:p}={...K,...i},{items:m,links:h}=t,{W:g,H:_,blocked:v,owner:y}=r,b=g*_,x=Math.max(2,Math.round(28/(t.cell??7))),S=Y(r,x),C=10/(t.cell??7),w=new Uint8Array(b);for(let e of n)e.pts&&G(e.pts,(e,t)=>{e>=0&&t>=0&&e<g&&t<_&&(w[t*g+e]=1)});let T=(e,t)=>e>=0&&t>=0&&e<g&&t<_,E=(e,t)=>{for(;m[e].parent!==t;)e=m[e].parent;return e},D=(e,[t,n])=>{let r=(e,t)=>Math.abs(e-t)<1e-6;if(!U(e,[t,n])){let i=H(e,C).find(e=>r(e.pt[0],t)&&r(e.pt[1],n));if(i)return[...i.in,i.dir]}return r(t,e.gx)?[e.gx,Math.floor(n),4]:r(t,e.gx+e.w)?[e.gx+e.w-1,Math.floor(n),0]:r(n,e.gy)?[Math.floor(t),e.gy,6]:[Math.floor(t),e.gy+e.h-1,2]},O=(e,t)=>(L[e]&&R[e]?Math.SQRT2*s:1)+c*(x-S[t]),k=(e,t)=>{if(e===8||e===t)return 0;let n=Math.min((t-e+8)%8,(e-t+8)%8);return n===1?a:o*(n>=3?2:1)},A=new Float32Array(b*9+1),j=new Int32Array(b*9+1),M=new Uint32Array(b*9+1),P=b*9,F=0,I=/* @__PURE__ */ new Float64Array(4096),z=/* @__PURE__ */ new Float64Array(4096),B=/* @__PURE__ */ new Int32Array(4096),W=0,q=0,X=0,te=(e,t,n)=>{if(W===I.length){let e=(e,t)=>{let n=new t(e.length*2);return n.set(e),n};I=e(I,Float64Array),z=e(z,Float64Array),B=e(B,Int32Array)}let r=W++;for(;r>0;){let t=r-1>>1;if(I[t]<=e)break;I[r]=I[t],z[r]=z[t],B[r]=B[t],r=t}I[r]=e,z[r]=t,B[r]=n},Z=()=>{I[0],q=z[0],X=B[0];let e=I[--W],t=z[W],n=B[W],r=0;for(;;){let t=2*r+1;if(t>=W||(t+1<W&&I[t+1]<I[t]&&t++,I[t]>=e))break;I[r]=I[t],z[r]=z[t],B[r]=B[t],r=t}I[r]=e,z[r]=t,B[r]=n};function ne(e,t,n,r,i){F++,W=0;let a=(e,t)=>T(e,t)&&!v[t*g+e]&&y[t*g+e]===n,o=r%g,s=r/g|0,f=(e,t)=>{let n=Math.abs(e-o),r=Math.abs(t-s);return i*(1-u)*(Math.max(n,r)+.414*Math.min(n,r))},p=/* @__PURE__ */ new Map;if(e.kind===`folder`)for(let t of H(e,C)){let[n,r]=t.out;if(!a(n,r))continue;let i=r*g+n,o=i*9+t.dir,s=Math.fround(l*Math.min(e.w,e.h)/2+c*(x-S[i]));M[o]===F&&A[o]<=s||(M[o]=F,A[o]=s,j[o]=-1,p.set(i,t.pt),te(s+f(n,r),s,o))}for(J(e).forEach((t,n)=>t.cells.forEach(([r,i])=>{if(!a(r,i)||V(e,n,t.dir===6||t.dir===2?r:i,C))return;let o=t.dir===6||t.dir===2?r:i,s=i*g+r,u=s*9+t.dir,d=Math.fround(l*Math.abs(o+.5-t.mid)+c*(x-S[s]));M[u]===F&&A[u]<=d||(M[u]=F,A[u]=d,j[u]=-1,p.set(s,t.wall(o)),te(d+f(r,i),d,u))}));W;){Z();let e=X,n=q;if(e===P)break;if(n!==A[e])continue;let r=e/9|0,i=e%9,o=r%g,s=r/g|0,c=t.get(r);if(c){let t=n+c.rest+k(i,c.dir);(M[P]!==F||t<A[P])&&(M[P]=F,A[P]=t,j[P]=e,te(t,t,P))}for(let t=0;t<8;t++){let r=o+L[t],c=s+R[t];if(!a(r,c)||L[t]&&R[t]&&(!a(r,s)||!a(o,c)))continue;let l=c*g+r,u=l*9+t,p=Math.fround(n+O(t,l)+(w[l]?d:0)+k(i,t));M[u]===F&&A[u]<=p||(M[u]=F,A[u]=p,j[u]=e,te(p+f(r,c),p,u))}}if(M[P]!==F)return null;let m=[];for(let e=j[P];e!==-1;e=j[e])m.push(e/9|0);return m.reverse(),{cells:m,pts:[p.get(m[0]),...m.map(e=>[e%g+.5,Math.floor(e/g)+.5]),t.get(m.at(-1)).pt]}}let re=[];n.forEach((e,t)=>{if(!e.pts)return;let n=m[e.a].parent,r=h.filter(t=>t.s>=2&&t.level===n&&E(t.a,n)===e.a&&E(t.b,n)===e.b);m[e.a].kind===`folder`&&re.push({folder:e.a,at:e.pts[e.pts.length-1],notes:r.map(e=>e.a),trunk:t}),m[e.b].kind===`folder`&&re.push({folder:e.b,at:e.pts[0],notes:r.map(e=>e.b),trunk:t})});let ie=[],ae=e=>m[e].kind===`note`,Q=/* @__PURE__ */ new Map;for(let e=0;e<re.length;e++){let{folder:t,at:n,notes:r,trunk:i}=re[e],[a,o,l]=D(m[t],n);if(!T(a,o)||v[o*g+a])continue;let d=o*g+a,h={dir:l,rest:0,pt:n};Q.has(d)||Q.set(d,{ends:/* @__PURE__ */ new Map([[d,h]]),endsAny:/* @__PURE__ */ new Map([[d,h]]),owners:/* @__PURE__ */ new Map([[d,-1]]),exits:/* @__PURE__ */ new Map});let{ends:_,endsAny:y,owners:b,exits:C}=Q.get(d),w=/* @__PURE__ */ new Map;for(let e of r){let n=E(e,t);w.set(n,[...w.get(n)||[],e])}for(let[e,n]of[...w].sort((e,t)=>ae(e[0])-ae(t[0])||t[1].length-e[1].length||e[0]-t[0])){let r=ae(e),a=C.get(e),o=r?y:_,l=a&&o.has(a.cell)?{cells:[a.cell],pts:[a.wall,o.get(a.cell).pt,o.get(a.cell).pt]}:ne(m[e],o,t,d,r?p:f);if(!l)continue;a||C.set(e,{cell:l.cells[0],wall:l.pts[0]});let h=ie.length,v=l.cells.at(-1);ie.push({item:e,folder:t,trunk:i,count:n.length,pts:l.pts,cells:l.cells,leaf:r,via:b.get(v)??-1});let w=new Float32Array(l.cells.length);w[w.length-1]=y.get(v).rest;for(let e=l.cells.length-2;e>=0;e--){let t=l.cells[e],n=l.cells[e+1],r=t%g!==n%g&&Math.floor(t/g)!==Math.floor(n/g);w[e]=w[e+1]+(1-u)*((r?Math.SQRT2*s:1)+c*(x-S[n]))}for(let[e,t]of l.cells.entries()){if(y.has(t))continue;let n=l.cells[e+1],i={dir:n===void 0?y.get(v).dir:ee(n%g-t%g,Math.floor(n/g)-Math.floor(t/g)),rest:w[e],pt:[t%g+.5,Math.floor(t/g)+.5]};y.set(t,i),b.set(t,h),r||_.set(t,i)}r||re.push({folder:e,at:l.pts[0],notes:n,trunk:i})}}return N(ie,b),ie.map(({item:e,folder:t,trunk:n,count:r,pts:i,lane:a,leaf:o,via:s})=>({item:e,folder:t,trunk:n,count:r,pts:i,lane:a,leaf:o,via:s}))}let ee=(e,t)=>L.findIndex((n,r)=>n===Math.sign(e)&&R[r]===Math.sign(t));function J(e){return[{dir:6,cells:X(e.gx,e.gx+e.w).map(t=>[t,e.gy-1]),mid:e.gx+e.w/2,wall:t=>[t+.5,e.gy]},{dir:2,cells:X(e.gx,e.gx+e.w).map(t=>[t,e.gy+e.h]),mid:e.gx+e.w/2,wall:t=>[t+.5,e.gy+e.h]},{dir:4,cells:X(e.gy,e.gy+e.h).map(t=>[e.gx-1,t]),mid:e.gy+e.h/2,wall:t=>[e.gx,t+.5]},{dir:0,cells:X(e.gy,e.gy+e.h).map(t=>[e.gx+e.w,t]),mid:e.gy+e.h/2,wall:t=>[e.gx+e.w,t+.5]}]}function Y({W:e,H:t,blocked:n,owner:r},i){let a=e*t,o=new Uint8Array(a).fill(i),s=new Int32Array(a),c=0,l=0;for(let i=0;i<a;i++){if(n[i]){o[i]=0;continue}let a=i%e,c=i/e|0;for(let u=0;u<8;u++){let d=a+L[u],f=c+R[u];if(d<0||f<0||d>=e||f>=t)continue;let p=f*e+d;if(n[p]||r[p]!==r[i]){o[i]=1,s[l++]=i;break}}}for(;c<l;){let a=s[c++],u=a%e,d=a/e|0;if(!(o[a]+1>=i))for(let i=0;i<8;i++){let c=u+L[i],f=d+R[i];if(c<0||f<0||c>=e||f>=t)continue;let p=f*e+c;o[p]>o[a]+1&&!n[p]&&r[p]===r[a]&&(o[p]=o[a]+1,s[l++]=p)}}return o}let X=(e,t)=>Array.from({length:Math.max(0,t-e)},(t,n)=>e+n);function te(e,t){let n=10/(e.cell??7),r=e.items.filter(e=>e.kind===`folder`),i=(e,t)=>Math.abs(e-t)<1e-6,a=(e,t)=>{for(let a of r){let r=i(e[0],a.gx)||i(e[0],a.gx+a.w),o=i(e[1],a.gy)||i(e[1],a.gy+a.h);if(!(r&&e[1]>=a.gy-1e-6&&e[1]<=a.gy+a.h+1e-6)&&!(o&&e[0]>=a.gx-1e-6&&e[0]<=a.gx+a.w+1e-6))continue;let s=e[0]-a.gx<a.w/2?1:-1,c=e[1]-a.gy<a.h/2?1:-1,l=s>0?a.gx:a.gx+a.w,u=c>0?a.gy:a.gy+a.h;if(Math.abs(e[0]-l)+Math.abs(e[1]-u)>=n-1e-6)return null;let d=[l+s*n/2,u+c*n/2],f=t[0]>a.gx&&t[0]<a.gx+a.w&&t[1]>a.gy&&t[1]<a.gy+a.h?[s,c]:[-s,-c],p=t[0]-d[0],m=t[1]-d[1];if(Math.abs(Math.abs(p)-Math.abs(m))<1e-6&&p*f[0]>0)return[d];let h=[p/f[0],m/f[1]].filter(e=>e>1e-6).sort((e,t)=>e-t);return h.length?[d,[d[0]+f[0]*h[0],d[1]+f[1]*h[0]]]:null}return null};for(let e of t){if(!e.pts||e.pts.length<2)continue;let t=a(e.pts[0],e.pts[1]);t&&(e.pts=[...t,...e.pts.slice(1)]);let n=a(e.pts.at(-1),e.pts.at(-2));n&&(e.pts=[...e.pts.slice(0,-1),...n.reverse()])}return t}function Z(t,n){let r={flow:n.gridFlow===`right`?`right`:`up`,grain:ae(n),plan:!!n.blocks,from:n.from??null},i=T(t,r);if(n.blocks){let n=ne(i,B(i,e(i)));[...n.values()].some(e=>e.wider.size)&&(i=T(t,{...r,planned:n}))}i.feeders=re(i);let a=e(i),o=B(i,a),s=q(i,o,a);return te(i,[...o,...s]),i.highways={trunks:o,feeders:s},i}function ne(e,t){let{items:n}=e,r=e.cell>7?2:3,i=/* @__PURE__ */ new Map;for(let[a,o]of e.pairs??[]){let e=a===``?-1:n.findIndex(e=>e.kind===`folder`&&e.ref===a),s=n.map((e,t)=>t).filter(t=>n[t].parent===e),c=t.filter(t=>t.pts&&n[t.a].parent===e),l=/* @__PURE__ */ new Map;for(let e of s)for(let t of s){if(e>=t)continue;let i=n[e],a=n[t],[o,s]=i.gx<=a.gx?[i,a]:[a,i],[u,d]=i.gy<=a.gy?[i,a]:[a,i],f=s.gx-(o.gx+o.w),p=d.gy-(u.gy+u.h),m=null,h=!1;if(f>0&&f<=16&&Math.min(i.gy+i.h,a.gy+a.h)-Math.max(i.gy,a.gy)>=4?(m=[o.gx+o.w,Math.max(i.gy,a.gy),s.gx,Math.min(i.gy+i.h,a.gy+a.h)],h=!0):p>0&&p<=16&&Math.min(i.gx+i.w,a.gx+a.w)-Math.max(i.gx,a.gx)>=4&&(m=[Math.max(i.gx,a.gx),u.gy+u.h,Math.min(i.gx+i.w,a.gx+a.w),d.gy]),!m)continue;let g=/* @__PURE__ */ new Map;for(let e of c)for(let t=1;t<e.pts.length;t++){let[n,r]=e.pts[t-1],[i,a]=e.pts[t],o=Math.max(1,Math.ceil(Math.max(Math.abs(i-n),Math.abs(a-r))));for(let e=0;e<=o;e++){let t=Math.floor(n+(i-n)*e/o),s=Math.floor(r+(a-r)*e/o);if(t<m[0]||t>=m[2]||s<m[1]||s>=m[3])continue;let c=h?t:s;g.has(c)||g.set(c,/* @__PURE__ */ new Set),g.get(c).add(h?s:t)}}let _=[...g.values()].filter(e=>e.size>=4).length;_>1&&l.set([i.ref,a.ref].sort().join(`|`),r*(_-1))}i.set(a,{pair:o,wider:l})}return i}function re(t,n=t.trunks){let{items:r,links:i,W:a}=t;if(!n.some(e=>e.pts&&(r[e.a].kind===`folder`||r[e.b].kind===`folder`)))return[];let o=e(t),s=j(t,o,{crowd:1,haste:1.5});for(let e of n)e.pts&&s.occupy(e.pts);let c=(e,t)=>{for(;r[e].parent!==t;)e=r[e].parent;return e},l=(e,[t,n])=>{let i=r[e],a=(e,t)=>Math.abs(e-t)<1e-6;return a(t,i.gx)?[i.gx,Math.floor(n)]:a(t,i.gx+i.w)?[i.gx+i.w-1,Math.floor(n)]:a(n,i.gy)?[Math.floor(t),i.gy]:[Math.floor(t),i.gy+i.h-1]},u=[];n.forEach((e,t)=>{if(!e.pts)return;let n=r[e.a].parent,a=i.filter(t=>t.s>=2&&t.level===n&&c(t.a,n)===e.a&&c(t.b,n)===e.b);r[e.a].kind===`folder`&&u.push({folder:e.a,at:e.pts[e.pts.length-1],notes:a.map(e=>e.a),trunk:t}),r[e.b].kind===`folder`&&u.push({folder:e.b,at:e.pts[0],notes:a.map(e=>e.b),trunk:t})});let d=[];for(let e=0;e<u.length;e++){let{folder:t,at:n,notes:i,trunk:f}=u[e],[p,m]=l(t,n);if(p<0||m<0||p>=a||o.blocked[m*a+p])continue;let h=/* @__PURE__ */ new Map;for(let e of i){let n=c(e,t);h.set(n,[...h.get(n)||[],e])}let g=m*a+p,_=e=>r[e].kind===`note`,v=/* @__PURE__ */ new Map([[g,[g,n[0],n[1]]]]),y=new Map(v),b=/* @__PURE__ */ new Map([[g,-1]]);for(let[e,n]of[...h].sort((e,t)=>_(e[0])-_(t[0])||t[1].length-e[1].length||e[0]-t[0])){let r=_(e),i=s.routeTo(e,{ends:r?y:v,folder:t,toward:g});if(!i)continue;let c=d.length;d.push({item:e,folder:t,trunk:f,count:n.length,pts:i.pts,cells:i.cells,leaf:r,via:b.get(i.cells[i.cells.length-1])??-1});let l=new Float32Array(i.cells.length);l[l.length-1]=y.get(i.cells[i.cells.length-1])?.[3]??0;for(let e=i.cells.length-2;e>=0;e--){let t=i.cells[e],n=i.cells[e+1];l[e]=l[e+1]+(t%a!==n%a&&Math.floor(t/a)!==Math.floor(n/a)?Math.SQRT2:1)+(o.close[n]?O.hug:0)}for(let[e,t]of i.cells.entries()){if(y.has(t))continue;let n=[t,t%a+.5,Math.floor(t/a)+.5,l[e]];y.set(t,n),b.set(t,c),r||v.set(t,n)}r||u.push({folder:e,at:i.pts[0],notes:n,trunk:f})}}return N(d,o.W*o.H),d.map(({item:e,folder:t,trunk:n,count:r,pts:i,lane:a,leaf:o,via:s})=>({item:e,folder:t,trunk:n,count:r,pts:i,lane:a,leaf:o,via:s}))}function ie(t){let n=e(t),r=j(t,n);return e=>I(r,e,n.W,n.H)}let ae=e=>e.grain===`coarse`||e.grain===`coarser`?e.grain:`fine`,Q=null;self.onmessage=({data:e})=>{try{if(`layout`in e){self.postMessage({id:e.id,result:Z(e.layout.model,e.layout.o)});return}let{key:t,layout:n,asks:r}=e.routes;if(Q?.key!==t){if(!n)throw Error(`no layout for these routes`);Q={key:t,run:ie(n)}}self.postMessage({id:e.id,result:Q.run(r)})}catch(t){self.postMessage({id:e.id,error:String(t?.message??t)})}}})();