isorite 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.
Files changed (77) hide show
  1. package/dist/core.js +125 -2
  2. package/dist/embed-worker.js +9 -2
  3. package/dist/main.js +2377 -394
  4. package/package.json +2 -1
  5. package/plugin/server.ts +9 -8
  6. package/plugin/tour.ts +5 -8
  7. package/web/_app/immutable/assets/0.s5xqevrq.css +1 -0
  8. package/web/_app/immutable/assets/4.PVZR2_N5.css +1 -0
  9. package/web/_app/immutable/assets/5.DCxNIgyW.css +1 -0
  10. package/web/_app/immutable/assets/9.CFA9_nYZ.css +1 -0
  11. package/web/_app/immutable/assets/FolderField._A4_sc1Z.css +1 -0
  12. package/web/_app/immutable/assets/NoteEditor.ChlpmyHO.css +1 -0
  13. package/web/_app/immutable/assets/NoteList.F579Zvj_.css +1 -0
  14. package/web/_app/immutable/assets/{Timeline.UMF1LjSO.css → Timeline.KTc3LKuK.css} +1 -1
  15. package/web/_app/immutable/assets/Tutorial.DOfsM49T.css +1 -0
  16. package/web/_app/immutable/chunks/B0NIb88Q.js +1 -0
  17. package/web/_app/immutable/chunks/B7ZjnqOt.js +20 -0
  18. package/web/_app/immutable/chunks/{B-si2ell.js → BEVz4Dgg.js} +1 -1
  19. package/web/_app/immutable/chunks/BEk5idXo.js +1 -0
  20. package/web/_app/immutable/chunks/B_nIecMW.js +667 -0
  21. package/web/_app/immutable/chunks/C8UdwlAg.js +3 -0
  22. package/web/_app/immutable/chunks/CRzLMJPS.js +1 -0
  23. package/web/_app/immutable/chunks/CcQ3P3p1.js +13 -0
  24. package/web/_app/immutable/chunks/CcRs965g.js +1 -0
  25. package/web/_app/immutable/chunks/Cw2GjAJR.js +1 -0
  26. package/web/_app/immutable/chunks/DjBHskLm.js +1 -0
  27. package/web/_app/immutable/chunks/Dm229u8R.js +1 -0
  28. package/web/_app/immutable/chunks/UM_L7-f7.js +1 -0
  29. package/web/_app/immutable/chunks/b-AOhhy1.js +1 -0
  30. package/web/_app/immutable/chunks/k55859zq.js +1 -0
  31. package/web/_app/immutable/entry/app.B3QXxjjH.js +2 -0
  32. package/web/_app/immutable/entry/start.BauJm-6k.js +1 -0
  33. package/web/_app/immutable/nodes/0.DP4c84Wn.js +14 -0
  34. package/web/_app/immutable/nodes/1.BcwcVDJZ.js +1 -0
  35. package/web/_app/immutable/nodes/2.DgGnQZ7P.js +1 -0
  36. package/web/_app/immutable/nodes/3.BudzO7We.js +1 -0
  37. package/web/_app/immutable/nodes/4.DmswyrSt.js +2 -0
  38. package/web/_app/immutable/nodes/5.DjXsfjL5.js +5 -0
  39. package/web/_app/immutable/nodes/6.uBh-sdQx.js +1 -0
  40. package/web/_app/immutable/nodes/7.BYBNXM1A.js +1 -0
  41. package/web/_app/immutable/nodes/8.Tbz9Rh77.js +1 -0
  42. package/web/_app/immutable/nodes/9.NF5w8YC2.js +486 -0
  43. package/web/_app/immutable/workers/worker-rKDNrEKQ.js +1 -0
  44. package/web/_app/version.json +1 -1
  45. package/web/icon-180.png +0 -0
  46. package/web/icon-192.png +0 -0
  47. package/web/icon-512.png +0 -0
  48. package/web/icon-maskable-512.png +0 -0
  49. package/web/index.html +35 -12
  50. package/web/manifest.webmanifest +14 -0
  51. package/web/_app/immutable/assets/0.CbWSsYpm.css +0 -1
  52. package/web/_app/immutable/assets/3.Bgs8n1LK.css +0 -1
  53. package/web/_app/immutable/assets/4.CCFEPTFN.css +0 -1
  54. package/web/_app/immutable/assets/5.BCvLF9Xz.css +0 -1
  55. package/web/_app/immutable/assets/6.kPo5mcJx.css +0 -1
  56. package/web/_app/immutable/assets/NoteEditor.Bp-YDqYj.css +0 -1
  57. package/web/_app/immutable/chunks/BD1Dpm2e.js +0 -3
  58. package/web/_app/immutable/chunks/C0fpmehI.js +0 -1
  59. package/web/_app/immutable/chunks/CWYACT2V.js +0 -1
  60. package/web/_app/immutable/chunks/CdQZ-ArP.js +0 -1
  61. package/web/_app/immutable/chunks/DN3dk6rD.js +0 -147
  62. package/web/_app/immutable/chunks/DtAOoM-T.js +0 -1
  63. package/web/_app/immutable/chunks/DykrN7z5.js +0 -535
  64. package/web/_app/immutable/chunks/cmGruEKS.js +0 -1
  65. package/web/_app/immutable/chunks/gRYnlonl.js +0 -1
  66. package/web/_app/immutable/entry/app.DgJiXIYs.js +0 -2
  67. package/web/_app/immutable/entry/start.l9vV7NaJ.js +0 -1
  68. package/web/_app/immutable/nodes/0.DWPeBju2.js +0 -1
  69. package/web/_app/immutable/nodes/1.CJVDS8FT.js +0 -1
  70. package/web/_app/immutable/nodes/2.o8ItfT-a.js +0 -1
  71. package/web/_app/immutable/nodes/3.uhHyOPGK.js +0 -13
  72. package/web/_app/immutable/nodes/4.BYKkAZTp.js +0 -2
  73. package/web/_app/immutable/nodes/5.BzEQO7Xv.js +0 -4
  74. package/web/_app/immutable/nodes/6.GxiAUa6J.js +0 -1
  75. package/web/_app/immutable/nodes/7.d2Ere8Jb.js +0 -1
  76. package/web/_app/immutable/nodes/8.CvPHZL8j.js +0 -1
  77. package/web/_app/immutable/workers/worker-d9GxGKde.js +0 -1
