graview 0.1.25 → 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.
- package/dist/preview/chunk.4JXWQO6Y.js +1 -0
- package/dist/preview/chunk.4R7LDCDO.js +1 -0
- package/dist/preview/chunk.4W24TPMR.js +1 -0
- package/dist/preview/{chunk.SSOTDXRS.js → chunk.5BN2ARQ2.js} +1 -1
- package/dist/preview/chunk.6LJ66MB7.js +1 -0
- package/dist/preview/chunk.6R4EI47C.js +1 -0
- package/dist/preview/{chunk.JIXW4WIO.js → chunk.7CO6VP6F.js} +1 -1
- package/dist/preview/chunk.7QTBDACG.js +1 -0
- package/dist/preview/chunk.7SVIRYBB.js +1 -0
- package/dist/preview/chunk.7THQFY52.js +1 -0
- package/dist/preview/chunk.AS35X6KA.js +1 -0
- package/dist/preview/{chunk.UOYH2DFX.js → chunk.ATLUMYAJ.js} +2 -2
- package/dist/preview/{chunk.6DU4XN2F.js → chunk.CW7BMVBG.js} +1 -1
- package/dist/preview/chunk.DG2UE7PJ.js +1 -0
- package/dist/preview/chunk.DG2WKNMX.js +1 -0
- package/dist/preview/chunk.DQ5OWYLQ.js +1 -0
- package/dist/preview/chunk.DY2FFBWF.js +1 -0
- package/dist/preview/chunk.E3SZ7T75.js +1 -0
- package/dist/preview/chunk.EVTZE2OZ.js +1 -0
- package/dist/preview/chunk.FS5K4AVA.js +8 -0
- package/dist/preview/chunk.FTBKJ5RZ.js +16 -0
- package/dist/preview/chunk.GHMICJIB.js +1 -0
- package/dist/preview/chunk.HO6JR7VY.js +1 -0
- package/dist/preview/{chunk.DEZEXD24.js → chunk.HPD3DSTP.js} +1 -1
- package/dist/preview/chunk.I5KD54S6.js +1 -0
- package/dist/preview/chunk.IXVSJJQH.js +20 -0
- package/dist/preview/chunk.IZDKEFPJ.js +1 -0
- package/dist/preview/chunk.J36GTQTV.js +1 -0
- package/dist/preview/chunk.KAKX5TZN.js +3 -0
- package/dist/preview/chunk.LHAAZQNQ.js +19 -0
- package/dist/preview/chunk.LQZ2VQWN.js +107 -0
- package/dist/preview/chunk.MHJJEGQO.js +1 -0
- package/dist/preview/chunk.MNPNW4BQ.js +1 -0
- package/dist/preview/chunk.NKIFVPS3.js +1 -0
- package/dist/preview/chunk.NQNQPPPM.js +1 -0
- package/dist/preview/{chunk.6UL2JUEH.js → chunk.OA5BVKJH.js} +1 -1
- package/dist/preview/chunk.OHGJ5BZ4.js +2 -0
- package/dist/preview/chunk.OYULDOQP.js +1 -0
- package/dist/preview/{chunk.PY42PBMB.js → chunk.PHY3AH3L.js} +1 -1
- package/dist/preview/chunk.Q7544RCB.js +1 -0
- package/dist/preview/{chunk.JCZH55RX.js → chunk.QZWN46V6.js} +1 -1
- package/dist/preview/chunk.RUC4HFVC.js +1 -0
- package/dist/preview/chunk.S5JWZIVE.js +1 -0
- package/dist/preview/chunk.SHDYLMZE.js +2 -0
- package/dist/preview/chunk.T2EZ5MTH.js +1 -0
- package/dist/preview/chunk.TMPV4HLQ.js +1 -0
- package/dist/preview/{chunk.HQX5FGYT.js → chunk.TX2GOL65.js} +2 -2
- package/dist/preview/{chunk.S24R4MRK.js → chunk.U5ZUXGWM.js} +3 -3
- package/dist/preview/chunk.UMMN5Z6V.js +1 -0
- package/dist/preview/chunk.UPGDSOBY.js +1 -0
- package/dist/preview/chunk.V57P4LIZ.js +1 -0
- package/dist/preview/{chunk.YZZGD5OY.js → chunk.VD6FJ6KJ.js} +1 -1
- package/dist/preview/{chunk.B57EIGTS.js → chunk.VFICMX5G.js} +1 -1
- package/dist/preview/chunk.VMD4PDYJ.js +1 -0
- package/dist/preview/chunk.VMEX2KZ4.js +8 -0
- package/dist/preview/chunk.XDHBV5K5.js +1 -0
- package/dist/preview/chunk.YO7UFBJP.js +1 -0
- package/dist/preview/chunk.YV2RTNPU.js +6 -0
- package/dist/preview/chunk.ZD5HGRPR.js +1 -0
- package/dist/preview/chunk.ZKM4P7US.js +1 -0
- package/dist/preview/chunk.ZMMMKTAG.js +1 -0
- package/dist/preview/chunk.ZNIJONZN.js +1 -0
- package/dist/preview/page.js +6 -6
- package/package.json +6 -6
- package/dist/preview/chunk.2AJMM7JG.js +0 -1
- package/dist/preview/chunk.2WFEFZAW.js +0 -1
- package/dist/preview/chunk.2YVXTTC2.js +0 -1
- package/dist/preview/chunk.6KJSFIO7.js +0 -1
- package/dist/preview/chunk.6OBXKKB5.js +0 -20
- package/dist/preview/chunk.6WFN4C46.js +0 -107
- package/dist/preview/chunk.7BAUPTMY.js +0 -1
- package/dist/preview/chunk.A4SJ7EEY.js +0 -1
- package/dist/preview/chunk.ACKTGTOT.js +0 -1
- package/dist/preview/chunk.BJ2Y5F66.js +0 -1
- package/dist/preview/chunk.BYUQOV3O.js +0 -1
- package/dist/preview/chunk.C5N4RTPF.js +0 -1
- package/dist/preview/chunk.CFL2B2Z5.js +0 -1
- package/dist/preview/chunk.DJ72CUS7.js +0 -1
- package/dist/preview/chunk.DSZ3I557.js +0 -2
- package/dist/preview/chunk.EA4BZKPG.js +0 -1
- package/dist/preview/chunk.EKZWX6NG.js +0 -1
- package/dist/preview/chunk.F26676IW.js +0 -1
- package/dist/preview/chunk.F2KDFGHR.js +0 -1
- package/dist/preview/chunk.FWV4XAZA.js +0 -1
- package/dist/preview/chunk.G3BOZHKR.js +0 -1
- package/dist/preview/chunk.H4LHHT56.js +0 -8
- package/dist/preview/chunk.I5ELK6JF.js +0 -1
- package/dist/preview/chunk.I6T3FDQS.js +0 -1
- package/dist/preview/chunk.IB6PGEU7.js +0 -1
- package/dist/preview/chunk.JEMQBV6K.js +0 -1
- package/dist/preview/chunk.JW3E4SAC.js +0 -1
- package/dist/preview/chunk.KUTTVYOB.js +0 -16
- package/dist/preview/chunk.LHFEOEYY.js +0 -1
- package/dist/preview/chunk.MJ67MK4R.js +0 -1
- package/dist/preview/chunk.ORJ3T4IW.js +0 -2
- package/dist/preview/chunk.Q5WEOX3Q.js +0 -1
- package/dist/preview/chunk.QOYC424P.js +0 -3
- package/dist/preview/chunk.R6F3YMRK.js +0 -6
- package/dist/preview/chunk.RAE4M3KQ.js +0 -8
- package/dist/preview/chunk.RUFAVEXB.js +0 -1
- package/dist/preview/chunk.RVEMN5WU.js +0 -1
- package/dist/preview/chunk.S56LSUHV.js +0 -1
- package/dist/preview/chunk.T6KID3WO.js +0 -1
- package/dist/preview/chunk.TAOT74FR.js +0 -1
- package/dist/preview/chunk.TTODVIXW.js +0 -1
- package/dist/preview/chunk.U6BWYBPM.js +0 -19
- package/dist/preview/chunk.US4KIJSW.js +0 -1
- package/dist/preview/chunk.WX5CJ7PI.js +0 -1
- package/dist/preview/chunk.WXO3XUNW.js +0 -1
- package/dist/preview/chunk.ZJVIH6IF.js +0 -1
- package/dist/preview/chunk.ZRVDIVYY.js +0 -1
- package/dist/preview/chunk.ZV7ZFH2S.js +0 -1
- /package/dist/preview/{chunk.WWRWXFYR.js → chunk.WVUJXDXZ.js} +0 -0
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import{a as hr,b as fr,c as yr}from"./chunk.TTODVIXW.js";import{a as ar,e as sr,f as dr,i as wn,j as lr,l as en,m as bn,n as cr,o as ur}from"./chunk.2YVXTTC2.js";import{a as or,b as Ue,c as pn,d as rr,f as xn,g as Xt,h as ao}from"./chunk.ZRVDIVYY.js";import{d as ir}from"./chunk.JCZH55RX.js";import{A as er,B as Jt,C as Ee,D as Et,E as xt,F as Qn,H as dt,I as yn,J as Gt,L as Ut,M as gn,N as Zn,O as tr,P as Pt,Q as Ct,R as Jn,V as eo,X as At,Y as to,aa as mn,b as zn,ba as Lt,c as Kn,ca as le,d as Gn,e as Zo,ea as It,f as Jo,g as fn,h as Yt,i as Rt,j as Ot,ja as nr,k as Un,l as Xn,m as zt,qa as no,ra as oo,sa as Nt,t as qn,u as pt,ua as ro,w as Kt,xa as io,y as ce,z as $e}from"./chunk.2WFEFZAW.js";import{H as Wo,J as _o,M as Vt,O as hn,P as Wt,Q as _t,Qb as Uo,Ra as Go,S as Yo,Tb as Xo,U as zo,Zb as qo,_b as Qo,fb as Mt,xb as Te,za as Ko}from"./chunk.RAE4M3KQ.js";import{a as He,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 mr(e){return!e||e<=1?1:Math.min(4,Math.ceil(Math.sqrt(e)))}function pr(e,t,n){if(t===n)return 0;let r=e.kinds,o=0;for(let[i,a]of[[t,n],[n,t]]){let d=e.tryDefinition(i);for(let c of Object.values(d?.edges??{}))(c.to==="*"?r:c.to).includes(a)&&(o+=1)}return o}var gr=(e,t)=>`${Math.floor(e/5)},${Math.floor(t/5)}`;function $i(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 so(e,t={}){let n=[...e.kinds],r=[...(t.order??[]).filter(d=>n.includes(d)),...n.filter(d=>!(t.order??[]).includes(d)).sort(vn)].filter((d,c,s)=>s.indexOf(d)===c),o=new Map,i=new Set,a=(d,c,s)=>{o.set(d,{col:c,row:s,side:mr(t.counts?.[d])}),i.add(gr(c,s))};for(let d of r){let c=e.tryDefinition(d)?.plot??t.plots?.[d];c&&a(d,c.col,c.row)}for(let d of r){if(o.has(d))continue;if(o.size===0){a(d,0,0);continue}let c,s=0;for(let h of[...o.keys()].sort(vn)){let g=pr(e,d,h);(g>s||g===s&&g>0&&c!==void 0&&vn(h,c)<0)&&(s=g,c=h)}let l=c?o.get(c):o.get(r.find(h=>o.has(h))),u;for(let h=1;!u&&h<64;h++)u=$i(l.col,l.row,h).find(g=>!i.has(gr(g.col,g.row)));a(d,u?.col??l.col+5*o.size,u?.row??l.row)}return o}function lo(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],d=n[i],c=[];for(let[s,l]of[[a,d],[d,a]]){let u=e.tryDefinition(s);for(let[h,g]of Object.entries(u?.edges??{}))(g.to==="*"?e.kinds:g.to).includes(l)&&c.push(h)}c.length>0&&r.push({from:a,to:d,edges:c})}return r}function co(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 Hi(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 xr(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 uo(e,t){let n=e.side+1,r=new Set(Hi(n).map(([c,s])=>`${c},${s}`)),o=e.side/n,i=[];for(let c=0;c<n;c++)for(let s=0;s<n;s++)r.has(`${s},${c}`)||i.push([s,c]);i.sort((c,s)=>c[0]+c[1]-(s[0]+s[1])||c[0]-s[0]);let a=t.slice(0,i.length);return{buildings:a.map((c,s)=>{let[l,u]=i[s];return{id:c,col:e.col+(l+.5)*o,row:e.row+(u+.5)*o,footprint:o*.62,height:.55+xr(c)*.7}}),rest:Math.max(0,t.length-a.length)}}var wr={width:1200,height:760,focusSize:{width:1200,height:420},relationSize:{width:240,height:140},contextSize:{width:300,height:104},gap:16,unit:16};var br=(e,t)=>e?`${e.edgeKind}|${e.direction}`:`raised|${t}`,Tt=(e,t,n)=>`${yn}${e}|${t}|${n}`;function Di(e,t){if(!Gt(e))return null;let[n="",r="",o="",i=""]=e.slice(yn.length).split("|"),a=t.definitions.find(x=>x.kind===n),d=_t(t,n),c=r==="raised"?null:(()=>{let x=a?.edges[r]??t.definitions.map(f=>f.edges[r]).find(Boolean);return((o==="in"?x?.inverse:x?.description)??Vt(r)).toLowerCase()})(),[s="",l=""]=i.split("="),u=s.split(":")[0],h=i===""||i==="kind"||i.startsWith("more")?null:`${Yo(a,u).toLowerCase()}: ${l==="none"?"none":l}`;return[i.startsWith("more")?`More ${d.toLowerCase()}`:d,[c,h].filter(Boolean).join(", ")].filter(Boolean).join(" \u2014 ")}function kn(e,t){let n=e.map(()=>0),r=e.map((a,d)=>({size:a,index:d})).sort((a,d)=>a.size-d.size||a.index-d.index),o=Math.max(t,e.length),i=e.length;for(let{size:a,index:d}of r){let c=Math.max(1,Math.floor(o/i));n[d]=Math.min(a,c),o-=n[d],i-=1}return n}function fo(e){return br(e.via,e.node.kind)}function Sn(e,t){let n=[],r=0;return e.forEach((o,i)=>{if(o<=0)return;if(n.length>0&&o<=r){for(let d=0;d<o;d++)n[n.length-1].push(i);r-=o;return}let a=o;for(;a>0;){let d=Math.min(t,a);n.push(Array.from({length:d},()=>i)),a-=d,r=t-d}}),n}function yo(e,t,n){let r=kn(e,t*n);for(;Sn(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 Fi(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 Bi=5,ji=(e,t)=>{for(let n=0;n<e.length;n++)if(e[n]!==t[n])return e[n]<t[n];return!1};function vr(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 d of Ko(n.schema,r).groups)if(d.key!==n.exclude)if(d.buckets)for(let c of["decade","year","month"])i.push({by:d.key,bucket:c});else i.push({by:d.key});let a;return i.forEach((d,c)=>{let l=ir(e,{group:d},o).groups;if(l.length<2||l.length>t)return;let h=l.filter(x=>x.key!=="").reduce((x,p)=>x+p.nodes.length,0)/e.length;if(h<.5||l.some(x=>x.nodes.length>e.length*.75))return;let g=[-Math.round(h*100),Math.abs(l.length-Bi),c];(!a||ji(g,a.score))&&(a={grouping:{by:d.by,...d.bucket?{bucket:d.bucket}:{},groups:l},score:g})}),a?.grouping}function go(e,t){let n=p=>({id:p.node.id,kind:p.node.kind,node:p.node,...p.via?{via:p.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 p of e){let f=br(p.via,p.node.kind),m=o.get(f);m?m.push(p):o.set(f,[p])}let i=[...o.entries()].map(([p,f])=>({key:p,run:f,via:f[0].via,kinds:[...new Set(f.map(m=>m.node.kind))],members:[],whole:!1,extra:0})),a=kn(i.map(p=>p.run.length),t.budget);i.forEach((p,f)=>p.whole=p.run.length<=a[f]);let d=i.filter(p=>!p.whole),c=i.filter(p=>p.whole).reduce((p,f)=>p+f.run.length,0),s=Math.max(d.length,t.budget-c);for(let p of d){p.members=Fi(p.run.map(m=>m.node),r,t.graph);let f=s-(d.length-1);p.kinds.length>1&&p.kinds.length<=f?p.byKind=!0:p.kinds.length===1&&(p.grouping=vr(p.members,f,{schema:t.schema,graph:t.graph,...p.via?{exclude:p.via.edgeKind}:{},...t.today?{today:t.today}:{}}))}let l=p=>p.byKind?p.kinds.length:p.grouping?p.grouping.groups.length:1;for(;d.reduce((p,f)=>p+l(f),0)>s;){let p=[...d].filter(f=>l(f)>1).sort((f,m)=>l(m)-l(f))[0];if(!p)break;p.grouping=void 0,p.byKind=!1}s-=d.reduce((p,f)=>p+l(f),0);let u=p=>p.byKind?p.kinds.some(f=>t.expanded.has(Tt(f,p.key,"kind"))):p.grouping?.groups.some(f=>t.expanded.has(Tt(p.kinds[0],p.key,ho(p.grouping,f.key)))),h=d.filter(p=>!p.grouping&&!p.byKind?!0:u(p)),g=kn(h.map(p=>p.members.length),Math.max(0,s));h.forEach((p,f)=>p.extra=s>0?g[f]:0);let x=[];for(let p of i){let{key:f,via:m}=p;if(p.whole){x.push(...p.run.map(n));continue}let b=w=>({id:w.id,kind:w.kind,node:w,...m?{via:m}:{}}),R=new Map(p.run.map((w,M)=>[w.node.id,M])),O=(w,M,C)=>{let B=[...w.slice(0,M)].sort((D,H)=>R.get(D.id)-R.get(H.id));x.push(...B.map(b));let A=w.slice(M);if(A.length===0)return;let $=A[0].kind;x.push({id:Tt($,f,C?`more:${C}`:"more"),kind:$,...m?{via:m}:{},aggregate:{kind:$,memberIds:A.map(D=>D.id),label:M>0?`${A.length} more ${t.plural($).toLowerCase()}`:`${A.length} ${t.plural($).toLowerCase()}`,opens:{in:"picture",focus:Ee($),within:C?{filter:C}:{}}}})},E=m&&t.focusId?`${m.edgeKind}:${t.focusId}`:void 0;if(p.byKind){let w=p.kinds.find(M=>t.expanded.has(Tt(M,f,"kind")));for(let M of p.kinds){let C=p.members.filter(B=>B.kind===M);if(M===w){let B=p.extra+1;C.length<=B?x.push(...C.map(b)):O(C,B-1,E);continue}x.push({id:Tt(M,f,"kind"),kind:M,...m?{via:m}:{},aggregate:{kind:M,memberIds:C.map(B=>B.id),label:t.plural(M),opens:{in:"place"}}})}continue}let S=p.grouping;if(!S){O(p.members,p.extra,E);continue}let j=p.kinds[0],k=S.groups.find(w=>t.expanded.has(Tt(j,f,ho(S,w.key))));for(let w of S.groups){if(w===k){let M=p.members.filter(B=>w.nodes.includes(B)),C=p.extra+1;if(M.length<=C)x.push(...M.map(b));else{let B=w.key!==""&&!w.key.includes(",")&&!S.bucket,A=[E,B?`${S.by}:${w.key}`:void 0].filter(Boolean).join(",")||void 0;O(M,C-1,A)}continue}x.push({id:Tt(j,f,ho(S,w.key)),kind:j,...m?{via:m}:{},aggregate:{kind:j,memberIds:p.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 ho=(e,t)=>`${e.by}${e.bucket?`:${e.bucket}`:""}=${t||"none"}`;function mo(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 kr=(e,t)=>ve(e.col+e.side/2,e.row+e.side/2,t);function po(e,t,n,r,o={},i={}){let a={};for(let L of e)a[L.kind]=L.count;let d=so(t,{...i.order?{order:i.order}:{},counts:a,...i.plots?{plots:i.plots}:{}}),c=o.left??0,s=r.width-c-(o.right??0),l=c+s/2,u=r.height*.53,h=co(d),g=[ve(h.minCol,h.minRow,1),ve(h.maxCol,h.minRow,1),ve(h.minCol,h.maxRow,1),ve(h.maxCol,h.maxRow,1)],x=Math.min(...g.map(L=>L.x)),p=Math.max(...g.map(L=>L.x)),f=Math.min(...g.map(L=>L.y)),m=Math.max(...g.map(L=>L.y)),b={x:Math.max(1,p-x),y:Math.max(.5,m-f)},R=Math.max(40,s-n.width*1.1),O=Math.max(24,r.height*.62-n.height*1.1),E=Math.max(18,Math.min(160,R/b.x,O/b.y)),S=i.scale??1,j=i.minHeight??0,k=i.avoid??[],w=0,M=(L,z,v=1,N={x:0,y:0})=>{let T=l-(x+p)/2*L+N.x+w,G=u-(f+m)/2*L+N.y,F={width:n.width*z,height:n.height*z},re=e.map(J=>kr(d.get(J.kind),L).y),ie=Math.max(...re),de=Math.min(...re);return e.map(J=>{let Ae=d.get(J.kind),Se=kr(Ae,L),et=ie===de?.5:(Se.y-de)/(ie-de),Ye=.85+et*.45,U=F.width*Ye,Le=Math.max(j,F.height*Ye),tt=Le+(J.marquee??0)+(J.opened>0?Math.max(J.openedMin??0,J.opened*v):0);return{id:J.id,x:T+Se.x-U/2,y:G+Se.y-Le/2,width:U,height:tt,depth:1-et*.65,plot:Ae}})},C=L=>L.some((z,v)=>L.some((N,T)=>T!==v&&mo(z,N)))||L.some(z=>k.some(v=>mo(z,v))),B=L=>{if(k.length===0)return[{x:0,y:0}];let z=Math.max(...k.map(T=>T.width))/2+L,v=Math.max(...k.map(T=>T.height))/2+L/2,N=[{x:0,y:0}];for(let T of[.5,.75,1,1.25]){let G=z*T,F=v*T;N.push({x:G,y:0},{x:-G,y:0},{x:0,y:F},{x:0,y:-F},{x:G,y:F},{x:-G,y:F},{x:G,y:-F},{x:-G,y:-F})}return N},A=r.width-(o.right??0),$=L=>L.reduce((z,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 z+v.width*v.height-N*T},0),D=(L,z,v)=>{let N,T;for(let G of B(L)){let F=M(L,z,v,G);if(C(F)){T??={placed:F,shift:G};continue}let re=$(F);(!N||re<N.off-.5)&&(N={placed:F,shift:G,off:re})}return N??T},H=E,Y=S,K=1,W=D(H,Y,K);for(;C(W.placed)&&Y>1.001;)Y=Math.max(1,Y-.05),W=D(H,Y,K);for(;C(W.placed)&&K>.3;)K=Math.max(.3,K-.1),W=D(H,Y,K);if(C(W.placed)||$(W.placed)>0){let L=C(W.placed)?void 0:{cell:H,settled:W,off:$(W.placed)};for(let z=.9;z>=.3;z-=.1){let v=E*z,N=D(v,Y,K);if(C(N.placed))continue;let T=$(N.placed);if((!L||T<L.off-.5)&&(L={cell:v,settled:N,off:T}),T===0)break}L&&(H=L.cell,W=L.settled)}for(let L=0;C(W.placed)&&L<80;L++)H*=1.06,W=D(H,Y,K);if(k.length===0){let L=Math.min(...W.placed.map(N=>N.x)),z=Math.max(...W.placed.map(N=>N.x+N.width)),v=z-L>A-c?0:L<c?c-L:z>A?A-z:0;if(v!==0){w=v;let N=M(H,Y,K,W.shift);C(N)?w=0:W={placed:N,shift:W.shift}}}i.zoom&&i.zoom!==1&&(H*=i.zoom,w*=i.zoom,W=D(H,Y,K));let ge=W.placed,me=l-(x+p)/2*H+W.shift.x+w,X=u-(f+m)/2*H+W.shift.y,oe={cell:H,originX:me,originY:X,pan:i.pan??{x:0,y:0},extent:{x:me+x*H,y:X+f*H,width:b.x*H,height:b.y*H},openedShare:K};return{placed:ge,frame:oe,map:d}}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 xo(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,d=i<0?"left":i>t?"right":a<0?"top":a>n?"bottom":null;if(!d)continue;let c=d==="left"||d==="right",s=c?Math.max(0,Math.min(n,a)):Math.max(0,Math.min(t,i)),l=(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,h=c?{x:l(i,t),y:u(a,n)}:{x:u(i,t),y:l(a,n)};r.push({id:o.id,kind:o.id.slice(5),side:d,along:s,by:h})}return r}function wo(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 Vi={rankOf:()=>{},parentOf:()=>{}};function Sr(e,t){if(t.size===0)return Vi;let n=e.kinds,r=new Map,o=(s,l)=>{s!==l&&((r.get(s)??r.set(s,new Set).get(s)).add(l),(r.get(l)??r.set(l,new Set).get(l)).add(s))};for(let s of n){let l=e.tryDefinition(s);if(l)for(let u of Object.values(l.edges??{})){let h=u.to==="*"?n:u.to;for(let g of h)o(s,g)}}let i=new Map,a=new Map,d=[...t].filter(s=>n.includes(s));for(let s of d)i.set(s,0);let c=0;for(;d.length>0;){c+=1;let s=[];for(let l of[...d].sort((u,h)=>n.indexOf(u)-n.indexOf(h)))for(let u of[...r.get(l)??[]].sort((h,g)=>n.indexOf(h)-n.indexOf(g)))i.has(u)||(i.set(u,c),c===2&&a.set(u,l),s.push(u));d=s}return{rankOf:s=>{let l=i.get(s);if(l!==0)return l===1?"primary":"secondary"},parentOf:s=>a.get(s)}}function Mr(e,t,n,r,o={}){if(n){let i=new Map;for(let a of e.allEdges()){if(r&&a.kind!==r)continue;let d=a.from===n.id?a.to:a.to===n.id?a.from:null;if(d===null||d===n.id)continue;let c=e.getNode(d);if(!c||i.has(d))continue;let s=a.from===n.id?"out":"in",l=s==="out"?n.kind:c.kind,u=Wi(t,l,a.kind,s);i.set(d,{node:c,via:{edgeKind:a.kind,direction:s,...u?{description:u}:{}}})}if(i.size>0){let a=d=>`${d.via.edgeKind}|${d.via.description??""}`;return[...i.values()].sort((d,c)=>(a(d)<a(c)?-1:a(d)>a(c)?1:0)||dt(d.node,c.node))}}if(n){let i=o[n.id]??[],a=new Set,d=[];for(let c of i){if(c===n.id||a.has(c))continue;let s=e.getNode(c);s&&(r&&r!=="judges"&&s.kind!==r||(a.add(c),d.push({node:s,via:{edgeKind:"judges",direction:"out",description:"what it finds wrong"}})))}if(d.length>0)return d.sort((c,s)=>dt(c.node,s.node))}return r?e.allNodes().filter(i=>i.kind===r).sort(dt).map(i=>({node:i})):[]}function Wi(e,t,n,r){let i=e.tryDefinition(t)?.edges?.[n];return r==="out"?i?.description:i?.inverse}function Rr(e,t,n){let r=new Map,o=[...t.values()].sort((s,l)=>s.plane-l.plane);for(let s of o)for(let l of s.aggregate?.memberIds??[])!t.has(l)&&!r.has(l)&&r.set(l,s.id);let i=s=>t.get(s)??t.get(r.get(s)??""),a=new Map,d=new Map,c=new Map;for(let s of e.allEdges()){let l=i(s.from),u=i(s.to);if(!l||!u||l.id===u.id&&!(n.overview&&l.aggregate&&l.plane===2))continue;let h=`${s.kind}:${l.id}:${u.id}`,g=a.get(h);if(g){let x=`${s.from}
|
|
2
|
-
${s.to}`,p=d.get(h);if(p.has(x))continue;if(p.add(x),c.get(h).push({from:s.from,to:s.to}),g.single){let{single:f,...m}=g;a.set(h,m)}continue}d.set(h,new Set([`${s.from}
|
|
3
|
-
${s.to}`])),c.set(h,[{from:s.from,to:s.to}]),a.set(h,{id:h,kind:s.kind,from:l.id,to:u.id,edges:[{from:s.from,to:s.to}],single:{from:s.from,to:s.to},...l.id===u.id?{loop:!0}:{},x1:l.x+l.width/2,y1:l.y+l.height/2,x2:u.x+u.width/2,y2:u.y+u.height/2})}return[...a.values()].map(s=>({...s,edges:c.get(s.id)})).sort(dt)}var Pr=.85,Or=60,Rn=160,Cr=2,Yi=240,zi=300,Ki=52,Er=60;function Gi(e,t,n,r,o,i=Pr){let a=e*t.width+Math.max(0,e-1)*n,d=Math.max(n,(r-a)/2);return Array.from({length:e},(c,s)=>({x:d+s*(t.width+n),y:o,depth:i}))}function Ui(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},(d,c)=>({x:a+c*(t.width+n),y:o}))}function On(e,t,n,r={}){let o={...wr,...r},i=Math.max(8,o.unit??16)/16,a=o.inset?.left??0,d=o.width-a-(o.inset?.right??0),c=[],s=new Map,l=y=>n.past===!0||Wo(t.tryDefinition(y.kind),y,o.today),u=new Set(r.hiddenKinds??[]),h=y=>!u.has(y.kind),g=n.focusId?xt(n.focusId).filter(y=>t.tryDefinition(y)!==void 0).filter(y=>!u.has(y)):[];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&&!h(x)&&(n={...n,focusId:null},g=[]);let p=g.length>0?[...e.allNodes()].filter(y=>g.includes(y.kind)).sort(dt):[],f=p.filter(h).filter(l),m=p.length-f.length,b=n.focusId&&g.length===0?e.getNode(n.focusId):void 0,R=n.zoom===!0&&!n.overview&&n.focusId!==null,O=Math.max(56,o.height*.062),E=Math.min(o.height*.895,o.height-O),S=R?b!==void 0?{focusY:o.height*.03,focusH:o.height*.58,relationY:o.height*.645,relationH:o.height*.2,contextY:E,contextH:O}:{focusY:o.height*.03,focusH:o.height*.71,relationY:o.height*.765,relationH:o.height*.1,contextY:E,contextH:O}: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 y=o.height,I=y*.04,_=Math.max(y*.42,Math.min(y*.56,300)),Q=I+_+y*.06;return{focusY:I,focusH:_,relationY:Q,relationH:Math.max(y*.12,y*.878-y*.068-Q),contextY:y*.878,contextH:y*.092}})(),j=y=>Math.min(o.gap*y,Math.round(d*.1)),k=R?Math.min(880,d-j(5)):Math.min(700,d-j(6)),w=R?d-j(5):Math.min(o.focusSize.width,d-j(6)),M=(y,I,_)=>({width:y===0?I:Math.min(I,(d-o.gap*(y+1))/y),height:_}),C=(y,I,_)=>{let Q=M(y,I,_),we=Math.min(I,Rn*i,d-o.gap*2);return Q.width>=we?Q:{width:we,height:_}},B=y=>Math.max(1,Math.floor((d-o.gap)/(Math.min(y,Rn*i,d-o.gap*2)+o.gap))),A=new Set(n.expanded),$=n.overview?[]:Mr(e,t,b,n.relation,o.judged).filter(y=>h(y.node)).filter(y=>l(y.node)),D=$.length>0?S.focusH:S.contextY-S.focusY-o.gap*2,H=w,Y=o.height,K=Math.min(d*.5/H,o.height*.48/Y),W=H*K,ge=Y*K,me=new Set(r.plainGroups??[]),X=n.overview&&!b&&g.length>0&&n.focusId!==null,oe=X&&g.length>0&&g.every(y=>me.has(y));if(X)for(let y of g)oe?A.add(ce(y)):A.delete(ce(y));let L=X&&!oe&&g.length===1?g[0]:void 0,z=L?r.screens?.[L]??[]:[],v=z.find(y=>y.as===n.within?.view)??z[0],N=L!==void 0&&v!==void 0,T;n.overview&&(b||g.length>0)&&n.focusId&&!oe?(T={x:a+(d-W)/2,y:o.height*.53-ge/2,width:W,height:ge},Zt({id:n.focusId,kind:b?b.kind:g[0],plane:0,x:T.x,y:T.y,width:W,height:ge,natural:{width:H,height:Y},...b?{}:{aggregate:{kind:g.join("+"),memberIds:f.map(y=>y.id),label:r.plurals?.[n.focusId]??g.map(y=>Wt(t,y)).join(" and "),...m>0?{retired:m}:{}}}})):n.overview||(b?Zt({id:b.id,kind:b.kind,plane:0,x:a+(d-k)/2,y:S.focusY,width:k,height:D}):g.length>0&&n.focusId&&Zt({id:n.focusId,kind:g[0],plane:0,x:a+(d-w)/2,y:S.focusY,width:w,height:D,aggregate:{kind:g.join("+"),memberIds:f.map(y=>y.id),label:r.plurals?.[n.focusId]??g.map(y=>Wt(t,y)).join(" and "),...m>0?{retired:m}:{}}}));let G=26,F=52,re=22,ie=Math.round(o.relationSize.width*.75),de=Math.max(1,Math.floor((d-o.gap)/(ie+o.gap))),J=o.unit/16,Ae=Math.max(2,Math.floor((S.relationH+o.gap)/(G*J+o.gap))),Se=$.length>de*Ae,et={schema:t,graph:e,focusId:b?.id,expanded:A,...o.relevance?{relevance:o.relevance}:{},...n.selection?{selection:n.selection}:{},plural:y=>Wt(t,y),...o.today?{today:o.today}:{}},Ye=Se?Math.max(o.gap,re*J):o.gap,U,Le;if(!Se)U=$.map(y=>({id:y.node.id,kind:y.node.kind,node:y.node,...y.via?{via:y.via}:{}})),Le=Array.from({length:Math.max(1,Math.ceil(U.length/de))},(y,I)=>Array.from({length:Math.min(de,U.length-I*de)},(_,Q)=>I*de+Q));else{let y=Math.max(1,Math.floor((S.relationH+Ye)/(F*J+Ye))),I=new Map;for(let fe of $){let pe=fo(fe),Ge=I.get(pe);Ge?Ge.push(fe):I.set(pe,[fe])}let _=yo([...I.values()].map(fe=>fe.length),de,y),Q=[...I.values()].map((fe,pe)=>go(fe,{...et,budget:_[pe]}));U=Q.flat();let we=Q.map((fe,pe)=>Q.slice(0,pe).reduce((Ge,Bt)=>Ge+Bt.length,0)),st=Q.map(()=>0);Le=Sn(Q.map(fe=>fe.length),de).map(fe=>fe.map(pe=>we[pe]+st[pe]++))}let tt=Le.length,nt=tt===1?S.relationH:(S.relationH-Ye*(tt-1))/tt,Fe=M(Math.max(...Le.map(y=>y.length),1),U.length<=2?Math.round(o.relationSize.width*1.35):o.relationSize.width,nt),Je=[];Le.forEach((y,I)=>{let _=Ui(y.length,Fe,o.gap,d,S.relationY+I*(nt+Ye));y.forEach((Q,we)=>Je[Q]={..._[we],x:_[we].x+a})}),U.forEach((y,I)=>{let _=Je[I];Zt({id:y.id,kind:y.kind,plane:1,x:_.x,y:_.y,width:Fe.width,height:Fe.height,...y.via?{via:y.via}:{},...y.aggregate?{aggregate:y.aggregate}:{},...Se&&!y.aggregate?{compact:!0}:{}})});let ht=new Set(s.keys());for(let y of f)ht.add(y.id);let Ne=new Map;for(let y of e.allNodes()){let I=Ne.get(y.kind);I?I.push(y):Ne.set(y.kind,[y])}let ft=new Set(g.length>0?g:b?[b.kind]:[]),yt=[];for(let y of t.kinds){if(u.has(y))continue;let I=Ne.get(y)??[],_=I.filter(l);yt.push({id:ce(y),kind:y,members:_.sort(dt),retired:I.length-_.length,...ft.has(y)?{focused:!0}:{}})}for(let y of yt)y.kind===n.relation&&(y.raised=!0);yt.sort(dt);let ze=Sr(t,ft),ot=!n.overview&&t.kinds.some(y=>ze.rankOf(y)==="primary"),Ie=[];for(let y of yt)if(!n.overview&&A.has(y.id)&&y.members.length>0)for(let I of y.members)Ie.push({id:I.id,kind:I.kind});else{let I=ot?ze.rankOf(y.kind):void 0,_=I==="secondary"?ze.parentOf(y.kind):void 0;Ie.push({id:y.id,kind:y.kind,...y.raised?{raised:!0}:{},...y.focused?{focused:!0}:{},...n.overview&&A.has(y.id)?{opened:!0}:{},...I?{rank:I}:{},..._&&!A.has(ce(_))?{nestedUnder:ce(_)}:{},aggregate:{kind:y.kind,memberIds:y.members.map(Q=>Q.id),label:r.plurals?.[y.kind]??Wt(t,y.kind),...y.retired>0?{retired:y.retired}:{}}})}let kt=2;if(Ie.length<=B((R?240:o.contextSize.width)*i))for(let y of Ie)delete y.nestedUnder;let xe=new Map;for(let y of Ie){if(y.nestedUnder===void 0)continue;let I=xe.get(y.nestedUnder)??0;I>=kt?delete y.nestedUnder:xe.set(y.nestedUnder,I+1)}let rt=Ie.filter(y=>y.nestedUnder!==void 0),Me=Ie.filter(y=>y.nestedUnder===void 0),gt=B((R?240:o.contextSize.width)*i),mt=!n.overview&&Me.length>gt,St=Math.max(0,gt-1),P=y=>y.focused?0:y.raised?1:2,ae=new Set([...Me].map((y,I)=>({item:y,at:I})).sort((y,I)=>P(y.item)-P(I.item)||y.at-I.at).slice(0,St).map(({item:y})=>y.id)),he=new Set(mt?Me.filter(y=>!ae.has(y.id)).map(y=>y.id):[]),Re=rt.filter(y=>!he.has(y.nestedUnder)),it=rt.filter(y=>he.has(y.nestedUnder)),at=mt?[...Me.filter(y=>ae.has(y.id)),{id:er,kind:"",beyond:[...Me.filter(y=>he.has(y.id)),...it].map(y=>y.kind)}]:Me,Ke=n.overview?{width:Math.min(220,d/6.5),height:Math.min(92,o.height*.125)}:C(at.length,(R?240:o.contextSize.width)*i,S.contextH),Be=n.overview?po(at.map(y=>({id:y.id,kind:y.kind,count:y.aggregate?.memberIds.length??0,opened:A.has(y.id)?Ct(Pt(y.aggregate?.memberIds.length??0))*i:0,openedMin:A.has(y.id)?Ct(Math.min(Zn,Pt(y.aggregate?.memberIds.length??0)))*i:0,...(r.screens?.[y.kind]?.length??0)>0?{marquee:Ut((r.screens?.[y.kind]??[]).map(I=>I.title),Rn*i,r.nameWidth)*i}:{}})),t,Ke,{width:o.width,height:o.height},o.inset??{},{...o.cityOrder?{order:o.cityOrder}:{},...o.plots?{plots:o.plots}:{},scale:i,minHeight:Or*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(Be?.placed.map(y=>[y.id,y.plot])??[]),Ft=Be?Be.placed.map(({x:y,y:I,depth:_,width:Q,height:we})=>({x:y,y:I,depth:_,width:Q,height:we})):Gi(at.length,Ke,o.gap,d,S.contextY,R?.97:Pr).map(y=>({...y,x:y.x+a})),Ci=.74,sn=.8,Ai=52*i,Li=86*i,jn=(y,I)=>Math.min(1,y+(1-y)*I),Vn=new Map;at.forEach((y,I)=>{let _=Ft[I],Q=_.width??Ke.width,we=_.height??Ke.height,st=y.rank==="secondary"?Ci:1,fe=Math.max(Math.min(Q,Rn*i),Q*st),pe=Math.max(Or*i,we*st);Vn.set(y.id,{x:_.x+(Q-fe)/2,y:_.y+(we-pe),depth:y.rank==="secondary"?jn(_.depth,.5):_.depth,width:fe,height:pe})});let dn=[],ln=Ft[Ft.length-1],Wn=new Map;for(let y of Re)Wn.set(y.nestedUnder,(Wn.get(y.nestedUnder)??0)+1);let $o=new Map;for(let y of Re){let I=Vn.get(y.nestedUnder);if(I){let _=Wn.get(y.nestedUnder)??1,Q=$o.get(y.nestedUnder)??0;$o.set(y.nestedUnder,Q+1);let we=.98,st=Ke.width*sn,fe=Math.max(Li,Math.min(st,I.width/(we*(_-1)+1))),pe=Math.max(Ai,Ke.height*sn*(fe/st)),Ge=fe*we,Bt=(_-1)*Ge+fe;dn.push({...y,x:I.x+(I.width-Bt)/2+Q*Ge,y:Math.max(0,I.y-pe+Math.min(pe*.5,16)),width:fe,height:pe,depth:jn(I.depth,.8)})}else if(ln){let _=Ke.width*sn,Q=Ke.height*sn;dn.push({...y,x:ln.x,y:ln.y,width:_,height:Q,depth:jn(ln.depth??1,.8)})}}for(let y of at)dn.push({...y,...Vn.get(y.id)});if(dn.forEach(y=>{Zt({id:y.id,kind:y.kind,plane:2,x:y.x,y:y.y,width:y.width,height:y.height,...y.aggregate?{aggregate:y.aggregate}:{},...y.raised?{raised:!0}:{},...y.focused?{focused:!0}:{},...y.opened?{opened:!0}:{},...y.opened?{openedRows:Math.max(1,Math.floor((Math.max(Ct(Math.min(Zn,Pt(y.aggregate?.memberIds.length??0))),Ct(Pt(y.aggregate?.memberIds.length??0))*(Be?.frame.openedShare??1))-tr)/gn))}:{},...y.rank?{rank:y.rank}:{},...y.nestedUnder?{nestedUnder:y.nestedUnder}:{},...y.beyond?{beyond:y.beyond}:{},...an.has(y.id)?{plot:an.get(y.id)}:{},depth:y.depth})}),N&&Be&&T&&n.focusId){let y=Be.frame,I=Be.map.get(L),_=v?.across?Be.map.get(v.across):void 0;if(I){let we=(Z=>{let Pe=ve(Z.col,Z.row,y.cell),Oe=ve(Z.col+Z.side/2,Z.row+Z.side/2,y.cell);return{top:{x:y.originX+Pe.x,y:y.originY+Pe.y},center:{x:y.originX+Oe.x,y:y.originY+Oe.y}}})(I),st=we.center.x,fe=we.top.y+y.cell*.1,pe=o.screenHeight!==void 0&&o.screenHeight>0?Math.min(Y,Math.max(Yi,Math.round(o.screenHeight))):Y,Ge=pe/H,Bt=Math.max(1,(r.cityZoom??1)/1.5),Ii=d*.78*Bt,Ho=o.height*.72*Bt,_n=Math.min(zi*i,d*.5),cn=Math.max(_n,Math.min(Ii,I.side*y.cell*2.4));cn*Ge>Ho&&(cn=Ho/Ge);let Ni=[...s.values()].filter(Z=>Z.plane===2&&Z.id!==ce(L)),Do=Z=>{let Pe=Z*Ge,Oe=fe-Pe;return{x:st-Z/2,y:Oe,width:Z,height:Pe}},jt=Do(cn),Ti=Z=>Ni.some(Pe=>{let Oe={x:Pe.x-(n.pan?.x??0)-Er*i,y:Pe.y-(n.pan?.y??0),width:Pe.width+Er*i*2,height:Pe.height+Ki*i};return Z.x<Oe.x+Oe.width&&Oe.x<Z.x+Z.width&&Z.y<Oe.y+Oe.height&&Oe.y<Z.y+Z.height});for(let Z=cn;Ti(jt)&&Z>_n+1;Z=Math.max(_n,Z*.92))jt=Do(Z);let un=c.findIndex(Z=>Z.id===n.focusId);if(un!==-1){let Z={x:jt.x,y:jt.y},Pe=n.pins[c[un].id],Oe=Pe?{x:Pe.x-Z.x,y:Pe.y-Z.y}:{x:0,y:0},Fo=Math.hypot(Oe.x,Oe.y),Bo=Cr*y.cell,jo=Fo>Bo?Bo/Fo:1,Vo={x:Z.x+Oe.x*jo,y:Z.y+Oe.y*jo},Yn={...c[un],x:Vo.x+(n.pan?.x??0),y:Vo.y+(n.pan?.y??0),width:jt.width,height:jt.height,natural:{width:H,height:pe},screenOf:L,...Pe?{pinned:!0}:{}};c[un]=Yn,s.set(Yn.id,Yn)}}}return{nodes:c,connectors:Rr(e,s,n),width:o.width,height:o.height,...Be?{city:Be.frame}:{}};function Zt(y){let I=n.pins[y.id],_=I?{...y,x:I.x,y:I.y,pinned:!0}:{...y,pinned:!1},Q=n.pan?{..._,x:_.x+n.pan.x,y:_.y+n.pan.y}:_;c.push(Q),s.set(Q.id,Q)}}function bo(e,t,n){let r=e.nodes.find(d=>d.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(d=>d.id===t?o:d),connectors:e.connectors.map(d=>d.from===t?{...d,x1:i,y1:a}:d.to===t?{...d,x2:i,y2:a}:d)}}function vo(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 ye=(e,t,n)=>e+(t-e)*n;function Ar(e){return{x:e.x+e.width/2,y:e.y+e.height/2}}var Lr=new WeakMap;function Xi(e){let t=Lr.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},Lr.set(e,t),t}var Ir=new WeakMap;function Nr(e,t){let n=Ir.get(t);if(n||Ir.set(t,n=new WeakMap),n.has(e))return n.get(e);let r=qi(e,t);return n.set(e,r),r}function qi(e,t){let{byId:n,groupsOf:r}=Xi(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(Et(e.id)||$e(e.id)!==null){let a=(e.aggregate?.memberIds??[]).map(l=>n.get(l)).filter(l=>l!==void 0);if(a.length===0)return null;let d=a.map(Ar),c=d.reduce((l,u)=>l+u.x,0)/d.length,s=d.reduce((l,u)=>l+u.y,0)/d.length;return{...e,x:c-e.width/2,y:s-e.height/2}}let o=r.get(e.id)?.find(a=>a.id===ce(e.kind)||a.id===Ee(e.kind));if(!o)return null;let i=Ar(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(l=>[l.id,l])),i=new Map(t.nodes.map(l=>[l.id,l])),a=[];for(let[l,u]of o){let h=i.get(l);if(h){a.push(ko(u,h,r,1));continue}let g=Nr(u,t)??u;a.push(ko(u,g,r,1-r))}for(let[l,u]of i){if(o.has(l))continue;let h=Nr(u,e)??u;a.push(ko(h,u,r,r))}let d=new Map(e.connectors.map(l=>[l.id,l])),c=new Map(t.connectors.map(l=>[l.id,l])),s=[];for(let[l,u]of d){let h=c.get(l);s.push(h?{...Qi(u,h,r),opacity:1}:{...u,opacity:1-r})}for(let[l,u]of c)d.has(l)||s.push({...u,opacity:r});return{nodes:a.filter(l=>l.opacity>0).sort((l,u)=>l.id<u.id?-1:l.id>u.id?1:0),connectors:s.filter(l=>l.opacity>0).sort((l,u)=>l.id<u.id?-1:l.id>u.id?1:0),width:ye(e.width,t.width,r),height:ye(e.height,t.height,r),t:r,...Tr(e.city,t.city,r)?{city:Tr(e.city,t.city,r)}:{}}}function Tr(e,t,n){return e?t?{cell:ye(e.cell,t.cell,n),originX:ye(e.originX,t.originX,n),originY:ye(e.originY,t.originY,n),pan:{x:ye(e.pan.x,t.pan.x,n),y:ye(e.pan.y,t.pan.y,n)},extent:{x:ye(e.extent.x,t.extent.x,n),y:ye(e.extent.y,t.extent.y,n),width:ye(e.extent.width,t.extent.width,n),height:ye(e.extent.height,t.extent.height,n)}}:e:t}function ko(e,t,n,r){return{id:t.id,kind:t.kind,plane:ye(e.plane,t.plane,n),x:ye(e.x,t.x,n),y:ye(e.y,t.y,n),width:ye(e.width,t.width,n),height:ye(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:ye(e.depth??1,t.depth,n)},...t.natural?{natural:t.natural}:{}}}function Qi(e,t,n){return{...t,x1:ye(e.x1,t.x1,n),y1:ye(e.y1,t.y1,n),x2:ye(e.x2,t.x2,n),y2:ye(e.y2,t.y2,n)}}function En(e){let t=Math.max(0,Math.min(1,e));return t<.5?4*t*t*t:1-(-2*t+2)**3/2}function Zi(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 d=Math.min(i.y,a.y),c=Math.max(i.y,a.y);t<d||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 Ji(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 ea(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 ta(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],d=i.x*a.y-a.x*i.y;t+=d,n+=(i.x+a.x)*d,r+=(i.y+a.y)*d}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 na(e,t){let{room:n,height:r,size:o,floor:i,measure:a=Jn,lines:d=2}=t,c=(p,f)=>p.every(m=>a(m,f)<=n)&&p.length*f*1.15<=r;if(c([e],o))return{lines:[e],fontSize:o,whole:!0};let s=e.split(/\s+/);if(d>1&&s.length>1){let p=1,f=1/0,m=0;for(let R=0;R<s.length-1;R+=1){m+=s[R].length+1;let O=Math.abs(m-e.length/2);O<f&&(f=O,p=R+1)}let b=[s.slice(0,p).join(" "),s.slice(p).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 p=o;p>=i;p-=o*.06)if(c([e],p))return{lines:[e],fontSize:p,whole:!0};let l=a(e,i)/Math.max(1,e.length),u=Math.floor(n/l)-1;if(u<4||i*1.15>r)return null;let h=e.slice(0,u),g=h.lastIndexOf(" ");return{lines:[`${g>3?h.slice(0,g):h}\u2026`],fontSize:i,whole:!1}}var oa=(e,t)=>e.x0<t.x1&&t.x0<e.x1&&e.y0<t.y1&&t.y0<e.y1;var q=ee(He(),1);var De=ee(He(),1);var ra=520;function ia(){return typeof window>"u"||!window.matchMedia?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches}function $r(e,t={}){let n=t.duration??ra,r=(t.enabled??!0)&&!ia(),o=(0,De.useRef)(e),[i,a]=(0,De.useState)(()=>$t(e,e,1)),d=(0,De.useRef)(i),c=(0,De.useRef)(null),s=(0,De.useRef)(null);return(0,De.useEffect)(()=>{if(!r||typeof requestAnimationFrame>"u"){o.current=e;let f=$t(e,e,1);if(d.current=f,a(f),typeof requestAnimationFrame>"u")return;let m=requestAnimationFrame(()=>{let b=$t(e,e,1);d.current=b,a(b)});return()=>cancelAnimationFrame(m)}let l=performance.now(),h=s.current!==null&&d.current.t<1&&l-s.current<n?s.current:l;s.current=h;let g=En(Math.min(1,(l-h)/n)),x=o.current,p=f=>{let m=Math.min(1,(f-h)/n),b=g>=1?1:(En(m)-g)/(1-g),R=$t(x,e,Math.max(0,b));d.current=R,a(R),m<1?c.current=requestAnimationFrame(p):(s.current=null,o.current=e,c.current=requestAnimationFrame(()=>{let O=$t(e,e,1);d.current=O,a(O),c.current=null}))};return c.current=requestAnimationFrame(p),()=>{c.current!==null&&cancelAnimationFrame(c.current);let f=d.current;o.current={...e,...f.city?{city:f.city}:{},nodes:f.nodes.map(m=>({...m,plane:Math.round(m.plane)})),connectors:f.connectors}}},[e,n,r]),i}function Hr(e=1100){let{store:t}=le(),[n,r]=(0,De.useState)(()=>new Set);return(0,De.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 aa={marks:new Map,acts:[]};function Dr(e=4e3){let{store:t}=le(),[n,r]=(0,De.useState)(aa);return(0,De.useEffect)(()=>{let o=null,i=t.subscribe((a,d)=>{r(c=>{let s=new Map(c.marks),l=[...c.acts];for(let u of d){if(u.undoes!==void 0){let x=l.find(f=>f.batch===u.undoes||f.wrote.length>0),p=l.filter(f=>u.writes.some(m=>f.wrote.includes(m)));for(let f of p.length>0?p:x?[x]:[]){for(let m of f.wrote)s.delete(m);l=l.filter(m=>m.batch!==f.batch)}continue}if(u.author.kind!=="agent")continue;let h=u.author.id??"the seat";for(let x of u.writes)s.set(x,h);l.find(x=>x.batch===u.batch)?l=l.map(x=>x.batch===u.batch?{...x,wrote:[...new Set([...x.wrote,...u.writes])]}:x):l=[{batch:u.batch,who:h,intent:u.batchIntent??u.intent,at:u.at,wrote:[...u.writes]},...l].slice(0,12)}return s.size===c.marks.size&&l===c.acts&&s.size===0?c:{marks:s,acts:l}}),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 Ht=ee(be(),1),Xe=16;function Fr({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,d=a?.getBoundingClientRect()??null,c=[];for(let[l,u]of e){let h=null;if(a&&d&&typeof CSS<"u"){let f=a.querySelector(`[data-graview-pick="${CSS.escape(l)}"]`)?.getBoundingClientRect();f&&f.width>0&&f.height>0&&(h={x:f.left-d.left,y:f.top-d.top,width:f.width,height:f.height})}if(h??=n(l),!h)continue;let g=Math.min(Math.max(h.x+h.width-Xe/2,Xe/2),o-Xe/2),x=Math.min(Math.max(h.y-Xe/4,Xe/2),i-Xe/2);c.push({id:l,who:u,x:g,y:x})}let s=[];for(let l of t){let u=n(l.id);u&&s.push({...l,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&&s.length===0?null:(0,Ht.jsxs)("div",{className:"graview-seat-marks","data-testid":"seat-marks","data-graview-seat-marks":c.length,children:[c.map(({id:l,who:u,x:h,y:g})=>(0,Ht.jsx)("span",{className:"graview-seat-mark","data-testid":"seat-mark","data-graview-seat-mark":l,"data-graview-seat-who":u,title:`${u} just changed this`,"aria-hidden":"true",style:{left:h,top:g,"--graview-hue":Mt(u)},children:"\u25C6"},l)),s.map(l=>(0,Ht.jsxs)("span",{className:"graview-seat-asking","data-testid":"seat-question","data-graview-seat-asking":l.id,title:l.asks,style:{left:l.x,top:l.y},children:[(0,Ht.jsx)("span",{"aria-hidden":"true",children:"?"}),(0,Ht.jsx)("span",{className:"graview-seat-asking-said",children:l.asks})]},`asking:${l.id}`))]})}var lt=ee(He(),1);var ke=ee(be(),1);function sa(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 An=e=>e.map(t=>`${t.x.toFixed(1)},${t.y.toFixed(1)}`).join(" ");function Br({frame:e,width:t,height:n,pan:r,brand:o,pinned:i,swallowed:a,onFocus:d}){let{selection:c,store:s,emphasis:l}=le(),u=wn(),h=e.city,g=e.nodes.filter(k=>k.plot!==void 0&&Math.round(k.plane)===2),x=h?.cell??0,p=(0,lt.useRef)(d);p.current=d;let f=(0,lt.useCallback)(k=>!p.current||a?.current?!1:(p.current(k),!0),[a]),m=`${x}|${g.map(k=>`${k.id}:${k.plot.col},${k.plot.row},${k.plot.side}`).join(";")}`,b=(0,lt.useMemo)(()=>{if(!h)return[];let k={cell:x,originX:0,originY:0},w=new Map;for(let M of g){let C=$e(M.id);C!==null&&M.plot&&w.set(C,M.plot)}return lo(s.schema,w).map(M=>({...M,d:ha(w.get(M.from),w.get(M.to),k,{x:0,y:0}).map((C,B)=>`${B===0?"M":"L"} ${C.x.toFixed(1)} ${C.y.toFixed(1)}`).join(" ")}))},[m,s.schema]),R=(0,lt.useRef)(new Map),O=new Map;for(let k of g){let w=k.aggregate?.memberIds??[],M=`${x}|${k.plot.col},${k.plot.row},${k.plot.side}|${w.join(",")}`,C=R.current.get(k.id);if(C&&C.key===M){O.set(k.id,C);continue}let B={cell:x,originX:0,originY:0},A={x:0,y:0},{buildings:$,rest:D}=uo(k.plot,w),H=sa(k.plot,B,A);O.set(k.id,{key:M,tile:An(H),front:H[2],rest:D,buildings:$.map(Y=>({id:Y.id,...la(Y,B,A)}))})}if(R.current=O,!h)return null;let E={position:"absolute",left:0,top:0,pointerEvents:"none",overflow:"visible"},S=c.join(`
|
|
4
|
-
`),j=u.join(`
|
|
5
|
-
`);return(0,ke.jsx)("svg",{className:"graview-plots","aria-hidden":"true","data-graview-world":"",width:t,height:n,style:E,"data-graview-plots":g.length,children:(0,ke.jsxs)("g",{transform:`translate(${(h.originX+r.x).toFixed(1)} ${(h.originY+r.y).toFixed(1)})`,children:[(0,ke.jsx)("g",{className:"graview-roads","data-graview-roads":b.length,children:b.map(k=>k.d.includes("L")?(0,ke.jsxs)("g",{className:"graview-road","data-graview-road":k.edges.join(","),"data-graview-from":ce(k.from),"data-graview-to":ce(k.to),"data-graview-lit":l!==null&&k.edges.includes(l)?"":void 0,children:[(0,ke.jsx)("path",{className:"graview-road-edge",d:k.d}),(0,ke.jsx)("path",{className:"graview-road-bed",d:k.d})]},`${k.from}|${k.to}`):null)}),g.map(k=>(0,ke.jsx)(da,{id:k.id,hue:Math.round(Mt(k.kind,o?.accents)),drawing:O.get(k.id),pinned:i?.has(k.id)??!1,chosenKey:S,flaggedKey:j,press:f},k.id))]})})}var da=(0,lt.memo)(function({id:t,hue:n,drawing:r,pinned:o,chosenKey:i,flaggedKey:a,press:d}){let c=new Set(i.split(`
|
|
6
|
-
`)),s=new Set(a.split(`
|
|
7
|
-
`));return(0,ke.jsxs)("g",{className:"graview-plot","data-graview-plot":t,"data-graview-pinned":o?"":void 0,style:{"--graview-hue":n},children:[(0,ke.jsx)("polygon",{className:"graview-plot-tile",points:r.tile,onClick:l=>{d(t)&&l.stopPropagation()}}),r.buildings.length>0?(0,ke.jsxs)("g",{className:"graview-village","data-graview-village":r.buildings.length,"data-graview-rest":r.rest||void 0,children:[r.buildings.map(l=>(0,ke.jsxs)("g",{className:"graview-building","data-graview-building":l.id,"data-graview-flagged":s.has(l.id)?"":void 0,"data-graview-selected":c.has(l.id)?"":void 0,children:[(0,ke.jsx)("polygon",{className:"graview-iso-left",points:l.left}),(0,ke.jsx)("polygon",{className:"graview-iso-right",points:l.right}),(0,ke.jsx)("polygon",{className:"graview-iso-roof",points:l.roof})]},l.id)),r.rest>0?(0,ke.jsxs)("text",{className:"graview-village-rest",x:r.front.x,y:r.front.y-4,textAnchor:"middle",children:["+",r.rest]}):null]}):null]})});function la(e,t,n){let r=e.footprint/2,o=(g,x,p=0)=>{let f=ve(g,x,t.cell);return{x:t.originX+n.x+f.x,y:t.originY+n.y+f.y-p}},i=e.footprint*t.cell*.5*e.height,a=o(e.col-r,e.row-r,i),d=o(e.col+r,e.row-r,i),c=o(e.col+r,e.row+r,i),s=o(e.col-r,e.row+r,i),l=o(e.col+r,e.row+r),u=o(e.col-r,e.row+r),h=o(e.col+r,e.row-r);return{roof:An([a,d,c,s]),left:An([s,c,l,u]),right:An([c,d,h,l]),top:a}}function ca(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 Pn=(e,t,n,r)=>{let{col:o,row:i}=ca(e,n,r);return o>=t.col&&o<=t.col+t.side&&i>=t.row&&i<=t.row+t.side},Cn=(e,t,n)=>({x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n});function ua(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=f=>Math.floor(f.row/5),d=f=>Math.floor(f.col/5),c=a(e),s=a(t),l=d(e),u=d(t),h=s>c?c*5+5-.5:s<c?c*5-.5:c*5+5-.5,g=u>l?u*5-.5:u<l?u*5+5-.5:u*5-.5,x=[{col:n,row:r},{col:n,row:h},{col:g,row:h},{col:g,row:i},{col:o,row:i}],p=[];for(let f of x){let m=p[p.length-1];m&&Math.abs(m.col-f.col)<1e-9&&Math.abs(m.row-f.row)<1e-9||p.push(f)}for(let f=p.length-2;f>0;f--){let m=p[f-1],b=p[f],R=p[f+1],O=Math.abs(m.col-b.col)<1e-9&&Math.abs(b.col-R.col)<1e-9,E=Math.abs(m.row-b.row)<1e-9&&Math.abs(b.row-R.row)<1e-9;(O||E)&&p.splice(f,1)}return p}function ha(e,t,n,r){let o=ua(e,t).map(d=>{let c=ve(d.col,d.row,n.cell);return{x:n.originX+r.x+c.x,y:n.originY+r.y+c.y}}),i=[],a=!1;for(let d=0;d<o.length-1;d++){let c=o[d],s=o[d+1];if(!a){if(Pn(s,e,n,r))continue;let l=0,u=1;for(let h=0;h<12;h++){let g=(l+u)/2;Pn(Cn(c,s,g),e,n,r)?l=g:u=g}i.push(Cn(c,s,u)),a=!0}if(Pn(s,t,n,r)){let l=0,u=1;for(let h=0;h<12;h++){let g=(l+u)/2;Pn(Cn(c,s,g),t,n,r)?u=g:l=g}return i.push(Cn(c,s,l)),i}i.push(s)}return i}var V=ee(be(),1);function fa({hue:e,mode:t}){let n=t==="docked";return(0,V.jsxs)("svg",{viewBox:"0 0 32 38","aria-hidden":"true",children:[(0,V.jsxs)("g",{fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinejoin:"round",strokeLinecap:"round",children:[(0,V.jsx)("line",{x1:"16",y1:"3.5",x2:"16",y2:"7"}),(0,V.jsx)("circle",{cx:"16",cy:"2.6",r:"1.5",fill:"none"}),(0,V.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,V.jsx)("line",{x1:"11",y1:"12.5",x2:"21",y2:"12.5",strokeWidth:"2"}):(0,V.jsxs)(V.Fragment,{children:[(0,V.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,V.jsx)("circle",{cx:"13.4",cy:"12.5",r:"1.25",fill:"currentColor",stroke:"none",opacity:n?.45:1}),(0,V.jsx)("circle",{cx:"18.6",cy:"12.5",r:"1.25",fill:"currentColor",stroke:"none",opacity:n?.45:1}),t==="reading"?(0,V.jsx)("line",{x1:"10.2",y1:"12.5",x2:"21.8",y2:"12.5",strokeWidth:"0.8",opacity:"0.7"}):null]}),(0,V.jsx)("line",{x1:"16",y1:"16",x2:"16",y2:"18.5"}),(0,V.jsx)("polygon",{points:"16,18.5 24,22.5 16,26.5 8,22.5",fill:"currentColor",fillOpacity:"0.22"}),(0,V.jsx)("polygon",{points:"8,22.5 16,26.5 16,33.5 8,29.5",fill:"currentColor",fillOpacity:"0.08"}),(0,V.jsx)("polygon",{points:"24,22.5 16,26.5 16,33.5 24,29.5",fill:"currentColor",fillOpacity:"0.3"}),t==="writing"?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)("polyline",{points:"24,24 28.5,20.5"}),(0,V.jsx)("line",{x1:"27.5",y1:"19",x2:"30",y2:"21.5",strokeWidth:"1.8"})]}):(0,V.jsx)("line",{x1:"24",y1:"24",x2:"26.5",y2:"29"}),(0,V.jsx)("line",{x1:"8",y1:"24",x2:"5.5",y2:"29"}),(0,V.jsx)("path",{d:"M9.5 33.5 v2.2 h4"}),(0,V.jsx)("path",{d:"M22.5 33.5 v2.2 h-4"})]}),(0,V.jsx)("title",{children:`robot, ${t}`})]})}function ya({hue:e}){return(0,V.jsxs)("svg",{viewBox:"0 0 22 24","aria-hidden":"true",style:{color:`hsl(${Math.round(e)} 50% 48%)`},children:[(0,V.jsxs)("g",{fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinejoin:"round",strokeLinecap:"round",children:[(0,V.jsx)("circle",{cx:"11",cy:"6",r:"4.2"}),(0,V.jsx)("path",{d:"M3 23 C3 15.5 6 13 11 13 C16 13 19 15.5 19 23"})]}),(0,V.jsx)("title",{children:"somebody"})]})}function jr({width:e,whereIs:t}){let{who:n,following:r,follow:o}=le(),i=cr([...n.values()],t,e);return i.length===0?null:(0,V.jsx)("div",{className:"graview-occupants","data-testid":"occupants","data-graview-occupants":i.length,children:i.map((a,d)=>{if(a.kind==="over")return(0,V.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,V.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}:${d}`);let c=a.presence.hue,s=Qo(a.presence)||"somebody";if(a.kind==="edge")return(0,V.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":`${s} is somewhere else \u2014 press to go where they are`,children:["\u2192 ",s]},`edge:${a.presence.participant}`);if(a.kind==="robot")return(0,V.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,V.jsx)("span",{className:"graview-figure-body",role:"img","aria-label":`${s}'s agent \u2014 ${a.mode}`,style:{cursor:"default"},children:(0,V.jsx)(fa,{hue:c,mode:a.mode})}),(0,V.jsxs)("span",{className:"graview-figure-name",children:[s,"'s agent"]})]},`robot:${a.presence.participant}`);let l=r?.participant===a.presence.participant;return(0,V.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":l?"":void 0,style:{transform:`translate(${a.point.x.toFixed(1)}px, ${a.point.y.toFixed(1)}px)`,"--graview-hue":c},children:[(0,V.jsx)("button",{type:"button",className:"graview-figure-body","aria-label":`${s} is here${l?". Press to stop following":". Press to go where they go"}`,"aria-pressed":l,onClick:u=>{u.stopPropagation(),o(l?null:a.presence.participant)},onPointerDown:u=>u.stopPropagation(),children:(0,V.jsx)(ya,{hue:c})}),(0,V.jsx)("span",{className:"graview-figure-name",children:s})]},`person:${a.presence.participant}`)})})}var tn=ee(be(),1),Vr={left:"\u2190",right:"\u2192",top:"\u2191",bottom:"\u2193"},ga=36,Wr=56;function _r({result:e,schema:t,onGo:n}){let r=xo(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,d=-1/0,c=r.filter(s=>s.side===i).sort((s,l)=>s.along-l.along);for(let s of c){let l=Math.max(Wr,Math.min(a-Wr,Math.max(s.along,d+ga)));d=l;let u=_t(t,s.kind),h=i==="left"?{left:6,top:l,transform:"translateY(-50%)"}:i==="right"?{right:6,top:l,transform:"translateY(-50%)"}:i==="top"?{top:6,left:l,transform:"translateX(-50%)"}:{bottom:6,left:l,transform:"translateX(-50%)"};o.push((0,tn.jsx)("button",{type:"button",className:"graview-edge-sign","data-graview-past-edge":s.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(s.by)},style:{...ma,...h},children:i==="right"||i==="bottom"?`${u} ${Vr[i]}`:`${Vr[i]} ${u}`},s.id))}}return(0,tn.jsx)(tn.Fragment,{children:o})}var ma={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(He(),1),pa=180;function Yr({view:e,result:t,frame:n,panned:r,closer:o,screenId:i,setCamera:a}){let d=(0,bt.useRef)(new Map),c=(0,bt.useRef)(e.overview??!1),s=(0,bt.useRef)(null);if((0,bt.useEffect)(()=>{if(!e.overview||!i||!t.city){if(c.current&&!e.overview)return;a(E=>E.x===0&&E.y===0?E:{x:0,y:0});return}let l=t.nodes.find(E=>E.id===i);if(!l)return;let u=o>1&&l.screenOf?t.nodes.find(E=>E.id===ce(l.screenOf)):void 0,h=u?{x:Math.min(l.x,u.x),y:Math.min(l.y,u.y),width:Math.max(l.x+l.width,u.x+u.width)-Math.min(l.x,u.x),height:Math.max(l.y+l.height,u.y+u.height)-Math.min(l.y,u.y)}:l;if(h.x>=0&&h.y>=0&&h.x+h.width<=t.width&&h.y+h.height<=t.height&&!u)return;let x=24,p=(E,S,j)=>E<x?x-E:E+S>j-x?j-x-(E+S):0,f=wt(t),m=e.pan??{x:0,y:0},b=u?r.x+(t.width/2-(h.x+h.width/2)):r.x+p(h.x,h.width,t.width),R=t.height/2-(h.y+h.height/2),O=u?r.y+(l.y+R<x?x-l.y:R):r.y+p(h.y,h.height,t.height);a({x:(u?b:Math.max(-f.x,Math.min(f.x,b)))-m.x,y:(u?O:Math.max(-f.y,Math.min(f.y,O)))-m.y})},[i,e.overview,o]),n.city){let l=new Map;for(let u of n.nodes){if(!u.plot||Math.round(u.plane)!==2)continue;let h=ve(u.plot.col+u.plot.side/2,u.plot.row+u.plot.side/2,n.city.cell);l.set(u.id,{x:n.city.originX+r.x+h.x,y:n.city.originY+r.y+h.y})}d.current=l}return(0,bt.useEffect)(()=>{let l=e.overview??!1,u=c.current&&!l;if(c.current=l,l&&s.current&&(clearTimeout(s.current),s.current=null),!u)return;let h=e.focusId?xt(e.focusId)[0]:void 0,g=h?d.current.get(ce(h)):void 0,x=t.nodes.find(p=>p.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)}),s.current&&clearTimeout(s.current),s.current=setTimeout(()=>{s.current=null,a({x:0,y:0})},pa)},[e.overview]),(0,bt.useEffect)(()=>()=>{s.current&&clearTimeout(s.current)},[]),{gliding:()=>s.current!==null}}var se=ee(He(),1);function zr(){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 Kr({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),d=(0,se.useRef)(r);d.current=r;let c=(0,se.useCallback)(()=>[...e.current?.querySelectorAll("[data-graview-world]")??[]],[e]),s=(0,se.useCallback)(()=>{i.current===0&&(i.current=requestAnimationFrame(()=>{i.current=0;let{x,y:p}=o.current,f=x===0&&p===0?"":`translate3d(${x}px, ${p}px, 0)`;for(let m of c())m.style.transform=f}))},[c]),l=(0,se.useCallback)(()=>{a.current=!1;for(let x of c())x.style.transform="";d.current()},[c]),u=(0,se.useCallback)((x,p)=>{o.current={x:x.x-p.x,y:x.y-p.y},s()},[s]),h=(0,se.useCallback)(()=>{let{x,y:p}=o.current;return x===0&&p===0?!1:(o.current={x:0,y:0},a.current=!0,n(f=>{let m=f.pan??{x:0,y:0};return pt(f,{x:m.x+x,y:m.y+p})}),window.setTimeout(()=>{a.current&&l()},300),!0)},[n,l]);(0,se.useLayoutEffect)(()=>{a.current&&l()},[t,l]);let g=(0,se.useCallback)(()=>o.current,[]);return{shiftTo:u,settle:h,settling:a,offset:g}}var xa=4;function Gr({view:e,panned:t,limit:n,panWithin:r,moveByTransform:o,setView:i,setDragging:a,noteMoved:d,shift:c,district:s}){let l=(0,se.useRef)(!1),u=(0,se.useRef)(null),h=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]")||h(m))},onCardDown:(m,b)=>{if(b.button===0){if(m.screenOf!==void 0&&!b.target.closest("[data-graview-grip]")){h(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,O=m.clientY-b.fromY;if(!b.moved){if(Math.hypot(R,O)<xa)return;b.moved=!0,a(!0),m.currentTarget.setPointerCapture(m.pointerId)}if(b.kind==="pan"){let E=r(n(),{x:b.baseX+R,y:b.baseY+O});o?c.shiftTo(E,e.pan??{x:0,y:0}):i(S=>pt(S,E))}else b.id&&s.place({id:b.id,x:b.baseX+R,y:b.baseY+O})},onDragUp:()=>{c.settle();let m=s.release();m&&i(b=>Kt(b,m.id,{x:m.x,y:m.y})),u.current?.moved&&(l.current=!0,setTimeout(()=>l.current=!1,0),d()),u.current=null,!c.settling.current&&a(!1)},swallow:l}}function Ur({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 d=(u,h)=>{let g=r.current;if(h<g.coolUntil)return;let x=g.view.overview??!1;u!==x&&(g.coolUntil=h+600,g.charge=0,n(zt(g.view,u)))},c=u=>{let h=r.current,g=h.view.overview??!1;if(u.ctrlKey){if(u.preventDefault(),!g){if(h.charge+=u.deltaY,Math.abs(h.charge)<60)return;h.charge>0?d(!0,performance.now()):h.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))},s=u=>{u.preventDefault(),r.current.lastScale=1},l=u=>{u.preventDefault();let h=r.current,g=u.scale??1;if(!(h.view.overview??!1)){g<.72&&d(!0,performance.now());return}let x=g/(h.lastScale||1);h.lastScale=g;let p=u;o.current(x,p.clientX,p.clientY)};return a.addEventListener("wheel",c,{passive:!1}),a.addEventListener("gesturestart",s),a.addEventListener("gesturechange",l),()=>{a.removeEventListener("wheel",c),a.removeEventListener("gesturestart",s),a.removeEventListener("gesturechange",l)}},[n,e]),{zoomAbout:o,panBy:i}}var Xr={directed:"You",autonomous:"An agent","co-edited":"You and an agent",rule:"A rule"};function So(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 Mo(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 Ro(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):pn(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 d=e.parentElement;for(;d&&d!==t;){let s=getComputedStyle(d);if(s.overflowX!=="visible"||s.overflowY!=="visible"){let l=d.getBoundingClientRect();s.overflowX!=="visible"&&(n=Math.max(n,l.left),o=Math.min(o,l.right)),s.overflowY!=="visible"&&(r=Math.max(r,l.top),i=Math.min(i,l.bottom))}d=d.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=s=>e.nodes.find(l=>l.id===s);if(o.startsWith("screen:")){let s=o.slice(7),l=e.nodes.find(f=>f.screenOf===s);if(!l)return null;let u=Qe(t,l.id,!1)??qe(l,n);if(!u)return null;let h=e.nodes.find(f=>f.id===ce(s)),g=h?qe(h,n):null,x=u.y+u.height,p=g?Math.max(20,g.y-x):Math.max(20,u.height*.18);return{x:u.x,y:x,width:u.width,height:p}}let a=i(o),d=$e(o);if(!a&&d!==null&&(a=i(Ee(d))),!a&&Et(o)){let[s]=xt(o);s&&(a=i(ce(s)))}if(!a){let s=r.places().find(l=>l.as===o);s&&(a=i(Ee(s.kind))??i(ce(s.kind)))}if(a||(a=[...e.nodes].filter(s=>s.aggregate?.memberIds.includes(o)).sort((s,l)=>s.plane-l.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(He(),1);var te=ee(be(),1);function Qr({kinds:e}){let{store:t}=le(),{view:n,go:r}=oo(),o=(0,ct.useRef)(null),i=io("districts",{align:"start"}),a=i.open,d=h=>_t(t.schema,h),c=h=>t.graph.allNodes().filter(g=>g.kind===h).length,s=h=>!n.overview&&n.focusId===Ee(h),l=e.filter(h=>!s(h)),u=h=>{i.setOpen(!1);let g=o.current?.querySelector(".graview-beyond-more")??null;s(h)||r(Ot(n,Ee(h))),g?.focus({preventScroll:!0});let x=`[data-graview-view="${Ee(h)}"][tabindex], [data-graview-view="${ce(h)}"][tabindex]`,p=40,f=()=>{let m=document.querySelector(x);m?m.focus({preventScroll:!0}):--p>0&&requestAnimationFrame(f)};requestAnimationFrame(f)};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:`${l.length} more district${l.length===1?"":"s"} \u2014 press to see them`,onPointerDown:h=>h.stopPropagation(),onClick:h=>{h.stopPropagation(),i.toggle()},children:[(0,te.jsxs)("span",{className:"graview-beyond-count",children:["+",l.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:ro,onPointerDown:h=>h.stopPropagation(),children:e.map(h=>(0,te.jsx)("li",{role:"none",children:(0,te.jsxs)("button",{type:"button",role:"menuitem","data-graview-pick":ce(h),"aria-current":s(h)?"location":void 0,title:s(h)?`${d(h)} \u2014 where you are`:`Go to ${d(h)}`,onPointerDown:g=>g.stopPropagation(),onClick:g=>{g.stopPropagation(),u(h)},children:[(0,te.jsx)("span",{className:"graview-beyond-name",children:d(h)}),(0,te.jsx)("span",{className:"graview-beyond-tally",children:s(h)?"here":c(h)})]})},h))}):null]})}function wa(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"||Eo(e[r],t[r]))}function Eo(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(!Eo(e[i],o[i]))return!1;return!0}let r=Object.keys(e);return r.length!==Object.keys(t).length?!1:r.every(o=>Eo(e[o],t[o]))}var Zr=(0,ct.memo)(Jr,(e,t)=>e.mode===t.mode&&e.selected===t.selected&&e.fidelity===t.fidelity&&wa(e.node,t.node));function Jr({node:e,mode:t,selected:n,fidelity:r}){let{store:o,views:i,view:a}=le(),d=It(),c=lr(),s=wn(),l=e.aggregate||Et(e.id)||$e(e.id)!==null?"many":"one",u={cardinality:l,fidelity:r??or[va(e.plane)].fidelity},h=l==="many"&&e.id===a.focusId?a.within?.view:void 0,g=i.resolve(e.kind,u,h),x=g?.view,p=i.resolve(e.kind,{cardinality:"many",fidelity:"full"})?.view,f=p!==void 0&&p.generic!==!0,m=e.aggregate?.memberIds,b=(0,ct.useMemo)(()=>(m??[]).map(E=>o.graph.getNode(E)).filter(E=>E!==void 0),[m,o,d]),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:s,...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}:{},...f?{hasOwnView:!0}:{}};if(!x)return(0,te.jsx)(ka,{node:e,props:R});let O=[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?Oo(e.aggregate.memberIds):"",e.aggregate?.retired??"",c?Oo(c):"",s?Oo(s):"",f].join("|");return(0,te.jsx)(to,{mode:t,children:(0,te.jsx)(ur,{kind:R.label??e.kind,...g?.title?{view:g.title}:{},children:(0,te.jsx)(ba,{signature:O,graph:d,draw:()=>(0,te.jsx)(x,{...R})})},`${e.id}|${g?.title??""}`)})}var ba=(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 va(e){return Math.max(0,Math.min(2,Math.round(e)))}function ka({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 ei=(0,ct.memo)(function({node:t}){let{store:n}=le(),r=Lt(),o=t.aggregate,i=o.opens,a=o.memberIds.length,d=hn(n.schema,o.kind,a),c=o.memberIds.slice(0,3).map(h=>{let g=n.graph.getNode(h),x=g?n.schema.tryDefinition(g.kind):void 0;return g?x?.label?x.label(g):String(g.label??h):h}),s=o.memberIds,l=(0,ct.useMemo)(()=>{let h=r?mn(r):null;return h?s.filter(g=>h.has(g)).length:0},[r,s]),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?l>0?"lit":"dimmed":void 0,title:u?`${o.label} \u2014 press twice to see them all, arranged`:`${o.label}: ${d} \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:[d,l>0?` \xB7 ${l} match`:""," \xB7 "]}),c.join(" \xB7 "),a>c.length?" \u2026":""]})]})}),qr=new WeakMap;function Oo(e){let t=qr.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 qr.set(e,r),r}var vt=ee(He(),1);function Po(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 ti(){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 ni(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=d=>{!d||d.width===0||d.height===0||n(c=>{let s={width:Math.round(d.width),height:Math.round(d.height)};return c&&c.width===s.width&&c.height===s.height?c:s})},i=new ResizeObserver(d=>o(d[0]?.contentRect)),a=()=>o(r.getBoundingClientRect());return i.observe(r),addEventListener("resize",a),()=>{i.disconnect(),removeEventListener("resize",a)}},[e]),t}function oi(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 ri(e){return`matrix3d(${e.join(",")})`}var _e=ee(He(),1);var Co=(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 Ao(e,t){let n=[],r=[];for(let i=0;i<e.length-1;i++){let a=e[i],d=e[i+1],c=!Co(a,t);c&&r.length===0&&r.push(a);for(let s=1;s<=48;s++){let l=s/48,u={x:a.x+(d.x-a.x)*l,y:a.y+(d.y-a.y)*l},h=!Co(u,t);if(h===c)continue;let g=(s-1)/48,x=l;for(let m=0;m<10;m++){let b=(g+x)/2,R={x:a.x+(d.x-a.x)*b,y:a.y+(d.y-a.y)*b};!Co(R,t)===c?g=b:x=b}let p=(g+x)/2,f={x:a.x+(d.x-a.x)*p,y:a.y+(d.y-a.y)*p};h?r=[f]:(r.push(f),r.length>=2&&n.push(r),r=[]),c=h}c&&r.push(d)}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 Ve=e=>Math.round(e*100)/100,Dt=e=>e.map(t=>t.map((n,r)=>`${r===0?"M":"L"} ${Ve(n.x)} ${Ve(n.y)}`).join(" ")).join(" ");function ii(e,t){if(e.length<3)return Dt([e]);let n=[`M ${Ve(e[0].x)} ${Ve(e[0].y)}`];for(let o=1;o<e.length-1;o++){let i=e[o-1],a=e[o],d=e[o+1],c=Math.hypot(a.x-i.x,a.y-i.y),s=Math.hypot(d.x-a.x,d.y-a.y),l=Math.min(t,c/2,s/2),u={x:a.x+(i.x-a.x)/(c||1)*l,y:a.y+(i.y-a.y)/(c||1)*l},h={x:a.x+(d.x-a.x)/(s||1)*l,y:a.y+(d.y-a.y)/(s||1)*l};n.push(`L ${Ve(u.x)} ${Ve(u.y)} Q ${Ve(a.x)} ${Ve(a.y)} ${Ve(h.x)} ${Ve(h.y)}`)}let r=e[e.length-1];return n.push(`L ${Ve(r.x)} ${Ve(r.y)}`),n.join(" ")}function ai(e,t,n){if(e==="orthogonal"){let d=nn(t.p0,t.p1),c=d.slice(1).map((u,h)=>Math.hypot(u.x-d[h].x,u.y-d[h].y)),s=c.reduce((u,h)=>u+h,0)||1,l=n*s;for(let u=0;u<c.length;u++){let h=c[u];if(l<=h||u===c.length-1){let g=h===0?0:Math.min(1,l/h),x=d[u],p=d[u+1];return{x:x.x+(p.x-x.x)*g,y:x.y+(p.y-x.y)*g}}l-=h}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 si(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 Sa(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 Lo=(e,t)=>e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height,di=(e,t)=>e.findIndex(n=>n.boxes.some(r=>Lo(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 Ma(e,t){let n=[{from:-1/0,to:1/0}];for(let i of e){let a=[],d=-1/0;for(let s of i.boxes)a.push({from:d,to:s.x-12}),d=s.x+s.width+12;a.push({from:d,to:1/0});let c=[];for(let s of n)for(let l of a){let u=Math.max(s.from,l.from),h=Math.min(s.to,l.to);h-u>=0&&c.push({from:u,to:h})}n=c}let r=t,o=1/0;for(let i of n){let a=Math.min(Math.max(t,i.from),i.to),d=i.from===-1/0||i.to===1/0,c=Math.abs(a-t)+(d?60:0);c<o&&(o=c,r=a)}return r}function li(e,t,n,r=0){let o=Sa(n.some(b=>Lo(b,e))&&n.some(b=>Lo(b,t))?n:[...n,e,t]),i=di(o,e),a=di(o,t),d=e.x+e.width/2,c=t.x+t.width/2,s=(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))+s,O=b?e.y+e.height:e.y,E=b?t.y+t.height:t.y;return[{x:d,y:O},{x:d,y:R},{x:c,y:R},{x:c,y:E}]}let l=a>i,u=l?1:-1,h={x:d,y:l?e.y+e.height:e.y},g={x:c,y:l?t.y:t.y+t.height},x=(l?qt(o,i,i+1):qt(o,i-1,i))+s,p=(l?qt(o,a-1,a):qt(o,a,a+1))+s;if(Math.abs(a-i)===1)return[h,{x:d,y:x},{x:c,y:x},g];let f=[];for(let b=i+u;b!==a;b+=u)f.push(o[b]);let m=Ma(f,c);return[h,{x:d,y:x},{x:m,y:x},{x:m,y:p},{x:c,y:p},g]}function ci(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 We=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},p={x:t.x+t.width,y:t.y+t.height/2};return{from:x,to:p,control:{x:Math.max(x.x,p.x)+18,y:(x.y+p.y)/2},mode:"stacked"}}if(i){let x={x:e.x+e.width/2,y:e.y},p={x:t.x+t.width/2,y:t.y};return{from:x,to:p,control:{x:(x.x+p.x)/2,y:Math.min(x.y,p.y)-18},mode:"abreast"}}let a={x:t.x+t.width/2,y:t.y+t.height/2},d={x:e.x+e.width/2,y:e.y+e.height/2},c=Tn(e,a),s=Tn(t,d),l=Math.hypot(s.x-c.x,s.y-c.y);if(l<8)return null;let u=Math.min(36,l*.12),h=-(s.y-c.y)/l,g=(s.x-c.x)/l;return{from:c,to:s,control:{x:(c.x+s.x)/2+h*u,y:(c.y+s.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),d=i===0?1/0:e.height/2/Math.abs(i),c=Math.min(a,d),s=Math.max(0,c*.98);return{x:n+o*s,y:r+i*s}}function Ra(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=d=>!!d.aggregate&&Math.round(d.plane)===2;return i&&!a(r)&&!a(o)}var Oa=()=>({clips:new Map,members:new Map,marks:new Map});function Ea(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 Pa(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 Ca(e,t,n){let r=e.parentElement;for(;r!==null;){let o=Pa(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(),d=[];for(let c of Ea(t,r).get(n)??[]){if(c.closest("[data-graview-offstage]"))continue;let s=c.getBoundingClientRect();s.width<=2||s.height<=2||Ca(c,s,r)&&d.push({x:s.left-a.left,y:s.top-a.top,width:s.width,height:s.height})}return d.sort((c,s)=>c.width*c.height-s.width*s.height),o.set(n,d),d}function Hn(e,t,n,r,o){let i=new Map(e.map(f=>[f.id,f])),a=Oa(),d=new Map,c=f=>{if(!n||typeof document>"u")return null;let m=d.get(f);return m===void 0&&(m=n.querySelector(`[data-graview-view="${CSS.escape(f)}"]`),d.set(f,m)),m},s=new Map;for(let f of e){let m=Qe(n,f.id,r)??qe(f,o);m&&s.set(f.id,m)}let l=new Map;if(n&&typeof document<"u"){let f=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>f.width*.6&&R.height>f.height*.6)continue;let O=l.get(b),E={x:R.left-f.left,y:R.top-f.top,width:R.width,height:R.height};O?O.push(E):l.set(b,[E])}}let u=(f,m)=>{let b=[];for(let[R,O]of s)R!==f&&R!==m&&b.push(O);for(let[R,O]of l)R!==f&&R!==m&&b.push(...O);return b},h=f=>Math.round(i.get(f)?.plane??-1)===1,g=[];for(let f of e){let m=s.get(f.id);m&&Math.round(f.plane)===1&&g.push(m)}let x=(f,m)=>!r&&h(f)&&h(m)?g:void 0,p=[];for(let f of t){if(!Ra(f,i,r))continue;let m=s.get(f.from),b=s.get(f.to);if(!m||!b)continue;let R=u(f.from,f.to),O=f.edges,E=r&&O.some(k=>k.from!==f.from&&on(n,c(f.from),k.from,a).length>0||k.to!==f.to&&on(n,c(f.to),k.to,a).length>0),S=x(f.from,f.to);if(r&&!E||f.loop||O.length===0){p.push({key:f.id,connector:f,edges:O,fromBox:m,toBox:b,fromAnchor:f.from,toAnchor:f.to,obstacles:R,hosts:[],...S?{band:S}:{}});continue}let j=new Map;for(let k of O){let w=k.from===f.from?[]:on(n,c(f.from),k.from,a),M=k.to===f.to?[]:on(n,c(f.to),k.to,a),C=[f.from,f.to].find(X=>Math.round(i.get(X)?.plane??-1)===0);if(!r&&C!==void 0&&(k.from!==f.from||k.to!==f.to)&&on(n,c(C),C===f.from?k.to:k.from,a).length>0)continue;let B=C!==void 0?i.get(C):void 0;if(!r&&B?.aggregate&&n&&(C===f.from?k.from!==f.from&&w.length===0:k.to!==f.to&&M.length===0))continue;let A=w.length>0?k.from:f.from,$=M.length>0?k.to:f.to,D=`${f.id}|${A}|${$}`,H=j.get(D);if(H){H.edges.push(k);continue}let Y=w.length>0?w:[m],K=M.length>0?M:[b],W=Y[0],ge=K[0],me=1/0;for(let X of Y)for(let oe of K){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,W=X,ge=oe)}j.set(D,{edges:[k],fromBox:W,toBox:ge,fromAnchor:A,toAnchor:$})}for(let[k,w]of j)p.push({key:k,connector:f,obstacles:R,hosts:[...w.fromAnchor!==f.from?[m]:[],...w.toAnchor!==f.to?[b]:[]],...S?{band:S}:{},...w})}return p}function Io(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 ui(e,t,n){let r=(1-t)*(1-n),o=(1-t)*n+t*(1-n),i=t*n;return{p0:Io(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:Io(e,n)}}function No(e,t){let n=s=>t.some(l=>s.x>l.x&&s.x<l.x+l.width&&s.y>l.y&&s.y<l.y+l.height),r=s=>!n(Io(e,s)),i=(s,l,u)=>{for(let h=0;h<10;h++){let g=(s+l)/2;r(g)===u?s=g:l=g}return(s+l)/2},a=[],d=null,c=r(0);c&&(d=0);for(let s=1;s<=64;s++){let l=s/64,u=r(l);if(u===c)continue;let h=i((s-1)/64,l,c);u?d=h:d!==null&&(h-d>.001&&a.push(ui(e,d,h)),d=null),c=u}return d!==null&&1-d>.001&&a.push(ui(e,d,1)),a}function hi({strands:e,result:t,scheme:n,overview:r,selection:o,emphasis:i,stageRef:a,liveOf:d,onPickEdge:c}){let s=en(),l=new Set(t.nodes.filter(S=>S.plot!==void 0&&Math.round(S.plane)===2).map(S=>S.id)),u=S=>r&&t.city!==void 0&&l.has(S.from)&&l.has(S.to),h=So(t.nodes,o),g=S=>h.size===0||h.has(S.from)||h.has(S.to),x=new Set(o.filter(S=>Rt(S)===null)),p=r?t.nodes.find(S=>Math.round(S.plane)===0):void 0,f=p?Qe(a.current,p.id,!1)??qe(p,n):null;if(e.length===0)return null;let m=S=>S.edges.some(j=>x.has(j.from)||x.has(j.to)),b=x.size>0&&e.some(m),R=new Map;for(let S of e)R.set(S.connector.id,(R.get(S.connector.id)??0)+1);let O=ci(e.map(S=>({key:S.key,a:S.fromAnchor,b:S.toAnchor}))),E=e.map((S,j)=>{let{connector:k,fromBox:w,toBox:M}=S,C={x:w.x+w.width/2,y:w.y+w.height/2},B={x:M.x+M.width/2,y:M.y+M.height/2},A=r?Tn(w,B):C,$=r?Tn(M,C):B,D=k.loop===!0,{connector:H,style:Y}=bn(s,k.kind);if(!H.visible)return null;let K=D?Math.max(22,Math.min(w.width,w.height)*.3):0,W=D?{x:C.x+w.width*.22,y:C.y-w.height/2-K+7}:A,ge=(A.x+$.x)/2,me=(A.y+$.y)/2,X=Math.hypot($.x-A.x,$.y-A.y),oe=Math.min(r?40:90,X*(r?.09:.16)),L=0,z=0;if(X>0){L=-($.y-A.y)/X,z=($.x-A.x)/X;let ne=ge-t.width/2,xe=me-t.height/2;if(f&&!D){let rt=f.x+f.width/2,Me=f.y+f.height/2;ne=ge-rt,xe=me-Me;let gt=Math.abs(L*(rt-A.x)+z*(Me-A.y)),mt=Math.hypot(f.width/2,f.height/2)*.85+24,St=((rt-A.x)*($.x-A.x)+(Me-A.y)*($.y-A.y))/(X*X);gt<mt&&St>.1&&St<.9&&(oe=Math.min(180,Math.max(oe,(mt-gt)*2)))}L*ne+z*xe<0&&(L=-L,z=-z)}oe+=2*(O.get(S.key)??0);let v=Nn(H.route,{p0:A,c:{x:ge+L*oe,y:me+z*oe},p1:$}),N=u(k),T=H.route==="orthogonal"||N,G=(ne,xe)=>N?si(ne,xe):nn(ne,xe),F=!D&&S.band?li(w,M,S.band,j):null,re=D||T||F?[]:No(v,[w,M,...S.obstacles]),ie=F?[F]:!D&&T?Ao(G(A,$),[w,M,...S.obstacles]):[];if(!D&&re.length===0&&ie.length===0)return null;let de=ie[ie.length-1],J=T||F?ie[0]?.[0]:re[0]?.p0,Ae=T||F?de?.[de.length-1]:re[re.length-1]?.p1,Se=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 ${W.x-K} ${W.y} A ${K} ${K} 0 1 1 ${W.x+K} ${W.y} A ${K} ${K} 0 0 1 ${W.x-K} ${W.y}`,Ye=D?et:F?ii(F,10):T?Dt(ie):Se(re),U=ne=>({x:ne.x-8,y:ne.y-8,width:ne.width+16,height:ne.height+16}),Le=[w,M,...S.hosts,...S.obstacles].map(U),tt=D?et:F?Dt(ie):T?Dt(Ao(G(A,$),Le)):Se(No(v,Le)),nt=S.edges.length===1?S.edges[0]:null,Fe=nt?Yt(k.kind,nt.from,nt.to):null,Je=Fe!==null&&o.includes(Fe),ht=S.edges.some(ne=>x.has(ne.from)||x.has(ne.to)),Ne=!r&&x.size>0&&ht,ft=i!==null&&k.kind===i||Je,yt=d?.(k)!==void 0;if(r&&!ft&&!ht&&!(h.size>0&&g(k))&&!yt)return null;let ze=r?Mo({emphasized:i!==null,stressed:ft,anyChosen:b,mine:ht,touches:g(k),siblings:R.get(k.id)??1}):Ro({edgeChosen:Je,lit:Ne,anyLit:b||i!==null,own:Y.opacity,kit:s.emphasis}),ot=Ne&&J&&Ae?S.edges.some(ne=>x.has(ne.from))?Ae:J:null,Ie=(0,We.jsxs)("g",{children:[(0,We.jsx)("path",{"data-graview-connector":k.kind,"data-graview-edges":S.edges.length,"data-graview-from":S.fromAnchor,"data-graview-to":S.toAnchor,"data-graview-lit":Ne||void 0,"data-graview-activity":d?.(k)?.manner,opacity:ze*(k.opacity??1),d:Ye,fill:"none",stroke:Xt(Y),strokeWidth:(Ne?Math.max(1.6,ao(Y,r)):ao(Y,r))+(ft?.6:0),strokeDasharray:xn[Y.pattern],strokeLinecap:"round"}),ot?(0,We.jsx)("circle",{cx:ot.x,cy:ot.y,r:2.6,fill:Xt(Y),opacity:ze}):null,D&&r?(0,We.jsx)("text",{x:W.x,y:W.y-K-5,textAnchor:"middle",opacity:ze,style:{font:"9px var(--graview-font-body, system-ui)",letterSpacing:"0.09em",textTransform:"uppercase",fill:"var(--graview-ink-faint)"},children:Vt(k.kind).toLowerCase()}):null]},S.key),kt=null;return Fe&&c&&!D&&ze>=.2&&(kt=(0,We.jsx)("path",{"data-graview-edge":Fe,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(Fe,{x:ne.clientX,y:ne.clientY})},onContextMenu:ne=>{ne.preventDefault(),ne.stopPropagation(),c(Fe,{x:ne.clientX,y:ne.clientY})}},`hit:${S.key}`)),{key:S.key,line:Ie,hit:kt}});return(0,We.jsxs)(We.Fragment,{children:[(0,We.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:E.map(S=>S?.line)}),E.some(S=>S?.hit)?(0,We.jsx)("svg",{"data-graview-world":"",width:t.width,height:t.height,style:{position:"absolute",left:0,top:0,pointerEvents:"none",zIndex:Te.tieLabels},children:E.map(S=>S?.hit)}):null]})}var Aa=e=>e.length*8.4+16;function fi(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)),d=i.filter(c=>c.top-a<=12);return{key:i[0].key,text:i[0].text,left:Math.min(...d.map(c=>c.left)),right:Math.max(...d.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,Aa(i.text))),d=(i.left+i.right)/2;return{left:d-a/2,right:d+a/2}});return r.map((i,a)=>{let d=r.map((m,b)=>({other:m,at:b})).filter(({other:m})=>m!==i&&Math.abs(m.top-i.top)<=12),c=d.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),s=d.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),l=Math.max(t.left,...c),u=Math.min(t.right,...s),h=i.right-i.left,g=o[a].right-o[a].left,x=Math.max(h,Math.min(g,u-l)),p=(i.left+i.right)/2,f=h>=x?i.left:Math.max(l,Math.min(p-x/2,u-x));return{key:i.key,text:i.text,left:f,width:x,top:i.top}})}function Dn(e){return e<640?{left:8,right:56}:{left:8,right:Math.round(Math.min(128,e*.107))}}var Ce=ee(be(),1);function yi({frame:e,width:t,height:n,scheme:r,overview:o,selection:i,emphasis:a,stageRef:d,store:c,graphNodes:s,onPickEdge:l,liveOf:u,holding:h=!1}){let[g,x]=(0,_e.useState)(0),[p,f]=(0,_e.useState)(null),m=e.t<1;(0,_e.useLayoutEffect)(()=>{m||h||f(Hn(e.nodes,e.connectors,d.current,o,r))},[e,m,h,i,o,s,r,g,d]);let b=e.nodes.map(E=>E.id).join(`
|
|
8
|
-
`);if((0,_e.useLayoutEffect)(()=>{let E=d.current;if(E===null||typeof window>"u")return;let S=0,j=()=>{S===0&&(S=requestAnimationFrame(()=>{S=0,x(w=>w+1)}))};E.addEventListener("scroll",j,{capture:!0,passive:!0}),window.addEventListener("resize",j,{passive:!0});let k=typeof ResizeObserver>"u"?null:new ResizeObserver(j);if(k){k.observe(E);for(let w of E.querySelectorAll("[data-graview-view]"))k.observe(w)}return()=>{S!==0&&cancelAnimationFrame(S),E.removeEventListener("scroll",j,{capture:!0}),window.removeEventListener("resize",j),k?.disconnect()}},[d,b]),m)return null;let R=(h?null:p)??Hn(e.nodes,e.connectors,null,o,r),O=new Set;for(let E of R){if(E.edges.length!==1)continue;let S=E.edges[0];O.add(`${E.connector.kind}|${S.from}|${S.to}`)}return(0,Ce.jsxs)(Ce.Fragment,{children:[(0,Ce.jsx)(hi,{strands:R,result:e,scheme:r,overview:o,selection:i,emphasis:a,stageRef:d,onPickEdge:l,liveOf:u}),(0,Ce.jsx)(La,{stageRef:d,nodes:e.nodes,scheme:r,selection:i,store:c,graphNodes:s,overview:o,width:t,height:n,onPickEdge:l,alreadyDrawn:O,tick:g})]})}function La({stageRef:e,nodes:t,scheme:n,selection:r,store:o,graphNodes:i,overview:a,width:d,height:c,onPickEdge:s,alreadyDrawn:l,tick:u}){let h=en(),g=(0,_e.useMemo)(()=>{if(r.length===0||r.length>4)return[];let m=new Set(r),b=[];for(let O of r){let E=Rt(O);E&&b.push({kind:E.kind,self:E.from,other:E.to})}for(let O of o.graph.allEdges()){let E=m.has(O.from)?O.from:m.has(O.to)?O.to:null;if(!E)continue;let S=E===O.from?O.to:O.from;m.has(S)||b.push({kind:O.kind,self:E,other:S})}if(b.length<=14)return b;let R=new Set(t.map(O=>O.id));return b.map((O,E)=>({tie:O,index:E,real:R.has(O.other)?0:1})).sort((O,E)=>O.real-E.real||O.index-E.index).slice(0,14).map(({tie:O})=>O)},[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(C=>r.includes(C))}catch{return!1}});if(b){let w=Ln(b,e.current);if(!w)return[];let M=[];for(let C of r){let B=t.find(H=>H.id===C);if(!B)continue;let A=Qe(e.current,B.id,a)??qe(B,n),$=A?$n(w,A):null;if(!A||!$)continue;let D=[...o.graph.allEdges()].find(H=>H.from===C&&r.includes(H.to)||H.to===C&&r.includes(H.from));M.push({key:`join:${C}`,kind:D?.kind??"",endX:$.to.x,endY:$.to.y,...$,fromBox:w,toBox:A,proxy:!1,edgeId:D?Yt(D.kind,D.from,D.to):null})}return M}let R=(w,M)=>{let C=e.current?.querySelectorAll(`[data-graview-pick="${CSS.escape(w)}"], [data-graview-slot="${CSS.escape(w)}"]`),B=[];for(let A of C??[]){if(A.closest("[data-graview-offstage]")||M(A)||A.closest("[data-graview-mark]"))continue;let $=Ln(A,e.current);$&&B.push($)}return B.sort((A,$)=>A.width*A.height-$.width*$.height)},O=w=>t.find(M=>M.id===w)??t.find(M=>M.aggregate?.memberIds.includes(w)),E=w=>`[data-graview-pick="${CSS.escape(w)}"], [data-graview-slot="${CSS.escape(w)}"]`,S=(w,M)=>{let C=e.current;if(!C)return!1;for(let B of C.querySelectorAll("[data-graview-view]")){let A=B.querySelector(E(w));if(A===null||A.closest("[data-graview-offstage]"))continue;let $=B.querySelector(E(M));if($!==null&&!$.closest("[data-graview-offstage]"))return!0}return!1},j=new Set,k=[];for(let w of g){if(S(w.self,w.other))continue;let M=O(w.self),C=M?e.current?.querySelector(`[data-graview-view="${CSS.escape(M.id)}"]`):null,B=R(w.self,()=>!1);if(!(B.length>0)&&M){let v=Qe(e.current,M.id,!1)??qe(M,n);v&&B.push(v)}let $=t.find(v=>v.id===w.other),D=[],H=!1;if($){let v=Qe(e.current,$.id,a)??qe($,n);v&&D.push(v)}else if(D.push(...R(w.other,v=>C?C.contains(v):!1)),D.length===0){let v=O(w.other);if(v&&(!M||v.id!==M.id)){let N=Qe(e.current,v.id,a)??qe(v,n);N&&(D.push(N),H=!0)}}if(B.length===0||D.length===0||H&&a)continue;let Y=B[0],K=D[0],W=1/0;for(let v of B)for(let N of D){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<W&&(W=T,Y=v,K=N)}if(l?.has(`${w.kind}|${w.self}|${w.other}`)||l?.has(`${w.kind}|${w.other}|${w.self}`))continue;let ge=`${w.kind}:${Math.round(Y.x)},${Math.round(Y.y)}:${Math.round(K.x)},${Math.round(K.y)}`;if(j.has(ge))continue;j.add(ge);let me=$n(Y,K);if(!me)continue;let{from:X,to:oe,control:L}=me,z=[...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));k.push({key:`${w.kind}:${w.self}:${w.other}`,kind:w.kind,endX:oe.x,endY:oe.y,from:X,to:oe,control:L,fromBox:Y,toBox:K,proxy:H,edgeId:z?Yt(z.kind,z.from,z.to):null})}return k},[p,f]=(0,_e.useState)([]);return(0,_e.useLayoutEffect)(()=>{f(x())},[g,t,a,n,d,c,l,u,e]),p.length===0?null:(0,Ce.jsx)("svg",{"aria-hidden":p.some(m=>m.edgeId)?void 0:!0,"data-graview-ties":p.length,"data-graview-world":"",width:d,height:c,style:{position:"absolute",left:0,top:0,pointerEvents:"none",zIndex:Te.lines},children:p.map(m=>{let{connector:b,style:R}=bn(h,m.kind);if(!b.visible)return null;let O={p0:m.from,c:m.control,p1:m.to},E=b.route==="orthogonal"?Dt([nn(m.from,m.to)]):(({p0:j,c:k,p1:w})=>`M ${j.x} ${j.y} Q ${k.x} ${k.y} ${w.x} ${w.y}`)(Nn(b.route,O)),S=null;if(m.edgeId&&s&&!m.proxy){let j=(w,M)=>M.x>=w.x&&M.x<=w.x+w.width&&M.y>=w.y&&M.y<=w.y+w.height,k=[];for(let w=0;w<=40;w++){let M=ai(b.route,O,w/40);j(m.fromBox,M)||j(m.toBox,M)||k.push(M)}k.length>=2&&(S=(0,Ce.jsx)("path",{"data-graview-edge":m.edgeId,className:"graview-edge-hit",d:`M ${k[0].x} ${k[0].y} ${k.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(),s(m.edgeId,{x:w.clientX,y:w.clientY})},onContextMenu:w=>{w.preventDefault(),w.stopPropagation(),s(m.edgeId,{x:w.clientX,y:w.clientY})}}))}return(0,Ce.jsxs)("g",{opacity:m.proxy?.32:.72,children:[(0,Ce.jsx)("path",{"data-graview-tie":m.kind,"data-graview-tie-proxy":m.proxy||void 0,d:E,fill:"none",stroke:Xt(R),strokeWidth:m.proxy?1.1:1.6,strokeDasharray:xn[R.pattern],strokeLinecap:"round"}),(0,Ce.jsx)("circle",{cx:m.endX,cy:m.endY,r:m.proxy?2:2.6,fill:Xt(R)}),S]},m.key)})})}function gi({nodes:e,scheme:t,width:n,stageRef:r,moving:o=!1,holding:i=!1}){let a=en(),[d,c]=(0,_e.useState)([]);(0,_e.useLayoutEffect)(()=>{o||i||c(s())},[e,o,i,t,n,r]);function s(){let l=[];for(let h of e){if(!h.via||Math.round(h.plane)!==1)continue;let g=Qe(r.current,h.id,!1),{scale:x}=Ue(1,t);l.push({key:`${h.via.edgeKind}|${h.via.direction}`,text:h.via.description??`${h.via.direction==="in"?"\u2190":"\u2192"} ${Vt(h.via.edgeKind).toLowerCase()}`,left:g?.x??h.x,right:g?g.x+g.width:h.x+h.width*x,top:g?.y??h.y})}let u=Dn(n);return fi(l,{left:u.left,right:n-u.right})}return d.length===0||!a.captions.visible||o?null:(0,Ce.jsx)("div",{"aria-hidden":"true",style:{position:"absolute",inset:0,pointerEvents:"none",zIndex:Te.lines},children:d.map(l=>{let{left:u,width:h}=l;return(0,Ce.jsx)("div",{"data-graview-relation":l.key,title:l.text,style:{position:"absolute",left:u,width:h,textAlign:"center",top:Math.max(0,l.top-19),fontSize:"0.75rem",letterSpacing:"0.09em",textTransform:"uppercase",color:"var(--graview-ink-faint)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:(0,Ce.jsx)("span",{style:{background:"var(--graview-ground)",padding:"1px 7px",borderRadius:4},children:l.text})},l.key)})})}var rn=ee(He(),1);var Na=new Set;function mi(e,t,n,r,o,i,a,d){let{store:c,views:s,hiddenKinds:l}=le(),u=Lt(),h=no(),g=(0,rn.useMemo)(()=>{let f={};for(let m of h){if(m.subjectId===void 0)continue;let b=f[m.subjectId]??=[];for(let R of m.nodeIds)R!==m.subjectId&&!b.includes(R)&&b.push(R)}return f},[h]),x=(0,rn.useMemo)(()=>({flagged:new Set(h.flatMap(f=>f.nodeIds)),touched:Go(c.log.all())}),[h,c,d]),p=(0,rn.useMemo)(()=>({hits:u?mn(u):Na,...x}),[u,x]);return(0,rn.useMemo)(()=>({...e,cityZoom:i,...a!==void 0?{screenHeight:a}:{},...l.size>0?{hiddenKinds:[...l].sort()}:{},...Object.keys(g).length>0?{judged:g}:{},relevance:p,inset:Dn(t?.width??1200),unit:n,plainGroups:c.schema.kinds.filter(f=>nr(s.lookup(f,{cardinality:"many",fidelity:"full"}))),cityOrder:Xo(qo({name:"scene",schema:c.schema,mutations:c.allMutations().filter(f=>!f.derived)}).order.map(f=>f.kind),s.arrangement?.()?.order),screens:s.places().reduce((f,m)=>((f[m.kind]??=[]).push({as:m.as,title:m.title,...m.across?{across:m.across}:{}}),f),{}),nameWidth:r,...t?{width:t.width,height:o?Math.max(0,t.height-64):t.height}:{}}),[e,t,n,c,s,l,g,p,i,a,r,o])}var ut=ee(He(),1);var pi=ee(He(),1);function Fn(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 xi(e){(0,pi.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&&$a(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 Ta=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 $a(e){return Ta.has(e.localName.toLowerCase())}var Qt=ee(be(),1);function wi({node:e,useDom:t,touched:n,frontY:r,centerY:o,screen:i,onDrawnHeight:a,crowded:d,activity:c,scheme:s,canvasWidth:l,canvasHeight:u,selected:h,onSelect:g,onPick:x,onTravel:p,onMenu:f,selection:m,onJackIn:b,onDragStart:R,onDragMove:O,onDragEnd:E,swallowClick:S,children:j}){let{brand:k,store:w,actsDoor:M}=le(),C=e.beyond?`${e.beyond.length} more district${e.beyond.length===1?"":"s"}`:e.aggregate?.opens?.in==="place"?`${e.aggregate.label}, ${hn(w.schema,e.aggregate.kind,e.aggregate.memberIds.length)}`:e.aggregate?e.aggregate.label:(()=>{let v=w.graph.getNode(e.id);return v?_o(w.schema.tryDefinition(e.kind),v):e.id})(),[B,A]=(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 F=v.getBoundingClientRect(),re=G.getBoundingClientRect(),ie=v.offsetWidth>0?F.width/v.offsetWidth:1,de={top:Math.round((re.top-F.top)/ie)-9,right:Math.round((F.right-re.right)/ie)+14};A(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 D=e.plane-(1-(e.depth??1))*.55,H=Math.max(0,Math.min(2,Math.floor(D))),Y=Math.max(0,Math.min(2,Math.ceil(D))),K=H===Y?Ue(H,s):pn(Ue(H,s),Ue(Y,s),D-H),W=rr(K,e.x,e.y,l,u),ge=Ue(Math.max(0,Math.min(2,Math.round(D))),s).blur,me=(0,ut.useRef)(null);xi(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 Ae of[J,...J.querySelectorAll("*")]){let Se=getComputedStyle(Ae).overflowY;(Se==="auto"||Se==="scroll")&&(de+=Ae.scrollHeight-Ae.clientHeight)}}a(ie+de)},T=0,G=()=>{T||(T=requestAnimationFrame(()=>{T=0,N()}))};N();let F=new ResizeObserver(G);F.observe(v);for(let ie of v.children)F.observe(ie);let re=new MutationObserver(G);return re.observe(v,{childList:!0,subtree:!0,characterData:!0,attributes:!0}),()=>{T&&cancelAnimationFrame(T),F.disconnect(),re.disconnect(),a(void 0)}},[i,a,e.id]);let z=t?{transform:ri(W),transformOrigin:"0 0",filter:ge>0?`blur(${ge}px)`:void 0,opacity:(1-K.falloff*.55)*(e.opacity??1),"--graview-lift-low":oi(K.shadow,s),...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":h||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":d||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?`${Xr[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":C,"aria-keyshortcuts":M&&!e.beyond?M.key:void 0,tabIndex:0,onPointerDown:R,onPointerMove:O,onPointerUp:E,onPointerCancel:E,onClick:v=>{if(S.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=At(v.target);if(G&&G!==e.id){v.stopPropagation(),x(G,T,Fn(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=At(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=At(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=Fn(v.target);(G?m.length===G.length&&G.every(re=>m.includes(re)):m.length===1&&m[0]===T)&&!v.metaKey&&!v.shiftKey?p(T):x(T,v.metaKey||v.shiftKey,G??void 0)},onContextMenu:v=>{let N=At(v.target);v.preventDefault(),v.stopPropagation();let T=N&&N!==e.id?N:e.id;x(T,!1,(T===N?Fn(v.target):null)??void 0),f({x:v.clientX,y:v.clientY,on:T})},onDoubleClick:v=>{let N=At(v.target);if(N&&N!==e.id){v.stopPropagation(),p(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",...z},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:j}):j,Math.round(e.plane)===0&&!e.aggregate?(0,Qt.jsxs)("span",{"data-graview-kindtag":"",className:"graview-kind-tag","aria-hidden":"true",style:{...B??{},"--graview-hue":Math.round(Mt(e.kind,k?.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,k?.accents))} 55% var(--graview-tint-lightness) / 0.9)`}}),zo(w.schema.tryDefinition(e.kind),e.kind)]}):null]})}var ue=ee(be(),1);var Ha=e=>e?{activity:e}:{},Da=e=>`${Math.round(e.x)} ${Math.round(e.y)}`,Bn=e=>e.stopPropagation(),ki=.6,Si=3,Fa=80,bi=e=>Math.round(e.plane)===1&&(e.compact===!0||e.width<175||e.height<Fa);function Ba(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 ja(){let[e,t]=(0,q.useState)(void 0),n=(0,q.useCallback)(r=>t(r&&Math.round(r)),[]);return[e,n]}function Va(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:pt(e,r),[e,t,r]),i=(0,q.useRef)(t);i.current=t;let a=(0,q.useCallback)((d,c)=>{let s=i.current,l=(u,h,g)=>Math.max(Math.min(-u,h),Math.min(Math.max(u,h),g+h))-h;return{x:l(d.x,s.x,c.x),y:l(d.y,s.y,c.y)}},[]);return[r,o,a,i,n]}function Wa(e,t,n,r,o,i){let a=n!==null&&!t.overview,d=a?null:n,c=(0,q.useMemo)(()=>{let h=t.pan?{...t,pan:void 0}:t;return d?Kt(h,d.id,{x:d.x,y:d.y}):h},[t,d]),s=(0,q.useMemo)(()=>On(e.graph,e.schema,c,r),[e,c,r,o]),l=(0,q.useMemo)(()=>n&&a?bo(s,n.id,{x:n.x,y:n.y})??On(e.graph,e.schema,Kt(c,n.id,{x:n.x,y:n.y}),r):s,[s,n,a,e,c,r]);return[(0,q.useMemo)(()=>vo(l,i??{x:0,y:0}),[l,i]),a]}function _a(){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 Ya(e){let t=(0,q.useRef)(!1),n=e!==null&&!t.current;return(0,q.useEffect)(()=>{e!==null&&(t.current=!0)},[e]),n}function za({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 Ka(e,t){(0,q.useEffect)(()=>{let n;return e.onActive(r=>{let o=t.current;if(!o)return;let i=d=>{let c=o.getBoundingClientRect();e.set({x:d.clientX-c.left,y:d.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 Ga(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(s=>o.has(s)))&&a.add(c.id);let d=t({canvas:i,layout:r,dirty:a,hostOf:c=>i.querySelector(`[data-graview-view="${CSS.escape(c)}"]`)});return()=>{d?.()}},[e,t,r,o])}function Ua(){let e=ar();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,d=n?.broke??!1;for(let c of r){let s=e.get(c);s&&(i||=s.wrote,a||=s.read,d||=s.broke,(!o||s.at>o.at||s.at===o.at&&s.wrote&&!o.wrote)&&(o=s))}return o?{...o,wrote:i,read:a,broke:d}:void 0}}var vi=(e,t)=>e.includes(t)?e.filter(n=>n!==t):[...e,t];function Xa(){let{views:e,view:t,setView:n,setSelection:r}=le(),o=Lt(),i=a=>{if($e(a.id)===null&&!a.aggregate)return!1;let d=e.resolve(a.kind,{cardinality:"many",fidelity:"full"})?.view;return d!==void 0&&d.generic!==!0};return a=>({onSelect:d=>{if(Gt(a.id)){r(s=>d?vi(s,a.id):[a.id]);return}let c=a.aggregate?Jt(a.id):[];if(t.overview){r(s=>d?[...new Set([...s,a.id])]:[a.id]);return}if(c.length===1&&!d&&Math.round(a.plane)!==0){let s=c[0];n(l=>Un(l,l.relation===s?null:s));return}r(s=>Po(a,s,d))},onPick:(d,c,s)=>r(l=>s?c?[...new Set([...l,...s])]:[...s]:c?vi(l,d):[d]),onTravel:d=>{n(c=>({...Ot(c,d),relation:null})),r([d])},onJackIn:()=>{let d=a.aggregate?.opens;if(d){d.in==="place"?n(l=>qn(l,a.id)):n(l=>Object.entries(d.within).reduce((u,[h,g])=>Xn(u,h,g),Ot(zt(l,!1),d.focus))),r([]);return}let c=$e(a.id),s=c!==null&&(o?.byKind[c]??0)>0;n(l=>Qn(l,a.id,{ownPicture:i(a),...s&&l.q?{carry:l.q}:{}})),r(a.aggregate?[]:[a.id])}})}function qa({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=>zt(i,!1))},onPointerDown:Bn,onDoubleClick:Bn,children:"Open \u2197"})]})}function Qa({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:Bn,onClick:Bn,children:[n("out","\u2212",1/1.25,e<=ki+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>=Si-1e-6)]})}function Za({options:e,renderer:t="auto",attachRenderer:n,className:r,style:o,animate:i=!0,children:a}){let d=le(),{store:c,scheme:s,views:l,view:u,setView:h,selection:g,setSelection:x,setMenuAt:p,emphasis:f,brand:m,noteMoved:b,robots:R,seatTalk:O,motion:E}=d,S=eo(O),j=(0,q.useRef)(null),k=(0,q.useRef)(null),w=ni(k),M=ti(),C=sr(k,M,m),B=(0,q.useMemo)(()=>P=>Ut(P,132,C),[C]),{zoomAbout:A,panBy:$}=Ur({stage:k,view:u,setView:h}),D=It(),H=u.overview&&u.within?.view!==void 0?1.5:1,[Y,K,W]=Ba(u.overview),[ge,me]=ja(),X=mi(e,w,M,C,S,H*Y,ge,D),[oe,L,z,v,N]=Va(u),T=(0,q.useMemo)(()=>new Set(Object.keys(u.pins)),[u.pins]),G=zr(),[F,re]=Wa(c,u,G.held,X,D,L.pan),[ie,de,J,Ae,Se,et]=_a(),Ye=Ya(w),U=$r(F,{enabled:i&&!ie&&!de&&w!==null&&!Ye});(0,q.useEffect)(()=>E.set(ie||de||U.t<1),[E,ie,de,U]);let Le=Hr(),tt=Dr(),nt=F.nodes.find(P=>P.screenOf!==void 0)?.id??null,Fe=Yr({view:u,result:F,frame:U,panned:oe,closer:H,screenId:nt,setCamera:N});za(d,U,k),Ka(d.pointer,k),Ga(t,n,j,U,Le);let Je=t==="dom"||t==="auto"&&!n,ht=Ua(),Ne=Kr({stage:k,pan:u.pan,setView:h,settled:et});Se.current=Ne.settle;let{onGroundDown:ft,onCardDown:yt,onDragMove:ze,onDragUp:ot,swallow:Ie}=Gr({view:u,panned:oe,limit:()=>wt(F),panWithin:z,moveByTransform:Je,setView:h,setDragging:J,noteMoved:b,shift:Ne,district:G});A.current=(P,ae,he)=>{if(!u.overview)return;Se.current();let Re=K.current,it=Math.max(ki,Math.min(Si,Re*P));if(Math.abs(it-Re)<1e-4)return;K.current=it,Ae(),W(it);let at=k.current?.getBoundingClientRect(),Ke={x:F.width/2,y:F.height/2},Be=at&&ae!==void 0&&he!==void 0?{x:ae-at.left,y:he-at.top}:Ke,an=it/Re;h(Ft=>pt(Ft,wo(Ft.pan??{x:0,y:0},v.current,Be,Ke,an))),b()};let kt=(P,ae,he=wt(F))=>h(Re=>pt(Re,z(he,{x:(Re.pan?.x??0)+P,y:(Re.pan?.y??0)+ae})));$.current=(P,ae)=>{Ae();let he=wt(F),Re=u.pan??{x:0,y:0};if(Je){let it=Ne.offset();Ne.shiftTo(z(he,{x:Re.x+it.x+P,y:Re.y+it.y+ae}),Re)}else kt(P,ae,he);b()};let ne=Xa(),xe=P=>ht(U.nodes.find(ae=>ae.id===P)),rt=(P,ae,he,Re)=>P.originY+oe.y+ve(he.col+he.side/2,he.row+he.side/Re,P.cell).y-ae.y,Me={width:F.width,height:F.height},gt={position:"relative",zIndex:Te.stage,...Me},mt=P=>In(U,k.current,s,l,P),St=U.nodes.map(P=>(0,ue.jsxs)(wi,{node:P,crowded:bi(P),useDom:Je,...P.plot&&U.city&&Math.round(P.plane)===2?{frontY:rt(U.city,P,P.plot,1),centerY:rt(U.city,P,P.plot,2)}:{},...P.screenOf!==void 0?{screen:!0,...P.id===nt?{onDrawnHeight:me}:{}}:{},touched:Le.has(P.id),...Ha(ht(P)),scheme:s,canvasWidth:F.width,canvasHeight:F.height,selected:g.includes(P.id),...ne(P),onMenu:p,selection:g,onDragStart:ae=>yt(P,ae),onDragMove:ze,onDragEnd:ot,swallowClick:Ie,children:[P.screenOf!==void 0?(0,ue.jsx)(qa,{node:P}):null,P.beyond?(0,ue.jsx)(Qr,{kinds:P.beyond}):P.aggregate?.opens?(0,ue.jsx)(ei,{node:P}):(0,ue.jsx)(Zr,{node:P,mode:"scene",selected:g.includes(P.id),...bi(P)?{fidelity:"glyph"}:{}})]},P.id));return(0,ue.jsx)(dr.Provider,{value:B,children:(0,ue.jsxs)("div",{ref:k,className:`graview-ground${r?` ${r}`:""}`,"data-graview-altitude":u.overview?"":void 0,"data-graview-reach":U.city?Da(wt(F)):void 0,"data-graview-settled":U.t>=1&&!Fe.gliding()?"":void 0,"data-graview-box":w?`${w.width}x${w.height}`:void 0,onPointerDown:ft,onPointerMove:ze,onPointerUp:ot,onPointerCancel:ot,onClick:P=>{Ie.current||P.target.closest("[data-graview-view], button, aside, section[aria-label], [data-graview-offstage], a, input, select")||(x([]),p(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)(Br,{frame:U,...Me,pan:U.city?U.city.pan:oe,brand:m,pinned:T,swallowed:Ie,onFocus:P=>{let ae=$e(P);ae!==null&&h(he=>Ot(he,Ee(ae)))}}),Je?(0,ue.jsx)("div",{"data-graview-stage":"dom","data-graview-world":"",style:{...gt,overflow:"hidden"},children:St}):(0,ue.jsx)("canvas",{ref:j,"data-graview-stage":"gpu",layoutsubtree:"",...Me,style:{display:"block",...gt},children:St}),u.overview&&!ie?(0,ue.jsx)(_r,{result:F,schema:c.schema,onGo:P=>{kt(P.x,P.y),b()}}):null,u.overview?(0,ue.jsx)(Qa,{zoom:Y,zoomBy:P=>A.current(P)}):null,(0,ue.jsx)(yi,{frame:U,holding:re,...Me,scheme:s,overview:!!u.overview,selection:g,emphasis:f,stageRef:k,store:c,graphNodes:D,onPickEdge:(P,ae)=>{Ie.current||(x([P]),p(ae?{...ae,on:P}:null))},liveOf:P=>{let ae=xe(P.from),he=xe(P.to);return ae?.wrote&&he?.wrote?ae.at>he.at?ae:he:void 0}}),(0,ue.jsx)(jr,{width:F.width,whereIs:mt}),(0,ue.jsx)(Fr,{marks:tt.marks,questions:[...R.values()].filter(P=>P.mode==="asking"&&P.at!==null&&P.say).map(P=>({id:P.at,who:P.who,asks:P.say})),whereIs:mt,stageRef:k,...Me}),(0,ue.jsx)(gi,{nodes:U.nodes,moving:U.t<1,holding:re,scheme:s,width:F.width,stageRef:k}),a]})})}var Ze=ee(He(),1);function Ja(){return Ei(),null}var Oi=()=>window.location.pathname.endsWith(Uo),Mi=()=>(Oi()?Zo:Gn)(window.location.hash),es=e=>(Oi()?Jo:Kn)(e);function Ei(){let{view:e,setView:t,views:n,principal:r}=le(),o=JSON.stringify(r),i=(0,Ze.useCallback)(l=>{let u=l.within?.view;if(u===void 0||l.focusId)return l;let h=n.places().find(g=>g.as===u);return h?{...l,focusId:Ee(h.kind)}:l},[n]),a=(0,Ze.useRef)(!1);(0,Ze.useEffect)(()=>{if(typeof window>"u")return;let l=i(Mi());!fn(l,zn)&&!fn(l,e)&&(a.current=!0,t(l))},[]),(0,Ze.useEffect)(()=>{if(typeof window>"u")return;let l=()=>t(i(Mi()));return window.addEventListener("popstate",l),window.addEventListener("hashchange",l),()=>{window.removeEventListener("popstate",l),window.removeEventListener("hashchange",l)}},[t,i]);let d=(0,Ze.useRef)(!1),c=(0,Ze.useRef)(null),s=(0,Ze.useRef)(o);(0,Ze.useEffect)(()=>{if(typeof window>"u")return;if(a.current){a.current=!1;return}let l=s.current!==o;s.current=o;let u=es(e),h=u||`${window.location.pathname}${window.location.search}`;if((window.location.hash||(window.location.href.includes("#")?"#":""))===u){d.current=!0,c.current=e;return}if(!d.current){d.current=!0,c.current=e,window.history.replaceState({graview:Nt.at},"",h);return}if(l||Pi(c.current,e)){window.history.replaceState({graview:Nt.at},"",h),c.current=e;return}c.current=e,window.history.pushState({graview:++Nt.at},"",h),Nt.depth=Nt.at,Nt.tell()},[e,o])}function Pi(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(",")&&ts(e.within,t.within):!1}function ts(e,t){let n=r=>Object.entries(r??{}).sort(([o],[i])=>o.localeCompare(i)).map(([o,i])=>`${o}=${i}`).join("&");return n(Ri(e))===n(Ri(t))}function Ri(e){if(!e||!("q"in e))return e;let{q:t,...n}=e;return n}var To=ee(He(),1);function ns(e={}){let{store:t,selection:n,principal:r,providers:o}=le(),{about:i,...a}=e,d=i??n,c=It();return(0,To.useMemo)(()=>{let s=[...new Set(d.flatMap(u=>Jt(u)))],l=d.map(u=>Rt(u)).filter(u=>u!==null);return hr(t,d,{principal:r,kindSelection:s,edgeSelection:l,...o?{providers:o}:{},...a})},[t,d,e,c,r,o])}function os(){let{store:e,principal:t}=le();return(0,To.useMemo)(()=>({preview:(n,r)=>yr(e,n,r??{}),apply:(n,r)=>fr(e,n,r??{},{author:t})}),[e,t])}export{Di as a,Zi as b,Ji as c,ea as d,ta as e,na as f,oa as g,Za as h,Ja as i,ns as j,os as k};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as l,H as p,O as k,P as y,c}from"./chunk.HQX5FGYT.js";import"./chunk.F26676IW.js";import"./chunk.ONDILMIX.js";import{b as m}from"./chunk.G3BOZHKR.js";import"./chunk.IKT7JQUW.js";import"./chunk.6DU4XN2F.js";import"./chunk.US4KIJSW.js";import"./chunk.LHFEOEYY.js";import"./chunk.U6BWYBPM.js";import"./chunk.QOYC424P.js";import"./chunk.B57EIGTS.js";import"./chunk.2YVXTTC2.js";import"./chunk.WWRWXFYR.js";import"./chunk.BJ2Y5F66.js";import"./chunk.A4SJ7EEY.js";import"./chunk.6KJSFIO7.js";import"./chunk.DEZEXD24.js";import"./chunk.YZZGD5OY.js";import"./chunk.DSZ3I557.js";import"./chunk.SSOTDXRS.js";import"./chunk.ZRVDIVYY.js";import"./chunk.AHDOKM4O.js";import"./chunk.PY42PBMB.js";import"./chunk.JCZH55RX.js";import{U as s,W as d,da as g}from"./chunk.2WFEFZAW.js";import"./chunk.RAE4M3KQ.js";import{a as S,b as f}from"./chunk.MRK6QJV5.js";import{b as n}from"./chunk.AJZBJBMO.js";var u=n(S(),1);var t=n(f(),1);function D({context:a}){let r=l(),h=g(),[w]=(0,u.useState)(()=>s(null)),o=d(h?.seatTalk??w),P=()=>{(window.history.state?.idx??0)>0?r(-1):r("/")};return(0,t.jsxs)(k,{context:a,"data-testid":"draft-page",children:[(0,t.jsx)(y,{context:a,...o.draft?{"data-testid":"draft-title"}:{},children:o.draft?o.draft.title:"Nothing drawn"}),o.draft?(0,t.jsx)(m,{page:!0,go:e=>r(e.address),onPick:e=>{let i=a.store.graph.getNode(e);i&&r(c(a.store.schema,i.kind,e))},onDiscard:P}):(0,t.jsxs)("p",{style:{margin:0,color:"var(--graview-ink-muted)"},children:["Ask for a way of seeing \u2014 \u201Ca board of tasks by status\u201D \u2014 and it is drawn here."," ",(0,t.jsx)(p,{to:"/",style:{color:"var(--graview-accent)"},children:"Home \u2192"})]})]})}export{D as DraftPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as U,b as V,c as W,d as q,e as b,f as z,h as J}from"./chunk.DJ72CUS7.js";import{a as L,b as H,c as A,d as X,j as Q,k as Z,l as ee}from"./chunk.A4SJ7EEY.js";import{a as M,b as K,c as E,d as Y,e as F,g as R,h as ne}from"./chunk.YZZGD5OY.js";import{b as B,g as u,h as I,i as G}from"./chunk.DSZ3I557.js";var ce={};function te(e,t=ce,i=H){let{document:r,respelled:f}=U(e),l=f.length>0?{respelled:f}:{};if(!r||typeof r!="object"||Array.isArray(r))return{document:r};let p=r;if(p.format!==L||typeof p.formatVersion!="number"||p.formatVersion>=i)return{document:r,...l};let a=p.formatVersion,o=structuredClone(p);for(let s=a;s<i;s++){let c=t[s];if(!c)throw new Error(`there is no upgrade from format ${s} to ${s+1}`);o={...c(o),formatVersion:s+1}}return{document:o,from:a,...l}}function se(e,t,i){let r=Object.keys(e).filter(a=>e[a].edges?.[t]!==void 0);if(r.length===0)return;let f=r.map(a=>e[a].edges[t].to),l=f.some(a=>a==="*")?"*":[...new Set(f.flatMap(a=>a))];if(i.length===0||i.some(a=>r.includes(a)))return{reversed:!1,kinds:l};let p=r.filter(a=>{let o=e[a].edges[t].to;return o==="*"||i.every(s=>o.includes(s))});return p.length>0?{reversed:!0,kinds:p}:{reversed:!1,kinds:l}}function oe(e,t,i=`kinds.${e}.page`){let r=t.page;if(!r)return[];let f=[],l=[...Object.keys(t.fields),...Object.keys(t.computed??{})],p=new Set,a=(s,c)=>{l.includes(s)?p.has(s)&&f.push(u("page-field-twice",c,`"${s}" is on ${e}'s page twice; name each field once`)):f.push(u("page-field",c,`${e}'s page is to show "${s}", and ${e} has no field or computed field called that`,`use one of: ${l.join(", ")}`)),p.add(s)};(r.fields??[]).forEach((s,c)=>a(s,`${i}.fields.${c}`));let o=new Set;return(r.groups??[]).forEach((s,c)=>{let d=s.title.trim().toLowerCase();o.has(d)&&f.push(u("page-group-twice",`${i}.groups.${c}.title`,`${e}'s page has two groups called "${s.title}"; give each its own title`)),o.add(d),s.fields.forEach(($,n)=>a($,`${i}.groups.${c}.fields.${n}`))}),f}var de=new Set(["subject","now","today"]);function fe(e){if(typeof e=="string"){if(e.length>A)return{findings:[u("too-large","",`a document may be at most ${A/1024} KB`)]};try{e=JSON.parse(e)}catch(r){return{findings:[u("not-json","",`this is not JSON: ${r.message}`)]}}}else if(JSON.stringify(e??null).length>A)return{findings:[u("too-large","",`a document may be at most ${A/1024} KB`)]};try{e=te(e).document}catch(r){return{findings:[u("format","formatVersion",r.message)]}}let t=X.safeParse(e);if(!t.success)return{findings:t.error.issues.map(r=>{let f=r.path.map(String).join(".");if(r.code==="unrecognized_keys")return u("unknown-key",f,`${r.keys.map(l=>`"${l}"`).join(", ")} ${r.keys.length===1?"is":"are"} not part of a Graview document here`,"check the spelling against docs/declaration-document.md");if(r.code==="invalid_union"&&/\.effects\.\d+$/.test(f))return u("effect-shape",f,"this effect is not one Graview knows",'an effect is one of {"create": kind, "as"?: name, "set"?: {field: value}}, {"set": {field: value, \u2026}, "target"?: "$ref"}, {"connect"|"sever": relation, "from": "$ref", "to": "$ref"}, {"remove": "$ref"}');if(r.code==="invalid_key"){let l=r.issues?.[0]?.message;return u("shape",f,`the name "${String(r.path.at(-1))}" is not allowed here${l?`: ${l}`:""}`)}return u("shape",f,r.message)})};let i=t.data;return{document:i,findings:le(i)}}var P=e=>e===void 0?[]:Array.isArray(e)?e:[e];function re(e){let t=new Map;for(let[i,r]of Object.entries(e.kinds))for(let[f,l]of Object.entries(r.edges??{})){let p=t.get(f);t.set(f,{name:f,from:[...p?.from??[],i],to:l.to==="*"||p?.to==="*"?"*":[...new Set([...p?.to??[],...l.to])],cardinality:l.cardinality??"many"})}return t}function Ge(e){let t=new Map;for(let[r,f]of Object.entries(e.kinds)){let l=R(f);t.set(r,{fields:new Set(Object.keys(f.fields)),edges:new Map(Object.entries(f.edges??{}).map(([p,a])=>[p,a.cardinality??"many"])),...l?{computed:l}:{}})}let i=R(e);return i&&t.set(B,{computed:i}),t}function ie(e,t){let i=[],r=P(e.on),f=(l,p)=>{let a=se(t.kinds,l,r)?.reversed===!0,[o,s]=a?["$to","$subject"]:["$subject","$to"];return p==="connect"?{connect:l,from:o,to:s}:{sever:l,from:o,to:s}};if(e.creates){let l=t.kinds[e.creates],p={};for(let a of Object.keys(l?.fields??{}))p[a]=`$${a}`;for(let a of e.effects??[])"set"in a&&!("create"in a)&&b(a.target)==="new"&&Object.assign(p,a.set);i.push({create:e.creates,as:"new",set:p})}return e.sets&&i.push({set:e.sets}),e.writes&&!(e.creates&&e.on===void 0)&&i.push({set:Object.fromEntries(e.writes.map(l=>[l,`$${l}`]))}),e.connects&&(e.replaces&&i.push({replace:e.replaces===!0?[e.connects]:[...e.replaces],keep:e.connects}),i.push(f(e.connects,"connect"))),e.severs&&i.push(f(e.severs,"sever")),e.setsOther&&(e.connects||e.severs)&&i.push({set:e.setsOther,target:"$to"}),e.removes&&i.push({remove:"$subject"}),e.effects&&i.push(...e.effects.filter(l=>!(e.creates&&"set"in l&&!("create"in l)&&b(l.target)==="new"))),i}function C(e,t,i){try{let r=E(e),f=M(r);for(let l of f.unknownFunctions)i.push(u("unknown-function",t,`"${l}" is not a function the rule language knows`,"see docs/declaration-document.md#expression-language"));return r}catch(r){if(r instanceof K){i.push(u("expression",t,r.sentence+` (at character ${r.at+1})`));return}throw r}}function N(e,t,i){try{return F(e)}catch(r){if(r instanceof Y||r instanceof K){i.push(u("template",t,(r instanceof K,r.sentence)));return}throw r}}function le(e){let t=[],i=new Set(Object.keys(e.kinds)),r=re(e),f=e.acts??{},l=new Set(e.roles??[]);for(let[a,o]of Object.entries(e.kinds)){let s=`kinds.${a}`;for(let[d,$]of Object.entries(o.edges??{})){if($.to!=="*")for(let n of $.to)i.has(n)||t.push(u("edge-target",`${s}.edges.${d}.to`,`"${n}" is not a kind this document declares`));o.fields[d]&&t.push(u("edge-field-clash",`${s}.edges.${d}`,`"${d}" is both a field and a relation of ${a}`,"rename one of them"))}o.lifecycle&&!o.fields[o.lifecycle.field]&&t.push(u("lifecycle-field",`${s}.lifecycle.field`,`${a} has no field "${o.lifecycle.field}"`));let c=d=>o.computed!==void 0&&Object.hasOwn(o.computed,d);for(let d of o.glance??[])!o.fields[d]&&!c(d)&&t.push(u("glance-field",`${s}.glance`,`a glance at ${a} is to say "${d}", and ${a} has no field or computed field called that`,`use one of: ${[...Object.keys(o.fields),...Object.keys(o.computed??{})].join(", ")}`));t.push(...oe(a,o));for(let d of["label","describe"]){let $=o[d];if(!$)continue;let n=N($,`${s}.${d}`,t);for(let m of n??[])if(m.expr){for(let y of M(m.expr).names)if(!o.fields[y]){if(c(y)){ne(o,y)||t.push(u("template-field",`${s}.${d}`,`${a}'s ${y} is worked out from beyond the record, and a ${d} is said with no graph to read`,`show it in a view instead, or name a computed field worked out from ${a}'s own fields`));continue}t.push(u("template-field",`${s}.${d}`,`${a} has no field "${y}" for its ${d} to show`,d==="label"?"a label can only show the record's own fields and what they work out":void 0))}}}for(let[d,$]of Object.entries(o.fields))$.default!==void 0&&$.type==="enum"&&!$.options?.includes(String($.default))&&t.push(u("default-option",`${s}.fields.${d}.default`,`"${String($.default)}" is not one of ${d}'s options`))}for(let[a,o]of Object.entries(f)){let s=`acts.${a}`;for(let n of P(o.on))i.has(n)||t.push(u("act-kind",`${s}.on`,`"${n}" is not a kind this document declares`));let c=P(o.on),d=ie(o,e);if(o.creates&&o.on===void 0&&o.writes&&i.has(o.creates))for(let n of o.writes)e.kinds[o.creates].fields[n]||(e.kinds[o.creates].computed?.[n]!==void 0?t.push(u("computed-written",`${s}.writes`,`${o.creates}'s ${n} is worked out, not written: no act can set it`,"write the stored fields it is worked out from")):t.push(u("act-field",`${s}.writes`,`${o.creates} has no field "${n}"`)));d.length===0&&t.push(u("act-empty",s,`"${a}" does nothing`,"give it effects or a shorthand such as sets or creates"));let $=new Map;d.forEach((n,m)=>{let y=d.length-(o.effects?.length??0),w=o.effects&&m>=y?`${s}.effects.${m-y}`:s;if("create"in n){if(!i.has(n.create))t.push(u("act-kind",`${w}.create`,`"${n.create}" is not a kind this document declares`));else for(let h of Object.keys(n.set??{}))e.kinds[n.create].fields[h]||(e.kinds[n.create].computed?.[h]!==void 0?t.push(u("computed-written",`${w}.set.${h}`,`${n.create}'s ${h} is worked out, not written: no act can set it`,"set the stored fields it is worked out from")):t.push(u("act-field",`${w}.set.${h}`,`${n.create} has no field "${h}"`)));n.as&&$.set(n.as,n.create)}else if("connect"in n||"sever"in n){let h="connect"in n?n.connect:n.sever;r.has(h)||t.push(u("act-edge",`${w}.${"connect"in n?"connect":"sever"}`,`"${h}" is not a relation any kind declares`)),b(n.from)==="subject"&&c.length===0&&t.push(u("act-subject",`${s}.on`,`"${a}" acts on "$subject" but does not say which kinds it is "on"`))}else if("set"in n){let h=b(n.target??"$subject"),O=h==="subject"?c:$.has(h??"")?[$.get(h)]:[];h==="subject"&&c.length===0&&t.push(u("act-subject",`${s}.on`,`"${a}" changes "$subject" but does not say which kinds it is "on"`));for(let S of Object.keys(n.set))for(let x of O)!i.has(x)||e.kinds[x].fields[S]||(e.kinds[x].computed?.[S]!==void 0?t.push(u("computed-written",`${w}.set.${S}`,`${x}'s ${S} is worked out, not written: no act can set it`,"set the stored fields it is worked out from")):t.push(u("act-field",`${w}.set.${S}`,`${x} has no field "${S}"`)))}else"remove"in n&&b(n.remove)==="subject"&&c.length===0&&t.push(u("act-subject",`${s}.on`,`"${a}" removes "$subject" but does not say which kinds it is "on"`));("set"in n&&n.set?Object.values(n.set):[]).forEach(h=>{h&&typeof h=="object"&&!Array.isArray(h)&&"expr"in h&&C(h.expr,`${w}.set`,t)})}),o.allowedWhen&&C(o.allowedWhen,`${s}.allowedWhen`,t),o.refusal&&N(o.refusal,`${s}.refusal`,t)}for(let[a,o]of Object.entries(e.rules??{})){let s=`rules.${a}`;o.over!=="graph"&&!i.has(o.over)&&t.push(u("rule-kind",`${s}.over`,`"${o.over}" is not a kind this document declares`));let c=o.over==="graph"?void 0:e.kinds[o.over];for(let d of["when","require"]){let $=o[d];if(!$)continue;let n=C($,`${s}.${d}`,t);if(!n)continue;let m=M(n);for(let y of m.names)if(o.over==="graph")t.push(u("rule-name",`${s}.${d}`,`"${y}" means nothing in a rule over the whole graph`,`name a kind in "over", or use all('kind')`));else if(c&&!c.fields[y]&&!c.edges?.[y]&&c.computed?.[y]===void 0){let w=Object.keys(c.edges??{}).find(v=>v.includes("-")&&v.split("-").includes(y));t.push(u("rule-name",`${s}.${d}`,`${o.over} has no field or relation called "${y}"`,w?`"${w}" reads as a subtraction in a rule; rename the relation to one camelCase word, like "${w.replace(/-([a-z0-9])/g,(v,h)=>h.toUpperCase())}"`:void 0))}for(let y of m.edges)r.has(y)||t.push(u("rule-edge",`${s}.${d}`,`"${y}" is not a relation any kind declares`));for(let y of m.sweeps)i.has(y)?o.over!=="graph"&&t.push(I("rule-cost",`${s}.${d}`,`this rule looks at every ${y} for every ${o.over}, which grows slowly as the app grows`,"walk a relation with out()/in() instead of all() where you can")):t.push(u("rule-kind",`${s}.${d}`,`"${y}" is not a kind this document declares`))}o.says&&N(o.says,`${s}.says`,t),(o.repairs??[]).forEach((d,$)=>{!f[d.act]&&!/^(edit|remove)-/.test(d.act)&&t.push(u("repair-act",`${s}.repairs.${$}.act`,`"${d.act}" is not an act this document declares`))})}let p=e.policy;return p&&(p.grants.forEach((a,o)=>{if(a.roles!=="*"&&l.size>0)for(let s of a.roles)l.has(s)||t.push(u("grant-role",`policy.grants.${o}.roles`,`"${s}" is not one of the document's roles`));if(a.mutations!=="*")for(let s of a.mutations)!f[s]&&!/^(edit|remove)-/.test(s)&&t.push(u("grant-act",`policy.grants.${o}.mutations`,`"${s}" is not an act this document declares`))}),(p.sees??[]).forEach((a,o)=>{for(let s of a.kinds)i.has(s)||t.push(u("sight-kind",`policy.sees.${o}.kinds`,`"${s}" is not a kind this document declares`));if(a.roles!=="*"&&l.size>0)for(let s of a.roles)l.has(s)||t.push(u("sight-role",`policy.sees.${o}.roles`,`"${s}" is not one of the document's roles`))})),t.push(...ee(e)),t}function ue(e,t,i,r){let f=new Map,l=P(e.on),p=new Map,a=new Map;(l.length>0||t.some(n=>"remove"in n&&b(n.remove)==="subject"||"from"in n&&(b(n.from)==="subject"||b(n.to)==="subject")||"set"in n&&!("create"in n)&&b(n.target??"$subject")==="subject"))&&f.set(q,{ref:l.length>0?l:"*",required:!0});let s=e.args??{},c=e.writes?.length===1,d=(n,m)=>m&&n.type===m.type&&n.min===void 0&&n.max===void 0&&n.step===void 0?{...n,...m.min===void 0?{}:{min:m.min},...m.max===void 0?{}:{max:m.max},...m.step===void 0?{}:{step:m.step}}:n,$=(n,m,y)=>{if(n===q||de.has(n)||p.has(n)||f.has(n))return;let w=s[n]?d(s[n],y):void 0;f.set(n,w?{field:w,optional:!w.required,required:!!w.required}:m())};for(let n of t)if("create"in n){let m=i.kinds[n.create];for(let[y,w]of Object.entries(n.set??{})){let v=b(w),h=m?.fields[y];if(v&&h){let O=!!h.required&&h.default===void 0;$(v,()=>({field:h,optional:!O,required:O}),h)}}n.as&&p.set(n.as,n.create)}else if("connect"in n||"sever"in n){let m=r.get("connect"in n?n.connect:n.sever);for(let[y,w]of[["from",n.from],["to",n.to]]){let v=b(w);if(!v)continue;let h=y==="to"?m?.to??"*":m?.from??"*";h!=="*"&&!a.has(v)&&a.set(v,h),$(v,()=>({ref:h,required:!0}))}}else if("set"in n){let m=b(n.target??"$subject"),y=m==="subject"?l[0]:p.get(m??"")??a.get(m??"")?.[0];m&&m!=="subject"&&!p.has(m)&&$(m,()=>({ref:"*",required:!0}));for(let[w,v]of Object.entries(n.set)){let h=b(v);if(!h)continue;let O=y?i.kinds[y]?.fields[w]:void 0;$(h,()=>O?{field:O,optional:!c,required:c}:{any:!0,required:!1},O)}}else if("remove"in n){let m=b(n.remove);m&&$(m,()=>({ref:"*",required:!0}))}for(let[n,m]of Object.entries(s))f.has(n)||f.set(n,{field:m,optional:!m.required,required:!!m.required});return f}function qe(e,t={}){let i=fe(e);if(!i.document||G(i.findings))return{ok:!1,findings:i.findings};let r=i.document,f=[...i.findings];t.previous&&f.push(...ge(r,t.previous));let l=pe(r,f);return G(l.findings)?{ok:!1,findings:l.findings}:J(l,t)}function pe(e,t){let i=re(e),r={};for(let[s,c]of Object.entries(e.kinds)){let d=z(c),$=c.label??(d?`{${d}}`:void 0),n=R(c);r[s]={...$?{label:F($)}:{},...c.describe?{describe:F(c.describe)}:{},...n?{computed:[...n]}:{}}}let f={};for(let[s,c]of Object.entries(e.acts??{})){let d=ie(c,e),$=ue(c,d,e,i),n=c.destructive??d.some(g=>"remove"in g||"sever"in g||"replace"in g),m=[...new Set(d.flatMap(g=>"create"in g?[g.create]:[]))],y=[...new Set(d.flatMap(g=>"connect"in g?[g.connect]:[]))],w=[...new Set(d.flatMap(g=>"sever"in g?[g.sever]:"replace"in g?g.replace:[]))],v=[...new Set(d.flatMap(g=>"set"in g&&!("create"in g)&&b(g.target??"$subject")==="subject"?Object.keys(g.set):[]))],h=new Map;for(let g of d){if(!("connect"in g)&&!("sever"in g))continue;let k=i.get("connect"in g?g.connect:g.sever);for(let[j,ae]of[["from",g.from],["to",g.to]]){let D=b(ae),T=j==="to"?k?.to:k?.from;D&&D!=="subject"&&T&&T!=="*"&&h.set(D,[...new Set([...h.get(D)??[],...T])])}}let O={};for(let g of d){if(!("set"in g)||"create"in g)continue;let k=b(g.target??"$subject");for(let j of k&&k!=="subject"&&h.get(k)||[])O[j]=[...new Set([...O[j]??[],...Object.keys(g.set)])]}let S={};for(let g of d)if(!(!("set"in g)||"create"in g||b(g.target??"$subject")!=="subject"))for(let[k,j]of Object.entries(g.set??{}))typeof j=="string"&&b(j)===void 0||typeof j=="number"||typeof j=="boolean"?S[k]=typeof j=="string"&&j.startsWith("$$")?j.slice(1):j:delete S[k];let x=m.length===0&&d.every(g=>!("set"in g)||!g.set||Object.values(g.set).every(k=>!(k&&typeof k=="object"&&!Array.isArray(k)&&"expr"in k))),_=new Map;for(let g of d)if(!(!("set"in g)||!g.set))for(let k of Object.values(g.set))k&&typeof k=="object"&&!Array.isArray(k)&&"expr"in k&&_.set(k.expr,E(k.expr));f[s]={title:c.title??s.replace(/-/g," "),effects:d,args:[...$],...c.allowedWhen?{guard:E(c.allowedWhen)}:{},...c.refusal?{refusal:F(c.refusal)}:{},exprs:[..._],destructive:n,idempotent:x,creates:m,connects:y,severs:w,writes:v,writesOther:O,sets:S}}let l={};for(let[s,c]of Object.entries(e.rules??{}))l[s]={title:c.title??s.replace(/-/g," "),require:E(c.require),...c.when?{when:E(c.when)}:{},...c.says?{says:F(c.says)}:{}};let p=V(e,t),a=Q(e),o=Z(e);return{format:W,document:e,findings:t,kinds:r,...e.computed?{facts:[...R(e)??[]]}:{},edges:[...i].map(([s,{from:c,to:d,cardinality:$}])=>[s,{from:c,to:d,cardinality:$}]),acts:f,rules:l,brand:p,...Object.keys(a).length>0?{viewSpecs:a}:{},...o?{home:o}:{}}}function Ce(e,t){let i=e.split(/[\s:·]/).find(r=>r.length>0)??e;return t.kinds[i]?`kinds.${i}`:t.acts?.[i]?`acts.${i}`:t.rules?.[i]?`rules.${i}`:e}function Ne(e,t,i){let r=/^defineNode\("([^"]+)"\)/.exec(t)?.[1],f=r?i.kinds[r]:void 0;if(!r||!f)return e;let l=Object.keys(f.fields).filter(p=>p!=="label").slice(0,3);return{...e,path:`kinds.${r}.glance`,fix:`Say which: "glance": [${l.map(p=>`"${p}"`).join(", ")}] on kinds.${r} \u2014 the facts a person compares one by, at a glance.`}}function ge(e,t){let i=[],r=new Set(Object.values(t.kinds).flatMap(f=>Object.keys(f.edges??{})));for(let[f,l]of Object.entries(e.kinds)){let p=l.renamedFrom;p&&!t.kinds[p]&&i.push(u("renamed-from-nothing",`kinds.${f}.renamedFrom`,`${f} says it was ${p}, and the previous version has no kind called ${p}`,"name the kind it was, or drop renamedFrom"));let a=t.kinds[p??f];for(let[o,s]of Object.entries(l.fields)){let c=s.renamedFrom;c&&!a?.fields[c]&&i.push(u("renamed-from-nothing",`kinds.${f}.fields.${o}.renamedFrom`,`${o} says it was ${c}, and the previous ${p??f} has no field called ${c}`,"name the field it was, or drop renamedFrom"))}for(let[o,s]of Object.entries(l.edges??{})){let c=s.renamedFrom;c&&!r.has(c)&&i.push(u("renamed-from-nothing",`kinds.${f}.edges.${o}.renamedFrom`,`${o} says it was ${c}, and the previous version has no relation called ${c}`,"name the relation it was, or drop renamedFrom"))}}return i}export{fe as a,Ge as b,ie as c,qe as d,Ce as e,Ne as f};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as I,c as x}from"./chunk.JIXW4WIO.js";import"./chunk.T6KID3WO.js";import"./chunk.6DU4XN2F.js";import"./chunk.MJ67MK4R.js";import"./chunk.US4KIJSW.js";import"./chunk.AHDOKM4O.js";import{C as G,c as b,d as A,j as v,x as w,z as O}from"./chunk.2WFEFZAW.js";import{Ja as S,Qb as W,oa as k,pa as E}from"./chunk.RAE4M3KQ.js";import"./chunk.MRK6QJV5.js";import"./chunk.AJZBJBMO.js";var F=(e,i)=>S(e,i).slice(1);function j(e,i){let l=e.split("/").filter(Boolean);return l.length===i.length&&l.every((s,h)=>s.startsWith(":")||s==="*"||s===i[h])}var $=["problems","search","map","places"];function R(e,i,l,s,h=[]){let{schema:r}=i,o=r.kinds,f=t=>{if(t.startsWith(w))return(t.slice(w.length).split("|")[0]??"").split("+").every(V=>o.includes(V));let y=O(t);return y!==null?o.includes(y):t.startsWith("edge:")||l.graph.getNode(t)!==void 0},[p="/",u]=e.path.split("?"),n=p.split("/").filter(Boolean),m=u?`?${u}`:"",d=n.length>0&&!$.includes(n[0])?o.find(t=>F(r,t)===n[0]):void 0,c=e.path;if(n[0]==="places"&&n.length===2)`/places/${n[1]}`!==W&&!s.some(t=>t.as===decodeURIComponent(n[1]))&&(c="/");else if(d){let t=n[1]===void 0?void 0:decodeURIComponent(n[1]);c=`/${F(r,d)}${t!==void 0&&l.graph.getNode(t)?.kind===d?`/${n[1]}`:""}${m}`}else n.length>0&&n.length<=2&&!$.includes(n[0])&&!h.some(t=>j(t.path,n))&&(c="/");let g=A(e.stop),P=g.within?.view,U=P!==void 0&&!s.some(t=>t.as===P),a=g;if(U){let{view:t,...y}=g.within??{};a={...a,within:y}}if(g.focusId&&!f(g.focusId)){let t=e.kind&&o.includes(e.kind)?G(e.kind):null;a={...v(a,t),zoom:!1}}return a={...a,relation:a.relation&&(o.includes(a.relation)||r.edgeKinds.includes(a.relation))?a.relation:null,expanded:a.expanded.filter(f),pins:Object.fromEntries(Object.entries(a.pins).filter(([t])=>f(t))),...a.selection?{selection:a.selection.filter(f)}:{}},{face:e.face,path:c,stop:b(a),...e.kind?{kind:e.kind}:{}}}function B(e,i,l){let s=e.at,h=e.pages?.routes()??[];if(e.routing!=="address"||typeof window>"u")return R(s,e.app,i,l,h);let{pathname:r,search:o,hash:f}=window.location,p=E(r,e.basePath),u=I({routing:"address",...e.basePath===void 0?{}:{basePath:e.basePath},face:s.face}),n=u==="pages",m={...s,face:u,...p===null?{}:n?{path:p+o}:{stop:x(e.basePath)??s.stop}},d=R(m,e.app,i,l,h),c=n?d.path===m.path?null:k(d.path,e.basePath===void 0?{}:{basePath:e.basePath}):d.stop===b(A(m.stop))?null:r+o+d.stop;return p!==null&&c!==null&&c!==r+o+f&&window.history.replaceState(window.history.state,"",c),d}export{R as settle,B as settleAt};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as L}from"./chunk.F26676IW.js";import{a as R,b as O,c as v,d as P}from"./chunk.ONDILMIX.js";import"./chunk.G3BOZHKR.js";import"./chunk.6DU4XN2F.js";import{a as E,b as T}from"./chunk.US4KIJSW.js";import"./chunk.LHFEOEYY.js";import"./chunk.U6BWYBPM.js";import"./chunk.QOYC424P.js";import"./chunk.B57EIGTS.js";import"./chunk.2YVXTTC2.js";import"./chunk.WWRWXFYR.js";import"./chunk.BJ2Y5F66.js";import"./chunk.A4SJ7EEY.js";import"./chunk.6KJSFIO7.js";import"./chunk.DEZEXD24.js";import"./chunk.YZZGD5OY.js";import"./chunk.DSZ3I557.js";import"./chunk.SSOTDXRS.js";import"./chunk.ZRVDIVYY.js";import"./chunk.AHDOKM4O.js";import"./chunk.PY42PBMB.js";import"./chunk.JCZH55RX.js";import{va as x}from"./chunk.2WFEFZAW.js";import{zb as k}from"./chunk.RAE4M3KQ.js";import{a as D,b as C}from"./chunk.MRK6QJV5.js";import{b as S}from"./chunk.AJZBJBMO.js";var o=S(D(),1);var i=S(C(),1);function W(c){let e=document.activeElement;if(e!==null&&e!==document.body&&e!==document.documentElement&&e.isConnected)return;let r=c??document,a=r.querySelector("main")??r.querySelector("[data-graview-page]")??null,n=r.querySelector("[data-graview-page-title]")??a?.querySelector("h1, h2")??a;n instanceof HTMLElement&&(n.hasAttribute("tabindex")||n.setAttribute("tabindex","-1"),n.focus({preventScroll:!0}))}var H=1500;function z(c,e,r){let{store:a,principal:n}=c,u=L(a),l=(0,o.useMemo)(()=>R(a,n),[a,n,u]),b=(0,o.useRef)(r),[p,m]=(0,o.useState)(),[s,f]=(0,o.useState)("");(0,o.useEffect)(()=>{let t=O(a,n,b.current);b.current=a.batches().length,t&&(m({batch:t.batch,at:e,when:Date.now()}),f(""))},[a,n,u]),(0,o.useEffect)(()=>{m(t=>!t||t.at===e?t:Date.now()-t.when<H?{...t,at:e}:void 0)},[e]);let[g,h]=(0,o.useState)(null),y=(0,o.useCallback)(()=>{m(void 0),h(null)},[]),w=(0,o.useCallback)(()=>{h(null);try{let t=P(a,n);t&&f(`Took back \u201C${t.intent}\u201D`)}catch(t){h(t instanceof Error?t.message:String(t))}},[a,n]),d=l&&p?.batch===l.batch&&p.at===e?l:void 0;return{change:l,offered:d,close:y,takeBack:w,refused:g,said:s}}function Y({context:c,docked:e,at:r,since:a}){let{change:n,offered:u,close:l,takeBack:b,refused:p,said:m}=z(c,r,a),s=e?u:n,f=(0,o.useRef)(null),g=e&&(s!==void 0||p!==null);B(f,g),(0,o.useEffect)(()=>{if(!g)return;let d,t=()=>d=setTimeout(()=>f.current?.matches(":hover, :focus-within")?t():l(),1e4);return t(),()=>clearTimeout(d)},[g,s?.batch,p,l]);let h=m||(e&&s?v(s):""),y=e?{position:"fixed",inset:"auto",margin:0,padding:0,border:"none",background:"none",overflow:"visible",zIndex:k("toast"),width:"max-content",height:"auto",bottom:"calc(16px + env(safe-area-inset-bottom, 0px))",left:16,justifyItems:"start",color:"var(--graview-ink)",...g?{}:{display:"none"}}:{},w=s?(0,i.jsxs)("button",{type:"button","data-testid":"page-undo",title:`${v(s)} \u2014 \u2318Z or Ctrl+Z`,"aria-keyshortcuts":"Meta+Z Control+Z",onClick:d=>{let t=d.currentTarget.closest("[data-graview-face]");b(),requestAnimationFrame(()=>W(t))},style:e?I:A,children:[(0,i.jsx)("span",{"aria-hidden":"true",children:"\u21B6"}),(0,i.jsx)("span",{style:e?j:F,children:v(s)})]}):null;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("span",{role:"status","aria-live":"polite",style:N,children:h}),(0,i.jsxs)("div",{ref:f,...e?{popover:"manual","data-graview-foot":"","data-graview-offstage":""}:{},"data-testid":e?"face-undo-dock":"page-undo-place",style:{display:"grid",justifyItems:"end",gap:4,maxWidth:"100%",minWidth:0,...y},children:[e&&s?(0,i.jsxs)("div",{"data-testid":"page-undo-notice",style:_,children:[w,(0,i.jsx)("button",{type:"button","data-testid":"page-undo-dismiss","aria-label":`Dismiss: ${v(s)}`,title:"Dismiss",onClick:d=>{let t=d.currentTarget.closest("[data-graview-face]");l(),requestAnimationFrame(()=>W(t))},style:q,children:"\xD7"})]}):w,p?(0,i.jsx)("span",{"data-testid":"page-undo-refused",role:"alert",style:{fontSize:"0.8125rem",lineHeight:1.4,color:"var(--graview-warn)",background:e?"var(--graview-float)":void 0,padding:e?"4px 8px":void 0,borderRadius:6},children:p}):null]})]})}function B(c,e){(0,o.useLayoutEffect)(()=>{let r=c.current;if(!r||!e)return;if(typeof r.showPopover=="function"&&!x(r))try{r.showPopover()}catch{}let a=()=>r.parentElement?.closest("[data-embed-content]")??null,n=()=>{T(r,a()),dispatchEvent(new Event(E))};n(),addEventListener("resize",n),addEventListener("scroll",n,!0);let u=typeof ResizeObserver=="function"?new ResizeObserver(n):null;return u?.observe(r),()=>{if(u?.disconnect(),removeEventListener("resize",n),removeEventListener("scroll",n,!0),r.isConnected&&x(r))try{r.hidePopover()}catch{}dispatchEvent(new Event(E))}},[c,e])}var A={display:"inline-flex",alignItems:"center",gap:6,minHeight:36,maxWidth:"100%",minWidth:0,padding:"0 14px",borderRadius:999,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",color:"var(--graview-ink)",font:"inherit",fontSize:"0.875rem",cursor:"pointer"},I={...A,textAlign:"start",lineHeight:1.4,padding:"8px 4px 8px 14px",border:"none",background:"none",color:"inherit"},_={display:"flex",alignItems:"center",gap:2,maxWidth:"100%",minWidth:0,paddingRight:6,borderRadius:"var(--graview-radius, 12px)",border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)"},q={flex:"0 0 auto",minWidth:28,minHeight:28,padding:0,border:"none",background:"none",boxShadow:"none",color:"var(--graview-ink-muted)",font:"inherit",fontSize:"1rem",cursor:"pointer"},F={minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},j={minWidth:0,overflow:"hidden",overflowWrap:"anywhere",display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:4},N={position:"absolute",width:1,height:1,margin:-1,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap",border:0};export{Y as TakeBack};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a,b,c,d,e,f,g,h,i}from"./chunk.ORJ3T4IW.js";import"./chunk.BJ2Y5F66.js";import"./chunk.A4SJ7EEY.js";import"./chunk.6KJSFIO7.js";import"./chunk.DEZEXD24.js";import"./chunk.YZZGD5OY.js";import"./chunk.DSZ3I557.js";import"./chunk.RAE4M3KQ.js";import"./chunk.AJZBJBMO.js";export{f as columnActs,c as columnMoves,b as columnOf,d as columnReach,e as columnSteps,h as describePlace,i as placeText,g as resolveFor,a as statusColumns};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import{c as E,d as I}from"./chunk.U6BWYBPM.js";import"./chunk.PY42PBMB.js";import"./chunk.JCZH55RX.js";import"./chunk.2WFEFZAW.js";import{J as A,N as k}from"./chunk.RAE4M3KQ.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
|
-
.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
|
-
.graview-arrange-list [role=group]{display:grid}
|
|
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)}
|
|
5
|
-
.graview-arrange-item{display:flex;align-items:flex-start;gap:8px;width:100%;min-height:30px;margin:0;padding:6px 8px;border:0;border-radius:7px;background:none;font:inherit;text-align:left;color:var(--graview-ink);cursor:pointer;overflow-wrap:anywhere}
|
|
6
|
-
.graview-arrange-item::before{content:"";flex:0 0 12px}
|
|
7
|
-
.graview-arrange-item[aria-pressed=true]{font-weight:600}
|
|
8
|
-
.graview-arrange-item[aria-pressed=true]::before{content:"\u2713";color:var(--graview-accent)}
|
|
9
|
-
.graview-arrange-item:hover{background:color-mix(in srgb,var(--graview-ink) 7%,transparent)}
|
|
10
|
-
.graview-arrange-ask{display:grid;gap:8px;padding:0 8px 8px}
|
|
11
|
-
.graview-arrange-ask p{margin:8px 0 0}
|
|
12
|
-
.graview-arrange-ask input{box-sizing:border-box;width:100%;min-height:32px;padding:0 8px;border:1px solid var(--graview-edge);border-radius:7px;background:var(--graview-panel);font:inherit;color:var(--graview-ink)}
|
|
13
|
-
.graview-arrange-ask span{display:flex;gap:8px}
|
|
14
|
-
.graview-arrange-ask button{min-height:30px;padding:0 12px;border:1px solid var(--graview-edge);border-radius:7px;background:var(--graview-panel);font:inherit;color:var(--graview-ink);cursor:pointer}
|
|
15
|
-
.graview-arrange-ask button:disabled{opacity:.5;cursor:default}
|
|
16
|
-
`;export{K as ArrangeLists,C as FAR_ENDS,R as filterEntries,G as roundSteps};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as y}from"./chunk.SSOTDXRS.js";import{Ba as g,a as f,ya as m}from"./chunk.2WFEFZAW.js";import{U as p}from"./chunk.RAE4M3KQ.js";import{a as R,b as c}from"./chunk.MRK6QJV5.js";import{b as u}from"./chunk.AJZBJBMO.js";var s=u(R(),1);var r=u(c(),1),S,h=()=>S??=m(f(()=>import("./chunk.RVEMN5WU.js")));function L(e){let[n,t]=(0,s.useState)(()=>h().current);return(0,s.useEffect)(()=>{if(!e||n)return;let i=!0;return h().load().then(a=>i&&t(a),()=>{}),()=>{i=!1}},[e,n]),n}function D(e,n){let t=L(n.length>0);return(0,s.useMemo)(()=>t?t.withLines(e,n):n,[t,e,n])}function I(e,n){let t=L(n.some(i=>i.shape));return(0,s.useMemo)(()=>{let i=new Map;if(!t)return i;for(let a of n){let l=t.ruleLine(a,e);l&&i.set(a.name,l)}return i},[t,e,n])}function M(e){let n=e.line;if(!(!n||e.message.endsWith(` \u2014 ${n.text}`)||e.message===b(e)))return e.message}function b(e){let n=e.line;return n?n.record!==void 0?`${n.record} \u2014 ${n.text}`:n.text:e.message}var P={name:{},op:{color:"var(--graview-ink-muted)",fontWeight:500},value:{fontWeight:600,fontVariantNumeric:"tabular-nums"},word:{color:"var(--graview-ink-muted)"},open:{color:"var(--graview-ink-faint)"},close:{color:"var(--graview-ink-faint)"}};function w({parts:e}){return(0,r.jsx)(r.Fragment,{children:e.map((n,t)=>(0,r.jsxs)("span",{children:[n.space?" ":"",(0,r.jsx)("span",{"data-graview-rule-part":n.as,style:P[n.as],children:n.text})]},t))})}function x(e,n){let t=p(e?.tryDefinition(n),n);return t.charAt(0).toUpperCase()+t.slice(1)}function C({line:e,schema:n,brand:t,lead:i=e.record===void 0?"kind":"record",stacked:a=!1,style:l}){let d=e.kind,o=i==="kind"?d?x(n,d):void 0:i==="record"?e.record:void 0,k=i==="kind"&&o?`${o}: ${e.said}`:i==="record"&&o?`${o} \u2014 ${e.said}`:e.said;return(0,r.jsxs)("span",{"data-graview-rule-line":"",style:{overflowWrap:"anywhere",...l},children:[(0,r.jsx)("span",{style:g,children:k}),(0,r.jsxs)("span",{"aria-hidden":"true",children:[i!=="none"&&d?(0,r.jsx)("span",{style:{display:"inline-flex",verticalAlign:"-0.1em",marginRight:"0.4em"},children:(0,r.jsx)(y,{kind:d,...n?{schema:n}:{},...t?{brand:t}:{},size:13})}):null,o?(0,r.jsxs)("span",{"data-graview-rule-head":"",style:{fontWeight:600,marginRight:i==="record"||a?0:"0.6em"},children:[o,i==="record"&&!a?(0,r.jsx)("span",{style:{color:"var(--graview-ink-faint)",fontWeight:400},children:" \u2014 "}):null]}):null,a&&o?(0,r.jsx)("br",{}):null,(0,r.jsx)(w,{parts:e.parts}),e.when&&e.when.length>0?(0,r.jsxs)("span",{"data-graview-rule-when":"",style:{color:"var(--graview-ink-faint)"},children:[", when ",(0,r.jsx)(w,{parts:e.when})]}):null]})]})}function z(e){return e.line?e.label&&e.label.trim().length>0?e.label:void 0:e.label&&e.label!==e.message?e.label:void 0}export{D as a,I as b,M as c,b as d,C as e,z as f};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as b,b as N,c as S}from"./chunk.US4KIJSW.js";import{Ba as y,va as m,wa as w}from"./chunk.2WFEFZAW.js";import{zb as x}from"./chunk.RAE4M3KQ.js";import{a as C,b as h}from"./chunk.MRK6QJV5.js";import{b as g}from"./chunk.AJZBJBMO.js";var c=g(C(),1);var i=g(h(),1),P=6e3;function M(){let t=[],n=0,s=new Set,a=new Map,p,r=()=>{for(let e of[...s])e()},o=e=>{if(clearTimeout(a.get(e.id)),a.delete(e.id),e.kind!=="toast")return;let l=(e.actions?.length??0)+(e.action?1:0),f=e.timeout??(l>0?!1:P);f!==!1&&a.set(e.id,setTimeout(()=>p?.()?o(e):d(e.id),f))},d=e=>{clearTimeout(a.get(e)),a.delete(e),t.some(l=>l.id===e)&&(t=t.filter(l=>l.id!==e),r())},u=e=>{t=t.some(l=>l.id===e.id)?t.map(l=>l.id===e.id?e:l):[...t,e],o(e),r()};return{notify(e){let l=e.id??`notice-${++n}`;return u({...e,id:l,said:++n}),{id:l,dismiss:()=>d(l),update:f=>{let v=t.find(L=>L.id===l);v&&u({...v,...f,id:l,kind:v.kind,said:f.sentence!==void 0&&f.sentence!==v.sentence?++n:v.said})}}},dismiss:d,hold(e){p=e},list:()=>t,subscribe(e){return s.add(e),()=>s.delete(e)}}}var k={info:"var(--graview-accent)",good:"var(--graview-good)",warn:"var(--graview-warn)",bad:"var(--graview-bad)"};function T({notices:t,at:n,anchor:s,board:a}){let p=(0,c.useRef)(null),r=t.length>0;return(0,c.useLayoutEffect)(()=>{let o=p.current;if(!r||!o)return;if(typeof o.showPopover=="function"&&!m(o))try{o.showPopover()}catch{}let d=()=>(n==="top"?S:N)(o,s());d(),n==="foot"&&a.hold?.(()=>o.matches(":hover, :focus-within"));let u=w(o);addEventListener("resize",d),addEventListener("scroll",d,!0),n==="foot"&&addEventListener(b,d);let e=typeof ResizeObserver=="function"?new ResizeObserver(d):null;return e?.observe(o),()=>{if(u(),e?.disconnect(),removeEventListener("resize",d),removeEventListener("scroll",d,!0),removeEventListener(b,d),o.isConnected&&m(o))try{o.hidePopover()}catch{}}},[r,n,s,a]),r?(0,i.jsx)("div",{ref:p,popover:"manual",role:"region","aria-label":n==="top"?"Notices":"Messages","data-testid":n==="top"?"notices-banners":"notices-toasts","data-graview-offstage":"",style:{position:"fixed",inset:"auto",margin:0,padding:0,border:"none",background:"none",overflow:"visible",zIndex:x("toast"),width:"max-content",height:"auto",maxWidth:"min(560px, calc(100vw - 32px))",display:"grid",gap:8,color:"var(--graview-ink)"},children:t.map(o=>(0,i.jsx)(R,{notice:o,board:a},o.id))}):null}function R({notice:t,board:n}){let s=t.tone??"info",a=[...t.action?[t.action]:[],...t.actions??[]],p=()=>n.dismiss(t.id);return(0,i.jsxs)("div",{"data-testid":"notice","data-kind":t.kind,"data-tone":s,style:{boxSizing:"border-box",display:"flex",flexWrap:"wrap",alignItems:"center",gap:"8px 12px",padding:t.kind==="banner"?"8px 10px 8px 14px":"10px 12px 10px 14px",borderRadius:"var(--graview-radius, 12px)",borderTop:"1px solid var(--graview-edge)",borderRight:"1px solid var(--graview-edge)",borderBottom:"1px solid var(--graview-edge)",borderLeft:`3px solid ${k[s]}`,background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)",fontSize:"0.875rem",lineHeight:1.45},children:[(0,i.jsx)("span",{"aria-hidden":"true",style:{width:7,height:7,borderRadius:999,flex:"0 0 auto",background:k[s]}}),(0,i.jsx)("span",{style:{flex:"1 1 16rem",minWidth:0},children:t.sentence}),a.length>0?(0,i.jsx)("span",{style:{display:"flex",flexWrap:"wrap",gap:6},children:a.map((r,o)=>r.href!==void 0?(0,i.jsx)("a",{href:r.href,...r.target?{target:r.target,rel:"noopener"}:{},"data-testid":"notice-action",onClick:()=>{r.onSelect?.(),p()},style:{...H,...o===0?E:{}},children:r.label},r.label):(0,i.jsx)("button",{type:"button","data-testid":"notice-action",onClick:()=>{p(),r.onSelect?.()},style:{...H,...o===0?E:{}},children:r.label},r.label))}):null,(0,i.jsx)("button",{type:"button","data-testid":"notice-dismiss","aria-label":`Dismiss: ${t.sentence}`,title:"Dismiss",onClick:p,style:A,children:"\xD7"})]})}var H={display:"inline-flex",alignItems:"center",minHeight:28,padding:"2px 12px",borderRadius:9,border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",color:"var(--graview-ink)",font:"inherit",fontWeight:500,textDecoration:"none",cursor:"pointer"},E={background:"var(--graview-accent)",borderColor:"var(--graview-accent)",color:"var(--graview-accent-ink)"},A={minWidth:28,minHeight:28,padding:0,border:"none",background:"none",boxShadow:"none",color:"var(--graview-ink-muted)",fontSize:"1rem",cursor:"pointer"};function B({notices:t}){let n=t.reduce((d,u)=>!d||u.said>d.said?u:d,void 0),[s,a]=(0,c.useState)(""),[p,r]=(0,c.useState)(""),o=(0,c.useRef)(0);return(0,c.useEffect)(()=>{if(!n||n.said===o.current)return;o.current=n.said;let d=n.tone==="bad";(d?r:a)("");let u=setTimeout(()=>(d?r:a)(n.sentence),50);return()=>clearTimeout(u)},[n]),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("div",{role:"status","aria-live":"polite","data-testid":"notices-said",style:y,children:s}),(0,i.jsx)("div",{role:"alert","data-testid":"notices-alarm",style:y,children:p})]})}var W=(0,c.createContext)(null);function F({board:t,anchor:n}){let s=(0,c.useSyncExternalStore)(t.subscribe,t.list,t.list);return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(T,{notices:s.filter(a=>a.kind==="banner"),at:"top",anchor:n,board:t}),(0,i.jsx)(T,{notices:s.filter(a=>a.kind==="toast"),at:"foot",anchor:n,board:t}),(0,i.jsx)(B,{notices:s})]})}export{M as a,W as b,F as c};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as ge,b as ye,e as he,f as J,g as be}from"./chunk.BJ2Y5F66.js";import{f as fe}from"./chunk.YZZGD5OY.js";import{$a as ie,B as z,Bb as ce,H as E,J as T,Ka as se,Lb as ue,M as ne,N as te,O as X,P as re,S as _,Tb as pe,V as H,Vb as me,W as oe,ab as q,bb as ae,nb as le,pb as de}from"./chunk.RAE4M3KQ.js";function Pe(t,r,n){let s=t.tryDefinition(r)?.fields.shape,e=z(s?.[n]),l=!1,i=!1;for(;e&&(e.type==="optional"||e.type==="default"||e.type==="nullable"||e.type==="prefault");)(e.type==="optional"||e.type==="nullable")&&(l=!0),(e.type==="default"||e.type==="prefault")&&(i=!0),e=z(e.innerType);if(e?.type!=="enum")return;let y=(e.entries?Object.values(e.entries):e.values??[]).filter(u=>typeof u=="string");return y.length>0?{values:y,empty:l&&!i}:void 0}function L(t,r,n){let s=Pe(t,r,n);if(!s)return[];let e=t.tryDefinition(r),l=s.values.map(i=>({value:i,label:te(e,n,i)}));return s.empty&&l.push({value:null,label:`No ${_(e,n).toLowerCase()}`}),l}function U(t,r,n){let s=t[r];return typeof s=="string"&&n.some(e=>e.value===s)?s:null}function Q(t,r,n,s,e=L(t.schema,n.kind,s)){let l=we(t.schema,t.allMutations(),n.kind,s,e),i=U(n,s,e),y=[];for(let{value:u,by:A,acts:O}of l)if(u!==i)for(let $ of O){let I=A==="step"?{[$.subject.arg]:n.id}:{[$.subject.arg]:n.id,[s]:u},R={name:$.name,args:I};if($.input.safeParse(I).success&&t.permits(R,r).ok){try{ie(t.graph,$,I)}catch{continue}y.push({to:u,call:R,title:$.title??$.name});break}}return y}function we(t,r,n,s,e=L(t,n,s)){let l=xe(t,r,n,s),i=ve(t,r,n,s);return e.flatMap(y=>{if(y.value===null)return[];let u=l.filter(A=>A.sets?.[s]===y.value);return[{value:y.value,label:y.label,by:u.length>0?"step":i.length>0?"value":"none",acts:u.length>0?u:i}]})}function xe(t,r,n,s){return r.filter(e=>e.subject!==void 0&&e.derived===void 0&&typeof e.sets?.[s]=="string"&&q(t,e).includes(n))}function ve(t,r,n,s){let e=t.tryDefinition(n);return e?r.filter(l=>{if(!l.subject||!q(t,l).includes(n)||!ae(l,e).includes(s))return!1;let i=l.input.shape;return i!==void 0&&s in i}).sort((l,i)=>+(l.derived!==void 0)-+(i.derived!==void 0)):[]}var Y=(t,r)=>r&&t[r]!==void 0?String(t[r]):"";function Re(t,r,n){let s=d=>t.tryDefinition(d)?r.nodesOfKind(d).filter(k=>E(t.tryDefinition(d),k)):[],e=s(n.rows),l=s(n.columns),i=new Set(e.map(d=>d.id)),y=new Set(l.map(d=>d.id)),u=r.allEdges(),A=[],O=n.link;if(typeof O=="string"){let d=p=>t.tryDefinition(p)?.edges?.[O]?.to,k=(d(n.columns)??[]).some(p=>p===n.rows||p==="*"),w=(d(n.rows)??[]).some(p=>p===n.columns||p==="*"),D=k||!w;for(let p of u){if(p.kind!==O)continue;let m=D?p.to:p.from,o=D?p.from:p.to;i.has(m)&&y.has(o)&&A.push({rowId:m,columnId:o,via:[]})}}else{let d=new Map(O.path.map(w=>[w,new Map]));for(let w of u){let D=d.get(w.kind);if(!D)continue;let p=D.get(w.from);p?p.push(w.to):D.set(w.from,[w.to]);let m=D.get(w.to);m?m.push(w.from):D.set(w.to,[w.from])}let k=new Set;for(let w of l){let D=[{id:w.id,via:[]}];for(let p of O.path){let m=[],o=new Set;for(let f of D)for(let P of d.get(p).get(f.id)??[])o.has(`${f.id}|${P}`)||(o.add(`${f.id}|${P}`),m.push({id:P,via:[...f.via,f.id]}));D=m}for(let p of D){let m=`${p.id}|${w.id}`;!i.has(p.id)||k.has(m)||(k.add(m),A.push({rowId:p.id,columnId:w.id,via:p.via.slice(1)}))}}}let $=n.groupOrder??[],I=d=>$.indexOf(d)===-1?$.length:$.indexOf(d),R=e.map(d=>{let k=d;return{node:d,label:String(k.label??T(t.tryDefinition(d.kind),d)),group:Y(k,n.rowGroup),ref:Y(k,n.rowRef)}}).sort((d,k)=>I(d.group)-I(k.group)||(d.ref<k.ref?-1:d.ref>k.ref?1:0)),N=l.map(d=>({node:d,label:T(t.tryDefinition(d.kind),d),group:Y(d,n.columnGroup)})).sort((d,k)=>d.group<k.group?-1:d.group>k.group?1:d.node.id<k.node.id?-1:d.node.id>k.node.id?1:0);return{rows:R,columns:N,cells:A}}function $e(t,r,n){let{rows:s,columns:e,cells:l}=Re(t,r,n),i=(o,f)=>X(t,o,f),y=o=>X(t,o,1).replace(/^1 /,""),u=o=>({id:o.id,kind:o.kind,title:T(t.tryDefinition(o.kind),o),parts:[]}),A=o=>{let f=r.getNode(o);if(!f)return null;let P=t.tryDefinition(f.kind),M=T(P,f),K=H(f,P,{limit:3,said:[M],glance:!0}).map(B=>B.alone.startsWith(B.label)?`${B.label.toLowerCase()}${B.alone.slice(B.label.length)}`:B.alone);return[M,...K].join(", ")},O=typeof n.link=="string"?[]:n.link.path.slice(0,-1).flatMap((o,f,P)=>{let M=ce(t,n.columns,P.slice(0,f+1));return M.ok?[...M.reached]:[]}),$=[{t:"text",text:`${i(n.rows,s.length)} against ${i(n.columns,e.length)}${O.length>0?`, through ${[...new Set(O)].map(o=>i(o,2).replace(/^2 /,"")).join(" and ")}`:""}${e.length>0?`: ${e.map(o=>o.label).join(", ")}`:""}.`}],I=new Map(e.map(o=>[o.node.id,o.label])),R=new Map(e.map((o,f)=>[o.node.id,f])),N=new Map,d=new Map;for(let o of l){let f=N.get(o.rowId);f?f.push(o):N.set(o.rowId,[o]);let P=d.get(o.columnId);P?P.add(o.rowId):d.set(o.columnId,new Set([o.rowId]))}for(let o of s){let P=[...N.get(o.node.id)??[]].sort((M,K)=>R.get(M.columnId)-R.get(K.columnId)).map(M=>{let K=M.via.map(A).filter(B=>B!==null);return`${I.get(M.columnId)}${K.length>0?` (${K.join("; ")})`:""}`});$.push({t:"field",label:o.label,text:P.length>0?P.join(", "):"none"})}$.push({t:"list",as:"name",columns:1,groups:e.map(o=>{let f=d.get(o.node.id)??new Set,P=s.filter(M=>f.has(M.node.id)).map(M=>u(M.node));return{heading:`${o.label} (${P.length})`,items:P}})});let k=new Set(l.map(o=>o.rowId)),w=new Set(l.map(o=>o.columnId)),D=s.filter(o=>!k.has(o.node.id)),p=e.filter(o=>!w.has(o.node.id)),m=n.rows===n.columns;return D.length>0&&$.push({t:"text",text:`${m?`${D.length} with none across`:`${i(n.rows,D.length)} with no ${y(n.columns)}`}: ${D.map(o=>o.label).join(", ")}.`}),p.length>0&&$.push({t:"text",text:`${m?`${p.length} with none down`:`${i(n.columns,p.length)} on no ${y(n.rows)}`}: ${p.map(o=>o.label).join(", ")}.`}),$}function Z(t,r,n,s={}){let{app:e,blocks:l=n?e?.viewSpecs?.[n.kind]?.[s.slot??"page"]:e?.home}=s;if(!l?.length)return[];let i=s.firstHeading??(n||s.blocks?void 0:1),y=be(t,r,n,{...s,money:s.money??e?.brand,firstHeading:i});return n&&!y.node?[]:ye(typeof l[0]?.t=="string"?l:ge(l),y)}var Ae=240,ke=10,Ce=1160,je=40,Me=640,Oe=3,Ie=t=>Math.max(1,Math.floor((Math.min(t,Ce)-je+ke)/(Ae+ke)));function Be(t,r,n,s){let{app:e}=s,l=s.width??1440,i=s.today??new Date().toISOString().slice(0,10),y=t.seenBy(r),u=y.schema,A=y.graph,O=me(e),$=typeof n=="string"?n.trim():n.slug,I=typeof n=="string"?O.find(a=>a.slug===$||a.title===$||a.address===$):O.find(a=>a.slug===n.slug&&a.kind===n.kind)??n,R=!I&&typeof n=="string"?A.getNode($):void 0;if(!I&&!R)return{ok:!1,error:`"${$}" is not a place this app has, nor a record this seat can see.`,places:O.map(a=>a.slug)};let N=[],d=e.viewSpecs??{},k=Ie(l),w=(a,h)=>Z(y,null,a,{app:e,today:i,...h}),D=(a,h,b)=>{let g=u.tryDefinition(a.kind),S=T(g,a);if(h==="name")return{id:a.id,kind:a.kind,title:S,parts:[]};if(d[a.kind]?.[h]){let j=w(a,{slot:h}),[F,...v]=j,C=F?.t==="title";return{id:a.id,kind:a.kind,title:C?F.text:S,parts:p(C?v:j,b,`views.${a.kind}.${h}`,` (${a.id})`,C?1:0)}}if(h==="row")return{id:a.id,kind:a.kind,title:S,parts:[]};let c=g?.computed?J(u,A,a):a,G=H(c,g,{limit:3,said:[S],glance:!0});return{id:a.id,kind:a.kind,title:S,parts:G.map(j=>({t:"text",text:j.alone}))}};function p(a,h,b,g="",S=0){let x=[];return a.forEach((c,G)=>{let j=`${b}.${G+S}`;switch("problem"in c&&c.problem&&N.push({at:`${j}${g}`,says:c.problem}),c.t){case"title":x.push({t:"heading",level:3,text:c.text});return;case"text":x.push({t:"text",text:c.text,...c.tone?{tone:c.tone}:{}});return;case"badge":x.push({t:"badge",text:c.text});return;case"field":x.push({t:"field",label:c.label,text:c.text});return;case"progress":x.push({t:"progress",label:c.label,text:c.text});return;case"group":x.push(...p(c.blocks,h,`${j}.group`,g));return;case"when":x.push(...p(c.blocks,h,`${j}.show`,g));return;case"divider":case"figure":return;case"headline":x.push({t:"heading",level:c.level,text:c.text});return;case"number":x.push({t:"figure",text:c.text,...c.label?{label:c.label}:{}});return;case"list":{if(c.failed){x.push({t:"text",text:"\u2014"});return}if(c.members.length===0){c.empty&&x.push({t:"list",as:c.as,columns:1,groups:[],empty:c.empty});return}let F=h+1,v=F>Oe?"name":c.as,C=(c.groups??[{value:null,members:c.members}]).map(W=>({..."heading"in W&&W.heading?{heading:W.heading}:{},items:W.members.map(De=>D(De,v,F))}));x.push({t:"list",as:v,columns:v==="card"?k:1,groups:C,...c.more>0?{more:c.more}:{}});return}}}),x}let m=[],o,f,P;if(R){f="record";let a=u.tryDefinition(R.kind),h=T(a,R);P={slug:R.id,title:h,kind:R.kind,address:se(u,R.kind,R.id)},d[R.kind]?.page&&m.push(...p(w(R,{slot:"page"}),1,`views.${R.kind}.page`));let g=a?.computed?J(u,A,R):R;for(let S of oe(a,H(g,a,{said:[h]}))){S.title&&m.push({t:"heading",level:2,text:S.title});for(let x of S.fields)m.push({t:"field",label:x.label,text:x.value})}}else{let a=I;P={slug:a.slug,title:a.title,kind:a.kind,address:a.address};let h=a.lens?ue(e).drawn.find(b=>b.as===a.slug&&(a.kind===null||b.kinds.includes(a.kind))):void 0;if(a.kind===null){let b=e.brand,g=b?.name??e.name,S=b?.logo&&de(b.logo)?b.logo:void 0;if(o={name:g,...b?.subtitle?{subtitle:b.subtitle}:{},...S?{logo:{alt:b?.logoAlt??g,...le(S)?{drawn:"inline SVG"}:{drawn:"image",src:S}}}:{}},e.home)f="blocks",m=p(w(null,{}),0,"views.home");else{f="derived";let x=new Set(e.pages?.hide??[]),c=pe(u.kinds,e.pages?.order).filter(G=>!x.has(G));m.push({t:"heading",level:1,text:e.name??"Home"});for(let G of c){let j=A.nodesOfKind(G).filter(F=>E(u.tryDefinition(G),F)).length;j>0&&m.push({t:"text",text:`${j} ${V(u,G,j)}`})}}}else if(h?.lens==="blocks")f="lens:blocks",m=p(w(null,{blocks:h.options.blocks??[]}),0,`lenses.${h.index}.options.blocks`);else if(h?.lens==="columns"){f="lens:columns";let b=h.options.bindings??{};for(let g of Object.keys(b)){let S=b[g]?.column;if(!S)continue;let x=L(u,g,S),c=A.nodesOfKind(g).filter(v=>E(u.tryDefinition(g),v));Object.keys(b).length>1&&m.push({t:"heading",level:2,text:V(u,g,2).replace(/^./,v=>v.toUpperCase())}),m.push({t:"text",text:`${c.length} ${V(u,g,c.length)} in columns by ${_(u.tryDefinition(g),S).toLowerCase()}.`});let G=x.map(v=>({column:v,items:c.filter(C=>U(C,S,x)===v.value).map(C=>D(C,"card",1))})).filter(({column:v,items:C})=>v.value!==null||C.length>0).map(({column:v,items:C})=>({heading:`${v.label} (${C.length})`,items:C}));m.push({t:"list",as:"card",columns:1,groups:G});let j=new Map;for(let v of c)for(let C of Q(t,r,v,S,x))j.set(C.to,(j.get(C.to)??new Set).add(`"${C.title}"`));let F=x.filter(v=>v.value!==null&&j.has(v.value)).map(v=>`to ${v.label} by ${[...j.get(v.value)].join(" or ")}`);m.push({t:"text",text:F.length>0?`Moves: ${F.join("; ")}.`:"Moves: none for this seat."})}}else if(h?.lens==="coverage")f="lens:coverage",m=$e(u,A,h.options);else if(h){f=`lens:${h.lens}`;let b=h.kinds.flatMap(g=>A.nodesOfKind(g).filter(S=>E(u.tryDefinition(g),S)));m.push({t:"text",text:`A ${h.lens} of ${b.length} ${h.kinds.map(g=>V(u,g,b.length)).join(" and ")}.`}),m.push({t:"list",as:"name",columns:1,groups:[{items:b.map(g=>D(g,"name",1))}]})}else{f="derived";let b=A.nodesOfKind(a.kind).filter(g=>E(u.tryDefinition(a.kind),g));m.push({t:"heading",level:1,text:a.title}),b.length===0?m.push({t:"list",as:"row",columns:1,groups:[],empty:`No ${V(u,a.kind,0)} yet.`}):m.push({t:"list",as:"row",columns:1,groups:[{items:b.map(g=>D(g,"row",1))}]})}}let M=r.kind==="system"?"the system":(r.roles??[]).length>0?(r.roles??[]).join(", "):r.kind,K=l<Me?"phone":"wide",B=P.kind===null?Ge(u,A):[],ee={...o?{masthead:o}:{},...B.length>0?{facts:B}:{},place:P,seat:M,width:l,variant:K,drawnBy:f,parts:m,problems:N};return{ok:!0,description:{...ee,text:Se(ee)}}}function Ge(t,r){let n=he(t,r,null),s=e=>Array.isArray(e)?e.map(s).join(", "):e===null?"nothing":typeof e=="boolean"?e?"yes":"no":typeof e=="object"?e.label:String(e);return[...fe(t)].map(([e,l])=>{let i=l.label??ne(e);return Object.hasOwn(n.values,e)?{name:e,label:i,value:s(n.values[e])}:{name:e,label:i,refused:n.refused[e]??"it could not be worked out"}})}function V(t,r,n){let s=t.tryDefinition(r);if(n===1)return s?.noun??r;let e=re(t,r);return e.charAt(0).toLowerCase()+e.slice(1)}function Se(t){let r=[`${t.place.title} (${t.place.address}) \u2014 as ${t.seat}, ${t.width} wide (${t.variant}).`],n=t.masthead;n&&r.push(`Masthead: ${n.logo?`the logo ("${n.logo.alt}", ${n.logo.drawn==="image"?n.logo.src:"inline SVG"}), `:""}${n.name}${n.subtitle?` \u2014 ${n.subtitle}`:""}`);let s=(e,l)=>{for(let i of e)switch(i.t){case"heading":r.push(`${l}${"#".repeat(i.level)} ${i.text}`);break;case"text":r.push(`${l}${i.text}`);break;case"badge":r.push(`${l}[${i.text}]`);break;case"field":case"progress":r.push(`${l}${i.label}: ${i.text}`);break;case"figure":r.push(`${l}${i.text}${i.label?` \u2014 ${i.label}`:""}`);break;case"list":if(i.groups.length===0){i.empty&&r.push(`${l}(${i.empty})`);break}for(let y of i.groups){y.heading&&r.push(`${l}${y.heading}:`);for(let u of y.items)r.push(`${l}${y.heading?" ":""}- ${u.title}`),s(u.parts,`${l}${y.heading?" ":" "}`)}i.as==="card"&&i.columns>1&&r.push(`${l}(cards, ${i.columns} across)`),i.more&&r.push(`${l}and ${i.more} more`);break}};if(s(t.parts,""),t.facts){r.push("Facts of the whole graph (what fact('<name>') reads):");for(let e of t.facts)r.push(`- ${e.label} (${e.name}): ${e.value??`not worked out \u2014 ${e.refused}`}`)}if(t.problems.length>0){r.push("Problems:");for(let e of t.problems)r.push(`- ${e.at}: ${e.says}`)}return r.join(`
|
|
2
|
-
`)}export{L as a,U as b,Q as c,we as d,xe as e,ve as f,Z as g,Be as h,Se as i};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function t(n){if(Array.isArray(n))return n.map(t);if(n&&typeof n=="object"){let r={};for(let o of Object.keys(n).sort()){let e=n[o];e!==void 0&&(r[o]=t(e))}return r}return n}function i(n){return JSON.stringify(t(n))??"undefined"}export{i as a};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{g as ot,h as ue,k as st,l as he}from"./chunk.2YVXTTC2.js";import{a as ae,b as Q,c as ce,d as it,f as rt,g as ie}from"./chunk.BJ2Y5F66.js";import{a as ne,b as et}from"./chunk.SSOTDXRS.js";import{i as J,j,k as tt,l as nt}from"./chunk.ZRVDIVYY.js";import{a as lt,b as dt}from"./chunk.PY42PBMB.js";import{d as at}from"./chunk.JCZH55RX.js";import{C as Fe,F as Ke,G as _e,P as je,Y as Ue,a as Ge,ba as qe,ca as N,da as Xe,ea as le,fa as me,ia as _,j as Ie,ja as Ye,l as He,la as de,m as Oe,na as Je,pa as ye,q as ze,qa as Qe,ra as fe,y as ge,ya as Ze}from"./chunk.2WFEFZAW.js";import{J as T,K as Ve,M as I,N as Be,R as Le,S as De,U as Y,V as Z,W as Me,ea as We,fb as ee}from"./chunk.RAE4M3KQ.js";import{a as te,b as D}from"./chunk.MRK6QJV5.js";import{b as A}from"./chunk.AJZBJBMO.js";var M=A(te(),1);var H=A(D(),1);function ct({id:e,max:t=8,empty:a,hide:n}){let{store:r}=N();le();let d=Et(r,e,r.violations()),i=n?d.flatMap(c=>{let p=c.ids.filter(u=>!n.has(u));return p.length>0?[{...c,ids:p}]:[]}):d;return i.length===0?a&&d.length===0?(0,H.jsx)("p",{style:{margin:0,fontSize:"0.875rem",color:"var(--graview-ink-faint)"},children:a}):null:(0,H.jsx)("div",{"data-graview-primitive":"connections",style:{display:"flex",flexDirection:"column",gap:12},children:i.map(c=>{let p=c.ids.slice(0,t),u=c.ids.length-p.length;return(0,H.jsxs)("section",{style:{display:"flex",flexDirection:"column",gap:6},children:[(0,H.jsx)("h2",{...c.said?{"aria-label":c.said}:{},style:{margin:0,fontSize:"0.75rem",fontWeight:600,letterSpacing:"0.09em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},children:c.label}),(0,H.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:[p.map(o=>{let s=r.graph.getNode(o);return s?(0,H.jsx)(j,{pickId:o,hue:ee(s.kind),title:`Go to the ${Y(r.schema.tryDefinition(s.kind),s.kind)}`,label:T(r.schema.tryDefinition(s.kind),s)},o):null}),u>0?(0,H.jsx)(j,{label:`+${u} more`}):null]})]},c.key)})})}function Et(e,t,a=[]){let n=e.graph.getNode(t);if(!n)return[];let r=new Map,d=[];for(let i of a)if(i.subjectId===t)for(let c of i.nodeIds)c!==t&&!d.includes(c)&&e.graph.has(c)&&d.push(c);d.length>0&&r.set("judges",{key:"judges",label:"what it finds wrong",ids:d});for(let i of e.graph.allEdges()){let c=i.from===t?i.to:i.to===t?i.from:null;if(c===null||c===t)continue;let p=e.graph.getNode(c);if(!p)continue;let u=i.from===t?"out":"in",o=u==="out"?n.kind:p.kind,s=Vt(e.schema,o,i.kind,u),w=`${i.kind}:${u}:${s.label}`,y=r.get(w)??{key:w,...s,ids:[]};y.ids.includes(c)||y.ids.push(c),r.set(w,y)}for(let i of r.values())i.ids.sort();return[...r.values()].sort((i,c)=>i.key<c.key?-1:i.key>c.key?1:0)}function Vt(e,t,a,n){let r=Le(e,t,a,n),d=I(a).toLowerCase();return r.trim().toLowerCase()!==d?{label:r}:n==="out"?{label:`\u2192 ${d}`,said:d}:{label:`\u2190 ${d}`,said:`${d}, pointing here`}}var P=A(te(),1);var W=A(D(),1),Bt=/^\s*(\d{1,6})[.)]\s+(.*)$/s,Lt=/^\s*[-*•]\s+(.*)$/s;function Dt(e){let t=[];for(let a of e.replace(/\r\n?/g,`
|
|
2
|
-
`).split(/\n[ \t]*\n+/)){let n=null,r=()=>{n&&(n.t==="p"?n.lines.length>0:n.items.length>0)&&t.push(n),n=null};for(let d of a.split(`
|
|
3
|
-
`)){let i=Bt.exec(d),c=i?null:Lt.exec(d);if(i)n?.t!=="ol"&&(r(),n={t:"ol",start:Number(i[1]),items:[]}),n.items.push(i[2]);else if(c)n?.t!=="ul"&&(r(),n={t:"ul",items:[]}),n.items.push(c[1]);else if(n&&n.t!=="p"&&/^\s+\S/.test(d)){let p=n.items;p[p.length-1]=`${p[p.length-1]} ${d.trim()}`}else d.trim().length>0&&(n?.t!=="p"&&(r(),n={t:"p",lines:[]}),n.lines.push(d.trim()))}r()}return t}function we(e){return/[\r\n]/.test(e)}var Mt={display:"grid",gap:"0.7em",minWidth:0,overflowWrap:"anywhere"},Wt={margin:0},ut={margin:0,paddingInlineStart:"1.6em",display:"grid",gap:"0.3em"};function re({text:e,className:t,style:a}){return(0,W.jsx)("div",{"data-graview-text-body":"",...t?{className:t}:{},style:{...Mt,...a},children:Dt(e).map((n,r)=>n.t==="p"?(0,W.jsx)("p",{style:Wt,children:n.lines.map((d,i)=>(0,W.jsxs)("span",{children:[i>0?(0,W.jsx)("br",{}):null,d]},i))},r):n.t==="ol"?(0,W.jsx)("ol",{start:n.start,style:ut,children:n.items.map((d,i)=>(0,W.jsx)("li",{children:d},i))},r):(0,W.jsx)("ul",{style:ut,children:n.items.map((d,i)=>(0,W.jsx)("li",{children:d},i))},r))})}var f=A(D(),1);function mt({nodeId:e,field:t,value:a,stored:n=a}){let{fields:r,commit:d}=ue(e),i=r.find(h=>h.field===t),{store:c}=N(),p=c.graph.getNode(e)?.kind,u=c.schema.definitions.find(h=>h.kind===p),o=De(u,t).toLowerCase(),[s,w]=(0,P.useState)(!1),[y,v]=(0,P.useState)(n),S=(0,P.useRef)(null),b=(0,P.useRef)(null),k=(0,P.useRef)(!1),R=h=>{k.current=h,w(!1)};if((0,P.useEffect)(()=>v(n),[n,s]),(0,P.useEffect)(()=>{s?S.current?.focus():k.current&&(k.current=!1,b.current?.focus())},[s]),!i)return(0,f.jsx)("span",{"data-graview-field":t,"data-graview-readonly":"",title:`Read-only \u2014 nothing this app declares changes the ${o}`,style:{color:"var(--graview-ink)",cursor:"default",overflowWrap:"anywhere"},children:a});if(!s)return(0,f.jsx)("button",{ref:b,type:"button","data-graview-field":t,"data-graview-editable":i.mutation,title:`${i.title} \u2014 changes the ${o}, and can be undone`,onClick:()=>w(!0),style:{all:"unset",cursor:"text",display:"inline-flex",alignItems:"flex-end",minHeight:24,minWidth:24,maxWidth:"100%",overflowWrap:"anywhere",paddingBottom:1,borderBottom:"1px dashed var(--graview-edge-bright)",color:"var(--graview-ink)"},children:a});let $=(h,{left:L=!1}={})=>{R(!L),!(h===n||h===""||h===void 0)&&d(i,h)};if(!i.takesValue){let h=[i,...i.alternatives];return(0,f.jsx)("span",{role:"group","aria-label":`Change ${I(t).toLowerCase()}`,"data-graview-field":t,style:{display:"inline-flex",gap:6,alignItems:"center",flexWrap:"wrap"},onKeyDown:L=>{L.key==="Escape"&&R(!0)},children:h.map((L,U)=>(0,f.jsx)("button",{type:"button",ref:U===0?S:void 0,"data-graview-act":L.mutation,onClick:()=>{R(!0),d(L,void 0)},onBlur:B=>{let O=B.relatedTarget;(!O||!B.currentTarget.parentElement?.contains(O))&&R(!1)},style:{padding:"2px 9px",fontSize:"0.8125rem",borderRadius:999},children:L.title},L.mutation))})}return(0,f.jsxs)("form",{style:{display:"inline-flex",gap:4},onSubmit:h=>{h.preventDefault(),$(pt(i,y))},children:[i.shape.type==="choice"?(0,f.jsx)("select",{ref:S,"aria-label":I(t),"data-graview-field":t,value:y,onChange:h=>$(h.target.value),onBlur:()=>R(!1),style:{font:"inherit",fontSize:"inherit"},children:i.shape.options.map(h=>(0,f.jsx)("option",{value:h,children:Be(u,t,h)},h))}):(0,f.jsx)("input",{ref:S,"aria-label":I(t),"data-graview-field":t,type:i.shape.type==="number"?"number":i.shape.type==="date"?i.shape.time?"datetime-local":"date":"text",...i.shape.type==="number"&&i.shape.min!==void 0?{min:i.shape.min}:{},...i.shape.type==="number"&&i.shape.max!==void 0?{max:i.shape.max}:{},...i.shape.type==="number"&&i.shape.step!==void 0?{step:i.shape.step}:{},value:y,onChange:h=>v(h.target.value),onBlur:()=>$(pt(i,y),{left:!0}),onKeyDown:h=>{h.key==="Escape"&&R(!0)},style:{font:"inherit",fontSize:"inherit",width:`${Math.max(6,y.length+1)}ch`,minHeight:24,display:"inline-flex",alignItems:"center",padding:"0 3px"}}),i.open.length>0?(0,f.jsxs)("span",{style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:["also needs ",i.open.map(h=>h.name).join(", ")]}):null]})}function pt(e,t){return e.shape.type==="number"?Number(t):t}function yt({id:e,hide:t=[],limit:a=10,labels:n={},shown:r=[]}){let{store:d}=N(),i=me(e);if(!i)return null;let c=d.schema.tryDefinition(i.kind),p=Z(i,c,{limit:a,said:r}).filter(u=>!t.includes(u.key));return p.length===0?null:(0,f.jsx)("div",{"data-graview-fields":i.id,style:{display:"grid",gap:14,alignContent:"start",minWidth:0,fontSize:"0.875rem"},children:Me(c,p).map((u,o)=>{let s=(0,f.jsx)("dl",{style:{margin:0,display:"grid",gridTemplateColumns:"auto 1fr",gap:"5px 16px",alignContent:"start",minWidth:0},children:u.fields.map(y=>y.long?(0,f.jsx)(It,{nodeId:i.id,field:y.key,label:n[y.key]??y.label,value:y.value,labelStyle:gt,style:{gridColumn:"1 / -1",marginTop:6}},y.key):(0,f.jsxs)("div",{style:{display:"contents"},children:[(0,f.jsx)("dt",{style:{...gt,whiteSpace:"nowrap"},children:n[y.key]??y.label}),(0,f.jsx)("dd",{style:{margin:0,minWidth:0},children:(0,f.jsx)(mt,{nodeId:i.id,field:y.key,value:y.value,stored:y.stored})})]},y.key))});if(!u.title)return(0,f.jsx)("div",{children:s},o);let w=`graview-field-group-${i.id}-${o}`;return(0,f.jsxs)("div",{role:"group","aria-labelledby":w,style:{display:"grid",gap:6,minWidth:0},children:[(0,f.jsx)("p",{id:w,"data-graview-field-group":u.title,style:Gt,children:u.title}),s]},o)})})}var gt={color:"var(--graview-ink-faint)",fontSize:"0.8125rem"},Gt={margin:0,fontSize:"0.75rem",letterSpacing:"0.06em",textTransform:"uppercase",color:"var(--graview-ink-muted)",fontWeight:560};function It(e){return Xe()?(0,f.jsx)(Ot,{...e}):(0,f.jsx)(Ht,{...e})}function Ht({field:e,label:t,value:a,labelStyle:n,valueStyle:r,style:d}){return(0,f.jsxs)("div",{"data-graview-long":e,style:{display:"grid",gap:6,minWidth:0,...d},children:[(0,f.jsx)("dt",{style:n,children:t}),(0,f.jsx)("dd",{style:{margin:0,minWidth:0,...r},children:(0,f.jsx)("div",{"data-graview-field":e,children:(0,f.jsx)(re,{text:a})})})]})}function Ot({nodeId:e,field:t,label:a,value:n,labelStyle:r,valueStyle:d,style:i}){let{fields:c,commit:p}=ue(e),u=c.find(k=>k.field===t&&k.takesValue),[o,s]=(0,P.useState)(!1),w=(0,P.useRef)(null),y=(0,P.useRef)(!1);(0,P.useEffect)(()=>{!o&&y.current&&(y.current=!1,w.current?.focus())},[o]);let v=k=>{y.current=k,s(!1)},S=a.toLowerCase(),b=(0,f.jsx)(re,{text:n});return(0,f.jsxs)("div",{"data-graview-long":t,style:{display:"grid",gap:6,minWidth:0,...i},children:[(0,f.jsxs)("dt",{style:{display:"flex",alignItems:"baseline",gap:10,...r},children:[(0,f.jsx)("span",{children:a}),u&&!o?(0,f.jsx)("button",{ref:w,type:"button","data-graview-editable":u.mutation,"aria-label":`Edit the ${S}`,title:`${u.title} \u2014 changes the ${S}, and can be undone`,onClick:()=>s(!0),style:Ft,children:"Edit"}):null]}),(0,f.jsx)("dd",{style:{margin:0,minWidth:0,...d},children:o&&u?(0,f.jsx)(P.Suspense,{fallback:b,children:(0,f.jsx)(zt,{field:t,label:a,value:n,onCancel:()=>v(!0),onSave:(k,R)=>{v(!R),k!==n&&p(u,k)}})}):(0,f.jsx)("div",{"data-graview-field":t,...u?{}:{"data-graview-readonly":"",title:`Read-only \u2014 nothing this app declares changes the ${S}`},...u?{onClick:()=>s(!0)}:{},style:{cursor:u?"text":"default",minWidth:0},children:b})})]})}var zt=(0,P.lazy)(()=>import("./chunk.4HGBVU5B.js")),Ft={all:"unset",cursor:"pointer",fontSize:"0.75rem",letterSpacing:"normal",textTransform:"none",color:"var(--graview-accent)",borderBottom:"1px dashed currentColor",minHeight:24,minWidth:24,display:"inline-flex",alignItems:"flex-end"};function ft({nodeId:e,children:t}){let{fields:a}=ue(e),n=me(e);if(!n)return(0,f.jsx)(f.Fragment,{children:t});let r=a.find(d=>{let i=n[d.field];return typeof i=="string"&&i===t});return r?(0,f.jsx)(mt,{nodeId:e,field:r.field,value:t}):(0,f.jsx)(f.Fragment,{children:t})}var ht=A(te(),1),oe=(0,ht.createContext)(null);var g=A(D(),1),Kt=Ze(Ge(()=>import("./chunk.2AJMM7JG.js"))).part((e,t)=>(0,g.jsx)(e.ArrangeBar,{...t}),{what:"Arranging this list"});function ve(e){let{brand:t}=N();return ee(e,t?.accents)}function _t(e,t){if(!t.endsWith("\u2026")&&!t.endsWith("..."))return;let a=t.replace(/[…]|\.\.\.$/g,"").trim();if(!(a.length<12)){for(let n of Object.values(e))if(typeof n=="string"&&n.length>a.length&&n.startsWith(a))return n}}function jt(e,t){let n=Math.max(0,...e.slice(0,t*2).map(d=>d.length))*7.5+28<=212/2?2:1,r=t*n;return{columns:n,shown:Math.min(e.length,r)}}var Ut=8,wt=500,qt=12;function vt(e){return{x:e.clientX,y:e.clientY,pointerType:e.pointerType??""}}function Xt(e,t,a){let n=performance.now()+wt,r=["pointerdown","pointerup","mousedown","mouseup","dblclick"],d=s=>{if(performance.now()>n||!(s instanceof MouseEvent))return!1;let w=vt(s);return t.pointerType&&w.pointerType&&t.pointerType!==w.pointerType?!1:Math.hypot(w.x-t.x,w.y-t.y)<=qt},i=s=>{if(!d(s))return u();s.stopPropagation()},c=s=>{if(!d(s))return u();s.stopPropagation(),s.preventDefault(),e.removeEventListener("click",c,!0),setTimeout(u,50),a()},p=!1,u=()=>{if(!p){p=!0,clearTimeout(o),e.removeEventListener("click",c,!0);for(let s of r)e.removeEventListener(s,i,!0)}};for(let s of r)e.addEventListener(s,i,!0);e.addEventListener("click",c,!0);let o=setTimeout(u,wt)}function Yt({View:e,members:t,mode:a,flagged:n}){let{isSelected:r}=ye(),d=t.slice(0,Ut);return(0,g.jsxs)("div",{"data-graview-rows":"",style:{display:"grid",gap:4,minWidth:0},children:[d.map(i=>(0,g.jsx)("div",{"data-graview-pick":i.id,style:{minWidth:0,cursor:"pointer"},children:(0,g.jsx)(e,{node:i,cardinality:"one",fidelity:"glyph",mode:a,selected:r(i.id),...n?.includes(i.id)?{flagged:[i.id]}:{}})},i.id)),t.length>d.length?(0,g.jsx)(j,{label:`+${t.length-d.length} more`}):null]})}var Jt=11/15;function Qt({text:e,accent:t}){let a=(0,M.useRef)(null),n=(0,M.useRef)(null),[r,d]=(0,M.useState)(1),[i,c]=(0,M.useState)(!1),p=r<1?`${r}em`:void 0;return(0,M.useLayoutEffect)(()=>{let u=a.current,o=n.current;if(!u||!o)return;let s=()=>{let y=u.clientWidth,v=o.offsetWidth;if(y<=0||v<=0)return;let S=parseFloat(getComputedStyle(o).fontSize)/parseFloat(getComputedStyle(u).fontSize)||1,b=v/S,k=Math.max(Jt,Math.min(1,Math.floor(y/b*100)/100));d(R=>Math.abs(R-k)<.01?R:k),c(b*k>y+.5)};if(s(),typeof ResizeObserver>"u")return;let w=new ResizeObserver(s);return w.observe(u),()=>w.disconnect()},[e]),(0,g.jsx)("span",{ref:a,"data-graview-district-name":"",...r<1?{"data-graview-fitted":""}:{},...i?{title:e}:{},style:{display:"block",minWidth:0,fontSize:"0.9375rem",lineHeight:1.25,letterSpacing:"0.05em",textTransform:"uppercase",color:t?"var(--graview-accent)":"var(--graview-ink-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:(0,g.jsx)("span",{ref:n,style:{fontSize:p},children:e})})}function Zt(e,t){return!!e?.display?.page?.groups?.length||Z(t,e).some(a=>a.long)}function St(e,t=de(e)){for(let a of e.kinds){let n=e.tryDefinition(a),r=n?.plural??`${String(a)}s`,d=o=>{let s=o.node,w=Qe(),y=(0,M.useContext)(oe);if(!s)return null;let v=y?.nodeId===s.id?y:null,S=T(n,s),b=o.mode==="fullscreen"?_t(s,S)??S:S,k=We(w,[s.id]);return(0,g.jsxs)(J,{title:(0,g.jsx)(ft,{nodeId:s.id,children:v?.title??b}),...v?{}:{subtitle:n?.describe?Ve(n,s):n?.description??String(a)},selected:o.selected,...o.flagged?.includes(s.id)?{tone:"warning"}:{},fit:!0,children:[v?(0,g.jsx)(oe.Provider,{value:null,children:v.body}):null,(0,g.jsxs)("div",{style:{display:"grid",gridTemplateColumns:Zt(n,s)?"minmax(0, 1fr)":"minmax(200px, 1fr) minmax(220px, 1.4fr)",gap:"22px 34px",alignItems:"start"},children:[(0,g.jsx)(yt,{id:s.id,shown:[b,S,n?.description,v?.title],...v?{hide:[...v.fields]}:{}}),(0,g.jsx)(ct,{id:s.id,empty:`Nothing is connected to this ${Y(n,String(a))} yet.`,...v?{hide:v.records}:{}})]}),k.length>0?(0,g.jsx)("p",{"data-graview-broken":"",style:{margin:"14px 0 0",paddingTop:12,borderTop:"1px solid var(--graview-edge)",fontSize:"0.875rem",color:"var(--graview-warn)"},children:k.map(R=>R.message).join(" \xB7 ")}):null]})},i=o=>{let s=o.node;if(!s)return null;let{store:w}=N(),y=n?.computed?rt(w.schema,w.graph,s):s,v=Z(y,n,{limit:3,said:[T(n,s)],glance:!0}),S=ve(a);return(0,g.jsx)(J,{title:T(n,s),selected:o.selected,tone:o.flagged?.includes(s.id)?"warning":"muted",fit:!0,children:(0,g.jsx)(tt,{items:v.map(b=>({id:b.key,label:b.alone,hue:S})),max:3})})},c=o=>{let s=o.node,w=ve(a),y=he().marks.flag;if(!s)return null;let v=o.flagged?.includes(s.id)??!1;return(0,g.jsx)(j,{label:v?`${T(n,s)} ${y}`:T(n,s),hue:w,selected:o.selected,title:v?`${I(Y(n,String(a)))} \u2014 implicated in a problem`:I(Y(n,String(a)))})},p=o=>{let{brand:s,store:w,views:y}=N(),{view:v,go:S}=fe(),b=o.nodes??[],k=y.lookup(String(a),{cardinality:"one",fidelity:"glyph"}),R=k!==void 0&&!Ye(k)?k:void 0,$=lt(v),h=at(b,$,{schema:e,graph:w.graph,flagged:new Set(o.flagged??[])}),L=C=>({id:C.id,label:T(e.tryDefinition(C.kind),C),hue:ee(C.kind,s?.accents)}),U=o.fidelity==="full"&&b.length>1?(0,g.jsx)(M.Suspense,{fallback:null,children:(0,g.jsx)(Kt,{schema:e,graph:w.graph,kind:String(a),arrangement:$,onChange:C=>S(dt(v,C)),kept:{shown:h.nodes.length,of:b.length},style:{marginBottom:8}})}):null,B=C=>C.some(E=>o.flagged?.includes(E.id)),O=(C,E,q)=>R?(0,g.jsx)(J,{title:C,meta:B(E)?`\u26A0 ${E.length}`:E.length,tone:B(E)?"warning":"muted",children:(0,g.jsx)(Yt,{View:R,members:E,mode:o.mode,...o.flagged?{flagged:o.flagged}:{}})},q):(0,g.jsx)(nt,{label:C,count:E.length,flagged:B(E),items:E.map(L)},q);return h.grouped?(0,g.jsxs)("div",{style:{display:"grid",gap:8},"data-graview-grouped":$.group?.by,children:[U,h.groups.map(C=>O(`${o.label??r} \xB7 ${C.label}`,C.nodes,C.key||"-"))]}):(0,g.jsxs)("div",{style:{display:"grid",gap:4},children:[U,O(o.label??r,h.nodes)]})},u=o=>{let s=o.nodes??[],w=jt(s.map(m=>T(n,m)),o.openedRows??je(s.length)),y=ve(a),{brand:v}=N(),S=et(String(a),e,v),b=he().marks.flag,{selection:k}=ye(),{toggle:R,view:$,go:h}=fe(),{views:L,hiddenKinds:U}=N(),B=$.overview&&!U.has(String(a))?L.places().filter(m=>m.kind===String(a)):[],O=ot(),C=o.focused?$.within?.view??B[0]?.as:void 0,E=s.filter(m=>o.flagged?.includes(m.id)).length,q=E>0,z=o.focused||o.raised,$e=o.rank==="secondary"&&!z,V=o.nestedUnder!==void 0,Ae=new Set(k),At=st(),F=z?0:s.filter(m=>At.includes(m.id)&&!Ae.has(m.id)).length,pe=F>0&&!q,se=qe(),X=se&&!V?se.byKind[String(a)]??0:0,Tt=V?8:Math.min(46,10+Math.round(Math.sqrt(s.length)*8)),Te=V?(0,g.jsx)("span",{style:{fontSize:"0.75rem",lineHeight:1.25,letterSpacing:"0.05em",textTransform:"uppercase",color:z?"var(--graview-accent)":"var(--graview-ink-muted)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:o.label??r}):(0,g.jsx)(Qt,{text:o.label??r,accent:!!z});return(0,g.jsxs)("div",{className:"graview-kind-card","data-graview-rank":o.rank,"data-graview-landmark":S||void 0,"data-graview-nested":V||void 0,"data-graview-tied":F||void 0,"data-graview-hits":se&&!V?X:void 0,"data-graview-emphasis":se&&!V?X>0?"lit":"dimmed":void 0,...n?.description||V?{title:V?[o.label??r,n?.description].filter(Boolean).join(" \u2014 "):n.description}:{},style:{position:"relative",height:"100%","--graview-hue":Math.round(y),"--graview-marquee-room":B.length>0&&O?`${O(B.map(m=>m.title))+(S?4:42)}px`:"0px"},children:[S?(0,g.jsx)("span",{className:"graview-kind-block graview-kind-landmark","data-graview-opened":o.opened||void 0,"aria-hidden":"true",style:{"--graview-rise":Tt},children:(0,g.jsx)(ne,{kind:String(a),schema:e,...v?{brand:v}:{},size:96})}):null,(0,g.jsxs)("div",{className:"graview-kind-face","data-graview-opened":o.opened||void 0,style:{display:"flex",flexDirection:"column",gap:V?1:3,padding:V?"5px 7px":"7px 10px",borderRadius:"var(--graview-radius-sm, 9px)",justifyContent:"center",position:"relative",height:"100%",overflow:"hidden",boxSizing:"border-box",border:z?"1px solid var(--graview-accent)":F>0?"1px solid var(--graview-accent-dim)":`1px solid hsl(${Math.round(y)} 55% var(--graview-tint-lightness) / 0.34)`,backgroundColor:"var(--graview-panel)",backgroundImage:`linear-gradient(hsl(${Math.round(y)} 55% var(--graview-tint-lightness) / calc(var(--graview-tint-alpha) * ${z?1.1:$e?.28:.5})), hsl(${Math.round(y)} 55% var(--graview-tint-lightness) / calc(var(--graview-tint-alpha) * ${z?1.1:$e?.28:.5})))`,boxShadow:z?"0 0 0 1px var(--graview-accent-dim)":void 0},children:[!V&&s.length>0?(0,g.jsx)("div",{"data-graview-tally":s.length,"data-graview-broken":E||void 0,"aria-hidden":"true",style:{position:"absolute",left:0,right:0,top:0,display:"flex",height:3,background:`hsl(${Math.round(y)} 55% var(--graview-tint-lightness) / 0.4)`},children:E>0?(0,g.jsx)("span",{style:{width:`${Math.max(6,Math.round(E/s.length*100))}%`,background:"var(--graview-warn)"}}):null}):null,S?(0,g.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:V?4:6},children:[(0,g.jsx)(ne,{kind:String(a),schema:e,...v?{brand:v}:{},size:V?14:18}),Te]}):Te,(0,g.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:5,fontSize:"0.875rem"},children:[(0,g.jsx)("span",{style:{fontVariantNumeric:"tabular-nums",color:q?"var(--graview-warn)":pe?"var(--graview-accent)":"var(--graview-ink-faint)"},children:s.length===0?"none yet":pe?F===s.length?`${F} tied`:`${F} of ${s.length} tied`:`${q?`${b} `:""}${s.length}`}),(o.retired??0)>0?(0,g.jsxs)("button",{type:"button",className:"graview-kind-past","data-graview-retired":o.retired,title:`${o.retired} retired ${r.toLowerCase()} \u2014 press to widen the view to the past`,onClick:m=>{m.stopPropagation(),h(ze($,!0))},onDoubleClick:m=>m.stopPropagation(),onPointerDown:m=>m.stopPropagation(),children:["+",o.retired," past"]}):null,X>0?(0,g.jsxs)("button",{type:"button",className:"graview-kind-hits","data-testid":`hits-${String(a)}`,title:`${X} ${X===1?"match":"matches"} for \u201C${$.q??""}\u201D \u2014 press to go in, narrowed`,onClick:m=>{m.stopPropagation(),h(Ke($,ge(String(a)),{ownPicture:!0,...$.q?{carry:$.q}:{}}))},onDoubleClick:m=>m.stopPropagation(),onPointerDown:m=>m.stopPropagation(),children:[X," match"]}):null,F>0&&!pe?(0,g.jsxs)("span",{style:{fontSize:"0.8125rem",color:"var(--graview-accent)"},children:[F," tied"]}):null,o.hasOwnView?(0,g.jsx)("span",{title:`${r} has a view of its own`,"aria-label":"has its own view",style:{fontSize:"0.6875rem",color:"var(--graview-accent)"},children:"\u25C6"}):null,!V&&s.length>0&&!o.focused?(0,g.jsxs)("button",{type:"button",className:"graview-kind-open","data-testid":`open-${String(a)}`,"aria-expanded":o.opened??!1,title:o.opened?"Close it up":`See the ${r} in here`,onClick:m=>{m.stopPropagation(),R(ge(String(a)))},onDoubleClick:m=>m.stopPropagation(),onPointerDown:m=>m.stopPropagation(),children:[(0,g.jsx)("span",{className:"graview-kind-open-word",children:o.opened?"close":"open"})," ",o.opened?"\u25B4":"\u25BE"]}):null]}),o.opened?(0,g.jsxs)("div",{className:"graview-kind-members","data-graview-buildings":o.plot?.side??1,style:{display:"grid",gridTemplateColumns:`repeat(${w.columns}, minmax(0, 1fr))`,gap:3},children:[s.slice(0,w.shown).map(m=>{let K=o.flagged?.includes(m.id)??!1,G=T(n,m);return(0,g.jsx)(j,{pickId:m.id,label:K?`${G} ${b}`:G,title:K?`${G} \u2014 implicated in a problem`:void 0,hue:y,selected:Ae.has(m.id)},m.id)}),s.length>w.shown?(0,g.jsxs)("span",{style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)",padding:"2px 4px",gridColumn:"1 / -1"},children:["+",s.length-w.shown," more \u2014 double-click to go in"]}):null]}):null]}),!V&&B.length>0?(0,g.jsx)("div",{className:"graview-drive-in","data-testid":`drive-in-${String(a)}`,"data-graview-showing":C,onPointerDown:m=>m.stopPropagation(),onDoubleClick:m=>m.stopPropagation(),children:(0,g.jsx)("div",{className:"graview-drive-in-marquee",role:"group","aria-label":`${r}: pictures`,"data-graview-thumbs":B.length===1?"one":"two",children:B.map(m=>{let K=C===m.as;return(0,g.jsxs)("div",{className:"graview-drive-in-thumb","data-graview-pressed":K||void 0,children:[(0,g.jsx)("span",{className:"graview-drive-in-thumb-title","aria-hidden":"true",children:m.title}),(0,g.jsx)("button",{type:"button",className:"graview-drive-in-thumb-press","data-testid":`showing-${m.as}`,"aria-label":`${r}: ${m.title}`,"aria-pressed":K,title:K?`${m.title} is showing \u2014 press again to open it`:`Show ${m.title} on the billboard \u2014 double-click to open it`,onClick:G=>{G.stopPropagation();let Ee=()=>h(_e($,String(a),m.as));if(G.detail>=2||K&&o.focused){Ee();return}h(He(Ie(Oe($,!0),Fe(String(a))),"view",m.as)),G.detail===1&&Xt(G.currentTarget.ownerDocument,vt(G.nativeEvent),Ee)}})]},m.as)})})}):null]})};p.generic=!0,u.generic=!0,t.register(a,{cardinality:"one",fidelity:"full"},_(d)).register(a,{cardinality:"one",fidelity:"summary"},_(i)).register(a,{cardinality:"one",fidelity:"glyph"},_(c)).register(a,{cardinality:"many",fidelity:"full"},_(p)).register(a,{cardinality:"many",fidelity:"summary"},_(p)).register(a,{cardinality:"many",fidelity:"glyph"},_(u))}return t}var x=A(te(),1);var Se=A(te(),1);var be=A(D(),1),kt=new WeakMap;function en(e){let t=kt.get(e);return t||kt.set(e,t=St(e,de(e))),t}var ke=Je;function bt(){return(0,Se.useContext)(ke)}function Kn({children:e}){return(0,be.jsx)(ke.Provider,{value:!0,children:e})}function xt(e){let t=(0,Se.useContext)(ke),{store:a}=N();if(t)return null;let n=e.kind??e.node?.kind??e.nodes?.[0]?.kind;if(!n)return null;let r=en(a.schema).lookup(n,{cardinality:e.cardinality,fidelity:e.fidelity});return r?(0,be.jsx)(r,{...e}):null}var l=A(D(),1),Nt=(0,x.createContext)(null),tn=(e,t)=>e.trim().toLowerCase().replace(/[_-]+/g," ")===t.trim().toLowerCase().replace(/[_-]+/g," "),nn=(0,x.createContext)(null),Re=(0,x.createContext)(null);function an({block:e}){let t=(0,x.useContext)(Re),a=t?.slots?.[e.key],n=(0,l.jsx)(rn,{block:e});return a?(0,l.jsx)(x.Suspense,{fallback:n,children:(0,l.jsx)(a,{block:e,node:t.node,drawn:n})}):n}function rn({block:e}){let t=(0,x.useContext)(Nt),a=(0,x.useContext)(ln),n=(0,x.useContext)(Ne);if(t&&e.t==="badge"&&t.values.some(r=>tn(r,e.text))||t&&e.t==="field"&&t.field!==void 0&&e.field===t.field)return null;switch(e.t){case"title":return(0,l.jsx)("strong",{className:"graview-spec-title",children:e.text});case"text":return we(e.text)?(0,l.jsx)("div",{className:"graview-spec-text",...e.tone?{"data-graview-tone":e.tone}:{},children:(0,l.jsx)(re,{text:e.text})}):(0,l.jsx)("p",{className:"graview-spec-text",...e.tone?{"data-graview-tone":e.tone}:{},children:e.text});case"badge":return(0,l.jsx)("span",{className:"graview-spec-badge","data-graview-tone":e.tone,children:e.text});case"field":return(0,l.jsxs)("span",{className:"graview-spec-field","data-graview-field":e.field,children:[(0,l.jsx)("span",{className:"graview-spec-label",children:e.label}),(0,l.jsx)("span",{className:"graview-spec-value",...we(e.text)?{style:{whiteSpace:"pre-line"}}:{},children:e.href?(0,l.jsx)("a",{className:"graview-spec-link",href:e.href,rel:"noopener noreferrer",target:"_blank",children:e.text}):e.text})]});case"progress":return e.value===void 0||e.max===void 0?(0,l.jsxs)("span",{className:"graview-spec-progress",children:[(0,l.jsx)("span",{className:"graview-spec-label",children:e.label}),(0,l.jsx)("span",{className:"graview-spec-value",children:e.text})]}):(0,l.jsxs)("span",{className:"graview-spec-progress",children:[(0,l.jsx)("span",{className:"graview-spec-label",children:e.label}),(0,l.jsx)("span",{className:"graview-spec-track",role:"progressbar","aria-label":e.label,"aria-valuemin":0,"aria-valuemax":e.max,"aria-valuenow":Math.max(0,Math.min(e.value,e.max)),"aria-valuetext":e.text,children:(0,l.jsx)("span",{className:"graview-spec-fill",style:{width:`${Math.round(Math.max(0,Math.min(e.value,e.max))/e.max*100)}%`}})}),(0,l.jsx)("span",{className:"graview-spec-value",children:e.text})]});case"group":return(0,l.jsx)("span",{className:"graview-spec-group","data-direction":e.direction,children:(0,l.jsx)(xe,{blocks:e.blocks})});case"when":return e.shown?(0,l.jsx)(xe,{blocks:e.blocks}):null;case"divider":return(0,l.jsx)("hr",{className:"graview-spec-divider"});case"figure":return(0,l.jsx)(on,{});case"headline":{let r=`h${Math.min(6,e.level+a)}`,d=(0,l.jsx)(r,{className:"graview-spec-headline","data-level":e.level,children:e.text});return n!==null&&e.level===1?(0,l.jsxs)(l.Fragment,{children:[d,n]}):d}case"number":return(0,l.jsxs)("span",{className:"graview-spec-number",children:[(0,l.jsx)("span",{className:"graview-spec-number-value",children:e.text}),e.label?(0,l.jsx)("span",{className:"graview-spec-label",children:e.label}):null]});case"list":return(0,l.jsx)(cn,{list:e})}}function on(){let e=(0,x.useContext)(Re)?.figure;return e?(0,l.jsx)("span",{className:"graview-spec-figure","aria-hidden":"true",children:e()}):null}function xe({blocks:e}){return e.map((t,a)=>(0,l.jsx)(an,{block:t},a))}function Rt({blocks:e,ctx:t,view:a}){let n=(0,x.useContext)(nn)?.[a];return(0,l.jsx)(Re.Provider,{value:{figure:t.figure,slots:n,node:t.node},children:(0,l.jsx)(xe,{blocks:e})})}function Ce({blocks:e,ctx:t,view:a}){return(0,l.jsx)(Rt,{blocks:Q(e,t),ctx:t,view:a})}var Ct=3,Pt=(0,x.createContext)(0),sn=(0,x.createContext)(null),ln=(0,x.createContext)(0),Ne=(0,x.createContext)(null);function dn({node:e,as:t,depth:a,said:n=null}){let{store:r,views:d}=N(),i=T(r.schema.tryDefinition(e.kind),e),c=d.lookup(e.kind,{cardinality:"one",fidelity:t==="card"?"summary":"glyph"});return(0,l.jsxs)("li",{className:"graview-spec-item","data-graview-listed":e.id,"data-as":t,children:[a<=Ct&&c?(0,l.jsx)(Ue,{mode:"scene",children:(0,l.jsx)(Pt.Provider,{value:a,children:(0,l.jsx)(Nt.Provider,{value:n,children:(0,l.jsx)(c,{node:e,cardinality:"one",fidelity:t==="card"?"summary":"glyph",mode:"scene",selected:!1})})})}):(0,l.jsx)("span",{className:"graview-spec-item-name",children:i}),(0,l.jsx)($t,{node:e,label:i})]})}function $t({node:e,label:t}){let a=(0,x.useContext)(sn);return a?(0,l.jsx)("a",{className:"graview-spec-item-link",href:a.href(e),"aria-label":t,onClick:n=>{n.metaKey||n.ctrlKey||n.shiftKey||n.button!==0||(n.preventDefault(),n.stopPropagation(),a.go(e))}}):(0,l.jsx)("button",{type:"button",className:"graview-spec-item-link","data-graview-pick":e.id,"aria-label":t})}function cn({list:e}){let t=(0,x.useContext)(Pt)+1,{store:a}=N();if(e.failed)return(0,l.jsx)("p",{className:"graview-spec-text",children:"\u2014"});if(e.members.length===0)return e.empty?(0,l.jsx)("p",{className:"graview-spec-text graview-spec-empty",children:e.empty}):null;let n=(i,c=null)=>t>Ct?(0,l.jsx)("ul",{className:"graview-spec-list","data-as":"names",children:i.map(p=>(0,l.jsxs)("li",{className:"graview-spec-item","data-graview-listed":p.id,"data-as":"name",children:[(0,l.jsx)("span",{className:"graview-spec-item-name",children:T(a.schema.tryDefinition(p.kind),p)}),(0,l.jsx)($t,{node:p,label:T(a.schema.tryDefinition(p.kind),p)})]},p.id))}):(0,l.jsx)("ul",{className:"graview-spec-list","data-as":e.as,children:i.map(p=>(0,l.jsx)(dn,{node:p,as:e.as,depth:t,said:c},p.id))}),r=e.more>0?(0,l.jsx)("p",{className:"graview-spec-text graview-spec-more",children:`and ${e.more} more`}):null;if(!e.groups)return(0,l.jsxs)("div",{className:"graview-spec-listing",children:[n(e.members),r]});let d=`h${e.headingLevel}`;return(0,l.jsxs)("div",{className:"graview-spec-listing",children:[e.groups.map(i=>(0,l.jsxs)("section",{className:"graview-spec-list-group","data-graview-group":i.value??"",children:[i.heading?(0,l.jsx)(d,{className:"graview-spec-list-heading",children:i.heading}):null,n(i.members,i.value!==null?{values:[i.value,...i.heading?[i.heading]:[]]}:null)]},i.value??"")),r]})}function na({blocks:e,heading:t=2,firstHeading:a,slot:n,view:r=n}){let{store:d,brand:i}=N();le();let c=ie(d,null,null,{heading:t,firstHeading:a,money:i}),p=(0,x.useContext)(Ne),u=e.some(o=>o.t==="headline");return(0,l.jsxs)("div",{className:`graview-spec graview-spec-${n}`,"data-graview-spec":n,children:[p!==null&&!u?p:null,(0,l.jsx)(Ne.Provider,{value:u?p:null,children:(0,l.jsx)(Ce,{blocks:e,ctx:c,view:r})})]})}function Pe(e,t="card"){let{store:a,brand:n}=N(),r=a.schema;return{...ie(a,null,e,{slot:t,money:n}),figure:()=>(0,l.jsx)(ne,{kind:e.kind,schema:r,...n?{brand:n}:{},size:22})}}function un({slot:e,blocks:t,node:a,selected:n}){let r=Pe(a,e);return(0,l.jsx)("div",{className:`graview-spec graview-spec-${e}`,"data-graview-spec":e,"data-graview-kind":a.kind,...e==="row"&&t.some(it)?{"data-graview-tall":""}:{},...n?{"data-selected":""}:{},children:(0,l.jsx)(Ce,{blocks:t,ctx:r,view:`${a.kind}.${e}`})})}function pn({blocks:e,node:t,selected:a,flagged:n}){let r=Pe(t),[d,...i]=e,c=d?.t==="title";return(0,l.jsx)(J,{...c?{title:Q([d],r)[0].text}:{},selected:a,tone:n?"warning":"muted",fit:!0,children:(0,l.jsx)("div",{className:"graview-spec graview-spec-card","data-graview-spec":"card","data-graview-kind":t.kind,children:(0,l.jsx)(Ce,{blocks:c?i:e,ctx:r,view:`${t.kind}.card`})})})}function gn({blocks:e,props:t}){let a=t.node,n=Pe(a,"page"),r=bt(),d=Q(e,n),i=ce(e,d),c=i.title!==void 0&&(!r||i.title===T(n.schema?.tryDefinition(a.kind),a)),p=(0,l.jsx)("div",{className:"graview-spec graview-spec-page","data-graview-spec":"page","data-graview-kind":a.kind,children:(0,l.jsx)(Rt,{blocks:c?d.slice(1):d,ctx:n,view:`${a.kind}.page`})});return r?p:(0,l.jsx)(oe.Provider,{value:{nodeId:a.id,...i.title!==void 0?{title:i.title}:{},body:p,fields:i.fields,records:i.records},children:(0,l.jsx)(xt,{...t})})}function aa(e,t,a){return typeof e=="function"?e.says?.(t,a):void 0}function mn({blocks:e,node:t,selected:a}){let{store:n}=N();return(0,l.jsx)("div",{title:T(n.schema.tryDefinition(t.kind),t),style:{minWidth:0,maxWidth:"100%"},children:(0,l.jsx)(un,{slot:"row",blocks:e,node:t,selected:a})})}function ia(e,t,a){if(!a)return e;let n=new Set(t.kinds);for(let[r,d]of Object.entries(a)){if(!n.has(r)||!d)continue;let i=r;if(d.card){let c=ae(d.card),p=u=>u.node?(0,l.jsx)(pn,{blocks:c,node:u.node,selected:u.selected,flagged:u.flagged?.includes(u.node.id)??!1}):null;e.register(i,{cardinality:"one",fidelity:"summary"},p)}if(d.row){let c=ae(d.row),p=u=>u.node?(0,l.jsx)(mn,{blocks:c,node:u.node,selected:u.selected}):null;p.says=(u,o)=>ce(c,Q(c,ie({graph:o,schema:t},null,u,{slot:"row"}))),e.register(i,{cardinality:"one",fidelity:"glyph"},p)}if(d.page){let c=ae(d.page),p=u=>u.node?(0,l.jsx)(gn,{blocks:c,props:u}):null;p.says=(u,o)=>ce(c,Q(c,ie({graph:o,schema:t},null,u))),e.register(i,{cardinality:"one",fidelity:"full"},p)}}return e}export{mt as a,It as b,St as c,Kn as d,Nt as e,sn as f,ln as g,Ne as h,$t as i,na as j,aa as k,ia as l};
|