graview 0.1.26 → 0.1.27

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 (80) hide show
  1. package/dist/preview/{chunk.OBQ4DIFO.js → chunk.4JXWQO6Y.js} +1 -1
  2. package/dist/preview/{chunk.564EIRAT.js → chunk.4R7LDCDO.js} +1 -1
  3. package/dist/preview/{chunk.XNYBOKLW.js → chunk.4W24TPMR.js} +1 -1
  4. package/dist/preview/{chunk.PKFL2AR4.js → chunk.5BN2ARQ2.js} +1 -1
  5. package/dist/preview/{chunk.2GFB5FOK.js → chunk.7CO6VP6F.js} +1 -1
  6. package/dist/preview/{chunk.KXWRS6LY.js → chunk.7QTBDACG.js} +1 -1
  7. package/dist/preview/{chunk.BK2MJOUN.js → chunk.7SVIRYBB.js} +1 -1
  8. package/dist/preview/chunk.7THQFY52.js +1 -0
  9. package/dist/preview/{chunk.YXQCEXZX.js → chunk.AS35X6KA.js} +1 -1
  10. package/dist/preview/{chunk.4INXWGIT.js → chunk.ATLUMYAJ.js} +1 -1
  11. package/dist/preview/{chunk.NQP3DWME.js → chunk.CW7BMVBG.js} +1 -1
  12. package/dist/preview/{chunk.VW7U4CT5.js → chunk.DG2UE7PJ.js} +1 -1
  13. package/dist/preview/{chunk.YOMW4MKD.js → chunk.DG2WKNMX.js} +1 -1
  14. package/dist/preview/{chunk.XD4Q4FI2.js → chunk.DQ5OWYLQ.js} +1 -1
  15. package/dist/preview/{chunk.UEEXBS2U.js → chunk.DY2FFBWF.js} +1 -1
  16. package/dist/preview/chunk.E3SZ7T75.js +1 -0
  17. package/dist/preview/{chunk.NIEQZOHX.js → chunk.EVTZE2OZ.js} +1 -1
  18. package/dist/preview/{chunk.QFJRXAU3.js → chunk.FS5K4AVA.js} +2 -2
  19. package/dist/preview/{chunk.5CXMUC6R.js → chunk.FTBKJ5RZ.js} +1 -1
  20. package/dist/preview/{chunk.LLUZMOBZ.js → chunk.GHMICJIB.js} +1 -1
  21. package/dist/preview/chunk.HO6JR7VY.js +1 -0
  22. package/dist/preview/{chunk.DRIWJRQW.js → chunk.HPD3DSTP.js} +1 -1
  23. package/dist/preview/chunk.I5KD54S6.js +1 -0
  24. package/dist/preview/chunk.IXVSJJQH.js +20 -0
  25. package/dist/preview/{chunk.ZOWWWRYA.js → chunk.IZDKEFPJ.js} +1 -1
  26. package/dist/preview/chunk.J36GTQTV.js +1 -0
  27. package/dist/preview/{chunk.I5U42VDK.js → chunk.KAKX5TZN.js} +2 -2
  28. package/dist/preview/{chunk.UUMXYMOX.js → chunk.LHAAZQNQ.js} +1 -1
  29. package/dist/preview/{chunk.HFFEOCYY.js → chunk.LQZ2VQWN.js} +2 -2
  30. package/dist/preview/chunk.MHJJEGQO.js +1 -0
  31. package/dist/preview/chunk.MNPNW4BQ.js +1 -0
  32. package/dist/preview/{chunk.XXNC2AFL.js → chunk.NKIFVPS3.js} +1 -1
  33. package/dist/preview/{chunk.XOC5BRPU.js → chunk.NQNQPPPM.js} +1 -1
  34. package/dist/preview/{chunk.OBGG4SYF.js → chunk.OA5BVKJH.js} +1 -1
  35. package/dist/preview/chunk.OHGJ5BZ4.js +2 -0
  36. package/dist/preview/{chunk.SVL6I37U.js → chunk.OYULDOQP.js} +1 -1
  37. package/dist/preview/{chunk.D3XF643V.js → chunk.PHY3AH3L.js} +1 -1
  38. package/dist/preview/{chunk.ECG7RM6L.js → chunk.Q7544RCB.js} +1 -1
  39. package/dist/preview/{chunk.NLFLFIDS.js → chunk.QZWN46V6.js} +1 -1
  40. package/dist/preview/chunk.RUC4HFVC.js +1 -0
  41. package/dist/preview/chunk.S5JWZIVE.js +1 -0
  42. package/dist/preview/chunk.SHDYLMZE.js +2 -0
  43. package/dist/preview/{chunk.ECRZZ3U4.js → chunk.T2EZ5MTH.js} +1 -1
  44. package/dist/preview/chunk.TMPV4HLQ.js +1 -0
  45. package/dist/preview/{chunk.LHIYFAN5.js → chunk.TX2GOL65.js} +1 -1
  46. package/dist/preview/{chunk.AAVCTGAE.js → chunk.U5ZUXGWM.js} +1 -1
  47. package/dist/preview/chunk.UMMN5Z6V.js +1 -0
  48. package/dist/preview/chunk.UPGDSOBY.js +1 -0
  49. package/dist/preview/{chunk.MLQQR57X.js → chunk.V57P4LIZ.js} +1 -1
  50. package/dist/preview/{chunk.KSEKVHJJ.js → chunk.VD6FJ6KJ.js} +1 -1
  51. package/dist/preview/{chunk.4MAYBFPU.js → chunk.VFICMX5G.js} +1 -1
  52. package/dist/preview/chunk.VMD4PDYJ.js +1 -0
  53. package/dist/preview/chunk.VMEX2KZ4.js +8 -0
  54. package/dist/preview/{chunk.LEVR7WLB.js → chunk.XDHBV5K5.js} +1 -1
  55. package/dist/preview/{chunk.AKWBAWQF.js → chunk.YO7UFBJP.js} +1 -1
  56. package/dist/preview/{chunk.24X6LFD3.js → chunk.YV2RTNPU.js} +1 -1
  57. package/dist/preview/chunk.ZD5HGRPR.js +1 -0
  58. package/dist/preview/chunk.ZKM4P7US.js +1 -0
  59. package/dist/preview/{chunk.3RT463XY.js → chunk.ZMMMKTAG.js} +1 -1
  60. package/dist/preview/{chunk.CL7GGNEK.js → chunk.ZNIJONZN.js} +1 -1
  61. package/dist/preview/page.js +2 -2
  62. package/package.json +6 -6
  63. package/dist/preview/chunk.4YY54TMR.js +0 -1
  64. package/dist/preview/chunk.6GJF3F7L.js +0 -2
  65. package/dist/preview/chunk.6MZBFEXW.js +0 -1
  66. package/dist/preview/chunk.7OOKA2DK.js +0 -1
  67. package/dist/preview/chunk.7ZJPJARU.js +0 -1
  68. package/dist/preview/chunk.IQLDOIWD.js +0 -1
  69. package/dist/preview/chunk.JIWB6VGT.js +0 -2
  70. package/dist/preview/chunk.LCFCU3I3.js +0 -1
  71. package/dist/preview/chunk.LUUT2ZWF.js +0 -20
  72. package/dist/preview/chunk.P7YN4Z3K.js +0 -8
  73. package/dist/preview/chunk.PQ2IIC27.js +0 -1
  74. package/dist/preview/chunk.REODVRPZ.js +0 -1
  75. package/dist/preview/chunk.RH6VRP76.js +0 -1
  76. package/dist/preview/chunk.TAW67PZU.js +0 -1
  77. package/dist/preview/chunk.TUYKH4FG.js +0 -1
  78. package/dist/preview/chunk.WWWZZAHE.js +0 -1
  79. package/dist/preview/chunk.YIZ3DJO3.js +0 -1
  80. package/dist/preview/chunk.ZLPA5BAW.js +0 -1