@@ -1 +0,0 @@
1
- import{A as e,B as t,D as n,F as r,X as i,Y as a,Z as o,i as s,u as c}from"./BD1Dpm2e.js";import"./xihTtKlq.js";var l=e(`<svg class="logo" viewBox="-0.4 -9.5 32.4 9.9" role="img" aria-label="isorite"><path d="M2 0L2 -2L0 -4M2 -2L2 -4L4 -6M5.6 0L6.6 0L7.6 -1L5.6 -3L6.6 -4L7.6 -4M11.2 0L13.2 -2L11.2 -4L9.2 -2ZM14.8 0L14.8 -2L15.8 -3L16.8 -4M14.8 -2L14.8 -4M20.4 0L20.4 -2L18.4 -4M20.4 -2L20.4 -4L22.4 -6M26 0L25 -1L25 -4L24 -4M25 -4L26 -4M25 -4L25 -5M30.6 0L29.6 0L27.6 -2L29.6 -4L31.6 -2L27.6 -2"></path><path class="iso" d="M2 -9.05l1.2 1.2l-1.2 1.2l-1.2 -1.2z"></path><path class="right" d="M20.4 -9.05l1.2 1.2l-1.2 1.2l-1.2 -1.2z"></path></svg>`);function u(e,r){let i=s(r,`width`,3,72);var a=l();t(()=>{c(a,`width`,i()),c(a,`height`,i()*9.9/32.4)}),n(e,a)}var d=new class{#e=o(a(typeof document>`u`?``:document.documentElement.dataset.ground??``));get chosen(){return r(this.#e)}set chosen(e){i(this.#e,e,!0)}choose(e){this.chosen=e,e?document.documentElement.dataset.ground=e:delete document.documentElement.dataset.ground;try{e?localStorage.setItem(`isorite.ground`,e):localStorage.removeItem(`isorite.ground`)}catch{}}},f=[[``,`the system's`],[`lapis`,`lapis`],[`quartz`,`quartz`]];export{d as n,u as r,f as t};
@@ -1 +0,0 @@
1
- import{F as e,X as t,Z as n}from"./BD1Dpm2e.js";import{o as r}from"./CWYACT2V.js";var i=class extends Error{status;current;constructor(e,t,n){super(e),this.status=t,this.current=n}};function a(e=new URL(`api/`,document.baseURI).href){let t=null,n=async(t,n)=>{let r;try{r=await fetch(e+t,n)}catch{throw new i(`isorite is not answering`,0)}let a=await r.json().catch(()=>({}));if(!r.ok)throw new i(a.error??r.statusText,r.status,a.current);return a},r=()=>n(`session`),a=async(e,i,a)=>{t??=r().then(e=>e.token);let o={"Content-Type":`application/json`,"x-isorite-token":await t};return n(i,{method:e,headers:o,body:JSON.stringify(a)})},o=e=>`?id=${encodeURIComponent(e)}`;return{session:async()=>{let{token:e,...n}=await r();return t=Promise.resolve(e),n},notes:()=>n(`notes`),readNote:e=>n(`note`+o(e)),saveNote:(e,t)=>a(`PUT`,`note`+o(e),t),createNote:(e,t)=>a(`POST`,`note`+o(e),{text:t}),journal:e=>n(`journal`+o(e)),version:async(e,t)=>(await n(`version`+o(e)+`&entry=`+encodeURIComponent(t))).text,restore:(e,t,n)=>a(`POST`,`note/restore`+o(e),{entry:t,base:n}),map:()=>n(`map`),timeline:()=>n(`timeline`),search:e=>n(`search?q=${encodeURIComponent(e)}`),ask:e=>a(`POST`,`iso/ask`,e),stop:async e=>{await a(`POST`,`iso/stop`,{request:e})},keep:(e,t,n)=>a(`POST`,`proposal/keep`+o(e),{proposal:t,...n===void 0?{}:{region:n}}),revise:async(e,t,n)=>{await a(`POST`,`proposal/revise`+o(e),{proposal:t,text:n})},discard:async(e,t,n)=>{await a(`POST`,`proposal/discard`+o(e),{proposal:t,...n===void 0?{}:{region:n}})},drafts:()=>n(`drafts`),createDraft:()=>a(`POST`,`drafts`,{}),keepDraft:(e,t,n)=>a(`POST`,`draft/keep`+o(e),{proposal:t,folder:n}),discardDraft:async e=>{await a(`POST`,`draft/discard`+o(e),{})},createExerciseDraft:(e,t,n)=>a(`POST`,`exercise/draft`,{folder:e,tests:t,after:n??null}),keepExercise:(e,t)=>a(`POST`,`exercise/keep`+o(e),{proposal:t}),study:()=>n(`study`),windBack:async e=>{await a(`POST`,`exercise/wind-back`+o(e),{})},context:e=>n(`context`+(e?o(e):``)),clearConversation:async()=>{await a(`POST`,`context/clear`,{})},settings:()=>n(`settings`),setKey:e=>a(`PUT`,`settings/key`,{key:e}),connect:e=>a(`POST`,`settings/connect`,{callback:e}),connected:(e,t)=>a(`POST`,`settings/connected`,{code:e,state:t}),events(t){let n=new EventSource(e+`events`),r=e=>{try{t(JSON.parse(e.data))}catch{}};for(let e of[`note-changed`,`journal`,`record`,`iso-start`,`iso-step`,`iso-text`,`iso-done`,`iso-stopped`,`iso-failed`])n.addEventListener(e,r);return()=>n.close()}}}var o=class{api;#e=n(null);get session(){return e(this.#e)}set session(e){t(this.#e,e)}#t=n({notes:[],dirs:[]});get listing(){return e(this.#t)}set listing(e){t(this.#t,e)}#n=n(``);get error(){return e(this.#n)}set error(e){t(this.#n,e,!0)}#r=n(``);get open(){return e(this.#r)}set open(e){t(this.#r,e,!0)}#i=n(``);get here(){return e(this.#i)}set here(e){t(this.#i,e,!0)}#a=n(null);get saving(){return e(this.#a)}set saving(e){t(this.#a,e,!0)}#o=n(null);get atlas(){return e(this.#o)}set atlas(e){t(this.#o,e)}#s=n(null);get exercise(){return e(this.#s)}set exercise(e){t(this.#s,e)}#c=n(!1);get studying(){return e(this.#c)}set studying(e){t(this.#c,e,!0)}#l=n(null);get signIn(){return e(this.#l)}set signIn(e){t(this.#l,e)}#u=n(``);get hint(){return e(this.#u)}set hint(e){t(this.#u,e,!0)}#d=n(null);get iso(){return e(this.#d)}set iso(e){t(this.#d,e)}watching=``;listeners=new Set;relist=null;async load(e=a()){this.api=e;try{[this.session,this.listing]=await Promise.all([e.session(),e.notes()])}catch(e){this.error=e.message;return}await this.signedIn(),e.events(e=>{this.follow(e);for(let t of this.listeners)t(e);e.type===`note-changed`&&(this.relist&&clearTimeout(this.relist),this.relist=setTimeout(()=>{this.refresh()},300))})}async startSignIn(){let{url:e}=await this.api.connect(location.origin+location.pathname);try{sessionStorage.setItem(s,location.hash)}catch{}location.assign(e)}async signedIn(){let e=new URLSearchParams(location.search),t,n;try{if(e.has(`code`)||e.has(`state`)||e.has(`error`)){let t=sessionStorage.getItem(s)??location.hash;return sessionStorage.removeItem(s),sessionStorage.setItem(c,JSON.stringify({code:e.get(`code`),state:e.get(`state`)})),location.replace(location.pathname+t),new Promise(()=>void 0)}let r=sessionStorage.getItem(c);if(r===null)return;sessionStorage.removeItem(c),{code:t,state:n}=JSON.parse(r)}catch{if({code:t,state:n}={code:e.get(`code`),state:e.get(`state`)},!t&&!n)return}if(!t||!n)this.signIn={ok:!1,message:`No key was made: the sign-in was left or refused.`};else try{let e=await this.api.connected(t,n);this.signIn={ok:!0,message:`Signed in at ${e.provider}: a key was made for isorite, and is held on this device.`}}catch(e){this.signIn={ok:!1,message:e.message}}}async refresh(){try{this.listing=await this.api.notes()}catch{}}follow(e){if(e.type===`iso-start`){this.iso={request:e.request,note:e.note,state:`reading`,steps:[],message:``};return}let t=this.iso;t&&`request`in e&&e.request===t.request&&(e.type===`iso-step`?this.iso={...t,state:`reading`,steps:[...t.steps,e.step]}:e.type===`iso-text`&&t.state!==`writing`?this.iso={...t,state:`writing`}:e.type===`iso-done`?this.iso={...t,state:`done`}:e.type===`iso-stopped`?this.iso={...t,state:`stopped`}:e.type===`iso-failed`&&(this.iso={...t,state:`failed`,message:e.message}))}on(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}},s=`isorite.sign-in.back`,c=`isorite.sign-in.code`,l=new o,u=e=>r(`/n/[...id]`,{id:e});function d(e){return e.normalize(`NFKD`).replace(/[̀-ͯ]/g,``).toLowerCase().replace(/[^\p{L}\p{N}]+/gu,`-`).replace(/^-+|-+$/g,``)}export{i,u as n,d as r,l as t};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.DWPeBju2.js","../chunks/BD1Dpm2e.js","../chunks/CWYACT2V.js","../chunks/xihTtKlq.js","../chunks/gRYnlonl.js","../chunks/B-si2ell.js","../chunks/cmGruEKS.js","../assets/0.CbWSsYpm.css","../nodes/1.CJVDS8FT.js","../nodes/2.o8ItfT-a.js","../chunks/DtAOoM-T.js","../chunks/CdQZ-ArP.js","../nodes/3.uhHyOPGK.js","../chunks/DN3dk6rD.js","../chunks/C0fpmehI.js","../assets/Timeline.UMF1LjSO.css","../assets/3.Bgs8n1LK.css","../nodes/4.BYKkAZTp.js","../chunks/DykrN7z5.js","../assets/NoteEditor.Bp-YDqYj.css","../assets/4.CCFEPTFN.css","../nodes/5.BzEQO7Xv.js","../assets/5.BCvLF9Xz.css","../nodes/6.GxiAUa6J.js","../assets/6.kPo5mcJx.css","../nodes/7.d2Ere8Jb.js","../assets/7.ljiu9bn5.css","../nodes/8.CvPHZL8j.js","../assets/8.C0NYkyNY.css"])))=>i.map(i=>d[i]);
2
- import{$ as e,B as t,C as n,D as r,F as i,G as a,H as o,J as s,K as c,L as l,O as u,T as d,V as f,X as p,Z as m,ct as h,i as g,it as _,j as v,k as y,n as b,r as x,rt as S,s as C,v as w}from"../chunks/BD1Dpm2e.js";import"../chunks/xihTtKlq.js";var T=`modulepreload`,E=function(e,t){return new URL(e,t).href},D={},O=function(e){return e.pathname.endsWith(`.css`)},k=function(e,t,n){if(t in e)return e[t];let r=n();if(!r){e[t]=void 0;return}let i=r.then(()=>{e[t]=void 0},n=>{throw e[t]=void 0,n});return e[t]=i,i},A=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e,i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?new URL(import.meta.resolve(e)):new URL(e,import.meta.url)}r=o(t.map(t=>{t=E(t,n);let r=s(t),i=O(r);return k(D,r.href,()=>{if(e===void 0){e={all:new Set,styles:new Set};let t=document.getElementsByTagName(`link`);for(let n=t.length-1;n>=0;n--){let r=t[n];e.all.add(r.href),r.rel===`stylesheet`&&e.styles.add(r.href)}}if((i?e.styles:e.all).has(r.href))return;let t=document.createElement(`link`);if(t.rel=i?`stylesheet`:T,i||(t.as=`script`),t.crossOrigin=``,t.href=r.href,a&&t.setAttribute(`nonce`,a),document.head.appendChild(t),i)return new Promise((e,n)=>{t.addEventListener(`load`,e),t.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${r}`)))})})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},j={},M=y(`<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>`),N=y(`<!> <!>`,1);function P(y,x){_(x,!0);let T=g(x,`components`,23,()=>[]),E=g(x,`data_0`,3,null),D=g(x,`data_1`,3,null);o(()=>x.stores.page.set(x.page)),f(()=>{x.stores,x.page,x.constructors,T(),x.form,E(),D(),x.stores.page.notify()});let O=m(!1),k=m(!1),A=m(null);b(()=>{let e=x.stores.page.subscribe(()=>{i(O)&&(p(k,!0),l().then(()=>{p(A,document.title||`untitled page`,!0)}))});return p(O,!0),e});let j=e(()=>x.constructors[1]);var P=N(),F=c(P),I=t=>{let n=e(()=>x.constructors[0]);var a=u(),o=c(a);w(o,()=>i(n),(e,t)=>{C(t(e,{get data(){return E()},get form(){return x.form},get params(){return x.page.params},children:(e,t)=>{var n=u(),a=c(n);w(a,()=>i(j),(e,t)=>{C(t(e,{get data(){return D()},get form(){return x.form},get params(){return x.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),r(e,n)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),r(t,a)},L=t=>{let n=e(()=>x.constructors[0]);var a=u(),o=c(a);w(o,()=>i(n),(e,t)=>{C(t(e,{get data(){return E()},get form(){return x.form},get params(){return x.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),r(t,a)};n(F,e=>{x.constructors[1]?e(I):e(L,-1)});var R=s(F,2),z=e=>{var o=M(),s=a(o),c=e=>{var n=v();t(()=>d(n,i(A))),r(e,n)};n(s,e=>{i(k)&&e(c)}),h(o),r(e,o)};n(R,e=>{i(O)&&e(z)}),r(y,P),S()}var F=x(P),I=[()=>A(()=>import(`../nodes/0.DWPeBju2.js`),__vite__mapDeps([0,1,2,3,4,5,6,7]),import.meta.url),()=>A(()=>import(`../nodes/1.CJVDS8FT.js`),__vite__mapDeps([8,1,3,5,2]),import.meta.url),()=>A(()=>import(`../nodes/2.o8ItfT-a.js`),__vite__mapDeps([9,1,2,3,10,11]),import.meta.url),()=>A(()=>import(`../nodes/3.uhHyOPGK.js`),__vite__mapDeps([12,1,2,3,4,5,11,13,14,15,16]),import.meta.url),()=>A(()=>import(`../nodes/4.BYKkAZTp.js`),__vite__mapDeps([17,1,2,3,4,5,10,11,13,18,19,20]),import.meta.url),()=>A(()=>import(`../nodes/5.BzEQO7Xv.js`),__vite__mapDeps([21,1,2,3,4,5,10,11,13,14,15,18,19,22]),import.meta.url),()=>A(()=>import(`../nodes/6.GxiAUa6J.js`),__vite__mapDeps([23,1,2,3,4,11,24]),import.meta.url),()=>A(()=>import(`../nodes/7.d2Ere8Jb.js`),__vite__mapDeps([25,1,3,6,10,26]),import.meta.url),()=>A(()=>import(`../nodes/8.CvPHZL8j.js`),__vite__mapDeps([27,1,2,3,4,5,11,28]),import.meta.url)],L=[],R={"/":[2],"/atlas":[3],"/draft/[id]":[4],"/notes":[6],"/n/[...id]":[5],"/parts":[7],"/study":[8]},z={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},B=Object.fromEntries(Object.entries(z.transport).map(([e,t])=>[e,t.decode])),V=Object.fromEntries(Object.entries(z.transport).map(([e,t])=>[e,t.encode])),H=!0,U=(e,t)=>B[e](t),W=()=>A(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{U as decode,B as decoders,R as dictionary,V as encoders,W as get_error_template,H as hash,z as hooks,j as matchers,I as nodes,F as root,L as server_loads};
@@ -1 +0,0 @@
1
- export{a as load_css,n as start}from"../chunks/CWYACT2V.js";
@@ -1 +0,0 @@
1
- import{$ as e,B as t,C as n,D as r,F as i,G as a,J as o,K as s,M as c,N as l,O as u,P as d,S as f,T as p,U as m,V as h,W as g,X as _,Z as v,_ as y,c as b,ct as x,dt as S,g as C,h as w,it as T,k as E,l as D,lt as O,m as k,q as A,rt as j,s as M,st as N,u as P,x as F,y as ee,z as I}from"../chunks/BD1Dpm2e.js";import{o as L}from"../chunks/CWYACT2V.js";import"../chunks/xihTtKlq.js";import{t as R}from"../chunks/gRYnlonl.js";import{t as z}from"../chunks/B-si2ell.js";import{n as B,r as V,t as H}from"../chunks/cmGruEKS.js";var U=S({load:()=>W});async function W(){return await R.load(),{}}var G=E(`<div class="part svelte-14btb5m"><span> </span><span class="faint detail svelte-14btb5m"> </span><span class="n svelte-14btb5m"> </span> <i class="svelte-14btb5m"></i></div>`),K=E(`<button class="away svelte-14btb5m" type="button" aria-label="Close the breakdown"></button> <div class="frame breakdown svelte-14btb5m" role="dialog" aria-label="Context"><span class="frame-title"> </span> <!> <div class="foot svelte-14btb5m"><span class="label"> </span> <button class="link svelte-14btb5m" type="button">[ clear the conversation ]</button></div> <p class="label">Sizes are estimates until Iso is asked. A long note or a long conversation is cut to fit, and Iso is told what was left out.</p></div>`,1),q=E(`<span class="count svelte-14btb5m"><button class="tokens svelte-14btb5m" type="button" aria-haspopup="dialog"> </button> <span class="faint" aria-hidden="true">·</span> <span class="faint"> </span> <!></span>`);function te(e,c){T(c,!0);let f=v(null),m=v(!1),y,b=e=>e>=1e3?`${(e/1e3).toFixed(e>=1e5?0:1)}k`:String(e),S=e=>`$${e.toFixed(e>0&&e<.1?3:2)}`;function C(e=!1){clearTimeout(y),y=setTimeout(()=>{R.api.context(R.open||void 0).then(e=>_(f,e),()=>void 0)},e?0:600)}h(()=>{R.open,C(!0)}),h(()=>R.on(e=>{(e.type===`note-changed`||e.type===`journal`||e.type===`record`)&&C()})),h(()=>()=>clearTimeout(y));async function w(){await R.api.clearConversation(),C(!0)}var E=u();d(`keydown`,g,e=>{i(m)&&e.key===`Escape`&&_(m,!1)});var D=s(E),O=e=>{var c=q(),u=a(c),d=A(u,!0),h=o(u,4),g=A(h,!0),v=o(h,2),y=e=>{var n=K(),c=s(n),u=o(c,2),d=a(u),h=A(d),g=o(d,2);F(g,17,()=>i(f).parts,e=>e.name,(e,n)=>{var s=G(),c=a(s),l=A(c,!0),u=o(c),d=A(u,!0),m=o(u),h=A(m,!0),g=o(m,2);let _;x(s),t((e,t)=>{p(l,i(n).name),p(d,i(n).detail),p(h,e),_=k(g,``,_,{"--w":t})},[()=>b(i(n).tokens),()=>`${i(f).tokens?Math.round(100*i(n).tokens/i(f).tokens):0}%`]),r(e,s)});var v=o(g,2),y=a(v),C=A(y),T=o(y,2);x(v),N(2),x(u),t((e,t,n)=>{p(h,`context · ${e??``} of ${t??``} tokens`),p(C,`this session · ${n??``} · ${i(f).session.requests??``} ${i(f).session.requests===1?`request`:`requests`}`)},[()=>b(i(f).tokens),()=>b(i(f).limit),()=>S(i(f).session.usd)]),l(`click`,c,()=>_(m,!1)),l(`click`,T,w),r(e,n)};n(v,e=>{i(m)&&e(y)}),x(c),t((e,t,n,r)=>{P(u,`aria-expanded`,i(m)),P(u,`aria-label`,e),p(d,t),P(h,`aria-label`,n),p(g,r)},[()=>`Context: ${b(i(f).tokens)} tokens`,()=>b(i(f).tokens),()=>`This session has cost ${S(i(f).session.usd)}`,()=>S(i(f).session.usd)]),l(`click`,u,()=>_(m,!i(m))),r(e,c)};n(D,e=>{i(f)&&R.session?.study&&e(O)}),r(e,E),j()}c([`click`]);var J=E(`<button type="button" role="radio"> </button>`),ne=E(`<button class="btn" type="button">forget it</button>`),re=E(`<div class="row svelte-15gydnd"><span class="faint">or</span> <button class="btn" type="button"> </button></div> <p class="faint">You sign in there, and the key it makes comes straight here. A spending limit for it is set on the provider's page of keys.</p>`,1),Y=E(`<p role="status"> </p>`),ie=E(`<dt> </dt><dd class="faint svelte-15gydnd"> </dd>`,1),X=E(`<p class="soft"> </p> <form class="row svelte-15gydnd"><label class="hidden-label" for="key">Provider key</label> <input id="key" class="field grow" type="password" autocomplete="off" spellcheck="false"/> <button class="btn primary" type="submit">hold it</button> <!></form> <!> <!> <p class="faint">The key is kept in this device's configuration, never in a base, and is not shown again.</p> <dl class="tiers svelte-15gydnd"></dl>`,1),ae=E(`<p class="bad svelte-15gydnd" role="alert"> </p>`),Z=E(`<button class="shade svelte-15gydnd" type="button" aria-label="Close settings"></button> <div class="frame menu svelte-15gydnd" role="dialog" aria-label="Settings" tabindex="-1"><span class="frame-title">settings</span> <section class="svelte-15gydnd"><h2 class="label svelte-15gydnd">the ground</h2> <div class="row svelte-15gydnd" role="radiogroup" aria-label="Ground"></div></section> <section class="svelte-15gydnd"><h2 class="label svelte-15gydnd">Iso</h2> <!> <!></section> <div class="row foot svelte-15gydnd"><a>the parts</a> <span class="grow"></span> <button class="btn quiet" type="button">close</button></div></div>`,1);function oe(c,u){T(u,!0);let f=v(null),m=v(``),y=v(``),S;h(()=>{R.api.settings().then(e=>_(f,e),e=>_(y,e.message,!0))}),h(()=>{S.focus()});function E(){R.signIn=null,u.close()}async function k(e){_(y,``),R.signIn=null;try{_(f,await R.api.setKey(e)),_(m,``)}catch(e){_(y,e.message,!0)}}async function ee(){_(y,``),R.signIn=null;try{await R.startSignIn()}catch(e){_(y,e.message,!0)}}var I=Z();d(`keydown`,g,e=>{e.key===`Escape`&&E()});var z=s(I),V=o(z,2),U=o(a(V),2),W=o(a(U),2);F(W,21,()=>H,([e,t])=>e,(n,a)=>{var o=e(()=>O(i(a),2));let s=()=>i(o)[0],c=()=>i(o)[1];var u=J();let d;var f=A(u,!0);t(()=>{d=w(u,1,`btn svelte-15gydnd`,null,d,{on:B.chosen===s()}),P(u,`aria-checked`,B.chosen===s()),p(f,c())}),l(`click`,u,()=>B.choose(s())),r(n,u)}),x(W),x(U);var G=o(U,2),K=o(a(G),2),q=e=>{var c=X(),u=s(c),h=A(u),g=o(u,2),v=o(a(g),2);D(v);var y=o(v,2),S=o(y,2),T=e=>{var t=ne();l(`click`,t,()=>k(null)),r(e,t)};n(S,e=>{i(f).key&&e(T)}),x(g);var E=o(g,2),O=e=>{var n=re(),c=s(n),u=o(a(c),2),d=A(u);x(c),N(2),t(()=>p(d,`sign in at ${i(f).provider??``} for a new key`)),l(`click`,u,ee),r(e,n)};n(E,e=>{i(f).connect&&e(O)});var j=o(E,2),M=e=>{var n=Y(),i=A(n,!0);t(()=>{w(n,1,C(R.signIn.ok?`soft`:`bad`),`svelte-15gydnd`),p(i,R.signIn.message)}),r(e,n)};n(j,e=>{R.signIn&&e(M)});var I=o(j,4);F(I,20,()=>[`low`,`mid`,`max`],e=>e,(e,n)=>{var a=ie(),c=s(a),l=A(c,!0),u=o(c),d=A(u,!0);t(()=>{p(l,n),p(d,i(f).tiers[n])}),r(e,a)}),x(I),t(e=>{p(h,`Asked through ${i(f).provider??``}. ${i(f).key?`A key is held on this device.`:`No key is held yet, so Iso cannot be asked.`}`),P(v,`placeholder`,i(f).key?`paste another key to replace it`:`paste a key`),y.disabled=e},[()=>!i(m).trim()]),d(`submit`,g,e=>{e.preventDefault(),i(m).trim()&&k(i(m))}),b(v,()=>i(m),e=>_(m,e)),r(e,c)};n(K,e=>{i(f)&&e(q)});var te=o(K,2),oe=e=>{var n=ae(),a=A(n,!0);t(()=>p(a,i(y))),r(e,n)};n(te,e=>{i(y)&&e(oe)}),x(G);var Q=o(G,2),$=a(Q),se=o($,4);x(Q),x(V),M(V,e=>S=e,()=>S),t(e=>P($,`href`,e),[()=>L(`/parts`)]),l(`click`,z,E),l(`click`,$,E),l(`click`,se,E),r(c,I),j()}c([`click`]);var Q=E(`<a class="back svelte-12qhfyh">‹ study</a>`),$=E(`<a class="back svelte-12qhfyh"> </a>`),se=E(`<span class="faint sep svelte-12qhfyh">/</span> `,1),ce=E(`<a class="svelte-12qhfyh"> </a><!>`,1),le=E(`<span class="where soft svelte-12qhfyh"> </span><button class="btn out svelte-12qhfyh" type="button">↑ out</button>`,1),ue=E(`<button class="btn stop svelte-12qhfyh" type="button">stop</button>`),de=E(`<i></i>`),fe=E(`<button type="button"></button>`),pe=E(`<a class="next svelte-12qhfyh">next</a>`),me=E(`<span class="label kind svelte-12qhfyh"> </span><span class="faint dot svelte-12qhfyh">·</span><span class="label read svelte-12qhfyh">Iso's read of you</span> <!> <button class="link wind svelte-12qhfyh" type="button">[ wind back ]</button> <!>`,1),he=E(`<a class="svelte-12qhfyh"><span class="svelte-12qhfyh"> </span></a>`),ge=E(`<p class="stopped svelte-12qhfyh"> </p>`),_e=E(`<span role="status"> </span>`),ve=E(`<span class="grow svelte-12qhfyh"></span><span class="hint svelte-12qhfyh"> </span>`,1),ye=E(`<span class="hint svelte-12qhfyh"> </span> <button class="link svelte-12qhfyh" type="button">[ stop ]</button>`,1),be=E(`<span> </span>`),xe=E(`<span class="grow svelte-12qhfyh"></span> <!>`,1),Se=E(`<span class="grow svelte-12qhfyh"></span> <span class="hint svelte-12qhfyh">click a note to link it, again to take it away</span>`,1),Ce=E(`<span class="svelte-12qhfyh"> </span>`),we=E(`<!> <span class="grow svelte-12qhfyh"></span> <span class="hint svelte-12qhfyh">click a note it requires to step back to it, the note again to open it</span> <button class="link svelte-12qhfyh" type="button"> </button>`,1),Te=E(`<span class="svelte-12qhfyh"> </span> <!> <span class="grow svelte-12qhfyh"></span> <span class="hint svelte-12qhfyh">click a note to see what it rests on · hold on open ground to start a note for Iso, on a note to start from it</span>`,1),Ee=E(`<span class="grow svelte-12qhfyh"></span> <span class="svelte-12qhfyh"> </span>`,1),De=E(`<span class="svelte-12qhfyh"> </span> <!> <!> <!>`,1),Oe=E(`<div class="shell svelte-12qhfyh"><header class="bar svelte-12qhfyh"><button type="button" aria-label="isorite: settings" aria-haspopup="dialog"><!></button> <!> <span><!></span> <span class="grow svelte-12qhfyh"></span> <!> <!> <!> <!> <nav class="switch svelte-12qhfyh" aria-label="Views"></nav></header> <!> <main class="page svelte-12qhfyh"><!></main> <!> <footer class="status svelte-12qhfyh"><!></footer></div>`);function ke(c,d){T(d,!0);let h=v(R.signIn!==null),g=[[`atlas`,L(`/atlas`)],[`notes`,L(`/notes`)],[`study`,L(`/study`)]],b=e(()=>z.route.id===`/atlas`?`atlas`:z.route.id===`/study`||R.exercise||R.studying?`study`:z.route.id===`/parts`?``:`notes`),S=e(()=>z.route.id===`/n/[...id]`||z.route.id===`/draft/[id]`),C=e(()=>R.atlas&&!R.atlas.pick?R.iso:null),E=e(()=>i(C)?.state===`reading`||i(C)?.state===`writing`),D=e(()=>i(C)?R.listing.notes.find(e=>e.id===i(C).note)?.title??`your note`:``),k=()=>{i(C)&&R.api.stop(i(C).request)};var M=Oe();y(`12qhfyh`,e=>{I(()=>{m.title=i(S)&&R.here?`${R.here} · isorite`:`isorite`})});var B=a(M),H=a(B);let U;var W=a(H);V(W,{}),x(H);var G=o(H,2),K=e=>{var i=u(),a=s(i),o=e=>{var n=Q();t(e=>P(n,`href`,e),[()=>L(`/study`)]),r(e,n)},c=e=>{var n=$(),i=A(n);t(e=>{P(n,`href`,e),p(i,`‹ ${R.session.name??``}`)},[()=>L(`/notes`)]),r(e,n)};n(a,e=>{R.exercise||R.studying?e(o):e(c,-1)}),r(e,i)};n(G,e=>{i(S)&&R.session&&e(K)});var q=o(G,2);let J;var ne=a(q),re=e=>{var a=ce(),c=s(a),l=A(c,!0),u=o(c),d=e=>{var n=se(),i=o(s(n),1,!0);t(()=>p(i,R.here)),r(e,n)};n(u,e=>{i(S)&&R.here&&e(d)}),t(e=>{P(c,`href`,e),p(l,R.session.name)},[()=>L(`/notes`)]),r(e,a)};n(ne,e=>{R.session&&e(re)}),x(q);var Y=o(q,4),ie=e=>{var n=le(),i=s(n),a=A(i,!0),c=o(i);t(()=>p(a,R.atlas.here)),l(`click`,c,function(...e){R.atlas.out?.apply(this,e)}),r(e,n)};n(Y,e=>{R.atlas?.here&&e(ie)});var X=o(Y,2),ae=e=>{var t=ue();l(`click`,t,k),r(e,t)};n(X,e=>{i(E)&&e(ae)});var Z=o(X,2),ke=a=>{let c=e(()=>R.exercise);var u=me(),d=s(u),m=A(d,!0),h=o(d,4);f(h,()=>i(c).flash,e=>{var n=fe();let a;F(n,20,()=>[0,1,2,3,4,5],e=>e,(e,n)=>{var a=de();let o;t(()=>o=w(a,1,`pip svelte-12qhfyh`,null,o,{lv:n<i(c).squares})),r(e,a)}),x(n),t(()=>{a=w(n,1,`squares svelte-12qhfyh`,null,a,{flash:i(c).flash>0}),P(n,`aria-label`,`understanding ${i(c).squares??``} of 6${i(c).due?`, due`:``}: why`)}),l(`click`,n,function(...e){i(c).why?.apply(this,e)}),r(e,n)});var g=o(h,2),_=o(g,2),v=e=>{var n=pe();t(e=>P(n,`href`,e),[()=>L(`/n/[...id]`,{id:i(c).next})]),r(e,n)};n(_,e=>{i(c).next&&e(v)}),t(()=>p(m,i(c).kind)),l(`click`,g,function(...e){i(c).windBack?.apply(this,e)}),r(a,u)};n(Z,e=>{R.exercise&&e(ke)});var Ae=o(Z,2),je=e=>{te(e,{})};n(Ae,e=>{R.error||e(je)});var Me=o(Ae,2);F(Me,21,()=>g,([e,t])=>e,(n,o)=>{var s=e(()=>O(i(o),2));let c=()=>i(s)[0],l=()=>i(s)[1];var u=he(),d=a(u),f=A(d,!0);x(u),t(()=>{P(u,`href`,l()),P(u,`aria-current`,i(b)===c()?`page`:void 0),p(f,c())}),r(n,u)}),x(Me),x(B);var Ne=o(B,2),Pe=e=>{oe(e,{close:()=>_(h,!1)})};n(Ne,e=>{i(h)&&e(Pe)});var Fe=o(Ne,2),Ie=a(Fe),Le=e=>{var n=ge(),i=A(n);t(()=>p(i,`isorite could not open the base: ${R.error??``}`)),r(e,n)},Re=e=>{var t=u(),n=s(t);ee(n,()=>d.children),r(e,t)};n(Ie,e=>{R.error?e(Le):e(Re,-1)}),x(Fe);var ze=o(Fe,2);n(ze,e=>{});var Be=o(ze,2),Ve=a(Be),He=e=>{var a=De(),c=s(a),u=A(c,!0),d=o(c,2),f=e=>{var n=_e();let i;var a=A(n,!0);t(()=>{i=w(n,1,`svelte-12qhfyh`,null,i,{bad:R.saving.bad}),p(a,R.saving.text)}),r(e,n)};n(d,e=>{i(S)&&R.saving&&e(f)});var m=o(d,2),h=e=>{var n=ve(),i=o(s(n)),a=A(i,!0);t(()=>p(a,R.hint)),r(e,n)};n(m,e=>{i(S)&&R.hint&&!i(C)&&e(h)});var g=o(m,2),_=e=>{var a=xe(),c=o(s(a),2),u=e=>{var n=ye(),a=s(n),c=A(a,!0),u=o(a,2);t(e=>p(c,e),[()=>i(C).note.startsWith(`@draft/`)?`your note opens when Iso is done`:`Iso is answering in ${i(D)}`]),l(`click`,u,k),r(e,n)},d=e=>{var n=be();let a;var o=A(n);t(()=>{a=w(n,1,`hint svelte-12qhfyh`,null,a,{bad:i(C).state===`failed`}),p(o,`${i(C).state===`done`?`Iso is done in ${i(D)}`:i(C).state===`stopped`?`Iso was stopped`:`Iso could not answer: ${i(C).message}`} · click open ground to let its path go`)}),r(e,n)};n(c,e=>{i(E)?e(u):e(d,-1)}),r(e,a)},v=e=>{var t=Se();N(2),r(e,t)},y=e=>{var i=we(),a=s(i),c=e=>{var n=Ce(),i=A(n);t(()=>p(i,`${R.atlas.steps??``} ${R.atlas.steps===1?`step`:`steps`} back`)),r(e,n)};n(a,e=>{R.atlas.steps&&e(c)});var u=o(a,6),d=A(u,!0);t(()=>{P(u,`aria-pressed`,R.atlas.chain),p(d,R.atlas.chain?`[ one step ]`:`[ whole chain ]`)}),l(`click`,u,function(...e){R.atlas.whole?.apply(this,e)}),r(e,i)},b=e=>{var i=Te(),a=s(i),c=A(a),l=o(a,2),u=e=>{var n=Ce(),i=A(n);t(()=>p(i,`${R.atlas.items??``} study ${R.atlas.items===1?`item`:`items`}`)),r(e,n)};n(l,e=>{R.atlas.items&&e(u)}),N(4),t(()=>p(c,`${R.listing.notes.length??``} ${R.listing.notes.length===1?`note`:`notes`}`)),r(e,i)},x=e=>{var n=Ee(),i=o(s(n),2),a=A(i);t(()=>p(a,`${R.listing.notes.length??``} ${R.listing.notes.length===1?`note`:`notes`}`)),r(e,n)};n(g,e=>{i(C)&&(i(E)||!R.atlas?.chosen)?e(_):R.atlas?.pick?e(v,1):R.atlas?.chosen?e(y,2):R.atlas?e(b,3):e(x,-1)}),t(()=>p(u,R.session.study?`study`:`project: no journal is kept`)),r(e,a)};n(Ve,e=>{R.session&&e(He)}),x(Be),x(M),t(()=>{U=w(H,1,`home svelte-12qhfyh`,null,U,{"in-note":i(S)}),P(H,`aria-expanded`,i(h)),J=w(q,1,`path svelte-12qhfyh`,null,J,{"in-note":i(S)})}),l(`click`,H,()=>_(h,!i(h))),r(c,M),j()}c([`click`]);export{ke as component,U as universal};
@@ -1 +0,0 @@
1
- import{B as e,D as t,J as n,K as r,T as i,it as a,k as o,q as s,rt as c}from"../chunks/BD1Dpm2e.js";import"../chunks/xihTtKlq.js";import{t as l}from"../chunks/B-si2ell.js";var u=o(`<h1> </h1> <p> </p>`,1);function d(o,d){a(d,!0);var f=u(),p=r(f),m=s(p,!0),h=n(p,2),g=s(h,!0);e(()=>{i(m,l.status),i(g,l.error?.message)}),t(o,f),c()}export{d as component};
@@ -1 +0,0 @@
1
- import{it as e,n as t,o as n,rt as r}from"../chunks/BD1Dpm2e.js";import{o as i,t as a}from"../chunks/CWYACT2V.js";import"../chunks/xihTtKlq.js";import"../chunks/DtAOoM-T.js";import"../chunks/CdQZ-ArP.js";function o(o,s){e(s,!1),t(()=>{a(i(`/notes`),{replaceState:!0})}),n(),r()}export{o as component};
@@ -1,13 +0,0 @@
1
- import{$ as e,A as t,B as n,C as r,D as i,F as a,G as o,J as s,K as c,M as l,N as u,O as d,P as f,T as p,V as m,X as h,Y as g,Z as _,ct as v,g as y,h as b,i as x,it as S,j as C,k as w,m as T,q as E,rt as D,s as O,u as k,x as A}from"../chunks/BD1Dpm2e.js";import{o as j,t as M}from"../chunks/CWYACT2V.js";import"../chunks/xihTtKlq.js";import{n as N,t as P}from"../chunks/gRYnlonl.js";import{t as F}from"../chunks/B-si2ell.js";import"../chunks/CdQZ-ArP.js";import{a as I,g as L,i as ee,y as R}from"../chunks/DN3dk6rD.js";import{i as z,t as B}from"../chunks/C0fpmehI.js";var V=[0,1,1,1,0,-1,-1,-1],H=[-1,-1,0,1,1,1,0,-1];function te(e,t,{step:n=1,pad:r=.5}={}){let i=`X`,a=(Math.abs(Math.trunc(e))*7919+13)%2147483647,o=()=>(a=a*16807%2147483647,a/2147483647);for(let e=0;e<Math.max(0,Math.min(t,6));e++)i=i.replace(/[XF]/g,e=>e===`X`?`F[+X]F[-X]+X`:`FF`);i===`X`&&(i=`F`);let s=0,c=0,l=0,u=1,d=!1,f=0,p=0,m=0,h=0,g=[],_=[],v=[],y=n/2;for(let e of i)e===`F`?(d||=(_.push(`M${s} ${c}`),!0),s+=V[l]*n,c+=H[l]*n,_.push(`L${s} ${c}`),f=Math.min(f,s),p=Math.max(p,s),m=Math.min(m,c),h=Math.max(h,c)):e===`+`?l=(l+u+8)%8:e===`-`?l=(l-u+8)%8:e===`[`?(g.push([s,c,l,u]),o()<.5&&(u=-u)):e===`]`&&(v.push(`M${s-y/2} ${c-y/2}h${y}v${y}h${-y}z`),[s,c,l,u]=g.pop(),d=!1);let b=p-f+2*r,x=h-m+2*r;return{d:_.join(``),tips:v.join(``),viewBox:`${f-r} ${m-r} ${b} ${x}`,ratio:b/x}}var U=/\]\(\/([^)\s#]+)\.md(?:#[^)\s]*)?(?:\s+"[^"]*")?\)/g,W=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),G=e=>e.split(`/`).map(encodeURIComponent).join(`/`);function ne(e){let t=[];for(let n of e.matchAll(U)){let e=decodeURIComponent(n[1]);t.includes(e)||t.push(e)}return t}function K(e,t,n){let r=e.replace(/\s+$/,``),i=RegExp(`^\\[[^\\]\\n]*\\]\\(/[^)\\n]*\\.md\\)$`);return`${r}${!r||r.endsWith(`---`)?`
2
-
3
- `:i.test(r.split(`
4
- `).at(-1))?`
5
- `:`
6
-
7
- `}[${n.replace(/[[\]]/g,``)}](/${G(t)}.md)\n`}function re(e,t){let n=`\\[[^\\]\\n]*\\]\\(/${W(G(t))}\\.md\\)`,r=e.split(`
8
- `),i=r.filter(e=>!RegExp(`^${n}$`).test(e.trim()));return i.length===r.length||ne(i.join(`
9
- `)).includes(t)?null:i.join(`
10
- `).replace(/\n{3,}/g,`
11
-
12
- `).replace(/\s+$/,``)+`
13
- `}function ie(e){try{let[t]=R(e);return t?.type===`Exercise`?I(t):null}catch{return null}}function ae(e,t){let n=ie(e)??[];return L(e,{tests:n.includes(t)?n.filter(e=>e!==t):[...n,t]},null)}function oe(e){return(/^title:[ \t]*(.*)$/m.exec(e.split(/^---\s*$/m)[1]??``)?.[1]??``).trim().replace(/^(["'])(.*)\1$/,`$2`)}var se=e=>e<1e3?String(e):e<1e4?`${(e/1e3).toFixed(1)}k`:`${Math.round(e/1e3)}k`,ce=`isorite.atlas.drafts`,le=()=>{try{return JSON.parse(localStorage.getItem(ce)??`{}`)}catch{return{}}},ue=e=>le()[e]??null;function de(e,t){try{let n=le();t?n[e]=t:delete n[e],localStorage.setItem(ce,JSON.stringify(n))}catch{}}var fe=w(`<li class="svelte-1a0w8ls"><b class="num svelte-1a0w8ls"> </b><span class="t svelte-1a0w8ls"> </span><span class="faint"> </span></li>`),pe=w(`<span class="label over svelte-1a0w8ls"> </span>`),me=w(`<div class="dock svelte-1a0w8ls" role="region"><i class="dia open" aria-hidden="true"></i> <div class="what svelte-1a0w8ls"><span class="name svelte-1a0w8ls"> </span> <span class="label" role="status"> </span></div> <ol class="grow svelte-1a0w8ls"></ol> <!> <a class="btn primary tall svelte-1a0w8ls">back to it</a></div>`);function he(t,c){S(c,!0);let l=x(c,`notice`,3,``),u=x(c,`tests`,3,!1),d=e(()=>c.picked.reduce((e,t)=>e+t.tokens,0)),f=e(()=>!u()&&a(d)>c.budget),m=e(()=>[u()?`${c.picked.length} to test`:`${c.picked.length} linked`,c.picked.length?`${se(a(d))} tokens`:``,a(f)?`over ${se(c.budget)}`:``,l()].filter(Boolean).join(` · `));var h=me(),g=s(o(h),2),_=o(g),y=E(_,!0),b=s(_,2),C=E(b,!0);v(g);var w=s(g,2);A(w,23,()=>c.picked,e=>e.id,(e,t,r)=>{var c=fe(),l=o(c),u=E(l,!0),d=s(l),f=E(d,!0),m=s(d),h=E(m,!0);v(c),n(e=>{p(u,a(r)+1),p(f,a(t).title),p(h,e)},[()=>se(a(t).tokens)]),i(e,c)}),v(w);var T=s(w,2),O=e=>{var t=pe(),r=E(t);n(e=>p(r,`over ${e??``}: the last are cut short, or left for Iso to read itself`),[()=>se(c.budget)]),i(e,t)};r(T,e=>{a(f)&&e(O)});var j=s(T,2);v(h),n(()=>{k(h,`aria-label`,u()?`Notes the exercise tests`:`Notes linked to the note for Iso`),p(y,c.title||`a new note`),p(C,a(m)),k(j,`href`,c.href)}),i(t,h),D()}var ge=.55,_e=.04;function ve(e){let t=e.items.map(t=>{let n=[];for(let r=t.parent;r>=0;r=e.items[r].parent)n.push(r);return n}),n=e.items.map(()=>0);e.items.forEach((e,r)=>{if(e.kind===`note`)for(let e of t[r])n[e]++});let r=(t,n)=>{for(;e.items[t].parent!==n;)t=e.items[t].parent;return t},i=new Map(e.trunks.map((e,t)=>[`${e.a}|${e.b}`,t])),a=e.links.some(t=>t.s>=3&&!e.items[t.a].ref.startsWith(`@study`))?3:2,o=e.trunks.map(()=>!1);for(let t of e.links){let e=t.s>=a?i.get(`${r(t.a,t.level)}|${r(t.b,t.level)}`):void 0;e!==void 0&&(o[e]=!0)}return{up:t,noteCount:n,strong:o,at:new Map(e.items.flatMap((e,t)=>e.kind===`note`?[[e.ref,t]]:[])),trunkAt:i,feederAt:new Map(e.feeders.map((e,t)=>[`${e.trunk}|${e.folder}|${e.item}`,t])),ownPath:new Map(e.trunks.flatMap(e=>e.pts?[[`${e.a}|${e.b}`,e.pts]]:[]))}}var q=new WeakMap;function ye(e){let t=q.get(e);return t||q.set(e,t={...e,trunks:e.highways.trunks,feeders:e.highways.feeders}),t}function be(e,t){let n=[];return e.items.forEach((r,i)=>{let a=r.parent<0||n[r.parent]===`o`;n[i]=a?r.kind===`folder`&&e.cell*t>=1.2&&Math.max(r.w,r.h)*e.cell*t>=53?`o`:`s`:`-`}),n.join(``)}function xe(e,t,n){let r=e.up[n];for(let e=r.length-1;e>=0;e--)if(t[r[e]]!==`o`)return r[e];return n}function Se(e,t,n=[],r=!1){let i=e=>t[e]!==`-`,a=t=>e.items[t].ref.startsWith(`@study`),o=[];return e.trunks.forEach((t,r)=>{let s=e.items[t.a].kind===`folder`&&e.items[t.b].kind===`folder`;t.pts&&!t.implied&&i(t.a)&&i(t.b)&&o.push({key:`t`+r,pts:t.pts,lane:0,count:t.count,feed:!s,study:a(t.a)||a(t.b),strong:n[r]??!0})}),e.feeders.forEach((s,c)=>{let l=e.trunks[s.trunk];(r||!s.leaf)&&!l.implied&&t[s.folder]===`o`&&i(s.item)&&i(l.a)&&i(l.b)&&o.push({key:`f`+c,pts:s.pts,lane:s.lane,count:s.count,feed:!0,study:a(l.a)||a(l.b),strong:n[s.trunk]??!0})}),o}var J=(e,t)=>Math.abs(e[0]-t[0])<1e-6&&Math.abs(e[1]-t[1])<1e-6;function Ce(e,t,n,r){let i=new Set(t.up[r]),a=t.up[n].find(e=>i.has(e))??-1,o=e=>{let n=[e];for(let r of t.up[e]){if(r===a)break;n.push(r)}return n},s=o(n),c=o(r),l=t.trunkAt.get(`${s.at(-1)}|${c.at(-1)}`);if(l===void 0||!e.trunks[l].pts||s.length<2&&c.length<2)return null;let u=(t,n=0)=>{let r=e.feeders[t];if(r.via<0||n>40)return r.pts;let i=u(r.via,n+1),a=i.findIndex(e=>J(e,r.pts.at(-1)));return a<0?r.pts:[...r.pts,...i.slice(a+1)]},d=e=>{let n=[];for(let r=0;r+1<e.length;r++){let i=t.feederAt.get(`${l}|${e[r+1]}|${e[r]}`);if(i===void 0)return null;n=n.concat(u(i))}return n},f=d(c),p=d(s);if(!f||!p)return null;let m=[...f,...e.trunks[l].pts,...p.reverse()];return m.filter((e,t)=>!t||!J(e,m[t-1]))}var we=[`uses`,`builds`,`requires`,`iso`];function Te(e,t=!1){let n=e=>`${Math.round(e[0]*100)},${Math.round(e[1]*100)}`,r=new Map,i=new Map;for(let t of e){let e=we.indexOf(t.kind??`requires`),a=new Set;for(let o=1;o<t.pts.length;o++){let[s,c]=t.pts[o-1],[l,u]=t.pts[o],d=Math.max(1,Math.round(Math.max(Math.abs(l-s),Math.abs(u-c))*2));for(let o=0;o<d;o++){let f=[s+(l-s)*o/d,c+(u-c)*o/d],p=[s+(l-s)*(o+1)/d,c+(u-c)*(o+1)/d],m=n(f),h=n(p),g=m<h?m+`|`+h:h+`|`+m;if(m===h||a.has(g))continue;a.add(g);let _=r.get(g);if(!_){_=m<h?{a:m,b:h,A:f,B:p,count:0,strong:!1,study:!1,trunk:!1,kind:0,fwd:[0,0,0,0],back:[0,0,0,0]}:{a:h,b:m,A:p,B:f,count:0,strong:!1,study:!1,trunk:!1,kind:0,fwd:[0,0,0,0],back:[0,0,0,0]},r.set(g,_);for(let e of[_.a,_.b]){let t=i.get(e);t?t.push(g):i.set(e,[g])}}_.count+=t.count??1,_.strong||=t.strong??!0,_.study||=t.study??!1,_.trunk||=t.feed===!1,_.kind=Math.max(_.kind,e),(m===_.a?_.fwd:_.back)[e]+=1}}}let a=e=>t?`${e.kind}|${e.count}`:`${e.count}|${e.strong}|${e.study}|${e.trunk}`,o=(e,n)=>{let r=e.fwd[e.kind],i=e.back[e.kind];return!t||r&&i?0:(r?1:-1)*(n===e.a?1:-1)},s=(e,t)=>t===e.a?e.b:e.a,c=(e,t)=>t===e.a?e.A:e.B,l=(e,t,n)=>{let r=s(e,t);return a(e)===a(n)&&o(e,t)===o(n,r)},u=new Set,d=[],f=new Set,p=(e,t)=>{let p=e,m=t,h=r.get(m),g=[c(h,p)],_=o(h,p);for(;;){u.add(m);let e=s(h,p);g.push(c(h,e));let t=i.get(e).filter(e=>e!==m);if(t.length!==1||u.has(t[0])||!l(h,p,r.get(t[0])))break;p=e,m=t[0],h=r.get(m)}_<0&&g.reverse();let v=`${n(g[0])}>${n(g.at(-1))}:${a(h)}`;for(let e=2;f.has(v);e++)v=`${v.split(`#`)[0]}#${e}`;f.add(v),d.push({key:v,pts:g,count:h.count,strong:h.strong,study:h.study,trunk:h.trunk,kind:we[h.kind],flow:+!!_})};for(let[e,t]of i)if(t.length!==2||!l(r.get(t[0]),s(r.get(t[0]),e),r.get(t[1])))for(let n of t)u.has(n)||p(e,n);for(let[e,t]of r)u.has(e)||p(t.a,e);return d}function Ee(e,t,n,r){let i=[],a=[],o=new Set;for(let{a:s,b:c,kind:l}of r){let r=xe(t,n,s),u=xe(t,n,c),d=`${l}:${r}|${u}`;if(r===u||o.has(d))continue;o.add(d);let f=r===s&&u===c?t.ownPath.get(`${s}|${c}`)??Ce(e,t,s,c):t.ownPath.get(`${r}|${u}`)??null;f?i.push({key:d,kind:l,pts:f}):a.push({key:d,kind:l,a:r,b:u})}return{fixed:i,asks:a}}function De(e,t){if(!t)return e;let n=(e,t)=>{let n=t[0]-e[0],r=t[1]-e[1],i=Math.hypot(n,r)||1;return n/=i,r/=i,(n<-1e-6||Math.abs(n)<1e-6&&r<0)&&(n=-n,r=-r),[-r,n]};return e.map((r,i)=>{let a=i>0?n(e[i-1],r):n(r,e[i+1]),o=i<e.length-1?n(r,e[i+1]):a,s=1+a[0]*o[0]+a[1]*o[1];return s<.2?[r[0]+a[0]*t,r[1]+a[1]*t]:[r[0]+(a[0]+o[0])/s*t,r[1]+(a[1]+o[1])/s*t]})}function Oe(e,t=0,n=7){let r=De(e.map(([e,t])=>[e*n,t*n]),t*2.2),i=Math.min(n,10.5)*.9,a=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]))>.001),o=e=>String(Math.round(e*10)/10),s=`M${o(a[0][0])} ${o(a[0][1])}`;for(let e=1;e<a.length-1;e++){let t=a[e-1],n=a[e],r=a[e+1],c=Math.hypot(n[0]-t[0],n[1]-t[1])||1,l=Math.hypot(r[0]-n[0],r[1]-n[1])||1;if(!(Math.abs((n[0]-t[0])*(r[0]-n[0])+(n[1]-t[1])*(r[1]-n[1]))<.001*c*l)){s+=`L${o(n[0])} ${o(n[1])}`;continue}let u=Math.min(i,c/2,l/2);s+=`L${o(n[0]-(n[0]-t[0])/c*u)} ${o(n[1]-(n[1]-t[1])/c*u)}L${o(n[0]+(r[0]-n[0])/l*u)} ${o(n[1]+(r[1]-n[1])/l*u)}`}let c=a.at(-1);return s+`L${o(c[0])} ${o(c[1])}`}function ke(e,t,n){let r=n?t[0]-e[0]:t[1]-e[1],i=n?t[1]-e[1]:t[0]-e[0],a=Math.abs(r),o=Math.abs(i),s=Math.sign(r),c=Math.sign(i),l=(t,r)=>n?[e[0]+t,e[1]+r]:[e[0]+r,e[1]+t];if(a>=o){let e=(a-o)/2;return[l(0,0),l(s*e,0),l(s*(e+o),c*o),l(r,i)]}let u=a/2;return[l(0,0),l(s*u,c*u),l(s*u,c*(o-u)),l(r,i)]}function Ae(e,t,n,r=3,i=7){let a=Math.max(_e,Math.min(r,.96*Math.min(t/((e.w+4)*i),n/((e.h+4)*i))));return{k:a,x:t/2-a*(e.gx+e.w/2)*i,y:n/2-a*(e.gy+e.h/2)*i}}function je(e,t,n,r){let i=Math.max(_e,Math.min(3,e.k*t)),a=i/e.k;return{k:i,x:n-(n-e.x)*a,y:r-(r-e.y)*a}}var Me=2;function Ne(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??Me,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 Pe(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}var Fe={bend:4,flow:1,area:.01,aspect:1,shape:1.4,effort:1e3,seed:0,cross:20};function Y(e,t,n,r,i={}){let{bend:a,flow:o,area:s,aspect:c,shape:l,effort:u,seed:d,cross:f}={...Fe,...i},p=e.length,m=e.map(e=>e[0]),h=e.map(e=>e[1]);if(!p)return{x:[],y:[],w:0,h:0};let g=Array.from({length:p},(e,t)=>Array.from({length:p},(e,r)=>n(t,r))),_=new Float64Array(p),v=new Float64Array(p),y=[...Array(p).keys()],b=[...y],x=new Int32Array(p),S=new Int32Array(p),C=0,w=0,T=()=>{y.forEach((e,t)=>{x[e]=t}),b.forEach((e,t)=>{S[e]=t}),C=0,w=0;for(let e=0;e<p;e++){let t=y[e],n=0,r=0;for(let i=0;i<e;i++){let e=y[i];S[e]<S[t]?n=Math.max(n,_[e]+m[e]+g[e][t]):r=Math.max(r,v[e]+h[e]+g[e][t])}_[t]=n,v[t]=r,C=Math.max(C,n+m[t]),w=Math.max(w,r+h[t])}},E=e=>[_[e]+m[e]/2,v[e]+h[e]/2],D=()=>{T();let e=0;for(let[n,i,s]of t){let t=Math.max(0,_[i]-_[n]-m[n],_[n]-_[i]-m[i]),c=Math.max(0,v[i]-v[n]-h[n],v[n]-v[i]-h[i]);e+=s*(Math.max(t,c)+.414*Math.min(t,c)+(t>0&&c>0?a:0));let l=r===`right`?_[n]+m[n]/2-(_[i]+m[i]/2):v[i]+h[i]/2-(v[n]+h[n]/2);l>0&&(e+=o*s*l)}if(f)for(let n=0;n<t.length;n++)for(let r=n+1;r<t.length;r++){let[i,a,o]=t[n],[s,c,l]=t[r];i!==s&&i!==c&&a!==s&&a!==c&&Le(E(i),E(a),E(s),E(c))&&(e+=f*Math.min(o,l))}let n=Math.log(C/w/l);return e+s*C*w*(1+c*n*n)},O=Ie(p,t);if(y.sort((e,t)=>O[e]-O[t]),b.splice(0,p,...y),r===`up`&&y.reverse(),i.pair)return y.splice(0,p,...i.pair[0]),b.splice(0,p,...i.pair[1]),T(),{x:[..._],y:[...v],w:C,h:w,pair:i.pair};let k=D(),A=k,j=[...y],M=[...b];if(p<2)return T(),{x:[..._],y:[...v],w:C,h:w,pair:[[...y],[...b]]};let N=ze(Re(e,t)^d),P=u*p,F=Math.max(1,k*.05),I=.001**(1/P);for(let e=0;e<P;e++,F*=I){let e=Math.floor(N()*p),t=(e+1+Math.floor(N()*(p-1)))%p,n=N(),r=n=>{let r=n[e];n[e]=n[t],n[t]=r};if(n<.4)r(y);else if(n<.8)r(b);else{let n=y.indexOf(b[e]),i=y.indexOf(b[t]);r(b);let a=y[n];y[n]=y[i],y[i]=a}let i=D();if(i<=k||N()<Math.exp((k-i)/F))k=i,k<A&&(A=k,j=[...y],M=[...b]);else if(n<.4)r(y);else if(n<.8)r(b);else{let n=y.indexOf(b[e]),i=y.indexOf(b[t]);r(b);let a=y[n];y[n]=y[i],y[i]=a}}return y.splice(0,p,...j),b.splice(0,p,...M),T(),{x:[..._],y:[...v],w:C,h:w,cost:A,pair:[j,M]}}function Ie(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 Le(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 Re(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 ze(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}}var Be={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},Ve={fine:Be,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}};Be.pad;var He=1.4,X=8,Ue=12,We=Be.note,Ge=0,Ke=0,qe=0,Je=0,Z=0,Ye=0,Xe=0,Ze=0,Qe=0,Q=2,$e=0,et=0;function tt(e){({note:We,gap:Ge,gapFolders:Ke,channel:qe,channelFolders:Je,head:Z,margin:Ye,minFolder:Xe,slant:Ze,pad:Qe,keep:Q}=e),$e=We[0]+Ge,et=3*$e}function nt(e,{flow:t=`up`,grain:n=`fine`,plan:r=!1,planCosts:i={},planned:a=null}={}){let o=Ve[n]??Be;tt(o);let s=e=>e.kind===`dir`,c=new Map,l=new Map,u=[e.root];for(let e=0;e<u.length;e++)for(let t of u[e].children||[])c.set(t,u[e]),s(t)?u.push(t):l.set(t.ref,t);let d=e=>{let t=[];for(let n=e;n;n=c.get(n))t.push(n);return t.reverse()},f=new Map(u.map(e=>[e,new Map])),p=new Map;for(let e of u){p.set(e,p.size);for(let t of e.children||[])s(t)||p.set(t,p.size)}let m=new Map(l);if(e.code)for(let t of u)t!==e.root&&!m.has(t.ref)&&m.set(t.ref,t);for(let[t,n,r]of e.edges){if(r<2)continue;let e=m.get(t),i=m.get(n);if(!e||!i||e===i)continue;let a=d(e),o=d(i),s=0;for(;a[s+1]&&a[s+1]===o[s+1];)s++;if(!a[s+1]||!o[s+1])continue;let c=f.get(a[s]),l=o[s+1],u=a[s+1],h=p.get(l)+`|`+p.get(u),g=c.get(h)||{p:l,q:u,weight:0,count:0};g.weight+=r,g.count++,c.set(h,g)}let h=new Map,g=new Map,_=new Map,v=e=>e===`up`?`right`:`up`,y=(t,n)=>{let r=t.children||[];for(let e of r)s(e)?y(e,v(n)):h.set(e,{w:We[0],h:We[1]});let i=r.length?b(t,r,n):{w:0,h:0};h.set(t,t===e.root?i:r.length?{w:Math.max(Xe,i.w+2*Qe),h:i.h+Qe+Z+Qe}:{w:Xe,h:Z+2*Qe})};function b(e,t,n){if(r&&t.some(s))return x(e,t,n);let i=new Map(t.map(e=>[e,e])),a=e=>{for(;i.get(e)!==e;)e=i.get(e);return e};for(let t of f.get(e).values()){let e=a(t.p),n=a(t.q);e!==n&&i.set(n,e)}let o=new Map,c=new Set([...f.get(e).values()].flatMap(e=>[e.p,e.q]));for(let e of t){let t=c.has(e)?a(e):null;o.set(t,[...o.get(t)||[],e])}if(o.size<2){let r=S(e,t,n);return _.set(e,r.out),{w:r.w,h:r.h}}let l=[...o].map(([t,r],i)=>({list:r,loose:t===null,k:i,...S(e,r,n)}));l.sort((e,t)=>e.loose-t.loose||t.w*t.h-e.w*e.h||e.k-t.k);let u=t.some(s)?Ke:Ge,d=l.reduce((e,t)=>e+(t.w+u)*(t.h+u),0),p=Math.max(Math.ceil(Math.sqrt(d*He)),...l.map(e=>e.w)),m=0,g=0,v=0,y=0,b=[];for(let e of l){m&&m+e.w>p&&(m=0,g+=v+u,v=0);for(let t of e.list){let e=h.get(t);e.x+=m,e.y+=g}for(let t of e.out)b.push({...t,pts:t.pts&&t.pts.map(([e,t])=>[e+m,t+g])});y=Math.max(y,m+e.w),v=Math.max(v,e.h),m+=e.w+u}return _.set(e,b),{w:y,h:g+v}}function x(t,n,r){let o=new Map(n.map((e,t)=>[e,t])),c=[...f.get(t).values()].filter(e=>o.has(e.p)&&o.has(e.q)),l=t===e.root?``:t.ref,u=a?.get(l),d=(e,t)=>u?.wider.get([n[e].ref,n[t].ref].sort().join(`|`))??0,p=(e,t)=>(s(n[e])||s(n[t])?Ke:Ge)+d(e,t),m=n.map(e=>[h.get(e).w,h.get(e).h]),v=t===e.root&&r===`up`?1/Fe.shape:Fe.shape,y=Y(m,c.map(e=>[o.get(e.p),o.get(e.q),e.count]),p,r,{shape:v,...i,pair:u?.pair});g.set(l,y.pair),n.forEach((e,t)=>Object.assign(h.get(e),{x:y.x[t],y:y.y[t]}));let b=e=>r===`right`?y.x[e]+m[e][0]/2:-(y.y[e]+m[e][1]/2),x=new Map;for(let e of c)x.set(e.p,[...x.get(e.p)||[],e.q]);let S=(e,t)=>{let n=new Set,r=(x.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(...x.get(e)||[]))}return!1};return _.set(t,c.map(e=>({p:e.p,q:e.q,count:e.count,back:b(o.get(e.p))>b(o.get(e.q)),implied:!s(e.p)&&!s(e.q)&&S(e.p,e.q),pts:null}))),{w:y.w,h:y.h}}function S(e,t,n){let r=t.length,i=new Map(t.map((e,t)=>[e,t])),a=n===`up`,o=t.some(s)?Ke:Ge,c=t.map(e=>a?h.get(e).h:h.get(e).w),l=t.map(e=>a?h.get(e).w:h.get(e).h),u=[...f.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=it(r,u.map(e=>[e.p,e.q,e.weight]));for(let e of u)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 p=u.filter(e=>!e.back),m=Array(r).fill(0),g=t.map(()=>[]),_=t.map(()=>[]);for(let e of u)g[e.v].push(e.u),_[e.u].push(e.v);let v=t.map(()=>[]);for(let e of p)v[e.p].push(e.q);for(let e of[...Array(r).keys()].sort((e,t)=>d[e]-d[t]))for(let t of g[e])m[e]=Math.max(m[e],m[t]+1);for(let e=0;e<r;e++)!g[e].length&&_[e].length&&(m[e]=Math.min(..._[e].map(e=>m[e]))-1);let y=(e,t,n)=>{let r=new Set,i=v[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(...v[e]))}return!1};for(let e of p)e.implied=!s(t[e.p])&&!s(t[e.q])&&y(e.p,e.q,e.q);let b=u.filter(e=>!e.implied).sort((e,t)=>t.weight-e.weight||e.p-t.p||e.q-t.q),x=t.reduce((e,t,n)=>e+(l[n]+o)*(c[n]+qe),0),S=Math.max(Math.ceil(Math.sqrt(a?x*He:x/He)),...l),C=[],w=Array(r),T=Array(r).fill(!1);for(let e of u)T[e.p]=!0,T[e.q]=!0;let E=T.some(Boolean)&&T.some(e=>!e),D=e=>{let t=e.reduce((e,t)=>e+l[t]+o,0),n=Math.max(1,Math.ceil((t-o)/S)),r=t/n,i=null,a=0;for(let t of e)(!i||a+l[t]>S||C.length-O<n&&a>=r)&&(i=[],C.push(i),a=0),w[t]=C.length-1,i.push(t),a+=l[t]+o},O=0,k=e=>g[e].length?+!!_[e].length:2,A=e=>e.length?e.reduce((e,t)=>e+d[t],0)/e.length:0;for(let e=0;e<=Math.max(...m);e++){let t=[...Array(r).keys()].filter(t=>m[t]===e&&(T[t]||!E));t.reduce((e,t)=>e+l[t]+o,0)-o>S&&t.sort((e,t)=>k(e)-k(t)||A(g[e])-A(g[t])||e-t),O=C.length,D(t)}E&&(O=C.length,D([...Array(r).keys()].filter(e=>!T[e])));let j=[...l],M=t.map(()=>[]),N=t.map(()=>[]),P=new Map,F=new Map,I=[],L=new Set,ee=new Map;for(let e of b){let t=[e.u];for(let n=w[e.u]+1;n<w[e.v];n++){let r=e.u+`|`+n;P.has(r)||(P.set(r,j.length),F.set(j.length,e.u),j.push(1),M.push([]),N.push([]),w.push(n),C[n].push(j.length-1)),t.push(P.get(r))}t.push(e.v);for(let e=1;e<t.length;e++){let n=t[e-1],r=t[e];L.has(n+`|`+r)||(L.add(n+`|`+r),I.push([n,r]),N[n].push(r),M[r].push(n))}ee.set(e,t)}let R=e=>e>=r,z=Array(j.length);C.forEach(e=>e.forEach((e,t)=>{z[e]=t}));let B=(e,t)=>{let n=new Map(C[e].map(e=>[e,t[e].length?t[e].reduce((e,t)=>e+z[t],0)/t[e].length:z[e]]));C[e].sort((e,t)=>n.get(e)-n.get(t)||z[e]-z[t]),C[e].forEach((e,t)=>{z[e]=t})},V=()=>{let e=0;for(let t=0;t<C.length-1;t++){let n=[];for(let e of C[t])for(let t of N[e])n.push([z[e],z[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},H=()=>{let e=(e,t,n)=>{let r=0;for(let i of n[e])for(let e of n[t])r+=z[i]>z[e]?1:z[i]<z[e]?-1:0;return r};for(let t=!0,n=0;t&&n<X;n++){t=!1;for(let n of C)for(let r=0;r+1<n.length;r++){let i=n[r],a=n[r+1];e(i,a,M)+e(i,a,N)>0&&(n[r]=a,n[r+1]=i,z[i]=r+1,z[a]=r,t=!0)}}},te=C.map(e=>[...e]),U=(e,t)=>(R(e)?d[F.get(e)]:d[e])-(R(t)?d[F.get(t)]:d[t])||e-t,W=null,G=1/0;for(let e of[e=>e,e=>[...e].sort(U),e=>[...e].reverse()]){C.forEach((t,n)=>{t.splice(0,t.length,...e(te[n])),t.forEach((e,t)=>{z[e]=t})});let t=1/0,n=0;for(let e=0;e<24&&n<4&&G>0;e++,n++){if(e%2==0)for(let e=1;e<C.length;e++)B(e,M);else for(let e=C.length-2;e>=0;e--)B(e,N);H();let r=V();r<t&&(t=r,n=0),r<G&&(G=r,W=C.map(e=>[...e]))}}W&&C.forEach((e,t)=>{e.splice(0,e.length,...W[t]),e.forEach((e,t)=>{z[e]=t})});let ne=(e,t)=>R(e)&&R(t)?1:R(e)||R(t)?Q:o,K=Array(j.length).fill(0);for(let e of C){let t=0;e.forEach((n,r)=>{r&&(t+=ne(e[r-1],n)),K[n]=t,t+=j[n]})}let re=e=>e.length?K[e[e.length-1]]+j[e[e.length-1]]:0,ie=Math.max(...C.map(re));for(let e of C){let t=(ie-re(e))/2;for(let n of e)K[n]+=t}let ae=e=>K[e]+j[e]/2;for(let e=0;e<Ue;e++)for(let t of e%2?[...C].reverse():C){if(!t.length)continue;let e=t.map(e=>{let t=[...M[e],...N[e]];return(t.length?t.reduce((e,t)=>e+ae(t),0)/t.length:ae(e))-j[e]/2}),n=[],r=[];t.forEach((r,i)=>{n[i]=i?Math.max(e[i],n[i-1]+j[t[i-1]]+ne(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]-j[t[n]]-ne(t[n],t[n+1])):e[n];t.forEach((e,t)=>{K[e]=(n[t]+r[t])/2})}let oe=e=>Math.floor((j[e]-1)/2),se=Array(j.length).fill(-1),ce=Array(j.length).fill(-1);for(let e of[!0,!1])for(let t=1;t<C.length;t++){let n=C[t].filter(e=>se[e]>=0).map(e=>[z[se[e]],z[e]]);for(let r of C[t]){if(se[r]>=0||!M[r].length)continue;let t=[...M[r]].sort((e,t)=>z[e]-z[t]),i=(t.length-1)/2,a=t.map((e,t)=>[e,Math.abs(t-i)]).filter(([t])=>ce[t]<0&&(!e||R(t)&&R(r))&&Math.abs(K[t]+oe(t)-K[r]-oe(r))<=(e?et:$e)).sort((e,t)=>e[1]-t[1]||z[e[0]]-z[t[0]]);for(let[e]of a)if(!n.some(([t,n])=>t<z[e]!=n<z[r])){se[r]=e,ce[e]=r,n.push([z[e],z[r]]);break}}}let le=Array(j.length).fill(-1),ue=0;for(let e=0;e<j.length;e++)if(se[e]<0){for(let t=e;t>=0;t=ce[t])le[t]=ue;ue++}let de=Array.from({length:ue},()=>[]);le.forEach((e,t)=>de[e].push(t));let fe=(e,t)=>j[e]-oe(e)+ne(e,t)+oe(t),pe=Array(j.length).fill(-1),me=Array(j.length).fill(-1);for(let e of C)e.forEach((t,n)=>{n&&(pe[t]=e[n-1],me[e[n-1]]=t)});let he=Array(ue).fill(0),ge=!1;for(let e=0;e<=ue&&!ge;e++){ge=!0;for(let e of C)for(let t=1;t<e.length;t++){let n=he[le[e[t-1]]]+fe(e[t-1],e[t]);he[le[e[t]]]<n&&(he[le[e[t]]]=n,ge=!1)}}if(ge){let e=de.map(e=>Math.round(e.reduce((e,t)=>e+K[t]+oe(t),0)/e.length)),t=Math.min(...e.map((e,t)=>e-he[t])),n=[...Array(ue).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 de[a])pe[e]>=0&&(n=Math.max(n,he[le[pe[e]]]+fe(pe[e],e))),me[e]>=0&&(r=Math.min(r,he[le[me[e]]]-fe(e,me[e])));let o=Math.max(n,Math.min(r,e[a]-t));o!==he[a]&&(he[a]=o,i=!0)}if(!i)break}for(let e=0;e<j.length;e++)K[e]=he[le[e]]-oe(e)}else for(let e of C)e.forEach((t,n)=>{K[t]=n?Math.max(Math.round(K[t]),K[e[n-1]]+j[e[n-1]]+ne(e[n-1],t)):Math.round(K[t])});let _e=Math.min(...K);for(let e=0;e<K.length;e++)K[e]-=_e;let ve=Math.max(...K.map((e,t)=>e+j[t])),q=e=>K[e]+Math.floor((j[e]-1)/2)+.5,ye=new Map;for(let e=0;e<j.length;e++){let t=[...M[e]].sort((e,t)=>q(e)-q(t)),n=K[e]+.5,r=K[e]+j[e]-.5;if(t.length>j[e]){t.forEach((r,i)=>ye.set(r+`|`+e,n+Math.min(j[e]-1,Math.floor(i*j[e]/t.length))));continue}let i=t.map(e=>Math.max(n,Math.min(r,q(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)=>ye.set(t+`|`+e,i[n]))}let be=(e,t)=>{let n=ye.get(e+`|`+t);return n>=K[e]+.5&&n<=K[e]+j[e]-.5},xe=Array(j.length);for(let e=0;e<j.length;e++){let t=N[e].filter(t=>!be(e,t)).map(t=>ye.get(e+`|`+t)).sort((e,t)=>e-t);xe[e]=t.length?Math.max(K[e]+.5,Math.min(K[e]+j[e]-.5,t[t.length-1>>1])):q(e)}let Se=(e,t)=>be(e,t)?ye.get(e+`|`+t):xe[e],J=(e,t)=>{let n=Se(e,t),r=ye.get(e+`|`+t);return[Math.min(n,r),Math.max(n,r)]},Ce=new Set,we=C.map(()=>0);for(let[e,t]of I){if(be(e,t))continue;let[n,r]=J(e,t),i=ye.get(e+`|`+t)>xe[e];r-n>Ze||I.every(([a,o])=>{if(w[a]!==w[e]||a===e&&o===t)return!0;let[s,c]=J(a,o);return a===e?i?c<=n:s>=r:c<n-1||s>r+1})&&(Ce.add(e+`|`+t),we[w[e]]=Math.max(we[w[e]],r-n))}let Te=new Map;for(let[e,t]of I){if(be(e,t)||Ce.has(e+`|`+t))continue;let n=ye.get(e+`|`+t),r=Te.get(e)||{u:e,lo:xe[e],hi:xe[e],track:0};r.lo=Math.min(r.lo,n),r.hi=Math.max(r.hi,n),Te.set(e,r)}let Ee=C.map(()=>0);C.forEach((e,t)=>{let n=[...Te.values()].filter(e=>w[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=>N[e.u].filter(t=>!be(e.u,t)&&!Ce.has(e.u+`|`+t)).map(t=>ye.get(e.u+`|`+t))),i=(e,t)=>!(n[e].hi<n[t].lo-1||n[t].hi<n[e].lo-1),a=(e,t)=>+(xe[n[t].u]>n[e].lo&&xe[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=it(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);Ee[t]=Math.max(0,...n.map(e=>e.track+1))});let De=C.map(e=>Math.max(0,...e.filter(e=>!R(e)).map(e=>c[e]))),Oe=[],ke=[],Ae=[],je=0;C.forEach((e,n)=>{Oe[n]=je,je+=De[n];let r=Math.max(t.some(s)?Je:qe,Ee[n]+2*Q,we[n]+2);ke[n]=je+Math.max(Q,Math.floor((r-Ee[n])/2));let i=je;Ae[n]=e=>i+Math.floor((r-e)/2),n<C.length-1&&(je+=r)});let Me=je,Ne=e=>Oe[w[e]]+Math.floor((De[w[e]]-c[e])/2),Pe=(e,t)=>a?[t,Me-e]:[e,t];t.forEach((e,t)=>Object.assign(h.get(e),a?{x:K[t],y:Me-Ne(t)-c[t]}:{x:Ne(t),y:K[t]}));let Fe=[];for(let e of u){let n=ee.get(e),r=null;if(n){r=[Pe(Ne(e.u)+c[e.u],Se(e.u,n[1]))];for(let e=1;e<n.length;e++){let t=n[e-1],i=n[e],a=ye.get(t+`|`+i);if(Ce.has(t+`|`+i)){let e=Math.abs(a-xe[t]),n=Ae[w[t]](e);r.push(Pe(n,xe[t]),Pe(n+e,a));continue}let o=ke[w[t]]+(Te.get(t)?.track||0)+.5;r.push(Pe(o,Se(t,i)),Pe(o,a))}r.push(Pe(Ne(e.v),ye.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()}Fe.push({p:t[e.p],q:t[e.q],count:e.count,back:e.back,implied:!!e.implied,pts:r})}return a?{w:ve,h:Me,out:Fe}:{w:Me,h:ve,out:Fe}}y(e.root,t);let C=[],w=new Map,T=new Map([[e.root,[Ye,Ye]]]);for(let t of u){let[n,r]=T.get(t),i=t===e.root?-1:w.get(t),a=d(t).length;for(let e of t.children||[]){let t=h.get(e);w.set(e,C.length),C.push({id:e.id,ref:e.ref,kind:s(e)?`folder`:`note`,parent:i,depth:a,gx:n+t.x,gy:r+t.y,w:t.w,h:t.h}),s(e)&&T.set(e,[n+t.x+Qe,r+t.y+Z+Qe])}}let E=[],D=new Set;for(let e of u){let[t,n]=T.get(e);for(let r of _.get(e)||[]){let e=w.get(r.q),i=w.get(r.p);r.back&&D.add(e+`|`+i),E.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 O=rt(C,e.edges,new Map([...l].map(([e,t])=>[e,w.get(t)]))),k=(e,t)=>{for(;C[e].parent!==t;)e=C[e].parent;return e};for(let e of O)e.placed=e.s>=2&&!D.has(k(e.a,e.level)+`|`+k(e.b,e.level));let A=h.get(e.root);return{W:A.w+2*Ye,H:A.h+2*Ye,flow:t,cell:o.cell,keep:o.keep,margin:Ye,items:C,links:O,trunks:E,pairs:g}}function rt(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 it(e,t){let n=Array.from({length:e},()=>new Map),r=Array.from({length:e},()=>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=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}var at={climb:5,turn45:1.5,turn90:3,foreign:2.5,crowd:.2,near:0,hug:2.5,haste:3.2},ot=[1,1,0,-1,-1,-1,0,1],st=[0,1,1,1,0,-1,-1,-1],ct=3,lt=8;function ut(e,t,n={}){let{climb:r,turn45:i,turn90:a,foreign:o,crowd:s,near:c,hug:l,haste:u}={...at,...n},{W:d,H:f,elev:p,blocked:m,owner:h}=t,g=t.close||new Uint8Array(d*f),_=d*f,v=e.items,y=new Uint16Array(_),b=new Uint16Array(_),x=new Float32Array(_*9),S=new Int32Array(_*9),C=new Uint32Array(_*9),w=new Uint32Array(v.length),T=_*9,E=0,D=new Float32Array(4096),O=new Float32Array(4096),k=new Int32Array(4096),A=0,j=(e,t,n)=>{if(A===D.length){let e=(e,t)=>{let n=new t(e.length*2);return n.set(e),n};D=e(D,Float32Array),O=e(O,Float32Array),k=e(k,Int32Array)}let r=A++;for(;r>0;){let t=r-1>>1;if(D[t]<=e)break;D[r]=D[t],O[r]=O[t],k[r]=k[t],r=t}D[r]=e,O[r]=t,k[r]=n},M=()=>{N=O[0],P=k[0];let e=D[--A],t=O[A],n=k[A],r=0;for(;;){let t=2*r+1;if(t>=A||(t+1<A&&D[t+1]<D[t]&&t++,D[t]>=e))break;D[r]=D[t],O[r]=O[t],k[r]=k[t],r=t}D[r]=e,O[r]=t,k[r]=n},N=0,P=0,F=(e,t)=>{y[e]+=t;let n=e%d,r=e/d|0;for(let e=Math.max(0,r-1);e<=Math.min(f-1,r+1);e++)for(let i=Math.max(0,n-1);i<=Math.min(d-1,n+1);i++)(i!==n||e!==r)&&(b[e*d+i]+=t)},I=e=>{let t=[],n=(e,n,r,i)=>{e>=0&&n>=0&&e<d&&n<f&&!m[n*d+e]&&t.push([n*d+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 L(e,t,n,f,_,D,O=null){E++,A=0;for(let t of Pe(v,e))w[t]=E;if(O){w[O.folder]=E;for(let e of Pe(v,O.folder))w[e]=E}else for(let e of Pe(v,t))w[e]=E;let k=v[e],L=O?null:v[t],ee=O?O.ends:new Map(I(L).map(e=>[e[0],e])),R,z,B,V;if(O?.toward!==void 0)R=z=O.toward%d,B=V=O.toward/d|0;else if(O){R=B=1/0,z=V=-1/0;for(let e of ee.keys()){let t=e%d,n=e/d|0;R=Math.min(R,t),z=Math.max(z,t),B=Math.min(B,n),V=Math.max(V,n)}}else R=L.gx-1,z=L.gx+L.w,B=L.gy-1,V=L.gy+L.h;let H=(e,t)=>{let n=Math.max(R-e,e-z,0),r=Math.max(B-t,t-V,0);return u*(Math.max(n,r)+.414*Math.min(n,r))},te=new Map;for(let e of I(k)){let t=e[0],n=t*9+lt,r=Math.fround(1+s*Math.min(y[t],ct));C[n]===E&&x[n]<=r||(C[n]=E,x[n]=r,S[n]=-1,j(r+H(t%d,t/d|0),r,n),te.set(t,e))}let U=!!O?.strict,W=-1;for(;A;){M();let e=P,t=N;if(e>=T){W=e-T;break}if(t!==x[e])continue;let u=e/9|0,v=e%9,k=ee.get(u);if(k){if(!k[3]){W=e;break}j(Math.fround(t+k[3]),Math.fround(t+k[3]),T+e)}let A=u%d,F=u/d|0;for(let T=0;T<8;T++){let k=A+ot[T],M=F+st[T];if(k<n||M<f||k>_||M>D)continue;let N=M*d+k;if(m[N]||U&&h[N]!==O.folder)continue;if(ot[T]&&st[T]){let e=F*d+k,t=M*d+A;if(m[e]||m[t]||p[e]!==p[u]||p[t]!==p[u]||p[N]!==p[u])continue}let P=(ot[T]&&st[T]?1.414:1)*(1+s*Math.min(y[N],ct)+c*Math.min(b[N],ct))+r*Math.abs(p[N]-p[u]);if(v!==lt&&v!==T){let e=Math.min((T-v+8)%8,(v-T+8)%8);P+=e===1?i:a*(e>=3?2:1)}h[N]>=0&&w[h[N]]!==E&&(P+=o),g[N]&&(P+=l);let I=N*9+T,L=Math.fround(t+P);C[I]===E&&x[I]<=L||(C[I]=E,x[I]=L,S[I]=e,j(L+H(k,M),L,I))}}if(W<0)return null;let G=[];for(let e=W;e!==-1;e=S[e])G.push(e/9|0);G.reverse();for(let e of G)F(e,1);let ne=te.get(G[0]),K=ee.get(G[G.length-1]),re=[[ne[1],ne[2]]];for(let e of G)re.push([e%d+.5,(e/d|0)+.5]);return re.push([K[1],K[2]]),{cells:Int32Array.from(G),pts:re}}function ee(e,t){let n=v[e],r=v[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(d-1,Math.max(n.gx+n.w,r.gx+r.w)+a),l=Math.min(f-1,Math.max(n.gy+n.h,r.gy+r.h)+a);return L(e,t,o,s,c,l)||(o||s||c<d-1||l<f-1?L(e,t,0,0,d-1,f-1):null)}function R(e,t){return v[e],v[t.folder],z(e,{...t,strict:!0})||z(e,t)}function z(e,t){let n=v[e],r=v[t.folder];return L(e,-1,Math.max(0,Math.min(n.gx,r.gx)-2),Math.max(0,Math.min(n.gy,r.gy)-2),Math.min(d-1,Math.max(n.gx+n.w,r.gx+r.w)+2),Math.min(f-1,Math.max(n.gy+n.h,r.gy+r.h)+2),t)}function B(e){let t=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>=d||c>=f||m[c*d+n]||t.has(c*d+n)||(t.add(c*d+n),F(c*d+n,1))}}}return{route:ee,routeTo:R,occupy:B,release:e=>{for(let t of e.cells)F(t,-1)},hold:e=>{for(let t of e.cells)F(t,1)}}}var dt=[0,1,-1,2,-2,3,-3];function ft(e,t){let n=new Map;e.forEach((e,r)=>{e.edges=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=new Set;for(let a of t.edges)for(let t of n.get(a))t<r&&i.add(e[t].lane);t.lane=dt.find(e=>!i.has(e))??0,delete t.edges})}var pt=(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 mt(e,t){let n=new Map;e.forEach((e,t)=>{for(let r of e.cells)n.has(r)||n.set(r,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++)pt(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 ht(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);ft(o,n*r);let s={...mt(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}}var gt=[1,1,0,-1,-1,-1,0,1],_t=[0,1,1,1,0,-1,-1,-1],vt=8,yt={turn45:1.5,turn90:3,diag:1.3,hug:1,share:.35,centre:.3,gather:224};function bt(e,t=Ne(e),n={}){let{turn45:r,turn90:i,diag:a,hug:o,share:s,centre:c,gather:l}={...yt,...n},{items:u,trunks:d}=e,{W:f,H:p,blocked:m,owner:h}=t,g=f*p,_=Math.max(2,Math.round(28/(e.cell??7))),v=$(t,_),y=_,b=new Uint8Array(g),x=10/(e.cell??7),S=(e,t)=>e>=0&&t>=0&&e<f&&t<p,C=(e,t,n)=>S(e,t)&&!m[t*f+e]&&h[t*f+e]===n;function w(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 T(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=kt(t)[c],d=kt(e)[l],p=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>=p&&e<m,b=r||i?[[i?i.t:g(r.t)?r.t:h(u),r?r.t:g(i.t)?i.t:h(d),0]]:m-p>=1?At(p,m).map(e=>[e,e,Math.abs(e+.5-(p+m)/2)]):[[h(u),h(d),0]],S=null;for(let[r,i,a]of b){if(xt(t,c,r,x)||xt(e,l,i,x))continue;let o=w(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])=>C(e,t,n)))continue;let u=o.slice(_,o.length-_),d=u.length?Math.min(...u.map(([e,t])=>v[t*f+e])):_;d<y||(!S||d>S.least||d===S.least&&a<S.off)&&(S={least:d,off:a,tb:r,ta:i,way:o})}return S?[u.wall(S.tb),...S.way.map(([e,t])=>[e+.5,t+.5]),d.wall(S.ta)]:null}let E=new Float32Array(g+1),D=new Int32Array(g+1),O=new Uint8Array(g+1),k=new Uint32Array(g+1),A=0,j=[],M=(e,t)=>{j.push([e,t]);let n=j.length-1;for(;n>0;){let t=n-1>>1;if(j[t][0]<=e)break;[j[t],j[n]]=[j[n],j[t]],n=t}},N=()=>{let e=j[0],t=j.pop();if(j.length){j[0]=t;let e=0;for(;;){let t=2*e+1;if(t>=j.length||(t+1<j.length&&j[t+1][0]<j[t][0]&&t++,j[t][0]>=j[e][0]))break;[j[t],j[e]]=[j[e],j[t]],e=t}}return e},P=(e,t)=>{if(e===vt||e===t)return 0;let n=Math.min((t-e+8)%8,(e-t+8)%8);return n===1?r:i*(n>=3?2:1)};function F(e,t,n,r,i){A++,j.length=0;let l=g,u=new Map,d=(e,t,n)=>!e||e.side===t&&e.t===n;if(kt(e).forEach((t,i)=>t.cells.forEach(([a,o])=>{let s=t.dir===6||t.dir===2?a:o;C(a,o,n)&&d(r,i,s)&&!xt(e,i,s,x)&&u.set(o*f+a,[(t.dir+4)%8,c*Math.abs(s+.5-t.mid),t.wall(s)])})),!r)for(let t of St(e,x))C(...t.out,n)&&u.set(t.out[1]*f+t.out[0],[(t.dir+4)%8,c*Math.min(e.w,e.h)/2,t.pt]);if(!u.size)return null;let p=e.gx-1,m=e.gx+e.w,h=e.gy-1,y=e.gy+e.h,S=(e,t)=>{let n=Math.max(p-e,e-m,0),r=Math.max(h-t,t-y,0);return Math.max(n,r)+.414*Math.min(n,r)},w=new Map,T=(e,t,n,r)=>{k[e]===A&&E[e]<=t||(k[e]=A,E[e]=t,D[e]=-1,O[e]=n,w.set(e,r),M(t+S(e%f,e/f|0),e))};if(kt(t).forEach((e,r)=>e.cells.forEach(([a,o])=>{let s=e.dir===6||e.dir===2?a:o;C(a,o,n)&&d(i,r,s)&&!xt(t,r,s,x)&&T(o*f+a,c*Math.abs(s+.5-e.mid),e.dir,e.wall(s))})),!i)for(let e of St(t,x))C(...e.out,n)&&T(e.out[1]*f+e.out[0],c*Math.min(t.w,t.h)/2,e.dir,e.pt);for(;j.length;){let[e,t]=N();if(t===l)break;let r=E[t];if(e-S(t%f,t/f|0)>r+1e-4)continue;let i=u.get(t);if(i){let e=r+i[1]+P(O[t],i[0]);(k[l]!==A||e<E[l])&&(k[l]=A,E[l]=e,D[l]=t,M(e,l))}let c=t%f,d=t/f|0;for(let e=0;e<8;e++){let i=c+gt[e],l=d+_t[e];if(!C(i,l,n)||gt[e]&&_t[e]&&(!C(i,d,n)||!C(c,l,n)))continue;let u=l*f+i,p=r+(gt[e]&&_t[e]?Math.SQRT2*a:1)*(b[u]?1-s:1)+o*(_-v[u])+P(O[t],e);k[u]===A&&E[u]<=p||(k[u]=A,E[u]=p,D[u]=t,O[u]=e,M(p+S(i,l),u))}}if(k[l]!==A)return null;let F=[];for(let e=D[l];e!==-1;e=D[e])F.push(e);return F.reverse(),[w.get(F[0]),...F.map(e=>[e%f+.5,Math.floor(e/f)+.5]),u.get(F.at(-1))[2]]}let I=d.map((e,t)=>t).sort((e,t)=>d[t].count-d[e].count||e-t),L=d.map(e=>({a:e.a,b:e.b,count:e.count,back:e.back,implied:e.implied})),ee=e=>Tt(e,(e,t)=>{S(e,t)&&!m[t*f+e]&&(b[t*f+e]=1)}),R=(e,t,n)=>{let r=d[e],i=u[r.a],a=u[r.b];return T(i,a,i.parent,t,n)??F(i,a,i.parent,t,n)};for(let e of I){let t=R(e);t&&(L[e].pts=t,ee(t))}let z=l/(e.cell??7),B=new Map;L.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=u[r];if(a.kind!==`folder`||!Ct(a,i))continue;let o=wt(a,i),s=`${r}|${o}`;B.set(s,[...B.get(s)||[],{k:t,end:n,t:Math.floor(o<2?i[0]:i[1]),count:e.count}])}});let V=new Map;for(let[e,t]of B){let[n,r]=e.split(`|`).map(Number),i=u[n];kt(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<=z;)n++;let a=t.slice(e,n);if(e=n,a.length<2||a.every(e=>e.t===a[0].t))continue;let o=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])=>!xt(i,r,e,x)).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&&V.set(e.k,{...V.get(e.k),[e.end]:{side:r,t:c}})}}if(V.size){b.fill(0),L.forEach((e,t)=>{e.pts&&!V.has(t)&&ee(e.pts)});for(let e of I){let t=V.get(e);if(!t)continue;let n=L[e],r=(e,t)=>{if(!Ct(u[e],t))return;let n=wt(u[e],t);return{side:n,t:Math.floor(n<2?t[0]:t[1])}},i=R(e,t.a??r(n.a,n.pts.at(-1)),t.b??r(n.b,n.pts[0]));i&&(L[e].pts=i),ee(L[e].pts)}}return L}function xt(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 St(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 Ct(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 wt(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 Tt(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))}}var Et={turn45:1.5,turn90:3,diag:1.3,hug:1,centre:1,join:.5,cross:1,haste:1.5,hasteNote:4};function Dt(e,t,n=Ne(e),r={}){let{turn45:i,turn90:a,diag:o,hug:s,centre:c,join:l,cross:u,haste:d,hasteNote:f}={...Et,...r},{items:p,links:m}=e,{W:h,H:g,blocked:_,owner:v}=n,y=h*g,b=Math.max(2,Math.round(28/(e.cell??7))),x=$(n,b),S=10/(e.cell??7),C=new Uint8Array(y);for(let e of t)e.pts&&Tt(e.pts,(e,t)=>{e>=0&&t>=0&&e<h&&t<g&&(C[t*h+e]=1)});let w=(e,t)=>e>=0&&t>=0&&e<h&&t<g,T=(e,t)=>{for(;p[e].parent!==t;)e=p[e].parent;return e},E=(e,[t,n])=>{let r=(e,t)=>Math.abs(e-t)<1e-6;if(!Ct(e,[t,n])){let i=St(e,S).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]},D=(e,t)=>(gt[e]&&_t[e]?Math.SQRT2*o:1)+s*(b-x[t]),O=(e,t)=>{if(e===vt||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)},k=new Float32Array(y*9+1),A=new Int32Array(y*9+1),j=new Uint32Array(y*9+1),M=y*9,N=0,P=new Float64Array(4096),F=new Float64Array(4096),I=new Int32Array(4096),L=0,ee=0,R=0,z=(e,t,n)=>{if(L===P.length){let e=(e,t)=>{let n=new t(e.length*2);return n.set(e),n};P=e(P,Float64Array),F=e(F,Float64Array),I=e(I,Int32Array)}let r=L++;for(;r>0;){let t=r-1>>1;if(P[t]<=e)break;P[r]=P[t],F[r]=F[t],I[r]=I[t],r=t}P[r]=e,F[r]=t,I[r]=n},B=()=>{P[0],ee=F[0],R=I[0];let e=P[--L],t=F[L],n=I[L],r=0;for(;;){let t=2*r+1;if(t>=L||(t+1<L&&P[t+1]<P[t]&&t++,P[t]>=e))break;P[r]=P[t],F[r]=F[t],I[r]=I[t],r=t}P[r]=e,F[r]=t,I[r]=n};function V(e,t,n,r,i){N++,L=0;let a=(e,t)=>w(e,t)&&!_[t*h+e]&&v[t*h+e]===n,o=r%h,d=r/h|0,f=(e,t)=>{let n=Math.abs(e-o),r=Math.abs(t-d);return i*(1-l)*(Math.max(n,r)+.414*Math.min(n,r))},p=new Map;if(e.kind===`folder`)for(let t of St(e,S)){let[n,r]=t.out;if(!a(n,r))continue;let i=r*h+n,o=i*9+t.dir,l=Math.fround(c*Math.min(e.w,e.h)/2+s*(b-x[i]));j[o]===N&&k[o]<=l||(j[o]=N,k[o]=l,A[o]=-1,p.set(i,t.pt),z(l+f(n,r),l,o))}for(kt(e).forEach((t,n)=>t.cells.forEach(([r,i])=>{if(!a(r,i)||xt(e,n,t.dir===6||t.dir===2?r:i,S))return;let o=t.dir===6||t.dir===2?r:i,l=i*h+r,u=l*9+t.dir,d=Math.fround(c*Math.abs(o+.5-t.mid)+s*(b-x[l]));j[u]===N&&k[u]<=d||(j[u]=N,k[u]=d,A[u]=-1,p.set(l,t.wall(o)),z(d+f(r,i),d,u))}));L;){B();let e=R,n=ee;if(e===M)break;if(n!==k[e])continue;let r=e/9|0,i=e%9,o=r%h,s=r/h|0,c=t.get(r);if(c){let t=n+c.rest+O(i,c.dir);(j[M]!==N||t<k[M])&&(j[M]=N,k[M]=t,A[M]=e,z(t,t,M))}for(let t=0;t<8;t++){let r=o+gt[t],c=s+_t[t];if(!a(r,c)||gt[t]&&_t[t]&&(!a(r,s)||!a(o,c)))continue;let l=c*h+r,d=l*9+t,p=Math.fround(n+D(t,l)+(C[l]?u:0)+O(i,t));j[d]===N&&k[d]<=p||(j[d]=N,k[d]=p,A[d]=e,z(p+f(r,c),p,d))}}if(j[M]!==N)return null;let m=[];for(let e=A[M];e!==-1;e=A[e])m.push(e/9|0);return m.reverse(),{cells:m,pts:[p.get(m[0]),...m.map(e=>[e%h+.5,Math.floor(e/h)+.5]),t.get(m.at(-1)).pt]}}let H=[];t.forEach((e,t)=>{if(!e.pts)return;let n=p[e.a].parent,r=m.filter(t=>t.s>=2&&t.level===n&&T(t.a,n)===e.a&&T(t.b,n)===e.b);p[e.a].kind===`folder`&&H.push({folder:e.a,at:e.pts[e.pts.length-1],notes:r.map(e=>e.a),trunk:t}),p[e.b].kind===`folder`&&H.push({folder:e.b,at:e.pts[0],notes:r.map(e=>e.b),trunk:t})});let te=[],U=e=>p[e].kind===`note`,W=new Map;for(let e=0;e<H.length;e++){let{folder:t,at:n,notes:r,trunk:i}=H[e],[a,c,u]=E(p[t],n);if(!w(a,c)||_[c*h+a])continue;let m=c*h+a,g={dir:u,rest:0,pt:n};W.has(m)||W.set(m,{ends:new Map([[m,g]]),endsAny:new Map([[m,g]]),owners:new Map([[m,-1]]),exits:new Map});let{ends:v,endsAny:y,owners:S,exits:C}=W.get(m),D=new Map;for(let e of r){let n=T(e,t);D.set(n,[...D.get(n)||[],e])}for(let[e,n]of[...D].sort((e,t)=>U(e[0])-U(t[0])||t[1].length-e[1].length||e[0]-t[0])){let r=U(e),a=C.get(e),c=r?y:v,u=a&&c.has(a.cell)?{cells:[a.cell],pts:[a.wall,c.get(a.cell).pt,c.get(a.cell).pt]}:V(p[e],c,t,m,r?f:d);if(!u)continue;a||C.set(e,{cell:u.cells[0],wall:u.pts[0]});let g=te.length,_=u.cells.at(-1);te.push({item:e,folder:t,trunk:i,count:n.length,pts:u.pts,cells:u.cells,leaf:r,via:S.get(_)??-1});let w=new Float32Array(u.cells.length);w[w.length-1]=y.get(_).rest;for(let e=u.cells.length-2;e>=0;e--){let t=u.cells[e],n=u.cells[e+1],r=t%h!==n%h&&Math.floor(t/h)!==Math.floor(n/h);w[e]=w[e+1]+(1-l)*((r?Math.SQRT2*o:1)+s*(b-x[n]))}for(let[e,t]of u.cells.entries()){if(y.has(t))continue;let n=u.cells[e+1],i={dir:n===void 0?y.get(_).dir:Ot(n%h-t%h,Math.floor(n/h)-Math.floor(t/h)),rest:w[e],pt:[t%h+.5,Math.floor(t/h)+.5]};y.set(t,i),S.set(t,g),r||v.set(t,i)}r||H.push({folder:e,at:u.pts[0],notes:n,trunk:i})}}return ft(te,y),te.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}))}var Ot=(e,t)=>gt.findIndex((n,r)=>n===Math.sign(e)&&_t[r]===Math.sign(t));function kt(e){return[{dir:6,cells:At(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:At(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:At(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:At(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 $({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+gt[u],f=c+_t[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+gt[i],f=d+_t[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}var At=(e,t)=>Array.from({length:Math.max(0,t-e)},(t,n)=>e+n);function jt(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 Mt(e,t=!1){let n=e=>e.kind===`dir`?{kind:`dir`,id:e.id,ref:e.ref,children:e.children.map(n)}:{kind:e.kind,id:e.id,ref:e.ref,weight:e.weight,rank:e.rank||0};if(t){let t=[],r=e=>{e.kind===`dir`?e.children.forEach(r):t.push(n(e))};return r(e.root),{root:{kind:`dir`,id:e.root.id,ref:e.root.ref,children:t},edges:e.edges,code:!1}}return{root:n(e.root),edges:e.edges,code:!!e.code}}function Nt(e,t){let n={flow:t.gridFlow===`right`?`right`:`up`,grain:Rt(t),plan:!!t.blocks},r=nt(e,n);if(t.blocks){let t=Pt(r,bt(r,Ne(r)));[...t.values()].some(e=>e.wider.size)&&(r=nt(e,{...n,planned:t}))}r.feeders=Ft(r);let i=Ne(r),a=bt(r,i),o=Dt(r,a,i);return jt(r,[...a,...o]),r.highways={trunks:a,feeders:o},r}function Pt(e,t){let{items:n}=e,r=e.cell>7?2:3,i=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=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=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,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 Ft(e,t=e.trunks){let{items:n,links:r,W:i}=e;if(!t.some(e=>e.pts&&(n[e.a].kind===`folder`||n[e.b].kind===`folder`)))return[];let a=Ne(e),o=ut(e,a,{crowd:1,haste:1.5});for(let e of t)e.pts&&o.occupy(e.pts);let s=(e,t)=>{for(;n[e].parent!==t;)e=n[e].parent;return e},c=(e,[t,r])=>{let i=n[e],a=(e,t)=>Math.abs(e-t)<1e-6;return a(t,i.gx)?[i.gx,Math.floor(r)]:a(t,i.gx+i.w)?[i.gx+i.w-1,Math.floor(r)]:a(r,i.gy)?[Math.floor(t),i.gy]:[Math.floor(t),i.gy+i.h-1]},l=[];t.forEach((e,t)=>{if(!e.pts)return;let i=n[e.a].parent,a=r.filter(t=>t.s>=2&&t.level===i&&s(t.a,i)===e.a&&s(t.b,i)===e.b);n[e.a].kind===`folder`&&l.push({folder:e.a,at:e.pts[e.pts.length-1],notes:a.map(e=>e.a),trunk:t}),n[e.b].kind===`folder`&&l.push({folder:e.b,at:e.pts[0],notes:a.map(e=>e.b),trunk:t})});let u=[];for(let e=0;e<l.length;e++){let{folder:t,at:r,notes:d,trunk:f}=l[e],[p,m]=c(t,r);if(p<0||m<0||p>=i||a.blocked[m*i+p])continue;let h=new Map;for(let e of d){let n=s(e,t);h.set(n,[...h.get(n)||[],e])}let g=m*i+p,_=e=>n[e].kind===`note`,v=new Map([[g,[g,r[0],r[1]]]]),y=new Map(v),b=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),s=o.routeTo(e,{ends:r?y:v,folder:t,toward:g});if(!s)continue;let c=u.length;u.push({item:e,folder:t,trunk:f,count:n.length,pts:s.pts,cells:s.cells,leaf:r,via:b.get(s.cells[s.cells.length-1])??-1});let d=new Float32Array(s.cells.length);d[d.length-1]=y.get(s.cells[s.cells.length-1])?.[3]??0;for(let e=s.cells.length-2;e>=0;e--){let t=s.cells[e],n=s.cells[e+1];d[e]=d[e+1]+(t%i!==n%i&&Math.floor(t/i)!==Math.floor(n/i)?Math.SQRT2:1)+(a.close[n]?at.hug:0)}for(let[e,t]of s.cells.entries()){if(y.has(t))continue;let n=[t,t%i+.5,Math.floor(t/i)+.5,d[e]];y.set(t,n),b.set(t,c),r||v.set(t,n)}r||l.push({folder:e,at:s.pts[0],notes:n,trunk:f})}}return ft(u,a.W*a.H),u.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 It(e){let t=Ne(e),n=ut(e,t);return e=>ht(n,e,t.W,t.H)}function Lt(e){let t=3735928559,n=1103547991;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);t=Math.imul(t^i,2654435761),n=Math.imul(n^i,1597334677)}return t=Math.imul(t^t>>>16,2246822507)^Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507)^Math.imul(t^t>>>13,3266489909),(4294967296*(2097151&n)+(t>>>0)).toString(36)}var Rt=e=>e.grain===`coarse`||e.grain===`coarser`?e.grain:`fine`;function zt(e,t={}){return Lt(JSON.stringify([12,t.gridFlow===`right`?`right`:`up`,Rt(t),!!t.blocks,e]))}var Bt,Vt=1,Ht=new Map;function Ut(e){if(Bt===void 0)try{Bt=new Worker(new URL(new URL(`../workers/worker-d9GxGKde.js`,import.meta.url).href,``+import.meta.url),{type:`module`}),Bt.onmessage=({data:e})=>{let t=Ht.get(e.id);Ht.delete(e.id),e.error===void 0?t?.resolve(e.result):t?.reject(Error(e.error))},Bt.onerror=()=>{for(let e of Ht.values())e.reject(Error(`the layout worker stopped`));Ht.clear(),Bt=null}}catch{Bt=null}if(!Bt)return Promise.reject(Error(`no worker`));let t=Vt++;return new Promise((n,r)=>{Ht.set(t,{resolve:n,reject:r}),Bt.postMessage({id:t,...e})})}var Wt=new Map,Gt=new Map,Kt=``;async function qt(e,t){let n=Mt(e),r=zt(n,t),i=Wt.get(r);return i||(i=await Ut({layout:{model:n,o:t}}).catch(()=>Nt(n,t)),Wt.size>=6&&Wt.delete(Wt.keys().next().value),Wt.set(r,i)),{key:r,layout:i}}async function Jt(e,t,n){if(!n.length)return[];let r=()=>{let r=Gt.get(e);return r||(Gt.clear(),Gt.set(e,r=It(t))),r(n)},i=Kt!==e;return Kt=e,(await Ut({routes:{key:e,layout:i?t:null,asks:n}}).catch(()=>Ut({routes:{key:e,layout:t,asks:n}})).catch(r)).routes.map(e=>e?.pts??null)}var Yt=w(`<b class="num svelte-m50bdg"> </b>`),Xt=w(`<a><span class="t svelte-m50bdg"> </span><!></a>`);function Zt(e,t){S(t,!0);let a=x(t,`mark`,3,``),c=x(t,`far`,3,0),l=x(t,`num`,3,0),d=x(t,`iso`,3,``),m=x(t,`linked`,3,!1),h=x(t,`dim`,3,!1),g=x(t,`moment`,3,``);var _=Xt();let y;var C=o(_),w=E(C,!0),O=s(C),A=e=>{var t=Yt(),r=E(t,!0);n(()=>p(r,l())),i(e,t)};r(O,e=>{l()&&e(A)}),v(_),n(e=>{y=b(_,1,`n s${t.step??``} ${g()?`mo-${g()}`:``} ${d()?`p-${d()}`:``} ${a()??``}`,`svelte-m50bdg`,y,{linked:m(),dim:h()&&!l()&&!d()&&!m(),far:c()>1,pick:l()>0}),k(_,`href`,t.href),k(_,`aria-label`,l()?`${t.title}: linked, number ${l()}`:t.title),k(_,`data-note`,t.item.ref),T(_,`--x:${t.item.gx??``};--y:${t.item.gy??``};--w:${t.item.w??``};--h:${t.item.h??``};--lit:${e??``}%`),p(w,t.title)},[()=>Math.max(34,100-(c()-1)*20)]),u(`click`,_,function(...e){t.onpick?.apply(this,e)}),f(`pointerenter`,_,e=>{e.pointerType===`mouse`&&t.onpoint(!0)}),f(`pointerleave`,_,e=>{e.pointerType===`mouse`&&t.onpoint(!1)}),f(`focus`,_,()=>t.onpoint(!0)),f(`blur`,_,()=>t.onpoint(!1)),i(e,_),D()}l([`click`]);var Qt=w(`<button class="frame-title svelte-ywp27z" type="button"> </button>`),$t=w(`<span class="frame-title held svelte-ywp27z"> </span>`),en=w(`<div><!> <!></div>`),tn=w(`<button type="button"><span class="name svelte-ywp27z"> </span><span class="label svelte-ywp27z"> </span></button>`);function nn(t,l){S(l,!0);let f=x(l,`titled`,3,!0),m=x(l,`held`,19,()=>({req:0,bld:0})),h=x(l,`dim`,3,!1),g=e(()=>l.item.depth%2?`var(--ground-1)`:`var(--ground-0)`),_=e(()=>l.item.depth%2?`var(--ground-0)`:`var(--ground-1)`),y=e(()=>m().req?`req`:m().bld?`bld`:``),C=e(()=>[m().req?`${m().req} required here`:``,m().bld?`${m().bld} ${m().bld===1?`builds`:`build`} on it`:``].filter(Boolean).join(` · `)),w=e(()=>`--x:${l.item.gx};--y:${l.item.gy};--w:${l.item.w};--h:${l.item.h}`);var O=d(),A=c(O),j=e=>{var t=en(),c=o(t),d=e=>{var t=Qt(),r=E(t,!0);n(()=>p(r,l.name)),u(`click`,t,function(...e){l.onpick?.apply(this,e)}),i(e,t)};r(c,e=>{f()&&e(d)});var m=s(c,2),h=e=>{var t=$t(),r=E(t,!0);n(()=>p(r,a(C))),i(e,t)};r(m,e=>{a(C)&&e(h)}),v(t),n(()=>{b(t,1,`folder frame ${a(y)??``}`,`svelte-ywp27z`),k(t,`data-folder`,l.item.ref),T(t,`${a(w)??``};--inside:${a(g)??``};--behind:${a(_)??``};--ground-here:${a(g)??``}`)}),i(e,t)},M=e=>{var t=tn();let r;var c=o(t),d=E(c,!0),f=s(c),m=E(f,!0);v(t),n(()=>{r=b(t,1,`folder frame closed ${a(y)??``}`,`svelte-ywp27z`,r,{dim:h()}),k(t,`data-folder`,l.item.ref),T(t,a(w)),p(d,l.name),p(m,a(C)||`${l.count} ${l.count===1?`note`:`notes`}`)}),u(`click`,t,function(...e){l.onpick?.apply(this,e)}),i(e,t)};r(A,e=>{l.open?e(j):e(M,-1)}),i(t,O),D()}l([`click`]);var rn=t(`<path></path>`),an=t(`<path class="sent svelte-k96fgh"></path>`),on=t(`<svg class="routes svelte-k96fgh" aria-hidden="true"><g><!><!><!></g></svg>`);function sn(e,t){S(t,!0);let r=x(t,`sent`,19,()=>[]);var c=on(),l=o(c),u=o(l);A(u,17,()=>t.rest,e=>e.key,(e,t)=>{var r=rn();let o;n(()=>{o=b(r,0,y(a(t).study?`study`:a(t).strong?`base`:`base weak`),`svelte-k96fgh`,o,{trunk:a(t).trunk&&!a(t).study}),k(r,`d`,a(t).d)}),i(e,r)});var d=s(u);A(d,17,r,e=>e.key,(e,t)=>{var r=an();n(()=>k(r,`d`,a(t).d)),i(e,r)});var f=s(d);A(f,17,()=>t.hot,e=>e.key,(e,t)=>{var r=rn();let o;n(()=>{o=b(r,0,`lit ${a(t).kind??``}`,`svelte-k96fgh`,o,{still:a(t).still}),k(r,`d`,a(t).d)}),i(e,r)}),v(l),v(c),n(()=>{k(c,`data-requires`,t.counts.requires),k(c,`data-builds`,t.counts.builds),k(c,`data-uses`,t.counts.uses),k(l,`transform`,`scale(${t.k??``})`)}),i(e,c),D()}var cn=w(`<span class="name svelte-1hqh0lc"> </span> <svg aria-hidden="true" class="svelte-1hqh0lc"><path class="svelte-1hqh0lc"></path></svg>`,1),ln=w(`<div class="folder frame svelte-1hqh0lc"><button class="band svelte-1hqh0lc" type="button"><!></button></div>`),un=w(`<button class="folder frame closed svelte-1hqh0lc" type="button"><span class="band svelte-1hqh0lc"><!></span> <span class="label svelte-1hqh0lc"> </span></button>`);function dn(t,l){S(l,!0);let f=e=>{var t=cn(),r=c(t),o=E(r),u=s(r,2),d=E(u);n(()=>{p(o,`study · ${l.name??``}`),k(u,`viewBox`,a(_).viewBox),k(u,`data-passes`,m()),T(u,`width:${16*a(_).ratio}px`),k(d,`d`,a(_).d)}),i(e,t)},m=x(l,`passes`,3,0),h=e(()=>l.item.depth%2?`var(--ground-1)`:`var(--ground-0)`),g=e(()=>`--x:${l.item.gx};--y:${l.item.gy};--w:${l.item.w};--h:${l.item.h}`),_=e(()=>te([...l.item.ref].reduce((e,t)=>(e*31+t.charCodeAt(0))%99991,7),m()?Math.min(m()+1,4):0));var y=d(),b=c(y),C=e=>{var t=ln(),r=o(t),s=o(r);f(s),v(r),v(t),n(()=>{k(t,`data-folder`,l.item.ref),T(t,`${a(g)??``};--inside:${a(h)??``};--ground-here:${a(h)??``}`)}),u(`click`,r,function(...e){l.onpick?.apply(this,e)}),i(e,t)},w=e=>{var t=un(),r=o(t),c=o(r);f(c),v(r);var d=s(r,2),m=E(d);v(t),n(()=>{k(t,`data-folder`,l.item.ref),T(t,`${a(g)??``};--inside:${a(h)??``}`),p(m,`${l.count??``} ${l.count===1?`item`:`items`}`)}),u(`click`,t,function(...e){l.onpick?.apply(this,e)}),i(e,t)};r(b,e=>{l.open?e(C):e(w,-1)}),i(t,y),D()}l([`click`]);var fn=w(`<a><span class="frame-title kind svelte-9q9bch"> </span><span class="t svelte-9q9bch"> </span></a>`);function pn(e,t){S(t,!0);let r=x(t,`mark`,3,``),a=x(t,`dim`,3,!1),c=x(t,`moment`,3,``);var l=fn();let d;var m=o(l),h=E(m,!0),g=s(m),_=E(g,!0);v(l),n(()=>{d=b(l,1,`sn frame ${r()??``} ${c()?`mo-${c()}`:``}`,`svelte-9q9bch`,d,{dim:a()}),k(l,`href`,t.href),k(l,`aria-label`,`${t.kind??``}: ${t.title??``}`),k(l,`data-note`,t.item.ref),T(l,`--x:${t.item.gx??``};--y:${t.item.gy??``};--w:${t.item.w??``};--h:${t.item.h??``}`),p(h,t.kind),p(_,t.title)}),u(`click`,l,function(...e){t.onpick?.apply(this,e)}),f(`pointerenter`,l,e=>{e.pointerType===`mouse`&&t.onpoint(!0)}),f(`pointerleave`,l,e=>{e.pointerType===`mouse`&&t.onpoint(!1)}),f(`focus`,l,()=>t.onpoint(!0)),f(`blur`,l,()=>t.onpoint(!1)),i(e,l),D()}l([`click`]);var mn=w(`<p class="said svelte-14y1y1z"> </p>`),hn=w(`<p class="said faint svelte-14y1y1z">There are no notes yet. The map draws itself as you write them.</p>`),gn=w(`<span> </span>`),_n=w(`<a class="eph svelte-14y1y1z"><span class="t svelte-14y1y1z"> </span></a>`),vn=w(`Iso is reading <span class="c-gold svelte-14y1y1z"> </span>`,1),yn=w(`<svg class="loader svelte-14y1y1z" aria-hidden="true"><path d="M0 1H1000" class="svelte-14y1y1z"></path></svg> <p class="doing svelte-14y1y1z" role="status"><i class="dia svelte-14y1y1z" aria-hidden="true"></i><!></p>`,1),bn=w(`<div><!> <!></div>`),xn=w(`<span class="svelte-14y1y1z"><i class="dia" aria-hidden="true"></i>a new note</span>`),Sn=w(`<div><svg aria-hidden="true" class="svelte-14y1y1z"><rect x="1" y="1" width="100%" height="100%" class="svelte-14y1y1z"></rect></svg> <!></div>`),Cn=w(`<p class="notice svelte-14y1y1z" role="alert"> </p>`),wn=w(`<!> <div><!> <!> <!> <!> <!> <!></div> <!>`,1),Tn=w(`<div role="application" aria-label="The atlas: the map of the base" tabindex="0"><!></div>`);function En(t,l){S(l,!0);let y=x(l,`pick`,3,``),w=x(l,`moment`,3,null),F=_(null),I=_(null),L=_(``),R=_({x:0,y:0,k:1}),z=_({w:0,h:0}),B=_(``),V=_([]),H=e(()=>a(V).at(-1)??``),te=_(!1),U=_(void 0),W=[`fine`,`coarse`,`coarser`],G=_(g(W.find(e=>e===fe(`isorite.atlas.grain`))??`fine`)),se=_(fe(`isorite.atlas.leaves`)===`on`),ce=!1,le=window.innerWidth>=window.innerHeight?`right`:`up`;function fe(e){try{return localStorage.getItem(e)}catch{return null}}function pe(){h(G,W[(W.indexOf(a(G))+1)%W.length],!0),ce=!1;try{localStorage.setItem(`isorite.atlas.grain`,a(G))}catch{}_e()}function me(e){h(se,e,!0);try{localStorage.setItem(`isorite.atlas.leaves`,e?`on`:`off`)}catch{}}async function _e(){try{let e=await P.api.map(),t=await qt(e.model,{gridFlow:le,grain:a(G),blocks:!0}),n=!a(I)||a(I).key!==t.key&&!ce;h(F,e),h(I,t),h(L,``),n&&a(z).w&&h(R,we())}catch(e){h(L,e.message,!0)}}m(()=>{_e();let e,t=P.on(t=>{(t.type===`note-changed`||t.type===`record`)&&(clearTimeout(e),e=setTimeout(()=>{_e()},400))});return()=>{t(),clearTimeout(e)}});let q=e(()=>a(I)?ye(a(I).layout):null),J=e(()=>a(q)?ve(a(q)):null),Ce=e(()=>a(q)?be(a(q),a(R).k):``),we=()=>{let e=(a(q)?.margin??0)/2,t={gx:e,gy:e,w:(a(q)?.W??1)-2*e,h:(a(q)?.H??1)-2*e},n=a(Z)?.draft?a(Z):null;if(n&&a(q)){let e=Math.max(t.gx+t.w,n.gx+Math.max(n.w,240/a(q).cell)+2),r=Math.max(t.gy+t.h,n.gy+n.h+70/a(q).cell);t.gx=Math.min(t.gx,n.gx-2),t.gy=Math.min(t.gy,n.gy-2),t.w=e-t.gx,t.h=r-t.gy}return Ae(t,a(z).w,a(z).h,1,a(q)?.cell)};m(()=>{if(!a(U))return;let e=new ResizeObserver(([e])=>{let{width:t,height:n}=e.contentRect,r=!a(z).w;h(z,{w:t,h:n}),r&&a(q)&&h(R,we())});return e.observe(a(U)),()=>e.disconnect()});let De=e(()=>a(q)?a(q).items.flatMap((e,t)=>e.kind===`folder`&&a(Ce)[t]!==`-`?[{item:e,i:t,open:a(Ce)[t]===`o`}]:[]):[]),Me=e(()=>a(q)?a(q).items.flatMap((e,t)=>e.kind===`note`&&a(Ce)[t]===`s`?[{item:e,i:t}]:[]):[]),Ne=e(()=>a(q)?Te(Se(a(q),a(Ce),a(J).strong,a(se))).map(e=>({key:e.key,pts:e.pts,d:Oe(e.pts,0,a(q).cell),count:e.count,study:e.study,strong:e.strong,trunk:e.trunk,...Pe(e)})).map((e,t,n)=>({...e,label:e.label&&!n.some((n,r)=>r!==t&&n.label&&n.count===e.count&&Math.hypot(n.mid[0]-e.mid[0],n.mid[1]-e.mid[1])<10&&(n.length>e.length||n.length===e.length&&r<t))})):[]);function Pe(e){let t=e.pts[0],n=t,r=0;for(let i=1,a=0;i<e.pts.length;i++){let o=e.pts[i-1],s=e.pts[i],c=e.pts[i+1];if(c&&Math.abs((s[0]-o[0])*(c[1]-s[1])-(s[1]-o[1])*(c[0]-s[0]))<1e-6&&(s[0]-o[0])*(c[0]-s[0])+(s[1]-o[1])*(c[1]-s[1])>0)continue;let l=e.pts[a],u=Math.hypot(s[0]-l[0],s[1]-l[1]);u>r&&(r=u,t=l,n=s),a=i}return{label:e.trunk&&e.count>1&&r>=3,mid:[(t[0]+n[0])/2,(t[1]+n[1])/2],side:Math.abs(t[0]-n[0])<1e-6?`right`:`above`,length:r}}let Fe=e(()=>y()?``:a(H)||a(B)),Y=e(()=>a(Fe)&&a(F)&&a(J)?.at.has(a(Fe))?ee(a(F).model,a(Fe)):null),Ie=e(()=>{let e=new Map;if(!a(Y))return e;for(let t of a(Y).also)e.set(t,{mark:`also`,far:0});for(let t of a(Y).uses)e.set(t,{mark:`use`,far:0});for(let t of a(Y).builds)e.set(t,{mark:`bld`,far:0});for(let t of a(Y).requires)e.set(t,{mark:`req`,far:a(Y).depth[t]??1});for(let t of a(V))e.set(t,{mark:`req`,far:1});return e.set(a(Fe),{mark:`at`,far:0}),e}),Le=e(()=>{if(!a(Y))return[];let e=a(V).slice(1).map((e,t)=>({from:a(V)[t],to:e,kind:`requires`})),t=a(V).at(-2);return[...e,...a(Y).links.filter(e=>e.kind===`requires`?a(te)?!e.spare:e.from===a(Fe):e.kind!==`builds`||e.from!==t)]}),Re=e(()=>{let e=new Map;if(!a(Y)||!a(J))return e;let t=new Set(a(J).up[a(J).at.get(a(Fe))]),n=(n,r)=>{for(let i of n)for(let n of a(J).up[a(J).at.get(i)??-1]??[]){if(t.has(n))break;let i=e.get(n)??{req:0,bld:0};i[r]++,e.set(n,i)}};return n(a(Y).requires,`req`),n(a(Y).builds,`bld`),e}),ze=(e,t)=>{let n=a(Re).get(e),r=a(q).items[e].parent;return n&&(!t||r<0||!a(Re).has(r))?n:{req:0,bld:0}},Be=_([]),Ve=_({requires:0,builds:0,uses:0});function He(e,t){if(!e.length||!a(q)||!a(J)||!a(I)){t([],[]);return}let n=e.flatMap(e=>{let t=a(J).at.get(e.from),n=a(J).at.get(e.to);return t===void 0||n===void 0?[]:[{a:t,b:n,kind:e.kind}]}),{fixed:r,asks:i}=Ee(a(q),a(J),a(Ce),n),o=e=>t(Te(e,!0).map(e=>({key:e.key,kind:e.kind,d:Oe(e.pts,0,a(q).cell),count:e.count,still:!e.flow})),e);if(o(r),!i.length)return;let s=!1;return Jt(a(I).key,a(q),i.map(({a:e,b:t})=>({a:e,b:t}))).then(e=>{s||o([...r,...i.flatMap((t,n)=>e[n]?[{key:t.key,kind:t.kind,pts:[...e[n]].reverse()}]:[])])}).catch(()=>void 0),()=>{s=!0}}m(()=>He(a(Le),(e,t)=>{h(Be,e),h(Ve,{requires:t.filter(e=>e.kind===`requires`).length,builds:t.filter(e=>e.kind===`builds`).length,uses:t.filter(e=>e.kind===`uses`).length})}));let X=e(()=>y()?null:P.iso),Ue=e(()=>a(X)?.state===`reading`||a(X)?.state===`writing`),We=e(()=>{let e=new Map;for(let t of a(X)?.steps??[])t.opened&&!t.failed&&!e.has(t.opened)&&e.set(t.opened,t.how);return e}),Ge=e(()=>a(Ue)?a(X).steps.findLast(e=>e.opened&&!e.failed)?.opened??``:``),Ke=e(()=>(a(X)?.steps??[]).flatMap(e=>e.how===`link`&&e.from&&e.opened&&!e.failed?[{from:e.opened,to:e.from,kind:`iso`}]:[])),qe=_([]);m(()=>He(a(Ke),e=>{h(qe,e)}));let Je=_(null);m(()=>{let e=a(X)?.note??``;if(h(Je,null),!e.startsWith(`@draft/`))return;let t=!1;return P.api.readNote(e).then(e=>{t||h(Je,e)},()=>void 0),()=>{t=!0}});let Z=e(()=>{if(!a(X)||!a(q)||!a(J))return null;if(!a(X).note.startsWith(`@draft/`)){let e=a(J).at.get(a(X).note);if(e===void 0)return null;let t=a(q).items[xe(a(J),a(Ce),e)];return{gx:t.gx,gy:t.gy,w:t.w,h:t.h,draft:!1,title:lt(a(X).note)}}let e=Math.round(126/a(q).cell),t=Math.round(35/a(q).cell),n=a(Je)?oe(a(Je).text)||`a new note`:``,r=ue(a(X).note),i=r?{gx:Math.round(r.gx*7/a(q).cell),gy:Math.round(r.gy*7/a(q).cell)}:null;if(i&&!a(q).items.some(n=>n.kind===`note`&&i.gx<n.gx+n.w+1&&n.gx<i.gx+e+1&&i.gy<n.gy+n.h+1&&n.gy<i.gy+t+1))return{...i,w:e,h:t,draft:!0,title:n};let o=a(q).items.filter(e=>e.parent<0),s=Math.max(...o.map(e=>e.gx+e.w)),c=Math.max(...o.map(e=>e.gy+e.h)),l=Math.round(84/a(q).cell);return le===`right`?{gx:s+l,gy:Math.round((a(q).H-t)/2),w:e,h:t,draft:!0,title:n}:{gx:Math.round((a(q).W-e)/2),gy:c+l,w:e,h:t,draft:!0,title:n}}),Ye=e(()=>a(Je)?ne(a(Je).text).filter(e=>a(F)?.notes[e]):[]),Xe=e(()=>!a(Z)?.draft||!a(q)||!a(J)?[]:a(Ye).flatMap(e=>{let t=a(J).at.get(e);if(t===void 0)return[];let n=a(q).items[xe(a(J),a(Ce),t)],r=a(Z),i=n.gx+n.w/2-(r.gx+r.w/2),o=n.gy+n.h/2-(r.gy+r.h/2),s=5/18*Math.abs(i)>=Math.abs(o);return[{key:e,d:Oe(ke(s?[i<0?r.gx:r.gx+r.w,r.gy+r.h/2]:[r.gx+r.w/2,o<0?r.gy:r.gy+r.h],s?[i<0?n.gx+n.w:n.gx,n.gy+n.h/2]:[n.gx+n.w/2,o<0?n.gy+n.h:n.gy],s),0,a(q).cell)}]})),Ze=e=>{if(e===a(Ge))return`used`;let t=a(We).get(e);return t===`keyword`?`key`:t===`meaning`?`sem`:t?`link`:``};m(()=>{let e=a(X);e&&e.request===P.watching&&e.state!==`reading`&&e.state!==`writing`&&(P.watching=``,e.state===`done`&&M(j(`/draft/[id]`,{id:e.note.slice(7)})))});let Qe=``;m(()=>{a(Z)?.draft&&a(X)&&Qe!==a(X).request&&a(z).w&&(Qe=a(X).request,ce||h(R,we()))});let Q=_(null),$e=_(``);m(()=>{if(h(Q,null),h($e,``),!y())return;let e=!1;return P.api.readNote(y()).then(t=>{e||h(Q,t)},()=>{e||h($e,`that note for Iso is not here any more`)}),()=>{e=!0}});let et=e(()=>a(Q)?(ie(a(Q).text)??ne(a(Q).text)).filter(e=>a(F)?.notes[e]&&!e.startsWith(`@`)):[]),tt=Promise.resolve();function nt(e){tt=tt.then(async()=>{if(!a(Q)||e.startsWith(`@`))return;let t=t=>ie(t)?ae(t,e):ne(t).includes(e)?re(t,e):K(t,e,lt(e)),n=t(a(Q).text);if(n===null)h($e,`linked in what you wrote: take it out there`);else{h($e,``);try{h(Q,await P.api.saveNote(y(),{base:a(Q).version,text:n}))}catch{try{let e=await P.api.readNote(y()),n=t(e.text);h(Q,n===null?e:await P.api.saveNote(y(),{base:e.version,text:n}))}catch(e){h($e,`not linked: ${e.message}`)}}}})}let rt=_(null),it,at;function ot(){clearTimeout(it),clearTimeout(at),it=at=void 0,h(rt,null)}function st(e,t){if(ot(),y()||!a(q)||!a(J)||!(e.target instanceof Element)||e.target.closest(`button, .dock`))return;let n=e.target.closest(`[data-note]`)?.dataset.note??``;if(n.startsWith(`@`))return;let r=n?a(q).items[a(J).at.get(n)??-1]:void 0,i=a(q).cell*a(R).k,o=Math.round(126/a(q).cell),s=Math.round(35/a(q).cell),c=r?{note:n,gx:r.gx,gy:r.gy,w:r.w,h:r.h}:{note:``,gx:Math.round((t.x-a(R).x)/i)-Math.floor(o/2),gy:Math.round((t.y-a(R).y)/i)-Math.ceil(s/2),w:o,h:s};it=setTimeout(()=>{h(rt,c)},180),at=setTimeout(()=>{pt=!0,ct(c)},650)}async function ct(e){try{let t=await P.api.createDraft();e.note&&await P.api.saveNote(t.id,{base:t.version,text:K(t.text,e.note,lt(e.note))}),de(t.id,{gx:e.gx*a(q).cell/7,gy:e.gy*a(q).cell/7}),await M(j(`/draft/[id]`,{id:t.id.slice(7)}))}catch(e){h($e,e.message,!0),ot()}}let lt=e=>a(F)?.notes[e]?.title??e.split(`/`).at(-1)??e,ut=e=>e.startsWith(`@study`)?e.replace(/^@study\/?/,``).split(`/`).at(-1)||P.session?.name||`the base`:e.split(`/`).at(-1)??e,dt=0;function ft(e){if(cancelAnimationFrame(dt),matchMedia(`(prefers-reduced-motion: reduce)`).matches){h(R,e);return}let t=a(R),n=performance.now(),r=i=>{let o=Math.min(1,(i-n)/320),s=1-(1-o)**3,c=t.k*(e.k/t.k)**s,l=a(z).w/2,u=a(z).h/2,d=(l-t.x)/t.k*(1-s)+(l-e.x)/e.k*s,f=(u-t.y)/t.k*(1-s)+(u-e.y)/e.k*s;h(R,o===1?e:{k:c,x:l-d*c,y:u-f*c}),o<1&&(dt=requestAnimationFrame(r))};dt=requestAnimationFrame(r)}let pt=!1,mt=new Map,ht=null;function gt(){let e=[...mt.values()];if(!e.length){ht=null;return}let t=e.reduce((e,t)=>e+t.x,0)/e.length,n=e.reduce((e,t)=>e+t.y,0)/e.length;ht={view:a(R),x:t,y:n,span:e.length>1?Math.hypot(e[0].x-e[1].x,e[0].y-e[1].y):0}}let _t=e=>{let t=a(U).getBoundingClientRect();return{x:e.clientX-t.left,y:e.clientY-t.top}};function vt(e){(e.pointerType!==`mouse`||e.button===0)&&(cancelAnimationFrame(dt),mt.size||(pt=!1),mt.set(e.pointerId,_t(e)),gt(),mt.size===1?st(e,_t(e)):ot())}function yt(e){if(!mt.has(e.pointerId)||!ht)return;mt.set(e.pointerId,_t(e));let t=[...mt.values()],n=t.reduce((e,t)=>e+t.x,0)/t.length,r=t.reduce((e,t)=>e+t.y,0)/t.length;if(!pt&&t.length===1&&Math.hypot(n-ht.x,r-ht.y)<5)return;pt||(pt=ce=!0,ot(),a(U).setPointerCapture(e.pointerId));let i=t.length>1?Math.hypot(t[0].x-t[1].x,t[0].y-t[1].y):0,o=ht.span&&i?je(ht.view,i/ht.span,ht.x,ht.y):ht.view;h(R,{k:o.k,x:o.x+n-ht.x,y:o.y+r-ht.y})}function bt(e){mt.delete(e.pointerId)&&(at!==void 0&&ot(),gt())}function xt(e){e.preventDefault(),cancelAnimationFrame(dt),ce=!0;let t=_t(e),n=e.deltaMode===1?16:1;h(R,je(a(R),Math.exp(-e.deltaY*n*(e.ctrlKey?.01:.0015)),t.x,t.y))}m(()=>{if(!a(U))return;let e=a(U);return e.addEventListener(`wheel`,xt,{passive:!1}),()=>e.removeEventListener(`wheel`,xt)});function St(e,t){if(e.metaKey||e.ctrlKey||e.shiftKey||(e.preventDefault(),e.stopPropagation(),pt))return;if(y()){nt(t);return}if(a(H)===t){M(N(t));return}let n=[];if(a(Y)&&a(Fe)===a(H)&&a(Y).depth[t])for(let e=t;e&&e!==a(H);e=a(Y).via[e])n.unshift(e);h(V,a(V).includes(t)?a(V).slice(0,a(V).indexOf(t)+1):n.length?[...a(V),...n]:[t])}function Ct(e){if(pt||!a(q))return;ce=!0;let t=Ae(a(q).items[e],a(z).w,a(z).h,1.5,a(q).cell),n=Math.abs(t.k-a(R).k)<.01*t.k&&Math.hypot(t.x-a(R).x,t.y-a(R).y)<4,r=a(q).items[e].parent;ft(n?r<0?we():Ae(a(q).items[r],a(z).w,a(z).h,1.5,a(q).cell):t)}function wt(e){if(pt||!(e.target instanceof Element)||e.target.closest(`.dock, .key`))return;let t=e.target.closest(`[data-folder]`);e.target.closest(`a, button`)||(a(H)?h(V,[]):a(X)&&!a(Ue)?P.iso=null:t&&a(q)?Ct(a(q).items.findIndex(e=>e.kind===`folder`&&e.ref===t.dataset.folder)):ft(we()))}function Tt(e){if(e.key===`Escape`){h(V,[]),h(B,``);return}if(e.key===`w`&&a(H)&&!e.metaKey&&!e.ctrlKey&&!e.altKey){h(te,!a(te));return}if(e.key===`c`&&!e.metaKey&&!e.ctrlKey&&!e.altKey){pe();return}if(e.key===`l`&&!e.metaKey&&!e.ctrlKey&&!e.altKey){me(!a(se));return}if(e.target!==a(U))return;let t={x:a(z).w/2,y:a(z).h/2};if(e.key===`+`||e.key===`=`)h(R,je(a(R),1.25,t.x,t.y));else if(e.key===`-`)h(R,je(a(R),.8,t.x,t.y));else if(e.key===`0`)ft(we());else if(e.key===`ArrowLeft`)h(R,{...a(R),x:a(R).x+80});else if(e.key===`ArrowRight`)h(R,{...a(R),x:a(R).x-80});else if(e.key===`ArrowUp`)h(R,{...a(R),y:a(R).y+80});else if(e.key===`ArrowDown`)h(R,{...a(R),y:a(R).y-80});else return;e.preventDefault(),ce=!0}let Et=e(()=>{if(!a(q)||!a(z).w||a(R).k<=we().k*1.05)return-1;let e=a(q).cell*a(R).k,t=(a(z).w/2-a(R).x)/e,n=(a(z).h/2-a(R).y)/e,r=-1;return a(q).items.forEach((i,o)=>{i.kind!==`folder`||a(Ce)[o]!==`o`||t<i.gx||t>i.gx+i.w||n<i.gy||n>i.gy+i.h||(i.w*e>=.6*a(z).w||i.h*e>=.6*a(z).h)&&(r<0||a(q).items[r].depth<i.depth)&&(r=o)}),r});function Dt(){if(!a(q))return;ce=!0;let e=a(Et)<0?-1:a(q).items[a(Et)].parent;ft(e<0?we():Ae(a(q).items[e],a(z).w,a(z).h,1.5,a(q).cell))}let Ot=e(()=>a(R).k>=ge),kt=e(()=>a(q)?a(q).items.filter(e=>e.kind===`note`&&e.ref.startsWith(`@study`)).length:0);m(()=>(P.atlas={items:a(kt),chosen:a(H)?lt(a(H)):``,steps:a(V).length-1,chain:a(te),whole:()=>{h(te,!a(te))},pick:!!y(),here:a(Et)<0?``:ut(a(q).items[a(Et)].ref),out:Dt},()=>{P.atlas=null}));var $=Tn();let At;var jt=o($),Mt=e=>{var t=mn(),r=E(t);n(()=>p(r,`The map could not be drawn: ${a(L)??``}`)),i(e,t)},Nt=t=>{var l=wn(),u=c(l),f=e=>{var t=hn();i(e,t)};r(u,e=>{a(q).items.length||e(f)});var m=s(u,2);let g;var _=o(m);A(_,17,()=>a(De),e=>e.item.id,(t,n)=>{var o=d(),s=c(o),l=t=>{{let r=e(()=>ut(a(n).item.ref)),i=e(()=>a(q).items.filter(e=>e.parent===a(n).i&&a(F)?.notes[e.ref]?.passed).length);dn(t,{get item(){return a(n).item},get name(){return a(r)},get count(){return a(J).noteCount[a(n).i]},get open(){return a(n).open},get passes(){return a(i)},onpick:()=>Ct(a(n).i)})}},u=e(()=>a(n).item.ref.startsWith(`@study`)),f=t=>{{let r=e(()=>ut(a(n).item.ref)),i=e(()=>a(n).item.parent<0||(a(n).item.gy-a(q).items[a(n).item.parent].gy)*a(q).cell*a(R).k>=18),o=e(()=>ze(a(n).i,a(n).open)),s=e(()=>!!a(Y)&&!a(n).open&&!a(Re).has(a(n).i));nn(t,{get item(){return a(n).item},get name(){return a(r)},get count(){return a(J).noteCount[a(n).i]},get open(){return a(n).open},get titled(){return a(i)},get held(){return a(o)},get dim(){return a(s)},onpick:()=>Ct(a(n).i)})}};r(s,e=>{a(u)?e(l):e(f,-1)}),i(t,o)});var x=s(_,2);{let t=e(()=>[...a(qe),...a(Be)]);sn(x,{get k(){return a(R).k},get rest(){return a(Ne)},get hot(){return a(t)},get counts(){return a(Ve)},get sent(){return a(Xe)}})}var S=s(x,2),D=e=>{var t=d(),o=c(t);A(o,17,()=>a(Ne),e=>e.key,(e,t)=>{var o=d(),s=c(o),l=e=>{var r=gn(),o=E(r,!0);n(()=>{b(r,1,`count ${a(t).side??``}`,`svelte-14y1y1z`),T(r,`--x:${a(t).mid[0]??``};--y:${a(t).mid[1]??``}`),p(o,a(t).count)}),i(e,r)};r(s,e=>{a(t).label&&e(l)}),i(e,o)}),i(e,t)};r(S,e=>{a(Ot)&&e(D)});var O=s(S,2);A(O,17,()=>a(Me),e=>e.item.id,(t,n)=>{let o=e(()=>a(Ie).get(a(n).item.ref)),s=e(()=>a(o)?.mark??``);var l=d(),u=c(l),f=t=>{{let r=e(()=>lt(a(n).item.ref)),i=e(()=>a(F).notes[a(n).item.ref]?.kind??`note`),o=e(()=>w()?.note===a(n).item.ref?w().who:``),c=e(()=>!!a(Y)&&!a(s)),l=e(()=>N(a(n).item.ref));pn(t,{get item(){return a(n).item},get title(){return a(r)},get kind(){return a(i)},get mark(){return a(s)},get moment(){return a(o)},get dim(){return a(c)},get href(){return a(l)},onpick:e=>St(e,a(n).item.ref),onpoint:e=>{h(B,e?a(n).item.ref:a(B)===a(n).item.ref?``:a(B),!0)}})}},p=e(()=>a(n).item.ref.startsWith(`@study`)),m=t=>{{let r=e(()=>lt(a(n).item.ref)),i=e(()=>a(F).notes[a(n).item.ref]?.step??0),c=e(()=>a(o)?.far??0),l=e(()=>a(et).indexOf(a(n).item.ref)+1),u=e(()=>Ze(a(n).item.ref)),d=e(()=>a(Ye).includes(a(n).item.ref)),f=e(()=>w()?.note===a(n).item.ref?w().who:``),p=e(()=>!!a(Y)&&!a(s)),m=e(()=>N(a(n).item.ref));Zt(t,{get item(){return a(n).item},get title(){return a(r)},get step(){return a(i)},get mark(){return a(s)},get far(){return a(c)},get num(){return a(l)},get iso(){return a(u)},get linked(){return a(d)},get moment(){return a(f)},get dim(){return a(p)},get href(){return a(m)},onpick:e=>St(e,a(n).item.ref),onpoint:e=>{h(B,e?a(n).item.ref:a(B)===a(n).item.ref?``:a(B),!0)}})}};r(u,e=>{a(p)?e(f):e(m,-1)}),i(t,l)});var M=s(O,2),P=e=>{var t=bn();let l;var u=o(t),d=e=>{var t=_n(),r=o(t),s=E(r,!0);v(t),n(e=>{k(t,`href`,e),k(t,`aria-label`,`${a(Z).title??``}: your note for Iso`),p(s,a(Z).title)},[()=>j(`/draft/[id]`,{id:a(X).note.slice(7)})]),i(e,t)};r(u,e=>{a(Z).draft&&e(d)});var f=s(u,2),m=e=>{var t=yn(),l=s(c(t),2),u=s(o(l)),d=e=>{var t=C(`Iso is writing`);i(e,t)},f=e=>{var t=vn(),r=s(c(t)),o=E(r,!0);n(e=>p(o,e),[()=>lt(a(Ge))]),i(e,t)},m=e=>{var t=C(`Iso is thinking`);i(e,t)};r(u,e=>{a(X).state===`writing`?e(d):a(Ge)?e(f,1):e(m,-1)}),v(l),i(e,t)};r(f,e=>{a(Ue)&&e(m)}),v(t),n(()=>{l=b(t,1,`asker svelte-14y1y1z`,null,l,{draft:a(Z).draft}),T(t,`--x:${a(Z).gx??``};--y:${a(Z).gy??``};--w:${a(Z).w??``};--h:${a(Z).h??``}`)}),i(e,t)};r(M,e=>{a(Z)&&e(P)});var I=s(M,2),L=e=>{var t=Sn();let c;var l=s(o(t),2),u=e=>{var t=xn();i(e,t)};r(l,e=>{!a(rt).note&&a(Ot)&&e(u)}),v(t),n(()=>{c=b(t,1,`grasp svelte-14y1y1z`,null,c,{"on-note":!!a(rt).note}),T(t,`--x:${a(rt).gx??``};--y:${a(rt).gy??``};--w:${a(rt).w??``};--h:${a(rt).h??``}`)}),i(e,t)};r(I,e=>{a(rt)&&e(L)}),v(m);var ee=s(m,2),z=t=>{{let n=e(()=>a(Q)?ie(a(Q).text)?`an exercise`:oe(a(Q).text):``),r=e(()=>a(Q)?ie(a(Q).text)!==null:!1),i=e(()=>a(et).map(e=>({id:e,title:lt(e),tokens:a(F).notes[e]?.tokens??0}))),o=e(()=>j(`/draft/[id]`,{id:y().slice(7)}));he(t,{get title(){return a(n)},get tests(){return a(r)},get picked(){return a(i)},budget:8e3,get notice(){return a($e)},get href(){return a(o)}})}},V=e=>{var t=Cn(),r=E(t,!0);n(()=>p(r,a($e))),i(e,t)};r(ee,e=>{y()?e(z):a($e)&&e(V,1)}),n(e=>{g=b(m,1,`atlas-world svelte-14y1y1z`,null,g,{labels:a(Ot)}),k(m,`data-open`,a(Ce)),T(m,`transform: translate(${a(R).x??``}px, ${a(R).y??``}px); --u: ${(a(q)?.cell??7)*a(R).k}px; --k: ${a(R).k??``}; --fs: ${e??``}px; --lines: ${a(R).k<.9?1:2}`)},[()=>(10.5*Math.min(1.5,Math.max(.8,a(R).k))).toFixed(2)]),i(t,l)};r(jt,e=>{a(L)?e(Mt):a(q)&&a(F)&&e(Nt,1)}),v($),O($,e=>h(U,e),()=>a(U)),n(()=>{At=b($,1,`atlas dots svelte-14y1y1z`,null,At,{lit:!!a(Y)}),T($,`background-position: ${a(R).x??``}px ${a(R).y??``}px`)}),u(`pointerdown`,$,vt),u(`pointermove`,$,yt),u(`pointerup`,$,bt),f(`pointercancel`,$,bt),u(`click`,$,wt),u(`keydown`,$,Tt),u(`contextmenu`,$,e=>{(a(rt)||it!==void 0)&&e.preventDefault()}),i(t,$),D()}l([`pointerdown`,`pointermove`,`pointerup`,`click`,`keydown`,`contextmenu`]);var Dn=w(`<div class="side svelte-1wy8qhs"><button class="icon svelte-1wy8qhs" type="button" aria-label="timeline" title="timeline"><svg viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"><path d="M8 1v14" stroke="currentColor" stroke-width="1.2" fill="none"></path><rect x="5.5" y="2" width="5" height="3.2" fill="currentColor"></rect><path d="M8 6.3l2.3 2.3L8 10.9 5.7 8.6z" fill="currentColor"></path><rect x="5.5" y="12" width="5" height="3" fill="none" stroke="currentColor" stroke-width="1.2"></rect></svg></button> <!></div>`),On=w(`<div class="map svelte-1wy8qhs"><!> <!></div>`);function kn(t,c){S(c,!0);let l=e(()=>F.url.searchParams.get(`pick`)??new URLSearchParams(F.url.hash.split(`?`)[1]??``).get(`pick`)??``),d=_(g((()=>{try{return localStorage.getItem(`isorite.timeline`)===`1`}catch{return!1}})())),f=_([]),p=_(null),y=e=>P.listing.notes.find(t=>t.id===e)?.title??e.split(`/`).at(-1),b=e=>e.who.startsWith(`iso:`)||e.who.startsWith(`agent:`);async function x(){try{h(f,(await P.api.timeline()).filter(e=>!e.note.startsWith(`@draft/`)))}catch{}}m(()=>{if(!a(d))return;x();let e,t=P.on(t=>{t.type===`journal`&&(clearTimeout(e),e=setTimeout(()=>{x()},300))});return()=>{t(),clearTimeout(e)}});function C(e){M(`${N(e.note)}?at=${encodeURIComponent(z(e))}`)}function w(){h(d,!a(d)),h(p,null);try{localStorage.setItem(`isorite.timeline`,a(d)?`1`:`0`)}catch{}}var T=On(),E=o(T);{let t=e(()=>a(l)?`@draft/${a(l)}`:``),n=e(()=>a(p)?{note:a(p).note,who:b(a(p))?`iso`:`you`}:null);En(E,{get pick(){return a(t)},get moment(){return a(n)}})}var O=s(E,2),A=e=>{var t=Dn(),c=o(t),l=s(c,2),m=e=>{B(e,{get moments(){return a(f)},at:null,get pointed(){return a(p)},leftward:!0,name:`This session's timeline`,label:e=>y(e.note),point:e=>h(p,e),pick:e=>C(e)})};r(l,e=>{a(d)&&e(m)}),v(t),n(()=>k(c,`aria-pressed`,a(d))),u(`click`,c,w),i(e,t)};r(O,e=>{a(l)||e(A)}),v(T),i(t,T),D()}l([`click`]);export{kn as component};
@@ -1,2 +0,0 @@
1
- import{$ as e,B as t,C as n,D as r,F as i,G as a,J as o,K as s,M as c,N as l,O as u,Q as d,S as f,T as p,V as m,X as h,Z as g,b as _,c as v,ct as y,d as b,f as x,h as S,it as C,j as ee,k as w,l as T,n as E,o as D,p as O,q as k,rt as A,st as j,tt as M,u as N,x as P}from"../chunks/BD1Dpm2e.js";import{o as F,t as I}from"../chunks/CWYACT2V.js";import"../chunks/xihTtKlq.js";import{n as L,t as R}from"../chunks/gRYnlonl.js";import{t as z}from"../chunks/B-si2ell.js";import"../chunks/DtAOoM-T.js";import"../chunks/CdQZ-ArP.js";import{a as te}from"../chunks/DN3dk6rD.js";import{a as ne,i as re,o as ie,t as ae}from"../chunks/DykrN7z5.js";var oe=w(`<p class="faint col svelte-nq8rms">opening…</p>`),se=w(`<div class="col svelte-nq8rms"><p class="soft">This note for Iso is not here any more. It was kept as a note, or discarded.</p><p><a>all notes</a></p></div>`),ce=w(`<div class="mark svelte-nq8rms"><i class="dia open svelte-nq8rms" aria-hidden="true"></i><span class="label">for Iso · an exercise, not in your study base yet</span></div> <h1 class="serif title svelte-nq8rms"> </h1>`,1),le=w(`<div class="mark svelte-nq8rms"><i class="dia open svelte-nq8rms" aria-hidden="true"></i><span class="label">for Iso · not in your base yet</span></div> <label class="hidden-label" for="title">Title</label> <textarea id="title" class="serif title svelte-nq8rms" rows="1" placeholder="a title for the note" autocomplete="off"></textarea>`,1),ue=w(`<span class="label">what you want from it · if anything</span>`),de=w(`<!> <!>`,1),fe=w(`<div class="prompt svelte-nq8rms"><p> </p> <button class="link svelte-nq8rms" type="button"> </button></div>`),pe=w(`<div class="prose said svelte-nq8rms"></div>`),me=w(`<span class="faint"> </span>`),he=w(`<!> <div class="foot svelte-nq8rms"><i class="dia svelte-nq8rms" aria-hidden="true"></i> <span class="soft"> <!></span> <span class="grow"></span> <button class="link svelte-nq8rms" type="button">[ stop ]</button></div>`,1),ge=w(`<textarea class="revision svelte-nq8rms" aria-label="Iso's text, to edit"></textarea>`),_e=w(`<h2 class="serif extitle svelte-nq8rms"> </h2> <div class="prose said question svelte-nq8rms"></div> <span class="label">your working</span>`,1),ve=w(`<!> <div aria-live="polite"><!></div>`,1),ye=w(`<p class="bad svelte-nq8rms" role="alert"> </p>`),be=w(`<span class="chip lattice svelte-nq8rms"> <button class="x svelte-nq8rms" type="button">×</button></span>`),xe=w(`<span class="faint">no notes yet</span>`),B=w(`<option> </option>`),Se=w(`<select class="field pickone svelte-nq8rms" aria-label="Add a note to test"><option> </option><!></select>`),Ce=w(`<button type="button" role="radio" class="svelte-nq8rms"> </button>`),we=w(`<div class="row svelte-nq8rms"><span class="label">tests</span> <!> <!> <button class="link svelte-nq8rms" type="button">[ + pick on the atlas ]</button></div> <div class="row svelte-nq8rms"><label class="in soft svelte-nq8rms"><span>in</span> <select class="field svelte-nq8rms" aria-label="Folder"><option>the top of the base</option><!></select></label> <label class="in soft svelte-nq8rms"><span>comes after</span> <select class="field svelte-nq8rms" aria-label="Comes after"><option>nothing</option><!></select></label></div> <div class="row svelte-nq8rms"><button class="btn primary tall" type="button"><i class="dia inverse svelte-nq8rms" aria-hidden="true"></i>send to Iso</button> <span class="tiers svelte-nq8rms" role="radiogroup" aria-label="Tier"></span> <span class="grow"></span> <button class="link faint svelte-nq8rms" type="button">[ discard ]</button></div>`,1),Te=w(`<span class="chip lattice svelte-nq8rms"> </span>`),Ee=w(`<span class="faint">no notes yet: type [[ in what you write, or</span>`),De=w(`<div class="row svelte-nq8rms"><span class="label">linked</span> <!> <button class="link svelte-nq8rms" type="button">[ + pick on the atlas ]</button></div> <div class="row svelte-nq8rms"><button class="btn primary tall" type="button"><i class="dia inverse svelte-nq8rms" aria-hidden="true"></i>send to Iso</button> <span class="tiers svelte-nq8rms" role="radiogroup" aria-label="Tier"></span> <span class="grow"></span> <button class="link faint svelte-nq8rms" type="button">[ discard ]</button></div>`,1),Oe=w(`<button class="btn primary tall" type="button">keep the exercise</button> <span class="soft where svelte-nq8rms"> <!></span>`,1),ke=w(`<option></option>`),Ae=w(`<button class="btn primary tall" type="button">keep as a note</button> <label class="in soft svelte-nq8rms"><span>in</span><input class="field svelte-nq8rms" placeholder="the top of the base" list="folders" autocomplete="off" aria-label="Folder"/><span class="faint">/</span></label> <datalist id="folders"></datalist>`,1),je=w(`<button class="btn edit" type="button">done</button>`),Me=w(`<button class="btn edit" type="button">edit</button>`),Ne=w(`<div class="row svelte-nq8rms"><!> <span class="grow"></span> <!> <button class="btn danger tall" type="button">discard</button></div> <div class="row svelte-nq8rms"><span class="label"> </span> <span class="grow"></span> <button class="link svelte-nq8rms" type="button">[ back to what I wrote ]</button></div>`,1),Pe=w(`<div class="col svelte-nq8rms"><!> <!> <!> <!></div> <div class="deck svelte-nq8rms"><!></div>`,1),Fe=w(`<article class="draft svelte-nq8rms"><!></article>`);function V(c,u){C(u,!0);let d=new re(u.id),f=new ie(d),w=g(``),D=g(!1),z=g(``),V=g(!1),H=e(()=>f.proposals.at(-1)),U=e(()=>i(H)?.text??``),W=e(()=>i(H)&&f.editing?.id===i(H).id?f.editing:null),G=e(()=>!i(H)&&!f.asking),Ie=e(()=>{let e=[...d.body.matchAll(/\]\(\/([^)\s#]+)\.md/g)].map(e=>decodeURIComponent(e[1]));return[...new Set(e)].flatMap(e=>{let t=R.listing.notes.find(t=>t.id===e);return t?[t]:[]})}),Le=e(()=>f.asking?.steps.at(-1)?.said??``),K=e(()=>d.meta?.type===`Exercise`),q=e(()=>i(K)&&d.meta?te(d.meta):[]),J=e(()=>i(K)?String(d.meta?.folder??``):``),Y=e(()=>i(K)?String(d.meta?.after??``):``),X=e=>R.listing.notes.find(t=>t.id===e)?.title??e.split(`/`).at(-1),Re=e(()=>R.listing.notes.filter(e=>e.dir===i(J)&&!i(q).includes(e.id)&&!e.id.startsWith(`@`))),Z=g(null);m(()=>{i(K)&&!i(Z)&&R.api.study().then(e=>h(Z,e),()=>void 0)});let ze=e(()=>i(K)?`An exercise on ${i(q).map(X).join(`, `)||`…`}`:``),Be=e(()=>{let e=/^\s*#[ \t]+(.+)\n?/.exec(i(U));return e?{title:e[1].trim(),question:i(U).slice(e[0].length).trim()}:{title:``,question:i(U).trim()}}),Ve=e=>d.setMeta({tests:e});E(()=>{R.open=u.id,d.open().then(()=>f.open());let e=()=>{d.save()};return addEventListener(`pagehide`,e),()=>{removeEventListener(`pagehide`,e),f.close(),d.close(),R.here=R.open=``,R.studying=!1,R.saving=null}}),m(()=>{R.here=d.loaded===`ready`?i(K)?`an exercise`:d.fields.title||`a new note`:``,R.studying=i(K),R.saving=d.loaded===`ready`&&i(G)?{text:d.saving===`saved`?`saved, outside your base`:d.saving===`failed`?`not saved: ${d.message}`:`saving`,bad:d.saving===`failed`}:null});async function He(){if(i(H)){h(z,``),h(V,!0);try{await d.save(),i(W)&&await f.done(i(H));let e=i(K)?await R.api.keepExercise(u.id,i(H).id):await R.api.keepDraft(u.id,i(H).id,i(w));await R.refresh(),await I(L(e.id))}catch(e){h(z,e.message,!0)}finally{h(V,!1)}}}async function Ue(){await d.save(),await I(`${F(`/atlas`)}?pick=${encodeURIComponent(u.id.slice(7))}`)}async function We(){if(i(K)){await f.send(`exercise`);return}let e=await f.send();e&&(R.watching=e,await I(F(`/atlas`)))}async function Q(){h(V,!0);try{await R.api.discardDraft(u.id),await I(F(i(K)?`/study`:`/notes`))}catch(e){h(z,e.message,!0),h(V,!1)}}var $=Fe(),Ge=a($),Ke=e=>{var t=oe();r(e,t)},qe=e=>{var n=se(),i=o(a(n)),s=k(i);y(n),t(e=>N(s,`href`,e),[()=>F(`/notes`)]),r(e,n)},Je=c=>{var u=Pe(),m=s(u),g=a(m),C=e=>{var n=ce(),a=o(s(n),2),c=k(a,!0);t(()=>p(c,i(ze))),r(e,n)},E=e=>{var n=le(),a=o(s(n),4);M(a),t(()=>{b(a,d.fields.title),a.readOnly=!i(G)}),l(`input`,a,e=>d.setFields({title:e.currentTarget.value.replace(/\s*\n\s*/g,` `)})),l(`keydown`,a,e=>{e.key===`Enter`&&e.preventDefault()}),r(e,n)};n(g,e=>{i(K)?e(C):e(E,-1)});var A=o(g,2),F=t=>{var a=de(),c=s(a),l=e=>{var t=ue();r(e,t)};n(c,e=>{i(K)&&e(l)});var u=o(c,2);{let t=e(()=>i(K)?`Nothing is needed here. Or say what the exercise should ask: a calculation, a proof, your own words, how hard.`:void 0);ae(u,{get note(){return d},source:!1,get placeholder(){return i(t)}})}r(t,a)},I=c=>{var u=ve(),m=s(u),g=e=>{var n=fe(),s=a(n);let c;var u=k(s,!0),f=o(s,2),m=k(f,!0);y(n),t(e=>{c=S(s,1,`serif soft svelte-nq8rms`,null,c,{fold:!i(D)}),p(u,e),p(m,i(D)?`[ fold ]`:`[ show all ]`)},[()=>d.body.trim()]),l(`click`,f,()=>h(D,!i(D))),r(e,n)},b=e(()=>d.body.trim());n(m,e=>{i(b)&&e(g)});var x=o(m,2);let C;var ee=a(x),w=e=>{var c=he(),u=s(c),d=e=>{var t=pe();_(t,()=>ne(f.asking.text),!0),y(t),r(e,t)};n(u,e=>{f.asking.text&&e(d)});var m=o(u,2),h=o(a(m),2),g=a(h,!0),v=o(g),b=e=>{var n=me(),a=k(n);t(()=>p(a,`· ${i(Le)??``}`)),r(e,n)};n(v,e=>{i(Le)&&e(b)}),y(h);var x=o(h,4);y(m),t(()=>p(g,f.asking.text?`Iso is writing`:`Iso is thinking`)),l(`click`,x,()=>f.halt()),r(e,c)},T=e=>{var n=ge();M(n),t(e=>N(n,`rows`,e),[()=>Math.max(6,i(W).text.split(`
2
- `).length+1)]),v(n,()=>i(W).text,e=>i(W).text=e),r(e,n)},E=e=>{var n=_e(),a=s(n),c=k(a,!0),l=o(a,2);_(l,()=>ne(i(Be).question),!0),y(l),j(2),t(()=>p(c,i(Be).title||`an exercise`)),r(e,n)},O=e=>{var t=pe();_(t,()=>ne(i(U)),!0),y(t),r(e,t)};n(ee,e=>{f.asking?e(w):i(W)?e(T,1):i(K)?e(E,2):e(O,-1)}),y(x),t(e=>C=S(x,1,`between svelte-nq8rms`,null,C,{working:e}),[()=>!!f.asking]),r(c,u)};n(A,e=>{i(G)?e(F):e(I,-1)});var L=o(A,2),te=e=>{var n=ye(),i=k(n,!0);t(()=>p(i,f.failed.message)),r(e,n)};n(L,e=>{f.failed&&e(te)});var re=o(L,2),ie=e=>{var n=ye(),a=k(n,!0);t(()=>p(a,i(z))),r(e,n)};n(re,e=>{i(z)&&e(ie)}),y(m);var oe=o(m,2),se=a(oe),Fe=e=>{var c=we(),u=s(c),m=o(a(u),2);P(m,16,()=>i(q),e=>e,(e,n)=>{var s=be(),c=a(s,!0),u=o(c);y(s),t((e,t)=>{p(c,e),N(u,`aria-label`,t)},[()=>X(n),()=>`Not ${X(n)}`]),l(`click`,u,()=>Ve(i(q).filter(e=>e!==n))),r(e,s)},e=>{var t=xe();r(e,t)});var h=o(m,2),g=e=>{var n=Se(),s=a(n),c=k(s);s.value=s.__value=``;var u=o(s);P(u,17,()=>i(Re),e=>e.id,(e,n)=>{var a=B(),o=k(a,!0),s={};t(()=>{p(o,i(n).title),s!==(s=i(n).id)&&(a.value=(a.__value=s)??``)}),r(e,a)}),y(n),n.value=n.__value=``,t(()=>p(c,`+ a note in ${(i(J)||`the top of the base`)??``}`)),l(`change`,n,e=>{let t=e.currentTarget.value;e.currentTarget.value=``,t&&Ve([...i(q),t])}),r(e,n)};n(h,e=>{i(Re).length&&e(g)});var _=o(h,2);y(u);var v=o(u,2),b=a(v),S=o(a(b),2),C=a(S);C.value=C.__value=``;var ee=o(C);P(ee,16,()=>R.listing.dirs,e=>e,(e,n)=>{var i=B(),a=k(i,!0),o={};t(()=>{p(a,n),o!==(o=n)&&(i.value=(i.__value=o)??``)}),r(e,i)}),y(S);var w;x(S),y(b);var T=o(b,2),E=o(a(T),2),D=a(E);D.value=D.__value=``;var A=o(D);P(A,17,()=>i(Z)?.exercises??[],e=>e.id,(e,n)=>{var a=B(),o=k(a,!0),s={};t(e=>{p(o,i(n).title),s!==(s=e)&&(a.value=(a.__value=s)??``)},[()=>i(n).id.slice(7)]),r(e,a)}),y(E);var j;x(E),y(T),y(v);var M=o(v,2),F=a(M),I=o(F,2);P(I,20,()=>[`low`,`mid`,`max`],e=>e,(e,n)=>{var i=Ce(),a=k(i,!0);t(()=>{N(i,`aria-checked`,f.tier===n),p(a,n)}),l(`click`,i,()=>f.setTier(n)),r(e,i)}),y(I);var L=o(I,4);y(M),t(()=>{w!==(w=i(J))&&(S.value=(S.__value=w)??``,O(S,w)),j!==(j=i(Y))&&(E.value=(E.__value=j)??``,O(E,j)),F.disabled=!i(q).length,L.disabled=i(V)}),l(`click`,_,Ue),l(`change`,S,e=>d.setMeta({folder:e.currentTarget.value})),l(`change`,E,e=>d.setMeta({after:e.currentTarget.value||null})),l(`click`,F,We),l(`click`,L,Q),r(e,c)},$=e=>{var n=De(),c=s(n),u=o(a(c),2);P(u,17,()=>i(Ie),e=>e.id,(e,n)=>{var a=Te(),o=k(a,!0);t(()=>p(o,i(n).title)),r(e,a)},e=>{var t=Ee();r(e,t)});var m=o(u,2);y(c);var h=o(c,2),g=a(h),_=o(g,2);P(_,20,()=>[`low`,`mid`,`max`],e=>e,(e,n)=>{var i=Ce(),a=k(i,!0);t(()=>{N(i,`aria-checked`,f.tier===n),p(a,n)}),l(`click`,i,()=>f.setTier(n)),r(e,i)}),y(_);var v=o(_,4);y(h),t(e=>{g.disabled=e,v.disabled=i(V)},[()=>!d.body.trim()]),l(`click`,m,Ue),l(`click`,g,We),l(`click`,v,Q),r(e,n)},Ge=e=>{var c=Ne(),u=s(c),d=a(u),m=e=>{var c=Oe(),u=s(c),d=o(u,2),f=a(d),m=o(f),h=e=>{var n=ee();t(e=>p(n,`, after ${e??``}`),[()=>i(Z)?.exercises.find(e=>e.id===`@study/${i(Y)}`)?.title??i(Y)]),r(e,n)};n(m,e=>{i(Y)&&e(h)}),y(d),t(()=>{u.disabled=i(V),p(f,`in ${(i(J)||`the top of the base`)??``}`)}),l(`click`,u,He),r(e,c)},g=e=>{var n=Ae(),c=s(n),u=o(c,2),d=o(a(u));T(d),j(),y(u);var f=o(u,2);P(f,20,()=>R.listing.dirs,e=>e,(e,n)=>{var i=ke(),a={};t(()=>{a!==(a=n)&&(i.value=(i.__value=a)??``)}),r(e,i)}),y(f),t(()=>c.disabled=i(V)),l(`click`,c,He),v(d,()=>i(w),e=>h(w,e)),r(e,n)};n(d,e=>{i(K)?e(m):e(g,-1)});var _=o(d,4),b=e=>{var t=je();l(`click`,t,()=>f.done(i(H))),r(e,t)},x=e=>{var t=Me();l(`click`,t,()=>f.edit(i(H))),r(e,t)};n(_,e=>{i(W)?e(b):e(x,-1)});var S=o(_,2);y(u);var C=o(u,2),E=a(C),D=k(E),O=o(E,4);y(C),t(e=>{S.disabled=i(V),p(D,`${e??``}${i(H).notice?` · ${i(H).notice}`:``}`),O.disabled=i(V)},[()=>i(H).cost?`${i(H).cost.tier} · $${i(H).cost.usd.toFixed(3)}`:``]),l(`click`,S,Q),l(`click`,O,()=>f.discard(i(H))),r(e,c)};n(se,e=>{i(G)&&i(K)?e(Fe):i(G)?e($,1):i(H)&&e(Ge,2)}),y(oe),r(c,u)};n(Ge,e=>{d.loaded===`loading`?e(Ke):d.loaded===`ready`?e(Je,-1):e(qe,1)}),y($),r(c,$),A()}c([`input`,`keydown`,`click`,`change`]);function H(e,t){C(t,!1),D();var n=u(),a=s(n);f(a,()=>z.params.id,e=>{{let t=d(()=>`@draft/${z.params.id??``}`);V(e,{get id(){return i(t)}})}}),r(e,n),A()}export{H as component};
@@ -1,4 +0,0 @@
1
- import{$ as e,A as t,B as n,C as r,D as i,F as a,G as o,J as s,K as c,M as l,N as u,O as d,P as f,Q as p,S as m,T as h,V as g,W as _,X as v,Y as y,Z as b,ct as x,d as S,h as C,it as w,j as ee,k as T,l as E,n as D,o as O,q as k,rt as A,s as te,st as ne,tt as re,u as j,x as M}from"../chunks/BD1Dpm2e.js";import{o as ie,t as ae}from"../chunks/CWYACT2V.js";import"../chunks/xihTtKlq.js";import{n as oe,t as N}from"../chunks/gRYnlonl.js";import{t as P}from"../chunks/B-si2ell.js";import"../chunks/DtAOoM-T.js";import"../chunks/CdQZ-ArP.js";import{_ as se,d as F,m as ce,n as le,o as I,p as ue,r as de,t as L,u as R}from"../chunks/DN3dk6rD.js";import{i as z,n as fe,r as pe,t as me}from"../chunks/C0fpmehI.js";import{i as he,n as ge,o as _e,r as B,t as ve}from"../chunks/DykrN7z5.js";var ye=e=>e<=0?0:e<=2?1:e<=4?2:3;function V(e,t){let n=t.length?6:0,r=!1;for(let i of t){let t=e.get(i);n=Math.min(n,t?.squares??0),r||=!!t?.due}return{squares:n,step:ye(n),due:r}}var H=e=>`isorite.answer.${e}`;function U(e){try{let t=JSON.parse(localStorage.getItem(H(e))??`null`);return t&&typeof t.text==`string`&&typeof t.nth==`number`?t:null}catch{return null}}function W(e,t){try{t?localStorage.setItem(H(e),JSON.stringify(t)):localStorage.removeItem(H(e))}catch{}}function be(e){let t=e>0?`+`:e<0?`−`:``,n=Math.abs(e);return n===0?`0`:t+(n===.5?`½`:n===1?`1`:String(n))}var xe=class{note;iso;stop=null;#e=b(null);get answer(){return a(this.#e)}set answer(e){v(this.#e,e)}#t=b(null);get study(){return a(this.#t)}set study(e){v(this.#t,e)}#n=b(null);get marking(){return a(this.#n)}set marking(e){v(this.#n,e,!0)}#r=b(``);get failed(){return a(this.#r)}set failed(e){v(this.#r,e,!0)}#i=b(0);get flash(){return a(this.#i)}set flash(e){v(this.#i,e,!0)}constructor(e,t){this.note=e,this.iso=t,this.answer=U(e.id)}#a=e(()=>L(this.note.text));get ex(){return a(this.#a)}set ex(e){v(this.#a,e)}#o=e(()=>this.note.meta?.type===`Exercise`);get is(){return a(this.#o)}set is(e){v(this.#o,e)}#s=e(()=>{if(!this.answer)return null;let e=I(this.note.text,this.answer);return e&&e.from>=this.ex.from?e:null});get answerAt(){return a(this.#s)}set answerAt(e){v(this.#s,e)}#c=e(()=>{let e=this.iso.cursor;if(!e||e.to<=e.from||e.from<this.ex.from)return null;let{from:t,to:n}=e,r=this.note.text;for(;t<n&&/\s/.test(r[t]);)t++;for(;n>t&&/\s/.test(r[n-1]);)n--;return n>t?{from:t,to:n}:null});get selection(){return a(this.#c)}set selection(e){v(this.#c,e)}#l=e(()=>this.iso.entries.filter(e=>e.kind===`marks`).at(-1)??null);get last(){return a(this.#l)}set last(e){v(this.#l,e)}#u=e(()=>this.last?le(this.note.text,this.last.marks).filter(e=>e.from>=this.ex.from):[]);get marks(){return a(this.#u)}set marks(e){v(this.#u,e)}#d=e(()=>({right:this.marks.filter(e=>e.mark===`right`).length,wrong:this.marks.filter(e=>e.mark===`wrong`).length}));get counts(){return a(this.#d)}set counts(e){v(this.#d,e)}#f=e(()=>{let e=new Map;for(let[t,n]of Object.entries(this.study?.notes??{}))e.set(t,{...n,lapsed:!1,last:null,evidence:[]});return V(e,this.ex.tests)});get squares(){return a(this.#f)}set squares(e){v(this.#f,e)}#p=e(()=>{let e=this.last;return e?this.ex.tests.flatMap(t=>{let n=this.study?.notes[t]?.evidence.find(t=>t.marks===e.id);return n?[{note:t,by:n.by}]:[]}):[]});get moves(){return a(this.#p)}set moves(e){v(this.#p,e)}async open(){this.stop=N.on(e=>{e.type===`record`&&this.reread(),!this.marking||!(`request`in e)||this.marking&&e.request!==this.marking?e.type===`iso-start`&&this.marking===``&&e.note===this.note.id&&(this.marking=e.request):e.type===`iso-done`?(this.marking=null,this.reread().then(()=>{this.last?.result===`right`&&this.flash++})):e.type===`iso-failed`?(this.marking=null,this.failed=e.message):e.type===`iso-stopped`&&(this.marking=null)}),await this.reread()}close(){this.stop?.()}async reread(){try{this.study=await N.api.study()}catch{}}markAnswer(){let e=this.selection;e&&(this.answer=F(this.note.text,e.from,e.to),W(this.note.id,this.answer))}clearAnswer(){this.answer=null,W(this.note.id,null)}async send(){if(this.marking===null&&this.answerAt){this.failed=``,this.marking=``;try{await this.note.save();let e=this.answerAt;if(!e)throw Error(`the answer you marked is no longer in the working`);let t=F(this.note.text,e.from,e.to),{request:n}=await N.api.ask({note:this.note.id,form:`mark`,answer:t,tier:this.iso.tier});this.marking===``&&(this.marking=n)}catch(e){this.marking=null,this.failed=e.message}}}async windBack(){try{await N.api.windBack(this.note.id),await this.reread()}catch(e){this.failed=e.message}}},G=T(`<option></option>`),K=T(`<div class="details svelte-1khbtcu"><label class="svelte-1khbtcu"><span>type</span><input list="types" autocomplete="off" class="svelte-1khbtcu"/></label> <label class="wide svelte-1khbtcu"><span>tags</span><input placeholder="none" autocomplete="off" class="svelte-1khbtcu"/></label> <label class="full svelte-1khbtcu"><span>description</span><input placeholder="one line on what this note says" autocomplete="off" class="svelte-1khbtcu"/></label> <datalist id="types"></datalist></div>`);function Se(t,r){w(r,!0);let c=e(()=>[...new Set(N.listing.notes.map(e=>e.type).filter(Boolean))].sort());var l=K(),d=o(l),f=s(o(d));E(f),x(d);var p=s(d,2),m=s(o(p));E(m),x(p);var h=s(p,2),g=s(o(h));E(g),x(h);var _=s(h,2);M(_,20,()=>a(c),e=>e,(e,t)=>{var r=G(),a={};n(()=>{a!==(a=t)&&(r.value=(r.__value=a)??``)}),i(e,r)}),x(_),x(l),n(e=>{S(f,r.note.fields.type),j(f,`size`,e),S(m,r.note.fields.tags),S(g,r.note.fields.description)},[()=>Math.max(7,r.note.fields.type.length)]),u(`input`,f,e=>r.note.setFields({type:e.currentTarget.value})),u(`change`,m,e=>r.note.setFields({tags:e.currentTarget.value})),u(`input`,g,e=>r.note.setFields({description:e.currentTarget.value})),i(t,l),A()}l([`input`,`change`]);var q=T(`<h1 class="serif title svelte-130pv1o"> </h1>`),J=T(`<p class="asked svelte-130pv1o"><i class="dia svelte-130pv1o" aria-hidden="true"></i><span> </span></p>`),Y=T(`<div class="offered svelte-130pv1o" aria-label="What Iso offered"><p class="serif svelte-130pv1o"> </p></div>`),X=T(`<div class="version svelte-130pv1o"><!> <!> <div class="text svelte-130pv1o"></div> <!></div>`);function Ce(t,c){w(c,!0);let l=e(()=>{try{let[e,t,n]=se(c.text);return{title:/^title:\s*(.*)$/m.exec(t??``)?.[1]?.trim().replace(/^["']|["']$/g,``)??``,body:n,lines:e.split(`
2
- `).length-1}}catch{return{title:``,body:c.text,lines:0}}}),u,d=b(void 0);D(()=>(v(d,ge(u,{doc:a(l).body,onChange:()=>void 0,onSave:()=>void 0,label:`The note as it was`,notes:()=>[],readOnly:!0})),()=>a(d)?.destroy())),g(()=>{let e=c.touched,t=a(l).lines;a(d)?.dispatch({effects:B.of(e?{who:e.who,lines:e.lines.map(e=>e-t)}:null)})});var f=X(),p=o(f),m=e=>{var t=q(),r=k(t,!0);n(()=>h(r,a(l).title)),i(e,t)};r(p,e=>{a(l).title&&a(l).title!==c.title&&e(m)});var _=s(p,2),y=e=>{var t=J(),r=s(o(t)),a=k(r,!0);x(t),n(()=>h(a,c.asked)),i(e,t)};r(_,e=>{c.asked!==void 0&&e(y)});var S=s(_,2);te(S,e=>u=e,()=>u);var C=s(S,2),ee=e=>{var t=Y(),r=o(t),a=k(r,!0);x(t),n(()=>h(a,c.offered)),i(e,t)};r(C,e=>{c.offered!==void 0&&e(ee)}),x(f),i(t,f),A()}var we=e=>{var t=Z();i(e,t)},Z=t(`<svg viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"><path d="M8 1v14" stroke="currentColor" stroke-width="1.2" fill="none"></path><rect x="5.5" y="2" width="5" height="3.2" fill="currentColor"></rect><path d="M8 6.3l2.3 2.3L8 10.9 5.7 8.6z" fill="currentColor"></path><rect x="5.5" y="12" width="5" height="3" fill="none" stroke="currentColor" stroke-width="1.2"></rect></svg>`),Te=T(`<p class="faint">opening…</p>`),Ee=T(`<p class="soft">There is no note at <span class="faint"> </span>.</p> <p><a>all notes</a></p>`,1),De=T(`<p class="bad svelte-18ltlst"> </p>`),Oe=T(`<button class="btn" type="button">take theirs</button>`),ke=T(`<div class="frame choice svelte-18ltlst" role="alert"><span class="frame-title">changed elsewhere</span> <p> </p> <div class="row svelte-18ltlst"><button class="btn primary" type="button">keep mine</button> <!></div> <p class="faint">Whichever you keep, the other stays in the note's journal.</p></div>`),Ae=T(`<i></i>`),je=T(`<span class="label">due</span>`),Me=T(`<div class="evidence label svelte-18ltlst"><span class="by svelte-18ltlst"> </span><span> </span><span class="grow"></span><span> </span></div>`),Ne=T(`<div class="evidence label svelte-18ltlst">nothing yet</div>`),Pe=T(`<div class="reading svelte-18ltlst"><span class="soft"> </span> <span class="squares svelte-18ltlst"></span> <!></div> <!>`,1),Fe=T(`<div class="frame why svelte-18ltlst" role="region" aria-label="Iso's read of you"><span class="frame-title">Iso's read of you</span> <!> <div class="row svelte-18ltlst"><span class="label">rated too highly? one square down for each note it tests</span><span class="grow"></span><button class="link svelte-18ltlst" type="button">[ wind back ]</button></div></div>`),Ie=T(`<a> </a>`),Le=T(`<span class="faint">nothing: name a note in its tests</span>`),Re=T(`<div class="tests svelte-18ltlst"><span class="label"> </span> <!> <span class="grow"></span> <div class="tools svelte-18ltlst"><button class="icon svelte-18ltlst" type="button" aria-label="timeline" title="timeline"><!></button> <button class="btn quiet svelte-18ltlst" type="button">details</button> <button class="btn quiet svelte-18ltlst" type="button">source</button></div></div>`),ze=T(`<label class="hidden-label" for="title">Title</label> <textarea id="title" class="serif title svelte-18ltlst" rows="1" autocomplete="off"></textarea>`,1),Be=T(`<span class="grow faint"> </span>`),Ve=T(`<button class="icon svelte-18ltlst" type="button" aria-label="timeline" title="timeline"><!></button>`),He=T(`<button class="btn quiet svelte-18ltlst" type="button">details</button>`),Ue=T(`<span class="bad svelte-18ltlst" role="alert"> </span>`),We=T(`<div class="margin svelte-18ltlst" role="group" aria-label="Iso's read of you"><span class="squares svelte-18ltlst"></span> <!> <span class="label"> </span> <button class="link svelte-18ltlst" type="button">[ + an exercise ]</button> <!></div>`),Ge=T(`<div class="head svelte-18ltlst"><!> <div class="side svelte-18ltlst"><div class="tools svelte-18ltlst"><!> <!> <button class="btn quiet svelte-18ltlst" type="button">source</button></div> <!></div></div>`),Ke=T(`<div class="tl-col svelte-18ltlst"><!></div>`),qe=T(`<div class="atbar svelte-18ltlst" role="status"><span class="label"> </span> <span class="grow"></span> <!> <button class="icon svelte-18ltlst" type="button" aria-label="restore to here" title="restore to here"><svg viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"><path d="M3.2 9.5A5 5 0 1 0 4.6 4.3" stroke="currentColor" stroke-width="1.3" fill="none"></path><path d="M3 1.8v3.4h3.4" stroke="currentColor" stroke-width="1.3" fill="none"></path></svg></button> <button class="icon svelte-18ltlst" type="button" aria-label="back to now" title="back to now"><svg viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"><path d="M2 8h9M8 4.8 11.2 8 8 11.2" stroke="currentColor" stroke-width="1.3" fill="none"></path><path d="M13.5 3v10" stroke="currentColor" stroke-width="1.3"></path></svg></button></div> <!>`,1),Je=T(`<button class="btn" type="button">mark as answer</button>`),Ye=T(`<span class="label">Iso is marking</span>`),Xe=T(`<span class="label">select a part of your working, then mark it as your answer</span>`),Ze=T(`<span class="label moves svelte-18ltlst">moves: <!></span>`),Qe=T(`<span class="label"> </span>`),$e=T(`<div class="foot svelte-18ltlst"><!> <button class="btn primary tall svelte-18ltlst" type="button"> </button> <!> <span class="grow"></span> <!></div>`),et=T(`<div class="changes svelte-18ltlst" role="status"><i class="dia svelte-18ltlst" aria-hidden="true"></i> <span class="soft"> </span> <span class="grow"></span> <button class="link svelte-18ltlst" type="button">[ keep all ]</button> <button class="link svelte-18ltlst" type="button">[ remove all ]</button></div>`),tt=T(`<div class="seed svelte-18ltlst"><button class="field svelte-18ltlst" type="button"><span class="faint">›</span><span class="faint">ask Iso here</span></button></div>`),nt=T(`<!> <!> <!> <!> <!> <!> <div class="live"><!></div> <!> <!> <!>`,1),rt=T(`<article><!></article>`);function it(t,l){w(l,!0);let d=new he(l.id),p=new _e(d),T=de(l.id)?new xe(d,p):null,E=e(()=>T?.is?T:null),O=b(!1),te={written:`written response`},P=e=>N.listing.notes.find(t=>t.id===e)?.title??e.split(`/`).at(-1),se=!l.id.startsWith(`@`)&&!!N.session?.study,F=b(null),le=b(``),I=e(()=>a(F)?.notes[l.id]),L=e(()=>a(F)?.exercises.filter(e=>e.tests.includes(l.id)).length??0),ge=[`not reached`,`opened`,`worked through`,`understood`];async function B(){try{v(F,await N.api.study())}catch{}}async function ye(){try{let e=await N.api.createExerciseDraft(N.listing.notes.find(e=>e.id===l.id)?.dir??l.id.split(`/`).slice(0,-1).join(`/`),[l.id]);await ae(ie(`/draft/[id]`,{id:e.id.slice(7)}))}catch(e){v(le,e.message,!0)}}let V=e=>{try{return localStorage.getItem(e)===`1`}catch{return!1}},H=(e,t)=>{try{localStorage.setItem(e,t?`1`:`0`)}catch{}},U=b(y(V(`isorite.details`))),W=b(!1),G=e(()=>a(W)||d.meta===null),K=b(y(V(`isorite.timeline`))),q=b(null),J=b(null),Y=b(!1),X=b(``),Z=e(()=>R(p.entries)),it=e=>e.who.startsWith(`iso:`)||e.who.startsWith(`agent:`),at=e=>e.flatMap(e=>Array.from({length:e.to-e.from},(t,n)=>e.from+n)),ot=e(()=>{if(!a(K)||a(J)||a(G))return null;let e=a(q)??a(Z).findLast(e=>it(e)&&e.what===`kept`);if(!e)return null;let t=at(ce(p.entries,e.ids).runs);return t.length?{who:it(e)?`iso`:`you`,lines:t}:null}),Q=e(()=>{if(!a(J))return null;let e=z(a(J)),t=ue(p.entries,e);if(t===null)return null;let n=p.entries.filter(t=>t.id<=e),r=p.entries.find(e=>e.id===a(J).ids[0]),i=(a(J).what===`offered`||a(J).what===`discarded`)&&r?.kind===`proposal`?r.form===`insert`?r.text:r.regions.map(e=>e.new).join(`
3
-
4
- `):void 0;return{text:t,touched:{who:it(a(J))?`iso`:`you`,lines:at(ce(n,a(J).ids).runs)},asked:a(J).asked,offered:i}}),st=new URLSearchParams(location.hash.split(`?`)[1]??``).get(`at`);g(()=>{if(!st)return;let e=a(Z).find(e=>e.ids.includes(st));e&&(st=null,v(K,!0),v(J,e))});function ct(){v(K,!a(K)),H(`isorite.timeline`,a(K)),a(K)||(v(J,null),v(q,null))}function lt(e){v(X,``),v(J,a(J)===e?null:e)}function ut(e){if(!a(J))return;let t=a(Z).indexOf(a(J))+e;t>=0&&t<a(Z).length&&v(J,a(Z)[t])}async function dt(){if(a(J)){v(Y,!0),v(X,``);try{await d.restore(z(a(J))),v(J,null)}catch(e){v(X,e.message,!0)}finally{v(Y,!1)}}}function ft(e){!a(J)||e.altKey||e.ctrlKey||e.metaKey||e.target instanceof HTMLElement&&(e.target.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(e.target.tagName))||(e.key===`ArrowLeft`||e.key===`ArrowUp`?(e.preventDefault(),ut(-1)):e.key===`ArrowRight`||e.key===`ArrowDown`?(e.preventDefault(),ut(1)):e.key===`Escape`&&(e.preventDefault(),v(J,null)))}D(()=>{N.open=l.id,d.open().then(()=>p.open()),T?.open();let e=se?N.on(e=>{(e.type===`record`||e.type===`note-changed`&&e.id.startsWith(`@study/`))&&B()}):null;se&&B();let t=()=>{d.save()};return addEventListener(`pagehide`,t),document.addEventListener(`visibilitychange`,t),()=>{removeEventListener(`pagehide`,t),e?.(),document.removeEventListener(`visibilitychange`,t),p.close(),T?.close(),N.exercise=null,N.hint=``,d.close(),N.here=``,N.open=``,N.saving=null}}),g(()=>{N.exercise=a(E)?{kind:te[a(E).ex.kind]??a(E).ex.kind,squares:a(E).squares.squares,due:a(E).squares.due,flash:a(E).flash,windBack:()=>void a(E).windBack(),why:()=>v(O,!a(O)),next:a(E).ex.next?`@study/${a(E).ex.next}`:null}:null,N.hint=a(E)?`write as much as you like · only what you mark is your answer`:``});let pt={saved:`saved`,unsaved:`not saved yet`,saving:`saving`,conflict:`changed elsewhere: choose below`,failed:`not saved`};g(()=>{N.here=d.loaded===`ready`?d.fields.title||l.id.split(`/`).at(-1):``,N.saving=d.loaded===`ready`?{text:d.saving===`failed`?`not saved: ${d.message}`:pt[d.saving],bad:d.saving===`failed`||d.saving===`conflict`}:null});var $=rt();f(`keydown`,_,ft);let mt;var ht=o($),gt=e=>{var t=Te();i(e,t)},_t=e=>{var t=Ee(),r=c(t),a=s(o(r)),u=k(a,!0);ne(),x(r);var d=s(r,2),f=k(d);n(e=>{h(u,l.id),j(f,`href`,e)},[()=>ie(`/notes`)]),i(e,t)},vt=e=>{var t=De(),r=k(t,!0);n(()=>h(r,d.message)),i(e,t)},yt=t=>{var f=nt(),g=c(f),_=e=>{var t=ke(),a=s(o(t),2),c=k(a,!0),l=s(a,2),f=o(l),p=s(f,2),m=e=>{var t=Oe();u(`click`,t,()=>d.keepTheirs()),i(e,t)};r(p,e=>{d.theirs&&e(m)}),x(l),ne(2),x(t),n(()=>h(c,d.theirs===null?`This note was deleted or moved while you were writing.`:`This note was changed somewhere else while you were writing. Nothing here has been saved over it.`)),u(`click`,f,()=>d.keepMine()),i(e,t)};r(g,e=>{d.saving===`conflict`&&e(_)});var y=s(g,2),b=t=>{var l=Fe(),d=s(o(l),2);M(d,16,()=>a(E).ex.tests,e=>e,(t,l)=>{let u=e(()=>a(E).study?.notes[l]);var d=Pe(),f=c(d),p=o(f),m=k(p,!0),g=s(p,2);M(g,20,()=>[0,1,2,3,4,5],e=>e,(e,t)=>{var r=Ae();let o;n(()=>o=C(r,1,`pip`,null,o,{lv:t<(a(u)?.squares??0)})),i(e,r)}),x(g);var _=s(g,2),v=e=>{var t=je();i(e,t)};r(_,e=>{a(u)?.due&&e(v)}),x(f);var y=s(f,2);M(y,17,()=>[...a(u)?.evidence??[]].reverse(),e=>e.id,(e,t)=>{var r=Me(),c=o(r),l=k(c,!0),u=s(c),d=k(u,!0),f=s(u,2),p=k(f,!0);x(r),n((e,n)=>{h(l,e),h(d,a(t).event===`wind-back`?`you wound it back`:a(t).why||(a(t).result??``)),h(p,n)},[()=>be(a(t).by),()=>a(t).at.slice(0,10)]),i(e,r)},e=>{var t=Ne();i(e,t)}),n(e=>{h(m,e),j(g,`aria-label`,`${a(u)?.squares??0??``} of 6`)},[()=>P(l)]),i(t,d)});var f=s(d,2),p=s(o(f),2);x(f),x(l),u(`click`,p,()=>a(E).windBack()),i(t,l)};r(y,e=>{a(E)&&a(O)&&e(b)});var w=s(y,2),T=e=>{var t=Re(),r=o(t),c=k(r),l=s(r,2);M(l,16,()=>a(E).ex.tests,e=>e,(e,t)=>{var r=Ie(),a=k(r,!0);n((e,t)=>{j(r,`href`,e),h(a,t)},[()=>oe(t),()=>P(t)]),i(e,r)},e=>{var t=Le();i(e,t)});var f=s(l,4),p=o(f);we(o(p)),x(p);var m=s(p,2),g=s(m,2);x(f),x(t),n(()=>{h(c,`${te[a(E).ex.kind]??a(E).ex.kind??``} · tests`),j(p,`aria-pressed`,a(K)),j(m,`aria-pressed`,a(U)),j(g,`aria-pressed`,a(G)),g.disabled=d.meta===null}),u(`click`,p,ct),u(`click`,m,()=>{v(U,!a(U)),H(`isorite.details`,a(U))}),u(`click`,g,()=>v(W,!a(W))),i(e,t)},D=e=>{var t=Ge(),f=o(t),p=e=>{var t=ze(),r=s(c(t),2);re(r),n(e=>{S(r,d.fields.title),j(r,`placeholder`,e)},[()=>l.id.split(`/`).at(-1)]),u(`input`,r,e=>d.setFields({title:e.currentTarget.value.replace(/\s*\n\s*/g,` `)})),u(`keydown`,r,e=>{e.key===`Enter`&&e.preventDefault()}),i(e,t)},m=e=>{var t=Be(),r=k(t);n(()=>h(r,`${l.id??``}.md${d.meta===null?`: the frontmatter cannot be read, so the file is shown as it is`:``}`)),i(e,t)};r(f,e=>{a(G)?e(m,-1):e(p)});var g=s(f,2),_=o(g),y=o(_),b=e=>{var t=Ve();we(o(t)),x(t),n(()=>j(t,`aria-pressed`,a(K))),u(`click`,t,ct),i(e,t)};r(y,e=>{a(G)||e(b)});var w=s(y,2),ee=e=>{var t=He();n(()=>j(t,`aria-pressed`,a(U))),u(`click`,t,()=>{v(U,!a(U)),H(`isorite.details`,a(U))}),i(e,t)};r(w,e=>{a(G)||e(ee)});var T=s(w,2);x(_);var E=s(_,2),D=e=>{var t=We(),c=o(t);M(c,20,()=>[0,1,2,3,4,5],e=>e,(e,t)=>{var r=Ae();let o;n(()=>o=C(r,1,`pip`,null,o,{lv:t<(a(I)?.squares??0)})),i(e,r)}),x(c);var d=s(c,2),f=e=>{var t=Ie(),r=k(t);n(e=>{j(t,`href`,e),h(r,`${a(L)??``} ${a(L)===1?`exercise`:`exercises`}`)},[()=>`${ie(`/study`)}?note=${encodeURIComponent(l.id)}`]),i(e,t)};r(d,e=>{a(L)&&e(f)});var p=s(d,2),m=k(p),g=s(p,2),_=s(g,2),v=e=>{var t=Ue(),r=k(t,!0);n(()=>h(r,a(le))),i(e,t)};r(_,e=>{a(le)&&e(v)}),x(t),n(()=>{j(c,`aria-label`,`${a(I)?.squares??0??``} of 6`),h(m,`${ge[a(I)?.step??0]??``}${a(I)?.due?` · due`:``}`)}),u(`click`,g,ye),i(e,t)};r(E,e=>{se&&!a(G)&&a(F)&&e(D)}),x(g),x(t),n(()=>{j(T,`aria-pressed`,a(G)),T.disabled=d.meta===null}),u(`click`,T,()=>v(W,!a(W))),i(e,t)};r(w,e=>{a(E)&&!a(G)?e(T):e(D,-1)});var A=s(w,2),ae=e=>{Se(e,{get note(){return d}})};r(A,e=>{a(U)&&!a(G)&&e(ae)});var N=s(A,2),ce=t=>{var n=Ke(),r=o(n);{let t=e(()=>a(J)?z(a(J)):null);me(r,{get moments(){return a(Z)},get at(){return a(t)},get pointed(){return a(q)},point:e=>v(q,e),pick:lt})}x(n),i(t,n)};r(N,e=>{a(K)&&!a(G)&&e(ce)});var ue=s(N,2),de=e=>{var t=qe(),l=c(t),f=o(l),p=k(f),g=s(f,4),_=e=>{var t=Ue(),r=k(t,!0);n(()=>h(r,a(X))),i(e,t)};r(g,e=>{a(X)&&e(_)});var y=s(g,2),b=s(y,2);x(l);var S=s(l,2);m(S,()=>z(a(J)),e=>{Ce(e,{get text(){return a(Q).text},get title(){return d.fields.title},get touched(){return a(Q).touched},get asked(){return a(Q).asked},get offered(){return a(Q).offered}})}),n((e,t)=>{h(p,`${e??``} · ${t??``}`),y.disabled=a(Y)||a(Q).text===d.text},[()=>pe(a(J)),()=>fe(a(J).at)]),u(`click`,y,dt),u(`click`,b,()=>v(J,null)),i(e,t)};r(ue,e=>{a(J)&&a(Q)&&e(de)});var R=s(ue,2),he=o(R);m(he,()=>a(G),t=>{{let n=e(()=>a(E)??void 0);ve(t,{get note(){return d},get iso(){return p},get exercise(){return a(n)},get source(){return a(G)},get touched(){return a(ot)}})}}),x(R);var _e=s(R,2),B=e=>{var t=$e(),c=o(t),l=e=>{var t=Je();u(`mousedown`,t,e=>e.preventDefault()),u(`click`,t,()=>a(E).markAnswer()),i(e,t)};r(c,e=>{a(E).selection&&!(a(E).answerAt&&a(E).answerAt.from===a(E).selection.from&&a(E).answerAt.to===a(E).selection.to)&&e(l)});var d=s(c,2),f=k(d,!0),p=s(d,2),m=e=>{var t=Ye();i(e,t)},g=e=>{var t=Ue(),r=k(t,!0);n(()=>h(r,a(E).failed)),i(e,t)},_=e=>{var t=Xe();i(e,t)},v=e=>{var t=Ze(),r=s(o(t));M(r,19,()=>a(E).moves,e=>e.note,(e,t,r)=>{ne();var o=ee();n((e,t)=>h(o,`${a(r)?`, `:``}${e??``} ${t??``}`),[()=>P(a(t).note),()=>be(a(t).by)]),i(e,o)}),x(t),i(e,t)};r(p,e=>{a(E).marking===null?a(E).failed?e(g,1):a(E).answerAt?a(E).last&&e(v,3):e(_,2):e(m)});var y=s(p,4),b=e=>{var t=Qe(),r=k(t);n(e=>h(r,`${a(E).last.cost.tier??``} · $${e??``}`),[()=>a(E).last.cost.usd.toFixed(3)]),i(e,t)};r(y,e=>{a(E).last?.cost&&a(E).marking===null&&e(b)}),x(t),n(()=>{d.disabled=!a(E).answerAt||a(E).marking!==null,h(f,a(E).marking===null?a(E).last?`mark it again`:`send for marking`:`marking…`)}),u(`click`,d,()=>a(E).send()),i(e,t)};r(_e,e=>{a(E)&&!a(G)&&!a(J)&&e(B)});var V=s(_e,2),xe=e=>{var t=et(),r=s(o(t),2),a=k(r),c=s(r,4),l=s(c,2);x(t),n(()=>{h(a,`${p.changes.length??``} ${p.changes.length===1?`change`:`changes`} from Iso waiting`),c.disabled=p.busy===`all`,l.disabled=p.busy===`all`}),u(`click`,c,()=>p.settleAll(!0)),u(`click`,l,()=>p.settleAll(!1)),i(e,t)};r(V,e=>{p.changes.length&&e(xe)});var Te=s(V,2),Ee=e=>{var t=tt(),n=k(t);u(`click`,n,()=>p.promptHere()),i(e,t)};r(Te,e=>{p.prompt===null&&!p.asking&&e(Ee)}),n(e=>j(R,`hidden`,e),[()=>!!(a(J)&&a(Q))]),i(t,f)};r(ht,e=>{d.loaded===`loading`?e(gt):d.loaded===`missing`?e(_t,1):d.loaded===`error`?e(vt,2):e(yt,-1)}),x($),n(()=>mt=C($,1,`note svelte-18ltlst`,null,mt,{timed:a(K)&&d.loaded===`ready`&&!a(G)})),i(t,$),A()}l([`click`,`input`,`keydown`,`mousedown`]);function at(e,t){w(t,!1),O();var n=d(),r=c(n);m(r,()=>P.params.id,e=>{{let t=p(()=>P.params.id??``);it(e,{get id(){return a(t)}})}}),i(e,n),A()}export{at as component};
@@ -1 +0,0 @@
1
- import{$ as e,B as t,C as n,D as r,F as i,G as a,J as o,M as s,N as c,P as l,T as u,V as d,X as f,Z as p,c as m,ct as h,et as g,it as _,k as v,l as y,lt as b,q as x,rt as S,u as C,x as w}from"../chunks/BD1Dpm2e.js";import{o as T,t as E}from"../chunks/CWYACT2V.js";import"../chunks/xihTtKlq.js";import{n as D,r as O,t as k}from"../chunks/gRYnlonl.js";import"../chunks/CdQZ-ArP.js";var ee=v(`<li class="svelte-1iledwa"><a class="svelte-1iledwa"><span class="serif title draft svelte-1iledwa"><i class="dia open svelte-1iledwa" aria-hidden="true"></i> </span></a></li>`),A=v(`<section><h2 class="svelte-1iledwa"><span class="label">for Iso · not in your base yet</span><button class="btn quiet add svelte-1iledwa" type="button">new note for Iso</button></h2> <ul class="svelte-1iledwa"></ul></section>`),j=v(`<option></option>`),M=v(`<p class="problem svelte-1iledwa" role="alert"> </p>`),N=v(`<form class="frame new svelte-1iledwa"><span class="frame-title">a new note</span> <label class="svelte-1iledwa"><span class="label">title</span> <input class="field" placeholder="Entropy" autocomplete="off"/></label> <label class="svelte-1iledwa"><span class="label">folder</span> <input class="field" placeholder="none: the top of the base" list="folders" autocomplete="off"/></label> <datalist id="folders"></datalist> <p class="faint path svelte-1iledwa"> </p> <!> <div class="row svelte-1iledwa"><button class="btn primary" type="submit">make it</button><button class="btn quiet" type="button">cancel</button></div></form>`),te=v(`<p class="soft empty svelte-1iledwa">This base has no notes yet. Make the first one.</p>`),ne=v(`<span class="soft desc svelte-1iledwa"> </span>`),re=v(`<li class="svelte-1iledwa"><a class="svelte-1iledwa"><span class="serif title svelte-1iledwa"> </span><!></a></li>`),ie=v(`<section><h2 class="svelte-1iledwa"><span class="label"> </span><button class="btn quiet add svelte-1iledwa" type="button">+</button></h2> <ul class="svelte-1iledwa"></ul></section>`),ae=v(`<li class="svelte-1iledwa"><a class="svelte-1iledwa"><span class="serif title svelte-1iledwa"> </span><span class="soft desc svelte-1iledwa"> </span></a></li>`),oe=v(`<section><h2 class="svelte-1iledwa"><span class="label">in the text</span></h2> <ul class="svelte-1iledwa"></ul></section>`),se=v(`<p class="soft empty svelte-1iledwa">No note matches.</p>`),ce=v(`<div class="notes svelte-1iledwa"><div class="top svelte-1iledwa"><label class="hidden-label" for="filter">Find a note</label> <input id="filter" class="field grow" type="search" placeholder="find a note" autocomplete="off"/> <button class="btn primary" type="button">new note</button></div> <!> <!> <!> <!> <!> <!></div>`);function P(s,v){_(v,!0);let P=p(``),F=p([]),I=p(!1),L=p(``),R=p(``),z=p(``),B=e(()=>i(P).trim().toLowerCase().split(/\s+/).filter(Boolean)),le=e=>i(B).every(t=>`${e.title}\n${e.id}\n${e.description}`.toLowerCase().includes(t)),V=e(()=>i(B).length?k.listing.notes.filter(le):k.listing.notes),ue=e(()=>{let e=new Map;if(!i(B).length)for(let t of k.listing.dirs)e.set(t,[]);for(let t of i(V))e.set(t.dir,[...e.get(t.dir)??[],t]);return[...e].sort(([e],[t])=>e<t?-1:+(e>t))}),H=e(()=>i(B).length?i(F).filter(e=>!i(V).some(t=>t.id===e.id)):[]);d(()=>{let e=i(P).trim();if(e.length<2){f(F,[]);return}let t=setTimeout(()=>{k.api.search(e).then(t=>{i(P).trim()===e&&f(F,t)},()=>void 0)},200);return()=>clearTimeout(t)});let U=p([]);d(()=>{k.api.drafts().then(e=>f(U,e),()=>void 0)});async function de(){try{let e=await k.api.createDraft();await E(T(`/draft/[id]`,{id:e.id.slice(7)}))}catch(e){f(z,e.message,!0),f(I,!0)}}let W=e(()=>[i(R).trim().replace(/^\/+|\/+$/g,``),O(i(L))].filter(Boolean).join(`/`));function G(e=``){f(I,!0),f(R,e,!0),f(L,``),f(z,``)}async function fe(e){if(e.preventDefault(),!O(i(L)))f(z,`Give the note a title.`);else try{await k.api.createNote(i(W),`---\ntype: Concept\ntitle: ${JSON.stringify(i(L).trim())}\n---\n\n`),await k.refresh(),await E(D(i(W)))}catch(e){f(z,e.message,!0)}}var K=ce(),q=a(K),J=o(a(q),2);y(J),g(J,!0);var pe=o(J,2);h(q);var Y=o(q,2),me=e=>{var n=A(),s=a(n),l=o(a(s));h(s);var d=o(s,2);w(d,21,()=>i(U),e=>e.id,(e,n)=>{var s=ee(),c=a(s),l=a(c),d=o(a(l),1,!0);h(l),h(c),h(s),t(e=>{C(c,`href`,e),u(d,i(n).title||`a new note`)},[()=>T(`/draft/[id]`,{id:i(n).id.slice(7)})]),r(e,s)}),h(d),h(n),c(`click`,l,de),r(e,n)};n(Y,e=>{k.session?.study&&e(me)});var X=o(Y,2),he=e=>{var s=N(),d=o(a(s),2),p=o(a(d),2);y(p),g(p,!0),h(d);var _=o(d,2),v=o(a(_),2);y(v),h(_);var b=o(_,2);w(b,20,()=>k.listing.dirs,e=>e,(e,n)=>{var i=j(),a={};t(()=>{a!==(a=n)&&(i.value=(i.__value=a)??``)}),r(e,i)}),h(b);var S=o(b,2),C=x(S,!0),T=o(S,2),E=e=>{var n=M(),a=x(n,!0);t(()=>u(a,i(z))),r(e,n)};n(T,e=>{i(z)&&e(E)});var D=o(T,2),O=o(a(D));h(D),h(s),t(()=>u(C,i(W)?`${i(W)}.md`:` `)),l(`submit`,s,fe),m(p,()=>i(L),e=>f(L,e)),m(v,()=>i(R),e=>f(R,e)),c(`click`,O,()=>f(I,!1)),r(e,s)};n(X,e=>{i(I)&&e(he)});var Z=o(X,2),ge=e=>{var t=te();r(e,t)};n(Z,e=>{!k.listing.notes.length&&!i(I)&&e(ge)});var Q=o(Z,2);w(Q,17,()=>i(ue),([e,t])=>e,(s,l)=>{var d=e(()=>b(i(l),2));let f=()=>i(d)[0],p=()=>i(d)[1];var m=ie(),g=a(m),_=a(g),v=x(_,!0),y=o(_);h(g);var S=o(g,2);w(S,21,p,e=>e.id,(e,s)=>{var c=re(),l=a(c),d=a(l),f=x(d,!0),p=o(d),m=e=>{var n=ne(),a=x(n,!0);t(()=>u(a,i(s).description)),r(e,n)};n(p,e=>{i(s).description&&e(m)}),h(l),h(c),t(e=>{C(l,`href`,e),u(f,i(s).title)},[()=>D(i(s).id)]),r(e,c)}),h(S),h(m),t(()=>{u(v,f()||`the top of the base`),C(y,`aria-label`,`New note in ${f()||`the top of the base`}`)}),c(`click`,y,()=>G(f())),r(s,m)});var $=o(Q,2),_e=e=>{var n=oe(),s=o(a(n),2);w(s,21,()=>i(H),e=>e.id,(e,n)=>{var s=ae(),c=a(s),l=a(c),d=x(l,!0),f=o(l),p=x(f,!0);h(c),h(s),t(e=>{C(c,`href`,e),u(d,i(n).title),u(p,i(n).snippet)},[()=>D(i(n).id)]),r(e,s)}),h(s),h(n),r(e,n)};n($,e=>{i(H).length&&e(_e)});var ve=o($,2),ye=e=>{var t=se();r(e,t)};n(ve,e=>{i(B).length&&!i(V).length&&!i(H).length&&e(ye)}),h(K),m(J,()=>i(P),e=>f(P,e)),c(`click`,pe,()=>G()),r(s,K),S()}s([`click`]);export{P as component};
@@ -1 +0,0 @@
1
- import{$ as e,B as t,D as n,F as r,G as i,J as a,K as o,M as s,N as c,T as l,ct as u,h as d,it as f,k as p,lt as m,m as h,o as g,q as _,rt as v,st as y,u as b,x}from"../chunks/BD1Dpm2e.js";import"../chunks/xihTtKlq.js";import{n as S,r as C,t as w}from"../chunks/cmGruEKS.js";import"../chunks/DtAOoM-T.js";var T=p(`<button type="button" role="radio"> </button>`),E=p(`<div class="swatch svelte-h119xx"><i class="svelte-h119xx"></i><span> </span></div>`),D=p(`<div class="swatch svelte-h119xx"><i class="svelte-h119xx"></i><span> </span></div> <div class="swatch svelte-h119xx"><i class="svelte-h119xx"></i><span> </span></div>`,1),O=p(`<div class="parts svelte-h119xx"><section class="svelte-h119xx"><h2 class="label svelte-h119xx">the ground</h2> <div class="row svelte-h119xx" role="radiogroup" aria-label="Ground"></div></section> <section class="svelte-h119xx"><h2 class="label svelte-h119xx">the name</h2> <div class="row svelte-h119xx"><!><!></div></section> <section class="svelte-h119xx"><h2 class="label svelte-h119xx">colour</h2> <div class="swatches svelte-h119xx"></div> <div class="swatches svelte-h119xx"></div> <div class="swatches svelte-h119xx"></div></section> <section class="svelte-h119xx"><h2 class="label svelte-h119xx">type</h2> <p class="pixel">Departure Mono, for display</p> <p>Ioskeley Mono, for the interface. <b>Bold.</b> <i>Italic.</i> 0123456789</p> <p class="serif">Charter, for what is read: the entropy of a source is the average surprise of its symbols. <b>Bold</b>, <i>italic</i>.</p></section> <section class="svelte-h119xx"><h2 class="label svelte-h119xx">buttons and chips</h2> <div class="row svelte-h119xx"><button class="btn" type="button">plain</button> <button class="btn primary" type="button">primary</button> <button class="btn danger" type="button">delete</button> <button class="btn quiet" type="button">quiet</button> <button class="btn" type="button" disabled="">off</button> <button class="btn tall primary" type="button">tall</button></div> <div class="row svelte-h119xx"><button class="btn keep" type="button">keep</button> <button class="btn edit" type="button">edit</button> <button class="btn remove" type="button">remove</button></div> <div class="row svelte-h119xx"><span class="chip">plain</span><span class="chip lattice">lattice</span><span class="chip growth">growth</span> <span class="chip malachite">malachite</span><span class="chip rose">rose</span></div></section> <section class="svelte-h119xx"><h2 class="label svelte-h119xx">a frame, a field, the marks</h2> <div class="frame box svelte-h119xx"><span class="frame-title">a frame</span> <input class="field" placeholder="a field" aria-label="A field"/> <div class="row svelte-h119xx"><i class="sq"></i><span>you</span><i class="sq empty"></i><span>not yet</span><i class="dia"></i><span>Iso</span><i class="dia open"></i><span>Iso, unkept</span></div></div> <div class="dots ground svelte-h119xx"></div></section></div>`);function k(s,p){f(p,!1);let k=[`ground-0`,`ground-1`,`ground-2`,`ground-3`,`line`,`line-strong`],A=[`text`,`text-soft`,`text-faint`],j=[`lattice`,`growth`,`malachite`,`rose`];g();var M=O(),N=i(M),P=a(i(N),2);x(P,5,()=>w,([e,t])=>e,(i,a)=>{var o=e(()=>m(r(a),2));let s=()=>r(o)[0],u=()=>r(o)[1];var f=T();let p;var h=_(f,!0);t(()=>{p=d(f,1,`btn`,null,p,{primary:S.chosen===s()}),b(f,`aria-checked`,S.chosen===s()),l(h,u())}),c(`click`,f,()=>S.choose(s())),n(i,f)}),u(P),u(N);var F=a(N,2),I=a(i(F),2),L=i(I);C(L,{width:216});var R=a(L);C(R,{}),u(I),u(F);var z=a(F,2),B=a(i(z),2);x(B,5,()=>k,e=>e,(e,o)=>{var s=E(),c=i(s);let d;var f=a(c),p=_(f,!0);u(s),t(()=>{d=h(c,``,d,{background:`var(--${r(o)})`}),l(p,r(o))}),n(e,s)}),u(B);var V=a(B,2);x(V,5,()=>A,e=>e,(e,o)=>{var s=E(),c=i(s);let d;var f=a(c),p=_(f,!0);u(s),t(()=>{d=h(c,``,d,{background:`var(--${r(o)})`}),l(p,r(o))}),n(e,s)}),u(V);var H=a(V,2);x(H,5,()=>j,e=>e,(e,s)=>{var c=D(),d=o(c),f=i(d);let p;var m=a(f),g=_(m,!0);u(d);var v=a(d,2),y=i(v);let b;var x=a(y),S=_(x);u(v),t(()=>{p=h(f,``,p,{background:`var(--${r(s)})`}),l(g,r(s)),b=h(y,``,b,{background:`var(--${r(s)}-soft)`}),l(S,`${r(s)??``}-soft`)}),n(e,c)}),u(H),u(z);var U=a(z,2),W=a(i(U),2);h(W,``,{},{"font-size":`22px`});var G=a(W,4);h(G,``,{},{"font-size":`18px`}),u(U),y(4),u(M),n(s,M),v()}s([`click`]);export{k as component};
@@ -1 +0,0 @@
1
- import{$ as e,B as t,C as n,D as r,F as i,G as a,J as o,K as s,M as c,N as l,T as u,X as d,Z as f,ct as p,h as m,it as h,k as g,lt as _,n as v,q as y,rt as b,st as x,u as S,x as C}from"../chunks/BD1Dpm2e.js";import{o as w,t as T}from"../chunks/CWYACT2V.js";import"../chunks/xihTtKlq.js";import{n as E,t as D}from"../chunks/gRYnlonl.js";import{t as O}from"../chunks/B-si2ell.js";import"../chunks/CdQZ-ArP.js";var k=g(`<p class="soft empty svelte-1pepxcq">Exercises are kept in a study base, and none is open. <span class="faint">isorite study init</span> makes one.</p>`),A=g(`<a class="sr svelte-1pepxcq"><span class="faint kind svelte-1pepxcq"> </span> <span class="grow t svelte-1pepxcq"> </span> <span class="label tests svelte-1pepxcq"> </span> <i></i></a>`),j=g(`<p class="soft none svelte-1pepxcq"> </p>`),M=g(`<a class="label all svelte-1pepxcq">every exercise</a>`),N=g(`<a class="sr svelte-1pepxcq"><i class="dia open svelte-1pepxcq" aria-hidden="true"></i><span class="grow t svelte-1pepxcq"> </span></a>`),P=g(`<span class="label sub svelte-1pepxcq">asked of Iso · not kept yet</span> <!>`,1),F=g(`<p class="bad svelte-1pepxcq" role="alert"> </p>`),I=g(`<div class="fr svelte-1pepxcq"><span class="grow"> </span><button class="link svelte-1pepxcq" type="button">[ + an exercise ]</button></div>`),L=g(`<div class="fr svelte-1pepxcq"><span class="grow soft"> </span><button class="link svelte-1pepxcq" type="button">[ + an exercise ]</button></div>`),R=g(`<section class="frame list svelte-1pepxcq"><span class="frame-title"> </span> <!> <!> <!> <span class="label foot svelte-1pepxcq">ordered from your record: due first, then never tried, then the fewest squares</span></section> <!> <section class="folders svelte-1pepxcq"><h2 class="label svelte-1pepxcq">ask Iso for an exercise</h2> <!> <!></section>`,1),z=g(`<div class="study svelte-1pepxcq"><!></div>`);function B(c,g){h(g,!0);let B=f(null),V=f([]),H=f(``),U=e(()=>O.url.searchParams.get(`note`)??new URLSearchParams(O.url.hash.split(`?`)[1]??``).get(`note`)??``),W=e=>D.listing.notes.find(t=>t.id===e)?.title??e.split(`/`).at(-1),G=e(()=>(i(B)?.exercises??[]).filter(e=>!i(U)||e.tests.includes(i(U)))),K={written:`written`};async function q(){try{await(async e=>{var t=_(e,2);d(B,t[0]),d(V,t[1])})(await Promise.all([D.api.study(),D.api.drafts().then(e=>e.filter(e=>e.exercise))]))}catch(e){d(H,e.message,!0)}}v(()=>(q(),D.on(e=>{(e.type===`record`||e.type===`note-changed`&&(e.id.startsWith(`@study/`)||e.id.startsWith(`@draft/`)))&&q()})));async function J(e,t=[]){d(H,``);try{let n=await D.api.createExerciseDraft(e,t);await T(w(`/draft/[id]`,{id:n.id.slice(7)}))}catch(e){d(H,e.message,!0)}}var Y=z(),X=a(Y),Z=e=>{var t=k();r(e,t)},Q=e=>{var c=R(),d=s(c),f=a(d),h=y(f,!0),g=o(f,2);C(g,17,()=>i(G),e=>e.id,(e,n)=>{var s=A(),c=a(s),l=y(c,!0),d=o(c,2),f=y(d,!0),h=o(d,2),g=y(h),_=o(h,2);let v;p(s),t((e,t)=>{S(s,`href`,e),u(l,K[i(n).kind]??i(n).kind),u(f,i(n).title),u(g,`tests ${t??``}`),v=m(_,1,`pip`,null,v,{ok:i(n).result===`right`,part:i(n).result===`partly`,no:i(n).result===`wrong`}),S(_,`title`,i(n).result?`last: ${i(n).result}`:`not tried`)},[()=>E(i(n).id),()=>i(n).tests.map(W).join(`, `)]),r(e,s)},e=>{var n=j(),a=y(n,!0);t(()=>u(a,i(B)?i(U)?`Nothing tests this note yet.`:`No exercises yet. Ask Iso for one in a folder below.`:`reading…`)),r(e,n)});var _=o(g,2),v=e=>{var n=M();t(e=>S(n,`href`,e),[()=>w(`/study`)]),r(e,n)};n(_,e=>{i(U)&&e(v)});var b=o(_,2),T=e=>{var n=P(),c=o(s(n),2);C(c,17,()=>i(V),e=>e.id,(e,n)=>{var s=N(),c=o(a(s)),l=y(c,!0);p(s),t(e=>{S(s,`href`,e),u(l,i(n).title)},[()=>w(`/draft/[id]`,{id:i(n).id.slice(7)})]),r(e,s)}),r(e,n)};n(b,e=>{i(V).length&&e(T)}),x(2),p(d);var O=o(d,2),k=e=>{var n=F(),a=y(n,!0);t(()=>u(a,i(H))),r(e,n)};n(O,e=>{i(H)&&e(k)});var z=o(O,2),q=o(a(z),2),Y=e=>{var n=I(),s=a(n),c=y(s),d=o(s);p(n),t(e=>u(c,`on ${e??``}`),[()=>W(i(U))]),l(`click`,d,()=>J(D.listing.notes.find(e=>e.id===i(U))?.dir??``,[i(U)])),r(e,n)};n(q,e=>{i(U)&&e(Y)});var X=o(q,2);C(X,16,()=>i(B)?.folders??[],e=>e,(e,n)=>{var i=L(),s=a(i),c=y(s,!0),d=o(s);p(i),t(()=>{u(c,n||`the top of the base`),S(d,`aria-label`,`An exercise in ${n||`the top of the base`}`)}),l(`click`,d,()=>J(n)),r(e,i)}),p(z),t(e=>u(h,e),[()=>i(U)?`study · what tests ${W(i(U))}`:`study · next for you`]),r(e,c)};n(X,e=>{D.session?.study?e(Q,-1):e(Z)}),p(Y),r(c,Y),b()}c([`click`]);export{B as component};
@@ -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};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=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}={}){let T=l[i]??c;w(T);let O=e=>e.kind===`dir`,k=/* @__PURE__ */ new Map,A=/* @__PURE__ */ new Map,j=[e.root];for(let e=0;e<j.length;e++)for(let t of j[e].children||[])k.set(t,j[e]),O(t)?j.push(t):A.set(t.ref,t);let M=e=>{let t=[];for(let n=e;n;n=k.get(n))t.push(n);return t.reverse()},N=new Map(j.map(e=>[e,/* @__PURE__ */ new Map])),P=/* @__PURE__ */ new Map;for(let e of j){P.set(e,P.size);for(let t of e.children||[])O(t)||P.set(t,P.size)}let F=new Map(A);if(e.code)for(let t of j)t!==e.root&&!F.has(t.ref)&&F.set(t.ref,t);for(let[t,n,r]of e.edges){if(r<2)continue;let e=F.get(t),i=F.get(n);if(!e||!i||e===i)continue;let a=M(e),o=M(i),s=0;for(;a[s+1]&&a[s+1]===o[s+1];)s++;if(!a[s+1]||!o[s+1])continue;let c=N.get(a[s]),l=o[s+1],u=a[s+1],d=P.get(l)+`|`+P.get(u),f=c.get(d)||{p:l,q:u,weight:0,count:0};f.weight+=r,f.count++,c.set(d,f)}let I=/* @__PURE__ */ new Map,L=/* @__PURE__ */ new Map,R=/* @__PURE__ */ new Map,z=e=>e===`up`?`right`:`up`,B=(t,n)=>{let r=t.children||[];for(let e of r)O(e)?B(e,z(n)):I.set(e,{w:d[0],h:d[1]});let i=r.length?V(t,r,n):{w:0,h:0};I.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 V(e,t,n){if(a&&t.some(O))return H(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 N.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([...N.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=U(e,t,n);return R.set(e,r.out),{w:r.w,h:r.h}}let c=[...o].map(([t,r],i)=>({list:r,loose:t===null,k:i,...U(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(O)?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=I.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 R.set(e,y),{w:v,h:g+_}}function H(t,i,a){let c=new Map(i.map((e,t)=>[e,t])),l=[...N.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)=>(O(i[e])||O(i[t])?p:f)+m(e,t),g=i.map(e=>[I.get(e).w,I.get(e).h]),_=t===e.root&&a===`up`?1/n.shape:n.shape,v=r(g,l.map(e=>[c.get(e.p),c.get(e.q),e.count]),h,a,{shape:_,...o,pair:d?.pair});L.set(u,v.pair),i.forEach((e,t)=>Object.assign(I.get(e),{x:v.x[t],y:v.y[t]}));let y=e=>a===`right`?v.x[e]+g[e][0]/2:-(v.y[e]+g[e][1]/2),b=/* @__PURE__ */ new Map;for(let e of l)b.set(e.p,[...b.get(e.p)||[],e.q]);let x=(e,t)=>{let n=/* @__PURE__ */ new Set,r=(b.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(...b.get(e)||[]))}return!1};return R.set(t,l.map(e=>({p:e.p,q:e.q,count:e.count,back:y(c.get(e.p))>y(c.get(e.q)),implied:!O(e.p)&&!O(e.q)&&x(e.p,e.q),pts:null}))),{w:v.w,h:v.h}}function U(e,t,n){let r=t.length,i=new Map(t.map((e,t)=>[e,t])),a=n===`up`,o=t.some(O)?p:f,s=t.map(e=>a?I.get(e).h:I.get(e).w),c=t.map(e=>a?I.get(e).w:I.get(e).h),l=[...N.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=!O(t[e.p])&&!O(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),k=t.reduce((e,t,n)=>e+(c[n]+o)*(s[n]+m),0),A=Math.max(Math.ceil(Math.sqrt(a?k*u:k/u)),...c),j=[],M=Array(r),P=Array(r).fill(!1);for(let e of l)P[e.p]=!0,P[e.q]=!0;let F=P.some(Boolean)&&P.some(e=>!e),L=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&&(P[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,L(t)}F&&(R=j.length,L([...Array(r).keys()].filter(e=>!P[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},ne=()=>{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)}}},re=j.map(e=>[...e]),ie=(e,t)=>(J(e)?d[G.get(e)]:d[e])-(J(t)?d[G.get(t)]:d[t])||e-t,ae=null,oe=1/0;for(let e of[e=>e,e=>[...e].sort(ie),e=>[...e].reverse()]){j.forEach((t,n)=>{t.splice(0,t.length,...e(re[n])),t.forEach((e,t)=>{Y[e]=t})});let t=1/0,n=0;for(let e=0;e<24&&n<4&&oe>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);ne();let r=te();r<t&&(t=r,n=0),r<oe&&(oe=r,ae=j.map(e=>[...e]))}}ae&&j.forEach((e,t)=>{e.splice(0,e.length,...ae[t]),e.forEach((e,t)=>{Y[e]=t})});let Z=(e,t)=>J(e)&&J(t)?1:J(e)||J(t)?x:o,Q=Array(V.length).fill(0);for(let e of j){let t=0;e.forEach((n,r)=>{r&&(t+=Z(e[r-1],n)),Q[n]=t,t+=V[n]})}let se=e=>e.length?Q[e[e.length-1]]+V[e[e.length-1]]:0,ce=Math.max(...j.map(se));for(let e of j){let t=(ce-se(e))/2;for(let n of e)Q[n]+=t}let le=e=>Q[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+le(t),0)/t.length:le(e))-V[e]/2}),n=[],r=[];t.forEach((r,i)=>{n[i]=i?Math.max(e[i],n[i-1]+V[t[i-1]]+Z(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]]-Z(t[n],t[n+1])):e[n];t.forEach((e,t)=>{Q[e]=(n[t]+r[t])/2})}let ue=e=>Math.floor((V[e]-1)/2),de=Array(V.length).fill(-1),fe=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=>de[e]>=0).map(e=>[Y[de[e]],Y[e]]);for(let r of j[t]){if(de[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])=>fe[t]<0&&(!e||J(t)&&J(r))&&Math.abs(Q[t]+ue(t)-Q[r]-ue(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])){de[r]=e,fe[e]=r,n.push([Y[e],Y[r]]);break}}}let pe=Array(V.length).fill(-1),me=0;for(let e=0;e<V.length;e++)if(de[e]<0){for(let t=e;t>=0;t=fe[t])pe[t]=me;me++}let he=Array.from({length:me},()=>[]);pe.forEach((e,t)=>he[e].push(t));let ge=(e,t)=>V[e]-ue(e)+Z(e,t)+ue(t),_e=Array(V.length).fill(-1),ve=Array(V.length).fill(-1);for(let e of j)e.forEach((t,n)=>{n&&(_e[t]=e[n-1],ve[e[n-1]]=t)});let ye=Array(me).fill(0),be=!1;for(let e=0;e<=me&&!be;e++){be=!0;for(let e of j)for(let t=1;t<e.length;t++){let n=ye[pe[e[t-1]]]+ge(e[t-1],e[t]);ye[pe[e[t]]]<n&&(ye[pe[e[t]]]=n,be=!1)}}if(be){let e=he.map(e=>Math.round(e.reduce((e,t)=>e+Q[t]+ue(t),0)/e.length)),t=Math.min(...e.map((e,t)=>e-ye[t])),n=[...Array(me).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 he[a])_e[e]>=0&&(n=Math.max(n,ye[pe[_e[e]]]+ge(_e[e],e))),ve[e]>=0&&(r=Math.min(r,ye[pe[ve[e]]]-ge(e,ve[e])));let o=Math.max(n,Math.min(r,e[a]-t));o!==ye[a]&&(ye[a]=o,i=!0)}if(!i)break}for(let e=0;e<V.length;e++)Q[e]=ye[pe[e]]-ue(e)}else for(let e of j)e.forEach((t,n)=>{Q[t]=n?Math.max(Math.round(Q[t]),Q[e[n-1]]+V[e[n-1]]+Z(e[n-1],t)):Math.round(Q[t])});let xe=Math.min(...Q);for(let e=0;e<Q.length;e++)Q[e]-=xe;let Se=Math.max(...Q.map((e,t)=>e+V[t])),Ce=e=>Q[e]+Math.floor((V[e]-1)/2)+.5,$=/* @__PURE__ */ new Map;for(let e=0;e<V.length;e++){let t=[...H[e]].sort((e,t)=>Ce(e)-Ce(t)),n=Q[e]+.5,r=Q[e]+V[e]-.5;if(t.length>V[e]){t.forEach((r,i)=>$.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,Ce(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)=>$.set(t+`|`+e,i[n]))}let we=(e,t)=>{let n=$.get(e+`|`+t);return n>=Q[e]+.5&&n<=Q[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=>$.get(e+`|`+t)).sort((e,t)=>e-t);Te[e]=t.length?Math.max(Q[e]+.5,Math.min(Q[e]+V[e]-.5,t[t.length-1>>1])):Ce(e)}let Ee=(e,t)=>we(e,t)?$.get(e+`|`+t):Te[e],De=(e,t)=>{let n=Ee(e,t),r=$.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=$.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=$.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=>$.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(O)?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(I.get(e),a?{x:Q[t],y:Le-Re(t)-s[t]}:{x:Re(t),y:Q[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=$.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),$.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:Se,h:Le,out:Be}:{w:Le,h:Se,out:Be}}B(e.root,t);let W=[],G=/* @__PURE__ */ new Map,K=/* @__PURE__ */ new Map([[e.root,[_,_]]]);for(let t of j){let[n,r]=K.get(t),i=t===e.root?-1:G.get(t),a=M(t).length;for(let e of t.children||[]){let t=I.get(e);G.set(e,W.length),W.push({id:e.id,ref:e.ref,kind:O(e)?`folder`:`note`,parent:i,depth:a,gx:n+t.x,gy:r+t.y,w:t.w,h:t.h}),O(e)&&K.set(e,[n+t.x+b,r+t.y+g+b])}}let q=[],ee=/* @__PURE__ */ new Set;for(let e of j){let[t,n]=K.get(e);for(let r of R.get(e)||[]){let e=G.get(r.q),i=G.get(r.p);r.back&&ee.add(e+`|`+i),q.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 J=E(W,e.edges,new Map([...A].map(([e,t])=>[e,G.get(t)]))),Y=(e,t)=>{for(;W[e].parent!==t;)e=W[e].parent;return e};for(let e of J)e.placed=e.s>=2&&!ee.has(Y(e.a,e.level)+`|`+Y(e.b,e.level));let X=I.get(e.root);return{W:X.w+2*_,H:X.h+2*_,flow:t,cell:T.cell,keep:T.keep,margin:_,items:W,links:J,trunks:q,pairs:L}}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]),ne=[[X[1],X[2]]];for(let e of Y)ne.push([e%f+.5,(e/f|0)+.5]);return ne.push([te[1],te[2]]),{cells:Int32Array.from(Y),pts:ne}}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),ne=/* @__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}`;ne.set(s,[...ne.get(s)||[],{k:t,end:n,t:Math.floor(o<2?i[0]:i[1]),count:e.count}])}});let re=/* @__PURE__ */ new Map;for(let[e,t]of ne){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&&re.set(e.k,{...re.get(e.k),[e.end]:{side:r,t:c}})}}if(re.size){x.fill(0),K.forEach((e,t)=>{e.pts&&!re.has(t)&&q(e.pts)});for(let e of B){let t=re.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},ne=()=>{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 re(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;){ne();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 ie=[];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`&&ie.push({folder:e.a,at:e.pts[e.pts.length-1],notes:r.map(e=>e.a),trunk:t}),m[e.b].kind===`folder`&&ie.push({folder:e.b,at:e.pts[0],notes:r.map(e=>e.b),trunk:t})});let ae=[],oe=e=>m[e].kind===`note`,Z=/* @__PURE__ */ new Map;for(let e=0;e<ie.length;e++){let{folder:t,at:n,notes:r,trunk:i}=ie[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};Z.has(d)||Z.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}=Z.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)=>oe(e[0])-oe(t[0])||t[1].length-e[1].length||e[0]-t[0])){let r=oe(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]}:re(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=ae.length,v=l.cells.at(-1);ae.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||ie.push({folder:e,at:l.pts[0],notes:n,trunk:i})}}return N(ae,b),ae.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 ne(t,n){let r={flow:n.gridFlow===`right`?`right`:`up`,grain:oe(n),plan:!!n.blocks},i=T(t,r);if(n.blocks){let n=re(i,B(i,e(i)));[...n.values()].some(e=>e.wider.size)&&(i=T(t,{...r,planned:n}))}i.feeders=ie(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 re(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 ie(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 ae(t){let n=e(t),r=j(t,n);return e=>I(r,e,n.W,n.H)}let oe=e=>e.grain===`coarse`||e.grain===`coarser`?e.grain:`fine`,Z=null;self.onmessage=({data:e})=>{try{if(`layout`in e){self.postMessage({id:e.id,result:ne(e.layout.model,e.layout.o)});return}let{key:t,layout:n,asks:r}=e.routes;if(Z?.key!==t){if(!n)throw Error(`no layout for these routes`);Z={key:t,run:ae(n)}}self.postMessage({id:e.id,result:Z.run(r)})}catch(t){self.postMessage({id:e.id,error:String(t?.message??t)})}}})();