@@ -1 +1 @@
1
- import{d as R}from"./chunk.NIEQZOHX.js";import{a as q}from"./chunk.XOC5BRPU.js";import{$a as B,N as Q,O as V,R as z,U as Y,Y as A,Ya as nn,Z as D,_ as X,ja as L,ka as Z}from"./chunk.P7YN4Z3K.js";var E=c=>c.filter(Boolean).join(" "),en=new Set(["tell","me","about","what","how","show","describe","the","a","an","and","please"]),an=new Set([...en,"where","is","are","was","find","any","anything","something","things","called","named","which","who","of","for","with","to","in","on","i","my","do","does","have","has","can","you","it","that","this","there","we","our","got","be"]),dn=c=>c.length<=1?A(c[0]??"something"):`${c.slice(0,-1).map(A).join(", ")} and ${A(c[c.length-1])}`;function bn(c={}){return async(t,u,g={})=>{let w=u.toLowerCase(),h=n=>V(t.schema.tryDefinition(n.kind),n),y=(await import("./chunk.LLUZMOBZ.js")).goingFrom(t,u,g,c.today);if(y.reply)return y.reply;let v=y.told,S=n=>y.moves?{...n,moves:y.moves}:n,p=[],C=w.split(/[^a-z0-9]+/).filter(Boolean),I=new Set;for(let n=0;n<C.length;n++){let e="";for(let s=n;s<Math.min(C.length,n+6);s++)e+=C[s],I.add(e)}let T=n=>n.toLowerCase().replace(/[^a-z0-9]+/g,""),H=[...t.graph.allNodes()].map(n=>({node:n,label:T(h(n))})).filter(({label:n})=>n.length>=2&&I.has(n)).sort((n,e)=>e.label.length-n.label.length),N=new Map;for(let{label:n}of H)N.set(n,(N.get(n)??0)+1);for(let{node:n,label:e}of H)(N.get(e)??0)>1||p.some(s=>s.id===n.id)||p.push(n);for(let n of g.selection??[]){let e=t.graph.getNode(n);e&&!p.some(s=>s.id===e.id)&&p.push(e)}let M=v&&t.graph.getNode(v);if(M){let n=p.findIndex(e=>e.id===M.id);n>=0&&p.splice(n,1),p.unshift(M)}let b=t.violations(),O=(n=b)=>ln(n);if(y.problems||!v&&/\b(wrong|broken|problem|violat|standing)\b/.test(w)){if(b.length===0)return S({say:"Nothing is wrong: every rule holds.",proposals:[],grounded:!0});let n=R(t,O().slice(0,4)),e=(i,r)=>{let d=t.allMutations().find(l=>l.name===i),a=d?q(d.input).find(l=>l.name===r):void 0;return a?.control==="node"&&!a.kinds.includes("*")?a.kinds.map(l=>D(t.schema.tryDefinition(l),l)).join(" or "):B(t.schema,d,r).label},s=[...new Set(b.flatMap(i=>i.repairs).filter(i=>(i.missing??[]).length>0).map(i=>`\u201C${i.label}\u201D (${(i.missing??[]).map(r=>e(i.mutation,r)).join(", ")})`))];return S({say:E([y.moves?.[0]?.said??"",`${Z(b)}:`,b.slice(0,4).map(i=>i.message).join("; ")+(b.length>4?"\u2026":"."),n.length>0?"The repairs below come from the rules themselves.":s.length>0?`Each way to fix ${b.length===1?"it":"these"} asks something first \u2014 ${s.slice(0,4).join(" or ")} \u2014 select the record and its own actions will ask.`:"No rule here names a way to fix it."]),proposals:n,grounded:!0})}let K=/\?\s*$/.test(u)||/^\s*(what|who|whom|whose|which|when|where|why|how|is|are|was|were|does|do|did|can|could|should|would|will|has|have)\b/.test(w),$=K?void 0:t.allMutations().find(n=>{let e=(n.title??n.name).toLowerCase();return e.length>3&&w.includes(e)});if($){let n={},e=[],s=u.slice(u.toLowerCase().indexOf(($.title??$.name).toLowerCase())+($.title??$.name).length),i=p.reduce((a,l)=>{let f=h(l).toLowerCase(),m=a.toLowerCase().indexOf(f);return m<0?a:`${a.slice(0,m)} it${a.slice(m+f.length)}`},s),r=u.match(/"([^"]+)"/)?.[1]??i.match(/^(?:\s+(?:it|this|that|them))?\s+(?:to|as)\s+(.+?)\s*[.!]?$/i)?.[1],d=[...p];for(let a of q($.input)){let l=un(a,d,r,c.today??g.today,w);if(l!==void 0){n[a.name]=l;let f=d.findIndex(m=>m.id===l);f>=0&&d.splice(f,1)}else a.optional||e.push(B(t.schema,$,a.name).label.toLowerCase())}return e.length===0?{say:"I can do that. Review it below.",proposals:R(t,[{mutation:$.name,args:n,why:"you asked in words"}])}:{say:`\u201C${$.title??z($.name)}\u201D needs ${dn(e)} \u2014 say ${e.length===1?"it":"them"} (or select ${e.length===1?"it":"them"}) and ask again.`,proposals:[]}}let tn={mon:"mon",monday:"mon",tue:"tue",tues:"tue",tuesday:"tue",wed:"wed",wednesday:"wed",thu:"thu",thur:"thu",thurs:"thu",thursday:"thu",fri:"fri",friday:"fri",sat:"sat",saturday:"sat",sun:"sun",sunday:"sun"},x=C.map(n=>tn[n]).find(Boolean),_=(n,e,s)=>{let i=t.schema.tryDefinition(n)?.display?.format?.[e];return i?i(s):String(s)},F=n=>{let e=t.schema.tryDefinition(n.kind)?.fieldRoles;if(!e?.start)return null;let s=n[e.start],i=e.end?n[e.end]:void 0,r=e.day?n[e.day]:e.days?n[e.days]:void 0;return s===void 0&&i===void 0?null:[s!==void 0?_(n.kind,e.start,s):null,i!==void 0&&e.end?`\u2013${_(n.kind,e.end,i)}`:null,Array.isArray(r)?` on ${r.join(", ")}`:r!==void 0?` on ${String(r)}`:null].filter(Boolean).join("")||null},sn=n=>{let e=[];for(let s of t.graph.allEdges()){let i=s.from===n?s.to:s.to===n?s.from:null;if(!i)continue;let r=t.graph.getNode(i);r&&!e.some(d=>d.id===r.id)&&e.push(r)}return e},G=n=>{let e=p[0];if(!e)return[];let s=[];for(let r of sn(e.id)){let d=0,a=T(h(r));for(let l of C)l.length>2&&a.includes(l)&&(d+=1);if(x){let l=t.schema.tryDefinition(r.kind)?.fieldRoles,f=l?.day?r[l.day]:void 0,m=l?.days?r[l.days]:void 0;f===x?d+=4:Array.isArray(m)&&m.includes(x)&&(d+=1)}n&&!F(r)||d>0&&s.push({node:r,score:d})}let i=s.sort((r,d)=>d.score-r.score).map(r=>r.node);return n&&F(e)?i.unshift(e):n||i.push(e),i};if(p.length>0&&/\bwhen\b/.test(w)){let n=G(!0)[0]??null,e=n?F(n):null;if(n&&e)return S({say:`${h(n)} runs ${e}.`,proposals:R(t,O(L(b,[n.id])).slice(0,3)),grounded:!0})}if(p.length>0&&/\bwho(m|se)?\b/.test(w))for(let n of G(!1)){let e=[],s=new Set;for(let i of t.schema.definitions)for(let[r,d]of Object.entries(i.edges)){let a=/\bwho\b/i.test(d.description??""),l=/\bwho\b/i.test(d.inverse??"");if(!a&&!l||s.has(r))continue;s.add(r);let f=[...t.graph.in(n.id,r),...t.graph.out(n.id,r)];if(f.length===0)continue;let m=a?d.description:d.inverse;e.push(`${m}: ${f.map(o=>h(o)).join(", ")}`)}if(e.length>0)return S({say:`${h(n)} \u2014 ${e.join("; ")}.`,proposals:R(t,O(L(b,[n.id])).slice(0,3)),grounded:!0})}if(p.length>0){let n=p[0],e=new Set(h(n).toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)),s=C.every(o=>e.has(o)||en.has(o)),i=K||s,r=t.schema.tryDefinition(n.kind),d=o=>o===o.toUpperCase()?o:o.charAt(0).toLowerCase()+o.slice(1),a=X(n,r,{limit:3}).map(o=>{let k=n[o.key];return typeof k=="boolean"&&!/\s/.test(o.label)?k?d(o.label):`not ${d(o.label)}`:typeof k=="string"&&hn.test(k)?`${d(o.label)} ${pn(k)}`:o.alone.startsWith(o.label)?d(o.label)+o.alone.slice(o.label.length):`${d(o.label)} ${o.alone}`}).join(", "),l=L(b,[n.id]),f=new Map;for(let o of[...t.graph.allEdges()]){let k=o.from===n.id?"out":o.to===n.id?"in":null;if(!k)continue;let J=t.graph.getNode(k==="out"?o.to:o.from);if(!J)continue;let P=`${o.kind}|${k}`;if(!f.has(P)){let W;for(let rn of t.schema.definitions){let j=rn.edges[o.kind];if(j&&(W=k==="out"?j.description:j.inverse??j.description,W))break}f.set(P,{sentence:W??z(o.kind).toLowerCase(),names:[]})}let U=f.get(P);U.names.length<6&&U.names.push(h(J))}let m=[...f.values()].slice(0,4).map(o=>`${o.sentence.charAt(0).toUpperCase()}${o.sentence.slice(1)}: ${o.names.join(", ")}`).join(". ");return S({say:E([y.moves?.[0]?.said??"",`${h(n)} \u2014 ${A(D(t.schema.tryDefinition(n.kind),n.kind))}${a?` (${a})`:""}.`,m?`${m}.`:"Connected to nothing yet.",l.length>0?`Trouble: ${l.map(o=>o.message).join("; ")}.`:"Nothing about it is broken."]),proposals:R(t,O(l).slice(0,3)),...i||v?{grounded:!0}:{}})}{let n=w.split(/[^\p{L}\p{N}]+/u).filter(e=>e.length>0&&!an.has(e));if(n.length>0){let e=nn(t,n.join(" "),{...g.principal?{principal:g.principal}:{},...g.selection?{from:g.selection}:{},...c.today??g.today?{today:c.today??g.today}:{},limit:6}),s=e.hits.filter(i=>i.about==="node");if(s.length>0){let i=Q(s.flatMap(a=>{let l=t.graph.getNode(a.id);return l?[l]:[]}),a=>t.schema.tryDefinition(a)),r=s.map(a=>`${a.label}${i.has(a.id)?` \xB7 ${i.get(a.id)}`:""} (${D(t.schema.tryDefinition(a.kind),a.kind)}${a.why.field==="label"?"":`, ${a.why.reading.toLowerCase()}: ${a.why.fragment}`})`);return{say:`${e.total===1?"One thing is":`${gn(e.total)} things are`} called \u201C${e.words}\u201D \u2014 ${r.join("; ")}${e.total>s.length?`; and ${e.total-s.length} more`:""}.`,proposals:[],picks:s}}}}let on=t.schema.kinds.filter(n=>!t.modules.disabledKinds.has(n)).map(n=>{let e=Y(t.schema,n);return`${t.graph.nodesOfKind(n).length} ${e}`}).join(", ");return{say:E([`This graph holds ${on}.`,"Ask about anything by name, ask what's wrong, or say a change in its own words \u2014",`like "${t.allMutations()[0]?.title??"an action"}".`]),proposals:[],unsure:!0}}}function ln(c){return c.flatMap(t=>{let u=t.repairs.find(g=>!g.missing?.length);return u?[{mutation:u.mutation,args:{...u.args},why:t.message}]:[]})}var cn=["No","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten"],gn=c=>cn[c]??String(c);function un(c,t,u,g,w=""){switch(c.control){case"node":return t.find(y=>c.kinds.includes("*")||c.kinds.includes(y.kind))?.id;case"text":return u;case"date":{let h=g??new Date().toISOString().slice(0,10);return c.time?`${h}T09:00`:h}case"choice":{let h=new Set(w.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)),y=(c.options??[]).filter(v=>v.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean).every(S=>h.has(S)));return y.length===1?y[0]:void 0}default:return}}function $n(c){return async(t,u,g={})=>(await import("./chunk.LUUT2ZWF.js")).answerWithModel(c,t,u,g)}var hn=/^\d{4}-\d{2}-\d{2}$/,fn=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function pn(c){let[t,u,g]=c.split("-").map(Number);return`${g} ${fn[u-1]??""} ${t}`}export{bn as a,ln as b,$n as c};
1
+ import{d as R}from"./chunk.EVTZE2OZ.js";import{a as q}from"./chunk.NQNQPPPM.js";import{$ as X,O as Q,P as V,S as z,V as Y,Z as A,Za as nn,_ as D,ab as B,ka as L,la as Z}from"./chunk.VMEX2KZ4.js";var E=c=>c.filter(Boolean).join(" "),en=new Set(["tell","me","about","what","how","show","describe","the","a","an","and","please"]),an=new Set([...en,"where","is","are","was","find","any","anything","something","things","called","named","which","who","of","for","with","to","in","on","i","my","do","does","have","has","can","you","it","that","this","there","we","our","got","be"]),dn=c=>c.length<=1?A(c[0]??"something"):`${c.slice(0,-1).map(A).join(", ")} and ${A(c[c.length-1])}`;function bn(c={}){return async(t,u,g={})=>{let w=u.toLowerCase(),h=n=>V(t.schema.tryDefinition(n.kind),n),y=(await import("./chunk.GHMICJIB.js")).goingFrom(t,u,g,c.today);if(y.reply)return y.reply;let v=y.told,S=n=>y.moves?{...n,moves:y.moves}:n,p=[],C=w.split(/[^a-z0-9]+/).filter(Boolean),I=new Set;for(let n=0;n<C.length;n++){let e="";for(let s=n;s<Math.min(C.length,n+6);s++)e+=C[s],I.add(e)}let T=n=>n.toLowerCase().replace(/[^a-z0-9]+/g,""),H=[...t.graph.allNodes()].map(n=>({node:n,label:T(h(n))})).filter(({label:n})=>n.length>=2&&I.has(n)).sort((n,e)=>e.label.length-n.label.length),N=new Map;for(let{label:n}of H)N.set(n,(N.get(n)??0)+1);for(let{node:n,label:e}of H)(N.get(e)??0)>1||p.some(s=>s.id===n.id)||p.push(n);for(let n of g.selection??[]){let e=t.graph.getNode(n);e&&!p.some(s=>s.id===e.id)&&p.push(e)}let M=v&&t.graph.getNode(v);if(M){let n=p.findIndex(e=>e.id===M.id);n>=0&&p.splice(n,1),p.unshift(M)}let b=t.violations(),O=(n=b)=>ln(n);if(y.problems||!v&&/\b(wrong|broken|problem|violat|standing)\b/.test(w)){if(b.length===0)return S({say:"Nothing is wrong: every rule holds.",proposals:[],grounded:!0});let n=R(t,O().slice(0,4)),e=(i,r)=>{let d=t.allMutations().find(l=>l.name===i),a=d?q(d.input).find(l=>l.name===r):void 0;return a?.control==="node"&&!a.kinds.includes("*")?a.kinds.map(l=>D(t.schema.tryDefinition(l),l)).join(" or "):B(t.schema,d,r).label},s=[...new Set(b.flatMap(i=>i.repairs).filter(i=>(i.missing??[]).length>0).map(i=>`\u201C${i.label}\u201D (${(i.missing??[]).map(r=>e(i.mutation,r)).join(", ")})`))];return S({say:E([y.moves?.[0]?.said??"",`${Z(b)}:`,b.slice(0,4).map(i=>i.message).join("; ")+(b.length>4?"\u2026":"."),n.length>0?"The repairs below come from the rules themselves.":s.length>0?`Each way to fix ${b.length===1?"it":"these"} asks something first \u2014 ${s.slice(0,4).join(" or ")} \u2014 select the record and its own actions will ask.`:"No rule here names a way to fix it."]),proposals:n,grounded:!0})}let K=/\?\s*$/.test(u)||/^\s*(what|who|whom|whose|which|when|where|why|how|is|are|was|were|does|do|did|can|could|should|would|will|has|have)\b/.test(w),$=K?void 0:t.allMutations().find(n=>{let e=(n.title??n.name).toLowerCase();return e.length>3&&w.includes(e)});if($){let n={},e=[],s=u.slice(u.toLowerCase().indexOf(($.title??$.name).toLowerCase())+($.title??$.name).length),i=p.reduce((a,l)=>{let f=h(l).toLowerCase(),m=a.toLowerCase().indexOf(f);return m<0?a:`${a.slice(0,m)} it${a.slice(m+f.length)}`},s),r=u.match(/"([^"]+)"/)?.[1]??i.match(/^(?:\s+(?:it|this|that|them))?\s+(?:to|as)\s+(.+?)\s*[.!]?$/i)?.[1],d=[...p];for(let a of q($.input)){let l=un(a,d,r,c.today??g.today,w);if(l!==void 0){n[a.name]=l;let f=d.findIndex(m=>m.id===l);f>=0&&d.splice(f,1)}else a.optional||e.push(B(t.schema,$,a.name).label.toLowerCase())}return e.length===0?{say:"I can do that. Review it below.",proposals:R(t,[{mutation:$.name,args:n,why:"you asked in words"}])}:{say:`\u201C${$.title??z($.name)}\u201D needs ${dn(e)} \u2014 say ${e.length===1?"it":"them"} (or select ${e.length===1?"it":"them"}) and ask again.`,proposals:[]}}let tn={mon:"mon",monday:"mon",tue:"tue",tues:"tue",tuesday:"tue",wed:"wed",wednesday:"wed",thu:"thu",thur:"thu",thurs:"thu",thursday:"thu",fri:"fri",friday:"fri",sat:"sat",saturday:"sat",sun:"sun",sunday:"sun"},x=C.map(n=>tn[n]).find(Boolean),_=(n,e,s)=>{let i=t.schema.tryDefinition(n)?.display?.format?.[e];return i?i(s):String(s)},F=n=>{let e=t.schema.tryDefinition(n.kind)?.fieldRoles;if(!e?.start)return null;let s=n[e.start],i=e.end?n[e.end]:void 0,r=e.day?n[e.day]:e.days?n[e.days]:void 0;return s===void 0&&i===void 0?null:[s!==void 0?_(n.kind,e.start,s):null,i!==void 0&&e.end?`\u2013${_(n.kind,e.end,i)}`:null,Array.isArray(r)?` on ${r.join(", ")}`:r!==void 0?` on ${String(r)}`:null].filter(Boolean).join("")||null},sn=n=>{let e=[];for(let s of t.graph.allEdges()){let i=s.from===n?s.to:s.to===n?s.from:null;if(!i)continue;let r=t.graph.getNode(i);r&&!e.some(d=>d.id===r.id)&&e.push(r)}return e},G=n=>{let e=p[0];if(!e)return[];let s=[];for(let r of sn(e.id)){let d=0,a=T(h(r));for(let l of C)l.length>2&&a.includes(l)&&(d+=1);if(x){let l=t.schema.tryDefinition(r.kind)?.fieldRoles,f=l?.day?r[l.day]:void 0,m=l?.days?r[l.days]:void 0;f===x?d+=4:Array.isArray(m)&&m.includes(x)&&(d+=1)}n&&!F(r)||d>0&&s.push({node:r,score:d})}let i=s.sort((r,d)=>d.score-r.score).map(r=>r.node);return n&&F(e)?i.unshift(e):n||i.push(e),i};if(p.length>0&&/\bwhen\b/.test(w)){let n=G(!0)[0]??null,e=n?F(n):null;if(n&&e)return S({say:`${h(n)} runs ${e}.`,proposals:R(t,O(L(b,[n.id])).slice(0,3)),grounded:!0})}if(p.length>0&&/\bwho(m|se)?\b/.test(w))for(let n of G(!1)){let e=[],s=new Set;for(let i of t.schema.definitions)for(let[r,d]of Object.entries(i.edges)){let a=/\bwho\b/i.test(d.description??""),l=/\bwho\b/i.test(d.inverse??"");if(!a&&!l||s.has(r))continue;s.add(r);let f=[...t.graph.in(n.id,r),...t.graph.out(n.id,r)];if(f.length===0)continue;let m=a?d.description:d.inverse;e.push(`${m}: ${f.map(o=>h(o)).join(", ")}`)}if(e.length>0)return S({say:`${h(n)} \u2014 ${e.join("; ")}.`,proposals:R(t,O(L(b,[n.id])).slice(0,3)),grounded:!0})}if(p.length>0){let n=p[0],e=new Set(h(n).toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)),s=C.every(o=>e.has(o)||en.has(o)),i=K||s,r=t.schema.tryDefinition(n.kind),d=o=>o===o.toUpperCase()?o:o.charAt(0).toLowerCase()+o.slice(1),a=X(n,r,{limit:3}).map(o=>{let k=n[o.key];return typeof k=="boolean"&&!/\s/.test(o.label)?k?d(o.label):`not ${d(o.label)}`:typeof k=="string"&&hn.test(k)?`${d(o.label)} ${pn(k)}`:o.alone.startsWith(o.label)?d(o.label)+o.alone.slice(o.label.length):`${d(o.label)} ${o.alone}`}).join(", "),l=L(b,[n.id]),f=new Map;for(let o of[...t.graph.allEdges()]){let k=o.from===n.id?"out":o.to===n.id?"in":null;if(!k)continue;let J=t.graph.getNode(k==="out"?o.to:o.from);if(!J)continue;let P=`${o.kind}|${k}`;if(!f.has(P)){let W;for(let rn of t.schema.definitions){let j=rn.edges[o.kind];if(j&&(W=k==="out"?j.description:j.inverse??j.description,W))break}f.set(P,{sentence:W??z(o.kind).toLowerCase(),names:[]})}let U=f.get(P);U.names.length<6&&U.names.push(h(J))}let m=[...f.values()].slice(0,4).map(o=>`${o.sentence.charAt(0).toUpperCase()}${o.sentence.slice(1)}: ${o.names.join(", ")}`).join(". ");return S({say:E([y.moves?.[0]?.said??"",`${h(n)} \u2014 ${A(D(t.schema.tryDefinition(n.kind),n.kind))}${a?` (${a})`:""}.`,m?`${m}.`:"Connected to nothing yet.",l.length>0?`Trouble: ${l.map(o=>o.message).join("; ")}.`:"Nothing about it is broken."]),proposals:R(t,O(l).slice(0,3)),...i||v?{grounded:!0}:{}})}{let n=w.split(/[^\p{L}\p{N}]+/u).filter(e=>e.length>0&&!an.has(e));if(n.length>0){let e=nn(t,n.join(" "),{...g.principal?{principal:g.principal}:{},...g.selection?{from:g.selection}:{},...c.today??g.today?{today:c.today??g.today}:{},limit:6}),s=e.hits.filter(i=>i.about==="node");if(s.length>0){let i=Q(s.flatMap(a=>{let l=t.graph.getNode(a.id);return l?[l]:[]}),a=>t.schema.tryDefinition(a)),r=s.map(a=>`${a.label}${i.has(a.id)?` \xB7 ${i.get(a.id)}`:""} (${D(t.schema.tryDefinition(a.kind),a.kind)}${a.why.field==="label"?"":`, ${a.why.reading.toLowerCase()}: ${a.why.fragment}`})`);return{say:`${e.total===1?"One thing is":`${gn(e.total)} things are`} called \u201C${e.words}\u201D \u2014 ${r.join("; ")}${e.total>s.length?`; and ${e.total-s.length} more`:""}.`,proposals:[],picks:s}}}}let on=t.schema.kinds.filter(n=>!t.modules.disabledKinds.has(n)).map(n=>{let e=Y(t.schema,n);return`${t.graph.nodesOfKind(n).length} ${e}`}).join(", ");return{say:E([`This graph holds ${on}.`,"Ask about anything by name, ask what's wrong, or say a change in its own words \u2014",`like "${t.allMutations()[0]?.title??"an action"}".`]),proposals:[],unsure:!0}}}function ln(c){return c.flatMap(t=>{let u=t.repairs.find(g=>!g.missing?.length);return u?[{mutation:u.mutation,args:{...u.args},why:t.message}]:[]})}var cn=["No","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten"],gn=c=>cn[c]??String(c);function un(c,t,u,g,w=""){switch(c.control){case"node":return t.find(y=>c.kinds.includes("*")||c.kinds.includes(y.kind))?.id;case"text":return u;case"date":{let h=g??new Date().toISOString().slice(0,10);return c.time?`${h}T09:00`:h}case"choice":{let h=new Set(w.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)),y=(c.options??[]).filter(v=>v.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean).every(S=>h.has(S)));return y.length===1?y[0]:void 0}default:return}}function $n(c){return async(t,u,g={})=>(await import("./chunk.IXVSJJQH.js")).answerWithModel(c,t,u,g)}var hn=/^\d{4}-\d{2}-\d{2}$/,fn=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function pn(c){let[t,u,g]=c.split("-").map(Number);return`${g} ${fn[u-1]??""} ${t}`}export{bn as a,ln as b,$n as c};
@@ -0,0 +1 @@
1
+ import"./chunk.WVUJXDXZ.js";import{i as S}from"./chunk.UMMN5Z6V.js";import"./chunk.DG2WKNMX.js";import"./chunk.HPD3DSTP.js";import"./chunk.VD6FJ6KJ.js";import"./chunk.OHGJ5BZ4.js";import{P as R}from"./chunk.VMEX2KZ4.js";import"./chunk.AJZBJBMO.js";var p=(n,e,t)=>({untrusted:!0,authoredBy:t.say(e),text:n});function $(n,e){let t;for(let[s,r]of Object.entries(n)){if(typeof r!="string"||s==="id"||s==="kind")continue;let o=e.fieldBy(n.id,s);o&&(t??={...n},t[s]=p(r,o,e))}return t??n}function B(n,e,t){let s=r=>{if(Array.isArray(r))return r.map(s);if(r!==null&&typeof r=="object"&&"id"in r&&"label"in r){let o=r,a=t.recordBy(o.id);return a?{...o,label:p(o.label,a,t)}:o}if(typeof r=="string"){let o=t.recordBy(n);return o?p(r,o,t):r}return r};return Object.fromEntries(Object.entries(e).map(([r,o])=>[r,s(o)]))}function N(n,e){return n.map(t=>{let s=e.recordBy(t.id);return s?{...t,label:p(t.label,s,e)}:t})}function M(n,e){return{...n,nodes:n.nodes.map(t=>$(t,e))}}var O=n=>(JSON.stringify(n)??"null").length,A=n=>typeof n=="number"&&Number.isFinite(n)&&n>0?Math.floor(n):0;function f(n,e,t,s,r,o=""){let a=n-e-t;return a>0?`and ${a} more ${r}: call ${s} with ${o}offset ${e+t} for the next page.`:void 0}var _=({line:n,...e})=>e;function j(n){let e;for(let[t,s]of Object.entries(n))typeof s!="string"||s.length<=600||(e??={...n},e[t]=`${s.slice(0,600)}\u2026 (cut at ${600} of ${s.length} characters)`);return e??n}function E(n,e,t,s){let r=Math.min(t,Math.max(0,n.length-e)),o=n.slice(e,e+r),a=s(o);for(;r>1&&O(a)>8e3;)r=Math.max(1,Math.floor(r*.75)),o=n.slice(e,e+r),a=s(o);return{page:o,answer:a}}function V(n,e){let t=JSON.stringify(e)??"null";if(t.length<=8e3)return e;let s=`This answer was ${t.length} characters, more than the ${8e3} one read answers, so it is cut. Ask ${n} for less, or use search_graph and get_node to read one thing.`;for(let r=8e3-s.length-40;;){let o={cut:s,partial:t.slice(0,r)},a=O(o)-8e3;if(a<=0)return o;r=Math.max(0,r-a-8)}}function C(n,e){let{matched:t,...s}=e,r=n.hits.filter(o=>o.about==="node").length;return n.total>r?{...s,more:`and ${n.total-r} more records match: narrow the words, or add kind:<kind>.`}:s}function I(n,e,t){let s=n.graph.snapshot(),r=A(t.offset),o=s.nodes.length,{page:a,answer:h}=E(s.nodes,r,25,d=>{let c=new Set(d.map(l=>l.id)),u=f(o,r,d.length,"get_graph","nodes");return{...M({nodes:d.map(j),edges:s.edges.filter(l=>c.has(l.from))},e),total:o,...u?{more:u}:{}}});return{data:h,reads:a.map(d=>d.id)}}function P(n,e,t,s){let r=n.graph.getNode(t),o=A(s.offset),a=n.graph.outEdges(t),h=n.graph.inEdges(t),d=a.slice(o,o+20),c=h.slice(o,o+20),u=(i,y)=>{let k=n.graph.getNode(y);return{kind:i,id:y,label:k?R(n.schema.tryDefinition(k.kind),k):y}},l=S(n.schema,n.graph,r),m=n.violations().filter(i=>i.nodeIds.includes(t)),b=[f(a.length,o,d.length,"get_node","links out",`id "${t}" and `),f(h.length,o,c.length,"get_node","links in",`id "${t}" and `),m.length>20?`and ${m.length-20} more problems: get_violations lists them.`:void 0].filter(Boolean);return{data:{node:$(j(r),e),...Object.keys(l.values).length>0?{computed:B(t,l.values,e)}:{},...Object.keys(l.refused).length>0?{uncomputed:l.refused}:{},out:N(d.map(i=>u(i.kind,i.to)),e),in:N(c.map(i=>u(i.kind,i.from)),e),violations:m.slice(0,20).map(_),...b.length>0?{more:b.join(" ")}:{}},reads:[t,...d.map(i=>i.to),...c.map(i=>i.from)]}}function U(n,e){let t=A(e.offset),{page:s,answer:r}=E(n,t,20,o=>{let a=f(n.length,t,o.length,"get_violations","problems");return{violations:o.map(_),total:n.length,...a?{more:a}:{}}});return{data:r,reads:[...new Set(s.flatMap(o=>o.nodeIds))]}}export{I as graphRead,P as nodeRead,C as searchRead,U as violationsRead,V as withinReadChars};
@@ -1 +1 @@
1
- import{a as y}from"./chunk.XOC5BRPU.js";import{Aa as p,B as f,O as d,xa as m}from"./chunk.P7YN4Z3K.js";function P(n){let e=n.indexOf("{"),t=n.indexOf("["),a=t!==-1&&(e===-1||t<e)?t:e;if(a===-1)return;let r=n[a],i=r==="["?"]":"}",o=0,l=!1,s=!1;for(let u=a;u<n.length;u++){let c=n[u];if(l){s?s=!1:c==="\\"?s=!0:c==='"'&&(l=!1);continue}if(c==='"')l=!0;else if(c===r)o+=1;else if(c===i&&(o-=1,o===0))try{return JSON.parse(n.slice(a,u+1))}catch{return}}}function g(n,e){let t;try{t=n.mutation(e.mutation)}catch{return e}let a={...e.args},r=!1;for(let i of y(t.input)){if(i.control!=="node")continue;let o=a[i.name];if(typeof o!="string"||o.length===0||n.graph.getNode(o))continue;let l=o.trim().toLowerCase(),s=[...n.graph.allNodes()].filter(u=>(i.kinds.includes("*")||i.kinds.includes(u.kind))&&d(n.schema.tryDefinition(u.kind),u).trim().toLowerCase()===l);s.length===1&&(a[i.name]=s[0].id,r=!0)}return r?{...e,args:a}:e}function x(n,e,t){let a=t===void 0?null:new Set(t),r=[];for(let i of e){if(typeof i.mutation!="string")continue;let o=!0;try{n.mutation(i.mutation)}catch{o=!1}o?a&&!a.has(i.mutation)&&r.push({proposal:i,why:"not-allowed"}):r.push({proposal:i,why:"unknown"})}return r}function C(n,e,t){let a=t===void 0?null:new Set(t);return e.filter(r=>{if(typeof r.mutation!="string"||a&&!a.has(r.mutation))return!1;try{n.mutation(r.mutation)}catch{return!1}return r.args!==null&&typeof r.args=="object"})}function b(n,e){let t=n.allMutations().find(l=>l.name===e.mutation);if(t?.describe){let l=g(n,e),s=t.input.safeParse?.(l.args);if(s?.success)try{return t.describe(s.data,n.graph)}catch{}}let a=t?.subject?.arg,r=a?e.args[a]:void 0,i=typeof r=="string"?n.graph.getNode(r):void 0,o=t?.title??e.mutation;return i?`${o} \u2014 ${d(n.schema.tryDefinition(i.kind),i)}`:o}function A(n,e){let t=n.allMutations().find(o=>o.name===e.mutation);if(!t)return[];e=g(n,e);let a=t.input.shape??{},r=m(t.input),i=[];for(let o of Object.keys(a)){if(k(a[o]))continue;let l=e.args[o],s=r.find(c=>c.name===o);l!=null&&l!==""&&(!s||typeof l!="string"||n.graph.getNode(l)!==void 0)||i.push({name:o,...s?{kinds:s.kinds}:{},...s?{candidates:s.kinds.includes("*")?n.graph.allNodes().map(c=>c.id):s.kinds.flatMap(c=>n.graph.nodesOfKind(c).map(h=>h.id))}:{},shape:p(t.input,o)})}return i}function k(n){let e=f(n)?.type;return e==="optional"||e==="default"||e==="nullable"}export{P as a,g as b,x as c,C as d,b as e,A as f};
1
+ import{a as y}from"./chunk.NQNQPPPM.js";import{B as f,Ba as p,P as d,ya as m}from"./chunk.VMEX2KZ4.js";function P(n){let e=n.indexOf("{"),t=n.indexOf("["),a=t!==-1&&(e===-1||t<e)?t:e;if(a===-1)return;let r=n[a],i=r==="["?"]":"}",o=0,l=!1,s=!1;for(let u=a;u<n.length;u++){let c=n[u];if(l){s?s=!1:c==="\\"?s=!0:c==='"'&&(l=!1);continue}if(c==='"')l=!0;else if(c===r)o+=1;else if(c===i&&(o-=1,o===0))try{return JSON.parse(n.slice(a,u+1))}catch{return}}}function g(n,e){let t;try{t=n.mutation(e.mutation)}catch{return e}let a={...e.args},r=!1;for(let i of y(t.input)){if(i.control!=="node")continue;let o=a[i.name];if(typeof o!="string"||o.length===0||n.graph.getNode(o))continue;let l=o.trim().toLowerCase(),s=[...n.graph.allNodes()].filter(u=>(i.kinds.includes("*")||i.kinds.includes(u.kind))&&d(n.schema.tryDefinition(u.kind),u).trim().toLowerCase()===l);s.length===1&&(a[i.name]=s[0].id,r=!0)}return r?{...e,args:a}:e}function x(n,e,t){let a=t===void 0?null:new Set(t),r=[];for(let i of e){if(typeof i.mutation!="string")continue;let o=!0;try{n.mutation(i.mutation)}catch{o=!1}o?a&&!a.has(i.mutation)&&r.push({proposal:i,why:"not-allowed"}):r.push({proposal:i,why:"unknown"})}return r}function C(n,e,t){let a=t===void 0?null:new Set(t);return e.filter(r=>{if(typeof r.mutation!="string"||a&&!a.has(r.mutation))return!1;try{n.mutation(r.mutation)}catch{return!1}return r.args!==null&&typeof r.args=="object"})}function b(n,e){let t=n.allMutations().find(l=>l.name===e.mutation);if(t?.describe){let l=g(n,e),s=t.input.safeParse?.(l.args);if(s?.success)try{return t.describe(s.data,n.graph)}catch{}}let a=t?.subject?.arg,r=a?e.args[a]:void 0,i=typeof r=="string"?n.graph.getNode(r):void 0,o=t?.title??e.mutation;return i?`${o} \u2014 ${d(n.schema.tryDefinition(i.kind),i)}`:o}function A(n,e){let t=n.allMutations().find(o=>o.name===e.mutation);if(!t)return[];e=g(n,e);let a=t.input.shape??{},r=m(t.input),i=[];for(let o of Object.keys(a)){if(k(a[o]))continue;let l=e.args[o],s=r.find(c=>c.name===o);l!=null&&l!==""&&(!s||typeof l!="string"||n.graph.getNode(l)!==void 0)||i.push({name:o,...s?{kinds:s.kinds}:{},...s?{candidates:s.kinds.includes("*")?n.graph.allNodes().map(c=>c.id):s.kinds.flatMap(c=>n.graph.nodesOfKind(c).map(h=>h.id))}:{},shape:p(t.input,o)})}return i}function k(n){let e=f(n)?.type;return e==="optional"||e==="default"||e==="nullable"}export{P as a,g as b,x as c,C as d,b as e,A as f};
@@ -1,8 +1,8 @@
1
- import{a as wr,c as br}from"./chunk.UEEXBS2U.js";import{a as lo,b as co,c as uo}from"./chunk.ZLPA5BAW.js";import{a as fr,e as hr,f as pr,i as wn,j as gr,l as en,m as bn,n as mr,o as yr}from"./chunk.LEVR7WLB.js";import{a as cr,b as Ue,c as yn,d as ur,f as xn,g as Xt,h as so}from"./chunk.6R4EI47C.js";import{d as xr}from"./chunk.NLFLFIDS.js";import{A as Jt,B as Oe,C as Ot,D as xt,E as Zn,G as dt,H as pn,I as Gt,K as Ut,L as gn,M as Jn,N as sr,O as Et,P as At,Q as eo,R as dr,U as to,W as Ct,Z as no,a as zn,b as Gn,ba as mn,c as Un,ca as Lt,d as rr,da as le,e as ir,f as hn,fa as It,g as Kt,h as Rt,i as Pt,j as Xn,k as qn,ka as lr,l as Yt,ra as oo,s as Qn,sa as ro,t as yt,ta as Nt,v as zt,va as io,x as ce,y as $e,ya as ao,z as ar}from"./chunk.SVL6I37U.js";import{Db as Te,Fa as Zo,M as Uo,O as Xo,R as _t,T as fn,U as Vt,V as Wt,Wb as er,X as qo,Xa as Jo,Z as Qo,Zb as tr,bc as nr,cc as or,lb as Mt}from"./chunk.P7YN4Z3K.js";import{a as De,b as be}from"./chunk.MRK6QJV5.js";import{b as ee}from"./chunk.AJZBJBMO.js";var vn=(e,t)=>e<t?-1:e>t?1:0;function Sr(e){return!e||e<=1?1:Math.min(4,Math.ceil(Math.sqrt(e)))}function kr(e,t,n){if(t===n)return 0;let r=e.kinds,o=0;for(let[i,a]of[[t,n],[n,t]]){let l=e.tryDefinition(i);for(let c of Object.values(l?.edges??{}))(c.to==="*"?r:c.to).includes(a)&&(o+=1)}return o}var vr=(e,t)=>`${Math.floor(e/5)},${Math.floor(t/5)}`;function Gi(e,t,n){if(n===0)return[{col:e,row:t}];let r=[];for(let o=0;o<n;o++)r.push({col:e+(n-o)*5,row:t+o*5}),r.push({col:e-o*5,row:t+(n-o)*5}),r.push({col:e-(n-o)*5,row:t-o*5}),r.push({col:e+o*5,row:t-(n-o)*5});return r}function fo(e,t={}){let n=[...e.kinds],r=[...(t.order??[]).filter(l=>n.includes(l)),...n.filter(l=>!(t.order??[]).includes(l)).sort(vn)].filter((l,c,d)=>d.indexOf(l)===c),o=new Map,i=new Set,a=(l,c,d)=>{o.set(l,{col:c,row:d,side:Sr(t.counts?.[l])}),i.add(vr(c,d))};for(let l of r){let c=e.tryDefinition(l)?.plot??t.plots?.[l];c&&a(l,c.col,c.row)}for(let l of r){if(o.has(l))continue;if(o.size===0){a(l,0,0);continue}let c,d=0;for(let f of[...o.keys()].sort(vn)){let g=kr(e,l,f);(g>d||g===d&&g>0&&c!==void 0&&vn(f,c)<0)&&(d=g,c=f)}let s=c?o.get(c):o.get(r.find(f=>o.has(f))),u;for(let f=1;!u&&f<64;f++)u=Gi(s.col,s.row,f).find(g=>!i.has(vr(g.col,g.row)));a(l,u?.col??s.col+5*o.size,u?.row??s.row)}return o}function ho(e,t){let n=[...t.keys()].sort(vn),r=[];for(let o=0;o<n.length;o++)for(let i=o+1;i<n.length;i++){let a=n[o],l=n[i],c=[];for(let[d,s]of[[a,l],[l,a]]){let u=e.tryDefinition(d);for(let[f,g]of Object.entries(u?.edges??{}))(g.to==="*"?e.kinds:g.to).includes(s)&&c.push(f)}c.length>0&&r.push({from:a,to:l,edges:c})}return r}function po(e){let t=1/0,n=1/0,r=-1/0,o=-1/0;for(let i of e.values())t=Math.min(t,i.col),n=Math.min(n,i.row),r=Math.max(r,i.col+i.side),o=Math.max(o,i.row+i.side);return e.size===0?{minCol:0,minRow:0,maxCol:1,maxRow:1}:{minCol:t,minRow:n,maxCol:r,maxRow:o}}function ve(e,t,n){return{x:(e-t)*n/2,y:(e+t)*n/4}}function Ui(e){if(e<3)return[];if(e%2===1){let r=(e-1)/2;return[[r,r]]}let t=e/2-1,n=e/2;return[[t,t],[n,t],[t,n],[n,n]]}function Mr(e){let t=2166136261;for(let n=0;n<e.length;n++)t=Math.imul(t^e.charCodeAt(n),16777619);return(t>>>0)%1e3/1e3}function go(e,t){let n=e.side+1,r=new Set(Ui(n).map(([c,d])=>`${c},${d}`)),o=e.side/n,i=[];for(let c=0;c<n;c++)for(let d=0;d<n;d++)r.has(`${d},${c}`)||i.push([d,c]);i.sort((c,d)=>c[0]+c[1]-(d[0]+d[1])||c[0]-d[0]);let a=t.slice(0,i.length);return{buildings:a.map((c,d)=>{let[s,u]=i[d];return{id:c,col:e.col+(s+.5)*o,row:e.row+(u+.5)*o,footprint:o*.62,height:.55+Mr(c)*.7}}),rest:Math.max(0,t.length-a.length)}}var Rr={width:1200,height:760,focusSize:{width:1200,height:420},relationSize:{width:240,height:140},contextSize:{width:300,height:104},gap:16,unit:16};var Pr=(e,t)=>e?`${e.edgeKind}|${e.direction}`:`raised|${t}`,Tt=(e,t,n)=>`${pn}${e}|${t}|${n}`;function Xi(e,t){if(!Gt(e))return null;let[n="",r="",o="",i=""]=e.slice(pn.length).split("|"),a=t.definitions.find(x=>x.kind===n),l=Wt(t,n),c=r==="raised"?null:(()=>{let x=a?.edges[r]??t.definitions.map(h=>h.edges[r]).find(Boolean);return((o==="in"?x?.inverse:x?.description)??_t(r)).toLowerCase()})(),[d="",s=""]=i.split("="),u=d.split(":")[0],f=i===""||i==="kind"||i.startsWith("more")?null:`${qo(a,u).toLowerCase()}: ${s==="none"?"none":s}`;return[i.startsWith("more")?`More ${l.toLowerCase()}`:l,[c,f].filter(Boolean).join(", ")].filter(Boolean).join(" \u2014 ")}function Sn(e,t){let n=e.map(()=>0),r=e.map((a,l)=>({size:a,index:l})).sort((a,l)=>a.size-l.size||a.index-l.index),o=Math.max(t,e.length),i=e.length;for(let{size:a,index:l}of r){let c=Math.max(1,Math.floor(o/i));n[l]=Math.min(a,c),o-=n[l],i-=1}return n}function yo(e){return Pr(e.via,e.node.kind)}function kn(e,t){let n=[],r=0;return e.forEach((o,i)=>{if(o<=0)return;if(n.length>0&&o<=r){for(let l=0;l<o;l++)n[n.length-1].push(i);r-=o;return}let a=o;for(;a>0;){let l=Math.min(t,a);n.push(Array.from({length:l},()=>i)),a-=l,r=t-l}}),n}function xo(e,t,n){let r=Sn(e,t*n);for(;kn(r,t).length>n;){let o=-1;if(r.forEach((i,a)=>{i>1&&(o<0||i>r[o])&&(o=a)}),o<0)break;r[o]=r[o]-1}return r}function qi(e,t,n){let r=o=>[t.chosen?.has(o.id)?0:1,t.hits?.has(o.id)?0:1,t.flagged?.has(o.id)?0:1,-(t.touched?.get(o.id)??0),-n.neighbors(o.id).length];return e.map((o,i)=>({node:o,index:i,key:r(o)})).sort((o,i)=>{for(let a=0;a<o.key.length;a++)if(o.key[a]!==i.key[a])return o.key[a]-i.key[a];return o.index-i.index}).map(o=>o.node)}var Qi=5,Zi=(e,t)=>{for(let n=0;n<e.length;n++)if(e[n]!==t[n])return e[n]<t[n];return!1};function Or(e,t,n){if(e.length===0||t<2)return;let r=e[0].kind,o={schema:n.schema,graph:n.graph,...n.today?{today:n.today}:{}},i=[];for(let l of Zo(n.schema,r).groups)if(l.key!==n.exclude)if(l.buckets)for(let c of["decade","year","month"])i.push({by:l.key,bucket:c});else i.push({by:l.key});let a;return i.forEach((l,c)=>{let s=xr(e,{group:l},o).groups;if(s.length<2||s.length>t)return;let f=s.filter(x=>x.key!=="").reduce((x,y)=>x+y.nodes.length,0)/e.length;if(f<.5||s.some(x=>x.nodes.length>e.length*.75))return;let g=[-Math.round(f*100),Math.abs(s.length-Qi),c];(!a||Zi(g,a.score))&&(a={grouping:{by:l.by,...l.bucket?{bucket:l.bucket}:{},groups:s},score:g})}),a?.grouping}function wo(e,t){let n=y=>({id:y.node.id,kind:y.node.kind,node:y.node,...y.via?{via:y.via}:{}});if(e.length<=t.budget)return e.map(n);let r={...t.relevance,chosen:new Set([...t.relevance?.chosen??[],...t.selection??[]])},o=new Map;for(let y of e){let h=Pr(y.via,y.node.kind),m=o.get(h);m?m.push(y):o.set(h,[y])}let i=[...o.entries()].map(([y,h])=>({key:y,run:h,via:h[0].via,kinds:[...new Set(h.map(m=>m.node.kind))],members:[],whole:!1,extra:0})),a=Sn(i.map(y=>y.run.length),t.budget);i.forEach((y,h)=>y.whole=y.run.length<=a[h]);let l=i.filter(y=>!y.whole),c=i.filter(y=>y.whole).reduce((y,h)=>y+h.run.length,0),d=Math.max(l.length,t.budget-c);for(let y of l){y.members=qi(y.run.map(m=>m.node),r,t.graph);let h=d-(l.length-1);y.kinds.length>1&&y.kinds.length<=h?y.byKind=!0:y.kinds.length===1&&(y.grouping=Or(y.members,h,{schema:t.schema,graph:t.graph,...y.via?{exclude:y.via.edgeKind}:{},...t.today?{today:t.today}:{}}))}let s=y=>y.byKind?y.kinds.length:y.grouping?y.grouping.groups.length:1;for(;l.reduce((y,h)=>y+s(h),0)>d;){let y=[...l].filter(h=>s(h)>1).sort((h,m)=>s(m)-s(h))[0];if(!y)break;y.grouping=void 0,y.byKind=!1}d-=l.reduce((y,h)=>y+s(h),0);let u=y=>y.byKind?y.kinds.some(h=>t.expanded.has(Tt(h,y.key,"kind"))):y.grouping?.groups.some(h=>t.expanded.has(Tt(y.kinds[0],y.key,mo(y.grouping,h.key)))),f=l.filter(y=>!y.grouping&&!y.byKind?!0:u(y)),g=Sn(f.map(y=>y.members.length),Math.max(0,d));f.forEach((y,h)=>y.extra=d>0?g[h]:0);let x=[];for(let y of i){let{key:h,via:m}=y;if(y.whole){x.push(...y.run.map(n));continue}let b=w=>({id:w.id,kind:w.kind,node:w,...m?{via:m}:{}}),R=new Map(y.run.map((w,M)=>[w.node.id,M])),P=(w,M,A)=>{let j=[...w.slice(0,M)].sort((F,D)=>R.get(F.id)-R.get(D.id));x.push(...j.map(b));let C=w.slice(M);if(C.length===0)return;let $=C[0].kind;x.push({id:Tt($,h,A?`more:${A}`:"more"),kind:$,...m?{via:m}:{},aggregate:{kind:$,memberIds:C.map(F=>F.id),label:M>0?`${C.length} more ${t.plural($).toLowerCase()}`:`${C.length} ${t.plural($).toLowerCase()}`,opens:{in:"picture",focus:Oe($),within:A?{filter:A}:{}}}})},O=m&&t.focusId?`${m.edgeKind}:${t.focusId}`:void 0;if(y.byKind){let w=y.kinds.find(M=>t.expanded.has(Tt(M,h,"kind")));for(let M of y.kinds){let A=y.members.filter(j=>j.kind===M);if(M===w){let j=y.extra+1;A.length<=j?x.push(...A.map(b)):P(A,j-1,O);continue}x.push({id:Tt(M,h,"kind"),kind:M,...m?{via:m}:{},aggregate:{kind:M,memberIds:A.map(j=>j.id),label:t.plural(M),opens:{in:"place"}}})}continue}let k=y.grouping;if(!k){P(y.members,y.extra,O);continue}let B=y.kinds[0],S=k.groups.find(w=>t.expanded.has(Tt(B,h,mo(k,w.key))));for(let w of k.groups){if(w===S){let M=y.members.filter(j=>w.nodes.includes(j)),A=y.extra+1;if(M.length<=A)x.push(...M.map(b));else{let j=w.key!==""&&!w.key.includes(",")&&!k.bucket,C=[O,j?`${k.by}:${w.key}`:void 0].filter(Boolean).join(",")||void 0;P(M,A-1,C)}continue}x.push({id:Tt(B,h,mo(k,w.key)),kind:B,...m?{via:m}:{},aggregate:{kind:B,memberIds:y.members.filter(M=>w.nodes.includes(M)).map(M=>M.id),label:w.label.charAt(0).toUpperCase()+w.label.slice(1),opens:{in:"place"}}})}}return x}var mo=(e,t)=>`${e.by}${e.bucket?`:${e.bucket}`:""}=${t||"none"}`;function bo(e,t,n=6){return e.x<t.x+t.width+n&&t.x<e.x+e.width+n&&e.y<t.y+t.height+n&&t.y<e.y+e.height+n}var Er=(e,t)=>ve(e.col+e.side/2,e.row+e.side/2,t);function vo(e,t,n,r,o={},i={}){let a={};for(let L of e)a[L.kind]=L.count;let l=fo(t,{...i.order?{order:i.order}:{},counts:a,...i.plots?{plots:i.plots}:{}}),c=o.left??0,d=r.width-c-(o.right??0),s=c+d/2,u=r.height*.53,f=po(l),g=[ve(f.minCol,f.minRow,1),ve(f.maxCol,f.minRow,1),ve(f.minCol,f.maxRow,1),ve(f.maxCol,f.maxRow,1)],x=Math.min(...g.map(L=>L.x)),y=Math.max(...g.map(L=>L.x)),h=Math.min(...g.map(L=>L.y)),m=Math.max(...g.map(L=>L.y)),b={x:Math.max(1,y-x),y:Math.max(.5,m-h)},R=Math.max(40,d-n.width*1.1),P=Math.max(24,r.height*.62-n.height*1.1),O=Math.max(18,Math.min(160,R/b.x,P/b.y)),k=i.scale??1,B=i.minHeight??0,S=i.avoid??[],w=0,M=(L,Y,v=1,N={x:0,y:0})=>{let T=s-(x+y)/2*L+N.x+w,G=u-(h+m)/2*L+N.y,H={width:n.width*Y,height:n.height*Y},re=e.map(J=>Er(l.get(J.kind),L).y),ie=Math.max(...re),de=Math.min(...re);return e.map(J=>{let Ce=l.get(J.kind),ke=Er(Ce,L),et=ie===de?.5:(ke.y-de)/(ie-de),Ke=.85+et*.45,U=H.width*Ke,Le=Math.max(B,H.height*Ke),tt=Le+(J.marquee??0)+(J.opened>0?Math.max(J.openedMin??0,J.opened*v):0);return{id:J.id,x:T+ke.x-U/2,y:G+ke.y-Le/2,width:U,height:tt,depth:1-et*.65,plot:Ce}})},A=L=>L.some((Y,v)=>L.some((N,T)=>T!==v&&bo(Y,N)))||L.some(Y=>S.some(v=>bo(Y,v))),j=L=>{if(S.length===0)return[{x:0,y:0}];let Y=Math.max(...S.map(T=>T.width))/2+L,v=Math.max(...S.map(T=>T.height))/2+L/2,N=[{x:0,y:0}];for(let T of[.5,.75,1,1.25]){let G=Y*T,H=v*T;N.push({x:G,y:0},{x:-G,y:0},{x:0,y:H},{x:0,y:-H},{x:G,y:H},{x:-G,y:H},{x:G,y:-H},{x:-G,y:-H})}return N},C=r.width-(o.right??0),$=L=>L.reduce((Y,v)=>{let N=Math.max(0,Math.min(v.x+v.width,r.width)-Math.max(v.x,0)),T=Math.max(0,Math.min(v.y+v.height,r.height)-Math.max(v.y,0));return Y+v.width*v.height-N*T},0),F=(L,Y,v)=>{let N,T;for(let G of j(L)){let H=M(L,Y,v,G);if(A(H)){T??={placed:H,shift:G};continue}let re=$(H);(!N||re<N.off-.5)&&(N={placed:H,shift:G,off:re})}return N??T},D=O,K=k,z=1,V=F(D,K,z);for(;A(V.placed)&&K>1.001;)K=Math.max(1,K-.05),V=F(D,K,z);for(;A(V.placed)&&z>.3;)z=Math.max(.3,z-.1),V=F(D,K,z);if(A(V.placed)||$(V.placed)>0){let L=A(V.placed)?void 0:{cell:D,settled:V,off:$(V.placed)};for(let Y=.9;Y>=.3;Y-=.1){let v=O*Y,N=F(v,K,z);if(A(N.placed))continue;let T=$(N.placed);if((!L||T<L.off-.5)&&(L={cell:v,settled:N,off:T}),T===0)break}L&&(D=L.cell,V=L.settled)}for(let L=0;A(V.placed)&&L<80;L++)D*=1.06,V=F(D,K,z);if(S.length===0){let L=Math.min(...V.placed.map(N=>N.x)),Y=Math.max(...V.placed.map(N=>N.x+N.width)),v=Y-L>C-c?0:L<c?c-L:Y>C?C-Y:0;if(v!==0){w=v;let N=M(D,K,z,V.shift);A(N)?w=0:V={placed:N,shift:V.shift}}}i.zoom&&i.zoom!==1&&(D*=i.zoom,w*=i.zoom,V=F(D,K,z));let ge=V.placed,me=s-(x+y)/2*D+V.shift.x+w,X=u-(h+m)/2*D+V.shift.y,oe={cell:D,originX:me,originY:X,pan:i.pan??{x:0,y:0},extent:{x:me+x*D,y:X+h*D,width:b.x*D,height:b.y*D},openedShare:z};return{placed:ge,frame:oe,map:l}}function wt(e){let t={x:e.width*.45,y:e.height*.45};if(!e.city)return t;let{extent:n}=e.city,r=24;return{x:Math.max(t.x,n.x+n.width-e.width+r,-n.x+r),y:Math.max(t.y,n.y+n.height-e.height+r,-n.y+r)}}var Mn=48;function So(e){if(!e.city)return[];let{width:t,height:n}=e,r=[];for(let o of e.nodes){if(!o.id.startsWith("kind:")||Math.round(o.plane)!==2)continue;let i=o.x+o.width/2,a=o.y+o.height/2,l=i<0?"left":i>t?"right":a<0?"top":a>n?"bottom":null;if(!l)continue;let c=l==="left"||l==="right",d=c?Math.max(0,Math.min(n,a)):Math.max(0,Math.min(t,i)),s=(g,x)=>g<x/4?x/4-g:g>x*3/4?x*3/4-g:0,u=(g,x)=>g<Mn?Mn-g:g>x-Mn?x-Mn-g:0,f=c?{x:s(i,t),y:u(a,n)}:{x:u(i,t),y:s(a,n)};r.push({id:o.id,kind:o.id.slice(5),side:l,along:d,by:f})}return r}function ko(e,t,n,r,o){return{x:e.x+(n.x-e.x-t.x-r.x)*(1-o),y:e.y+(n.y-e.y-t.y-r.y)*(1-o)}}var Ji={rankOf:()=>{},parentOf:()=>{}};function Ar(e,t){if(t.size===0)return Ji;let n=e.kinds,r=new Map,o=(d,s)=>{d!==s&&((r.get(d)??r.set(d,new Set).get(d)).add(s),(r.get(s)??r.set(s,new Set).get(s)).add(d))};for(let d of n){let s=e.tryDefinition(d);if(s)for(let u of Object.values(s.edges??{})){let f=u.to==="*"?n:u.to;for(let g of f)o(d,g)}}let i=new Map,a=new Map,l=[...t].filter(d=>n.includes(d));for(let d of l)i.set(d,0);let c=0;for(;l.length>0;){c+=1;let d=[];for(let s of[...l].sort((u,f)=>n.indexOf(u)-n.indexOf(f)))for(let u of[...r.get(s)??[]].sort((f,g)=>n.indexOf(f)-n.indexOf(g)))i.has(u)||(i.set(u,c),c===2&&a.set(u,s),d.push(u));l=d}return{rankOf:d=>{let s=i.get(d);if(s!==0)return s===1?"primary":"secondary"},parentOf:d=>a.get(d)}}function Cr(e,t,n,r,o={}){if(n){let i=new Map;for(let a of e.allEdges()){if(r&&a.kind!==r)continue;let l=a.from===n.id?a.to:a.to===n.id?a.from:null;if(l===null||l===n.id)continue;let c=e.getNode(l);if(!c||i.has(l))continue;let d=a.from===n.id?"out":"in",s=d==="out"?n.kind:c.kind,u=ea(t,s,a.kind,d);i.set(l,{node:c,via:{edgeKind:a.kind,direction:d,...u?{description:u}:{}}})}if(i.size>0){let a=l=>`${l.via.edgeKind}|${l.via.description??""}`;return[...i.values()].sort((l,c)=>(a(l)<a(c)?-1:a(l)>a(c)?1:0)||dt(l.node,c.node))}}if(n){let i=o[n.id]??[],a=new Set,l=[];for(let c of i){if(c===n.id||a.has(c))continue;let d=e.getNode(c);d&&(r&&r!=="judges"&&d.kind!==r||(a.add(c),l.push({node:d,via:{edgeKind:"judges",direction:"out",description:"what it finds wrong"}})))}if(l.length>0)return l.sort((c,d)=>dt(c.node,d.node))}return r?e.allNodes().filter(i=>i.kind===r).sort(dt).map(i=>({node:i})):[]}function ea(e,t,n,r){let i=e.tryDefinition(t)?.edges?.[n];return r==="out"?i?.description:i?.inverse}function Lr(e,t,n){let r=new Map,o=[...t.values()].sort((d,s)=>d.plane-s.plane);for(let d of o)for(let s of d.aggregate?.memberIds??[])!t.has(s)&&!r.has(s)&&r.set(s,d.id);let i=d=>t.get(d)??t.get(r.get(d)??""),a=new Map,l=new Map,c=new Map;for(let d of e.allEdges()){let s=i(d.from),u=i(d.to);if(!s||!u||s.id===u.id&&!(n.overview&&s.aggregate&&s.plane===2))continue;let f=`${d.kind}:${s.id}:${u.id}`,g=a.get(f);if(g){let x=`${d.from}
1
+ import{a as wr,c as br}from"./chunk.DY2FFBWF.js";import{a as lo,b as co,c as uo}from"./chunk.I5KD54S6.js";import{a as fr,e as hr,f as pr,i as wn,j as gr,l as en,m as bn,n as mr,o as yr}from"./chunk.XDHBV5K5.js";import{a as cr,b as Ue,c as yn,d as ur,f as xn,g as Xt,h as so}from"./chunk.6R4EI47C.js";import{d as xr}from"./chunk.QZWN46V6.js";import{A as Jt,B as Oe,C as Ot,D as xt,E as Zn,G as dt,H as pn,I as Gt,K as Ut,L as gn,M as Jn,N as sr,O as Et,P as At,Q as eo,R as dr,U as to,W as Ct,Z as no,a as zn,b as Gn,ba as mn,c as Un,ca as Lt,d as rr,da as le,e as ir,f as hn,fa as It,g as Kt,h as Rt,i as Pt,j as Xn,k as qn,ka as lr,l as Yt,ra as oo,s as Qn,sa as ro,t as yt,ta as Nt,v as zt,va as io,x as ce,y as $e,ya as ao,z as ar}from"./chunk.OYULDOQP.js";import{Eb as Te,Ga as Zo,N as Uo,P as Xo,S as _t,U as fn,V as Vt,W as Wt,Xb as er,Y as qo,Ya as Jo,_ as Qo,_b as tr,cc as nr,dc as or,mb as Mt}from"./chunk.VMEX2KZ4.js";import{a as De,b as be}from"./chunk.MRK6QJV5.js";import{b as ee}from"./chunk.AJZBJBMO.js";var vn=(e,t)=>e<t?-1:e>t?1:0;function Sr(e){return!e||e<=1?1:Math.min(4,Math.ceil(Math.sqrt(e)))}function kr(e,t,n){if(t===n)return 0;let r=e.kinds,o=0;for(let[i,a]of[[t,n],[n,t]]){let l=e.tryDefinition(i);for(let c of Object.values(l?.edges??{}))(c.to==="*"?r:c.to).includes(a)&&(o+=1)}return o}var vr=(e,t)=>`${Math.floor(e/5)},${Math.floor(t/5)}`;function Gi(e,t,n){if(n===0)return[{col:e,row:t}];let r=[];for(let o=0;o<n;o++)r.push({col:e+(n-o)*5,row:t+o*5}),r.push({col:e-o*5,row:t+(n-o)*5}),r.push({col:e-(n-o)*5,row:t-o*5}),r.push({col:e+o*5,row:t-(n-o)*5});return r}function fo(e,t={}){let n=[...e.kinds],r=[...(t.order??[]).filter(l=>n.includes(l)),...n.filter(l=>!(t.order??[]).includes(l)).sort(vn)].filter((l,c,d)=>d.indexOf(l)===c),o=new Map,i=new Set,a=(l,c,d)=>{o.set(l,{col:c,row:d,side:Sr(t.counts?.[l])}),i.add(vr(c,d))};for(let l of r){let c=e.tryDefinition(l)?.plot??t.plots?.[l];c&&a(l,c.col,c.row)}for(let l of r){if(o.has(l))continue;if(o.size===0){a(l,0,0);continue}let c,d=0;for(let f of[...o.keys()].sort(vn)){let g=kr(e,l,f);(g>d||g===d&&g>0&&c!==void 0&&vn(f,c)<0)&&(d=g,c=f)}let s=c?o.get(c):o.get(r.find(f=>o.has(f))),u;for(let f=1;!u&&f<64;f++)u=Gi(s.col,s.row,f).find(g=>!i.has(vr(g.col,g.row)));a(l,u?.col??s.col+5*o.size,u?.row??s.row)}return o}function ho(e,t){let n=[...t.keys()].sort(vn),r=[];for(let o=0;o<n.length;o++)for(let i=o+1;i<n.length;i++){let a=n[o],l=n[i],c=[];for(let[d,s]of[[a,l],[l,a]]){let u=e.tryDefinition(d);for(let[f,g]of Object.entries(u?.edges??{}))(g.to==="*"?e.kinds:g.to).includes(s)&&c.push(f)}c.length>0&&r.push({from:a,to:l,edges:c})}return r}function po(e){let t=1/0,n=1/0,r=-1/0,o=-1/0;for(let i of e.values())t=Math.min(t,i.col),n=Math.min(n,i.row),r=Math.max(r,i.col+i.side),o=Math.max(o,i.row+i.side);return e.size===0?{minCol:0,minRow:0,maxCol:1,maxRow:1}:{minCol:t,minRow:n,maxCol:r,maxRow:o}}function ve(e,t,n){return{x:(e-t)*n/2,y:(e+t)*n/4}}function Ui(e){if(e<3)return[];if(e%2===1){let r=(e-1)/2;return[[r,r]]}let t=e/2-1,n=e/2;return[[t,t],[n,t],[t,n],[n,n]]}function Mr(e){let t=2166136261;for(let n=0;n<e.length;n++)t=Math.imul(t^e.charCodeAt(n),16777619);return(t>>>0)%1e3/1e3}function go(e,t){let n=e.side+1,r=new Set(Ui(n).map(([c,d])=>`${c},${d}`)),o=e.side/n,i=[];for(let c=0;c<n;c++)for(let d=0;d<n;d++)r.has(`${d},${c}`)||i.push([d,c]);i.sort((c,d)=>c[0]+c[1]-(d[0]+d[1])||c[0]-d[0]);let a=t.slice(0,i.length);return{buildings:a.map((c,d)=>{let[s,u]=i[d];return{id:c,col:e.col+(s+.5)*o,row:e.row+(u+.5)*o,footprint:o*.62,height:.55+Mr(c)*.7}}),rest:Math.max(0,t.length-a.length)}}var Rr={width:1200,height:760,focusSize:{width:1200,height:420},relationSize:{width:240,height:140},contextSize:{width:300,height:104},gap:16,unit:16};var Pr=(e,t)=>e?`${e.edgeKind}|${e.direction}`:`raised|${t}`,Tt=(e,t,n)=>`${pn}${e}|${t}|${n}`;function Xi(e,t){if(!Gt(e))return null;let[n="",r="",o="",i=""]=e.slice(pn.length).split("|"),a=t.definitions.find(x=>x.kind===n),l=Wt(t,n),c=r==="raised"?null:(()=>{let x=a?.edges[r]??t.definitions.map(h=>h.edges[r]).find(Boolean);return((o==="in"?x?.inverse:x?.description)??_t(r)).toLowerCase()})(),[d="",s=""]=i.split("="),u=d.split(":")[0],f=i===""||i==="kind"||i.startsWith("more")?null:`${qo(a,u).toLowerCase()}: ${s==="none"?"none":s}`;return[i.startsWith("more")?`More ${l.toLowerCase()}`:l,[c,f].filter(Boolean).join(", ")].filter(Boolean).join(" \u2014 ")}function Sn(e,t){let n=e.map(()=>0),r=e.map((a,l)=>({size:a,index:l})).sort((a,l)=>a.size-l.size||a.index-l.index),o=Math.max(t,e.length),i=e.length;for(let{size:a,index:l}of r){let c=Math.max(1,Math.floor(o/i));n[l]=Math.min(a,c),o-=n[l],i-=1}return n}function yo(e){return Pr(e.via,e.node.kind)}function kn(e,t){let n=[],r=0;return e.forEach((o,i)=>{if(o<=0)return;if(n.length>0&&o<=r){for(let l=0;l<o;l++)n[n.length-1].push(i);r-=o;return}let a=o;for(;a>0;){let l=Math.min(t,a);n.push(Array.from({length:l},()=>i)),a-=l,r=t-l}}),n}function xo(e,t,n){let r=Sn(e,t*n);for(;kn(r,t).length>n;){let o=-1;if(r.forEach((i,a)=>{i>1&&(o<0||i>r[o])&&(o=a)}),o<0)break;r[o]=r[o]-1}return r}function qi(e,t,n){let r=o=>[t.chosen?.has(o.id)?0:1,t.hits?.has(o.id)?0:1,t.flagged?.has(o.id)?0:1,-(t.touched?.get(o.id)??0),-n.neighbors(o.id).length];return e.map((o,i)=>({node:o,index:i,key:r(o)})).sort((o,i)=>{for(let a=0;a<o.key.length;a++)if(o.key[a]!==i.key[a])return o.key[a]-i.key[a];return o.index-i.index}).map(o=>o.node)}var Qi=5,Zi=(e,t)=>{for(let n=0;n<e.length;n++)if(e[n]!==t[n])return e[n]<t[n];return!1};function Or(e,t,n){if(e.length===0||t<2)return;let r=e[0].kind,o={schema:n.schema,graph:n.graph,...n.today?{today:n.today}:{}},i=[];for(let l of Zo(n.schema,r).groups)if(l.key!==n.exclude)if(l.buckets)for(let c of["decade","year","month"])i.push({by:l.key,bucket:c});else i.push({by:l.key});let a;return i.forEach((l,c)=>{let s=xr(e,{group:l},o).groups;if(s.length<2||s.length>t)return;let f=s.filter(x=>x.key!=="").reduce((x,y)=>x+y.nodes.length,0)/e.length;if(f<.5||s.some(x=>x.nodes.length>e.length*.75))return;let g=[-Math.round(f*100),Math.abs(s.length-Qi),c];(!a||Zi(g,a.score))&&(a={grouping:{by:l.by,...l.bucket?{bucket:l.bucket}:{},groups:s},score:g})}),a?.grouping}function wo(e,t){let n=y=>({id:y.node.id,kind:y.node.kind,node:y.node,...y.via?{via:y.via}:{}});if(e.length<=t.budget)return e.map(n);let r={...t.relevance,chosen:new Set([...t.relevance?.chosen??[],...t.selection??[]])},o=new Map;for(let y of e){let h=Pr(y.via,y.node.kind),m=o.get(h);m?m.push(y):o.set(h,[y])}let i=[...o.entries()].map(([y,h])=>({key:y,run:h,via:h[0].via,kinds:[...new Set(h.map(m=>m.node.kind))],members:[],whole:!1,extra:0})),a=Sn(i.map(y=>y.run.length),t.budget);i.forEach((y,h)=>y.whole=y.run.length<=a[h]);let l=i.filter(y=>!y.whole),c=i.filter(y=>y.whole).reduce((y,h)=>y+h.run.length,0),d=Math.max(l.length,t.budget-c);for(let y of l){y.members=qi(y.run.map(m=>m.node),r,t.graph);let h=d-(l.length-1);y.kinds.length>1&&y.kinds.length<=h?y.byKind=!0:y.kinds.length===1&&(y.grouping=Or(y.members,h,{schema:t.schema,graph:t.graph,...y.via?{exclude:y.via.edgeKind}:{},...t.today?{today:t.today}:{}}))}let s=y=>y.byKind?y.kinds.length:y.grouping?y.grouping.groups.length:1;for(;l.reduce((y,h)=>y+s(h),0)>d;){let y=[...l].filter(h=>s(h)>1).sort((h,m)=>s(m)-s(h))[0];if(!y)break;y.grouping=void 0,y.byKind=!1}d-=l.reduce((y,h)=>y+s(h),0);let u=y=>y.byKind?y.kinds.some(h=>t.expanded.has(Tt(h,y.key,"kind"))):y.grouping?.groups.some(h=>t.expanded.has(Tt(y.kinds[0],y.key,mo(y.grouping,h.key)))),f=l.filter(y=>!y.grouping&&!y.byKind?!0:u(y)),g=Sn(f.map(y=>y.members.length),Math.max(0,d));f.forEach((y,h)=>y.extra=d>0?g[h]:0);let x=[];for(let y of i){let{key:h,via:m}=y;if(y.whole){x.push(...y.run.map(n));continue}let b=w=>({id:w.id,kind:w.kind,node:w,...m?{via:m}:{}}),R=new Map(y.run.map((w,M)=>[w.node.id,M])),P=(w,M,A)=>{let j=[...w.slice(0,M)].sort((F,D)=>R.get(F.id)-R.get(D.id));x.push(...j.map(b));let C=w.slice(M);if(C.length===0)return;let $=C[0].kind;x.push({id:Tt($,h,A?`more:${A}`:"more"),kind:$,...m?{via:m}:{},aggregate:{kind:$,memberIds:C.map(F=>F.id),label:M>0?`${C.length} more ${t.plural($).toLowerCase()}`:`${C.length} ${t.plural($).toLowerCase()}`,opens:{in:"picture",focus:Oe($),within:A?{filter:A}:{}}}})},O=m&&t.focusId?`${m.edgeKind}:${t.focusId}`:void 0;if(y.byKind){let w=y.kinds.find(M=>t.expanded.has(Tt(M,h,"kind")));for(let M of y.kinds){let A=y.members.filter(j=>j.kind===M);if(M===w){let j=y.extra+1;A.length<=j?x.push(...A.map(b)):P(A,j-1,O);continue}x.push({id:Tt(M,h,"kind"),kind:M,...m?{via:m}:{},aggregate:{kind:M,memberIds:A.map(j=>j.id),label:t.plural(M),opens:{in:"place"}}})}continue}let k=y.grouping;if(!k){P(y.members,y.extra,O);continue}let B=y.kinds[0],S=k.groups.find(w=>t.expanded.has(Tt(B,h,mo(k,w.key))));for(let w of k.groups){if(w===S){let M=y.members.filter(j=>w.nodes.includes(j)),A=y.extra+1;if(M.length<=A)x.push(...M.map(b));else{let j=w.key!==""&&!w.key.includes(",")&&!k.bucket,C=[O,j?`${k.by}:${w.key}`:void 0].filter(Boolean).join(",")||void 0;P(M,A-1,C)}continue}x.push({id:Tt(B,h,mo(k,w.key)),kind:B,...m?{via:m}:{},aggregate:{kind:B,memberIds:y.members.filter(M=>w.nodes.includes(M)).map(M=>M.id),label:w.label.charAt(0).toUpperCase()+w.label.slice(1),opens:{in:"place"}}})}}return x}var mo=(e,t)=>`${e.by}${e.bucket?`:${e.bucket}`:""}=${t||"none"}`;function bo(e,t,n=6){return e.x<t.x+t.width+n&&t.x<e.x+e.width+n&&e.y<t.y+t.height+n&&t.y<e.y+e.height+n}var Er=(e,t)=>ve(e.col+e.side/2,e.row+e.side/2,t);function vo(e,t,n,r,o={},i={}){let a={};for(let L of e)a[L.kind]=L.count;let l=fo(t,{...i.order?{order:i.order}:{},counts:a,...i.plots?{plots:i.plots}:{}}),c=o.left??0,d=r.width-c-(o.right??0),s=c+d/2,u=r.height*.53,f=po(l),g=[ve(f.minCol,f.minRow,1),ve(f.maxCol,f.minRow,1),ve(f.minCol,f.maxRow,1),ve(f.maxCol,f.maxRow,1)],x=Math.min(...g.map(L=>L.x)),y=Math.max(...g.map(L=>L.x)),h=Math.min(...g.map(L=>L.y)),m=Math.max(...g.map(L=>L.y)),b={x:Math.max(1,y-x),y:Math.max(.5,m-h)},R=Math.max(40,d-n.width*1.1),P=Math.max(24,r.height*.62-n.height*1.1),O=Math.max(18,Math.min(160,R/b.x,P/b.y)),k=i.scale??1,B=i.minHeight??0,S=i.avoid??[],w=0,M=(L,Y,v=1,N={x:0,y:0})=>{let T=s-(x+y)/2*L+N.x+w,G=u-(h+m)/2*L+N.y,H={width:n.width*Y,height:n.height*Y},re=e.map(J=>Er(l.get(J.kind),L).y),ie=Math.max(...re),de=Math.min(...re);return e.map(J=>{let Ce=l.get(J.kind),ke=Er(Ce,L),et=ie===de?.5:(ke.y-de)/(ie-de),Ke=.85+et*.45,U=H.width*Ke,Le=Math.max(B,H.height*Ke),tt=Le+(J.marquee??0)+(J.opened>0?Math.max(J.openedMin??0,J.opened*v):0);return{id:J.id,x:T+ke.x-U/2,y:G+ke.y-Le/2,width:U,height:tt,depth:1-et*.65,plot:Ce}})},A=L=>L.some((Y,v)=>L.some((N,T)=>T!==v&&bo(Y,N)))||L.some(Y=>S.some(v=>bo(Y,v))),j=L=>{if(S.length===0)return[{x:0,y:0}];let Y=Math.max(...S.map(T=>T.width))/2+L,v=Math.max(...S.map(T=>T.height))/2+L/2,N=[{x:0,y:0}];for(let T of[.5,.75,1,1.25]){let G=Y*T,H=v*T;N.push({x:G,y:0},{x:-G,y:0},{x:0,y:H},{x:0,y:-H},{x:G,y:H},{x:-G,y:H},{x:G,y:-H},{x:-G,y:-H})}return N},C=r.width-(o.right??0),$=L=>L.reduce((Y,v)=>{let N=Math.max(0,Math.min(v.x+v.width,r.width)-Math.max(v.x,0)),T=Math.max(0,Math.min(v.y+v.height,r.height)-Math.max(v.y,0));return Y+v.width*v.height-N*T},0),F=(L,Y,v)=>{let N,T;for(let G of j(L)){let H=M(L,Y,v,G);if(A(H)){T??={placed:H,shift:G};continue}let re=$(H);(!N||re<N.off-.5)&&(N={placed:H,shift:G,off:re})}return N??T},D=O,K=k,z=1,V=F(D,K,z);for(;A(V.placed)&&K>1.001;)K=Math.max(1,K-.05),V=F(D,K,z);for(;A(V.placed)&&z>.3;)z=Math.max(.3,z-.1),V=F(D,K,z);if(A(V.placed)||$(V.placed)>0){let L=A(V.placed)?void 0:{cell:D,settled:V,off:$(V.placed)};for(let Y=.9;Y>=.3;Y-=.1){let v=O*Y,N=F(v,K,z);if(A(N.placed))continue;let T=$(N.placed);if((!L||T<L.off-.5)&&(L={cell:v,settled:N,off:T}),T===0)break}L&&(D=L.cell,V=L.settled)}for(let L=0;A(V.placed)&&L<80;L++)D*=1.06,V=F(D,K,z);if(S.length===0){let L=Math.min(...V.placed.map(N=>N.x)),Y=Math.max(...V.placed.map(N=>N.x+N.width)),v=Y-L>C-c?0:L<c?c-L:Y>C?C-Y:0;if(v!==0){w=v;let N=M(D,K,z,V.shift);A(N)?w=0:V={placed:N,shift:V.shift}}}i.zoom&&i.zoom!==1&&(D*=i.zoom,w*=i.zoom,V=F(D,K,z));let ge=V.placed,me=s-(x+y)/2*D+V.shift.x+w,X=u-(h+m)/2*D+V.shift.y,oe={cell:D,originX:me,originY:X,pan:i.pan??{x:0,y:0},extent:{x:me+x*D,y:X+h*D,width:b.x*D,height:b.y*D},openedShare:z};return{placed:ge,frame:oe,map:l}}function wt(e){let t={x:e.width*.45,y:e.height*.45};if(!e.city)return t;let{extent:n}=e.city,r=24;return{x:Math.max(t.x,n.x+n.width-e.width+r,-n.x+r),y:Math.max(t.y,n.y+n.height-e.height+r,-n.y+r)}}var Mn=48;function So(e){if(!e.city)return[];let{width:t,height:n}=e,r=[];for(let o of e.nodes){if(!o.id.startsWith("kind:")||Math.round(o.plane)!==2)continue;let i=o.x+o.width/2,a=o.y+o.height/2,l=i<0?"left":i>t?"right":a<0?"top":a>n?"bottom":null;if(!l)continue;let c=l==="left"||l==="right",d=c?Math.max(0,Math.min(n,a)):Math.max(0,Math.min(t,i)),s=(g,x)=>g<x/4?x/4-g:g>x*3/4?x*3/4-g:0,u=(g,x)=>g<Mn?Mn-g:g>x-Mn?x-Mn-g:0,f=c?{x:s(i,t),y:u(a,n)}:{x:u(i,t),y:s(a,n)};r.push({id:o.id,kind:o.id.slice(5),side:l,along:d,by:f})}return r}function ko(e,t,n,r,o){return{x:e.x+(n.x-e.x-t.x-r.x)*(1-o),y:e.y+(n.y-e.y-t.y-r.y)*(1-o)}}var Ji={rankOf:()=>{},parentOf:()=>{}};function Ar(e,t){if(t.size===0)return Ji;let n=e.kinds,r=new Map,o=(d,s)=>{d!==s&&((r.get(d)??r.set(d,new Set).get(d)).add(s),(r.get(s)??r.set(s,new Set).get(s)).add(d))};for(let d of n){let s=e.tryDefinition(d);if(s)for(let u of Object.values(s.edges??{})){let f=u.to==="*"?n:u.to;for(let g of f)o(d,g)}}let i=new Map,a=new Map,l=[...t].filter(d=>n.includes(d));for(let d of l)i.set(d,0);let c=0;for(;l.length>0;){c+=1;let d=[];for(let s of[...l].sort((u,f)=>n.indexOf(u)-n.indexOf(f)))for(let u of[...r.get(s)??[]].sort((f,g)=>n.indexOf(f)-n.indexOf(g)))i.has(u)||(i.set(u,c),c===2&&a.set(u,s),d.push(u));l=d}return{rankOf:d=>{let s=i.get(d);if(s!==0)return s===1?"primary":"secondary"},parentOf:d=>a.get(d)}}function Cr(e,t,n,r,o={}){if(n){let i=new Map;for(let a of e.allEdges()){if(r&&a.kind!==r)continue;let l=a.from===n.id?a.to:a.to===n.id?a.from:null;if(l===null||l===n.id)continue;let c=e.getNode(l);if(!c||i.has(l))continue;let d=a.from===n.id?"out":"in",s=d==="out"?n.kind:c.kind,u=ea(t,s,a.kind,d);i.set(l,{node:c,via:{edgeKind:a.kind,direction:d,...u?{description:u}:{}}})}if(i.size>0){let a=l=>`${l.via.edgeKind}|${l.via.description??""}`;return[...i.values()].sort((l,c)=>(a(l)<a(c)?-1:a(l)>a(c)?1:0)||dt(l.node,c.node))}}if(n){let i=o[n.id]??[],a=new Set,l=[];for(let c of i){if(c===n.id||a.has(c))continue;let d=e.getNode(c);d&&(r&&r!=="judges"&&d.kind!==r||(a.add(c),l.push({node:d,via:{edgeKind:"judges",direction:"out",description:"what it finds wrong"}})))}if(l.length>0)return l.sort((c,d)=>dt(c.node,d.node))}return r?e.allNodes().filter(i=>i.kind===r).sort(dt).map(i=>({node:i})):[]}function ea(e,t,n,r){let i=e.tryDefinition(t)?.edges?.[n];return r==="out"?i?.description:i?.inverse}function Lr(e,t,n){let r=new Map,o=[...t.values()].sort((d,s)=>d.plane-s.plane);for(let d of o)for(let s of d.aggregate?.memberIds??[])!t.has(s)&&!r.has(s)&&r.set(s,d.id);let i=d=>t.get(d)??t.get(r.get(d)??""),a=new Map,l=new Map,c=new Map;for(let d of e.allEdges()){let s=i(d.from),u=i(d.to);if(!s||!u||s.id===u.id&&!(n.overview&&s.aggregate&&s.plane===2))continue;let f=`${d.kind}:${s.id}:${u.id}`,g=a.get(f);if(g){let x=`${d.from}
2
2
  ${d.to}`,y=l.get(f);if(y.has(x))continue;if(y.add(x),c.get(f).push({from:d.from,to:d.to}),g.single){let{single:h,...m}=g;a.set(f,m)}continue}l.set(f,new Set([`${d.from}
3
3
  ${d.to}`])),c.set(f,[{from:d.from,to:d.to}]),a.set(f,{id:f,kind:d.kind,from:s.id,to:u.id,edges:[{from:d.from,to:d.to}],single:{from:d.from,to:d.to},...s.id===u.id?{loop:!0}:{},x1:s.x+s.width/2,y1:s.y+s.height/2,x2:u.x+u.width/2,y2:u.y+u.height/2})}return[...a.values()].map(d=>({...d,edges:c.get(d.id)})).sort(dt)}var Tr=.85,Ir=60,Rn=160,$r=2,na=240,oa=300,ra=52,Nr=60;function ia(e,t,n,r,o,i=Tr){let a=e*t.width+Math.max(0,e-1)*n,l=Math.max(n,(r-a)/2);return Array.from({length:e},(c,d)=>({x:l+d*(t.width+n),y:o,depth:i}))}function aa(e,t,n,r,o){let i=e*t.width+Math.max(0,e-1)*n,a=Math.max(n,(r-i)/2);return Array.from({length:e},(l,c)=>({x:a+c*(t.width+n),y:o}))}function Pn(e,t,n,r={}){let o={...Rr,...r},i=Math.max(8,o.unit??16)/16,a=o.inset?.left??0,l=o.width-a-(o.inset?.right??0),c=[],d=new Map,s=p=>n.past===!0||Uo(t.tryDefinition(p.kind),p,o.today),u=new Set(r.hiddenKinds??[]),f=p=>!u.has(p.kind),g=n.focusId?xt(n.focusId).filter(p=>t.tryDefinition(p)!==void 0).filter(p=>!u.has(p)):[];n.focusId&&xt(n.focusId).length>0&&g.length===0&&(n={...n,focusId:null});let x=n.focusId?e.getNode(n.focusId):void 0;x&&!f(x)&&(n={...n,focusId:null},g=[]);let y=g.length>0?[...e.allNodes()].filter(p=>g.includes(p.kind)).sort(dt):[],h=y.filter(f).filter(s),m=y.length-h.length,b=n.focusId&&g.length===0?e.getNode(n.focusId):void 0,R=n.zoom===!0&&!n.overview&&n.focusId!==null,P=Math.max(56,o.height*.062),O=Math.min(o.height*.895,o.height-P),k=R?b!==void 0?{focusY:o.height*.03,focusH:o.height*.58,relationY:o.height*.645,relationH:o.height*.2,contextY:O,contextH:P}:{focusY:o.height*.03,focusH:o.height*.71,relationY:o.height*.765,relationH:o.height*.1,contextY:O,contextH:P}:b===void 0?{focusY:o.height*.045,focusH:o.height*.62,relationY:o.height*.68,relationH:o.height*.2,contextY:o.height*.918,contextH:o.height*.082}:(()=>{let p=o.height,I=p*.04,W=Math.max(p*.42,Math.min(p*.56,300)),Q=I+W+p*.06;return{focusY:I,focusH:W,relationY:Q,relationH:Math.max(p*.12,p*.878-p*.068-Q),contextY:p*.878,contextH:p*.092}})(),B=p=>Math.min(o.gap*p,Math.round(l*.1)),S=R?Math.min(880,l-B(5)):Math.min(700,l-B(6)),w=R?l-B(5):Math.min(o.focusSize.width,l-B(6)),M=(p,I,W)=>({width:p===0?I:Math.min(I,(l-o.gap*(p+1))/p),height:W}),A=(p,I,W)=>{let Q=M(p,I,W),we=Math.min(I,Rn*i,l-o.gap*2);return Q.width>=we?Q:{width:we,height:W}},j=p=>Math.max(1,Math.floor((l-o.gap)/(Math.min(p,Rn*i,l-o.gap*2)+o.gap))),C=new Set(n.expanded),$=n.overview?[]:Cr(e,t,b,n.relation,o.judged).filter(p=>f(p.node)).filter(p=>s(p.node)),F=$.length>0?k.focusH:k.contextY-k.focusY-o.gap*2,D=w,K=o.height,z=Math.min(l*.5/D,o.height*.48/K),V=D*z,ge=K*z,me=new Set(r.plainGroups??[]),X=n.overview&&!b&&g.length>0&&n.focusId!==null,oe=X&&g.length>0&&g.every(p=>me.has(p));if(X)for(let p of g)oe?C.add(ce(p)):C.delete(ce(p));let L=X&&!oe&&g.length===1?g[0]:void 0,Y=L?r.screens?.[L]??[]:[],v=Y.find(p=>p.as===n.within?.view)??Y[0],N=L!==void 0&&v!==void 0,T;n.overview&&(b||g.length>0)&&n.focusId&&!oe?(T={x:a+(l-V)/2,y:o.height*.53-ge/2,width:V,height:ge},Zt({id:n.focusId,kind:b?b.kind:g[0],plane:0,x:T.x,y:T.y,width:V,height:ge,natural:{width:D,height:K},...b?{}:{aggregate:{kind:g.join("+"),memberIds:h.map(p=>p.id),label:r.plurals?.[n.focusId]??g.map(p=>Vt(t,p)).join(" and "),...m>0?{retired:m}:{}}}})):n.overview||(b?Zt({id:b.id,kind:b.kind,plane:0,x:a+(l-S)/2,y:k.focusY,width:S,height:F}):g.length>0&&n.focusId&&Zt({id:n.focusId,kind:g[0],plane:0,x:a+(l-w)/2,y:k.focusY,width:w,height:F,aggregate:{kind:g.join("+"),memberIds:h.map(p=>p.id),label:r.plurals?.[n.focusId]??g.map(p=>Vt(t,p)).join(" and "),...m>0?{retired:m}:{}}}));let G=26,H=52,re=22,ie=Math.round(o.relationSize.width*.75),de=Math.max(1,Math.floor((l-o.gap)/(ie+o.gap))),J=o.unit/16,Ce=Math.max(2,Math.floor((k.relationH+o.gap)/(G*J+o.gap))),ke=$.length>de*Ce,et={schema:t,graph:e,focusId:b?.id,expanded:C,...o.relevance?{relevance:o.relevance}:{},...n.selection?{selection:n.selection}:{},plural:p=>Vt(t,p),...o.today?{today:o.today}:{}},Ke=ke?Math.max(o.gap,re*J):o.gap,U,Le;if(!ke)U=$.map(p=>({id:p.node.id,kind:p.node.kind,node:p.node,...p.via?{via:p.via}:{}})),Le=Array.from({length:Math.max(1,Math.ceil(U.length/de))},(p,I)=>Array.from({length:Math.min(de,U.length-I*de)},(W,Q)=>I*de+Q));else{let p=Math.max(1,Math.floor((k.relationH+Ke)/(H*J+Ke))),I=new Map;for(let he of $){let ye=yo(he),Ge=I.get(ye);Ge?Ge.push(he):I.set(ye,[he])}let W=xo([...I.values()].map(he=>he.length),de,p),Q=[...I.values()].map((he,ye)=>wo(he,{...et,budget:W[ye]}));U=Q.flat();let we=Q.map((he,ye)=>Q.slice(0,ye).reduce((Ge,jt)=>Ge+jt.length,0)),st=Q.map(()=>0);Le=kn(Q.map(he=>he.length),de).map(he=>he.map(ye=>we[ye]+st[ye]++))}let tt=Le.length,nt=tt===1?k.relationH:(k.relationH-Ke*(tt-1))/tt,He=M(Math.max(...Le.map(p=>p.length),1),U.length<=2?Math.round(o.relationSize.width*1.35):o.relationSize.width,nt),Je=[];Le.forEach((p,I)=>{let W=aa(p.length,He,o.gap,l,k.relationY+I*(nt+Ke));p.forEach((Q,we)=>Je[Q]={...W[we],x:W[we].x+a})}),U.forEach((p,I)=>{let W=Je[I];Zt({id:p.id,kind:p.kind,plane:1,x:W.x,y:W.y,width:He.width,height:He.height,...p.via?{via:p.via}:{},...p.aggregate?{aggregate:p.aggregate}:{},...ke&&!p.aggregate?{compact:!0}:{}})});let ft=new Set(d.keys());for(let p of h)ft.add(p.id);let Ne=new Map;for(let p of e.allNodes()){let I=Ne.get(p.kind);I?I.push(p):Ne.set(p.kind,[p])}let ht=new Set(g.length>0?g:b?[b.kind]:[]),pt=[];for(let p of t.kinds){if(u.has(p))continue;let I=Ne.get(p)??[],W=I.filter(s);pt.push({id:ce(p),kind:p,members:W.sort(dt),retired:I.length-W.length,...ht.has(p)?{focused:!0}:{}})}for(let p of pt)p.kind===n.relation&&(p.raised=!0);pt.sort(dt);let Ye=Ar(t,ht),ot=!n.overview&&t.kinds.some(p=>Ye.rankOf(p)==="primary"),Ie=[];for(let p of pt)if(!n.overview&&C.has(p.id)&&p.members.length>0)for(let I of p.members)Ie.push({id:I.id,kind:I.kind});else{let I=ot?Ye.rankOf(p.kind):void 0,W=I==="secondary"?Ye.parentOf(p.kind):void 0;Ie.push({id:p.id,kind:p.kind,...p.raised?{raised:!0}:{},...p.focused?{focused:!0}:{},...n.overview&&C.has(p.id)?{opened:!0}:{},...I?{rank:I}:{},...W&&!C.has(ce(W))?{nestedUnder:ce(W)}:{},aggregate:{kind:p.kind,memberIds:p.members.map(Q=>Q.id),label:r.plurals?.[p.kind]??Vt(t,p.kind),...p.retired>0?{retired:p.retired}:{}}})}let St=2;if(Ie.length<=j((R?240:o.contextSize.width)*i))for(let p of Ie)delete p.nestedUnder;let xe=new Map;for(let p of Ie){if(p.nestedUnder===void 0)continue;let I=xe.get(p.nestedUnder)??0;I>=St?delete p.nestedUnder:xe.set(p.nestedUnder,I+1)}let rt=Ie.filter(p=>p.nestedUnder!==void 0),Me=Ie.filter(p=>p.nestedUnder===void 0),gt=j((R?240:o.contextSize.width)*i),mt=!n.overview&&Me.length>gt,kt=Math.max(0,gt-1),E=p=>p.focused?0:p.raised?1:2,ae=new Set([...Me].map((p,I)=>({item:p,at:I})).sort((p,I)=>E(p.item)-E(I.item)||p.at-I.at).slice(0,kt).map(({item:p})=>p.id)),fe=new Set(mt?Me.filter(p=>!ae.has(p.id)).map(p=>p.id):[]),Re=rt.filter(p=>!fe.has(p.nestedUnder)),it=rt.filter(p=>fe.has(p.nestedUnder)),at=mt?[...Me.filter(p=>ae.has(p.id)),{id:ar,kind:"",beyond:[...Me.filter(p=>fe.has(p.id)),...it].map(p=>p.kind)}]:Me,ze=n.overview?{width:Math.min(220,l/6.5),height:Math.min(92,o.height*.125)}:A(at.length,(R?240:o.contextSize.width)*i,k.contextH),je=n.overview?vo(at.map(p=>({id:p.id,kind:p.kind,count:p.aggregate?.memberIds.length??0,opened:C.has(p.id)?At(Et(p.aggregate?.memberIds.length??0))*i:0,openedMin:C.has(p.id)?At(Math.min(Jn,Et(p.aggregate?.memberIds.length??0)))*i:0,...(r.screens?.[p.kind]?.length??0)>0?{marquee:Ut((r.screens?.[p.kind]??[]).map(I=>I.title),Rn*i,r.nameWidth)*i}:{}})),t,ze,{width:o.width,height:o.height},o.inset??{},{...o.cityOrder?{order:o.cityOrder}:{},...o.plots?{plots:o.plots}:{},scale:i,minHeight:Ir*i,...r.cityZoom&&r.cityZoom!==1?{zoom:r.cityZoom}:{},pan:{x:n.pan?.x??0,y:n.pan?.y??0},...T&&!N?{avoid:[T]}:{}}):null,an=new Map(je?.placed.map(p=>[p.id,p.plot])??[]),Ht=je?je.placed.map(({x:p,y:I,depth:W,width:Q,height:we})=>({x:p,y:I,depth:W,width:Q,height:we})):ia(at.length,ze,o.gap,l,k.contextY,R?.97:Tr).map(p=>({...p,x:p.x+a})),_i=.74,sn=.8,Vi=52*i,Wi=86*i,_n=(p,I)=>Math.min(1,p+(1-p)*I),Vn=new Map;at.forEach((p,I)=>{let W=Ht[I],Q=W.width??ze.width,we=W.height??ze.height,st=p.rank==="secondary"?_i:1,he=Math.max(Math.min(Q,Rn*i),Q*st),ye=Math.max(Ir*i,we*st);Vn.set(p.id,{x:W.x+(Q-he)/2,y:W.y+(we-ye),depth:p.rank==="secondary"?_n(W.depth,.5):W.depth,width:he,height:ye})});let dn=[],ln=Ht[Ht.length-1],Wn=new Map;for(let p of Re)Wn.set(p.nestedUnder,(Wn.get(p.nestedUnder)??0)+1);let _o=new Map;for(let p of Re){let I=Vn.get(p.nestedUnder);if(I){let W=Wn.get(p.nestedUnder)??1,Q=_o.get(p.nestedUnder)??0;_o.set(p.nestedUnder,Q+1);let we=.98,st=ze.width*sn,he=Math.max(Wi,Math.min(st,I.width/(we*(W-1)+1))),ye=Math.max(Vi,ze.height*sn*(he/st)),Ge=he*we,jt=(W-1)*Ge+he;dn.push({...p,x:I.x+(I.width-jt)/2+Q*Ge,y:Math.max(0,I.y-ye+Math.min(ye*.5,16)),width:he,height:ye,depth:_n(I.depth,.8)})}else if(ln){let W=ze.width*sn,Q=ze.height*sn;dn.push({...p,x:ln.x,y:ln.y,width:W,height:Q,depth:_n(ln.depth??1,.8)})}}for(let p of at)dn.push({...p,...Vn.get(p.id)});if(dn.forEach(p=>{Zt({id:p.id,kind:p.kind,plane:2,x:p.x,y:p.y,width:p.width,height:p.height,...p.aggregate?{aggregate:p.aggregate}:{},...p.raised?{raised:!0}:{},...p.focused?{focused:!0}:{},...p.opened?{opened:!0}:{},...p.opened?{openedRows:Math.max(1,Math.floor((Math.max(At(Math.min(Jn,Et(p.aggregate?.memberIds.length??0))),At(Et(p.aggregate?.memberIds.length??0))*(je?.frame.openedShare??1))-sr)/gn))}:{},...p.rank?{rank:p.rank}:{},...p.nestedUnder?{nestedUnder:p.nestedUnder}:{},...p.beyond?{beyond:p.beyond}:{},...an.has(p.id)?{plot:an.get(p.id)}:{},depth:p.depth})}),N&&je&&T&&n.focusId){let p=je.frame,I=je.map.get(L),W=v?.across?je.map.get(v.across):void 0;if(I){let we=(Z=>{let Ee=ve(Z.col,Z.row,p.cell),Pe=ve(Z.col+Z.side/2,Z.row+Z.side/2,p.cell);return{top:{x:p.originX+Ee.x,y:p.originY+Ee.y},center:{x:p.originX+Pe.x,y:p.originY+Pe.y}}})(I),st=we.center.x,he=we.top.y+p.cell*.1,ye=o.screenHeight!==void 0&&o.screenHeight>0?Math.min(K,Math.max(na,Math.round(o.screenHeight))):K,Ge=ye/D,jt=Math.max(1,(r.cityZoom??1)/1.5),Ki=l*.78*jt,Vo=o.height*.72*jt,Kn=Math.min(oa*i,l*.5),cn=Math.max(Kn,Math.min(Ki,I.side*p.cell*2.4));cn*Ge>Vo&&(cn=Vo/Ge);let Yi=[...d.values()].filter(Z=>Z.plane===2&&Z.id!==ce(L)),Wo=Z=>{let Ee=Z*Ge,Pe=he-Ee;return{x:st-Z/2,y:Pe,width:Z,height:Ee}},Bt=Wo(cn),zi=Z=>Yi.some(Ee=>{let Pe={x:Ee.x-(n.pan?.x??0)-Nr*i,y:Ee.y-(n.pan?.y??0),width:Ee.width+Nr*i*2,height:Ee.height+ra*i};return Z.x<Pe.x+Pe.width&&Pe.x<Z.x+Z.width&&Z.y<Pe.y+Pe.height&&Pe.y<Z.y+Z.height});for(let Z=cn;zi(Bt)&&Z>Kn+1;Z=Math.max(Kn,Z*.92))Bt=Wo(Z);let un=c.findIndex(Z=>Z.id===n.focusId);if(un!==-1){let Z={x:Bt.x,y:Bt.y},Ee=n.pins[c[un].id],Pe=Ee?{x:Ee.x-Z.x,y:Ee.y-Z.y}:{x:0,y:0},Ko=Math.hypot(Pe.x,Pe.y),Yo=$r*p.cell,zo=Ko>Yo?Yo/Ko:1,Go={x:Z.x+Pe.x*zo,y:Z.y+Pe.y*zo},Yn={...c[un],x:Go.x+(n.pan?.x??0),y:Go.y+(n.pan?.y??0),width:Bt.width,height:Bt.height,natural:{width:D,height:ye},screenOf:L,...Ee?{pinned:!0}:{}};c[un]=Yn,d.set(Yn.id,Yn)}}}return{nodes:c,connectors:Lr(e,d,n),width:o.width,height:o.height,...je?{city:je.frame}:{}};function Zt(p){let I=n.pins[p.id],W=I?{...p,x:I.x,y:I.y,pinned:!0}:{...p,pinned:!1},Q=n.pan?{...W,x:W.x+n.pan.x,y:W.y+n.pan.y}:W;c.push(Q),d.set(Q.id,Q)}}function Mo(e,t,n){let r=e.nodes.find(l=>l.id===t);if(!r||r.screenOf!==void 0)return null;let o={...r,x:n.x,y:n.y,pinned:!0},i=o.x+o.width/2,a=o.y+o.height/2;return{...e,nodes:e.nodes.map(l=>l.id===t?o:l),connectors:e.connectors.map(l=>l.from===t?{...l,x1:i,y1:a}:l.to===t?{...l,x2:i,y2:a}:l)}}function Ro(e,t){return t.x===0&&t.y===0?e:{...e,nodes:e.nodes.map(n=>({...n,x:n.x+t.x,y:n.y+t.y})),connectors:e.connectors.map(n=>({...n,x1:n.x1+t.x,y1:n.y1+t.y,x2:n.x2+t.x,y2:n.y2+t.y})),...e.city?{city:{...e.city,pan:{x:t.x,y:t.y}}}:{}}}var pe=(e,t,n)=>e+(t-e)*n;function Dr(e){return{x:e.x+e.width/2,y:e.y+e.height/2}}var Fr=new WeakMap;function sa(e){let t=Fr.get(e);if(t)return t;let n=new Map,r=new Map;for(let o of e.nodes){n.set(o.id,o);for(let i of o.aggregate?.memberIds??[]){let a=r.get(i);a?a.push(o):r.set(i,[o])}}return t={byId:n,groupsOf:r},Fr.set(e,t),t}var Hr=new WeakMap;function jr(e,t){let n=Hr.get(t);if(n||Hr.set(t,n=new WeakMap),n.has(e))return n.get(e);let r=da(e,t);return n.set(e,r),r}function da(e,t){let{byId:n,groupsOf:r}=sa(t);if(e.screenOf!==void 0){let a=n.get(ce(e.screenOf));if(a)return{...e,x:a.x,y:a.y,width:a.width,height:a.height}}if(Ot(e.id)||$e(e.id)!==null){let a=(e.aggregate?.memberIds??[]).map(s=>n.get(s)).filter(s=>s!==void 0);if(a.length===0)return null;let l=a.map(Dr),c=l.reduce((s,u)=>s+u.x,0)/l.length,d=l.reduce((s,u)=>s+u.y,0)/l.length;return{...e,x:c-e.width/2,y:d-e.height/2}}let o=r.get(e.id)?.find(a=>a.id===ce(e.kind)||a.id===Oe(e.kind));if(!o)return null;let i=Dr(o);return{...e,x:i.x-e.width/2,y:i.y-e.height/2}}function $t(e,t,n){let r=Math.max(0,Math.min(1,n)),o=new Map(e.nodes.map(s=>[s.id,s])),i=new Map(t.nodes.map(s=>[s.id,s])),a=[];for(let[s,u]of o){let f=i.get(s);if(f){a.push(Po(u,f,r,1));continue}let g=jr(u,t)??u;a.push(Po(u,g,r,1-r))}for(let[s,u]of i){if(o.has(s))continue;let f=jr(u,e)??u;a.push(Po(f,u,r,r))}let l=new Map(e.connectors.map(s=>[s.id,s])),c=new Map(t.connectors.map(s=>[s.id,s])),d=[];for(let[s,u]of l){let f=c.get(s);d.push(f?{...la(u,f,r),opacity:1}:{...u,opacity:1-r})}for(let[s,u]of c)l.has(s)||d.push({...u,opacity:r});return{nodes:a.filter(s=>s.opacity>0).sort((s,u)=>s.id<u.id?-1:s.id>u.id?1:0),connectors:d.filter(s=>s.opacity>0).sort((s,u)=>s.id<u.id?-1:s.id>u.id?1:0),width:pe(e.width,t.width,r),height:pe(e.height,t.height,r),t:r,...Br(e.city,t.city,r)?{city:Br(e.city,t.city,r)}:{}}}function Br(e,t,n){return e?t?{cell:pe(e.cell,t.cell,n),originX:pe(e.originX,t.originX,n),originY:pe(e.originY,t.originY,n),pan:{x:pe(e.pan.x,t.pan.x,n),y:pe(e.pan.y,t.pan.y,n)},extent:{x:pe(e.extent.x,t.extent.x,n),y:pe(e.extent.y,t.extent.y,n),width:pe(e.extent.width,t.extent.width,n),height:pe(e.extent.height,t.extent.height,n)}}:e:t}function Po(e,t,n,r){return{id:t.id,kind:t.kind,plane:pe(e.plane,t.plane,n),x:pe(e.x,t.x,n),y:pe(e.y,t.y,n),width:pe(e.width,t.width,n),height:pe(e.height,t.height,n),pinned:t.pinned,opacity:r,...t.aggregate?{aggregate:t.aggregate}:{},...t.via?{via:t.via}:{},...t.raised?{raised:!0}:{},...t.focused?{focused:!0}:{},...t.opened?{opened:!0}:{},...t.openedRows!==void 0?{openedRows:t.openedRows}:{},...t.compact?{compact:!0}:{},...t.rank?{rank:t.rank}:{},...t.nestedUnder?{nestedUnder:t.nestedUnder}:{},...t.beyond?{beyond:t.beyond}:{},...t.plot?{plot:t.plot}:{},...t.screenOf?{screenOf:t.screenOf}:{},...t.depth===void 0?{}:{depth:pe(e.depth??1,t.depth,n)},...t.natural?{natural:t.natural}:{}}}function la(e,t,n){return{...t,x1:pe(e.x1,t.x1,n),y1:pe(e.y1,t.y1,n),x2:pe(e.x2,t.x2,n),y2:pe(e.y2,t.y2,n)}}function On(e){let t=Math.max(0,Math.min(1,e));return t<.5?4*t*t*t:1-(-2*t+2)**3/2}function ca(e,t){let n=[];for(let o=0;o<e.length;o+=1){let i=e[o],a=e[(o+1)%e.length];if(i.y===a.y)continue;let l=Math.min(i.y,a.y),c=Math.max(i.y,a.y);t<l||t>=c||n.push(i.x+(t-i.y)/(a.y-i.y)*(a.x-i.x))}n.sort((o,i)=>o-i);let r={x0:0,x1:0};for(let o=0;o+1<n.length;o+=2){let i={x0:n[o],x1:n[o+1]};i.x1-i.x0>r.x1-r.x0&&(r=i)}return r}function ua(e){let t=1/0,n=-1/0;for(let r of e)r.y<t&&(t=r.y),r.y>n&&(n=r.y);return{top:t,bottom:n}}function fa(e){let t=0;for(let n=0;n<e.length;n+=1){let r=e[n],o=e[(n+1)%e.length];t+=r.x*o.y-o.x*r.y}return Math.abs(t)/2}function ha(e){let t=0,n=0,r=0;for(let o=0;o<e.length;o+=1){let i=e[o],a=e[(o+1)%e.length],l=i.x*a.y-a.x*i.y;t+=l,n+=(i.x+a.x)*l,r+=(i.y+a.y)*l}if(Math.abs(t)<1e-9){let o=e.reduce((i,a)=>({x:i.x+a.x,y:i.y+a.y}),{x:0,y:0});return{x:o.x/e.length,y:o.y/e.length}}return{x:n/(3*t),y:r/(3*t)}}function pa(e,t){let{room:n,height:r,size:o,floor:i,measure:a=eo,lines:l=2}=t,c=(y,h)=>y.every(m=>a(m,h)<=n)&&y.length*h*1.15<=r;if(c([e],o))return{lines:[e],fontSize:o,whole:!0};let d=e.split(/\s+/);if(l>1&&d.length>1){let y=1,h=1/0,m=0;for(let R=0;R<d.length-1;R+=1){m+=d[R].length+1;let P=Math.abs(m-e.length/2);P<h&&(h=P,y=R+1)}let b=[d.slice(0,y).join(" "),d.slice(y).join(" ")];if(c(b,o))return{lines:b,fontSize:o,whole:!0};for(let R=o;R>=i;R-=o*.06)if(c(b,R))return{lines:b,fontSize:R,whole:!0}}for(let y=o;y>=i;y-=o*.06)if(c([e],y))return{lines:[e],fontSize:y,whole:!0};let s=a(e,i)/Math.max(1,e.length),u=Math.floor(n/s)-1;if(u<4||i*1.15>r)return null;let f=e.slice(0,u),g=f.lastIndexOf(" ");return{lines:[`${g>3?f.slice(0,g):f}\u2026`],fontSize:i,whole:!1}}var ga=(e,t)=>e.x0<t.x1&&t.x0<e.x1&&e.y0<t.y1&&t.y0<e.y1;var q=ee(De(),1);var Fe=ee(De(),1);var ma=520;function ya(){return typeof window>"u"||!window.matchMedia?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches}function _r(e,t={}){let n=t.duration??ma,r=(t.enabled??!0)&&!ya(),o=(0,Fe.useRef)(e),[i,a]=(0,Fe.useState)(()=>$t(e,e,1)),l=(0,Fe.useRef)(i),c=(0,Fe.useRef)(null),d=(0,Fe.useRef)(null);return(0,Fe.useEffect)(()=>{if(!r||typeof requestAnimationFrame>"u"){o.current=e;let h=$t(e,e,1);if(l.current=h,a(h),typeof requestAnimationFrame>"u")return;let m=requestAnimationFrame(()=>{let b=$t(e,e,1);l.current=b,a(b)});return()=>cancelAnimationFrame(m)}let s=performance.now(),f=d.current!==null&&l.current.t<1&&s-d.current<n?d.current:s;d.current=f;let g=On(Math.min(1,(s-f)/n)),x=o.current,y=h=>{let m=Math.min(1,(h-f)/n),b=g>=1?1:(On(m)-g)/(1-g),R=$t(x,e,Math.max(0,b));l.current=R,a(R),m<1?c.current=requestAnimationFrame(y):(d.current=null,o.current=e,c.current=requestAnimationFrame(()=>{let P=$t(e,e,1);l.current=P,a(P),c.current=null}))};return c.current=requestAnimationFrame(y),()=>{c.current!==null&&cancelAnimationFrame(c.current);let h=l.current;o.current={...e,...h.city?{city:h.city}:{},nodes:h.nodes.map(m=>({...m,plane:Math.round(m.plane)})),connectors:h.connectors}}},[e,n,r]),i}function Vr(e=1100){let{store:t}=le(),[n,r]=(0,Fe.useState)(()=>new Set);return(0,Fe.useEffect)(()=>{let o=null,i=t.subscribe(a=>{r(new Set(a.touched)),o&&clearTimeout(o),o=setTimeout(()=>r(new Set),e)});return()=>{i(),o&&clearTimeout(o)}},[t,e]),n}var xa={marks:new Map,acts:[]};function Wr(e=4e3){let{store:t}=le(),[n,r]=(0,Fe.useState)(xa);return(0,Fe.useEffect)(()=>{let o=null,i=t.subscribe((a,l)=>{r(c=>{let d=new Map(c.marks),s=[...c.acts];for(let u of l){if(u.undoes!==void 0){let x=s.find(h=>h.batch===u.undoes||h.wrote.length>0),y=s.filter(h=>u.writes.some(m=>h.wrote.includes(m)));for(let h of y.length>0?y:x?[x]:[]){for(let m of h.wrote)d.delete(m);s=s.filter(m=>m.batch!==h.batch)}continue}if(u.author.kind!=="agent")continue;let f=u.author.id??"the seat";for(let x of u.writes)d.set(x,f);s.find(x=>x.batch===u.batch)?s=s.map(x=>x.batch===u.batch?{...x,wrote:[...new Set([...x.wrote,...u.writes])]}:x):s=[{batch:u.batch,who:f,intent:u.batchIntent??u.intent,at:u.at,wrote:[...u.writes]},...s].slice(0,12)}return d.size===c.marks.size&&s===c.acts&&d.size===0?c:{marks:d,acts:s}}),o&&clearTimeout(o),o=setTimeout(()=>r(c=>c.marks.size===0?c:{...c,marks:new Map}),e)});return()=>{i(),o&&clearTimeout(o)}},[t,e]),n}var Dt=ee(be(),1),Xe=16;function Kr({marks:e,questions:t=[],whereIs:n,stageRef:r,width:o,height:i}){if(e.size===0&&t.length===0)return null;let a=r.current,l=a?.getBoundingClientRect()??null,c=[];for(let[s,u]of e){let f=null;if(a&&l&&typeof CSS<"u"){let h=a.querySelector(`[data-graview-pick="${CSS.escape(s)}"]`)?.getBoundingClientRect();h&&h.width>0&&h.height>0&&(f={x:h.left-l.left,y:h.top-l.top,width:h.width,height:h.height})}if(f??=n(s),!f)continue;let g=Math.min(Math.max(f.x+f.width-Xe/2,Xe/2),o-Xe/2),x=Math.min(Math.max(f.y-Xe/4,Xe/2),i-Xe/2);c.push({id:s,who:u,x:g,y:x})}let d=[];for(let s of t){let u=n(s.id);u&&d.push({...s,x:Math.min(Math.max(u.x+u.width/2,Xe),o-Xe),y:Math.min(Math.max(u.y-Xe/2,Xe),i-Xe)})}return c.length===0&&d.length===0?null:(0,Dt.jsxs)("div",{className:"graview-seat-marks","data-testid":"seat-marks","data-graview-seat-marks":c.length,children:[c.map(({id:s,who:u,x:f,y:g})=>(0,Dt.jsx)("span",{className:"graview-seat-mark","data-testid":"seat-mark","data-graview-seat-mark":s,"data-graview-seat-who":u,title:`${u} just changed this`,"aria-hidden":"true",style:{left:f,top:g,"--graview-hue":Mt(u)},children:"\u25C6"},s)),d.map(s=>(0,Dt.jsxs)("span",{className:"graview-seat-asking","data-testid":"seat-question","data-graview-seat-asking":s.id,title:s.asks,style:{left:s.x,top:s.y},children:[(0,Dt.jsx)("span",{"aria-hidden":"true",children:"?"}),(0,Dt.jsx)("span",{className:"graview-seat-asking-said",children:s.asks})]},`asking:${s.id}`))]})}var lt=ee(De(),1);var Se=ee(be(),1);function wa(e,t,n={x:0,y:0}){let r=(o,i)=>{let a=ve(o,i,t.cell);return{x:t.originX+n.x+a.x,y:t.originY+n.y+a.y}};return[r(e.col,e.row),r(e.col+e.side,e.row),r(e.col+e.side,e.row+e.side),r(e.col,e.row+e.side)]}var Cn=e=>e.map(t=>`${t.x.toFixed(1)},${t.y.toFixed(1)}`).join(" ");function Yr({frame:e,width:t,height:n,pan:r,brand:o,pinned:i,swallowed:a,onFocus:l}){let{selection:c,store:d,emphasis:s}=le(),u=wn(),f=e.city,g=e.nodes.filter(S=>S.plot!==void 0&&Math.round(S.plane)===2),x=f?.cell??0,y=(0,lt.useRef)(l);y.current=l;let h=(0,lt.useCallback)(S=>!y.current||a?.current?!1:(y.current(S),!0),[a]),m=`${x}|${g.map(S=>`${S.id}:${S.plot.col},${S.plot.row},${S.plot.side}`).join(";")}`,b=(0,lt.useMemo)(()=>{if(!f)return[];let S={cell:x,originX:0,originY:0},w=new Map;for(let M of g){let A=$e(M.id);A!==null&&M.plot&&w.set(A,M.plot)}return ho(d.schema,w).map(M=>({...M,d:Ma(w.get(M.from),w.get(M.to),S,{x:0,y:0}).map((A,j)=>`${j===0?"M":"L"} ${A.x.toFixed(1)} ${A.y.toFixed(1)}`).join(" ")}))},[m,d.schema]),R=(0,lt.useRef)(new Map),P=new Map;for(let S of g){let w=S.aggregate?.memberIds??[],M=`${x}|${S.plot.col},${S.plot.row},${S.plot.side}|${w.join(",")}`,A=R.current.get(S.id);if(A&&A.key===M){P.set(S.id,A);continue}let j={cell:x,originX:0,originY:0},C={x:0,y:0},{buildings:$,rest:F}=go(S.plot,w),D=wa(S.plot,j,C);P.set(S.id,{key:M,tile:Cn(D),front:D[2],rest:F,buildings:$.map(K=>({id:K.id,...va(K,j,C)}))})}if(R.current=P,!f)return null;let O={position:"absolute",left:0,top:0,pointerEvents:"none",overflow:"visible"},k=c.join(`
4
4
  `),B=u.join(`
5
5
  `);return(0,Se.jsx)("svg",{className:"graview-plots","aria-hidden":"true","data-graview-world":"",width:t,height:n,style:O,"data-graview-plots":g.length,children:(0,Se.jsxs)("g",{transform:`translate(${(f.originX+r.x).toFixed(1)} ${(f.originY+r.y).toFixed(1)})`,children:[(0,Se.jsx)("g",{className:"graview-roads","data-graview-roads":b.length,children:b.map(S=>S.d.includes("L")?(0,Se.jsxs)("g",{className:"graview-road","data-graview-road":S.edges.join(","),"data-graview-from":ce(S.from),"data-graview-to":ce(S.to),"data-graview-lit":s!==null&&S.edges.includes(s)?"":void 0,children:[(0,Se.jsx)("path",{className:"graview-road-edge",d:S.d}),(0,Se.jsx)("path",{className:"graview-road-bed",d:S.d})]},`${S.from}|${S.to}`):null)}),g.map(S=>(0,Se.jsx)(ba,{id:S.id,hue:Math.round(Mt(S.kind,o?.accents)),drawing:P.get(S.id),pinned:i?.has(S.id)??!1,chosenKey:k,flaggedKey:B,press:h},S.id))]})})}var ba=(0,lt.memo)(function({id:t,hue:n,drawing:r,pinned:o,chosenKey:i,flaggedKey:a,press:l}){let c=new Set(i.split(`
6
6
  `)),d=new Set(a.split(`
7
7
  `));return(0,Se.jsxs)("g",{className:"graview-plot","data-graview-plot":t,"data-graview-pinned":o?"":void 0,style:{"--graview-hue":n},children:[(0,Se.jsx)("polygon",{className:"graview-plot-tile",points:r.tile,onClick:s=>{l(t)&&s.stopPropagation()}}),r.buildings.length>0?(0,Se.jsxs)("g",{className:"graview-village","data-graview-village":r.buildings.length,"data-graview-rest":r.rest||void 0,children:[r.buildings.map(s=>(0,Se.jsxs)("g",{className:"graview-building","data-graview-building":s.id,"data-graview-flagged":d.has(s.id)?"":void 0,"data-graview-selected":c.has(s.id)?"":void 0,children:[(0,Se.jsx)("polygon",{className:"graview-iso-left",points:s.left}),(0,Se.jsx)("polygon",{className:"graview-iso-right",points:s.right}),(0,Se.jsx)("polygon",{className:"graview-iso-roof",points:s.roof})]},s.id)),r.rest>0?(0,Se.jsxs)("text",{className:"graview-village-rest",x:r.front.x,y:r.front.y-4,textAnchor:"middle",children:["+",r.rest]}):null]}):null]})});function va(e,t,n){let r=e.footprint/2,o=(g,x,y=0)=>{let h=ve(g,x,t.cell);return{x:t.originX+n.x+h.x,y:t.originY+n.y+h.y-y}},i=e.footprint*t.cell*.5*e.height,a=o(e.col-r,e.row-r,i),l=o(e.col+r,e.row-r,i),c=o(e.col+r,e.row+r,i),d=o(e.col-r,e.row+r,i),s=o(e.col+r,e.row+r),u=o(e.col-r,e.row+r),f=o(e.col+r,e.row-r);return{roof:Cn([a,l,c,d]),left:Cn([d,c,s,u]),right:Cn([c,l,f,s]),top:a}}function Sa(e,t,n){let r=e.x-t.originX-n.x,o=e.y-t.originY-n.y;return{col:r/t.cell+2*o/t.cell,row:2*o/t.cell-r/t.cell}}var En=(e,t,n,r)=>{let{col:o,row:i}=Sa(e,n,r);return o>=t.col&&o<=t.col+t.side&&i>=t.row&&i<=t.row+t.side},An=(e,t,n)=>({x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n});function ka(e,t){let n=e.col+e.side/2,r=e.row+e.side/2,o=t.col+t.side/2,i=t.row+t.side/2,a=h=>Math.floor(h.row/5),l=h=>Math.floor(h.col/5),c=a(e),d=a(t),s=l(e),u=l(t),f=d>c?c*5+5-.5:d<c?c*5-.5:c*5+5-.5,g=u>s?u*5-.5:u<s?u*5+5-.5:u*5-.5,x=[{col:n,row:r},{col:n,row:f},{col:g,row:f},{col:g,row:i},{col:o,row:i}],y=[];for(let h of x){let m=y[y.length-1];m&&Math.abs(m.col-h.col)<1e-9&&Math.abs(m.row-h.row)<1e-9||y.push(h)}for(let h=y.length-2;h>0;h--){let m=y[h-1],b=y[h],R=y[h+1],P=Math.abs(m.col-b.col)<1e-9&&Math.abs(b.col-R.col)<1e-9,O=Math.abs(m.row-b.row)<1e-9&&Math.abs(b.row-R.row)<1e-9;(P||O)&&y.splice(h,1)}return y}function Ma(e,t,n,r){let o=ka(e,t).map(l=>{let c=ve(l.col,l.row,n.cell);return{x:n.originX+r.x+c.x,y:n.originY+r.y+c.y}}),i=[],a=!1;for(let l=0;l<o.length-1;l++){let c=o[l],d=o[l+1];if(!a){if(En(d,e,n,r))continue;let s=0,u=1;for(let f=0;f<12;f++){let g=(s+u)/2;En(An(c,d,g),e,n,r)?s=g:u=g}i.push(An(c,d,u)),a=!0}if(En(d,t,n,r)){let s=0,u=1;for(let f=0;f<12;f++){let g=(s+u)/2;En(An(c,d,g),t,n,r)?u=g:s=g}return i.push(An(c,d,s)),i}i.push(d)}return i}var _=ee(be(),1);function Ra({hue:e,mode:t}){let n=t==="docked";return(0,_.jsxs)("svg",{viewBox:"0 0 32 38","aria-hidden":"true",children:[(0,_.jsxs)("g",{fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinejoin:"round",strokeLinecap:"round",children:[(0,_.jsx)("line",{x1:"16",y1:"3.5",x2:"16",y2:"7"}),(0,_.jsx)("circle",{cx:"16",cy:"2.6",r:"1.5",fill:"none"}),(0,_.jsx)("path",{d:"M8 16 V12.5 C8 8.5 11.5 7 16 7 C20.5 7 24 8.5 24 12.5 V16 Z",fill:"currentColor",fillOpacity:"0.1"}),t==="refused"?(0,_.jsx)("line",{x1:"11",y1:"12.5",x2:"21",y2:"12.5",strokeWidth:"2"}):(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)("rect",{x:"10.2",y:"10.2",width:"11.6",height:"4.6",rx:"2.3",fill:"currentColor",fillOpacity:"0.14",strokeWidth:"1"}),(0,_.jsx)("circle",{cx:"13.4",cy:"12.5",r:"1.25",fill:"currentColor",stroke:"none",opacity:n?.45:1}),(0,_.jsx)("circle",{cx:"18.6",cy:"12.5",r:"1.25",fill:"currentColor",stroke:"none",opacity:n?.45:1}),t==="reading"?(0,_.jsx)("line",{x1:"10.2",y1:"12.5",x2:"21.8",y2:"12.5",strokeWidth:"0.8",opacity:"0.7"}):null]}),(0,_.jsx)("line",{x1:"16",y1:"16",x2:"16",y2:"18.5"}),(0,_.jsx)("polygon",{points:"16,18.5 24,22.5 16,26.5 8,22.5",fill:"currentColor",fillOpacity:"0.22"}),(0,_.jsx)("polygon",{points:"8,22.5 16,26.5 16,33.5 8,29.5",fill:"currentColor",fillOpacity:"0.08"}),(0,_.jsx)("polygon",{points:"24,22.5 16,26.5 16,33.5 24,29.5",fill:"currentColor",fillOpacity:"0.3"}),t==="writing"?(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)("polyline",{points:"24,24 28.5,20.5"}),(0,_.jsx)("line",{x1:"27.5",y1:"19",x2:"30",y2:"21.5",strokeWidth:"1.8"})]}):(0,_.jsx)("line",{x1:"24",y1:"24",x2:"26.5",y2:"29"}),(0,_.jsx)("line",{x1:"8",y1:"24",x2:"5.5",y2:"29"}),(0,_.jsx)("path",{d:"M9.5 33.5 v2.2 h4"}),(0,_.jsx)("path",{d:"M22.5 33.5 v2.2 h-4"})]}),(0,_.jsx)("title",{children:`robot, ${t}`})]})}function Pa({hue:e}){return(0,_.jsxs)("svg",{viewBox:"0 0 22 24","aria-hidden":"true",style:{color:`hsl(${Math.round(e)} 50% 48%)`},children:[(0,_.jsxs)("g",{fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinejoin:"round",strokeLinecap:"round",children:[(0,_.jsx)("circle",{cx:"11",cy:"6",r:"4.2"}),(0,_.jsx)("path",{d:"M3 23 C3 15.5 6 13 11 13 C16 13 19 15.5 19 23"})]}),(0,_.jsx)("title",{children:"somebody"})]})}function zr({width:e,whereIs:t}){let{who:n,following:r,follow:o}=le(),i=mr([...n.values()],t,e);return i.length===0?null:(0,_.jsx)("div",{className:"graview-occupants","data-testid":"occupants","data-graview-occupants":i.length,children:i.map((a,l)=>{if(a.kind==="over")return(0,_.jsx)("div",{className:"graview-presence-over","data-testid":"presence-over","data-graview-over-by":a.presence.participant,style:{left:a.box.x-3,top:a.box.y-3,width:a.box.width+6,height:a.box.height+6,"--graview-hue":a.presence.hue}},`over:${a.presence.participant}`);if(a.kind==="count")return(0,_.jsxs)("span",{className:"graview-figure-count","data-testid":"presence-count","data-graview-at":a.at,style:{left:a.point.x,top:a.point.y},title:`${a.n} more here`,children:["+",a.n]},`count:${a.at}:${l}`);let c=a.presence.hue,d=or(a.presence)||"somebody";if(a.kind==="edge")return(0,_.jsxs)("button",{type:"button",className:"graview-figure-edge","data-testid":"presence-edge","data-graview-person":a.presence.participant,style:{left:Math.max(8,a.point.x-120),top:a.point.y},onClick:()=>o(a.presence.participant),"aria-label":`${d} is somewhere else \u2014 press to go where they are`,children:["\u2192 ",d]},`edge:${a.presence.participant}`);if(a.kind==="robot")return(0,_.jsxs)("div",{className:"graview-figure","data-graview-figure":`theirs:${a.presence.participant}`,"data-graview-theirs":"","data-graview-mode":a.mode,"data-graview-at":a.presence.robot?.at??"",style:{transform:`translate(${a.point.x.toFixed(1)}px, ${a.point.y.toFixed(1)}px)`,"--graview-hue":c},children:[(0,_.jsx)("span",{className:"graview-figure-body",role:"img","aria-label":`${d}'s agent \u2014 ${a.mode}`,style:{cursor:"default"},children:(0,_.jsx)(Ra,{hue:c,mode:a.mode})}),(0,_.jsxs)("span",{className:"graview-figure-name",children:[d,"'s agent"]})]},`robot:${a.presence.participant}`);let s=r?.participant===a.presence.participant;return(0,_.jsxs)("div",{className:"graview-figure","data-graview-figure":a.presence.participant,"data-graview-person":"","data-graview-at":a.at,"data-graview-audience":a.audience?"":void 0,"data-graview-followed":s?"":void 0,style:{transform:`translate(${a.point.x.toFixed(1)}px, ${a.point.y.toFixed(1)}px)`,"--graview-hue":c},children:[(0,_.jsx)("button",{type:"button",className:"graview-figure-body","aria-label":`${d} is here${s?". Press to stop following":". Press to go where they go"}`,"aria-pressed":s,onClick:u=>{u.stopPropagation(),o(s?null:a.presence.participant)},onPointerDown:u=>u.stopPropagation(),children:(0,_.jsx)(Pa,{hue:c})}),(0,_.jsx)("span",{className:"graview-figure-name",children:d})]},`person:${a.presence.participant}`)})})}var tn=ee(be(),1),Gr={left:"\u2190",right:"\u2192",top:"\u2191",bottom:"\u2193"},Oa=36,Ur=56;function Xr({result:e,schema:t,onGo:n}){let r=So(e);if(r.length===0)return null;let o=[];for(let i of["left","right","top","bottom"]){let a=i==="left"||i==="right"?e.height:e.width,l=-1/0,c=r.filter(d=>d.side===i).sort((d,s)=>d.along-s.along);for(let d of c){let s=Math.max(Ur,Math.min(a-Ur,Math.max(d.along,l+Oa)));l=s;let u=Wt(t,d.kind),f=i==="left"?{left:6,top:s,transform:"translateY(-50%)"}:i==="right"?{right:6,top:s,transform:"translateY(-50%)"}:i==="top"?{top:6,left:s,transform:"translateX(-50%)"}:{bottom:6,left:s,transform:"translateX(-50%)"};o.push((0,tn.jsx)("button",{type:"button",className:"graview-edge-sign","data-graview-past-edge":d.id,"aria-label":`${u}, past the ${i} edge \u2014 bring it into view`,title:`${u} is past the ${i} edge`,tabIndex:-1,onPointerDown:g=>g.stopPropagation(),onClick:g=>{g.stopPropagation(),n(d.by)},style:{...Ea,...f},children:i==="right"||i==="bottom"?`${u} ${Gr[i]}`:`${Gr[i]} ${u}`},d.id))}}return(0,tn.jsx)(tn.Fragment,{children:o})}var Ea={position:"absolute",zIndex:Te.lines,minHeight:28,maxWidth:"40%",padding:"3px 10px",font:"inherit",fontSize:"0.75rem",letterSpacing:"0.04em",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",color:"var(--graview-ink)",background:"var(--graview-panel)",border:"1px solid var(--graview-edge)",borderRadius:6,boxShadow:"0 2px 8px rgb(0 0 0 / 0.12)",cursor:"pointer"};var bt=ee(De(),1),Aa=180;function qr({view:e,result:t,frame:n,panned:r,closer:o,screenId:i,setCamera:a}){let l=(0,bt.useRef)(new Map),c=(0,bt.useRef)(e.overview??!1),d=(0,bt.useRef)(null);if((0,bt.useEffect)(()=>{if(!e.overview||!i||!t.city){if(c.current&&!e.overview)return;a(O=>O.x===0&&O.y===0?O:{x:0,y:0});return}let s=t.nodes.find(O=>O.id===i);if(!s)return;let u=o>1&&s.screenOf?t.nodes.find(O=>O.id===ce(s.screenOf)):void 0,f=u?{x:Math.min(s.x,u.x),y:Math.min(s.y,u.y),width:Math.max(s.x+s.width,u.x+u.width)-Math.min(s.x,u.x),height:Math.max(s.y+s.height,u.y+u.height)-Math.min(s.y,u.y)}:s;if(f.x>=0&&f.y>=0&&f.x+f.width<=t.width&&f.y+f.height<=t.height&&!u)return;let x=24,y=(O,k,B)=>O<x?x-O:O+k>B-x?B-x-(O+k):0,h=wt(t),m=e.pan??{x:0,y:0},b=u?r.x+(t.width/2-(f.x+f.width/2)):r.x+y(f.x,f.width,t.width),R=t.height/2-(f.y+f.height/2),P=u?r.y+(s.y+R<x?x-s.y:R):r.y+y(f.y,f.height,t.height);a({x:(u?b:Math.max(-h.x,Math.min(h.x,b)))-m.x,y:(u?P:Math.max(-h.y,Math.min(h.y,P)))-m.y})},[i,e.overview,o]),n.city){let s=new Map;for(let u of n.nodes){if(!u.plot||Math.round(u.plane)!==2)continue;let f=ve(u.plot.col+u.plot.side/2,u.plot.row+u.plot.side/2,n.city.cell);s.set(u.id,{x:n.city.originX+r.x+f.x,y:n.city.originY+r.y+f.y})}l.current=s}return(0,bt.useEffect)(()=>{let s=e.overview??!1,u=c.current&&!s;if(c.current=s,s&&d.current&&(clearTimeout(d.current),d.current=null),!u)return;let f=e.focusId?xt(e.focusId)[0]:void 0,g=f?l.current.get(ce(f)):void 0,x=t.nodes.find(y=>y.id===e.focusId);if(!g||!x){a({x:0,y:0});return}a({x:g.x-(x.x+x.width/2),y:g.y-(x.y+x.height/2)}),d.current&&clearTimeout(d.current),d.current=setTimeout(()=>{d.current=null,a({x:0,y:0})},Aa)},[e.overview]),(0,bt.useEffect)(()=>()=>{d.current&&clearTimeout(d.current)},[]),{gliding:()=>d.current!==null}}var se=ee(De(),1);function Qr(){let[e,t]=(0,se.useState)(null),n=(0,se.useRef)(null),r=(0,se.useRef)(0),o=(0,se.useCallback)(a=>{n.current=a,r.current===0&&(r.current=requestAnimationFrame(()=>{r.current=0,t(n.current)}))},[]),i=(0,se.useCallback)(()=>{r.current!==0&&cancelAnimationFrame(r.current),r.current=0;let a=n.current;return n.current=null,a&&t(null),a},[]);return{held:e,place:o,release:i}}function Zr({stage:e,pan:t,setView:n,settled:r}){let o=(0,se.useRef)({x:0,y:0}),i=(0,se.useRef)(0),a=(0,se.useRef)(!1),l=(0,se.useRef)(r);l.current=r;let c=(0,se.useCallback)(()=>[...e.current?.querySelectorAll("[data-graview-world]")??[]],[e]),d=(0,se.useCallback)(()=>{i.current===0&&(i.current=requestAnimationFrame(()=>{i.current=0;let{x,y}=o.current,h=x===0&&y===0?"":`translate3d(${x}px, ${y}px, 0)`;for(let m of c())m.style.transform=h}))},[c]),s=(0,se.useCallback)(()=>{a.current=!1;for(let x of c())x.style.transform="";l.current()},[c]),u=(0,se.useCallback)((x,y)=>{o.current={x:x.x-y.x,y:x.y-y.y},d()},[d]),f=(0,se.useCallback)(()=>{let{x,y}=o.current;return x===0&&y===0?!1:(o.current={x:0,y:0},a.current=!0,n(h=>{let m=h.pan??{x:0,y:0};return yt(h,{x:m.x+x,y:m.y+y})}),window.setTimeout(()=>{a.current&&s()},300),!0)},[n,s]);(0,se.useLayoutEffect)(()=>{a.current&&s()},[t,s]);let g=(0,se.useCallback)(()=>o.current,[]);return{shiftTo:u,settle:f,settling:a,offset:g}}var Ca=4;function Jr({view:e,panned:t,limit:n,panWithin:r,moveByTransform:o,setView:i,setDragging:a,noteMoved:l,shift:c,district:d}){let s=(0,se.useRef)(!1),u=(0,se.useRef)(null),f=m=>{let b=e.pan??{x:0,y:0};u.current={kind:"pan",fromX:m.clientX,fromY:m.clientY,baseX:b.x,baseY:b.y,moved:!1}};return{onGroundDown:m=>{m.button===0&&(m.target.closest("[data-graview-view]")||f(m))},onCardDown:(m,b)=>{if(b.button===0){if(m.screenOf!==void 0&&!b.target.closest("[data-graview-grip]")){f(b);return}u.current={kind:"card",id:m.id,fromX:b.clientX,fromY:b.clientY,baseX:m.x-t.x,baseY:m.y-t.y,moved:!1}}},onDragMove:m=>{let b=u.current;if(!b)return;let R=m.clientX-b.fromX,P=m.clientY-b.fromY;if(!b.moved){if(Math.hypot(R,P)<Ca)return;b.moved=!0,a(!0),m.currentTarget.setPointerCapture(m.pointerId)}if(b.kind==="pan"){let O=r(n(),{x:b.baseX+R,y:b.baseY+P});o?c.shiftTo(O,e.pan??{x:0,y:0}):i(k=>yt(k,O))}else b.id&&d.place({id:b.id,x:b.baseX+R,y:b.baseY+P})},onDragUp:()=>{c.settle();let m=d.release();m&&i(b=>zt(b,m.id,{x:m.x,y:m.y})),u.current?.moved&&(s.current=!0,setTimeout(()=>s.current=!1,0),l()),u.current=null,!c.settling.current&&a(!1)},swallow:s}}function ei({stage:e,view:t,setView:n}){let r=(0,se.useRef)({view:t,charge:0,coolUntil:0,lastScale:1});r.current.view=t;let o=(0,se.useRef)(()=>{}),i=(0,se.useRef)(()=>{});return(0,se.useEffect)(()=>{let a=e.current;if(!a)return;let l=(u,f)=>{let g=r.current;if(f<g.coolUntil)return;let x=g.view.overview??!1;u!==x&&(g.coolUntil=f+600,g.charge=0,n(Yt(g.view,u)))},c=u=>{let f=r.current,g=f.view.overview??!1;if(u.ctrlKey){if(u.preventDefault(),!g){if(f.charge+=u.deltaY,Math.abs(f.charge)<60)return;f.charge>0?l(!0,performance.now()):f.charge=0;return}o.current(Math.exp(-u.deltaY*.004),u.clientX,u.clientY);return}!g||u.target?.closest("[data-graview-view], .graview-scroll, [data-graview-overlay], .graview-zoom")||(u.preventDefault(),i.current(-u.deltaX,-u.deltaY))},d=u=>{u.preventDefault(),r.current.lastScale=1},s=u=>{u.preventDefault();let f=r.current,g=u.scale??1;if(!(f.view.overview??!1)){g<.72&&l(!0,performance.now());return}let x=g/(f.lastScale||1);f.lastScale=g;let y=u;o.current(x,y.clientX,y.clientY)};return a.addEventListener("wheel",c,{passive:!1}),a.addEventListener("gesturestart",d),a.addEventListener("gesturechange",s),()=>{a.removeEventListener("wheel",c),a.removeEventListener("gesturestart",d),a.removeEventListener("gesturechange",s)}},[n,e]),{zoomAbout:o,panBy:i}}var ti={directed:"You",autonomous:"An agent","co-edited":"You and an agent",rule:"A rule"};function Oo(e,t){let n=new Set(e.map(o=>o.id)),r=new Set;for(let o of t){if(n.has(o)){r.add(o);continue}let i=e.find(a=>a.aggregate?.memberIds.includes(o));i&&r.add(i.id)}return r}function Eo(e){return e.emphasized?e.stressed?.95:.08:e.anyChosen?e.mine?.9:.12:e.touches?Math.max(.34,.9-.09*Math.max(0,(e.siblings??1)-1)):.12}function Ao(e){return e.edgeChosen?.9:e.lit?.78:e.own*(e.anyLit?e.kit.dim:e.kit.rest)}function qe(e,t){if(!e)return null;let n=Math.max(0,Math.min(2,Math.floor(e.plane))),r=Math.max(0,Math.min(2,Math.ceil(e.plane))),{scale:o}=n===r?Ue(n,t):yn(Ue(n,t),Ue(r,t),e.plane-n);return{x:e.x,y:e.y,width:e.width*o,height:e.height*o}}function Ln(e,t){if(typeof getComputedStyle>"u"||getComputedStyle(e).visibility==="hidden")return null;let n=-1/0,r=-1/0,o=1/0,i=1/0,a=e.getBoundingClientRect();n=Math.max(n,a.left),r=Math.max(r,a.top),o=Math.min(o,a.right),i=Math.min(i,a.bottom);let l=e.parentElement;for(;l&&l!==t;){let d=getComputedStyle(l);if(d.overflowX!=="visible"||d.overflowY!=="visible"){let s=l.getBoundingClientRect();d.overflowX!=="visible"&&(n=Math.max(n,s.left),o=Math.min(o,s.right)),d.overflowY!=="visible"&&(r=Math.max(r,s.top),i=Math.min(i,s.bottom))}l=l.parentElement}if(o-n<=2||i-r<=2)return null;let c=t.getBoundingClientRect();return{x:n-c.left,y:r-c.top,width:o-n,height:i-r}}function Qe(e,t,n){if(!e||typeof document>"u")return null;let r=e.querySelector(`[data-graview-view="${CSS.escape(t)}"]`);if(!r)return null;let o=(n?r.querySelector(".graview-kind-block"):null)??r.querySelector('[data-graview-primitive="panel"], .graview-kind-face, .graview-kind-card')??r;return Ln(o,e)}function In(e,t,n,r,o){let i=d=>e.nodes.find(s=>s.id===d);if(o.startsWith("screen:")){let d=o.slice(7),s=e.nodes.find(h=>h.screenOf===d);if(!s)return null;let u=Qe(t,s.id,!1)??qe(s,n);if(!u)return null;let f=e.nodes.find(h=>h.id===ce(d)),g=f?qe(f,n):null,x=u.y+u.height,y=g?Math.max(20,g.y-x):Math.max(20,u.height*.18);return{x:u.x,y:x,width:u.width,height:y}}let a=i(o),l=$e(o);if(!a&&l!==null&&(a=i(Oe(l))),!a&&Ot(o)){let[d]=xt(o);d&&(a=i(ce(d)))}if(!a){let d=r.places().find(s=>s.as===o);d&&(a=i(Oe(d.kind))??i(ce(d.kind)))}if(a||(a=[...e.nodes].filter(d=>d.aggregate?.memberIds.includes(o)).sort((d,s)=>d.plane-s.plane)[0]),!a)return null;let c=e.city!==void 0;return Qe(t,a.id,c&&a.aggregate!==void 0&&Math.round(a.plane)===2)??qe(a,n)}var ct=ee(De(),1);var te=ee(be(),1);function oi({kinds:e}){let{store:t}=le(),{view:n,go:r}=ro(),o=(0,ct.useRef)(null),i=ao("districts",{align:"start"}),a=i.open,l=f=>Wt(t.schema,f),c=f=>t.graph.allNodes().filter(g=>g.kind===f).length,d=f=>!n.overview&&n.focusId===Oe(f),s=e.filter(f=>!d(f)),u=f=>{i.setOpen(!1);let g=o.current?.querySelector(".graview-beyond-more")??null;d(f)||r(Pt(n,Oe(f))),g?.focus({preventScroll:!0});let x=`[data-graview-view="${Oe(f)}"][tabindex], [data-graview-view="${ce(f)}"][tabindex]`,y=40,h=()=>{let m=document.querySelector(x);m?m.focus({preventScroll:!0}):--y>0&&requestAnimationFrame(h)};requestAnimationFrame(h)};return(0,te.jsxs)("div",{ref:o,className:"graview-beyond","data-graview-beyond":e.length,"data-graview-beyond-open":a?"":void 0,children:[(0,te.jsxs)("button",{type:"button",className:"graview-beyond-more","data-testid":"beyond-more",...i.trigger,"aria-haspopup":"menu",title:`${s.length} more district${s.length===1?"":"s"} \u2014 press to see them`,onPointerDown:f=>f.stopPropagation(),onClick:f=>{f.stopPropagation(),i.toggle()},children:[(0,te.jsxs)("span",{className:"graview-beyond-count",children:["+",s.length]}),(0,te.jsx)("span",{className:"graview-beyond-word",children:"more"}),(0,te.jsx)("span",{className:"graview-beyond-chevron","aria-hidden":"true",children:a?"\u25BE":"\u25B4"})]}),a?(0,te.jsx)("ul",{...i.pane,className:"graview-beyond-list",role:"menu","aria-label":"The other districts","data-testid":"beyond-list",style:io,onPointerDown:f=>f.stopPropagation(),children:e.map(f=>(0,te.jsx)("li",{role:"none",children:(0,te.jsxs)("button",{type:"button",role:"menuitem","data-graview-pick":ce(f),"aria-current":d(f)?"location":void 0,title:d(f)?`${l(f)} \u2014 where you are`:`Go to ${l(f)}`,onPointerDown:g=>g.stopPropagation(),onClick:g=>{g.stopPropagation(),u(f)},children:[(0,te.jsx)("span",{className:"graview-beyond-name",children:l(f)}),(0,te.jsx)("span",{className:"graview-beyond-tally",children:d(f)?"here":c(f)})]})},f))}):null]})}function La(e,t){if(e===t)return!0;let n=Object.keys(e);return n.length!==Object.keys(t).length?!1:n.every(r=>r==="x"||r==="y"||Lo(e[r],t[r]))}function Lo(e,t){if(Object.is(e,t))return!0;if(typeof e!="object"||typeof t!="object"||e===null||t===null||Array.isArray(e)!==Array.isArray(t)||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t))return!1;let n=Object.getPrototypeOf(e);if(n!==Object.prototype&&n!==Array.prototype)return!1;if(Array.isArray(e)){let o=t;if(e.length!==o.length)return!1;for(let i=0;i<e.length;i++)if(!Lo(e[i],o[i]))return!1;return!0}let r=Object.keys(e);return r.length!==Object.keys(t).length?!1:r.every(o=>Lo(e[o],t[o]))}var ri=(0,ct.memo)(ii,(e,t)=>e.mode===t.mode&&e.selected===t.selected&&e.fidelity===t.fidelity&&La(e.node,t.node));function ii({node:e,mode:t,selected:n,fidelity:r}){let{store:o,views:i,view:a}=le(),l=It(),c=gr(),d=wn(),s=e.aggregate||Ot(e.id)||$e(e.id)!==null?"many":"one",u={cardinality:s,fidelity:r??cr[Na(e.plane)].fidelity},f=s==="many"&&e.id===a.focusId?a.within?.view:void 0,g=i.resolve(e.kind,u,f),x=g?.view,y=i.resolve(e.kind,{cardinality:"many",fidelity:"full"})?.view,h=y!==void 0&&y.generic!==!0,m=e.aggregate?.memberIds,b=(0,ct.useMemo)(()=>(m??[]).map(O=>o.graph.getNode(O)).filter(O=>O!==void 0),[m,o,l]),R={...e.aggregate?{nodes:b,label:g?.title??e.aggregate.label}:{node:o.graph.getNode(e.id)},fidelity:u.fidelity,cardinality:u.cardinality,mode:t,selected:n,implicated:c,flagged:d,...e.raised?{raised:!0}:{},...e.focused?{focused:!0}:{},...e.opened?{opened:!0}:{},...e.openedRows!==void 0?{openedRows:e.openedRows}:{},...e.plot?{plot:e.plot}:{},...e.aggregate?.retired?{retired:e.aggregate.retired}:{},...e.rank?{rank:e.rank}:{},...e.nestedUnder?{nestedUnder:e.nestedUnder}:{},...h?{hasOwnView:!0}:{}};if(!x)return(0,te.jsx)(Ta,{node:e,props:R});let P=[e.id,g?.title??"",u.fidelity,u.cardinality,t,n,e.raised??!1,e.focused??!1,e.opened??!1,e.openedRows??"",e.rank??"",e.nestedUnder??"",e.plot?`${e.plot.col},${e.plot.row},${e.plot.side}`:"",e.aggregate?Co(e.aggregate.memberIds):"",e.aggregate?.retired??"",c?Co(c):"",d?Co(d):"",h].join("|");return(0,te.jsx)(no,{mode:t,children:(0,te.jsx)(yr,{kind:R.label??e.kind,...g?.title?{view:g.title}:{},children:(0,te.jsx)(Ia,{signature:P,graph:l,draw:()=>(0,te.jsx)(x,{...R})})},`${e.id}|${g?.title??""}`)})}var Ia=(0,ct.memo)(function({draw:t}){return(0,te.jsx)(te.Fragment,{children:t()})},(e,t)=>e.signature===t.signature&&e.graph===t.graph);function Na(e){return Math.max(0,Math.min(2,Math.round(e)))}function Ta({node:e,props:t}){return(0,te.jsxs)("div",{style:{padding:8,font:"13px/1.4 system-ui",overflow:"hidden"},children:[(0,te.jsx)("strong",{children:t.label??e.kind}),t.nodes?(0,te.jsxs)("div",{children:[t.nodes.length," items"]}):(0,te.jsx)("div",{children:e.id})]})}var ai=(0,ct.memo)(function({node:t}){let{store:n}=le(),r=Lt(),o=t.aggregate,i=o.opens,a=o.memberIds.length,l=fn(n.schema,o.kind,a),c=o.memberIds.slice(0,3).map(f=>{let g=n.graph.getNode(f),x=g?n.schema.tryDefinition(g.kind):void 0;return g?x?.label?x.label(g):String(g.label??f):f}),d=o.memberIds,s=(0,ct.useMemo)(()=>{let f=r?mn(r):null;return f?d.filter(g=>f.has(g)).length:0},[r,d]),u=i.in==="picture";return(0,te.jsxs)("div",{className:"graview-band-group","data-graview-band":i.in,"data-graview-band-count":a,"data-graview-emphasis":r?s>0?"lit":"dimmed":void 0,title:u?`${o.label} \u2014 press twice to see them all, arranged`:`${o.label}: ${l} \u2014 press twice to open`,children:[(0,te.jsxs)("span",{className:"graview-band-group-head",children:[(0,te.jsx)("span",{className:"graview-band-group-name",children:o.label}),(0,te.jsx)("span",{className:"graview-band-group-open","aria-hidden":"true",children:u?"\u2197":"\u25BE"})]}),(0,te.jsxs)("span",{className:"graview-band-group-names",children:[u?null:(0,te.jsxs)("span",{className:"graview-band-group-count",children:[l,s>0?` \xB7 ${s} match`:""," \xB7 "]}),c.join(" \xB7 "),a>c.length?" \u2026":""]})]})}),ni=new WeakMap;function Co(e){let t=ni.get(e);if(t!==void 0)return t;let n=2166136261;for(let o of e){for(let i=0;i<o.length;i++)n=Math.imul(n^o.charCodeAt(i),16777619);n=Math.imul(n^44,16777619)}let r=`${e.length}:${(n>>>0).toString(36)}`;return ni.set(e,r),r}var vt=ee(De(),1);function Io(e,t,n){let r=e.aggregate?[...e.aggregate.memberIds]:[e.id];return n?r.every(i=>t.includes(i))?t.filter(i=>!r.includes(i)):[...t,...r.filter(i=>!t.includes(i))]:r}function si(){let[e,t]=(0,vt.useState)(16);return(0,vt.useEffect)(()=>{if(typeof window>"u")return;let n=document.documentElement,r=()=>{let i=parseFloat(getComputedStyle(n).fontSize);Number.isFinite(i)&&t(a=>Math.abs(a-i)<.5?a:i)};r();let o=new MutationObserver(r);return o.observe(n,{attributes:!0,attributeFilter:["style"]}),window.addEventListener("resize",r),()=>{o.disconnect(),window.removeEventListener("resize",r)}},[]),e}function di(e){let[t,n]=(0,vt.useState)(null);return(0,vt.useLayoutEffect)(()=>{let r=e.current?.getBoundingClientRect();!r||r.width===0||r.height===0||n(o=>o??{width:Math.round(r.width),height:Math.round(r.height)})},[e]),(0,vt.useEffect)(()=>{let r=e.current;if(!r||typeof ResizeObserver>"u")return;let o=l=>{!l||l.width===0||l.height===0||n(c=>{let d={width:Math.round(l.width),height:Math.round(l.height)};return c&&c.width===d.width&&c.height===d.height?c:d})},i=new ResizeObserver(l=>o(l[0]?.contentRect)),a=()=>o(r.getBoundingClientRect());return i.observe(r),addEventListener("resize",a),()=>{i.disconnect(),removeEventListener("resize",a)}},[e]),t}function li(e,t){if(t==="dark")return`0 ${(10*e).toFixed(1)}px ${(34*e).toFixed(1)}px rgba(0,0,0,${(e+.12).toFixed(2)})`;let n=`0 ${(1+2*e).toFixed(1)}px ${(2+5*e).toFixed(1)}px rgba(20,30,32,${(.03+.06*e).toFixed(3)})`,r=`0 ${(6+26*e).toFixed(1)}px ${(18+60*e).toFixed(1)}px -${(10+10*e).toFixed(1)}px rgba(20,30,32,${(.1+.3*e).toFixed(3)})`;return`${n}, ${r}`}function ci(e){return`matrix3d(${e.join(",")})`}var We=ee(De(),1);var No=(e,t)=>t.some(n=>e.x>n.x&&e.x<n.x+n.width&&e.y>n.y&&e.y<n.y+n.height);function To(e,t){let n=[],r=[];for(let i=0;i<e.length-1;i++){let a=e[i],l=e[i+1],c=!No(a,t);c&&r.length===0&&r.push(a);for(let d=1;d<=48;d++){let s=d/48,u={x:a.x+(l.x-a.x)*s,y:a.y+(l.y-a.y)*s},f=!No(u,t);if(f===c)continue;let g=(d-1)/48,x=s;for(let m=0;m<10;m++){let b=(g+x)/2,R={x:a.x+(l.x-a.x)*b,y:a.y+(l.y-a.y)*b};!No(R,t)===c?g=b:x=b}let y=(g+x)/2,h={x:a.x+(l.x-a.x)*y,y:a.y+(l.y-a.y)*y};f?r=[h]:(r.push(h),r.length>=2&&n.push(r),r=[]),c=f}c&&r.push(l)}return r.length>=2&&n.push(r),n}function nn(e,t){let n=Math.abs(t.x-e.x);if(Math.abs(t.y-e.y)>n){if(n<2)return[e,t];let i=(e.y+t.y)/2;return[e,{x:e.x,y:i},{x:t.x,y:i},t]}let o=(e.x+t.x)/2;return Math.abs(t.x-e.x)<2?[e,t]:[e,{x:o,y:e.y},{x:o,y:t.y},t]}var _e=e=>Math.round(e*100)/100,Ft=e=>e.map(t=>t.map((n,r)=>`${r===0?"M":"L"} ${_e(n.x)} ${_e(n.y)}`).join(" ")).join(" ");function ui(e,t){if(e.length<3)return Ft([e]);let n=[`M ${_e(e[0].x)} ${_e(e[0].y)}`];for(let o=1;o<e.length-1;o++){let i=e[o-1],a=e[o],l=e[o+1],c=Math.hypot(a.x-i.x,a.y-i.y),d=Math.hypot(l.x-a.x,l.y-a.y),s=Math.min(t,c/2,d/2),u={x:a.x+(i.x-a.x)/(c||1)*s,y:a.y+(i.y-a.y)/(c||1)*s},f={x:a.x+(l.x-a.x)/(d||1)*s,y:a.y+(l.y-a.y)/(d||1)*s};n.push(`L ${_e(u.x)} ${_e(u.y)} Q ${_e(a.x)} ${_e(a.y)} ${_e(f.x)} ${_e(f.y)}`)}let r=e[e.length-1];return n.push(`L ${_e(r.x)} ${_e(r.y)}`),n.join(" ")}function fi(e,t,n){if(e==="orthogonal"){let l=nn(t.p0,t.p1),c=l.slice(1).map((u,f)=>Math.hypot(u.x-l[f].x,u.y-l[f].y)),d=c.reduce((u,f)=>u+f,0)||1,s=n*d;for(let u=0;u<c.length;u++){let f=c[u];if(s<=f||u===c.length-1){let g=f===0?0:Math.min(1,s/f),x=l[u],y=l[u+1];return{x:x.x+(y.x-x.x)*g,y:x.y+(y.y-x.y)*g}}s-=f}return t.p1}let r=e==="straight"?{x:(t.p0.x+t.p1.x)/2,y:(t.p0.y+t.p1.y)/2}:t.c,o=(1-n)*(1-n),i=2*(1-n)*n,a=n*n;return{x:o*t.p0.x+i*r.x+a*t.p1.x,y:o*t.p0.y+i*r.y+a*t.p1.y}}function Nn(e,t){return e!=="straight"?t:{...t,c:{x:(t.p0.x+t.p1.x)/2,y:(t.p0.y+t.p1.y)/2}}}function hi(e,t){let n=t.x-e.x,r=t.y-e.y,o=(n/2+r)/2,i=(r-n/2)/2;if(Math.abs(o)<1||Math.abs(i)<1)return[e,t];let a={x:e.x+2*o,y:e.y+o};return[e,a,t]}function $a(e){let t=[...e].sort((r,o)=>r.y-o.y||r.x-o.x),n=[];for(let r of t){let o=n.find(i=>r.y<i.bottom&&r.y+r.height>i.top);o?(o.boxes.push(r),o.top=Math.min(o.top,r.y),o.bottom=Math.max(o.bottom,r.y+r.height)):n.push({top:r.y,bottom:r.y+r.height,boxes:[r]})}for(let r of n)r.boxes.sort((o,i)=>o.x-i.x);return n.sort((r,o)=>r.top-o.top)}var $o=(e,t)=>e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height,pi=(e,t)=>e.findIndex(n=>n.boxes.some(r=>$o(r,t)));function qt(e,t,n){return t<0?e[0].top-12*2:n>=e.length?e[e.length-1].bottom+12*2:(e[t].bottom+e[n].top)/2}function Da(e,t){let n=[{from:-1/0,to:1/0}];for(let i of e){let a=[],l=-1/0;for(let d of i.boxes)a.push({from:l,to:d.x-12}),l=d.x+d.width+12;a.push({from:l,to:1/0});let c=[];for(let d of n)for(let s of a){let u=Math.max(d.from,s.from),f=Math.min(d.to,s.to);f-u>=0&&c.push({from:u,to:f})}n=c}let r=t,o=1/0;for(let i of n){let a=Math.min(Math.max(t,i.from),i.to),l=i.from===-1/0||i.to===1/0,c=Math.abs(a-t)+(l?60:0);c<o&&(o=c,r=a)}return r}function gi(e,t,n,r=0){let o=$a(n.some(b=>$o(b,e))&&n.some(b=>$o(b,t))?n:[...n,e,t]),i=pi(o,e),a=pi(o,t),l=e.x+e.width/2,c=t.x+t.width/2,d=(r%3-1)*4;if(i===a){let b=i<o.length-1||o.length===1,R=(b?qt(o,i,i+1):qt(o,i-1,i))+d,P=b?e.y+e.height:e.y,O=b?t.y+t.height:t.y;return[{x:l,y:P},{x:l,y:R},{x:c,y:R},{x:c,y:O}]}let s=a>i,u=s?1:-1,f={x:l,y:s?e.y+e.height:e.y},g={x:c,y:s?t.y:t.y+t.height},x=(s?qt(o,i,i+1):qt(o,i-1,i))+d,y=(s?qt(o,a-1,a):qt(o,a,a+1))+d;if(Math.abs(a-i)===1)return[f,{x:l,y:x},{x:c,y:x},g];let h=[];for(let b=i+u;b!==a;b+=u)h.push(o[b]);let m=Da(h,c);return[f,{x:l,y:x},{x:m,y:x},{x:m,y},{x:c,y},g]}function mi(e,t=16){let n=new Map;for(let o of e){let i=o.a<o.b?`${o.a}\0${o.b}`:`${o.b}\0${o.a}`,a=n.get(i);a?a.push(o.key):n.set(i,[o.key])}let r=new Map;for(let o of n.values())o.forEach((i,a)=>r.set(i,(a-(o.length-1)/2)*t));return r}var Ve=ee(be(),1);function $n(e,t){let n=Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x),r=Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y);if(n>0&&r>0)return null;let o=n>.5*Math.min(e.width,t.width),i=!o&&r>.5*Math.min(e.height,t.height);if(o){let x={x:e.x+e.width,y:e.y+e.height/2},y={x:t.x+t.width,y:t.y+t.height/2};return{from:x,to:y,control:{x:Math.max(x.x,y.x)+18,y:(x.y+y.y)/2},mode:"stacked"}}if(i){let x={x:e.x+e.width/2,y:e.y},y={x:t.x+t.width/2,y:t.y};return{from:x,to:y,control:{x:(x.x+y.x)/2,y:Math.min(x.y,y.y)-18},mode:"abreast"}}let a={x:t.x+t.width/2,y:t.y+t.height/2},l={x:e.x+e.width/2,y:e.y+e.height/2},c=Tn(e,a),d=Tn(t,l),s=Math.hypot(d.x-c.x,d.y-c.y);if(s<8)return null;let u=Math.min(36,s*.12),f=-(d.y-c.y)/s,g=(d.x-c.x)/s;return{from:c,to:d,control:{x:(c.x+d.x)/2+f*u,y:(c.y+d.y)/2+g*u},mode:"direct"}}function Tn(e,t){let n=e.x+e.width/2,r=e.y+e.height/2,o=t.x-n,i=t.y-r;if(o===0&&i===0)return{x:n,y:r};let a=o===0?1/0:e.width/2/Math.abs(o),l=i===0?1/0:e.height/2/Math.abs(i),c=Math.min(a,l),d=Math.max(0,c*.98);return{x:n+o*d,y:r+i*d}}function Fa(e,t,n){let r=t.get(e.from),o=t.get(e.to);if(!r||!o)return!1;if(n)return!0;let i=Math.round(r.plane)===1||Math.round(o.plane)===1,a=l=>!!l.aggregate&&Math.round(l.plane)===2;return i&&!a(r)&&!a(o)}var Ha=()=>({clips:new Map,members:new Map,marks:new Map});function ja(e,t){let n=t.marks.get(e);if(n)return n;n=new Map;for(let r of e.querySelectorAll("[data-graview-pick], [data-graview-slot]"))for(let o of new Set([r.getAttribute("data-graview-pick"),r.getAttribute("data-graview-slot")])){if(o===null)continue;let i=n.get(o);i?i.push(r):n.set(o,[r])}return t.marks.set(e,n),n}function Ba(e,t){let n=t.clips.get(e);if(n===void 0){let r=getComputedStyle(e);n=r.overflow!=="visible"||r.overflowX!=="visible"||r.overflowY!=="visible"?e.getBoundingClientRect():null,t.clips.set(e,n)}return n}function _a(e,t,n){let r=e.parentElement;for(;r!==null;){let o=Ba(r,n);if(o&&!(t.right>o.left+1&&t.left<o.right-1&&t.bottom>o.top+1&&t.top<o.bottom-1))return!1;if(r.hasAttribute("data-graview-view"))break;r=r.parentElement}return!0}function on(e,t,n,r){if(!e||!t||typeof document>"u")return[];let o=r.members.get(t);o||r.members.set(t,o=new Map);let i=o.get(n);if(i)return i;let a=e.getBoundingClientRect(),l=[];for(let c of ja(t,r).get(n)??[]){if(c.closest("[data-graview-offstage]"))continue;let d=c.getBoundingClientRect();d.width<=2||d.height<=2||_a(c,d,r)&&l.push({x:d.left-a.left,y:d.top-a.top,width:d.width,height:d.height})}return l.sort((c,d)=>c.width*c.height-d.width*d.height),o.set(n,l),l}function Dn(e,t,n,r,o){let i=new Map(e.map(h=>[h.id,h])),a=Ha(),l=new Map,c=h=>{if(!n||typeof document>"u")return null;let m=l.get(h);return m===void 0&&(m=n.querySelector(`[data-graview-view="${CSS.escape(h)}"]`),l.set(h,m)),m},d=new Map;for(let h of e){let m=Qe(n,h.id,r)??qe(h,o);m&&d.set(h.id,m)}let s=new Map;if(n&&typeof document<"u"){let h=n.getBoundingClientRect();for(let m of n.querySelectorAll("[data-graview-pick], [data-graview-slot]")){if(m.closest("[data-graview-offstage]"))continue;let b=m.getAttribute("data-graview-pick")??m.getAttribute("data-graview-slot");if(b===null)continue;let R=m.getBoundingClientRect();if(R.width<=2||R.height<=2||R.width>h.width*.6&&R.height>h.height*.6)continue;let P=s.get(b),O={x:R.left-h.left,y:R.top-h.top,width:R.width,height:R.height};P?P.push(O):s.set(b,[O])}}let u=(h,m)=>{let b=[];for(let[R,P]of d)R!==h&&R!==m&&b.push(P);for(let[R,P]of s)R!==h&&R!==m&&b.push(...P);return b},f=h=>Math.round(i.get(h)?.plane??-1)===1,g=[];for(let h of e){let m=d.get(h.id);m&&Math.round(h.plane)===1&&g.push(m)}let x=(h,m)=>!r&&f(h)&&f(m)?g:void 0,y=[];for(let h of t){if(!Fa(h,i,r))continue;let m=d.get(h.from),b=d.get(h.to);if(!m||!b)continue;let R=u(h.from,h.to),P=h.edges,O=r&&P.some(S=>S.from!==h.from&&on(n,c(h.from),S.from,a).length>0||S.to!==h.to&&on(n,c(h.to),S.to,a).length>0),k=x(h.from,h.to);if(r&&!O||h.loop||P.length===0){y.push({key:h.id,connector:h,edges:P,fromBox:m,toBox:b,fromAnchor:h.from,toAnchor:h.to,obstacles:R,hosts:[],...k?{band:k}:{}});continue}let B=new Map;for(let S of P){let w=S.from===h.from?[]:on(n,c(h.from),S.from,a),M=S.to===h.to?[]:on(n,c(h.to),S.to,a),A=[h.from,h.to].find(X=>Math.round(i.get(X)?.plane??-1)===0);if(!r&&A!==void 0&&(S.from!==h.from||S.to!==h.to)&&on(n,c(A),A===h.from?S.to:S.from,a).length>0)continue;let j=A!==void 0?i.get(A):void 0;if(!r&&j?.aggregate&&n&&(A===h.from?S.from!==h.from&&w.length===0:S.to!==h.to&&M.length===0))continue;let C=w.length>0?S.from:h.from,$=M.length>0?S.to:h.to,F=`${h.id}|${C}|${$}`,D=B.get(F);if(D){D.edges.push(S);continue}let K=w.length>0?w:[m],z=M.length>0?M:[b],V=K[0],ge=z[0],me=1/0;for(let X of K)for(let oe of z){let L=Math.hypot(X.x+X.width/2-(oe.x+oe.width/2),X.y+X.height/2-(oe.y+oe.height/2));L<me&&(me=L,V=X,ge=oe)}B.set(F,{edges:[S],fromBox:V,toBox:ge,fromAnchor:C,toAnchor:$})}for(let[S,w]of B)y.push({key:S,connector:h,obstacles:R,hosts:[...w.fromAnchor!==h.from?[m]:[],...w.toAnchor!==h.to?[b]:[]],...k?{band:k}:{},...w})}return y}function Do(e,t){let n=(1-t)*(1-t),r=2*(1-t)*t,o=t*t;return{x:n*e.p0.x+r*e.c.x+o*e.p1.x,y:n*e.p0.y+r*e.c.y+o*e.p1.y}}function yi(e,t,n){let r=(1-t)*(1-n),o=(1-t)*n+t*(1-n),i=t*n;return{p0:Do(e,t),c:{x:r*e.p0.x+o*e.c.x+i*e.p1.x,y:r*e.p0.y+o*e.c.y+i*e.p1.y},p1:Do(e,n)}}function Fo(e,t){let n=d=>t.some(s=>d.x>s.x&&d.x<s.x+s.width&&d.y>s.y&&d.y<s.y+s.height),r=d=>!n(Do(e,d)),i=(d,s,u)=>{for(let f=0;f<10;f++){let g=(d+s)/2;r(g)===u?d=g:s=g}return(d+s)/2},a=[],l=null,c=r(0);c&&(l=0);for(let d=1;d<=64;d++){let s=d/64,u=r(s);if(u===c)continue;let f=i((d-1)/64,s,c);u?l=f:l!==null&&(f-l>.001&&a.push(yi(e,l,f)),l=null),c=u}return l!==null&&1-l>.001&&a.push(yi(e,l,1)),a}function xi({strands:e,result:t,scheme:n,overview:r,selection:o,emphasis:i,stageRef:a,liveOf:l,onPickEdge:c}){let d=en(),s=new Set(t.nodes.filter(k=>k.plot!==void 0&&Math.round(k.plane)===2).map(k=>k.id)),u=k=>r&&t.city!==void 0&&s.has(k.from)&&s.has(k.to),f=Oo(t.nodes,o),g=k=>f.size===0||f.has(k.from)||f.has(k.to),x=new Set(o.filter(k=>Rt(k)===null)),y=r?t.nodes.find(k=>Math.round(k.plane)===0):void 0,h=y?Qe(a.current,y.id,!1)??qe(y,n):null;if(e.length===0)return null;let m=k=>k.edges.some(B=>x.has(B.from)||x.has(B.to)),b=x.size>0&&e.some(m),R=new Map;for(let k of e)R.set(k.connector.id,(R.get(k.connector.id)??0)+1);let P=mi(e.map(k=>({key:k.key,a:k.fromAnchor,b:k.toAnchor}))),O=e.map((k,B)=>{let{connector:S,fromBox:w,toBox:M}=k,A={x:w.x+w.width/2,y:w.y+w.height/2},j={x:M.x+M.width/2,y:M.y+M.height/2},C=r?Tn(w,j):A,$=r?Tn(M,A):j,F=S.loop===!0,{connector:D,style:K}=bn(d,S.kind);if(!D.visible)return null;let z=F?Math.max(22,Math.min(w.width,w.height)*.3):0,V=F?{x:A.x+w.width*.22,y:A.y-w.height/2-z+7}:C,ge=(C.x+$.x)/2,me=(C.y+$.y)/2,X=Math.hypot($.x-C.x,$.y-C.y),oe=Math.min(r?40:90,X*(r?.09:.16)),L=0,Y=0;if(X>0){L=-($.y-C.y)/X,Y=($.x-C.x)/X;let ne=ge-t.width/2,xe=me-t.height/2;if(h&&!F){let rt=h.x+h.width/2,Me=h.y+h.height/2;ne=ge-rt,xe=me-Me;let gt=Math.abs(L*(rt-C.x)+Y*(Me-C.y)),mt=Math.hypot(h.width/2,h.height/2)*.85+24,kt=((rt-C.x)*($.x-C.x)+(Me-C.y)*($.y-C.y))/(X*X);gt<mt&&kt>.1&&kt<.9&&(oe=Math.min(180,Math.max(oe,(mt-gt)*2)))}L*ne+Y*xe<0&&(L=-L,Y=-Y)}oe+=2*(P.get(k.key)??0);let v=Nn(D.route,{p0:C,c:{x:ge+L*oe,y:me+Y*oe},p1:$}),N=u(S),T=D.route==="orthogonal"||N,G=(ne,xe)=>N?hi(ne,xe):nn(ne,xe),H=!F&&k.band?gi(w,M,k.band,B):null,re=F||T||H?[]:Fo(v,[w,M,...k.obstacles]),ie=H?[H]:!F&&T?To(G(C,$),[w,M,...k.obstacles]):[];if(!F&&re.length===0&&ie.length===0)return null;let de=ie[ie.length-1],J=T||H?ie[0]?.[0]:re[0]?.p0,Ce=T||H?de?.[de.length-1]:re[re.length-1]?.p1,ke=ne=>ne.map(xe=>`M ${xe.p0.x} ${xe.p0.y} Q ${xe.c.x} ${xe.c.y} ${xe.p1.x} ${xe.p1.y}`).join(" "),et=`M ${V.x-z} ${V.y} A ${z} ${z} 0 1 1 ${V.x+z} ${V.y} A ${z} ${z} 0 0 1 ${V.x-z} ${V.y}`,Ke=F?et:H?ui(H,10):T?Ft(ie):ke(re),U=ne=>({x:ne.x-8,y:ne.y-8,width:ne.width+16,height:ne.height+16}),Le=[w,M,...k.hosts,...k.obstacles].map(U),tt=F?et:H?Ft(ie):T?Ft(To(G(C,$),Le)):ke(Fo(v,Le)),nt=k.edges.length===1?k.edges[0]:null,He=nt?Kt(S.kind,nt.from,nt.to):null,Je=He!==null&&o.includes(He),ft=k.edges.some(ne=>x.has(ne.from)||x.has(ne.to)),Ne=!r&&x.size>0&&ft,ht=i!==null&&S.kind===i||Je,pt=l?.(S)!==void 0;if(r&&!ht&&!ft&&!(f.size>0&&g(S))&&!pt)return null;let Ye=r?Eo({emphasized:i!==null,stressed:ht,anyChosen:b,mine:ft,touches:g(S),siblings:R.get(S.id)??1}):Ao({edgeChosen:Je,lit:Ne,anyLit:b||i!==null,own:K.opacity,kit:d.emphasis}),ot=Ne&&J&&Ce?k.edges.some(ne=>x.has(ne.from))?Ce:J:null,Ie=(0,Ve.jsxs)("g",{children:[(0,Ve.jsx)("path",{"data-graview-connector":S.kind,"data-graview-edges":k.edges.length,"data-graview-from":k.fromAnchor,"data-graview-to":k.toAnchor,"data-graview-lit":Ne||void 0,"data-graview-activity":l?.(S)?.manner,opacity:Ye*(S.opacity??1),d:Ke,fill:"none",stroke:Xt(K),strokeWidth:(Ne?Math.max(1.6,so(K,r)):so(K,r))+(ht?.6:0),strokeDasharray:xn[K.pattern],strokeLinecap:"round"}),ot?(0,Ve.jsx)("circle",{cx:ot.x,cy:ot.y,r:2.6,fill:Xt(K),opacity:Ye}):null,F&&r?(0,Ve.jsx)("text",{x:V.x,y:V.y-z-5,textAnchor:"middle",opacity:Ye,style:{font:"9px var(--graview-font-body, system-ui)",letterSpacing:"0.09em",textTransform:"uppercase",fill:"var(--graview-ink-faint)"},children:_t(S.kind).toLowerCase()}):null]},k.key),St=null;return He&&c&&!F&&Ye>=.2&&(St=(0,Ve.jsx)("path",{"data-graview-edge":He,className:"graview-edge-hit",d:tt,fill:"none",pathLength:1,strokeDasharray:"0.86",strokeDashoffset:-.07,stroke:"transparent",strokeWidth:14,style:{pointerEvents:"stroke",cursor:"pointer"},onClick:ne=>{ne.stopPropagation(),c(He,{x:ne.clientX,y:ne.clientY})},onContextMenu:ne=>{ne.preventDefault(),ne.stopPropagation(),c(He,{x:ne.clientX,y:ne.clientY})}},`hit:${k.key}`)),{key:k.key,line:Ie,hit:St}});return(0,Ve.jsxs)(Ve.Fragment,{children:[(0,Ve.jsx)("svg",{"aria-hidden":"true","data-graview-world":"",width:t.width,height:t.height,style:{position:"absolute",left:0,top:0,pointerEvents:"none",zIndex:Te.ties},children:O.map(k=>k?.line)}),O.some(k=>k?.hit)?(0,Ve.jsx)("svg",{"data-graview-world":"",width:t.width,height:t.height,style:{position:"absolute",left:0,top:0,pointerEvents:"none",zIndex:Te.tieLabels},children:O.map(k=>k?.hit)}):null]})}var Va=e=>e.length*8.4+16;function wi(e,t){let n=new Map;for(let i of e){let a=n.get(i.key);a?a.push(i):n.set(i.key,[i])}let r=[...n.values()].map(i=>{let a=Math.min(...i.map(c=>c.top)),l=i.filter(c=>c.top-a<=12);return{key:i[0].key,text:i[0].text,left:Math.min(...l.map(c=>c.left)),right:Math.max(...l.map(c=>c.right)),top:a}});r.sort((i,a)=>i.top-a.top||i.left-a.left);let o=r.map(i=>{let a=Math.max(i.right-i.left,Math.min(300,Va(i.text))),l=(i.left+i.right)/2;return{left:l-a/2,right:l+a/2}});return r.map((i,a)=>{let l=r.map((m,b)=>({other:m,at:b})).filter(({other:m})=>m!==i&&Math.abs(m.top-i.top)<=12),c=l.filter(({other:m})=>m.right<=i.left).map(({other:m,at:b})=>o[b].right+8<=(m.right+i.left)/2?o[b].right+8:(m.right+i.left+8)/2),d=l.filter(({other:m})=>m.left>=i.right).map(({other:m,at:b})=>o[b].left-8>=(i.right+m.left)/2?o[b].left-8:(i.right+m.left-8)/2),s=Math.max(t.left,...c),u=Math.min(t.right,...d),f=i.right-i.left,g=o[a].right-o[a].left,x=Math.max(f,Math.min(g,u-s)),y=(i.left+i.right)/2,h=f>=x?i.left:Math.max(s,Math.min(y-x/2,u-x));return{key:i.key,text:i.text,left:h,width:x,top:i.top}})}function Fn(e){return e<640?{left:8,right:56}:{left:8,right:Math.round(Math.min(128,e*.107))}}var Ae=ee(be(),1);function bi({frame:e,width:t,height:n,scheme:r,overview:o,selection:i,emphasis:a,stageRef:l,store:c,graphNodes:d,onPickEdge:s,liveOf:u,holding:f=!1}){let[g,x]=(0,We.useState)(0),[y,h]=(0,We.useState)(null),m=e.t<1;(0,We.useLayoutEffect)(()=>{m||f||h(Dn(e.nodes,e.connectors,l.current,o,r))},[e,m,f,i,o,d,r,g,l]);let b=e.nodes.map(O=>O.id).join(`
8
- `);if((0,We.useLayoutEffect)(()=>{let O=l.current;if(O===null||typeof window>"u")return;let k=0,B=()=>{k===0&&(k=requestAnimationFrame(()=>{k=0,x(w=>w+1)}))};O.addEventListener("scroll",B,{capture:!0,passive:!0}),window.addEventListener("resize",B,{passive:!0});let S=typeof ResizeObserver>"u"?null:new ResizeObserver(B);if(S){S.observe(O);for(let w of O.querySelectorAll("[data-graview-view]"))S.observe(w)}return()=>{k!==0&&cancelAnimationFrame(k),O.removeEventListener("scroll",B,{capture:!0}),window.removeEventListener("resize",B),S?.disconnect()}},[l,b]),m)return null;let R=(f?null:y)??Dn(e.nodes,e.connectors,null,o,r),P=new Set;for(let O of R){if(O.edges.length!==1)continue;let k=O.edges[0];P.add(`${O.connector.kind}|${k.from}|${k.to}`)}return(0,Ae.jsxs)(Ae.Fragment,{children:[(0,Ae.jsx)(xi,{strands:R,result:e,scheme:r,overview:o,selection:i,emphasis:a,stageRef:l,onPickEdge:s,liveOf:u}),(0,Ae.jsx)(Wa,{stageRef:l,nodes:e.nodes,scheme:r,selection:i,store:c,graphNodes:d,overview:o,width:t,height:n,onPickEdge:s,alreadyDrawn:P,tick:g})]})}function Wa({stageRef:e,nodes:t,scheme:n,selection:r,store:o,graphNodes:i,overview:a,width:l,height:c,onPickEdge:d,alreadyDrawn:s,tick:u}){let f=en(),g=(0,We.useMemo)(()=>{if(r.length===0||r.length>4)return[];let m=new Set(r),b=[];for(let P of r){let O=Rt(P);O&&b.push({kind:O.kind,self:O.from,other:O.to})}for(let P of o.graph.allEdges()){let O=m.has(P.from)?P.from:m.has(P.to)?P.to:null;if(!O)continue;let k=O===P.from?P.to:P.from;m.has(k)||b.push({kind:P.kind,self:O,other:k})}if(b.length<=14)return b;let R=new Set(t.map(P=>P.id));return b.map((P,O)=>({tie:P,index:O,real:R.has(P.other)?0:1})).sort((P,O)=>P.real-O.real||P.index-O.index).slice(0,14).map(({tie:P})=>P)},[o,r,i,t]),x=()=>{if(g.length===0||typeof document>"u")return[];if(!e.current?.getBoundingClientRect())return[];let b=[...e.current?.querySelectorAll("[data-graview-joins]")??[]].find(w=>{if(w.closest("[data-graview-offstage]"))return!1;try{let M=JSON.parse(w.getAttribute("data-graview-joins")??"[]");return M.length===r.length&&M.every(A=>r.includes(A))}catch{return!1}});if(b){let w=Ln(b,e.current);if(!w)return[];let M=[];for(let A of r){let j=t.find(D=>D.id===A);if(!j)continue;let C=Qe(e.current,j.id,a)??qe(j,n),$=C?$n(w,C):null;if(!C||!$)continue;let F=[...o.graph.allEdges()].find(D=>D.from===A&&r.includes(D.to)||D.to===A&&r.includes(D.from));M.push({key:`join:${A}`,kind:F?.kind??"",endX:$.to.x,endY:$.to.y,...$,fromBox:w,toBox:C,proxy:!1,edgeId:F?Kt(F.kind,F.from,F.to):null})}return M}let R=(w,M)=>{let A=e.current?.querySelectorAll(`[data-graview-pick="${CSS.escape(w)}"], [data-graview-slot="${CSS.escape(w)}"]`),j=[];for(let C of A??[]){if(C.closest("[data-graview-offstage]")||M(C)||C.closest("[data-graview-mark]"))continue;let $=Ln(C,e.current);$&&j.push($)}return j.sort((C,$)=>C.width*C.height-$.width*$.height)},P=w=>t.find(M=>M.id===w)??t.find(M=>M.aggregate?.memberIds.includes(w)),O=w=>`[data-graview-pick="${CSS.escape(w)}"], [data-graview-slot="${CSS.escape(w)}"]`,k=(w,M)=>{let A=e.current;if(!A)return!1;for(let j of A.querySelectorAll("[data-graview-view]")){let C=j.querySelector(O(w));if(C===null||C.closest("[data-graview-offstage]"))continue;let $=j.querySelector(O(M));if($!==null&&!$.closest("[data-graview-offstage]"))return!0}return!1},B=new Set,S=[];for(let w of g){if(k(w.self,w.other))continue;let M=P(w.self),A=M?e.current?.querySelector(`[data-graview-view="${CSS.escape(M.id)}"]`):null,j=R(w.self,()=>!1);if(!(j.length>0)&&M){let v=Qe(e.current,M.id,!1)??qe(M,n);v&&j.push(v)}let $=t.find(v=>v.id===w.other),F=[],D=!1;if($){let v=Qe(e.current,$.id,a)??qe($,n);v&&F.push(v)}else if(F.push(...R(w.other,v=>A?A.contains(v):!1)),F.length===0){let v=P(w.other);if(v&&(!M||v.id!==M.id)){let N=Qe(e.current,v.id,a)??qe(v,n);N&&(F.push(N),D=!0)}}if(j.length===0||F.length===0||D&&a)continue;let K=j[0],z=F[0],V=1/0;for(let v of j)for(let N of F){let T=Math.hypot(v.x+v.width/2-(N.x+N.width/2),v.y+v.height/2-(N.y+N.height/2));T<V&&(V=T,K=v,z=N)}if(s?.has(`${w.kind}|${w.self}|${w.other}`)||s?.has(`${w.kind}|${w.other}|${w.self}`))continue;let ge=`${w.kind}:${Math.round(K.x)},${Math.round(K.y)}:${Math.round(z.x)},${Math.round(z.y)}`;if(B.has(ge))continue;B.add(ge);let me=$n(K,z);if(!me)continue;let{from:X,to:oe,control:L}=me,Y=[...o.graph.allEdges()].find(v=>v.kind===w.kind&&(v.from===w.self&&v.to===w.other||v.from===w.other&&v.to===w.self));S.push({key:`${w.kind}:${w.self}:${w.other}`,kind:w.kind,endX:oe.x,endY:oe.y,from:X,to:oe,control:L,fromBox:K,toBox:z,proxy:D,edgeId:Y?Kt(Y.kind,Y.from,Y.to):null})}return S},[y,h]=(0,We.useState)([]);return(0,We.useLayoutEffect)(()=>{h(x())},[g,t,a,n,l,c,s,u,e]),y.length===0?null:(0,Ae.jsx)("svg",{"aria-hidden":y.some(m=>m.edgeId)?void 0:!0,"data-graview-ties":y.length,"data-graview-world":"",width:l,height:c,style:{position:"absolute",left:0,top:0,pointerEvents:"none",zIndex:Te.lines},children:y.map(m=>{let{connector:b,style:R}=bn(f,m.kind);if(!b.visible)return null;let P={p0:m.from,c:m.control,p1:m.to},O=b.route==="orthogonal"?Ft([nn(m.from,m.to)]):(({p0:B,c:S,p1:w})=>`M ${B.x} ${B.y} Q ${S.x} ${S.y} ${w.x} ${w.y}`)(Nn(b.route,P)),k=null;if(m.edgeId&&d&&!m.proxy){let B=(w,M)=>M.x>=w.x&&M.x<=w.x+w.width&&M.y>=w.y&&M.y<=w.y+w.height,S=[];for(let w=0;w<=40;w++){let M=fi(b.route,P,w/40);B(m.fromBox,M)||B(m.toBox,M)||S.push(M)}S.length>=2&&(k=(0,Ae.jsx)("path",{"data-graview-edge":m.edgeId,className:"graview-edge-hit",d:`M ${S[0].x} ${S[0].y} ${S.slice(1).map(w=>`L ${w.x} ${w.y}`).join(" ")}`,fill:"none",pathLength:1,strokeDasharray:"0.86",strokeDashoffset:-.07,stroke:"transparent",strokeWidth:14,style:{pointerEvents:"stroke",cursor:"pointer"},onClick:w=>{w.stopPropagation(),d(m.edgeId,{x:w.clientX,y:w.clientY})},onContextMenu:w=>{w.preventDefault(),w.stopPropagation(),d(m.edgeId,{x:w.clientX,y:w.clientY})}}))}return(0,Ae.jsxs)("g",{opacity:m.proxy?.32:.72,children:[(0,Ae.jsx)("path",{"data-graview-tie":m.kind,"data-graview-tie-proxy":m.proxy||void 0,d:O,fill:"none",stroke:Xt(R),strokeWidth:m.proxy?1.1:1.6,strokeDasharray:xn[R.pattern],strokeLinecap:"round"}),(0,Ae.jsx)("circle",{cx:m.endX,cy:m.endY,r:m.proxy?2:2.6,fill:Xt(R)}),k]},m.key)})})}function vi({nodes:e,scheme:t,width:n,stageRef:r,moving:o=!1,holding:i=!1}){let a=en(),[l,c]=(0,We.useState)([]);(0,We.useLayoutEffect)(()=>{o||i||c(d())},[e,o,i,t,n,r]);function d(){let s=[];for(let f of e){if(!f.via||Math.round(f.plane)!==1)continue;let g=Qe(r.current,f.id,!1),{scale:x}=Ue(1,t);s.push({key:`${f.via.edgeKind}|${f.via.direction}`,text:f.via.description??`${f.via.direction==="in"?"\u2190":"\u2192"} ${_t(f.via.edgeKind).toLowerCase()}`,left:g?.x??f.x,right:g?g.x+g.width:f.x+f.width*x,top:g?.y??f.y})}let u=Fn(n);return wi(s,{left:u.left,right:n-u.right})}return l.length===0||!a.captions.visible||o?null:(0,Ae.jsx)("div",{"aria-hidden":"true",style:{position:"absolute",inset:0,pointerEvents:"none",zIndex:Te.lines},children:l.map(s=>{let{left:u,width:f}=s;return(0,Ae.jsx)("div",{"data-graview-relation":s.key,title:s.text,style:{position:"absolute",left:u,width:f,textAlign:"center",top:Math.max(0,s.top-19),fontSize:"0.75rem",letterSpacing:"0.09em",textTransform:"uppercase",color:"var(--graview-ink-faint)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:(0,Ae.jsx)("span",{style:{background:"var(--graview-ground)",padding:"1px 7px",borderRadius:4},children:s.text})},s.key)})})}var rn=ee(De(),1);var Ya=new Set;function Si(e,t,n,r,o,i,a,l){let{store:c,views:d,hiddenKinds:s}=le(),u=Lt(),f=oo(),g=(0,rn.useMemo)(()=>{let h={};for(let m of f){if(m.subjectId===void 0)continue;let b=h[m.subjectId]??=[];for(let R of m.nodeIds)R!==m.subjectId&&!b.includes(R)&&b.push(R)}return h},[f]),x=(0,rn.useMemo)(()=>({flagged:new Set(f.flatMap(h=>h.nodeIds)),touched:Jo(c.log.all())}),[f,c,l]),y=(0,rn.useMemo)(()=>({hits:u?mn(u):Ya,...x}),[u,x]);return(0,rn.useMemo)(()=>({...e,cityZoom:i,...a!==void 0?{screenHeight:a}:{},...s.size>0?{hiddenKinds:[...s].sort()}:{},...Object.keys(g).length>0?{judged:g}:{},relevance:y,inset:Fn(t?.width??1200),unit:n,plainGroups:c.schema.kinds.filter(h=>lr(d.lookup(h,{cardinality:"many",fidelity:"full"}))),cityOrder:tr(nr({name:"scene",schema:c.schema,mutations:c.allMutations().filter(h=>!h.derived)}).order.map(h=>h.kind),d.arrangement?.()?.order),screens:d.places().reduce((h,m)=>((h[m.kind]??=[]).push({as:m.as,title:m.title,...m.across?{across:m.across}:{}}),h),{}),nameWidth:r,...t?{width:t.width,height:o?Math.max(0,t.height-64):t.height}:{}}),[e,t,n,c,d,s,g,y,i,a,r,o])}var ut=ee(De(),1);var ki=ee(De(),1);function Hn(e){let t=e?.closest?.("[data-graview-pick]")?.getAttribute("data-graview-joins");if(!t)return null;try{let n=JSON.parse(t);return Array.isArray(n)&&n.length>0&&n.every(r=>typeof r=="string")?n:null}catch{return null}}function Mi(e){(0,ki.useEffect)(()=>{let t=e.current;if(!t)return;let n=()=>{for(let i of t.querySelectorAll("[data-graview-pick]"))i.getAttribute("tabindex")===null&&i.setAttribute("tabindex","0"),i.getAttribute("role")===null&&Ga(i)&&i.setAttribute("role","button")};if(n(),typeof MutationObserver>"u")return;let r=0,o=new MutationObserver(()=>{r===0&&(r=typeof requestAnimationFrame>"u"?0:requestAnimationFrame(()=>{r=0,n()}),r===0&&n())});return o.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-graview-pick"]}),()=>{o.disconnect(),r!==0&&cancelAnimationFrame(r)}},[e])}var za=new Set(["div","span","p","figure","img","td","output","b","i","em","strong","small","canvas","g","polygon","circle","rect","path","ellipse","polyline","line","use"]);function Ga(e){return za.has(e.localName.toLowerCase())}var Qt=ee(be(),1);function Ri({node:e,useDom:t,touched:n,frontY:r,centerY:o,screen:i,onDrawnHeight:a,crowded:l,activity:c,scheme:d,canvasWidth:s,canvasHeight:u,selected:f,onSelect:g,onPick:x,onTravel:y,onMenu:h,selection:m,onJackIn:b,onDragStart:R,onDragMove:P,onDragEnd:O,swallowClick:k,children:B}){let{brand:S,store:w,actsDoor:M}=le(),A=e.beyond?`${e.beyond.length} more district${e.beyond.length===1?"":"s"}`:e.aggregate?.opens?.in==="place"?`${e.aggregate.label}, ${fn(w.schema,e.aggregate.kind,e.aggregate.memberIds.length)}`:e.aggregate?e.aggregate.label:(()=>{let v=w.graph.getNode(e.id);return v?Xo(w.schema.tryDefinition(e.kind),v):e.id})(),[j,C]=(0,ut.useState)(null),$=Math.round(e.plane)===0&&!e.aggregate;(0,ut.useLayoutEffect)(()=>{if(!$)return;let v=me.current;if(!v)return;let N=()=>{let G=[...v.children].find(J=>J.dataset.graviewKindtag===void 0);if(!G)return;let H=v.getBoundingClientRect(),re=G.getBoundingClientRect(),ie=v.offsetWidth>0?H.width/v.offsetWidth:1,de={top:Math.round((re.top-H.top)/ie)-9,right:Math.round((H.right-re.right)/ie)+14};C(J=>J&&J.top===de.top&&J.right===de.right?J:de)};if(typeof ResizeObserver>"u"){N();return}let T=new ResizeObserver(N);T.observe(v);for(let G of v.children)T.observe(G);return()=>T.disconnect()},[$,e.id]);let F=e.plane-(1-(e.depth??1))*.55,D=Math.max(0,Math.min(2,Math.floor(F))),K=Math.max(0,Math.min(2,Math.ceil(F))),z=D===K?Ue(D,d):yn(Ue(D,d),Ue(K,d),F-D),V=ur(z,e.x,e.y,s,u),ge=Ue(Math.max(0,Math.min(2,Math.round(F))),d).blur,me=(0,ut.useRef)(null);Mi(me);let X=e.natural,oe=X?Math.min(e.width/X.width,e.height/X.height):1,L=(0,ut.useRef)(null);(0,ut.useEffect)(()=>{if(!i||!a)return;let v=L.current;if(!v||typeof ResizeObserver>"u")return;let N=()=>{let ie=0,de=0;for(let J of v.children)if(!(!(J instanceof HTMLElement)||J.classList.contains("graview-screen-fullscreen"))){ie=Math.max(ie,J.offsetTop+J.offsetHeight);for(let Ce of[J,...J.querySelectorAll("*")]){let ke=getComputedStyle(Ce).overflowY;(ke==="auto"||ke==="scroll")&&(de+=Ce.scrollHeight-Ce.clientHeight)}}a(ie+de)},T=0,G=()=>{T||(T=requestAnimationFrame(()=>{T=0,N()}))};N();let H=new ResizeObserver(G);H.observe(v);for(let ie of v.children)H.observe(ie);let re=new MutationObserver(G);return re.observe(v,{childList:!0,subtree:!0,characterData:!0,attributes:!0}),()=>{T&&cancelAnimationFrame(T),H.disconnect(),re.disconnect(),a(void 0)}},[i,a,e.id]);let Y=t?{transform:ci(V),transformOrigin:"0 0",filter:ge>0?`blur(${ge}px)`:void 0,opacity:(1-z.falloff*.55)*(e.opacity??1),"--graview-lift-low":li(z.shadow,d),...r!==void 0?{"--graview-front-y":`${r.toFixed(1)}px`}:{},...o!==void 0?{"--graview-center-y":`${o.toFixed(1)}px`}:{}}:{};return(0,Qt.jsxs)("div",{ref:me,"data-graview-view":e.id,"data-graview-plane":Math.round(e.plane),"data-graview-selected":f||void 0,"data-graview-touched":n||void 0,"data-graview-plot":r!==void 0?"":void 0,"data-graview-screen":i?"":void 0,"data-graview-record-focus":Math.round(e.plane)===0&&!e.aggregate&&!X&&!i?"":void 0,"data-graview-nested":e.nestedUnder??void 0,"data-graview-crowded":l||void 0,"data-graview-pinned":e.pinned||void 0,"data-graview-activity":c?c.manner:void 0,"data-graview-wrote":c?.wrote||void 0,"data-graview-read":c&&!c.wrote?!0:void 0,"data-graview-broke":c?.broke||void 0,title:c?`${ti[c.manner]} ${c.wrote?"changed this":"read this"}: ${c.intent}`:e.aggregate&&Math.round(e.plane)!==0?`Open ${e.aggregate.label}`:void 0,role:"group","aria-label":A,"aria-keyshortcuts":M&&!e.beyond?M.key:void 0,tabIndex:0,onPointerDown:R,onPointerMove:P,onPointerUp:O,onPointerCancel:O,onClick:v=>{if(k.current)return;let N=v.target?.closest("input, textarea, select, button, a[href], [contenteditable='true']");if(N&&!N.hasAttribute("data-graview-pick"))return;let T=v.metaKey||v.shiftKey,G=Ct(v.target);if(G&&G!==e.id){v.stopPropagation(),x(G,T,Hn(v.target)??void 0);return}g(T)},onKeyDown:v=>{if(M&&!e.beyond&&v.key.toLowerCase()===M.key.toLowerCase()&&!v.metaKey&&!v.ctrlKey&&!v.altKey&&!v.target?.closest("input, textarea, select, [contenteditable='true']")){v.preventDefault(),v.stopPropagation();let re=Ct(v.target)??e.id;m.includes(re)||x(re,!1),M.open(v.target instanceof HTMLElement?v.target:v.currentTarget);return}if(v.key!=="Enter"&&v.key!==" "||v.target?.closest("input, textarea, select, button, [contenteditable='true']"))return;let T=Ct(v.target);if(v.preventDefault(),v.stopPropagation(),!T||T===e.id){m.length===1&&m[0]===e.id&&!v.metaKey&&!v.shiftKey?b():g(v.metaKey||v.shiftKey);return}let G=Hn(v.target);(G?m.length===G.length&&G.every(re=>m.includes(re)):m.length===1&&m[0]===T)&&!v.metaKey&&!v.shiftKey?y(T):x(T,v.metaKey||v.shiftKey,G??void 0)},onContextMenu:v=>{let N=Ct(v.target);v.preventDefault(),v.stopPropagation();let T=N&&N!==e.id?N:e.id;x(T,!1,(T===N?Hn(v.target):null)??void 0),h({x:v.clientX,y:v.clientY,on:T})},onDoubleClick:v=>{let N=Ct(v.target);if(N&&N!==e.id){v.stopPropagation(),y(N);return}b()},style:{position:"absolute",...t?{}:{pointerEvents:"none"},zIndex:e.opened?Te.opened:Te.card-Math.round(e.plane),left:t?0:Math.round(e.x),top:t?0:Math.round(e.y),width:Math.round(e.width),height:Math.round(e.height),boxSizing:"border-box",display:"flex",flexDirection:"column",justifyContent:"center",...Y},children:[X?(0,Qt.jsx)("div",{ref:L,"data-graview-natural":`${Math.round(X.width)}x${Math.round(X.height)}`,style:{position:"absolute",left:"50%",top:"50%",width:X.width,height:X.height,transform:`translate(-50%, -50%) scale(${oe})`,transformOrigin:"50% 50%",display:"flex",flexDirection:"column"},children:B}):B,Math.round(e.plane)===0&&!e.aggregate?(0,Qt.jsxs)("span",{"data-graview-kindtag":"",className:"graview-kind-tag","aria-hidden":"true",style:{...j??{},"--graview-hue":Math.round(Mt(e.kind,S?.accents))},children:[(0,Qt.jsx)("span",{style:{width:9,height:6,clipPath:"polygon(50% 0, 100% 50%, 50% 100%, 0 50%)",flex:"0 0 auto",background:`hsl(${Math.round(Mt(e.kind,S?.accents))} 55% var(--graview-tint-lightness) / 0.9)`}}),Qo(w.schema.tryDefinition(e.kind),e.kind)]}):null]})}var ue=ee(be(),1);var Ua=e=>e?{activity:e}:{},Xa=e=>`${Math.round(e.x)} ${Math.round(e.y)}`,jn=e=>e.stopPropagation(),Ei=.6,Ai=3,qa=80,Pi=e=>Math.round(e.plane)===1&&(e.compact===!0||e.width<175||e.height<qa);function Qa(e){let[t,n]=(0,q.useState)(1),r=(0,q.useRef)(1);return(0,q.useEffect)(()=>{e||(r.current=1,n(1))},[e]),[t,r,n]}function Za(){let[e,t]=(0,q.useState)(void 0),n=(0,q.useCallback)(r=>t(r&&Math.round(r)),[]);return[e,n]}function Ja(e){let[t,n]=(0,q.useState)({x:0,y:0}),r=(0,q.useMemo)(()=>({x:(e.pan?.x??0)+t.x,y:(e.pan?.y??0)+t.y}),[e.pan,t]),o=(0,q.useMemo)(()=>t.x===0&&t.y===0?e:yt(e,r),[e,t,r]),i=(0,q.useRef)(t);i.current=t;let a=(0,q.useCallback)((l,c)=>{let d=i.current,s=(u,f,g)=>Math.max(Math.min(-u,f),Math.min(Math.max(u,f),g+f))-f;return{x:s(l.x,d.x,c.x),y:s(l.y,d.y,c.y)}},[]);return[r,o,a,i,n]}function es(e,t,n,r,o,i){let a=n!==null&&!t.overview,l=a?null:n,c=(0,q.useMemo)(()=>{let f=t.pan?{...t,pan:void 0}:t;return l?zt(f,l.id,{x:l.x,y:l.y}):f},[t,l]),d=(0,q.useMemo)(()=>Pn(e.graph,e.schema,c,r),[e,c,r,o]),s=(0,q.useMemo)(()=>n&&a?Mo(d,n.id,{x:n.x,y:n.y})??Pn(e.graph,e.schema,zt(c,n.id,{x:n.x,y:n.y}),r):d,[d,n,a,e,c,r]);return[(0,q.useMemo)(()=>Ro(s,i??{x:0,y:0}),[s,i]),a]}function ts(){let[e,t]=(0,q.useState)(!1),[n,r]=(0,q.useState)(!1),o=(0,q.useRef)(null),i=(0,q.useRef)(()=>!1),a=(0,q.useCallback)(()=>{r(!0),o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{o.current=null,!i.current()&&r(!1)},160)},[]);return[e,n,t,a,i,()=>{t(!1),r(!1)}]}function ns(e){let t=(0,q.useRef)(!1),n=e!==null&&!t.current;return(0,q.useEffect)(()=>{e!==null&&(t.current=!0)},[e]),n}function os({registerScene:e,scheme:t,views:n},r,o){let i=(0,q.useRef)(r);i.current=r,(0,q.useEffect)(()=>(e({whereIs:a=>In(i.current,o.current,t,n,a)}),()=>e(null)),[e,t,n])}function rs(e,t){(0,q.useEffect)(()=>{let n;return e.onActive(r=>{let o=t.current;if(!o)return;let i=l=>{let c=o.getBoundingClientRect();e.set({x:l.clientX-c.left,y:l.clientY-c.top})},a=()=>e.set(null);r?(o.addEventListener("pointermove",i),o.addEventListener("pointerleave",a),n=()=>{o.removeEventListener("pointermove",i),o.removeEventListener("pointerleave",a)}):(n?.(),n=void 0)})},[e])}function is(e,t,n,r,o){(0,q.useEffect)(()=>{if(e==="dom")return;let i=n.current;if(!i||!t)return;let a=new Set;for(let c of r.nodes)(o.has(c.id)||c.aggregate?.memberIds.some(d=>o.has(d)))&&a.add(c.id);let l=t({canvas:i,layout:r,dirty:a,hostOf:c=>i.querySelector(`[data-graview-view="${CSS.escape(c)}"]`)});return()=>{l?.()}},[e,t,r,o])}function as(){let e=fr();return t=>{let n=t?e.get(t.id):void 0,r=t?.aggregate?.memberIds??[];if(!n&&r.length===0)return;let o=n,i=n?.wrote??!1,a=n?.read??!1,l=n?.broke??!1;for(let c of r){let d=e.get(c);d&&(i||=d.wrote,a||=d.read,l||=d.broke,(!o||d.at>o.at||d.at===o.at&&d.wrote&&!o.wrote)&&(o=d))}return o?{...o,wrote:i,read:a,broke:l}:void 0}}var Oi=(e,t)=>e.includes(t)?e.filter(n=>n!==t):[...e,t];function ss(){let{views:e,view:t,setView:n,setSelection:r}=le(),o=Lt(),i=a=>{if($e(a.id)===null&&!a.aggregate)return!1;let l=e.resolve(a.kind,{cardinality:"many",fidelity:"full"})?.view;return l!==void 0&&l.generic!==!0};return a=>({onSelect:l=>{if(Gt(a.id)){r(d=>l?Oi(d,a.id):[a.id]);return}let c=a.aggregate?Jt(a.id):[];if(t.overview){r(d=>l?[...new Set([...d,a.id])]:[a.id]);return}if(c.length===1&&!l&&Math.round(a.plane)!==0){let d=c[0];n(s=>Xn(s,s.relation===d?null:d));return}r(d=>Io(a,d,l))},onPick:(l,c,d)=>r(s=>d?c?[...new Set([...s,...d])]:[...d]:c?Oi(s,l):[l]),onTravel:l=>{n(c=>({...Pt(c,l),relation:null})),r([l])},onJackIn:()=>{let l=a.aggregate?.opens;if(l){l.in==="place"?n(s=>Qn(s,a.id)):n(s=>Object.entries(l.within).reduce((u,[f,g])=>qn(u,f,g),Pt(Yt(s,!1),l.focus))),r([]);return}let c=$e(a.id),d=c!==null&&(o?.byKind[c]??0)>0;n(s=>Zn(s,a.id,{ownPicture:i(a),...d&&s.q?{carry:s.q}:{}})),r(a.aggregate?[]:[a.id])}})}function ds({node:e}){let{views:t,view:n,setView:r}=le();return(0,ue.jsxs)("div",{className:"graview-screen-grip","data-graview-grip":e.id,"data-testid":"screen-grip",title:"Move this picture \u2014 it stays by its own village",children:[(0,ue.jsx)("span",{className:"graview-screen-title","aria-hidden":"true",children:t.places().find(o=>o.as===n.within?.view&&o.kind===e.screenOf)?.title??""}),(0,ue.jsx)("button",{type:"button",className:"graview-screen-fullscreen","data-testid":"screen-fullscreen",title:"Open this picture on its own \u2014 leave the graview with it",onClick:o=>{o.stopPropagation(),r(i=>Yt(i,!1))},onPointerDown:jn,onDoubleClick:jn,children:"Open \u2197"})]})}function ls({zoom:e,zoomBy:t}){let n=(r,o,i,a)=>(0,ue.jsx)("button",{type:"button",className:"graview-zoom-button","data-testid":`zoom-${r}`,"aria-label":`Zoom ${r}`,title:`Zoom ${r} \u2014 or pinch, or ctrl+wheel`,disabled:a,onClick:()=>t(i),children:o});return(0,ue.jsxs)("div",{className:"graview-zoom","data-graview-foot":"",role:"group","aria-label":"Zoom",onPointerDown:jn,onClick:jn,children:[n("out","\u2212",1/1.25,e<=Ei+1e-6),(0,ue.jsxs)("span",{className:"graview-zoom-level","data-testid":"zoom-level","aria-live":"polite",children:[Math.round(e*100),"%"]}),n("in","+",1.25,e>=Ai-1e-6)]})}function cs({options:e,renderer:t="auto",attachRenderer:n,className:r,style:o,animate:i=!0,children:a}){let l=le(),{store:c,scheme:d,views:s,view:u,setView:f,selection:g,setSelection:x,setMenuAt:y,emphasis:h,brand:m,noteMoved:b,robots:R,seatTalk:P,motion:O}=l,k=to(P),B=(0,q.useRef)(null),S=(0,q.useRef)(null),w=di(S),M=si(),A=hr(S,M,m),j=(0,q.useMemo)(()=>E=>Ut(E,132,A),[A]),{zoomAbout:C,panBy:$}=ei({stage:S,view:u,setView:f}),F=It(),D=u.overview&&u.within?.view!==void 0?1.5:1,[K,z,V]=Qa(u.overview),[ge,me]=Za(),X=Si(e,w,M,A,k,D*K,ge,F),[oe,L,Y,v,N]=Ja(u),T=(0,q.useMemo)(()=>new Set(Object.keys(u.pins)),[u.pins]),G=Qr(),[H,re]=es(c,u,G.held,X,F,L.pan),[ie,de,J,Ce,ke,et]=ts(),Ke=ns(w),U=_r(H,{enabled:i&&!ie&&!de&&w!==null&&!Ke});(0,q.useEffect)(()=>O.set(ie||de||U.t<1),[O,ie,de,U]);let Le=Vr(),tt=Wr(),nt=H.nodes.find(E=>E.screenOf!==void 0)?.id??null,He=qr({view:u,result:H,frame:U,panned:oe,closer:D,screenId:nt,setCamera:N});os(l,U,S),rs(l.pointer,S),is(t,n,B,U,Le);let Je=t==="dom"||t==="auto"&&!n,ft=as(),Ne=Zr({stage:S,pan:u.pan,setView:f,settled:et});ke.current=Ne.settle;let{onGroundDown:ht,onCardDown:pt,onDragMove:Ye,onDragUp:ot,swallow:Ie}=Jr({view:u,panned:oe,limit:()=>wt(H),panWithin:Y,moveByTransform:Je,setView:f,setDragging:J,noteMoved:b,shift:Ne,district:G});C.current=(E,ae,fe)=>{if(!u.overview)return;ke.current();let Re=z.current,it=Math.max(Ei,Math.min(Ai,Re*E));if(Math.abs(it-Re)<1e-4)return;z.current=it,Ce(),V(it);let at=S.current?.getBoundingClientRect(),ze={x:H.width/2,y:H.height/2},je=at&&ae!==void 0&&fe!==void 0?{x:ae-at.left,y:fe-at.top}:ze,an=it/Re;f(Ht=>yt(Ht,ko(Ht.pan??{x:0,y:0},v.current,je,ze,an))),b()};let St=(E,ae,fe=wt(H))=>f(Re=>yt(Re,Y(fe,{x:(Re.pan?.x??0)+E,y:(Re.pan?.y??0)+ae})));$.current=(E,ae)=>{Ce();let fe=wt(H),Re=u.pan??{x:0,y:0};if(Je){let it=Ne.offset();Ne.shiftTo(Y(fe,{x:Re.x+it.x+E,y:Re.y+it.y+ae}),Re)}else St(E,ae,fe);b()};let ne=ss(),xe=E=>ft(U.nodes.find(ae=>ae.id===E)),rt=(E,ae,fe,Re)=>E.originY+oe.y+ve(fe.col+fe.side/2,fe.row+fe.side/Re,E.cell).y-ae.y,Me={width:H.width,height:H.height},gt={position:"relative",zIndex:Te.stage,...Me},mt=E=>In(U,S.current,d,s,E),kt=U.nodes.map(E=>(0,ue.jsxs)(Ri,{node:E,crowded:Pi(E),useDom:Je,...E.plot&&U.city&&Math.round(E.plane)===2?{frontY:rt(U.city,E,E.plot,1),centerY:rt(U.city,E,E.plot,2)}:{},...E.screenOf!==void 0?{screen:!0,...E.id===nt?{onDrawnHeight:me}:{}}:{},touched:Le.has(E.id),...Ua(ft(E)),scheme:d,canvasWidth:H.width,canvasHeight:H.height,selected:g.includes(E.id),...ne(E),onMenu:y,selection:g,onDragStart:ae=>pt(E,ae),onDragMove:Ye,onDragEnd:ot,swallowClick:Ie,children:[E.screenOf!==void 0?(0,ue.jsx)(ds,{node:E}):null,E.beyond?(0,ue.jsx)(oi,{kinds:E.beyond}):E.aggregate?.opens?(0,ue.jsx)(ai,{node:E}):(0,ue.jsx)(ri,{node:E,mode:"scene",selected:g.includes(E.id),...Pi(E)?{fidelity:"glyph"}:{}})]},E.id));return(0,ue.jsx)(pr.Provider,{value:j,children:(0,ue.jsxs)("div",{ref:S,className:`graview-ground${r?` ${r}`:""}`,"data-graview-altitude":u.overview?"":void 0,"data-graview-reach":U.city?Xa(wt(H)):void 0,"data-graview-settled":U.t>=1&&!He.gliding()?"":void 0,"data-graview-box":w?`${w.width}x${w.height}`:void 0,onPointerDown:ht,onPointerMove:Ye,onPointerUp:ot,onPointerCancel:ot,onClick:E=>{Ie.current||E.target.closest("[data-graview-view], button, aside, section[aria-label], [data-graview-offstage], a, input, select")||(x([]),y(null))},style:{position:"relative",width:"100%",height:"100%",cursor:ie?"grabbing":"grab",touchAction:"none","--graview-altitude":u.overview?1:0,...U.city?{"--graview-lattice-cell":`${U.city.cell.toFixed(2)}px`,"--graview-lattice-x":`${(U.city.originX+U.city.pan.x).toFixed(1)}px`,"--graview-lattice-y":`${(U.city.originY+U.city.pan.y).toFixed(1)}px`}:{},...ie?{userSelect:"none"}:{},overflow:"hidden",...o},children:[(0,ue.jsx)(Yr,{frame:U,...Me,pan:U.city?U.city.pan:oe,brand:m,pinned:T,swallowed:Ie,onFocus:E=>{let ae=$e(E);ae!==null&&f(fe=>Pt(fe,Oe(ae)))}}),Je?(0,ue.jsx)("div",{"data-graview-stage":"dom","data-graview-world":"",style:{...gt,overflow:"hidden"},children:kt}):(0,ue.jsx)("canvas",{ref:B,"data-graview-stage":"gpu",layoutsubtree:"",...Me,style:{display:"block",...gt},children:kt}),u.overview&&!ie?(0,ue.jsx)(Xr,{result:H,schema:c.schema,onGo:E=>{St(E.x,E.y),b()}}):null,u.overview?(0,ue.jsx)(ls,{zoom:K,zoomBy:E=>C.current(E)}):null,(0,ue.jsx)(bi,{frame:U,holding:re,...Me,scheme:d,overview:!!u.overview,selection:g,emphasis:h,stageRef:S,store:c,graphNodes:F,onPickEdge:(E,ae)=>{Ie.current||(x([E]),y(ae?{...ae,on:E}:null))},liveOf:E=>{let ae=xe(E.from),fe=xe(E.to);return ae?.wrote&&fe?.wrote?ae.at>fe.at?ae:fe:void 0}}),(0,ue.jsx)(zr,{width:H.width,whereIs:mt}),(0,ue.jsx)(Kr,{marks:tt.marks,questions:[...R.values()].filter(E=>E.mode==="asking"&&E.at!==null&&E.say).map(E=>({id:E.at,who:E.who,asks:E.say})),whereIs:mt,stageRef:S,...Me}),(0,ue.jsx)(vi,{nodes:U.nodes,moving:U.t<1,holding:re,scheme:d,width:H.width,stageRef:S}),a]})})}var Ze=ee(De(),1);function us(){return Ni(),null}var Ii=()=>window.location.pathname.endsWith(er),Ci=()=>(Ii()?rr:Un)(window.location.hash),fs=e=>(Ii()?ir:Gn)(e);function Ni(){let{view:e,setView:t,views:n,principal:r}=le(),o=JSON.stringify(r),i=(0,Ze.useCallback)(s=>{let u=s.within?.view;if(u===void 0||s.focusId)return s;let f=n.places().find(g=>g.as===u);return f?{...s,focusId:Oe(f.kind)}:s},[n]),a=(0,Ze.useRef)(!1);(0,Ze.useEffect)(()=>{if(typeof window>"u")return;let s=i(Ci());!hn(s,zn)&&!hn(s,e)&&(a.current=!0,t(s))},[]),(0,Ze.useEffect)(()=>{if(typeof window>"u")return;let s=()=>t(i(Ci()));return window.addEventListener("popstate",s),window.addEventListener("hashchange",s),()=>{window.removeEventListener("popstate",s),window.removeEventListener("hashchange",s)}},[t,i]);let l=(0,Ze.useRef)(!1),c=(0,Ze.useRef)(null),d=(0,Ze.useRef)(o);(0,Ze.useEffect)(()=>{if(typeof window>"u")return;if(a.current){a.current=!1;return}let s=d.current!==o;d.current=o;let u=fs(e),f=u||`${window.location.pathname}${window.location.search}`;if((window.location.hash||(window.location.href.includes("#")?"#":""))===u){l.current=!0,c.current=e;return}if(!l.current){l.current=!0,c.current=e,window.history.replaceState({graview:Nt.at},"",f);return}if(s||Ti(c.current,e)){window.history.replaceState({graview:Nt.at},"",f),c.current=e;return}c.current=e,window.history.pushState({graview:++Nt.at},"",f),Nt.depth=Nt.at,Nt.tell()},[e,o])}function Ti(e,t){return e?e.focusId===t.focusId&&e.relation===t.relation&&(e.overview??!1)===(t.overview??!1)&&(e.zoom??!1)===(t.zoom??!1)&&(e.past??!1)===(t.past??!1)&&e.expanded.join(",")===t.expanded.join(",")&&(e.shown??[]).join(",")===(t.shown??[]).join(",")&&hs(e.within,t.within):!1}function hs(e,t){let n=r=>Object.entries(r??{}).sort(([o],[i])=>o.localeCompare(i)).map(([o,i])=>`${o}=${i}`).join("&");return n(Li(e))===n(Li(t))}function Li(e){if(!e||!("q"in e))return e;let{q:t,...n}=e;return n}var $i="graview:pins",Bn={pinned:[],unpinned:[]},Ho=e=>Array.isArray(e)?e.filter(t=>typeof t=="string"):[];function ps(){try{let e=globalThis.localStorage?.getItem($i);if(!e)return Bn;let t=JSON.parse(e);if(Array.isArray(t))return{pinned:Ho(t),unpinned:[]};if(typeof t=="object"&&t!==null){let n=t;return{pinned:Ho(n.pinned),unpinned:Ho(n.unpinned)}}return Bn}catch{return Bn}}function Di(e){try{globalThis.localStorage?.setItem($i,JSON.stringify(e))}catch{}}function gs(e,t,n=!1){let r=i=>i.filter(a=>a!==t),o=n?e.unpinned.includes(t)?{pinned:r(e.pinned),unpinned:r(e.unpinned)}:{pinned:r(e.pinned),unpinned:[...e.unpinned,t]}:e.pinned.includes(t)?{pinned:r(e.pinned),unpinned:r(e.unpinned)}:{pinned:[...e.pinned,t],unpinned:r(e.unpinned)};return Di(o),o}var ms=e=>`ai:${e.name??(e.complete||e.turn?"model":"on-device")}`;var Fi="Llama-3.2-3B-Instruct-q4f16_1-MLC",Hi=new Map;function ji(e={}){let t=e.load?null:e.model??Fi,n=t?Hi.get(t)??Hi.set(t,{engine:null,failed:null}).get(t):{engine:null,failed:null},r=n.engine,o=!1,i=s=>e.onStatus?.(s),a=async()=>{if(e.load)return e.load();let s=globalThis.LanguageModel;if(s){let g=await s.create();return{chat:{completions:{create:async({messages:x})=>({choices:[{message:{content:await g.prompt(x[x.length-1]?.content??"")}}]})}}}}if(!globalThis.navigator?.gpu)throw new Error("this browser has no WebGPU, which the local model needs");return(await import("https://esm.run/@mlc-ai/web-llm")).CreateMLCEngine(e.model??Fi,{initProgressCallback:g=>i({state:"warming",progress:g.progress,detail:g.text})})},l=Promise.resolve();return{complete:async s=>{if(r=n.engine??r,!r)throw new Error("The local model is not warm yet");let f=(await r.chat.completions.create({messages:[{role:"user",content:s}]})).choices?.[0]?.message?.content;if(typeof f!="string")throw new Error("The local model answered with no content");return f},ready:()=>(n.engine??r)!==null,warm:()=>(r=n.engine??r,r?Promise.resolve():o?l:n.failed!==null?(i({state:"failed",detail:n.failed}),Promise.resolve()):(o=!0,i({state:"warming"}),l=a().then(s=>{r=s,n.engine=s,i({state:"ready"})}).catch(s=>{n.failed=s instanceof Error?s.message:String(s),i({state:"failed",detail:n.failed})}).finally(()=>{o=!1}),l)),failed:()=>n.failed}}function ys(e,t={}){return Bi(e,t)?.complete}function Bi(e,t){let n=e.turn,r=e.complete??(n?a=>n({system:"",messages:[{role:"user",content:a}],tools:[],call:async()=>({error:"No tools here."})}):void 0);if(r)return{complete:r,ready:()=>!0,warm:()=>Promise.resolve(),failed:()=>null};if(!e.onDevice)return;let o=typeof e.onDevice=="object"?e.onDevice.model:void 0,i=ji({...o?{model:o}:{},...t.onStatus?{onStatus:t.onStatus}:{}});return{complete:async a=>(i.ready()||i.warm(),i.complete(a)),ready:i.ready,warm:i.warm,failed:i.failed}}function xs(e,t={}){let n=t.floor??wr(),r=(l,c,d)=>n(d?.principal?l.seenBy(d.principal):l,c,d),o=Bi(e,t);if(!o)return async(l,c,d)=>{let s=await r(l,c,d);return s.unsure?{...s,say:e.withoutModel??dr}:s};let i=br({complete:o.complete,...e.turn?{turn:e.turn}:{}}),a=ms(e);return async(l,c,d)=>{let s=await r(l,c,d);if(s.grounded)return s;if(!o.ready()){if(await Promise.race([o.warm(),new Promise(u=>setTimeout(u,100))]),o.failed()!==null)return jo(s,"(AI isn't available in this browser, so this is from the app alone.)");if(!o.ready())return jo(s,"(AI is still getting ready on this device, so this is from the app alone.)")}try{let u=await i(l,c,{...d,...s.proposals.length>0?{reading:s.proposals}:{}});return u.proposals.length===0&&s.proposals.length>0?s:{...u,via:a}}catch(u){let f=ws(u);return jo(s,f?`(AI didn't answer just now: ${f}. This is from the app alone.)`:"(AI didn't answer just now, so this is from the app alone.)")}}}var ws=e=>{if(!(e instanceof Error)||e.name!=="Error")return;let t=e.message.replace(/[()]/g,"").replace(/\s+/g," ").trim().replace(/[.!]+$/,"");return t&&t.length<=160?t:void 0};function jo(e,t){return{...e,say:`${e.say} ${t}`}}var Bo=ee(De(),1);function bs(e={}){let{store:t,selection:n,principal:r,providers:o}=le(),{about:i,...a}=e,l=i??n,c=It();return(0,Bo.useMemo)(()=>{let d=[...new Set(l.flatMap(u=>Jt(u)))],s=l.map(u=>Rt(u)).filter(u=>u!==null);return lo(t,l,{principal:r,kindSelection:d,edgeSelection:s,...o?{providers:o}:{},...a})},[t,l,e,c,r,o])}function vs(){let{store:e,principal:t}=le();return(0,Bo.useMemo)(()=>({preview:(n,r)=>uo(e,n,r??{}),apply:(n,r)=>co(e,n,r??{},{author:t})}),[e,t])}export{Xi as a,ca as b,ua as c,fa as d,ha as e,pa as f,ga as g,cs as h,us as i,ps as j,gs as k,ys as l,xs as m,bs as n,vs as o};
8
+ `);if((0,We.useLayoutEffect)(()=>{let O=l.current;if(O===null||typeof window>"u")return;let k=0,B=()=>{k===0&&(k=requestAnimationFrame(()=>{k=0,x(w=>w+1)}))};O.addEventListener("scroll",B,{capture:!0,passive:!0}),window.addEventListener("resize",B,{passive:!0});let S=typeof ResizeObserver>"u"?null:new ResizeObserver(B);if(S){S.observe(O);for(let w of O.querySelectorAll("[data-graview-view]"))S.observe(w)}return()=>{k!==0&&cancelAnimationFrame(k),O.removeEventListener("scroll",B,{capture:!0}),window.removeEventListener("resize",B),S?.disconnect()}},[l,b]),m)return null;let R=(f?null:y)??Dn(e.nodes,e.connectors,null,o,r),P=new Set;for(let O of R){if(O.edges.length!==1)continue;let k=O.edges[0];P.add(`${O.connector.kind}|${k.from}|${k.to}`)}return(0,Ae.jsxs)(Ae.Fragment,{children:[(0,Ae.jsx)(xi,{strands:R,result:e,scheme:r,overview:o,selection:i,emphasis:a,stageRef:l,onPickEdge:s,liveOf:u}),(0,Ae.jsx)(Wa,{stageRef:l,nodes:e.nodes,scheme:r,selection:i,store:c,graphNodes:d,overview:o,width:t,height:n,onPickEdge:s,alreadyDrawn:P,tick:g})]})}function Wa({stageRef:e,nodes:t,scheme:n,selection:r,store:o,graphNodes:i,overview:a,width:l,height:c,onPickEdge:d,alreadyDrawn:s,tick:u}){let f=en(),g=(0,We.useMemo)(()=>{if(r.length===0||r.length>4)return[];let m=new Set(r),b=[];for(let P of r){let O=Rt(P);O&&b.push({kind:O.kind,self:O.from,other:O.to})}for(let P of o.graph.allEdges()){let O=m.has(P.from)?P.from:m.has(P.to)?P.to:null;if(!O)continue;let k=O===P.from?P.to:P.from;m.has(k)||b.push({kind:P.kind,self:O,other:k})}if(b.length<=14)return b;let R=new Set(t.map(P=>P.id));return b.map((P,O)=>({tie:P,index:O,real:R.has(P.other)?0:1})).sort((P,O)=>P.real-O.real||P.index-O.index).slice(0,14).map(({tie:P})=>P)},[o,r,i,t]),x=()=>{if(g.length===0||typeof document>"u")return[];if(!e.current?.getBoundingClientRect())return[];let b=[...e.current?.querySelectorAll("[data-graview-joins]")??[]].find(w=>{if(w.closest("[data-graview-offstage]"))return!1;try{let M=JSON.parse(w.getAttribute("data-graview-joins")??"[]");return M.length===r.length&&M.every(A=>r.includes(A))}catch{return!1}});if(b){let w=Ln(b,e.current);if(!w)return[];let M=[];for(let A of r){let j=t.find(D=>D.id===A);if(!j)continue;let C=Qe(e.current,j.id,a)??qe(j,n),$=C?$n(w,C):null;if(!C||!$)continue;let F=[...o.graph.allEdges()].find(D=>D.from===A&&r.includes(D.to)||D.to===A&&r.includes(D.from));M.push({key:`join:${A}`,kind:F?.kind??"",endX:$.to.x,endY:$.to.y,...$,fromBox:w,toBox:C,proxy:!1,edgeId:F?Kt(F.kind,F.from,F.to):null})}return M}let R=(w,M)=>{let A=e.current?.querySelectorAll(`[data-graview-pick="${CSS.escape(w)}"], [data-graview-slot="${CSS.escape(w)}"]`),j=[];for(let C of A??[]){if(C.closest("[data-graview-offstage]")||M(C)||C.closest("[data-graview-mark]"))continue;let $=Ln(C,e.current);$&&j.push($)}return j.sort((C,$)=>C.width*C.height-$.width*$.height)},P=w=>t.find(M=>M.id===w)??t.find(M=>M.aggregate?.memberIds.includes(w)),O=w=>`[data-graview-pick="${CSS.escape(w)}"], [data-graview-slot="${CSS.escape(w)}"]`,k=(w,M)=>{let A=e.current;if(!A)return!1;for(let j of A.querySelectorAll("[data-graview-view]")){let C=j.querySelector(O(w));if(C===null||C.closest("[data-graview-offstage]"))continue;let $=j.querySelector(O(M));if($!==null&&!$.closest("[data-graview-offstage]"))return!0}return!1},B=new Set,S=[];for(let w of g){if(k(w.self,w.other))continue;let M=P(w.self),A=M?e.current?.querySelector(`[data-graview-view="${CSS.escape(M.id)}"]`):null,j=R(w.self,()=>!1);if(!(j.length>0)&&M){let v=Qe(e.current,M.id,!1)??qe(M,n);v&&j.push(v)}let $=t.find(v=>v.id===w.other),F=[],D=!1;if($){let v=Qe(e.current,$.id,a)??qe($,n);v&&F.push(v)}else if(F.push(...R(w.other,v=>A?A.contains(v):!1)),F.length===0){let v=P(w.other);if(v&&(!M||v.id!==M.id)){let N=Qe(e.current,v.id,a)??qe(v,n);N&&(F.push(N),D=!0)}}if(j.length===0||F.length===0||D&&a)continue;let K=j[0],z=F[0],V=1/0;for(let v of j)for(let N of F){let T=Math.hypot(v.x+v.width/2-(N.x+N.width/2),v.y+v.height/2-(N.y+N.height/2));T<V&&(V=T,K=v,z=N)}if(s?.has(`${w.kind}|${w.self}|${w.other}`)||s?.has(`${w.kind}|${w.other}|${w.self}`))continue;let ge=`${w.kind}:${Math.round(K.x)},${Math.round(K.y)}:${Math.round(z.x)},${Math.round(z.y)}`;if(B.has(ge))continue;B.add(ge);let me=$n(K,z);if(!me)continue;let{from:X,to:oe,control:L}=me,Y=[...o.graph.allEdges()].find(v=>v.kind===w.kind&&(v.from===w.self&&v.to===w.other||v.from===w.other&&v.to===w.self));S.push({key:`${w.kind}:${w.self}:${w.other}`,kind:w.kind,endX:oe.x,endY:oe.y,from:X,to:oe,control:L,fromBox:K,toBox:z,proxy:D,edgeId:Y?Kt(Y.kind,Y.from,Y.to):null})}return S},[y,h]=(0,We.useState)([]);return(0,We.useLayoutEffect)(()=>{h(x())},[g,t,a,n,l,c,s,u,e]),y.length===0?null:(0,Ae.jsx)("svg",{"aria-hidden":y.some(m=>m.edgeId)?void 0:!0,"data-graview-ties":y.length,"data-graview-world":"",width:l,height:c,style:{position:"absolute",left:0,top:0,pointerEvents:"none",zIndex:Te.lines},children:y.map(m=>{let{connector:b,style:R}=bn(f,m.kind);if(!b.visible)return null;let P={p0:m.from,c:m.control,p1:m.to},O=b.route==="orthogonal"?Ft([nn(m.from,m.to)]):(({p0:B,c:S,p1:w})=>`M ${B.x} ${B.y} Q ${S.x} ${S.y} ${w.x} ${w.y}`)(Nn(b.route,P)),k=null;if(m.edgeId&&d&&!m.proxy){let B=(w,M)=>M.x>=w.x&&M.x<=w.x+w.width&&M.y>=w.y&&M.y<=w.y+w.height,S=[];for(let w=0;w<=40;w++){let M=fi(b.route,P,w/40);B(m.fromBox,M)||B(m.toBox,M)||S.push(M)}S.length>=2&&(k=(0,Ae.jsx)("path",{"data-graview-edge":m.edgeId,className:"graview-edge-hit",d:`M ${S[0].x} ${S[0].y} ${S.slice(1).map(w=>`L ${w.x} ${w.y}`).join(" ")}`,fill:"none",pathLength:1,strokeDasharray:"0.86",strokeDashoffset:-.07,stroke:"transparent",strokeWidth:14,style:{pointerEvents:"stroke",cursor:"pointer"},onClick:w=>{w.stopPropagation(),d(m.edgeId,{x:w.clientX,y:w.clientY})},onContextMenu:w=>{w.preventDefault(),w.stopPropagation(),d(m.edgeId,{x:w.clientX,y:w.clientY})}}))}return(0,Ae.jsxs)("g",{opacity:m.proxy?.32:.72,children:[(0,Ae.jsx)("path",{"data-graview-tie":m.kind,"data-graview-tie-proxy":m.proxy||void 0,d:O,fill:"none",stroke:Xt(R),strokeWidth:m.proxy?1.1:1.6,strokeDasharray:xn[R.pattern],strokeLinecap:"round"}),(0,Ae.jsx)("circle",{cx:m.endX,cy:m.endY,r:m.proxy?2:2.6,fill:Xt(R)}),k]},m.key)})})}function vi({nodes:e,scheme:t,width:n,stageRef:r,moving:o=!1,holding:i=!1}){let a=en(),[l,c]=(0,We.useState)([]);(0,We.useLayoutEffect)(()=>{o||i||c(d())},[e,o,i,t,n,r]);function d(){let s=[];for(let f of e){if(!f.via||Math.round(f.plane)!==1)continue;let g=Qe(r.current,f.id,!1),{scale:x}=Ue(1,t);s.push({key:`${f.via.edgeKind}|${f.via.direction}`,text:f.via.description??`${f.via.direction==="in"?"\u2190":"\u2192"} ${_t(f.via.edgeKind).toLowerCase()}`,left:g?.x??f.x,right:g?g.x+g.width:f.x+f.width*x,top:g?.y??f.y})}let u=Fn(n);return wi(s,{left:u.left,right:n-u.right})}return l.length===0||!a.captions.visible||o?null:(0,Ae.jsx)("div",{"aria-hidden":"true",style:{position:"absolute",inset:0,pointerEvents:"none",zIndex:Te.lines},children:l.map(s=>{let{left:u,width:f}=s;return(0,Ae.jsx)("div",{"data-graview-relation":s.key,title:s.text,style:{position:"absolute",left:u,width:f,textAlign:"center",top:Math.max(0,s.top-19),fontSize:"0.75rem",letterSpacing:"0.09em",textTransform:"uppercase",color:"var(--graview-ink-faint)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:(0,Ae.jsx)("span",{style:{background:"var(--graview-ground)",padding:"1px 7px",borderRadius:4},children:s.text})},s.key)})})}var rn=ee(De(),1);var Ya=new Set;function Si(e,t,n,r,o,i,a,l){let{store:c,views:d,hiddenKinds:s}=le(),u=Lt(),f=oo(),g=(0,rn.useMemo)(()=>{let h={};for(let m of f){if(m.subjectId===void 0)continue;let b=h[m.subjectId]??=[];for(let R of m.nodeIds)R!==m.subjectId&&!b.includes(R)&&b.push(R)}return h},[f]),x=(0,rn.useMemo)(()=>({flagged:new Set(f.flatMap(h=>h.nodeIds)),touched:Jo(c.log.all())}),[f,c,l]),y=(0,rn.useMemo)(()=>({hits:u?mn(u):Ya,...x}),[u,x]);return(0,rn.useMemo)(()=>({...e,cityZoom:i,...a!==void 0?{screenHeight:a}:{},...s.size>0?{hiddenKinds:[...s].sort()}:{},...Object.keys(g).length>0?{judged:g}:{},relevance:y,inset:Fn(t?.width??1200),unit:n,plainGroups:c.schema.kinds.filter(h=>lr(d.lookup(h,{cardinality:"many",fidelity:"full"}))),cityOrder:tr(nr({name:"scene",schema:c.schema,mutations:c.allMutations().filter(h=>!h.derived)}).order.map(h=>h.kind),d.arrangement?.()?.order),screens:d.places().reduce((h,m)=>((h[m.kind]??=[]).push({as:m.as,title:m.title,...m.across?{across:m.across}:{}}),h),{}),nameWidth:r,...t?{width:t.width,height:o?Math.max(0,t.height-64):t.height}:{}}),[e,t,n,c,d,s,g,y,i,a,r,o])}var ut=ee(De(),1);var ki=ee(De(),1);function Hn(e){let t=e?.closest?.("[data-graview-pick]")?.getAttribute("data-graview-joins");if(!t)return null;try{let n=JSON.parse(t);return Array.isArray(n)&&n.length>0&&n.every(r=>typeof r=="string")?n:null}catch{return null}}function Mi(e){(0,ki.useEffect)(()=>{let t=e.current;if(!t)return;let n=()=>{for(let i of t.querySelectorAll("[data-graview-pick]"))i.getAttribute("tabindex")===null&&i.setAttribute("tabindex","0"),i.getAttribute("role")===null&&Ga(i)&&i.setAttribute("role","button")};if(n(),typeof MutationObserver>"u")return;let r=0,o=new MutationObserver(()=>{r===0&&(r=typeof requestAnimationFrame>"u"?0:requestAnimationFrame(()=>{r=0,n()}),r===0&&n())});return o.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-graview-pick"]}),()=>{o.disconnect(),r!==0&&cancelAnimationFrame(r)}},[e])}var za=new Set(["div","span","p","figure","img","td","output","b","i","em","strong","small","canvas","g","polygon","circle","rect","path","ellipse","polyline","line","use"]);function Ga(e){return za.has(e.localName.toLowerCase())}var Qt=ee(be(),1);function Ri({node:e,useDom:t,touched:n,frontY:r,centerY:o,screen:i,onDrawnHeight:a,crowded:l,activity:c,scheme:d,canvasWidth:s,canvasHeight:u,selected:f,onSelect:g,onPick:x,onTravel:y,onMenu:h,selection:m,onJackIn:b,onDragStart:R,onDragMove:P,onDragEnd:O,swallowClick:k,children:B}){let{brand:S,store:w,actsDoor:M}=le(),A=e.beyond?`${e.beyond.length} more district${e.beyond.length===1?"":"s"}`:e.aggregate?.opens?.in==="place"?`${e.aggregate.label}, ${fn(w.schema,e.aggregate.kind,e.aggregate.memberIds.length)}`:e.aggregate?e.aggregate.label:(()=>{let v=w.graph.getNode(e.id);return v?Xo(w.schema.tryDefinition(e.kind),v):e.id})(),[j,C]=(0,ut.useState)(null),$=Math.round(e.plane)===0&&!e.aggregate;(0,ut.useLayoutEffect)(()=>{if(!$)return;let v=me.current;if(!v)return;let N=()=>{let G=[...v.children].find(J=>J.dataset.graviewKindtag===void 0);if(!G)return;let H=v.getBoundingClientRect(),re=G.getBoundingClientRect(),ie=v.offsetWidth>0?H.width/v.offsetWidth:1,de={top:Math.round((re.top-H.top)/ie)-9,right:Math.round((H.right-re.right)/ie)+14};C(J=>J&&J.top===de.top&&J.right===de.right?J:de)};if(typeof ResizeObserver>"u"){N();return}let T=new ResizeObserver(N);T.observe(v);for(let G of v.children)T.observe(G);return()=>T.disconnect()},[$,e.id]);let F=e.plane-(1-(e.depth??1))*.55,D=Math.max(0,Math.min(2,Math.floor(F))),K=Math.max(0,Math.min(2,Math.ceil(F))),z=D===K?Ue(D,d):yn(Ue(D,d),Ue(K,d),F-D),V=ur(z,e.x,e.y,s,u),ge=Ue(Math.max(0,Math.min(2,Math.round(F))),d).blur,me=(0,ut.useRef)(null);Mi(me);let X=e.natural,oe=X?Math.min(e.width/X.width,e.height/X.height):1,L=(0,ut.useRef)(null);(0,ut.useEffect)(()=>{if(!i||!a)return;let v=L.current;if(!v||typeof ResizeObserver>"u")return;let N=()=>{let ie=0,de=0;for(let J of v.children)if(!(!(J instanceof HTMLElement)||J.classList.contains("graview-screen-fullscreen"))){ie=Math.max(ie,J.offsetTop+J.offsetHeight);for(let Ce of[J,...J.querySelectorAll("*")]){let ke=getComputedStyle(Ce).overflowY;(ke==="auto"||ke==="scroll")&&(de+=Ce.scrollHeight-Ce.clientHeight)}}a(ie+de)},T=0,G=()=>{T||(T=requestAnimationFrame(()=>{T=0,N()}))};N();let H=new ResizeObserver(G);H.observe(v);for(let ie of v.children)H.observe(ie);let re=new MutationObserver(G);return re.observe(v,{childList:!0,subtree:!0,characterData:!0,attributes:!0}),()=>{T&&cancelAnimationFrame(T),H.disconnect(),re.disconnect(),a(void 0)}},[i,a,e.id]);let Y=t?{transform:ci(V),transformOrigin:"0 0",filter:ge>0?`blur(${ge}px)`:void 0,opacity:(1-z.falloff*.55)*(e.opacity??1),"--graview-lift-low":li(z.shadow,d),...r!==void 0?{"--graview-front-y":`${r.toFixed(1)}px`}:{},...o!==void 0?{"--graview-center-y":`${o.toFixed(1)}px`}:{}}:{};return(0,Qt.jsxs)("div",{ref:me,"data-graview-view":e.id,"data-graview-plane":Math.round(e.plane),"data-graview-selected":f||void 0,"data-graview-touched":n||void 0,"data-graview-plot":r!==void 0?"":void 0,"data-graview-screen":i?"":void 0,"data-graview-record-focus":Math.round(e.plane)===0&&!e.aggregate&&!X&&!i?"":void 0,"data-graview-nested":e.nestedUnder??void 0,"data-graview-crowded":l||void 0,"data-graview-pinned":e.pinned||void 0,"data-graview-activity":c?c.manner:void 0,"data-graview-wrote":c?.wrote||void 0,"data-graview-read":c&&!c.wrote?!0:void 0,"data-graview-broke":c?.broke||void 0,title:c?`${ti[c.manner]} ${c.wrote?"changed this":"read this"}: ${c.intent}`:e.aggregate&&Math.round(e.plane)!==0?`Open ${e.aggregate.label}`:void 0,role:"group","aria-label":A,"aria-keyshortcuts":M&&!e.beyond?M.key:void 0,tabIndex:0,onPointerDown:R,onPointerMove:P,onPointerUp:O,onPointerCancel:O,onClick:v=>{if(k.current)return;let N=v.target?.closest("input, textarea, select, button, a[href], [contenteditable='true']");if(N&&!N.hasAttribute("data-graview-pick"))return;let T=v.metaKey||v.shiftKey,G=Ct(v.target);if(G&&G!==e.id){v.stopPropagation(),x(G,T,Hn(v.target)??void 0);return}g(T)},onKeyDown:v=>{if(M&&!e.beyond&&v.key.toLowerCase()===M.key.toLowerCase()&&!v.metaKey&&!v.ctrlKey&&!v.altKey&&!v.target?.closest("input, textarea, select, [contenteditable='true']")){v.preventDefault(),v.stopPropagation();let re=Ct(v.target)??e.id;m.includes(re)||x(re,!1),M.open(v.target instanceof HTMLElement?v.target:v.currentTarget);return}if(v.key!=="Enter"&&v.key!==" "||v.target?.closest("input, textarea, select, button, [contenteditable='true']"))return;let T=Ct(v.target);if(v.preventDefault(),v.stopPropagation(),!T||T===e.id){m.length===1&&m[0]===e.id&&!v.metaKey&&!v.shiftKey?b():g(v.metaKey||v.shiftKey);return}let G=Hn(v.target);(G?m.length===G.length&&G.every(re=>m.includes(re)):m.length===1&&m[0]===T)&&!v.metaKey&&!v.shiftKey?y(T):x(T,v.metaKey||v.shiftKey,G??void 0)},onContextMenu:v=>{let N=Ct(v.target);v.preventDefault(),v.stopPropagation();let T=N&&N!==e.id?N:e.id;x(T,!1,(T===N?Hn(v.target):null)??void 0),h({x:v.clientX,y:v.clientY,on:T})},onDoubleClick:v=>{let N=Ct(v.target);if(N&&N!==e.id){v.stopPropagation(),y(N);return}b()},style:{position:"absolute",...t?{}:{pointerEvents:"none"},zIndex:e.opened?Te.opened:Te.card-Math.round(e.plane),left:t?0:Math.round(e.x),top:t?0:Math.round(e.y),width:Math.round(e.width),height:Math.round(e.height),boxSizing:"border-box",display:"flex",flexDirection:"column",justifyContent:"center",...Y},children:[X?(0,Qt.jsx)("div",{ref:L,"data-graview-natural":`${Math.round(X.width)}x${Math.round(X.height)}`,style:{position:"absolute",left:"50%",top:"50%",width:X.width,height:X.height,transform:`translate(-50%, -50%) scale(${oe})`,transformOrigin:"50% 50%",display:"flex",flexDirection:"column"},children:B}):B,Math.round(e.plane)===0&&!e.aggregate?(0,Qt.jsxs)("span",{"data-graview-kindtag":"",className:"graview-kind-tag","aria-hidden":"true",style:{...j??{},"--graview-hue":Math.round(Mt(e.kind,S?.accents))},children:[(0,Qt.jsx)("span",{style:{width:9,height:6,clipPath:"polygon(50% 0, 100% 50%, 50% 100%, 0 50%)",flex:"0 0 auto",background:`hsl(${Math.round(Mt(e.kind,S?.accents))} 55% var(--graview-tint-lightness) / 0.9)`}}),Qo(w.schema.tryDefinition(e.kind),e.kind)]}):null]})}var ue=ee(be(),1);var Ua=e=>e?{activity:e}:{},Xa=e=>`${Math.round(e.x)} ${Math.round(e.y)}`,jn=e=>e.stopPropagation(),Ei=.6,Ai=3,qa=80,Pi=e=>Math.round(e.plane)===1&&(e.compact===!0||e.width<175||e.height<qa);function Qa(e){let[t,n]=(0,q.useState)(1),r=(0,q.useRef)(1);return(0,q.useEffect)(()=>{e||(r.current=1,n(1))},[e]),[t,r,n]}function Za(){let[e,t]=(0,q.useState)(void 0),n=(0,q.useCallback)(r=>t(r&&Math.round(r)),[]);return[e,n]}function Ja(e){let[t,n]=(0,q.useState)({x:0,y:0}),r=(0,q.useMemo)(()=>({x:(e.pan?.x??0)+t.x,y:(e.pan?.y??0)+t.y}),[e.pan,t]),o=(0,q.useMemo)(()=>t.x===0&&t.y===0?e:yt(e,r),[e,t,r]),i=(0,q.useRef)(t);i.current=t;let a=(0,q.useCallback)((l,c)=>{let d=i.current,s=(u,f,g)=>Math.max(Math.min(-u,f),Math.min(Math.max(u,f),g+f))-f;return{x:s(l.x,d.x,c.x),y:s(l.y,d.y,c.y)}},[]);return[r,o,a,i,n]}function es(e,t,n,r,o,i){let a=n!==null&&!t.overview,l=a?null:n,c=(0,q.useMemo)(()=>{let f=t.pan?{...t,pan:void 0}:t;return l?zt(f,l.id,{x:l.x,y:l.y}):f},[t,l]),d=(0,q.useMemo)(()=>Pn(e.graph,e.schema,c,r),[e,c,r,o]),s=(0,q.useMemo)(()=>n&&a?Mo(d,n.id,{x:n.x,y:n.y})??Pn(e.graph,e.schema,zt(c,n.id,{x:n.x,y:n.y}),r):d,[d,n,a,e,c,r]);return[(0,q.useMemo)(()=>Ro(s,i??{x:0,y:0}),[s,i]),a]}function ts(){let[e,t]=(0,q.useState)(!1),[n,r]=(0,q.useState)(!1),o=(0,q.useRef)(null),i=(0,q.useRef)(()=>!1),a=(0,q.useCallback)(()=>{r(!0),o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{o.current=null,!i.current()&&r(!1)},160)},[]);return[e,n,t,a,i,()=>{t(!1),r(!1)}]}function ns(e){let t=(0,q.useRef)(!1),n=e!==null&&!t.current;return(0,q.useEffect)(()=>{e!==null&&(t.current=!0)},[e]),n}function os({registerScene:e,scheme:t,views:n},r,o){let i=(0,q.useRef)(r);i.current=r,(0,q.useEffect)(()=>(e({whereIs:a=>In(i.current,o.current,t,n,a)}),()=>e(null)),[e,t,n])}function rs(e,t){(0,q.useEffect)(()=>{let n;return e.onActive(r=>{let o=t.current;if(!o)return;let i=l=>{let c=o.getBoundingClientRect();e.set({x:l.clientX-c.left,y:l.clientY-c.top})},a=()=>e.set(null);r?(o.addEventListener("pointermove",i),o.addEventListener("pointerleave",a),n=()=>{o.removeEventListener("pointermove",i),o.removeEventListener("pointerleave",a)}):(n?.(),n=void 0)})},[e])}function is(e,t,n,r,o){(0,q.useEffect)(()=>{if(e==="dom")return;let i=n.current;if(!i||!t)return;let a=new Set;for(let c of r.nodes)(o.has(c.id)||c.aggregate?.memberIds.some(d=>o.has(d)))&&a.add(c.id);let l=t({canvas:i,layout:r,dirty:a,hostOf:c=>i.querySelector(`[data-graview-view="${CSS.escape(c)}"]`)});return()=>{l?.()}},[e,t,r,o])}function as(){let e=fr();return t=>{let n=t?e.get(t.id):void 0,r=t?.aggregate?.memberIds??[];if(!n&&r.length===0)return;let o=n,i=n?.wrote??!1,a=n?.read??!1,l=n?.broke??!1;for(let c of r){let d=e.get(c);d&&(i||=d.wrote,a||=d.read,l||=d.broke,(!o||d.at>o.at||d.at===o.at&&d.wrote&&!o.wrote)&&(o=d))}return o?{...o,wrote:i,read:a,broke:l}:void 0}}var Oi=(e,t)=>e.includes(t)?e.filter(n=>n!==t):[...e,t];function ss(){let{views:e,view:t,setView:n,setSelection:r}=le(),o=Lt(),i=a=>{if($e(a.id)===null&&!a.aggregate)return!1;let l=e.resolve(a.kind,{cardinality:"many",fidelity:"full"})?.view;return l!==void 0&&l.generic!==!0};return a=>({onSelect:l=>{if(Gt(a.id)){r(d=>l?Oi(d,a.id):[a.id]);return}let c=a.aggregate?Jt(a.id):[];if(t.overview){r(d=>l?[...new Set([...d,a.id])]:[a.id]);return}if(c.length===1&&!l&&Math.round(a.plane)!==0){let d=c[0];n(s=>Xn(s,s.relation===d?null:d));return}r(d=>Io(a,d,l))},onPick:(l,c,d)=>r(s=>d?c?[...new Set([...s,...d])]:[...d]:c?Oi(s,l):[l]),onTravel:l=>{n(c=>({...Pt(c,l),relation:null})),r([l])},onJackIn:()=>{let l=a.aggregate?.opens;if(l){l.in==="place"?n(s=>Qn(s,a.id)):n(s=>Object.entries(l.within).reduce((u,[f,g])=>qn(u,f,g),Pt(Yt(s,!1),l.focus))),r([]);return}let c=$e(a.id),d=c!==null&&(o?.byKind[c]??0)>0;n(s=>Zn(s,a.id,{ownPicture:i(a),...d&&s.q?{carry:s.q}:{}})),r(a.aggregate?[]:[a.id])}})}function ds({node:e}){let{views:t,view:n,setView:r}=le();return(0,ue.jsxs)("div",{className:"graview-screen-grip","data-graview-grip":e.id,"data-testid":"screen-grip",title:"Move this picture \u2014 it stays by its own village",children:[(0,ue.jsx)("span",{className:"graview-screen-title","aria-hidden":"true",children:t.places().find(o=>o.as===n.within?.view&&o.kind===e.screenOf)?.title??""}),(0,ue.jsx)("button",{type:"button",className:"graview-screen-fullscreen","data-testid":"screen-fullscreen",title:"Open this picture on its own \u2014 leave the graview with it",onClick:o=>{o.stopPropagation(),r(i=>Yt(i,!1))},onPointerDown:jn,onDoubleClick:jn,children:"Open \u2197"})]})}function ls({zoom:e,zoomBy:t}){let n=(r,o,i,a)=>(0,ue.jsx)("button",{type:"button",className:"graview-zoom-button","data-testid":`zoom-${r}`,"aria-label":`Zoom ${r}`,title:`Zoom ${r} \u2014 or pinch, or ctrl+wheel`,disabled:a,onClick:()=>t(i),children:o});return(0,ue.jsxs)("div",{className:"graview-zoom","data-graview-foot":"",role:"group","aria-label":"Zoom",onPointerDown:jn,onClick:jn,children:[n("out","\u2212",1/1.25,e<=Ei+1e-6),(0,ue.jsxs)("span",{className:"graview-zoom-level","data-testid":"zoom-level","aria-live":"polite",children:[Math.round(e*100),"%"]}),n("in","+",1.25,e>=Ai-1e-6)]})}function cs({options:e,renderer:t="auto",attachRenderer:n,className:r,style:o,animate:i=!0,children:a}){let l=le(),{store:c,scheme:d,views:s,view:u,setView:f,selection:g,setSelection:x,setMenuAt:y,emphasis:h,brand:m,noteMoved:b,robots:R,seatTalk:P,motion:O}=l,k=to(P),B=(0,q.useRef)(null),S=(0,q.useRef)(null),w=di(S),M=si(),A=hr(S,M,m),j=(0,q.useMemo)(()=>E=>Ut(E,132,A),[A]),{zoomAbout:C,panBy:$}=ei({stage:S,view:u,setView:f}),F=It(),D=u.overview&&u.within?.view!==void 0?1.5:1,[K,z,V]=Qa(u.overview),[ge,me]=Za(),X=Si(e,w,M,A,k,D*K,ge,F),[oe,L,Y,v,N]=Ja(u),T=(0,q.useMemo)(()=>new Set(Object.keys(u.pins)),[u.pins]),G=Qr(),[H,re]=es(c,u,G.held,X,F,L.pan),[ie,de,J,Ce,ke,et]=ts(),Ke=ns(w),U=_r(H,{enabled:i&&!ie&&!de&&w!==null&&!Ke});(0,q.useEffect)(()=>O.set(ie||de||U.t<1),[O,ie,de,U]);let Le=Vr(),tt=Wr(),nt=H.nodes.find(E=>E.screenOf!==void 0)?.id??null,He=qr({view:u,result:H,frame:U,panned:oe,closer:D,screenId:nt,setCamera:N});os(l,U,S),rs(l.pointer,S),is(t,n,B,U,Le);let Je=t==="dom"||t==="auto"&&!n,ft=as(),Ne=Zr({stage:S,pan:u.pan,setView:f,settled:et});ke.current=Ne.settle;let{onGroundDown:ht,onCardDown:pt,onDragMove:Ye,onDragUp:ot,swallow:Ie}=Jr({view:u,panned:oe,limit:()=>wt(H),panWithin:Y,moveByTransform:Je,setView:f,setDragging:J,noteMoved:b,shift:Ne,district:G});C.current=(E,ae,fe)=>{if(!u.overview)return;ke.current();let Re=z.current,it=Math.max(Ei,Math.min(Ai,Re*E));if(Math.abs(it-Re)<1e-4)return;z.current=it,Ce(),V(it);let at=S.current?.getBoundingClientRect(),ze={x:H.width/2,y:H.height/2},je=at&&ae!==void 0&&fe!==void 0?{x:ae-at.left,y:fe-at.top}:ze,an=it/Re;f(Ht=>yt(Ht,ko(Ht.pan??{x:0,y:0},v.current,je,ze,an))),b()};let St=(E,ae,fe=wt(H))=>f(Re=>yt(Re,Y(fe,{x:(Re.pan?.x??0)+E,y:(Re.pan?.y??0)+ae})));$.current=(E,ae)=>{Ce();let fe=wt(H),Re=u.pan??{x:0,y:0};if(Je){let it=Ne.offset();Ne.shiftTo(Y(fe,{x:Re.x+it.x+E,y:Re.y+it.y+ae}),Re)}else St(E,ae,fe);b()};let ne=ss(),xe=E=>ft(U.nodes.find(ae=>ae.id===E)),rt=(E,ae,fe,Re)=>E.originY+oe.y+ve(fe.col+fe.side/2,fe.row+fe.side/Re,E.cell).y-ae.y,Me={width:H.width,height:H.height},gt={position:"relative",zIndex:Te.stage,...Me},mt=E=>In(U,S.current,d,s,E),kt=U.nodes.map(E=>(0,ue.jsxs)(Ri,{node:E,crowded:Pi(E),useDom:Je,...E.plot&&U.city&&Math.round(E.plane)===2?{frontY:rt(U.city,E,E.plot,1),centerY:rt(U.city,E,E.plot,2)}:{},...E.screenOf!==void 0?{screen:!0,...E.id===nt?{onDrawnHeight:me}:{}}:{},touched:Le.has(E.id),...Ua(ft(E)),scheme:d,canvasWidth:H.width,canvasHeight:H.height,selected:g.includes(E.id),...ne(E),onMenu:y,selection:g,onDragStart:ae=>pt(E,ae),onDragMove:Ye,onDragEnd:ot,swallowClick:Ie,children:[E.screenOf!==void 0?(0,ue.jsx)(ds,{node:E}):null,E.beyond?(0,ue.jsx)(oi,{kinds:E.beyond}):E.aggregate?.opens?(0,ue.jsx)(ai,{node:E}):(0,ue.jsx)(ri,{node:E,mode:"scene",selected:g.includes(E.id),...Pi(E)?{fidelity:"glyph"}:{}})]},E.id));return(0,ue.jsx)(pr.Provider,{value:j,children:(0,ue.jsxs)("div",{ref:S,className:`graview-ground${r?` ${r}`:""}`,"data-graview-altitude":u.overview?"":void 0,"data-graview-reach":U.city?Xa(wt(H)):void 0,"data-graview-settled":U.t>=1&&!He.gliding()?"":void 0,"data-graview-box":w?`${w.width}x${w.height}`:void 0,onPointerDown:ht,onPointerMove:Ye,onPointerUp:ot,onPointerCancel:ot,onClick:E=>{Ie.current||E.target.closest("[data-graview-view], button, aside, section[aria-label], [data-graview-offstage], a, input, select")||(x([]),y(null))},style:{position:"relative",width:"100%",height:"100%",cursor:ie?"grabbing":"grab",touchAction:"none","--graview-altitude":u.overview?1:0,...U.city?{"--graview-lattice-cell":`${U.city.cell.toFixed(2)}px`,"--graview-lattice-x":`${(U.city.originX+U.city.pan.x).toFixed(1)}px`,"--graview-lattice-y":`${(U.city.originY+U.city.pan.y).toFixed(1)}px`}:{},...ie?{userSelect:"none"}:{},overflow:"hidden",...o},children:[(0,ue.jsx)(Yr,{frame:U,...Me,pan:U.city?U.city.pan:oe,brand:m,pinned:T,swallowed:Ie,onFocus:E=>{let ae=$e(E);ae!==null&&f(fe=>Pt(fe,Oe(ae)))}}),Je?(0,ue.jsx)("div",{"data-graview-stage":"dom","data-graview-world":"",style:{...gt,overflow:"hidden"},children:kt}):(0,ue.jsx)("canvas",{ref:B,"data-graview-stage":"gpu",layoutsubtree:"",...Me,style:{display:"block",...gt},children:kt}),u.overview&&!ie?(0,ue.jsx)(Xr,{result:H,schema:c.schema,onGo:E=>{St(E.x,E.y),b()}}):null,u.overview?(0,ue.jsx)(ls,{zoom:K,zoomBy:E=>C.current(E)}):null,(0,ue.jsx)(bi,{frame:U,holding:re,...Me,scheme:d,overview:!!u.overview,selection:g,emphasis:h,stageRef:S,store:c,graphNodes:F,onPickEdge:(E,ae)=>{Ie.current||(x([E]),y(ae?{...ae,on:E}:null))},liveOf:E=>{let ae=xe(E.from),fe=xe(E.to);return ae?.wrote&&fe?.wrote?ae.at>fe.at?ae:fe:void 0}}),(0,ue.jsx)(zr,{width:H.width,whereIs:mt}),(0,ue.jsx)(Kr,{marks:tt.marks,questions:[...R.values()].filter(E=>E.mode==="asking"&&E.at!==null&&E.say).map(E=>({id:E.at,who:E.who,asks:E.say})),whereIs:mt,stageRef:S,...Me}),(0,ue.jsx)(vi,{nodes:U.nodes,moving:U.t<1,holding:re,scheme:d,width:H.width,stageRef:S}),a]})})}var Ze=ee(De(),1);function us(){return Ni(),null}var Ii=()=>window.location.pathname.endsWith(er),Ci=()=>(Ii()?rr:Un)(window.location.hash),fs=e=>(Ii()?ir:Gn)(e);function Ni(){let{view:e,setView:t,views:n,principal:r}=le(),o=JSON.stringify(r),i=(0,Ze.useCallback)(s=>{let u=s.within?.view;if(u===void 0||s.focusId)return s;let f=n.places().find(g=>g.as===u);return f?{...s,focusId:Oe(f.kind)}:s},[n]),a=(0,Ze.useRef)(!1);(0,Ze.useEffect)(()=>{if(typeof window>"u")return;let s=i(Ci());!hn(s,zn)&&!hn(s,e)&&(a.current=!0,t(s))},[]),(0,Ze.useEffect)(()=>{if(typeof window>"u")return;let s=()=>t(i(Ci()));return window.addEventListener("popstate",s),window.addEventListener("hashchange",s),()=>{window.removeEventListener("popstate",s),window.removeEventListener("hashchange",s)}},[t,i]);let l=(0,Ze.useRef)(!1),c=(0,Ze.useRef)(null),d=(0,Ze.useRef)(o);(0,Ze.useEffect)(()=>{if(typeof window>"u")return;if(a.current){a.current=!1;return}let s=d.current!==o;d.current=o;let u=fs(e),f=u||`${window.location.pathname}${window.location.search}`;if((window.location.hash||(window.location.href.includes("#")?"#":""))===u){l.current=!0,c.current=e;return}if(!l.current){l.current=!0,c.current=e,window.history.replaceState({graview:Nt.at},"",f);return}if(s||Ti(c.current,e)){window.history.replaceState({graview:Nt.at},"",f),c.current=e;return}c.current=e,window.history.pushState({graview:++Nt.at},"",f),Nt.depth=Nt.at,Nt.tell()},[e,o])}function Ti(e,t){return e?e.focusId===t.focusId&&e.relation===t.relation&&(e.overview??!1)===(t.overview??!1)&&(e.zoom??!1)===(t.zoom??!1)&&(e.past??!1)===(t.past??!1)&&e.expanded.join(",")===t.expanded.join(",")&&(e.shown??[]).join(",")===(t.shown??[]).join(",")&&hs(e.within,t.within):!1}function hs(e,t){let n=r=>Object.entries(r??{}).sort(([o],[i])=>o.localeCompare(i)).map(([o,i])=>`${o}=${i}`).join("&");return n(Li(e))===n(Li(t))}function Li(e){if(!e||!("q"in e))return e;let{q:t,...n}=e;return n}var $i="graview:pins",Bn={pinned:[],unpinned:[]},Ho=e=>Array.isArray(e)?e.filter(t=>typeof t=="string"):[];function ps(){try{let e=globalThis.localStorage?.getItem($i);if(!e)return Bn;let t=JSON.parse(e);if(Array.isArray(t))return{pinned:Ho(t),unpinned:[]};if(typeof t=="object"&&t!==null){let n=t;return{pinned:Ho(n.pinned),unpinned:Ho(n.unpinned)}}return Bn}catch{return Bn}}function Di(e){try{globalThis.localStorage?.setItem($i,JSON.stringify(e))}catch{}}function gs(e,t,n=!1){let r=i=>i.filter(a=>a!==t),o=n?e.unpinned.includes(t)?{pinned:r(e.pinned),unpinned:r(e.unpinned)}:{pinned:r(e.pinned),unpinned:[...e.unpinned,t]}:e.pinned.includes(t)?{pinned:r(e.pinned),unpinned:r(e.unpinned)}:{pinned:[...e.pinned,t],unpinned:r(e.unpinned)};return Di(o),o}var ms=e=>`ai:${e.name??(e.complete||e.turn?"model":"on-device")}`;var Fi="Llama-3.2-3B-Instruct-q4f16_1-MLC",Hi=new Map;function ji(e={}){let t=e.load?null:e.model??Fi,n=t?Hi.get(t)??Hi.set(t,{engine:null,failed:null}).get(t):{engine:null,failed:null},r=n.engine,o=!1,i=s=>e.onStatus?.(s),a=async()=>{if(e.load)return e.load();let s=globalThis.LanguageModel;if(s){let g=await s.create();return{chat:{completions:{create:async({messages:x})=>({choices:[{message:{content:await g.prompt(x[x.length-1]?.content??"")}}]})}}}}if(!globalThis.navigator?.gpu)throw new Error("this browser has no WebGPU, which the local model needs");return(await import("https://esm.run/@mlc-ai/web-llm")).CreateMLCEngine(e.model??Fi,{initProgressCallback:g=>i({state:"warming",progress:g.progress,detail:g.text})})},l=Promise.resolve();return{complete:async s=>{if(r=n.engine??r,!r)throw new Error("The local model is not warm yet");let f=(await r.chat.completions.create({messages:[{role:"user",content:s}]})).choices?.[0]?.message?.content;if(typeof f!="string")throw new Error("The local model answered with no content");return f},ready:()=>(n.engine??r)!==null,warm:()=>(r=n.engine??r,r?Promise.resolve():o?l:n.failed!==null?(i({state:"failed",detail:n.failed}),Promise.resolve()):(o=!0,i({state:"warming"}),l=a().then(s=>{r=s,n.engine=s,i({state:"ready"})}).catch(s=>{n.failed=s instanceof Error?s.message:String(s),i({state:"failed",detail:n.failed})}).finally(()=>{o=!1}),l)),failed:()=>n.failed}}function ys(e,t={}){return Bi(e,t)?.complete}function Bi(e,t){let n=e.turn,r=e.complete??(n?a=>n({system:"",messages:[{role:"user",content:a}],tools:[],call:async()=>({error:"No tools here."})}):void 0);if(r)return{complete:r,ready:()=>!0,warm:()=>Promise.resolve(),failed:()=>null};if(!e.onDevice)return;let o=typeof e.onDevice=="object"?e.onDevice.model:void 0,i=ji({...o?{model:o}:{},...t.onStatus?{onStatus:t.onStatus}:{}});return{complete:async a=>(i.ready()||i.warm(),i.complete(a)),ready:i.ready,warm:i.warm,failed:i.failed}}function xs(e,t={}){let n=t.floor??wr(),r=(l,c,d)=>n(d?.principal?l.seenBy(d.principal):l,c,d),o=Bi(e,t);if(!o)return async(l,c,d)=>{let s=await r(l,c,d);return s.unsure?{...s,say:e.withoutModel??dr}:s};let i=br({complete:o.complete,...e.turn?{turn:e.turn}:{}}),a=ms(e);return async(l,c,d)=>{let s=await r(l,c,d);if(s.grounded)return s;if(!o.ready()){if(await Promise.race([o.warm(),new Promise(f=>setTimeout(f,100))]),o.failed()!==null)return jo(s,"(AI isn't available in this browser, so this is from the app alone.)");if(!o.ready())return jo(s,"(AI is still getting ready on this device, so this is from the app alone.)")}let u;try{let f=await i(l,c,{...d,...s.proposals.length>0?{reading:s.proposals}:{}});if(!f.unsure)return f.proposals.length===0&&s.proposals.length>0?s:{...f,via:a}}catch(f){u=ws(f)}return jo(s,u?`(AI didn't answer just now: ${u}. This is from the app alone.)`:"(AI didn't answer just now, so this is from the app alone.)")}}var ws=e=>{if(!(e instanceof Error)||e.name!=="Error")return;let t=e.message.replace(/[()]/g,"").replace(/\s+/g," ").trim().replace(/[.!]+$/,"");return t&&t.length<=160?t:void 0};function jo(e,t){return{...e,say:`${e.say} ${t}`}}var Bo=ee(De(),1);function bs(e={}){let{store:t,selection:n,principal:r,providers:o}=le(),{about:i,...a}=e,l=i??n,c=It();return(0,Bo.useMemo)(()=>{let d=[...new Set(l.flatMap(u=>Jt(u)))],s=l.map(u=>Rt(u)).filter(u=>u!==null);return lo(t,l,{principal:r,kindSelection:d,edgeSelection:s,...o?{providers:o}:{},...a})},[t,l,e,c,r,o])}function vs(){let{store:e,principal:t}=le();return(0,Bo.useMemo)(()=>({preview:(n,r)=>uo(e,n,r??{}),apply:(n,r)=>co(e,n,r??{},{author:t})}),[e,t])}export{Xi as a,ca as b,ua as c,fa as d,ha as e,pa as f,ga as g,cs as h,us as i,ps as j,gs as k,ys as l,xs as m,bs as n,vs as o};
@@ -1,4 +1,4 @@
1
- import{c as E,d as I}from"./chunk.UUMXYMOX.js";import"./chunk.D3XF643V.js";import"./chunk.NLFLFIDS.js";import"./chunk.6LJ66MB7.js";import"./chunk.SVL6I37U.js";import{O as A,S as k}from"./chunk.P7YN4Z3K.js";import{a as F,b as S}from"./chunk.MRK6QJV5.js";import{b as f}from"./chunk.AJZBJBMO.js";var v=f(F(),1);var a=f(S(),1),C=40,O=60;function D(l,i,p){return l.allNodes().filter(o=>o.kind===i).map(o=>o[p])}function G(l){if(l.length<2)return[];let i=[...l].sort((n,d)=>n-d),p=i[i.length-1]-i[0];if(p<=0)return[];let o=Math.max(1,10**Math.floor(Math.log10(p/4))),e=p/4>=o*5?o*5:o,r=n=>Math.round(n/e)*e;return[...new Set([.2,.4,.6,.8].map(n=>r(i[Math.floor(n*(i.length-1))])))].filter(n=>n>0)}function T(l,i,p){let o=p.far??[],e=new Map,r=new Set(o);for(let t of i.allNodes())r.has(t.kind)&&e.set(t.id,A(l.tryDefinition(t.kind),t));let n=[...e.entries()].map(([t,g])=>({id:t,label:g}));return(n.length<=C?n:n.map(t=>({end:t,ties:i.out(t.id).length+i.in(t.id).length})).sort((t,g)=>g.ties-t.ties||t.end.label.localeCompare(g.end.label)).slice(0,C).map(t=>t.end)).sort((t,g)=>t.label.localeCompare(g.label))}function R(l,i,p){let o=[];for(let e of p.filters)if(e.about==="is")for(let r of e.options??[])o.push({value:`is:${r}`,label:r,group:e.label,condition:{key:"is",value:r}});else if(e.about==="edge"){o.push({value:`${e.key}:*`,label:"anything",group:e.label,condition:{key:e.key,value:"*"}}),o.push({value:`${e.key}:none`,label:"nothing",group:e.label,condition:{key:e.key,value:"none"}});for(let r of T(l,i,e))o.push({value:`${e.key}:${r.id}`,label:r.label,group:e.label,condition:{key:e.key,value:r.id}})}else if(e.type==="date")for(let r of["before","after","on"])o.push({value:`${e.key}:${r}`,label:`${r}\u2026`,group:e.label,ask:{key:e.key,op:r,label:e.label}});else if(e.type==="number"){let r=l.tryDefinition(p.kind),n=G(D(i,p.kind,e.key).filter(d=>typeof d=="number"));for(let d of["at-most","at-least"])for(let t of d==="at-most"?n:[...n].reverse())o.push({value:`${e.key}:${d}:${t}`,label:`${d==="at-most"?"at most":"at least"} ${k(r,e.key,t)}`,group:e.label,condition:{key:e.key,value:`${d}:${t}`}})}else if(e.type==="text"){let r=[...new Set(D(i,p.kind,e.key).filter(n=>typeof n=="string"&&n.length>0&&!n.includes(",")))].sort((n,d)=>n.localeCompare(d));if(r.length>=2&&r.length<=O)for(let n of r)o.push({value:`${e.key}:${n}`,label:n,group:e.label,condition:{key:e.key,value:n}})}else if(e.type==="boolean")o.push({value:`${e.key}:true`,label:"yes",group:e.label,condition:{key:e.key,value:"true"}}),o.push({value:`${e.key}:false`,label:"no",group:e.label,condition:{key:e.key,value:"false"}});else for(let r of e.options??[])o.push({value:`${e.key}:${r}`,label:k(l.tryDefinition(p.kind),e.key,r),group:e.label,condition:{key:e.key,value:r}});return o}var H=["day","week","month","year","decade"];function K(l){let{which:i,schema:p,graph:o,offers:e,arrangement:r,set:n,toggle:d,has:t,done:g}=l,y=l.testId,h=(0,v.useRef)(null);(0,v.useEffect)(()=>{let u=h.current?.closest("[data-graview-popover]");!u||document.activeElement!==u||(u.querySelector('[aria-pressed="true"]')??u.querySelector("button, input"))?.focus({preventScroll:!0})},[]);let L=r.sort?e.sorts.find(u=>u.key===r.sort.by):void 0,P=r.group?e.groups.find(u=>u.key===r.group.by):void 0,M=I(L),m=e.natural?e.sorts.find(u=>u.key===e.natural.by):void 0,N=i==="filter"||i==="all"&&l.parts?.filter?R(p,o,e):[],w=u=>(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{children:"Sort by"}),(0,a.jsx)(c,{testId:`${y}-sort-default`,value:"",on:!r.sort,onPress:()=>(n({sort:void 0}),u()),children:m?`As declared (${E(m.label)})`:"As they were added"}),e.sorts.map(s=>(0,a.jsx)(c,{value:s.key,on:r.sort?.by===s.key,onPress:()=>(n({sort:{by:s.key,direction:r.sort?.direction??"asc"}}),u()),children:s.label},s.key)),r.sort?(0,a.jsxs)("div",{role:"group","aria-label":"Order","data-testid":`${y}-direction`,children:[(0,a.jsx)("p",{"aria-hidden":"true",children:"Order"}),["asc","desc"].map(s=>(0,a.jsx)(c,{testId:`${y}-direction-${s}`,value:s,on:r.sort.direction===s,onPress:()=>(n({sort:{by:r.sort.by,direction:s}}),u()),children:M[s]},s))]}):null]}),x=u=>(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{children:"Group by"}),(0,a.jsx)(c,{testId:`${y}-group-none`,value:"",on:!r.group,onPress:()=>(n({group:void 0}),u()),children:"Not grouped"}),e.groups.map(s=>(0,a.jsx)(c,{value:s.key,on:r.group?.by===s.key,onPress:()=>(n({group:{by:s.key}}),u()),children:s.label},s.key)),r.group&&P?.buckets?(0,a.jsxs)("div",{role:"group","aria-label":"How wide a group is","data-testid":`${y}-bucket`,children:[(0,a.jsx)("p",{"aria-hidden":"true",children:"Each group"}),H.map(s=>(0,a.jsx)(c,{testId:`${y}-bucket-${s}`,value:s,on:(r.group.bucket??"day")===s,onPress:()=>(n({group:{by:r.group.by,bucket:s}}),u()),children:`A ${s}`},s))]}):null]}),$=u=>(0,a.jsx)(z,{entries:N,has:t,testId:y,onToggle:s=>(d(s),u())}),b=l.parts??{sort:!0,group:!0,filter:!0};return(0,a.jsxs)("div",{ref:h,style:{display:"contents"},children:[(0,a.jsx)("style",{children:W}),i==="sort"?w(g):i==="group"?x(g):i==="filter"?$(g):(0,a.jsxs)(a.Fragment,{children:[b.sort?(0,a.jsx)("div",{role:"group","aria-label":"Sort",children:w(g)}):null,b.group?(0,a.jsx)("div",{role:"group","aria-label":"Group",children:x(g)}):null,b.filter?(0,a.jsx)("div",{role:"group","aria-label":"Filter",children:$(g)}):null]})]})}function c({value:l,on:i,onPress:p,testId:o,children:e}){return(0,a.jsx)("button",{type:"button",className:"graview-arrange-item",value:l,"data-value":l,"aria-pressed":i,onClick:p,...o?{"data-testid":o}:{},children:e})}function z({entries:l,has:i,testId:p,onToggle:o}){let[e,r]=(0,v.useState)(null);if(e)return(0,a.jsx)(B,{ask:e,testId:p,onDay:d=>o({key:e.key,value:`${e.op}:${d}`}),onCancel:()=>r(null)});let n=[...new Set(l.map(d=>d.group))];return(0,a.jsx)(a.Fragment,{children:n.map(d=>(0,a.jsxs)("div",{role:"group","aria-label":d,children:[(0,a.jsx)("p",{"aria-hidden":"true",children:d}),l.filter(t=>t.group===d).map(t=>(0,a.jsx)(c,{value:t.value,on:t.condition?i(t.condition):!1,onPress:()=>t.condition?o(t.condition):r(t.ask),children:t.label},t.value))]},d))})}function B({ask:l,testId:i,onDay:p,onCancel:o}){let[e,r]=(0,v.useState)(""),n=/^\d{4}-\d{2}-\d{2}$/.test(e)&&Number(e.slice(0,4))>=1e3,d=()=>{n&&p(e)};return(0,a.jsxs)("div",{role:"group","aria-label":`${l.label} ${l.op} which day`,"data-testid":`${i}-ask-day`,className:"graview-arrange-ask",children:[(0,a.jsx)("p",{"aria-hidden":"true",children:`${l.label} ${l.op}`}),(0,a.jsx)("input",{type:"date","data-testid":`${i}-day`,"aria-label":`${l.label} ${l.op} which day`,autoFocus:!0,value:e,onChange:t=>r(t.target.value),onKeyDown:t=>{t.key==="Enter"?(t.preventDefault(),d()):t.key==="Escape"&&(t.preventDefault(),t.stopPropagation(),t.nativeEvent.stopImmediatePropagation(),o())}}),(0,a.jsxs)("span",{children:[(0,a.jsx)("button",{type:"button","data-testid":`${i}-day-add`,disabled:!n,onClick:d,children:"Add"}),(0,a.jsx)("button",{type:"button",onClick:o,children:"Never mind"})]})]})}var W=`
1
+ import{c as E,d as I}from"./chunk.LHAAZQNQ.js";import"./chunk.PHY3AH3L.js";import"./chunk.QZWN46V6.js";import"./chunk.6LJ66MB7.js";import"./chunk.OYULDOQP.js";import{P as A,T as k}from"./chunk.VMEX2KZ4.js";import{a as F,b as S}from"./chunk.MRK6QJV5.js";import{b as f}from"./chunk.AJZBJBMO.js";var v=f(F(),1);var a=f(S(),1),C=40,O=60;function D(l,i,p){return l.allNodes().filter(o=>o.kind===i).map(o=>o[p])}function G(l){if(l.length<2)return[];let i=[...l].sort((n,d)=>n-d),p=i[i.length-1]-i[0];if(p<=0)return[];let o=Math.max(1,10**Math.floor(Math.log10(p/4))),e=p/4>=o*5?o*5:o,r=n=>Math.round(n/e)*e;return[...new Set([.2,.4,.6,.8].map(n=>r(i[Math.floor(n*(i.length-1))])))].filter(n=>n>0)}function T(l,i,p){let o=p.far??[],e=new Map,r=new Set(o);for(let t of i.allNodes())r.has(t.kind)&&e.set(t.id,A(l.tryDefinition(t.kind),t));let n=[...e.entries()].map(([t,g])=>({id:t,label:g}));return(n.length<=C?n:n.map(t=>({end:t,ties:i.out(t.id).length+i.in(t.id).length})).sort((t,g)=>g.ties-t.ties||t.end.label.localeCompare(g.end.label)).slice(0,C).map(t=>t.end)).sort((t,g)=>t.label.localeCompare(g.label))}function R(l,i,p){let o=[];for(let e of p.filters)if(e.about==="is")for(let r of e.options??[])o.push({value:`is:${r}`,label:r,group:e.label,condition:{key:"is",value:r}});else if(e.about==="edge"){o.push({value:`${e.key}:*`,label:"anything",group:e.label,condition:{key:e.key,value:"*"}}),o.push({value:`${e.key}:none`,label:"nothing",group:e.label,condition:{key:e.key,value:"none"}});for(let r of T(l,i,e))o.push({value:`${e.key}:${r.id}`,label:r.label,group:e.label,condition:{key:e.key,value:r.id}})}else if(e.type==="date")for(let r of["before","after","on"])o.push({value:`${e.key}:${r}`,label:`${r}\u2026`,group:e.label,ask:{key:e.key,op:r,label:e.label}});else if(e.type==="number"){let r=l.tryDefinition(p.kind),n=G(D(i,p.kind,e.key).filter(d=>typeof d=="number"));for(let d of["at-most","at-least"])for(let t of d==="at-most"?n:[...n].reverse())o.push({value:`${e.key}:${d}:${t}`,label:`${d==="at-most"?"at most":"at least"} ${k(r,e.key,t)}`,group:e.label,condition:{key:e.key,value:`${d}:${t}`}})}else if(e.type==="text"){let r=[...new Set(D(i,p.kind,e.key).filter(n=>typeof n=="string"&&n.length>0&&!n.includes(",")))].sort((n,d)=>n.localeCompare(d));if(r.length>=2&&r.length<=O)for(let n of r)o.push({value:`${e.key}:${n}`,label:n,group:e.label,condition:{key:e.key,value:n}})}else if(e.type==="boolean")o.push({value:`${e.key}:true`,label:"yes",group:e.label,condition:{key:e.key,value:"true"}}),o.push({value:`${e.key}:false`,label:"no",group:e.label,condition:{key:e.key,value:"false"}});else for(let r of e.options??[])o.push({value:`${e.key}:${r}`,label:k(l.tryDefinition(p.kind),e.key,r),group:e.label,condition:{key:e.key,value:r}});return o}var H=["day","week","month","year","decade"];function K(l){let{which:i,schema:p,graph:o,offers:e,arrangement:r,set:n,toggle:d,has:t,done:g}=l,y=l.testId,h=(0,v.useRef)(null);(0,v.useEffect)(()=>{let u=h.current?.closest("[data-graview-popover]");!u||document.activeElement!==u||(u.querySelector('[aria-pressed="true"]')??u.querySelector("button, input"))?.focus({preventScroll:!0})},[]);let L=r.sort?e.sorts.find(u=>u.key===r.sort.by):void 0,P=r.group?e.groups.find(u=>u.key===r.group.by):void 0,M=I(L),m=e.natural?e.sorts.find(u=>u.key===e.natural.by):void 0,N=i==="filter"||i==="all"&&l.parts?.filter?R(p,o,e):[],w=u=>(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{children:"Sort by"}),(0,a.jsx)(c,{testId:`${y}-sort-default`,value:"",on:!r.sort,onPress:()=>(n({sort:void 0}),u()),children:m?`As declared (${E(m.label)})`:"As they were added"}),e.sorts.map(s=>(0,a.jsx)(c,{value:s.key,on:r.sort?.by===s.key,onPress:()=>(n({sort:{by:s.key,direction:r.sort?.direction??"asc"}}),u()),children:s.label},s.key)),r.sort?(0,a.jsxs)("div",{role:"group","aria-label":"Order","data-testid":`${y}-direction`,children:[(0,a.jsx)("p",{"aria-hidden":"true",children:"Order"}),["asc","desc"].map(s=>(0,a.jsx)(c,{testId:`${y}-direction-${s}`,value:s,on:r.sort.direction===s,onPress:()=>(n({sort:{by:r.sort.by,direction:s}}),u()),children:M[s]},s))]}):null]}),x=u=>(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("p",{children:"Group by"}),(0,a.jsx)(c,{testId:`${y}-group-none`,value:"",on:!r.group,onPress:()=>(n({group:void 0}),u()),children:"Not grouped"}),e.groups.map(s=>(0,a.jsx)(c,{value:s.key,on:r.group?.by===s.key,onPress:()=>(n({group:{by:s.key}}),u()),children:s.label},s.key)),r.group&&P?.buckets?(0,a.jsxs)("div",{role:"group","aria-label":"How wide a group is","data-testid":`${y}-bucket`,children:[(0,a.jsx)("p",{"aria-hidden":"true",children:"Each group"}),H.map(s=>(0,a.jsx)(c,{testId:`${y}-bucket-${s}`,value:s,on:(r.group.bucket??"day")===s,onPress:()=>(n({group:{by:r.group.by,bucket:s}}),u()),children:`A ${s}`},s))]}):null]}),$=u=>(0,a.jsx)(z,{entries:N,has:t,testId:y,onToggle:s=>(d(s),u())}),b=l.parts??{sort:!0,group:!0,filter:!0};return(0,a.jsxs)("div",{ref:h,style:{display:"contents"},children:[(0,a.jsx)("style",{children:W}),i==="sort"?w(g):i==="group"?x(g):i==="filter"?$(g):(0,a.jsxs)(a.Fragment,{children:[b.sort?(0,a.jsx)("div",{role:"group","aria-label":"Sort",children:w(g)}):null,b.group?(0,a.jsx)("div",{role:"group","aria-label":"Group",children:x(g)}):null,b.filter?(0,a.jsx)("div",{role:"group","aria-label":"Filter",children:$(g)}):null]})]})}function c({value:l,on:i,onPress:p,testId:o,children:e}){return(0,a.jsx)("button",{type:"button",className:"graview-arrange-item",value:l,"data-value":l,"aria-pressed":i,onClick:p,...o?{"data-testid":o}:{},children:e})}function z({entries:l,has:i,testId:p,onToggle:o}){let[e,r]=(0,v.useState)(null);if(e)return(0,a.jsx)(B,{ask:e,testId:p,onDay:d=>o({key:e.key,value:`${e.op}:${d}`}),onCancel:()=>r(null)});let n=[...new Set(l.map(d=>d.group))];return(0,a.jsx)(a.Fragment,{children:n.map(d=>(0,a.jsxs)("div",{role:"group","aria-label":d,children:[(0,a.jsx)("p",{"aria-hidden":"true",children:d}),l.filter(t=>t.group===d).map(t=>(0,a.jsx)(c,{value:t.value,on:t.condition?i(t.condition):!1,onPress:()=>t.condition?o(t.condition):r(t.ask),children:t.label},t.value))]},d))})}function B({ask:l,testId:i,onDay:p,onCancel:o}){let[e,r]=(0,v.useState)(""),n=/^\d{4}-\d{2}-\d{2}$/.test(e)&&Number(e.slice(0,4))>=1e3,d=()=>{n&&p(e)};return(0,a.jsxs)("div",{role:"group","aria-label":`${l.label} ${l.op} which day`,"data-testid":`${i}-ask-day`,className:"graview-arrange-ask",children:[(0,a.jsx)("p",{"aria-hidden":"true",children:`${l.label} ${l.op}`}),(0,a.jsx)("input",{type:"date","data-testid":`${i}-day`,"aria-label":`${l.label} ${l.op} which day`,autoFocus:!0,value:e,onChange:t=>r(t.target.value),onKeyDown:t=>{t.key==="Enter"?(t.preventDefault(),d()):t.key==="Escape"&&(t.preventDefault(),t.stopPropagation(),t.nativeEvent.stopImmediatePropagation(),o())}}),(0,a.jsxs)("span",{children:[(0,a.jsx)("button",{type:"button","data-testid":`${i}-day-add`,disabled:!n,onClick:d,children:"Add"}),(0,a.jsx)("button",{type:"button",onClick:o,children:"Never mind"})]})]})}var W=`
2
2
  .graview-arrange-list{display:grid;align-content:start;width:min(300px,calc(100vw - 24px));height:auto;max-height:min(70vh,520px);overflow:auto;margin:0;padding:6px;border-radius:10px;border:1px solid var(--graview-edge);background:var(--graview-float);box-shadow:var(--graview-lift-high);color:var(--graview-ink);font-size:.875rem;line-height:1.3}
3
3
  .graview-arrange-list [role=group]{display:grid}
4
4
  .graview-arrange-list p{margin:8px 8px 2px;font-size:.6875rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--graview-ink-muted)}