graview 0.1.24 → 0.1.26
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.24X6LFD3.js +6 -0
- package/dist/preview/{chunk.AXACXB4D.js → chunk.2GFB5FOK.js} +1 -1
- package/dist/preview/chunk.3RT463XY.js +1 -0
- package/dist/preview/{chunk.KKTHQJ6F.js → chunk.4INXWGIT.js} +2 -2
- package/dist/preview/{chunk.7U7Q3HIS.js → chunk.4MAYBFPU.js} +1 -1
- package/dist/preview/chunk.4YY54TMR.js +1 -0
- package/dist/preview/chunk.564EIRAT.js +1 -0
- package/dist/preview/chunk.5CXMUC6R.js +16 -0
- package/dist/preview/{chunk.BLAODPYJ.js → chunk.6GJF3F7L.js} +1 -1
- package/dist/preview/chunk.6LJ66MB7.js +1 -0
- package/dist/preview/chunk.6MZBFEXW.js +1 -0
- package/dist/preview/chunk.6R4EI47C.js +1 -0
- package/dist/preview/chunk.7OOKA2DK.js +1 -0
- package/dist/preview/chunk.7ZJPJARU.js +1 -0
- package/dist/preview/{chunk.XDVKD6VX.js → chunk.AAVCTGAE.js} +4 -4
- package/dist/preview/chunk.AKWBAWQF.js +1 -0
- package/dist/preview/chunk.BK2MJOUN.js +1 -0
- package/dist/preview/chunk.CL7GGNEK.js +1 -0
- package/dist/preview/{chunk.TDW6QEG4.js → chunk.D3XF643V.js} +1 -1
- package/dist/preview/{chunk.UM5IPM22.js → chunk.DRIWJRQW.js} +1 -1
- package/dist/preview/chunk.ECG7RM6L.js +1 -0
- package/dist/preview/chunk.ECRZZ3U4.js +1 -0
- package/dist/preview/chunk.HFFEOCYY.js +107 -0
- package/dist/preview/chunk.I5U42VDK.js +3 -0
- package/dist/preview/chunk.IQLDOIWD.js +1 -0
- package/dist/preview/{chunk.WOTNMTIY.js → chunk.JIWB6VGT.js} +1 -1
- package/dist/preview/{chunk.6XBLDV4A.js → chunk.KSEKVHJJ.js} +1 -1
- package/dist/preview/chunk.KXWRS6LY.js +1 -0
- package/dist/preview/chunk.LCFCU3I3.js +1 -0
- package/dist/preview/chunk.LEVR7WLB.js +1 -0
- package/dist/preview/{chunk.FKQTQ3FV.js → chunk.LHIYFAN5.js} +2 -2
- package/dist/preview/chunk.LLUZMOBZ.js +1 -0
- package/dist/preview/{chunk.RT3XFR6E.js → chunk.LUUT2ZWF.js} +3 -3
- package/dist/preview/chunk.MLQQR57X.js +1 -0
- package/dist/preview/chunk.NIEQZOHX.js +1 -0
- package/dist/preview/{chunk.LW7KV5SL.js → chunk.NLFLFIDS.js} +1 -1
- package/dist/preview/{chunk.AKOC43TV.js → chunk.NQP3DWME.js} +1 -1
- package/dist/preview/{chunk.7EN53F4Q.js → chunk.OBGG4SYF.js} +1 -1
- package/dist/preview/chunk.OBQ4DIFO.js +1 -0
- package/dist/preview/chunk.P7YN4Z3K.js +8 -0
- package/dist/preview/{chunk.HAQ4KHRY.js → chunk.PKFL2AR4.js} +1 -1
- package/dist/preview/chunk.PQ2IIC27.js +1 -0
- package/dist/preview/chunk.QFJRXAU3.js +8 -0
- package/dist/preview/chunk.REODVRPZ.js +1 -0
- package/dist/preview/chunk.RH6VRP76.js +1 -0
- package/dist/preview/chunk.SVL6I37U.js +1 -0
- package/dist/preview/chunk.TAW67PZU.js +1 -0
- package/dist/preview/chunk.TUYKH4FG.js +1 -0
- package/dist/preview/chunk.UEEXBS2U.js +1 -0
- package/dist/preview/chunk.UUMXYMOX.js +19 -0
- package/dist/preview/chunk.VW7U4CT5.js +1 -0
- package/dist/preview/chunk.WWWZZAHE.js +1 -0
- package/dist/preview/chunk.XD4Q4FI2.js +1 -0
- package/dist/preview/chunk.XNYBOKLW.js +1 -0
- package/dist/preview/chunk.XOC5BRPU.js +1 -0
- package/dist/preview/chunk.XXNC2AFL.js +1 -0
- package/dist/preview/chunk.YIZ3DJO3.js +1 -0
- package/dist/preview/chunk.YOMW4MKD.js +1 -0
- package/dist/preview/chunk.YXQCEXZX.js +1 -0
- package/dist/preview/chunk.ZLPA5BAW.js +1 -0
- package/dist/preview/chunk.ZOWWWRYA.js +1 -0
- package/dist/preview/page.js +6 -6
- package/package.json +6 -6
- package/dist/preview/chunk.2STFOAXA.js +0 -1
- package/dist/preview/chunk.2VX6H2LL.js +0 -1
- package/dist/preview/chunk.33C6VZAD.js +0 -1
- package/dist/preview/chunk.3O2QU7LU.js +0 -1
- package/dist/preview/chunk.3TNQPFIK.js +0 -1
- package/dist/preview/chunk.42U4UBDE.js +0 -1
- package/dist/preview/chunk.47GRZWQN.js +0 -1
- package/dist/preview/chunk.53RZI5PM.js +0 -1
- package/dist/preview/chunk.54NSG7BX.js +0 -1
- package/dist/preview/chunk.6KJSFIO7.js +0 -1
- package/dist/preview/chunk.6MCK7K3M.js +0 -1
- package/dist/preview/chunk.6O67NOZR.js +0 -1
- package/dist/preview/chunk.7Q7S7YCA.js +0 -1
- package/dist/preview/chunk.BNSY25SG.js +0 -1
- package/dist/preview/chunk.C7KLA2MW.js +0 -1
- package/dist/preview/chunk.D3CYTXNZ.js +0 -1
- package/dist/preview/chunk.DQL3WKR3.js +0 -1
- package/dist/preview/chunk.EUCXNNCZ.js +0 -107
- package/dist/preview/chunk.FRNIWOKD.js +0 -1
- package/dist/preview/chunk.GDIRDJF3.js +0 -1
- package/dist/preview/chunk.H3HRTEW7.js +0 -1
- package/dist/preview/chunk.HDEQXJWX.js +0 -16
- package/dist/preview/chunk.HH6WIUK3.js +0 -8
- package/dist/preview/chunk.ISAMJ7AK.js +0 -1
- package/dist/preview/chunk.KWSXL3A2.js +0 -1
- package/dist/preview/chunk.MYCTNK6D.js +0 -1
- package/dist/preview/chunk.NRWJ6PLU.js +0 -1
- package/dist/preview/chunk.OXODTBOP.js +0 -6
- package/dist/preview/chunk.PRXKRG6O.js +0 -1
- package/dist/preview/chunk.Q5WEOX3Q.js +0 -1
- package/dist/preview/chunk.RGXNZ7PN.js +0 -1
- package/dist/preview/chunk.S4FO7Y2Q.js +0 -1
- package/dist/preview/chunk.TWFYXD3P.js +0 -1
- package/dist/preview/chunk.TWGB347L.js +0 -1
- package/dist/preview/chunk.UEBBASQW.js +0 -1
- package/dist/preview/chunk.UIZWVBJ7.js +0 -1
- package/dist/preview/chunk.VLNI5U6H.js +0 -1
- package/dist/preview/chunk.VTBAKTFP.js +0 -3
- package/dist/preview/chunk.WEGBBWWK.js +0 -1
- package/dist/preview/chunk.XCOPECOJ.js +0 -1
- package/dist/preview/chunk.XDPRWUCJ.js +0 -1
- package/dist/preview/chunk.XJNXSQT4.js +0 -19
- package/dist/preview/chunk.XUXCDUKC.js +0 -1
- package/dist/preview/chunk.Y4R77MKX.js +0 -1
- package/dist/preview/chunk.ZQ4HFIIS.js +0 -8
- /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.FRNIWOKD.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.6O67NOZR.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.PRXKRG6O.js";import{d as ir}from"./chunk.LW7KV5SL.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.2VX6H2LL.js";import{Ea as Ko,G as Wo,I as _o,L as Vt,N as hn,O as Wt,Ob as Uo,P as _t,R as Yo,Rb as Xo,T as zo,Wa as Go,Xb as qo,Yb as Qo,db as Mt,vb as Te}from"./chunk.ZQ4HFIIS.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 l=e.tryDefinition(i);for(let c of Object.values(l?.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(l=>n.includes(l)),...n.filter(l=>!(t.order??[]).includes(l)).sort(vn)].filter((l,c,s)=>s.indexOf(l)===c),o=new Map,i=new Set,a=(l,c,s)=>{o.set(l,{col:c,row:s,side:mr(t.counts?.[l])}),i.add(gr(c,s))};for(let l of r){let c=e.tryDefinition(l)?.plot??t.plots?.[l];c&&a(l,c.col,c.row)}for(let l of r){if(o.has(l))continue;if(o.size===0){a(l,0,0);continue}let c,s=0;for(let h of[...o.keys()].sort(vn)){let g=pr(e,l,h);(g>s||g===s&&g>0&&c!==void 0&&vn(h,c)<0)&&(s=g,c=h)}let d=c?o.get(c):o.get(r.find(h=>o.has(h))),u;for(let h=1;!u&&h<64;h++)u=$i(d.col,d.row,h).find(g=>!i.has(gr(g.col,g.row)));a(l,u?.col??d.col+5*o.size,u?.row??d.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],l=n[i],c=[];for(let[s,d]of[[a,l],[l,a]]){let u=e.tryDefinition(s);for(let[h,g]of Object.entries(u?.edges??{}))(g.to==="*"?e.kinds:g.to).includes(d)&&c.push(h)}c.length>0&&r.push({from:a,to:l,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[d,u]=i[s];return{id:c,col:e.col+(d+.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),l=_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="",d=""]=i.split("="),u=s.split(":")[0],h=i===""||i==="kind"||i.startsWith("more")?null:`${Yo(a,u).toLowerCase()}: ${d==="none"?"none":d}`;return[i.startsWith("more")?`More ${l.toLowerCase()}`:l,[c,h].filter(Boolean).join(", ")].filter(Boolean).join(" \u2014 ")}function kn(e,t){let n=e.map(()=>0),r=e.map((a,l)=>({size:a,index:l})).sort((a,l)=>a.size-l.size||a.index-l.index),o=Math.max(t,e.length),i=e.length;for(let{size:a,index:l}of r){let c=Math.max(1,Math.floor(o/i));n[l]=Math.min(a,c),o-=n[l],i-=1}return n}function 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 l=0;l<o;l++)n[n.length-1].push(i);r-=o;return}let a=o;for(;a>0;){let l=Math.min(t,a);n.push(Array.from({length:l},()=>i)),a-=l,r=t-l}}),n}function 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 l of Ko(n.schema,r).groups)if(l.key!==n.exclude)if(l.buckets)for(let c of["decade","year","month"])i.push({by:l.key,bucket:c});else i.push({by:l.key});let a;return i.forEach((l,c)=>{let d=ir(e,{group:l},o).groups;if(d.length<2||d.length>t)return;let h=d.filter(x=>x.key!=="").reduce((x,p)=>x+p.nodes.length,0)/e.length;if(h<.5||d.some(x=>x.nodes.length>e.length*.75))return;let g=[-Math.round(h*100),Math.abs(d.length-Bi),c];(!a||ji(g,a.score))&&(a={grouping:{by:l.by,...l.bucket?{bucket:l.bucket}:{},groups:d},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 l=i.filter(p=>!p.whole),c=i.filter(p=>p.whole).reduce((p,f)=>p+f.run.length,0),s=Math.max(l.length,t.budget-c);for(let p of l){p.members=Fi(p.run.map(m=>m.node),r,t.graph);let f=s-(l.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 d=p=>p.byKind?p.kinds.length:p.grouping?p.grouping.groups.length:1;for(;l.reduce((p,f)=>p+d(f),0)>s;){let p=[...l].filter(f=>d(f)>1).sort((f,m)=>d(m)-d(f))[0];if(!p)break;p.grouping=void 0,p.byKind=!1}s-=l.reduce((p,f)=>p+d(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=l.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 l=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),d=c+s/2,u=r.height*.53,h=co(l),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=d-(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(l.get(J.kind),L).y),ie=Math.max(...re),de=Math.min(...re);return e.map(J=>{let Ae=l.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=d-(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:l}}function wt(e){let t={x:e.width*.45,y:e.height*.45};if(!e.city)return t;let{extent:n}=e.city,r=24;return{x:Math.max(t.x,n.x+n.width-e.width+r,-n.x+r),y:Math.max(t.y,n.y+n.height-e.height+r,-n.y+r)}}var Mn=48;function 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,l=i<0?"left":i>t?"right":a<0?"top":a>n?"bottom":null;if(!l)continue;let c=l==="left"||l==="right",s=c?Math.max(0,Math.min(n,a)):Math.max(0,Math.min(t,i)),d=(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:d(i,t),y:u(a,n)}:{x:u(i,t),y:d(a,n)};r.push({id:o.id,kind:o.id.slice(5),side:l,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,d)=>{s!==d&&((r.get(s)??r.set(s,new Set).get(s)).add(d),(r.get(d)??r.set(d,new Set).get(d)).add(s))};for(let s of n){let d=e.tryDefinition(s);if(d)for(let u of Object.values(d.edges??{})){let h=u.to==="*"?n:u.to;for(let g of h)o(s,g)}}let i=new Map,a=new Map,l=[...t].filter(s=>n.includes(s));for(let s of l)i.set(s,0);let c=0;for(;l.length>0;){c+=1;let s=[];for(let d of[...l].sort((u,h)=>n.indexOf(u)-n.indexOf(h)))for(let u of[...r.get(d)??[]].sort((h,g)=>n.indexOf(h)-n.indexOf(g)))i.has(u)||(i.set(u,c),c===2&&a.set(u,d),s.push(u));l=s}return{rankOf:s=>{let d=i.get(s);if(d!==0)return d===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 l=a.from===n.id?a.to:a.to===n.id?a.from:null;if(l===null||l===n.id)continue;let c=e.getNode(l);if(!c||i.has(l))continue;let s=a.from===n.id?"out":"in",d=s==="out"?n.kind:c.kind,u=Wi(t,d,a.kind,s);i.set(l,{node:c,via:{edgeKind:a.kind,direction:s,...u?{description:u}:{}}})}if(i.size>0){let a=l=>`${l.via.edgeKind}|${l.via.description??""}`;return[...i.values()].sort((l,c)=>(a(l)<a(c)?-1:a(l)>a(c)?1:0)||dt(l.node,c.node))}}if(n){let i=o[n.id]??[],a=new Set,l=[];for(let c of i){if(c===n.id||a.has(c))continue;let s=e.getNode(c);s&&(r&&r!=="judges"&&s.kind!==r||(a.add(c),l.push({node:s,via:{edgeKind:"judges",direction:"out",description:"what it finds wrong"}})))}if(l.length>0)return l.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,d)=>s.plane-d.plane);for(let s of o)for(let d of s.aggregate?.memberIds??[])!t.has(d)&&!r.has(d)&&r.set(d,s.id);let i=s=>t.get(s)??t.get(r.get(s)??""),a=new Map,l=new Map,c=new Map;for(let s of e.allEdges()){let d=i(s.from),u=i(s.to);if(!d||!u||d.id===u.id&&!(n.overview&&d.aggregate&&d.plane===2))continue;let h=`${s.kind}:${d.id}:${u.id}`,g=a.get(h);if(g){let x=`${s.from}
|
|
2
|
-
${s.to}`,p=l.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}l.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:d.id,to:u.id,edges:[{from:s.from,to:s.to}],single:{from:s.from,to:s.to},...d.id===u.id?{loop:!0}:{},x1:d.x+d.width/2,y1:d.y+d.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,l=Math.max(n,(r-a)/2);return Array.from({length:e},(c,s)=>({x:l+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},(l,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,l=o.width-a-(o.inset?.right??0),c=[],s=new Map,d=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(d),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(l*.1)),k=R?Math.min(880,l-j(5)):Math.min(700,l-j(6)),w=R?l-j(5):Math.min(o.focusSize.width,l-j(6)),M=(y,I,_)=>({width:y===0?I:Math.min(I,(l-o.gap*(y+1))/y),height:_}),C=(y,I,_)=>{let Q=M(y,I,_),we=Math.min(I,Rn*i,l-o.gap*2);return Q.width>=we?Q:{width:we,height:_}},B=y=>Math.max(1,Math.floor((l-o.gap)/(Math.min(y,Rn*i,l-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=>d(y.node)),D=$.length>0?S.focusH:S.contextY-S.focusY-o.gap*2,H=w,Y=o.height,K=Math.min(l*.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+(l-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+(l-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+(l-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((l-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,l,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(d);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,l/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,l,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=l*.78*Bt,Ho=o.height*.72*Bt,_n=Math.min(zi*i,l*.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(l=>l.id===t);if(!r||r.screenOf!==void 0)return null;let o={...r,x:n.x,y:n.y,pinned:!0},i=o.x+o.width/2,a=o.y+o.height/2;return{...e,nodes:e.nodes.map(l=>l.id===t?o:l),connectors:e.connectors.map(l=>l.from===t?{...l,x1:i,y1:a}:l.to===t?{...l,x2:i,y2:a}:l)}}function 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(d=>n.get(d)).filter(d=>d!==void 0);if(a.length===0)return null;let l=a.map(Ar),c=l.reduce((d,u)=>d+u.x,0)/l.length,s=l.reduce((d,u)=>d+u.y,0)/l.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(d=>[d.id,d])),i=new Map(t.nodes.map(d=>[d.id,d])),a=[];for(let[d,u]of o){let h=i.get(d);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[d,u]of i){if(o.has(d))continue;let h=Nr(u,e)??u;a.push(ko(h,u,r,r))}let l=new Map(e.connectors.map(d=>[d.id,d])),c=new Map(t.connectors.map(d=>[d.id,d])),s=[];for(let[d,u]of l){let h=c.get(d);s.push(h?{...Qi(u,h,r),opacity:1}:{...u,opacity:1-r})}for(let[d,u]of c)l.has(d)||s.push({...u,opacity:r});return{nodes:a.filter(d=>d.opacity>0).sort((d,u)=>d.id<u.id?-1:d.id>u.id?1:0),connectors:s.filter(d=>d.opacity>0).sort((d,u)=>d.id<u.id?-1:d.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 l=Math.min(i.y,a.y),c=Math.max(i.y,a.y);t<l||t>=c||n.push(i.x+(t-i.y)/(a.y-i.y)*(a.x-i.x))}n.sort((o,i)=>o-i);let r={x0:0,x1:0};for(let o=0;o+1<n.length;o+=2){let i={x0:n[o],x1:n[o+1]};i.x1-i.x0>r.x1-r.x0&&(r=i)}return r}function 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],l=i.x*a.y-a.x*i.y;t+=l,n+=(i.x+a.x)*l,r+=(i.y+a.y)*l}if(Math.abs(t)<1e-9){let o=e.reduce((i,a)=>({x:i.x+a.x,y:i.y+a.y}),{x:0,y:0});return{x:o.x/e.length,y:o.y/e.length}}return{x:n/(3*t),y:r/(3*t)}}function na(e,t){let{room:n,height:r,size:o,floor:i,measure:a=Jn,lines:l=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(l>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 d=a(e,i)/Math.max(1,e.length),u=Math.floor(n/d)-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)),l=(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(l.current=f,a(f),typeof requestAnimationFrame>"u")return;let m=requestAnimationFrame(()=>{let b=$t(e,e,1);l.current=b,a(b)});return()=>cancelAnimationFrame(m)}let d=performance.now(),h=s.current!==null&&l.current.t<1&&d-s.current<n?s.current:d;s.current=h;let g=En(Math.min(1,(d-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));l.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);l.current=O,a(O),c.current=null}))};return c.current=requestAnimationFrame(p),()=>{c.current!==null&&cancelAnimationFrame(c.current);let f=l.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,l)=>{r(c=>{let s=new Map(c.marks),d=[...c.acts];for(let u of l){if(u.undoes!==void 0){let x=d.find(f=>f.batch===u.undoes||f.wrote.length>0),p=d.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);d=d.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);d.find(x=>x.batch===u.batch)?d=d.map(x=>x.batch===u.batch?{...x,wrote:[...new Set([...x.wrote,...u.writes])]}:x):d=[{batch:u.batch,who:h,intent:u.batchIntent??u.intent,at:u.at,wrote:[...u.writes]},...d].slice(0,12)}return s.size===c.marks.size&&d===c.acts&&s.size===0?c:{marks:s,acts:d}}),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,l=a?.getBoundingClientRect()??null,c=[];for(let[d,u]of e){let h=null;if(a&&l&&typeof CSS<"u"){let f=a.querySelector(`[data-graview-pick="${CSS.escape(d)}"]`)?.getBoundingClientRect();f&&f.width>0&&f.height>0&&(h={x:f.left-l.left,y:f.top-l.top,width:f.width,height:f.height})}if(h??=n(d),!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:d,who:u,x:g,y:x})}let s=[];for(let d of t){let u=n(d.id);u&&s.push({...d,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:d,who:u,x:h,y:g})=>(0,Ht.jsx)("span",{className:"graview-seat-mark","data-testid":"seat-mark","data-graview-seat-mark":d,"data-graview-seat-who":u,title:`${u} just changed this`,"aria-hidden":"true",style:{left:h,top:g,"--graview-hue":Mt(u)},children:"\u25C6"},d)),s.map(d=>(0,Ht.jsxs)("span",{className:"graview-seat-asking","data-testid":"seat-question","data-graview-seat-asking":d.id,title:d.asks,style:{left:d.x,top:d.y},children:[(0,Ht.jsx)("span",{"aria-hidden":"true",children:"?"}),(0,Ht.jsx)("span",{className:"graview-seat-asking-said",children:d.asks})]},`asking:${d.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:l}){let{selection:c,store:s,emphasis:d}=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)(l);p.current=l;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":d!==null&&k.edges.includes(d)?"":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:l}){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:d=>{l(t)&&d.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(d=>(0,ke.jsxs)("g",{className:"graview-building","data-graview-building":d.id,"data-graview-flagged":s.has(d.id)?"":void 0,"data-graview-selected":c.has(d.id)?"":void 0,children:[(0,ke.jsx)("polygon",{className:"graview-iso-left",points:d.left}),(0,ke.jsx)("polygon",{className:"graview-iso-right",points:d.right}),(0,ke.jsx)("polygon",{className:"graview-iso-roof",points:d.roof})]},d.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),l=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),d=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,l,c,s]),left:An([s,c,d,u]),right:An([c,l,h,d]),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),l=f=>Math.floor(f.col/5),c=a(e),s=a(t),d=l(e),u=l(t),h=s>c?c*5+5-.5:s<c?c*5-.5:c*5+5-.5,g=u>d?u*5-.5:u<d?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(l=>{let c=ve(l.col,l.row,n.cell);return{x:n.originX+r.x+c.x,y:n.originY+r.y+c.y}}),i=[],a=!1;for(let l=0;l<o.length-1;l++){let c=o[l],s=o[l+1];if(!a){if(Pn(s,e,n,r))continue;let d=0,u=1;for(let h=0;h<12;h++){let g=(d+u)/2;Pn(Cn(c,s,g),e,n,r)?d=g:u=g}i.push(Cn(c,s,u)),a=!0}if(Pn(s,t,n,r)){let d=0,u=1;for(let h=0;h<12;h++){let g=(d+u)/2;Pn(Cn(c,s,g),t,n,r)?u=g:d=g}return i.push(Cn(c,s,d)),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,l)=>{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}:${l}`);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 d=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":d?"":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${d?". Press to stop following":". Press to go where they go"}`,"aria-pressed":d,onClick:u=>{u.stopPropagation(),o(d?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,l=-1/0,c=r.filter(s=>s.side===i).sort((s,d)=>s.along-d.along);for(let s of c){let d=Math.max(Wr,Math.min(a-Wr,Math.max(s.along,l+ga)));l=d;let u=_t(t,s.kind),h=i==="left"?{left:6,top:d,transform:"translateY(-50%)"}:i==="right"?{right:6,top:d,transform:"translateY(-50%)"}:i==="top"?{top:6,left:d,transform:"translateX(-50%)"}:{bottom:6,left:d,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 l=(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 d=t.nodes.find(E=>E.id===i);if(!d)return;let u=o>1&&d.screenOf?t.nodes.find(E=>E.id===ce(d.screenOf)):void 0,h=u?{x:Math.min(d.x,u.x),y:Math.min(d.y,u.y),width:Math.max(d.x+d.width,u.x+u.width)-Math.min(d.x,u.x),height:Math.max(d.y+d.height,u.y+u.height)-Math.min(d.y,u.y)}:d;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+(d.y+R<x?x-d.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 d=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);d.set(u.id,{x:n.city.originX+r.x+h.x,y:n.city.originY+r.y+h.y})}l.current=d}return(0,bt.useEffect)(()=>{let d=e.overview??!1,u=c.current&&!d;if(c.current=d,d&&s.current&&(clearTimeout(s.current),s.current=null),!u)return;let h=e.focusId?xt(e.focusId)[0]:void 0,g=h?l.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),l=(0,se.useRef)(r);l.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]),d=(0,se.useCallback)(()=>{a.current=!1;for(let x of c())x.style.transform="";l.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&&d()},300),!0)},[n,d]);(0,se.useLayoutEffect)(()=>{a.current&&d()},[t,d]);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:l,shift:c,district:s}){let d=(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&&(d.current=!0,setTimeout(()=>d.current=!1,0),l()),u.current=null,!c.settling.current&&a(!1)},swallow:d}}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 l=(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?l(!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},d=u=>{u.preventDefault();let h=r.current,g=u.scale??1;if(!(h.view.overview??!1)){g<.72&&l(!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",d),()=>{a.removeEventListener("wheel",c),a.removeEventListener("gesturestart",s),a.removeEventListener("gesturechange",d)}},[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 l=e.parentElement;for(;l&&l!==t;){let s=getComputedStyle(l);if(s.overflowX!=="visible"||s.overflowY!=="visible"){let d=l.getBoundingClientRect();s.overflowX!=="visible"&&(n=Math.max(n,d.left),o=Math.min(o,d.right)),s.overflowY!=="visible"&&(r=Math.max(r,d.top),i=Math.min(i,d.bottom))}l=l.parentElement}if(o-n<=2||i-r<=2)return null;let c=t.getBoundingClientRect();return{x:n-c.left,y:r-c.top,width:o-n,height:i-r}}function Qe(e,t,n){if(!e||typeof document>"u")return null;let r=e.querySelector(`[data-graview-view="${CSS.escape(t)}"]`);if(!r)return null;let o=(n?r.querySelector(".graview-kind-block"):null)??r.querySelector('[data-graview-primitive="panel"], .graview-kind-face, .graview-kind-card')??r;return Ln(o,e)}function In(e,t,n,r,o){let i=s=>e.nodes.find(d=>d.id===s);if(o.startsWith("screen:")){let s=o.slice(7),d=e.nodes.find(f=>f.screenOf===s);if(!d)return null;let u=Qe(t,d.id,!1)??qe(d,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),l=$e(o);if(!a&&l!==null&&(a=i(Ee(l))),!a&&Et(o)){let[s]=xt(o);s&&(a=i(ce(s)))}if(!a){let s=r.places().find(d=>d.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,d)=>s.plane-d.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,l=h=>_t(t.schema,h),c=h=>t.graph.allNodes().filter(g=>g.kind===h).length,s=h=>!n.overview&&n.focusId===Ee(h),d=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:`${d.length} more district${d.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:["+",d.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)?`${l(h)} \u2014 where you are`:`Go to ${l(h)}`,onPointerDown:g=>g.stopPropagation(),onClick:g=>{g.stopPropagation(),u(h)},children:[(0,te.jsx)("span",{className:"graview-beyond-name",children:l(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(),l=It(),c=lr(),s=wn(),d=e.aggregate||Et(e.id)||$e(e.id)!==null?"many":"one",u={cardinality:d,fidelity:r??or[va(e.plane)].fidelity},h=d==="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,l]),R={...e.aggregate?{nodes:b,label:g?.title??e.aggregate.label}:{node:o.graph.getNode(e.id)},fidelity:u.fidelity,cardinality:u.cardinality,mode:t,selected:n,implicated:c,flagged: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:l,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,l=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,d=(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?d>0?"lit":"dimmed":void 0,title:u?`${o.label} \u2014 press twice to see them all, arranged`:`${o.label}: ${l} \u2014 press twice to open`,children:[(0,te.jsxs)("span",{className:"graview-band-group-head",children:[(0,te.jsx)("span",{className:"graview-band-group-name",children:o.label}),(0,te.jsx)("span",{className:"graview-band-group-open","aria-hidden":"true",children:u?"\u2197":"\u25BE"})]}),(0,te.jsxs)("span",{className:"graview-band-group-names",children:[u?null:(0,te.jsxs)("span",{className:"graview-band-group-count",children:[l,d>0?` \xB7 ${d} 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=new ResizeObserver(i=>{let a=i[0]?.contentRect;!a||a.width===0||a.height===0||n(l=>{let c={width:Math.round(a.width),height:Math.round(a.height)};return l&&l.width===c.width&&l.height===c.height?l:c})});return o.observe(r),()=>o.disconnect()},[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],l=e[i+1],c=!Co(a,t);c&&r.length===0&&r.push(a);for(let s=1;s<=48;s++){let d=s/48,u={x:a.x+(l.x-a.x)*d,y:a.y+(l.y-a.y)*d},h=!Co(u,t);if(h===c)continue;let g=(s-1)/48,x=d;for(let m=0;m<10;m++){let b=(g+x)/2,R={x:a.x+(l.x-a.x)*b,y:a.y+(l.y-a.y)*b};!Co(R,t)===c?g=b:x=b}let p=(g+x)/2,f={x:a.x+(l.x-a.x)*p,y:a.y+(l.y-a.y)*p};h?r=[f]:(r.push(f),r.length>=2&&n.push(r),r=[]),c=h}c&&r.push(l)}return r.length>=2&&n.push(r),n}function nn(e,t){let n=Math.abs(t.x-e.x);if(Math.abs(t.y-e.y)>n){if(n<2)return[e,t];let i=(e.y+t.y)/2;return[e,{x:e.x,y:i},{x:t.x,y:i},t]}let o=(e.x+t.x)/2;return Math.abs(t.x-e.x)<2?[e,t]:[e,{x:o,y:e.y},{x:o,y:t.y},t]}var 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],l=e[o+1],c=Math.hypot(a.x-i.x,a.y-i.y),s=Math.hypot(l.x-a.x,l.y-a.y),d=Math.min(t,c/2,s/2),u={x:a.x+(i.x-a.x)/(c||1)*d,y:a.y+(i.y-a.y)/(c||1)*d},h={x:a.x+(l.x-a.x)/(s||1)*d,y:a.y+(l.y-a.y)/(s||1)*d};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 l=nn(t.p0,t.p1),c=l.slice(1).map((u,h)=>Math.hypot(u.x-l[h].x,u.y-l[h].y)),s=c.reduce((u,h)=>u+h,0)||1,d=n*s;for(let u=0;u<c.length;u++){let h=c[u];if(d<=h||u===c.length-1){let g=h===0?0:Math.min(1,d/h),x=l[u],p=l[u+1];return{x:x.x+(p.x-x.x)*g,y:x.y+(p.y-x.y)*g}}d-=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=[],l=-1/0;for(let s of i.boxes)a.push({from:l,to:s.x-12}),l=s.x+s.width+12;a.push({from:l,to:1/0});let c=[];for(let s of n)for(let d of a){let u=Math.max(s.from,d.from),h=Math.min(s.to,d.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),l=i.from===-1/0||i.to===1/0,c=Math.abs(a-t)+(l?60:0);c<o&&(o=c,r=a)}return r}function 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),l=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:l,y:O},{x:l,y:R},{x:c,y:R},{x:c,y:E}]}let d=a>i,u=d?1:-1,h={x:l,y:d?e.y+e.height:e.y},g={x:c,y:d?t.y:t.y+t.height},x=(d?qt(o,i,i+1):qt(o,i-1,i))+s,p=(d?qt(o,a-1,a):qt(o,a,a+1))+s;if(Math.abs(a-i)===1)return[h,{x:l,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:l,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},l={x:e.x+e.width/2,y:e.y+e.height/2},c=Tn(e,a),s=Tn(t,l),d=Math.hypot(s.x-c.x,s.y-c.y);if(d<8)return null;let u=Math.min(36,d*.12),h=-(s.y-c.y)/d,g=(s.x-c.x)/d;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),l=i===0?1/0:e.height/2/Math.abs(i),c=Math.min(a,l),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=l=>!!l.aggregate&&Math.round(l.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(),l=[];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)&&l.push({x:s.left-a.left,y:s.top-a.top,width:s.width,height:s.height})}return l.sort((c,s)=>c.width*c.height-s.width*s.height),o.set(n,l),l}function Hn(e,t,n,r,o){let i=new Map(e.map(f=>[f.id,f])),a=Oa(),l=new Map,c=f=>{if(!n||typeof document>"u")return null;let m=l.get(f);return m===void 0&&(m=n.querySelector(`[data-graview-view="${CSS.escape(f)}"]`),l.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 d=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=d.get(b),E={x:R.left-f.left,y:R.top-f.top,width:R.width,height:R.height};O?O.push(E):d.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 d)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(d=>s.x>d.x&&s.x<d.x+d.width&&s.y>d.y&&s.y<d.y+d.height),r=s=>!n(Io(e,s)),i=(s,d,u)=>{for(let h=0;h<10;h++){let g=(s+d)/2;r(g)===u?s=g:d=g}return(s+d)/2},a=[],l=null,c=r(0);c&&(l=0);for(let s=1;s<=64;s++){let d=s/64,u=r(d);if(u===c)continue;let h=i((s-1)/64,d,c);u?l=h:l!==null&&(h-l>.001&&a.push(ui(e,l,h)),l=null),c=u}return l!==null&&1-l>.001&&a.push(ui(e,l,1)),a}function hi({strands:e,result:t,scheme:n,overview:r,selection:o,emphasis:i,stageRef:a,liveOf:l,onPickEdge:c}){let s=en(),d=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&&d.has(S.from)&&d.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=l?.(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":l?.(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)),l=i.filter(c=>c.top-a<=12);return{key:i[0].key,text:i[0].text,left:Math.min(...l.map(c=>c.left)),right:Math.max(...l.map(c=>c.right)),top:a}});r.sort((i,a)=>i.top-a.top||i.left-a.left);let o=r.map(i=>{let a=Math.max(i.right-i.left,Math.min(300,Aa(i.text))),l=(i.left+i.right)/2;return{left:l-a/2,right:l+a/2}});return r.map((i,a)=>{let l=r.map((m,b)=>({other:m,at:b})).filter(({other:m})=>m!==i&&Math.abs(m.top-i.top)<=12),c=l.filter(({other:m})=>m.right<=i.left).map(({other:m,at:b})=>o[b].right+8<=(m.right+i.left)/2?o[b].right+8:(m.right+i.left+8)/2),s=l.filter(({other:m})=>m.left>=i.right).map(({other:m,at:b})=>o[b].left-8>=(i.right+m.left)/2?o[b].left-8:(i.right+m.left-8)/2),d=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-d)),p=(i.left+i.right)/2,f=h>=x?i.left:Math.max(d,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:l,store:c,graphNodes:s,onPickEdge:d,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,l.current,o,r))},[e,m,h,i,o,s,r,g,l]);let b=e.nodes.map(E=>E.id).join(`
|
|
8
|
-
`);if((0,_e.useLayoutEffect)(()=>{let E=l.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()}},[l,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:l,onPickEdge:d,liveOf:u}),(0,Ce.jsx)(La,{stageRef:l,nodes:e.nodes,scheme:r,selection:i,store:c,graphNodes:s,overview:o,width:t,height:n,onPickEdge:d,alreadyDrawn:O,tick:g})]})}function La({stageRef:e,nodes:t,scheme:n,selection:r,store:o,graphNodes:i,overview:a,width:l,height:c,onPickEdge:s,alreadyDrawn:d,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(d?.has(`${w.kind}|${w.self}|${w.other}`)||d?.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,l,c,d,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:l,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(),[l,c]=(0,_e.useState)([]);(0,_e.useLayoutEffect)(()=>{o||i||c(s())},[e,o,i,t,n,r]);function s(){let d=[];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);d.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(d,{left:u.left,right:n-u.right})}return l.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:l.map(d=>{let{left:u,width:h}=d;return(0,Ce.jsx)("div",{"data-graview-relation":d.key,title:d.text,style:{position:"absolute",left:u,width:h,textAlign:"center",top:Math.max(0,d.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:d.text})},d.key)})})}var rn=ee(He(),1);var Na=new Set;function mi(e,t,n,r,o,i,a,l){let{store:c,views:s,hiddenKinds:d}=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,l]),p=(0,rn.useMemo)(()=>({hits:u?mn(u):Na,...x}),[u,x]);return(0,rn.useMemo)(()=>({...e,cityZoom:i,...a!==void 0?{screenHeight:a}:{},...d.size>0?{hiddenKinds:[...d].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,d,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:l,activity:c,scheme:s,canvasWidth:d,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,d,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":l||void 0,"data-graview-pinned":e.pinned||void 0,"data-graview-activity":c?c.manner:void 0,"data-graview-wrote":c?.wrote||void 0,"data-graview-read":c&&!c.wrote?!0:void 0,"data-graview-broke":c?.broke||void 0,title:c?`${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)((l,c)=>{let s=i.current,d=(u,h,g)=>Math.max(Math.min(-u,h),Math.min(Math.max(u,h),g+h))-h;return{x:d(l.x,s.x,c.x),y:d(l.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,l=a?null:n,c=(0,q.useMemo)(()=>{let h=t.pan?{...t,pan:void 0}:t;return l?Kt(h,l.id,{x:l.x,y:l.y}):h},[t,l]),s=(0,q.useMemo)(()=>On(e.graph,e.schema,c,r),[e,c,r,o]),d=(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(d,i??{x:0,y:0}),[d,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=l=>{let c=o.getBoundingClientRect();e.set({x:l.clientX-c.left,y:l.clientY-c.top})},a=()=>e.set(null);r?(o.addEventListener("pointermove",i),o.addEventListener("pointerleave",a),n=()=>{o.removeEventListener("pointermove",i),o.removeEventListener("pointerleave",a)}):(n?.(),n=void 0)})},[e])}function 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 l=t({canvas:i,layout:r,dirty:a,hostOf:c=>i.querySelector(`[data-graview-view="${CSS.escape(c)}"]`)});return()=>{l?.()}},[e,t,r,o])}function 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,l=n?.broke??!1;for(let c of r){let s=e.get(c);s&&(i||=s.wrote,a||=s.read,l||=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:l}: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 l=e.resolve(a.kind,{cardinality:"many",fidelity:"full"})?.view;return l!==void 0&&l.generic!==!0};return a=>({onSelect:l=>{if(Gt(a.id)){r(s=>l?vi(s,a.id):[a.id]);return}let c=a.aggregate?Jt(a.id):[];if(t.overview){r(s=>l?[...new Set([...s,a.id])]:[a.id]);return}if(c.length===1&&!l&&Math.round(a.plane)!==0){let s=c[0];n(d=>Un(d,d.relation===s?null:s));return}r(s=>Po(a,s,l))},onPick:(l,c,s)=>r(d=>s?c?[...new Set([...d,...s])]:[...s]:c?vi(d,l):[l]),onTravel:l=>{n(c=>({...Ot(c,l),relation:null})),r([l])},onJackIn:()=>{let l=a.aggregate?.opens;if(l){l.in==="place"?n(d=>qn(d,a.id)):n(d=>Object.entries(l.within).reduce((u,[h,g])=>Xn(u,h,g),Ot(zt(d,!1),l.focus))),r([]);return}let c=$e(a.id),s=c!==null&&(o?.byKind[c]??0)>0;n(d=>Qn(d,a.id,{ownPicture:i(a),...s&&d.q?{carry:d.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 l=le(),{store:c,scheme:s,views:d,view:u,setView:h,selection:g,setSelection:x,setMenuAt:p,emphasis:f,brand:m,noteMoved:b,robots:R,seatTalk:O,motion:E}=l,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(l,U,k),Ka(l.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,d,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,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)(d=>{let u=d.within?.view;if(u===void 0||d.focusId)return d;let h=n.places().find(g=>g.as===u);return h?{...d,focusId:Ee(h.kind)}:d},[n]),a=(0,Ze.useRef)(!1);(0,Ze.useEffect)(()=>{if(typeof window>"u")return;let d=i(Mi());!fn(d,zn)&&!fn(d,e)&&(a.current=!0,t(d))},[]),(0,Ze.useEffect)(()=>{if(typeof window>"u")return;let d=()=>t(i(Mi()));return window.addEventListener("popstate",d),window.addEventListener("hashchange",d),()=>{window.removeEventListener("popstate",d),window.removeEventListener("hashchange",d)}},[t,i]);let l=(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 d=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){l.current=!0,c.current=e;return}if(!l.current){l.current=!0,c.current=e,window.history.replaceState({graview:Nt.at},"",h);return}if(d||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,l=i??n,c=It();return(0,To.useMemo)(()=>{let s=[...new Set(l.flatMap(u=>Jt(u)))],d=l.map(u=>Rt(u)).filter(u=>u!==null);return hr(t,l,{principal:r,kindSelection:s,edgeSelection:d,...o?{providers:o}:{},...a})},[t,l,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{e as T,f as I,g as L,h as D,i as E}from"./chunk.54NSG7BX.js";import{a as U}from"./chunk.UM5IPM22.js";import{c as w,e as _}from"./chunk.6XBLDV4A.js";import{a as A,b as N,c as C,e as R,l as M,m,n as V}from"./chunk.WOTNMTIY.js";import{E as O,I as G,M as k,R as F}from"./chunk.ZQ4HFIIS.js";var S=e=>{try{return e()}catch{return null}},X=e=>typeof e=="string"&&I.includes(e);function q(e){if(e!==void 0)return X(e)?e:e&&typeof e=="object"&&typeof e.expr=="string"?{expr:S(()=>w(e.expr))}:"neutral"}var Q=4;function ee(e){let n=typeof e.list=="string"?S(()=>w(e.list)):null,a=e.sort,r=typeof a=="string"?a:a&&typeof a=="object"&&typeof a.by=="string"?a.by:void 0,t=a&&typeof a=="object"?a.direction:void 0,o=n,i;if(n&&r!==void 0)if(t==="choices")i=r;else{let f=S(()=>w(r));o=f?{t:"call",fn:"sort",args:[n,f,{t:"lit",value:t==="desc"?"desc":"asc",at:0}],at:0}:null}let l=typeof e.limit=="number"&&Number.isInteger(e.limit)&&e.limit>=1?Math.min(e.limit,E):void 0,s=e.group,d=typeof s=="string"?s:s&&typeof s=="object"&&typeof s.by=="string"?s.by:void 0,y=s&&typeof s=="object"&&s.headings&&typeof s.headings=="object"?s.headings:{};return{t:"list",source:o,...i?{choiceOrder:i}:{},...l?{limit:l}:{},...d?{group:{by:d,headings:Object.fromEntries(Object.entries(y).filter(f=>typeof f[1]=="string"))}}:{},...typeof e.empty=="string"?{empty:e.empty}:{},as:e.as==="card"?"card":"row"}}function W(e,n=1,a=""){if(!Array.isArray(e)||n>Q)return[];let r={};return e.flatMap(t=>{if(!t||typeof t!="object"||Array.isArray(t))return[];let o=t,i=p=>typeof p=="string"?S(()=>_(p)):null,l=p=>typeof p=="string"?S(()=>w(p)):null,s=q(o.tone),d=typeof o.label=="string"?o.label:void 0,y=p=>Object.hasOwn(o,p),f=typeof o.currency=="string"&&/^[A-Z]{3}$/.test(o.currency)?o.currency:void 0,u=y("list")?"list":y("headline")?"headline":typeof o.figure=="string"?"number":ne.find(y);if(!u)return[];let x=r[u]=(r[u]??0)+1,j=o.key,B=typeof j=="string"&&j?j:`${a}${u}.${x}`;return[{...(()=>{switch(u){case"list":return ee(o);case"number":{let p=D.includes(o.as)?o.as:void 0;return{t:u,value:l(o.figure),...p?{as:p}:{},...f?{currency:f}:{},...d?{label:i(d)}:{}}}case"headline":case"title":return{t:u,parts:i(o[u])};case"text":case"badge":return{t:u,parts:i(o[u]),...s?{tone:s}:{}};case"field":{let p=L.includes(o.as)?o.as:void 0;return{t:u,field:String(o.field),...p?{as:p}:{},...f?{currency:f}:{},...d?{label:d}:{}}}case"progress":{let p=o.progress??{};return{t:u,value:l(p.value),max:l(p.max),...d?{label:i(d)}:{}}}case"group":return{t:u,blocks:W(o.group,n+1,`${B}.`),direction:o.direction==="row"?"row":"column"};case"when":return{t:u,when:l(o.when),show:W(o.show,n+1,`${B}.`)};default:return{t:u}}})(),key:B}]})}var ne=["title","text","badge","field","progress","group","when","divider","figure"],h="\u2014",re=500;function g(e,n){if(!e)return{ok:!1,problem:"an expression that does not parse"};try{return{ok:!0,value:R(e,{graph:n.graph??M,subject:n.node,kinds:n.kinds,today:n.today,budget:n.budget??re})}}catch(a){return{ok:!1,problem:a instanceof Error?a.message:String(a)}}}function b(e,n){if(!e)return{text:h,problem:"a template that does not parse"};let a,r=e.map(t=>{if(t.text!==void 0)return t.text;let o=g(t.expr??null,n);return o.ok?m(o.value,t.format,n.today,t.formatArgs,n.money):(a??=`{${t.source??""}}: ${o.problem}`,h)}).join("");return a?{text:r,problem:a}:{text:r}}function $(e,n){if(e===void 0)return;if(typeof e=="string")return e;let a=g(e.expr,n);return a.ok&&X(a.value)?a.value:"neutral"}function te(e){if(typeof e=="string")try{let n=new URL(e);return n.protocol==="http:"||n.protocol==="https:"?n.href:void 0}catch{return}}function oe(e,n,a,r,t){if(n==null||n==="")return h;if(typeof n=="boolean")return n?"yes":"no";if(r)return m(n,r,a.today,[],t?{...a.money,currency:t}:a.money);let o=a.fields[e];return a.definition?.display?.format?.[e]?k(a.definition,e,n):o?.type==="date"?m(n,"date",a.today):o?.type==="enum"&&typeof n=="string"?k(a.definition,e,n):typeof n=="number"?n.toLocaleString("en-US"):Array.isArray(n)?n.map(i=>String(i)).join(", "):typeof n=="object"?h:String(n)}function ae(e,n,a,r,t){return typeof e!="number"?String(e):n==="money"?V(e,a?{...t,currency:a}:t):n==="percent"?m(e,n,r):e.toLocaleString("en-US",{maximumFractionDigits:2})}var c=(e,n)=>n?{...e,problem:n}:e;function se(e,n,a){switch(e.t){case"title":{let r=b(e.parts,n);return c({t:"title",text:r.text},r.problem)}case"text":{let r=b(e.parts,n),t=$(e.tone,n);return c({t:"text",text:r.text,...t?{tone:t}:{}},r.problem)}case"badge":{let r=b(e.parts,n);return c({t:"badge",text:r.text,tone:$(e.tone,n)??"neutral"},r.problem)}case"field":{let r=e.label??F(n.definition,e.field);if(!n.node)return{t:"field",field:e.field,label:r,text:h,problem:`"${e.field}" names a field, and these blocks are about no one record`};let t=n.kinds.get(n.node.kind)?.computed?.has(e.field),o,i;if(t){let d=g({t:"ident",name:e.field,at:0},n);d.ok?o=d.value!==null&&typeof d.value=="object"?m(d.value,void 0,n.today):d.value:i=d.problem}else o=Object.hasOwn(n.node,e.field)?n.node[e.field]:void 0;let l=n.fields[e.field]?.type==="url"&&e.as===void 0?te(o):void 0,s=S(()=>oe(e.field,o,n,e.as,e.currency))??h;return c({t:"field",field:e.field,label:r,text:s,...l?{href:l}:{}},i)}case"progress":{let r=g(e.value,n),t=g(e.max,n),o=e.label?b(e.label,n):{text:"Progress"},i=o.text,l=r.ok?t.ok?o.problem:t.problem:r.problem;return r.ok&&t.ok&&typeof r.value=="number"&&typeof t.value=="number"&&Number.isFinite(r.value)&&Number.isFinite(t.value)&&t.value>0?c({t:"progress",label:i,value:r.value,max:t.value,text:`${m(r.value,void 0,n.today)} of ${m(t.value,void 0,n.today)}`},l):c({t:"progress",label:i,text:h},l)}case"group":return{t:"group",direction:e.direction,blocks:H(e.blocks,n)};case"when":{let r=g(e.when,n),t=r.ok&&r.value===!0;return c({t:"when",shown:t,blocks:t?H(e.show,n):[]},r.ok?void 0:r.problem)}case"divider":return{t:"divider"};case"figure":return{t:"figure"};case"headline":{let r=b(e.parts,n),t=Math.min(6,Math.max(1,(a?n.firstHeading:void 0)??n.heading??3));return c({t:"headline",level:t,text:r.text},r.problem)}case"number":{let r=g(e.value,n),t=!r.ok||r.value===null||typeof r.value=="object"?h:ae(r.value,e.as,e.currency,n.today,n.money),o=e.label?b(e.label,n):void 0;return c({t:"number",text:t,...o?{label:o.text}:{}},r.ok?o?.problem:r.problem)}case"list":return de(e,n)}}function H(e,n){let a=e.findIndex(r=>r.t==="headline");return e.map((r,t)=>({...se(r,n,t===a),key:r.key}))}var ie=new Set(["every","some","sum","min","max","sort"]);function je(e,n){let a=new Set,r=new Set,t=s=>{if(s)switch(s.t){case"ident":a.add(s.name);return;case"list":s.items.forEach(t);return;case"member":return t(s.object);case"unary":return t(s.operand);case"binary":return t(s.left),t(s.right);case"where":return t(s.set);case"call":s.args.forEach((d,y)=>{y===1&&ie.has(s.fn)||t(d)});return;default:return}},o=s=>{for(let d of s??[])t(d.expr)},i=(s,d)=>{s.forEach((y,f)=>{let u=d[f];if(u)switch(y.t){case"field":a.add(y.field);return;case"title":case"text":case"badge":case"headline":o(y.parts);return;case"number":t(y.value),o(y.label);return;case"progress":t(y.value),t(y.max);return;case"group":u.t==="group"&&i(y.blocks,u.blocks);return;case"when":u.t==="when"&&u.shown&&i(y.show,u.blocks);return;case"list":if(u.t==="list")for(let x of u.members)r.add(x.id);return;default:return}})};i(e,n);let l=n[0];return{fields:a,records:r,...e[0]?.t==="title"&&l?.t==="title"?{title:l.text}:{}}}function de(e,n){let a=Math.min(6,(n.heading??3)+1),r=g(e.source,n);if(!r.ok)return{t:"list",as:e.as,failed:!0,members:[],headingLevel:a,more:0,problem:r.problem};let t=r.value,o=t instanceof A?t.nodes:t!==null&&typeof t=="object"&&!Array.isArray(t)?[t]:[];e.choiceOrder&&n.schema&&(o=le(o,e.choiceOrder,n.schema));let i=o.length;o=o.slice(0,e.limit??E);let l=e.limit===void 0?i-o.length:0;return{t:"list",as:e.as,failed:!1,members:o,...e.group&&n.schema&&o.length>0?{groups:ue(o,e.group,n.schema)}:{},headingLevel:a,...o.length===0&&e.empty?{empty:e.empty}:{},more:l}}function J(e,n,a){let r=e.tryDefinition(n)?.fields?.shape,t=r&&Object.hasOwn(r,a)?T(r[a]):void 0;return t?.type==="enum"?t.options??[]:[]}var P=(e,n)=>Object.hasOwn(e,n)?e[n]:void 0;function le(e,n,a){let r=t=>{let o=J(a,t.kind,n).indexOf(String(P(t,n)));return o<0?Number.MAX_SAFE_INTEGER:o};return e.map((t,o)=>({node:t,i:o,rank:r(t)})).sort((t,o)=>t.rank-o.rank||t.i-o.i).map(t=>t.node)}function ue(e,n,a){let r=[];for(let i of e)for(let l of J(a,i.kind,n.by))r.includes(l)||r.push(l);let t=[];for(let i of r){let l=e.filter(d=>P(d,n.by)===i);if(l.length===0)continue;let s=a.tryDefinition(l[0].kind);t.push({value:i,heading:n.headings[i]??O(k(s,n.by,i)),members:l})}let o=e.filter(i=>!r.includes(String(P(i,n.by))));return o.length>0&&t.push({value:null,members:o}),t}function K(e){return e.t==="list"||e.t==="headline"||e.t==="number"?!0:e.t==="group"?e.blocks.some(K):e.t==="when"?e.show.some(K):!1}function z(e,n){let a=e.tryDefinition(n)?.fields?.shape??{},r={};for(let[t,o]of Object.entries(a)){let i=T(o);i&&(r[t]=i)}return r}var Y=new WeakMap;function v(e){let n=Y.get(e);return n||Y.set(e,n=U(e)),n}function ye(e,n,a,r={}){let t=v(e),o={},i={},l=s=>{if(s instanceof A)return s.nodes.map(d=>l(d));if(Array.isArray(s))return s.map(d=>l(d));if(s!==null&&typeof s=="object"){let d=s;return{id:d.id,kind:d.kind,label:G(e.tryDefinition(d.kind),d)}}return s};for(let[s,d]of t.get(a?a.kind:N)?.computed??[])try{o[s]=l(R(d,{graph:n,subject:a,kinds:t,...r.today?{today:r.today}:{},...r.budget?{budget:r.budget}:{}}))}catch(y){if(!(y instanceof C))throw y;i[s]=y.sentence}return{values:o,refused:i}}function ve(e,n,a){let{values:r}=ye(e,n,a);if(Object.keys(r).length===0)return a;let t=o=>Array.isArray(o)?o.map(t):o!==null&&typeof o=="object"?o.label:o;return{...a,...Object.fromEntries(Object.entries(r).map(([o,i])=>[o,t(i)]))}}var pe=500,fe=2e4,Z=new WeakMap;function ce(e,n){let a=Z.get(e);a||Z.set(e,a=new Map);let r=a.get(n);return r||a.set(n,r=z(e,n)),r}function Ne(e,n,a,r={}){if(n&&typeof e.seenBy!="function")throw new TypeError("blockContextFor: a seat is read from a store (its `seenBy`); a bare { graph, schema } is read as it is handed, with no principal");let t=n?e.seenBy(n):e,o=n&&a?t.graph.getNode(a.id)??null:a,i=t.schema,l=o&&i.tryDefinition(o.kind),s=!o||(r.slot??"page")==="page",{money:d,firstHeading:y}=r;return{node:o,graph:t.graph,schema:i,kinds:v(i),fields:o?ce(i,o.kind):{},definition:l||void 0,today:r.today??t.today?.()??new Date().toISOString().slice(0,10),money:d,heading:r.heading??(s?2:3),firstHeading:y,budget:r.budget??(s?fe:pe)}}export{W as a,H as b,je as c,K as d,ye as e,ve as f,Ne as g};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as it}from"./chunk.UM5IPM22.js";import{f as st}from"./chunk.6XBLDV4A.js";import{a as M,e as q,n as at}from"./chunk.WOTNMTIY.js";import{$ as nt,C as Y,D as G,Db as ot,I as T,L as V,Ma as rt,O as Q,R as X,T as k,_ as tt,na as et}from"./chunk.ZQ4HFIIS.js";import"./chunk.AJZBJBMO.js";function _(t){let e=[],n=!0;for(let r of t){if(r.text.length===0)continue;let a=r.as==="close"||r.text===","||r.text===":"||r.text.startsWith("'")||n;e.push({part:r,space:!a}),n=r.as==="open"}return e}function D(t,e){return _(t).map(({part:n,space:r})=>`${r?" ":""}${e?n.said??n.text:n.text}`).join("")}function ht(t){return D(t,!1)}function xt(t){return D(t,!0)}function lt(t,e=!1){let n=e?t.said:t.text;return t.record!==void 0?`${t.record} \u2014 ${n}`:n}function J(t){let e=u=>_(u).map(({part:o,space:s})=>({...o,space:s})),n=e(t.parts),r=t.when&&t.when.length>0?e(t.when):void 0,a=u=>`${D(n,u)}${r?`, when ${D(r,u)}`:""}`;return{...t,parts:n,...r?{when:r}:{},text:a(!1),said:a(!0)}}function bt(t,e=!1){return t.line?lt(t.line,e):t.message}var ut=60,L=t=>({text:t,as:"name"}),d=(t,e)=>e===void 0?{text:t,as:"word"}:{text:t,as:"word",said:e},P=(t,e)=>e===void 0||e===t?{text:t,as:"value"}:{text:t,as:"value",said:e},b=(t,e)=>({text:t,as:"op",said:e}),R={text:"(",as:"open"},w={text:")",as:"close"},N={text:"\u2014",as:"value",said:"empty"},K={">=":["\u2265","at least"],"<=":["\u2264","at most"],"<":["<","less than"],">":[">","more than"],"==":["=","is"],"!=":["\u2260","is not"]},z={">=":"<","<=":">","<":">=",">":"<=","==":"!=","!=":"=="},Rt={"+":["+","plus"],"-":["\u2212","minus"],"*":["\xD7","times"],"/":["\xF7","divided by"],"%":["mod","modulo"]},ct=t=>t.t==="binary"&&t.op in K;function F(t){return t.length>1&&t[1]===t[1].toUpperCase()&&/[A-Z]/.test(t[1])?t:t.charAt(0).toLowerCase()+t.slice(1)}function dt(t){let{schema:e}=t,n=i=>i===null?void 0:e.tryDefinition(i),r=(i,c)=>{let y=n(i)?.edges;return y&&Object.hasOwn(y,c)?y[c]:void 0},a=(i,c)=>{let y=r(i,c)?.to;return Array.isArray(y)&&y.length===1?y[0]:null},u=(i,c)=>{let y=(e.edge(c)?.from??[]).filter(S=>{let $=r(S,c)?.to;return i===null||$==="*"||Array.isArray($)&&$.includes(i)});return y.length===1?y[0]:null},o=(i,c)=>r(i,c)?V(c).toLowerCase():F(X(n(i),c)),s=i=>F(Q(e,i)),p=i=>F(st(e).get(i)?.label??V(i)),x=i=>F(k(n(i),i)),l=(i,c)=>{let y=i===null?void 0:t.formatOf?.(i,c);if(y?.format)return y;let S=t.said?.get(c);return S?{...y,format:S}:y},m=i=>T(e.tryDefinition(i.kind),i),g=(i,c)=>{if(i==null)return N;if(i instanceof M){if(i.nodes.length===0)return N;let v=i.nodes.slice(0,3).map(m),H=i.nodes.length-v.length;return P(H>0?`${v.join(", ")} and ${H} more`:v.length>1?`${v.slice(0,-1).join(", ")} and ${v[v.length-1]}`:v[0])}if(Array.isArray(i))return P(`{${i.map(v=>g(v,c).text).join(", ")}}`,i.map(v=>g(v,c).text).join(" or "));if(typeof i=="object")return P(m(i));if(typeof i=="boolean")return P(i?"yes":"no");let y=c?.format??(c?l(c.kind,c.key):void 0);if(typeof i=="number"){if(y?.format==="money")return P(at(i,{...t.money,...y.unit&&/^[A-Z]{3}$/.test(y.unit)?{currency:y.unit}:{}}));if(y?.format==="percent")return P(`${Math.round(i*100)}%`);let v=i.toLocaleString("en-US",{maximumFractionDigits:2});return P(y?.unit&&!/^[A-Z]{3}$/.test(y.unit)?`${v} ${y.unit}`:v)}if(Y.test(i)||y?.format==="date")return P(G(i.slice(0,10)));let S=c&&c.kind!==null?n(c.kind)?.display?.format?.[c.key]:void 0;if(S)return P(S(i));let $=i.length>ut?`${i.slice(0,ut-1).trimEnd()}\u2026`:i;return P(/^[a-z][a-z0-9]*([-_][a-z0-9]+)*$/.test($)?$.replace(/[-_]+/g," "):$)};return{definition:n,relation:r,farOf:a,nearOf:u,fieldName:o,plural:s,noun:x,factName:p,formatOf:l,valueWords:g}}function E(t,e,n){if(t.t==="ident")return{kind:e,key:t.name};if(t.t==="member")return{kind:O(t.object,e,n),key:t.name};if(t.t==="call"&&(t.fn==="sum"||t.fn==="min"||t.fn==="max")&&t.args.length===2){let r=O(t.args[0],e,n),a=t.args[1];if(a.t==="ident")return{kind:r,key:a.name};if(a.t==="lit"&&typeof a.value=="string")return{kind:r,key:a.value}}if(t.t==="binary"&&(t.op==="+"||t.op==="-"))return E(t.left,e,n)??E(t.right,e,n);if(t.t==="call"&&t.fn==="if"&&t.args.length===3)return E(t.args[1],e,n)??E(t.args[2],e,n)}function O(t,e,n){switch(t.t){case"ident":return n.relation(e,t.name)?n.farOf(e,t.name):null;case"member":return n.farOf(O(t.object,e,n),t.name);case"where":return O(t.set,e,n);case"binary":return t.op==="|"||t.op==="&"||t.op==="-"?O(t.left,e,n):null;case"call":{let r=a=>{let u=t.args[a];return u?.t==="lit"&&typeof u.value=="string"?u.value:void 0};return t.fn==="all"?r(0)??null:t.fn==="out"?t.args.length===2?n.farOf(O(t.args[0],e,n),r(1)??""):n.farOf(e,r(0)??""):t.fn==="in"?t.args.length===2?n.nearOf(O(t.args[0],e,n),r(1)??""):n.nearOf(e,r(0)??""):(t.fn==="first"||t.fn==="sort")&&t.args[0]?O(t.args[0],e,n):null}default:return null}}function A(t){return t.t==="binary"?t.op==="||"?B(t)?4:1:t.op==="&&"?2:t.op in K||t.op==="in"?4:t.op==="+"||t.op==="-"?5:t.op==="*"||t.op==="/"||t.op==="%"?6:4.5:t.t==="unary"&&t.op==="!"?3:t.t==="where"?3.5:9}var W=t=>t.t==="lit",h=(t,e)=>t.t==="call"&&t.fn===e;function C(t,e){return t.t==="binary"&&t.op===e?[...C(t.left,e),...C(t.right,e)]:[t]}function B(t){if(t.t!=="binary"||t.op!=="||")return;let e=[];e.push(...C(t,"||"));let n,r=[];for(let a of e){if(a.t!=="binary"||a.op!=="=="||!W(a.right)||typeof a.right.value!="string"||n&&JSON.stringify(ft(n))!==JSON.stringify(ft(a.left)))return;n=a.left,r.push(a.right)}return n?{subject:n,values:r}:void 0}var ft=t=>JSON.parse(JSON.stringify(t,(e,n)=>e==="at"?void 0:n));function f(t,e,n,r){let a=(u,o,s=e)=>A(u)<o?[R,...f(u,s,n),w]:f(u,s,n);switch(t.t){case"lit":return[n.valueWords(t.value,r)];case"list":return[n.valueWords(t.items.map(u=>u.t==="lit"?u.value:null),r)];case"ident":return[L(n.fieldName(e,t.name))];case"member":{let u=h(t.object,"first")&&t.object.args[0]&&h(t.object.args[0],"all"),o=O(t.object,e,n);if(u&&o)return e!==null&&n.fieldName(e,t.name)===n.fieldName(o,t.name)&&n.definition(e)?.fields?.shape&&Object.prototype.hasOwnProperty.call(n.definition(e).fields.shape,t.name)?[L(`${n.noun(o)}'s ${n.fieldName(o,t.name)}`)]:[L(n.fieldName(o,t.name))];let s=f(t.object,e,n),p=s[s.length-1];return s.length===1&&p?.as==="name"?[L(`${p.text}'s ${n.fieldName(o,t.name)}`)]:[...s,d("'s"),L(n.fieldName(o,t.name))]}case"unary":return t.op==="-"?[b("\u2212","minus"),...a(t.operand,7)]:I(t.operand,e,n);case"where":{let u=O(t.set,e,n),o=f(t.filter,u,n),s=o.every(p=>p.as==="name"||p.as==="word"&&p.text==="not");return[...a(t.set,4),...s?[]:[d("with")],...A(t.filter)<=2?[R,...o,w]:o]}case"binary":return pt(t,e,n);case"call":return wt(t,e,n)}}function I(t,e,n){return ct(t)?pt({...t,op:z[t.op]},e,n):h(t,"present")||h(t,"exists")?[...f(t.args[0],e,n),b("=","is"),N]:t.t==="ident"?[d("not"),L(n.fieldName(e,t.name))]:[d("not"),R,...f(t,e,n),w]}function pt(t,e,n){let r=(o,s)=>A(o)<s?[R,...f(o,e,n),w]:f(o,e,n);if(t.op==="&&"||t.op==="||"){let o=B(t);if(o){let p=E(o.subject,e,n);return[...f(o.subject,e,n),b("\u2208","is one of"),n.valueWords(o.values.map(x=>x.value),p)]}let s=t.op==="&&"?2:1;return[...r(t.left,s),d(t.op==="&&"?"and":"or"),...r(t.right,s+.5)]}if(t.op in K){if(W(t.right)&&typeof t.right.value=="boolean"&&(t.op==="=="||t.op==="!="))return t.op==="=="===t.right.value?f(t.left,e,n):I(t.left,e,n);let[o,s]=K[t.op],p=E(t.left,e,n),x=E(t.right,e,n);return[...j(t.left,e,n,x),b(o,s),...j(t.right,e,n,p)]}if(t.op==="in")return[...r(t.left,5),b("\u2208","is one of"),...j(t.right,e,n,E(t.left,e,n))];let a=Rt[t.op];if(a){let o=A(t);return[...r(t.left,o),b(a[0],a[1]),...r(t.right,o+.5)]}let u={"|":"or","&":"and also","-":"except"};return[...r(t.left,5),d(u[t.op]??t.op),...r(t.right,5)]}function j(t,e,n,r){return t.t==="lit"||t.t==="list"?f(t,e,n,r):A(t)<5?[R,...f(t,e,n),w]:f(t,e,n)}function wt(t,e,n){let r=o=>t.args[o],a=o=>{let s=t.args[o];return s?.t==="lit"&&typeof s.value=="string"?s.value:void 0},u=o=>{let s=r(o);return A(s)<9&&s.t!=="where"?[R,...f(s,e,n),w]:f(s,e,n)};switch(t.fn){case"out":{let o=a(t.args.length-1)??"",s=L(V(o).toLowerCase());return t.args.length===2?[s,d("of"),...u(0)]:[s]}case"in":{let o=a(t.args.length-1)??"",s=t.args.length===2?n.nearOf(O(r(0),e,n),o):n.nearOf(e,o),p=L(s?n.plural(s):V(o).toLowerCase());return t.args.length===2?[p,d("of"),...u(0)]:[p]}case"all":{let o=a(0);return[L(o?n.plural(o):"everything")]}case"fact":{let o=a(0);return[L(o?n.factName(o):"fact")]}case"count":return[d("number of"),...u(0)];case"exists":return[...u(0),b("\u2260","is not"),N];case"present":return[...f(r(0),e,n),b("\u2260","is not"),N];case"some":case"every":{let o=O(r(0),e,n),s=r(1);return[...t.fn==="some"?[d("some")]:[],...u(0),d(t.fn==="some"?"with":"all with"),...A(s)<=2?[R,...f(s,o,n),w]:f(s,o,n)]}case"sum":case"min":case"max":{let o=O(r(0),e,n),s=r(1),p=s.t==="lit"&&typeof s.value=="string"?[L(n.fieldName(o,s.value))]:A(s)<9?[R,...f(s,o,n),w]:f(s,o,n);return[d(t.fn==="sum"?"total":t.fn==="min"?"least":"most"),...p,d("of"),...u(0)]}case"first":{let o=r(0);if(h(o,"all")){let s=o.args[0]?.value;if(typeof s=="string")return[L(`the ${n.noun(s)}`)]}return[d("first of"),...u(0)]}case"sort":return[...u(0),d("by"),...f(r(1),O(r(0),e,n),n)];case"len":return[d("length of"),...f(r(0),e,n)];case"lower":return f(r(0),e,n);case"contains":case"startsWith":return[...f(r(0),e,n),d(t.fn==="contains"?"contains":"starts with"),...j(r(1),e,n,E(r(0),e,n))];case"today":return[P("today")];case"now":return[P("now")];case"date":return W(r(0))&&typeof r(0).value=="string"?[P(G(String(r(0).value)))]:f(r(0),e,n);case"days":case"hours":{let o=t.fn,[s,p]=[r(0),r(1)];return h(p,"today")||h(p,"now")?[d(`${o} since`),...f(s,e,n)]:h(s,"today")||h(s,"now")?[d(`${o} until`),...f(p,e,n)]:[d(`${o} from`),...f(s,e,n),d("to"),...f(p,e,n)]}case"if":return[R,...f(r(1),e,n),d("if"),...f(r(0),e,n),d(","),d("else"),...f(r(2),e,n),w];case"either":return t.args.flatMap((o,s)=>s===0?f(o,e,n):[d(","),d("else"),...f(o,e,n)]);default:return[d(t.fn),R,...t.args.flatMap((o,s)=>s===0?f(o,e,n):[d(","),...f(o,e,n)]),w]}}function U(t,e){let n=dt(e),r=t.over==="graph"?null:t.over;return J({...r===null?{}:{kind:r},parts:f(t.require,r,n),...t.when?{when:f(t.when,r,n)}:{}})}function Z(t,e,n){let r=dt(e),a=t.over==="graph"?null:t.over,u=n.subject,o=l=>{try{return q(l,{...n,budget:2e3})}catch{return}},s=(l,m)=>{let g=j(l,a,r,m);if(l.t==="lit"||l.t==="list"||h(l,"today")||h(l,"now")||h(l,"date"))return g;let i=o(l);if(i===void 0)return g;let c=E(l,a,r),y=r.valueWords(i,c?{...c,format:r.formatOf(c.kind,c.key)??(m?r.formatOf(m.kind,m.key):void 0)}:m);return i instanceof M?[...g,d(":"),y]:[...g,y]},p=l=>{if(l.t==="binary"&&l.op==="&&"){let m=[];m.push(...C(l,"&&"));let g=m.filter(i=>o(i)!==!0);return(g.length>0?g:m).flatMap((i,c)=>[...c>0?[d("and")]:[],...A(i)<=2?[R,...p(i),w]:p(i)])}if(l.t==="binary"&&l.op==="||"){let m=B(l);if(m){let i=E(m.subject,a,r);return[...s(m.subject),b("\u2209","is not one of"),r.valueWords(m.values.map(c=>c.value),i)]}let g=[];return g.push(...C(l,"||")),g.flatMap((i,c)=>[...c>0?[d("and")]:[],...A(i)<=2?[R,...p(i),w]:p(i)])}if(l.t==="binary"&&l.op in K){if(W(l.right)&&typeof l.right.value=="boolean"&&(l.op==="=="||l.op==="!="))return l.op==="=="===l.right.value?I(l.left,a,r):f(l.left,a,r);let m=z[l.op],[g,i]=K[m],c=E(l.left,a,r),y=E(l.right,a,r);if(W(l.right)&&l.right.value===null)return[...m==="=="?j(l.left,a,r,y):s(l.left,y),b(g,i),N];let S=m==="=="&&(W(l.right)||W(l.left));return[...S?j(l.left,a,r,y):s(l.left,y),b(g,i),...S?j(l.right,a,r,c):s(l.right,c)]}if(l.t==="binary"&&l.op==="in")return[...s(l.left),b("\u2209","is not one of"),...j(l.right,a,r,E(l.left,a,r))];if(l.t==="unary"&&l.op==="!"){let m=l.operand;return ct(m)?p({...m,op:z[m.op]}):h(m,"present")||h(m,"exists")?[...s(m.args[0]),b("\u2260","is not"),N]:m.t==="ident"?f(m,a,r):[d("not"),R,...I(m,a,r),w]}if(h(l,"present")||h(l,"exists"))return[...f(l.args[0],a,r),b("=","is"),N];if(h(l,"some"))return[...f(l,a,r).slice(1),b("=","is"),N];if(h(l,"every")&&l.args.length===2){let m=o(l.args[0]);if(m instanceof M){let g=m.nodes.filter(i=>{try{return q(l.args[1],{...n,subject:i,budget:2e3})!==!0}catch{return!0}});return[...f(l,a,r),d(","),d("not"),r.valueWords(new M(g))]}}return l.t==="ident"?[d("not"),L(r.fieldName(a,l.name))]:[d("not"),R,...f(l,a,r),w]},x;try{x=p(t.require)}catch{x=[d("not"),R,...f(t.require,a,r),w]}return J({...a===null?{}:{kind:a},parts:x,...u?{record:T(e.schema.tryDefinition(u.kind),u)}:{}})}function mt(t){let e=new Map;for(let n of t??[])n.expr?.t==="ident"&&n.format&&(n.format==="money"||n.format==="percent"||n.format==="date")&&e.set(n.expr.name,n.format);return e}function vt(t){return(e,n)=>{let r=t[e]?.fields?.[n],a=r?.format??(r?.type==="date"?"date":void 0);return a||r?.unit?{...a?{format:a}:{},...r?.unit?{unit:r.unit}:{}}:void 0}}function gt(t,e){return{schema:e,said:mt(t.says),...t.declared?{formatOf:vt(t.declared)}:{},...t.money?{money:t.money}:{}}}function qt(t,e){return t.shape?U(t.shape,gt(t.shape,e)):void 0}var yt=new WeakMap;function Ot(t,e){let n=new Map(t.allInvariants().map(r=>[r.name,r]));return e.map(r=>{let a=Lt(r),u=n.get(a.invariant)?.shape;if(!u||a.status&&a.status!=="violated")return a;let o=a.subjectId?t.graph.getNode(a.subjectId):void 0;if(u.over!=="graph"&&!o)return a;let s=u.kinds;s||(s=yt.get(t.schema),s||yt.set(t.schema,s=it(t.schema)));try{let p=u.today?.()??t.today?.()??new Date().toISOString().slice(0,10),x=Z(u,gt(u,t.schema),{graph:t.graph,subject:o??null,kinds:s,today:p});return{...a,line:x,...u.says?{}:{message:`${a.message} \u2014 ${x.text}`}}}catch{return a}})}function Et(){et((t,e,n)=>Ot({graph:t,schema:t.schema,allInvariants:()=>e},n)),rt(Pt)}function Pt(t,e,n,r){let a=e.graph,u=nt.from(t.schema,a.snapshot(),{validate:!1});for(let x of n?[...r].reverse().map(tt):r)try{u.applyPrimitives([x],{restoring:!0})}catch{}let o=x=>t.violations(void 0,x),s=o(n?u:a),p=o(n?a:u);return{...ot(t.allInvariants(),s,p),violationsAfter:p}}function Lt(t){if(!t.line)return t;let{line:e,...n}=t,r=` \u2014 ${e.text}`;return n.message.endsWith(r)?{...n,message:n.message.slice(0,-r.length)}:n}Et();export{Z as brokenLineOf,Et as judgeWithLines,Pt as judgedForASeat,bt as problemWords,qt as ruleLine,U as ruleLineOf,lt as ruleLineWords,_ as ruleSpacing,xt as ruleSpoken,ht as ruleText,Lt as unlined,Ot as withLines};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as g,ya as w}from"./chunk.2VX6H2LL.js";import{Jb as L}from"./chunk.ZQ4HFIIS.js";import{a as C,b as V}from"./chunk.MRK6QJV5.js";import{b as u}from"./chunk.AJZBJBMO.js";var E="[data-graview-foot]",N="graview:foot-moved";var D=()=>({width:document.documentElement.clientWidth||innerWidth,height:innerHeight});function z(t,e){let o=D(),r=e?.getBoundingClientRect()??{left:0,top:0,right:o.width,bottom:o.height},i=Math.max(0,r.left),c=Math.min(o.width,r.right),s=Math.max(0,r.top),l=Math.min(o.height,r.bottom),m=Math.max(0,c-i),x=m<640;t.style.translate="none",t.style.top="auto",t.style.right="auto",t.style.maxWidth=`${Math.max(0,Math.min(560,m-2*16))}px`;let p=t.getBoundingClientRect();if(p.width===0&&p.height===0&&t.style.left!=="")return;let y=p.width,A=p.height;t.style.visibility=e&&l-s<A+16?"hidden":"";let h=x?i+(m-y)/2:i+16,f=o.height-l+16,v=[...document.querySelectorAll(E)].filter(n=>n!==t&&!t.contains(n)&&!n.contains(t)).map(n=>n.getBoundingClientRect()).filter(n=>n.width>0&&n.height>0&&n.right>i&&n.left<c&&n.bottom>s&&n.top<l),P=n=>n.bottom-n.top>(l-s)*.4;if(!x)for(let n of v)P(n)&&n.left<=h+1&&n.right+16>h&&n.right+16+y<=c&&(h=n.right+16);let R=v.filter(n=>!P(n));for(let n=!0,b=0;n&&b<R.length+1;b++){n=!1;for(let d of R){let M=o.height-f;d.right>h&&d.left<h+y&&d.bottom>M-A&&d.top<M&&(f=o.height-d.top+16/2,n=!0)}}t.style.left=`${Math.round(h)}px`,t.style.bottom=`calc(${Math.round(f)}px + env(safe-area-inset-bottom, 0px))`}function U(t,e){let o=D(),r=e?.getBoundingClientRect()??{left:0,top:0,right:o.width,bottom:o.height},i=Math.max(0,r.left),c=Math.min(o.width,r.right),s=Math.max(0,c-i);t.style.translate="none",t.style.bottom="auto",t.style.right="auto",t.style.maxWidth=`${Math.max(0,Math.min(560,s-2*16))}px`;let l=t.getBoundingClientRect().width;t.style.left=`${Math.round(i+(s-l)/2)}px`,t.style.top=`${Math.round(Math.max(16/2,r.top+16/2))}px`}var O=t=>`graview:lenses:${t}`,q=(t,e)=>t?.name??e.kinds.join(",");function k(t){try{let e=JSON.parse(localStorage.getItem(O(t))??"[]");return Array.isArray(e)?e.filter(o=>typeof o?.title=="string"&&typeof o.lens=="string"):[]}catch{return[]}}var S=u(C(),1);var a=u(V(),1),G=w(g(()=>import("./chunk.7Q7S7YCA.js")));function B({lens:t,view:e}){let o=G.current.declaredLensView(t);return(0,a.jsx)(o,{...e})}var K=G.part((t,e)=>(0,a.jsx)(B,{...e}),{what:"This picture"});function $(t){return o=>(0,a.jsx)(S.Suspense,{fallback:null,children:(0,a.jsx)(K,{lens:t,view:o})})}var T=w(g(()=>import("./chunk.UEBBASQW.js")));function W({blocks:t,view:e}){let o=T.current.homeView(t);return(0,a.jsx)(o,{...e})}var _=T.part((t,e)=>(0,a.jsx)(W,{...e}),{what:"The home"});function F(t){let e=o=>(0,a.jsx)(S.Suspense,{fallback:null,children:(0,a.jsx)(_,{blocks:t,view:o})});return Object.defineProperty(e,Symbol.for("graview.home-blocks"),{value:!0}),e}function tt(t,e){return e.home&&e.home.length>0&&t.home?.(F(e.home)),H(t,e),t.arrange?.(e.pages),t}function H(t,e,o){for(let r of L(e).drawn){if(o&&t.places().some(s=>s.title===r.title))continue;let i=$(r),c={title:r.title,...r.across?{across:r.across}:{},...o?{beside:o}:{}};for(let s of r.kinds)t.register(s,{cardinality:"many",fidelity:"full"},i,c),t.register(s,{cardinality:"many",fidelity:"summary"},i,c)}}function I(t,e,o){o.length>0&&H(t,{schema:e,lenses:o.map(({lens:r,...i})=>({...i,name:r}))},!0)}function et(t,e,o){I(t,e,k(o))}export{N as a,z as b,U as c,O as d,q as e,k as f,tt as g,I as h,et as i};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{B as q,ca as G,i as j}from"./chunk.2VX6H2LL.js";import{H as P,I as H,L,Q as R,T as K,aa as T}from"./chunk.ZQ4HFIIS.js";import{a as V,b as M}from"./chunk.MRK6QJV5.js";import{b as E}from"./chunk.AJZBJBMO.js";var a=E(V(),1),s=E(M(),1);function ne({affordance:r,onApply:o,onCancel:u}){let{store:l}=G(),[y,m]=(0,a.useState)({}),[f,x]=(0,a.useState)(""),[A,$]=(0,a.useState)(_),W=(0,a.useId)(),O=(0,a.useRef)(null),b=r.open.filter(e=>!(e.name in y)),i=b[0];if((0,a.useEffect)(()=>x(""),[i?.name]),(0,a.useEffect)(()=>{O.current?.scrollIntoView?.({block:"nearest",inline:"nearest"})},[i?.name]),(0,a.useLayoutEffect)(()=>{let e=O.current,t=typeof document>"u"?null:document.activeElement;if(!e||t&&t!==document.body&&!e.contains(t))return;let p=e.querySelector("form input, [role=group] button:not([disabled])");p&&p!==t&&p.focus()},[i?.name]),!i)return null;let h=e=>{let t={...y,[i.name]:e};if(r.open.filter(c=>!(c.name in t)).length===0){let c=o(Object.fromEntries(Object.entries(t).filter(([,C])=>C!==void 0)));c&&c.length>0&&m(Object.fromEntries(Object.entries(t).filter(([C])=>!c.includes(C))))}else m(t)},F=i.optional?(0,s.jsx)("button",{type:"button",onClick:()=>h(void 0),style:{fontSize:"0.8125rem"},children:"Skip"}):null,n=i.shape??{type:"unknown"},d=Y(i,n),g=T(l.schema,l.allMutations().find(e=>e.name===r.mutation),i.name),[N,B]=(0,a.useState)(""),I=(0,a.useMemo)(()=>{let e=d.map(t=>l.graph.getNode(t)).filter(t=>t!==void 0);return P(e,t=>l.schema.tryDefinition(t))},[d,l]),z=e=>{let t=Q(l,n,e),p=n.type==="choice"||n.type==="several"&&n.of.type==="choice"?g.option(e):t,c=I.get(e);return c?`${p} \xB7 ${c}`:p},w=(0,a.useMemo)(()=>{let e=N.trim().toLowerCase();return e===""?d:d.filter(t=>z(t).toLowerCase().includes(e))},[d,N,l,n,I]),v=n.type==="several",D=v&&d.length===0,k=i.kinds&&i.kinds.length>0&&!i.kinds.includes("*")?i.kinds.map(e=>L(K(l.schema.tryDefinition(e),e))).join(" or "):g.label,U=r.open.length>1?`${k} \xB7 ${r.open.length-b.length+1} of ${r.open.length}`:k;return(0,s.jsxs)("div",{ref:O,"data-graview-asking":r.id,style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:4,padding:"5px 0 2px"},children:[r.open.length>1||d.length>0?(0,s.jsx)("span",{id:W,style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:U}):null,d.length>S?(0,s.jsx)("input",{type:"search",value:N,onChange:e=>B(e.target.value),placeholder:`Filter ${d.length}\u2026`,"aria-label":`Filter ${k}`,"data-testid":"ask-filter",style:{font:"inherit",fontSize:"0.8125rem",minWidth:0,padding:"3px 7px"}}):null,d.length>0?(0,s.jsxs)("div",{role:"group","aria-labelledby":W,style:{display:"flex",flexWrap:"wrap",gap:4},children:[w.slice(0,S).map(e=>{let t=A.includes(e);return(0,s.jsx)("button",{type:"button","aria-label":`${k}: ${z(e)}`,...v?{"aria-pressed":t}:{},style:{padding:"3px 9px",fontSize:"0.8125rem",...t?{borderColor:"var(--graview-accent)",color:"var(--graview-accent)"}:{}},onClick:()=>v?$(p=>p.includes(e)?p.filter(c=>c!==e):[...p,e]):h(n.type==="boolean"?e==="yes":e),children:z(e)},e)}),w.length>S?(0,s.jsxs)("span",{"data-testid":"ask-more",style:{alignSelf:"center",fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:[w.length-S," more \u2014 type to narrow"]}):null,w.length===0?(0,s.jsxs)("span",{"data-testid":"ask-none",style:{alignSelf:"center",fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:["None of the ",d.length," match that."]}):null,v?(0,s.jsx)("button",{type:"button",disabled:A.length===0,style:{fontSize:"0.8125rem"},onClick:()=>{let e=A;$(_),h(e)},children:b.length>1?"Next":"Apply"}):null,F]}):(0,s.jsxs)("form",{style:{display:"flex",flexWrap:"wrap",gap:4},onSubmit:e=>{if(e.preventDefault(),D){h(f.split(/[,\n]/).map(t=>t.trim()).filter(Boolean));return}f.trim().length!==0&&h(n.type==="number"?Number(f):f)},children:[n.type==="text"&&n.long?(0,s.jsx)("textarea",{autoFocus:!0,name:i.name,"aria-label":g.label,placeholder:g.label,value:f,rows:4,onChange:e=>x(e.target.value),onKeyDown:e=>{e.key==="Escape"?u():e.key==="Enter"&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),e.currentTarget.form?.requestSubmit())},style:{flex:"1 1 100%",minWidth:0,font:"inherit",fontSize:"0.875rem",lineHeight:1.45,padding:"5px 8px",borderRadius:7,border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",color:"var(--graview-ink)",resize:"vertical",fieldSizing:"content",minHeight:"5.5em",maxHeight:"40vh"}}):(0,s.jsx)("input",{autoFocus:!0,type:n.type==="date"?n.time?"datetime-local":"date":n.type==="number"?"number":"text",name:i.name,"aria-label":g.label,placeholder:D?`${g.label}, separated by commas`:g.label,value:f,...n.type==="number"&&n.min!==void 0?{min:n.min}:{},...n.type==="number"&&n.max!==void 0?{max:n.max}:{},...n.type==="number"&&n.step!==void 0?{step:n.step}:{},onChange:e=>x(e.target.value),onKeyDown:e=>{e.key==="Escape"&&u()},style:{flex:1,minWidth:0,font:"inherit",fontSize:"0.875rem",padding:"5px 8px",borderRadius:7,border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",color:"var(--graview-ink)"}}),(0,s.jsx)("button",{type:"submit",disabled:!D&&f.trim().length===0,style:{fontSize:"0.8125rem"},children:b.length>1?"Next":"Apply"}),F]})]})}var _=[],S=10;function Y(r,o){return r.candidates&&r.candidates.length>0?r.candidates:o.type==="choice"?o.options:o.type==="several"&&o.of.type==="choice"?o.of.options:o.type==="boolean"?J:[]}var J=["yes","no"];function Q(r,o,u){return o.type==="boolean"||o.type==="choice"||o.type==="several"&&o.of.type==="choice"?u:X(r,u)}function X(r,o){let u=j(o);if(u){let m=R(r.schema,r.graph.getNode(u.from)?.kind??"",u.kind,"out");return m.charAt(0).toUpperCase()+m.slice(1)}let l=q(o);if(l.length>0)return l.map(m=>r.schema.tryDefinition(m)?.plural??`${m}s`).join(" + ");let y=r.graph.getNode(o);return y?H(r.schema.tryDefinition(y.kind),y):o}export{ne as a,X as b};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{a as k}from"./chunk.G4JJXA63.js";import{a as Q}from"./chunk.42U4UBDE.js";import"./chunk.Q5WEOX3Q.js";import"./chunk.WEGBBWWK.js";import"./chunk.6MCK7K3M.js";import{e as P}from"./chunk.54NSG7BX.js";import"./chunk.6KJSFIO7.js";import"./chunk.UM5IPM22.js";import{c as G}from"./chunk.6XBLDV4A.js";import"./chunk.WOTNMTIY.js";import{Gb as C,Hb as J,Ib as K,Jb as X,Tb as Y,ra as z,sa as H}from"./chunk.ZQ4HFIIS.js";import"./chunk.AJZBJBMO.js";var L=e=>"failed"in e;function ue(e,n){let r=e.schema.kinds,t=e.policy?.sees;if(!t?.length||H(n))return{kinds:r};let s=z(n).roles??[],i=new Set(t.filter(o=>o.roles==="*"||s.some(a=>o.roles.includes(a))).flatMap(o=>o.kinds));return{kinds:r.filter(o=>i.has(o))}}function O(e,n){if(!n)return e;let r=new Set(n.kinds.filter(i=>e.tryDefinition(i)!==void 0));if(r.size===e.kinds.length)return e;let t=new Map,s=i=>{if(r.has(i)){if(!t.has(i)){let o=e.tryDefinition(i),a=Object.fromEntries(Object.entries(o?.edges??{}).flatMap(([l,d])=>{if(d.to==="*")return[[l,d]];let c=d.to.filter(u=>r.has(u));return c.length>0?[[l,{...d,to:c}]]:[]}));t.set(i,{...o,edges:a})}return t.get(i)}};return{...e,definitions:e.definitions.filter(i=>r.has(i.kind)),kinds:e.kinds.filter(i=>r.has(i)),tryDefinition:s,definition:i=>{let o=s(i);if(!o)throw new Error(`Unknown node kind "${i}"`);return o}}}var fe=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),y=e=>fe(e).replace(/[-_]+/g," ").trim();function j(e){let n=[];for(let t of e.kinds){let s=e.tryDefinition(t);if(!s)continue;let i=s.display?.labels??{},o=Object.entries(s.fields?.shape??{}).filter(([d])=>d!=="id"&&d!=="kind").map(([d,c])=>{let u=P(c);return{name:d,type:u?.type,...u?.options?{options:u.options}:{},words:(i[d]??y(d)).toLowerCase()}}),a=Object.entries(s.edges??{}).map(([d,c])=>({name:d,from:t,to:c.to==="*"?e.kinds.filter(u=>u!==t):c.to,words:y(d)})),l=(s.plural??`${y(t)}s`).toLowerCase();n.push({kind:t,plural:l,noun:(s.noun??y(t)).toLowerCase(),fields:o,roles:s.fieldRoles??{},edges:a})}let r=new Map(n.map(t=>[t.kind,t]));return{schema:e,kinds:n,info:t=>r.get(t)}}var $=(e,n)=>n===void 0?void 0:e.fields.find(r=>r.name===n),A=e=>e?.type==="date"||e?.type==="datetime",N=e=>e?.type==="number"||e?.type==="integer",re=e=>` ${e.toLowerCase().replace(/[“”"’‘]/g,"'").replace(/[^\p{L}\p{N}' -]+/gu," ").replace(/\s+/g," ").trim()} `,E=(e,n)=>e.includes(` ${n} `),v=e=>e.endsWith("ies")?`${e.slice(0,-3)}y`:e.endsWith("ses")?e.slice(0,-2):e.endsWith("s")?e.slice(0,-1):e;function pe(e,n){let r=[];for(let t of n.kinds){let s=new Set([t.plural,t.noun,`${t.noun}s`,y(t.kind),`${y(t.kind)}s`]),i=-1;for(let o of s){let a=e.indexOf(` ${o} `);a>=0&&(i<0||a<i)&&(i=a)}i>=0&&r.push({info:t,at:i})}return r.sort((t,s)=>t.at-s.at).map(t=>t.info)}function x(e,n,r){let t=n.trim().toLowerCase();if(t.length===0)return;let s=e.fields.filter(i=>!r||r(i));return s.find(i=>i.words===t||y(i.name)===t||i.name.toLowerCase()===t)??s.find(i=>i.words===v(t)||y(i.name)===v(t))??s.find(i=>t.split(" ").some(o=>o.length>2&&(i.words.split(" ").includes(o)||i.words.split(" ").includes(v(o)))))}function se(e,n,r){let t=n.trim().toLowerCase();if(t.length!==0)return e.edges.find(s=>s.words===t||s.name.toLowerCase()===t)??e.edges.find(s=>s.to.some(i=>{let o=r.info(i);return o!==void 0&&(o.noun===v(t)||o.plural===t||y(i)===v(t))}))??e.edges.find(s=>t.split(" ").some(i=>i.length>2&&s.words.split(" ").includes(i)))}function U(e){return/ (?:grouped |group |split |sorted |organi[sz]ed )?by ([\p{L}\p{N}' -]+?)(?= (?:and|with|for|in|on|only|where|from|this|that|as|sorted|grouped) |\s*$)/u.exec(e)?.[1]?.trim()}var ge=/\bwho\b.*\b(covers?|cover|tends?|owns?|handles?|does|works? on|looks? after|is on|is assigned|staffs?|runs?)\b|\bcoverage\b|\bmatrix\b|\bwho covers\b/,me=/\bcalendar\b|\bmonth\b|\bagenda\b|\bschedule\b|\bdue\b|\bdeadlines?\b|\bdates?\b|\bwhen\b/,ye=/\btimeline\b|\bover time\b|\bgantt\b|\bspans?\b|\bweek\b/,he=/\bboard\b|\bkanban\b|\bcolumns?\b|\bpipeline\b|\bstages?\b|\bstatus\b/,be=/\blaid out\b|\blayout\b|\bseating\b|\bwhere (?:they|it|each) (?:sits?|lies?|stands?)\b|\bfloor\b/,we=/\bplan\b|\bmap\b|\bregions?\b/,ke=/\blist\b|\btable\b|\bgroup(?:ed)? by\b|\bsort(?:ed)? by\b|\bonly\b|\bjust the\b/;function $e(e){let n=[];return/\blist\b|\btable\b/.test(e)&&n.push("blocks"),ge.test(e)&&n.push("coverage"),be.test(e)&&n.push("board"),(/\bfloor plan\b/.test(e)||we.test(e))&&n.push("plan"),ye.test(e)&&n.push("timeline"),me.test(e)&&n.push("calendar"),he.test(e)&&n.push("columns"),ke.test(e)&&!n.includes("blocks")&&n.push("blocks"),n.length===0&&U(e)&&n.push("columns"),n}var oe=e=>{let n=r=>r?` and not ${r}`:"";if(/\boverdue\b|\blate\b|\bpast due\b/.test(e))return{cond:(r,t)=>`days(today(), ${r}) < 0${n(t)}`,says:r=>`overdue by ${r.words}`};if(/\btoday\b/.test(e))return{range:"day",cond:r=>`days(today(), ${r}) == 0`,says:r=>`with ${r.words} today`};if(/\bthis week\b|\bnext 7 days\b|\bnext week\b/.test(e))return{range:"week",cond:r=>`days(today(), ${r}) >= 0 and days(today(), ${r}) <= 6`,says:r=>`with ${r.words} in the next week`};if(/\bthis month\b|\bnext 30 days\b|\bnext month\b/.test(e))return{range:"month",cond:r=>`days(today(), ${r}) >= 0 and days(today(), ${r}) <= 30`,says:r=>`with ${r.words} in the next month`};if(/\blast month\b|\bpast month\b/.test(e))return{range:"month",cond:r=>`days(today(), ${r}) >= -30 and days(today(), ${r}) <= 0`,says:r=>`with ${r.words} in the last month`};if(/\bthis year\b/.test(e))return{range:"year",cond:r=>`days(today(), ${r}) >= 0 and days(today(), ${r}) <= 365`,says:r=>`with ${r.words} in the next year`};if(/\bquarter\b/.test(e))return{range:"quarter",cond:r=>`days(today(), ${r}) >= 0 and days(today(), ${r}) <= 91`,says:r=>`with ${r.words} in the next quarter`}},_=e=>{if(/\bagenda\b|\bin order\b/.test(e))return"agenda";if(/\btoday\b|\bday\b/.test(e))return"day";if(/\bweek\b/.test(e))return"week";if(/\bquarter\b/.test(e))return"quarter";if(/\byears\b/.test(e))return"years";if(/\byear\b/.test(e))return"year";if(/\bmonth\b/.test(e))return"month"},Z=/^(user|person|people|member|staff|gardener|volunteer|owner|agent|employee|worker|team|player|customer|client|contact|party|attendee|guest)s?$/,I=class extends Error{},h=e=>{throw new I(e)};function Se(e,n){let r=e.fields.filter(i=>i.type==="enum");if(n){let i=x(e,n);if(i&&i.type==="enum")return i;i&&h(`${e.plural}' ${i.words} is not a choice, so it has no columns`)}let t=$(e,e.roles.status??e.roles.column);if(t?.type==="enum")return t;let s=r.find(i=>/^(status|stage|state|phase)$/.test(i.name));return s||(r[0]?r[0]:h(`${e.plural} have no choice field to put in columns`))}function ee(e,n){let r=e.fields.filter(A),t=l=>{let d=$(e,e.roles[l]);return A(d)?d:void 0},i=r.find(l=>E(n,l.words)||E(n,y(l.name)))??t("start")??r.find(l=>/^(due|date|on|at|start|starts|begins|from|sown|when)/i.test(l.name))??r[0];if(!i)return h(`no date field on ${e.plural}`);let o=t("end")??r.find(l=>l!==i&&/^(end|ends|until|to|finish|finished|harvested|due|closes|through)/i.test(l.name)),a=e.fields.find(l=>l.type==="boolean"&&/^(done|finished|complete|completed|closed)$/.test(l.name));return{start:i,...o&&o!==i?{end:o}:{},...a?{done:a}:{}}}function ie(e){let n=$(e,e.roles.start),r=$(e,e.roles.end),t=$(e,e.roles.column??e.roles.day??e.roles.columns);if(N(n)&&N(r)&&t?.type==="enum")return{start:n,end:r,column:t}}function De(e,n,r,t){let s=[];for(let o of e.kinds)for(let a of o.edges)for(let l of a.to){let d=e.info(l);if(!d||d.kind===o.kind)continue;let c=0;n.includes(o)&&(c+=4),n.includes(d)&&(c+=4),(Z.test(d.kind)||Z.test(d.noun))&&(c+=3),t&&(a.words.includes(t)||d.noun===v(t))&&(c+=5),a.words.split(" ").some(u=>u.length>2&&r.includes(` ${u}`))&&(c+=2),s.push({rows:o,across:d,link:a,score:c})}let i=s.sort((o,a)=>a.score-o.score)[0];return i||h(n[0]?`${n[0].plural} are joined to nothing else, so there is no who-covers-what to draw`:"nothing here is joined to anything else, so there is no who-covers-what to draw")}function ae(e,n,r,t,s){let i=U(t);switch(e){case"columns":{if(i){let o=x(n,i);if(!o||o.type!=="enum"){let a=se(n,i,r);if(a){let l=r.info(a.to[0]);return{lens:"coverage",kind:n.kind,across:l.kind,link:a.name}}}}return{lens:"columns",kind:n.kind,column:Se(n,i).name}}case"calendar":{let o=ee(n,t),a=_(t);return{lens:"calendar",kind:n.kind,start:o.start.name,...o.end?{end:o.end.name}:{},...o.done?{done:o.done.name}:{},...a?{range:a}:{}}}case"timeline":{let o=ie(n);if(o&&!/\bdates?\b|\bdue\b|\bdeadlines?\b|\bmonths?\b|\byears?\b/.test(t))return{lens:"timeline",kind:n.kind,start:o.start.name,end:o.end.name,column:o.column.name};let a=ee(n,t);return{lens:"calendar",kind:n.kind,start:a.start.name,...a.end?{end:a.end.name}:{},...a.done?{done:a.done.name}:{},range:_(t)??"quarter"}}case"coverage":{let o=De(r,s,t,i);return{lens:"coverage",kind:o.rows.kind,across:o.across.kind,link:o.link.name}}case"board":{let o=$(n,n.roles.x)??n.fields.find(c=>c.name==="x"),a=$(n,n.roles.y)??n.fields.find(c=>c.name==="y");if(!N(o)||!N(a))return h(`${n.plural} have no x and y to be laid out by`);let d=r.kinds.flatMap(c=>c.edges.filter(u=>u.to.includes(n.kind)&&c.kind!==n.kind))[0]??n.edges[0];return d?{lens:"board",kind:n.kind,x:o.name,y:a.name,fill:d.name,...d.from!==n.kind?{fillFrom:"occupant"}:{}}:h(`nothing is joined to ${n.plural} to fill them`)}case"plan":{let o=$(n,n.roles.outline)??n.fields.find(a=>a.name==="outline");return o?{lens:"plan",kind:n.kind,outline:o.name}:h(`${n.plural} have no outline to draw a plan from`)}case"blocks":{let o={lens:"blocks",kind:n.kind,as:/\bcards?\b/.test(t)?"card":"row"},a=/ group(?:ed)? by ([\p{L}\p{N} -]+?)(?= (?:and|only|sorted|with)|\s*$)/u.exec(t)?.[1]??(i&&!/ sort(?:ed)? by /.test(t)?i:void 0);if(a){let c=x(n,a);if(!c||c.type!=="enum")return h(c?`${n.plural}' ${c.words} is not a choice, so they cannot be grouped by it`:`${n.plural} have nothing called ${a} to group by`);o.group=c.name}let l=/ sort(?:ed)? by ([\p{L}\p{N} -]+?)(?= (?:and|only|grouped|with)|\s*$)/u.exec(t)?.[1];if(l){let c=x(n,l);if(!c)return h(`${n.plural} have nothing called ${l} to sort by`);o.sort={by:c.name,.../\b(newest|latest|desc|descending|most)\b/.test(t)?{direction:"desc"}:{}}}let d=M(n,t);return d.length>0&&(o.where=d),o}}}function M(e,n){let r=[],t=oe(n);if(t){let s=e.fields.filter(A),i=$(e,e.roles.start),o=s.find(l=>E(n,l.words))??(A(i)?i:void 0)??s[0];(!o||!A(o))&&h(`no date field on ${e.plural}`);let a=e.fields.find(l=>l.type==="boolean"&&/^(done|finished|complete|completed|closed)$/.test(l.name));r.push({expr:t.cond(o.name,/\boverdue\b|\blate\b|\bpast due\b/.test(n)?a?.name:void 0),says:t.says(o)})}if(/\bonly\b|\bjust\b|\bthat are\b|\bwhich are\b/.test(n)){for(let s of e.fields){if(s.type!=="enum")continue;let i=s.options?.find(o=>E(n,o.toLowerCase())||E(n,y(o)));i&&r.push({expr:`${s.name} == '${i.replace(/'/g,"")}'`,says:`that are ${y(i)}`})}if(/\bnot done\b|\bundone\b|\bunfinished\b|\bopen ones\b|\bstill to do\b/.test(n)){let s=e.fields.find(i=>i.type==="boolean"&&/^(done|finished|complete|completed)$/.test(i.name));s&&r.push({expr:`not ${s.name}`,says:`not ${s.words}`})}}return r}var B={columns:"A board",calendar:"A calendar",timeline:"A timeline",coverage:"A grid",board:"A layout",plan:"A plan",blocks:"A list",reach:"A picture"};function Re(e,n){let r=n.info(e.kind),t=s=>s?$(r,s)?.words??y(s):"";switch(e.lens){case"columns":return{title:`${k(r.plural)} by ${t(e.column)}`,detail:`of ${r.plural} by ${t(e.column)}`};case"calendar":{let s=e.range??"month";if(s==="agenda")return{title:`${k(r.plural)} in date order`,detail:`of ${r.plural} in order of ${t(e.start)}`};let i=s==="years"?"year":s;return{title:`${k(r.plural)} by ${i}`,detail:`of ${r.plural} by ${t(e.start)}, a ${i} at a time`}}case"timeline":return{title:`${k(r.plural)} over the ${t(e.column)}`,detail:`of ${r.plural} from ${t(e.start)} to ${t(e.end)}, by ${t(e.column)}`};case"coverage":{let s=n.info(e.across);return{title:`${k(r.plural)} by ${s.noun}`,detail:`of which ${s.noun} covers which ${r.noun}`}}case"board":return{title:`${k(r.plural)} where they stand`,detail:`of ${r.plural} where they stand`};case"plan":return{title:`${k(r.plural)} on a plan`,detail:`of ${r.plural}`};default:{let s=[e.where?.map(i=>i.says).join(" and "),e.group?`by ${t(e.group)}`:void 0,e.sort?`in order of ${t(e.sort.by)}`:void 0].filter(i=>!!i);return{title:[k(r.plural),...s].join(" "),detail:[`of ${r.plural}`,...s].join(" ")}}}}function Ae(e,n){let r={title:n,on:e.kind};switch(e.lens){case"columns":return{name:"columns",...r,bindings:{[e.kind]:{column:e.column}}};case"calendar":return{name:"calendar",...r,bindings:{[e.kind]:{start:e.start,...e.end?{end:e.end}:{},...e.done?{done:e.done}:{}}},...e.range?{options:{range:e.range}}:{}};case"timeline":return{name:"timeline",...r,bindings:{[e.kind]:{start:e.start,end:e.end,column:e.column}}};case"coverage":return{name:"coverage",...r,bindings:{rows:{kind:e.kind},columns:{kind:e.across},link:{edge:e.link}}};case"board":return{name:"board",...r,bindings:{slots:{kind:e.kind},x:{field:e.x,on:"slots"},y:{field:e.y,on:"slots"},fill:{edge:e.fill}},...e.fillFrom?{options:{fillFrom:e.fillFrom}}:{}};case"plan":return{name:"plan",...r,bindings:{regions:{kind:e.kind},outline:{field:e.outline,on:"regions"}}};default:{let t=e.where?.length?` where ${e.where.map(i=>e.where.length>1?`(${i.expr})`:i.expr).join(" and ")}`:"",s={list:`all('${e.kind}')${t}`,as:e.as??"row"};return e.group&&(s.group=e.group),e.sort&&(s.sort=e.sort.direction?{by:e.sort.by,direction:e.sort.direction}:e.sort.by),s.empty="Nothing here yet.",{name:"blocks",...r,options:{blocks:[s]}}}}}function q(e,n){let r=s=>s.toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,""),t=new Set(["home","overview",...Y(n).map(s=>s.slug),...(n.lenses??[]).flatMap(s=>s.title?[r(s.title)]:[])]);if(!t.has(r(e)))return e;for(let s=2;;s++)if(!t.has(r(`${e} ${s}`)))return`${e} ${s}`}var ne={title:[],headline:[],text:["tone"],figure:["as","currency","label"],list:["sort","limit","group","empty","as"],progress:["label"],group:["direction"],when:["show"],divider:[]};function Ee(e,n){if(!Array.isArray(n)||n.length===0)return"it has no blocks to draw";if(n.length>40)return"it has more blocks than a place draws";let r=(o,a)=>{if(typeof o!="string"||o.trim()==="")return`its ${a} says nothing`;try{return G(o)}catch(l){return`its ${a} does not read: ${l instanceof Error?l.message.replace(/ \(at character.*$/,""):String(l)}`}},t=o=>{if(o.t==="where")return t(o.set);if(o.t==="call"&&o.fn==="all"){let a=o.args[0];return a?.t==="lit"&&typeof a.value=="string"?e.info(a.value)??null:void 0}},s=(o,a)=>{switch(o.t){case"lit":return;case"ident":return a&&!a.fields.some(l=>l.name===o.name)&&!a.edges.some(l=>l.name===o.name)?`${a.plural} have nothing called ${o.name}`:void 0;case"member":return s(o.object,a);case"list":return o.items.map(l=>s(l,a)).find(Boolean);case"unary":return s(o.operand,a);case"binary":return s(o.left,a)??s(o.right,a);case"where":{let l=t(o.set);return l===null?"Nothing by that name here":s(o.set,a)??s(o.filter,l??void 0)}case"call":return o.fn==="all"?t(o)===null?"Nothing by that name here":void 0:o.args.map(l=>s(l,a)).find(Boolean)}},i=(o,a)=>{if(a>4)return"its blocks nest deeper than a place draws";for(let l of o){if(!w(l))return"a block is not an object";let d=Object.keys(ne).find(p=>p in l);if(!d)return`"${Object.keys(l)[0]??""}" is not a block a place draws`;let c=Object.keys(l).find(p=>p!==d&&p!=="key"&&!ne[d].includes(p));if(c)return`a ${d} block takes no "${c}"`;let u=l[d];if(d==="list"||d==="figure"||d==="when"){if(d==="figure"&&u===!0)continue;let p=r(u,d);if(typeof p=="string")return p;let m=s(p,void 0);if(m)return m;if(d==="list"){let f=t(p);if(f==null)return f===null?"Nothing by that name here":"its list does not say which records it lists, like all('task')";for(let g of["group","sort"]){let b=l[g],S=typeof b=="string"?b:w(b)&&typeof b.by=="string"?b.by:void 0;if(b===void 0)continue;let D=S?f.fields.find(ce=>ce.name===S):void 0;if(!D)return`${f.plural} have nothing called ${String(S??b)} to ${g} by`;if(g==="group"&&D.type!=="enum")return`${f.plural}' ${D.words} is not a choice, so they cannot be grouped by it`}}if(d==="when"){let f=l.show;if(!Array.isArray(f))return"a when block shows a list of blocks";let g=i(f,a+1);if(g)return g}}else if(d==="group"){if(!Array.isArray(u))return"a group block holds a list of blocks";let p=i(u,a+1);if(p)return p}else{if(d!=="divider"&&typeof u!="string")return`a ${d} block says words`;if(typeof u=="string")for(let p of u.matchAll(/\{([^{}]*)\}/g)){let m=p[1].split(/\|(?![|])/)[0],f=r(m,`${d}'s braces`);if(typeof f=="string")return f;let g=s(f,void 0);if(g)return g}}}};return i(n,1)}function T(e,n,r){let t=O(e.schema,r),s=f=>({ok:!1,failed:`Couldn't draw that: ${f.replace(/\.$/,"")}.`});if(!K(n.name)||n.name==="reach")return s(`"${String(n.name)}" is not a picture the seat can draw; it draws ${J.filter(f=>f!=="reach").join(", ")}`);if(typeof n.title!="string"||n.title.trim().length===0||n.title.length>80)return s("it needs a title of a few words");if(typeof n.on!="string"||!t.tryDefinition(n.on))return s("Nothing by that name here");let i=C[n.name],o=n.bindings??{};if(i.binds==="fields")for(let[f,g]of Object.entries(o)){if(!t.tryDefinition(f))return s("Nothing by that name here");let b=Object.keys(t.tryDefinition(f).fields?.shape??{});for(let[S,D]of Object.entries(g??{}))if(typeof D!="string"||!b.includes(D))return s(`${y(f)} has no field "${String(D)}" for its ${S}`);for(let S of i.requiredRoles)if(!(S in(g??{})))return s(`a ${n.name} needs ${y(f)}'s ${S}`)}else if(i.binds==="entities")for(let f of i.requiredRoles){let g=o[f];if(!g)return s(`a ${n.name} needs its ${f}`);if(typeof g.kind=="string"&&!t.tryDefinition(g.kind))return s("Nothing by that name here")}let a={...e,schema:t,lenses:[...e.lenses??[],n]},l=a.lenses.length-1,d=X(a),c=`lenses.${l}`,u=d.findings.find(f=>f.path===c||f.path.startsWith(`${c}.`));if(u)return s(u.message.replace(/^"[^"]*" /,"it "));let p=d.undrawn.find(f=>f.index===l);if(p)return s(p.why);let m=d.drawn.find(f=>f.index===l);if(!m)return s("its bindings name something the app does not have");if(m.as==="overview")return s(`"${n.title}" is the scene's own address; give it another title`);if(n.name==="blocks"){let f=Ee(j(t),n.options?.blocks);if(f)return s(f)}return{ok:!0,drawn:m}}function F(e){return{op:"add-lens",title:e.title,lens:e.name,on:e.on,...e.bindings?{bindings:e.bindings}:{},...e.options?{options:e.options}:{}}}function ve(e){return{op:"remove-lens",title:e.title,on:e.on}}var w=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function de(e){let n=w(e)?e:{},r=String(n.lens??n.name??""),t=n.bindings,s=typeof n.on=="string"?n.on:w(t)&&C[r]?.binds==="fields"?Object.keys(t)[0]??"":"";return{name:r,title:typeof n.title=="string"?n.title.trim():"",on:s,...w(t)?{bindings:t}:{},...w(n.options)?{options:n.options}:{}}}function xe(e){let n=s=>w(e.bindings?.[s])?e.bindings[s]:{},r=s=>typeof s=="string"?s:void 0,t=n(e.on);switch(e.name){case"columns":return r(t.column)?{lens:"columns",kind:e.on,column:t.column}:void 0;case"calendar":{let s=r(e.options?.range);return r(t.start)?{lens:"calendar",kind:e.on,start:t.start,...r(t.end)?{end:t.end}:{},...r(t.done)?{done:t.done}:{},...s?{range:s}:{}}:void 0}case"timeline":return r(t.start)&&r(t.end)&&r(t.column)?{lens:"timeline",kind:e.on,start:t.start,end:t.end,column:t.column}:void 0;case"coverage":{let s=w(e.bindings?.columns)?r(e.bindings.columns.kind):void 0,i=w(e.bindings?.link)?r(e.bindings.link.edge):void 0;return s&&i?{lens:"coverage",kind:e.on,across:s,link:i}:void 0}case"blocks":{let s=e.options?.blocks;if(!Array.isArray(s)||s.length!==1||!w(s[0]))return;let i=s[0],o=new RegExp(`^all\\('${e.on}'\\)(?: where (.+))?$`).exec(String(i.list??""));if(!o)return;let a=i.sort;return{lens:"blocks",kind:e.on,as:i.as==="card"?"card":"row",...typeof i.group=="string"?{group:i.group}:{},...typeof a=="string"?{sort:{by:a}}:w(a)&&typeof a.by=="string"?{sort:{by:a.by,...a.direction==="desc"?{direction:"desc"}:{}}}:{},...o[1]?{where:[{expr:o[1],says:"as asked"}]}:{}}}default:return}}function V(e,n,r,t,s){let i=j(O(e.schema,t)).info(n.on),o=xe(n);return{title:n.title,said:`${B[n.name]??"A picture"} of ${i?.plural??y(n.on)}.`,kind:n.on,lens:n,drawn:r,edit:F(n),by:s,asks:[],...o?{recipe:o}:{}}}function te(e){return{title:e.title,said:e.said,lens:{title:e.lens.title,lens:e.lens.name,on:e.lens.on,...e.lens.bindings?{bindings:e.lens.bindings}:{},...e.lens.options?{options:e.lens.options}:{}},edit:e.edit,by:e.by,check:"It draws, and graview check would take it."}}function W(e,n,r,t,s){let i=Re(e,n),o=e.title??s??q(i.title,r.app),a=Ae(e,o),l=T(r.app,a,r.sight);return l.ok?{title:o,said:`${B[e.lens]} ${i.detail}.`,kind:e.kind,lens:a,drawn:l.drawn,edit:F(a),by:"template",asks:t,recipe:e}:{failed:l.failed,...r.lastGood?{lastGood:r.lastGood}:{}}}function Le(e,n,r,t){if(r.length>0)return r;let s=o=>{switch(e){case"columns":return o.fields.some(a=>a.type==="enum");case"calendar":return o.fields.some(A);case"timeline":return ie(o)!==void 0||o.fields.some(A);case"coverage":return o.edges.some(a=>a.to.some(l=>l!==o.kind));case"board":return o.fields.some(a=>a.name==="x")&&o.fields.some(a=>a.name==="y");case"plan":return o.fields.some(a=>a.name==="outline")||o.roles.outline!==void 0;default:return!0}};return[...n.kinds.filter(s)].sort((o,a)=>Number(a.fields.some(l=>E(t,l.words)))-Number(o.fields.some(l=>E(t,l.words))))}function Ie(e,n){let r=j(O(n.app.schema,n.sight)),t=re(e),s=$e(t);if(s.length===0)return;let i=pe(t,r),o;for(let a of s){let l=a==="coverage"?[i[0]??r.kinds[0]].filter(d=>!!d):Le(a,r,i,t);for(let d of l)try{let c=ae(a,d,r,t,i),u=W(c,r,n,[e]);if(!L(u))return u;o??=u.failed}catch(c){if(!(c instanceof I))throw c;o??=`Couldn't draw that: ${c.message}.`}l.length===0&&i.length===0&&(o??=`Couldn't draw that: nothing here has what ${B[a].toLowerCase()} needs.`)}return{failed:o??"Couldn't draw that: Nothing by that name here.",...n.lastGood?{lastGood:n.lastGood}:{}}}async function Oe(e,n){let r=n.lastGood?{lastGood:n.lastGood}:{};if(e.trim().length===0)return{failed:"Say what you would like to see, like \u201Ca board of tasks by status\u201D.",...r};let t=Ie(e,n);if(t&&!L(t))return t;if(!n.complete)return t??{failed:"Couldn't draw that: drawing freely needs AI, which isn't on here. Ask for a board, a calendar, a timeline, a list or who covers what.",...r};let s=await le(e,n,void 0);return L(s)&&t?t:s}async function je(e,n,r){let t={lastGood:e},s={...r,lastGood:e},i=j(O(r.app.schema,r.sight)),o=re(n),a=i.info(e.kind),l=[...e.asks,n];if(!a)return{failed:"Couldn't change that: Nothing by that name here.",...t};let d=e.recipe,c=/^ (?:call|name|title) (?:it|this)? ?(.+?) $/.exec(o)??/ (?:call|name) it (.+?) $/.exec(o);try{if(c){let m=n.replace(/^.*?\b(?:call|name|title)\b\s*(?:it|this)?\s*/i,"").replace(/^["“']|["”']$/g,"").trim();if(m.length===0)return{failed:"Couldn't change that: say what to call it.",...t};let f={...e.lens,title:q(m,r.app)},g=T(r.app,f,r.sight);return g.ok?{...e,title:f.title,lens:f,drawn:g.drawn,edit:F(f),asks:l,...d?{recipe:{...d,title:f.title}}:{}}:{failed:g.failed,...t}}let p=/ as (?:a |an )?(board|kanban|calendar|timeline|list|table|cards|rows|grid|plan|layout)\b/.exec(o);if(p){let m=p[1]==="board"||p[1]==="kanban"?"columns":p[1]==="calendar"?"calendar":p[1]==="timeline"?"timeline":p[1]==="grid"?"coverage":p[1]==="plan"?"plan":p[1]==="layout"?"board":"blocks",f=ae(m,a,i,o,[a]),g=p[1]==="cards"?"card":p[1]==="rows"?"row":void 0,b=m==="blocks"&&d?.lens==="blocks"?{...d,...g?{as:g}:{}}:m==="blocks"&&d?.lens==="columns"?{...f,group:d.column,...g?{as:g}:{}}:f;return W(R(b),i,s,l)}if(d){let m=Te(d,a,i,o);if(m)return W(m,i,s,l)}}catch(p){if(!(p instanceof I))throw p;return{failed:`Couldn't change that: ${p.message}.`,...t}}if(!r.complete)return{failed:"Couldn't change that: changing it freely needs AI, which isn't on here. Try \u201Cgroup by status\u201D, \u201Conly this month\u201D or \u201Cas a calendar\u201D.",...t};let u=await le(n,s,e);return L(u)?u:{...u,asks:l}}var R=e=>{let{title:n,...r}=e;return r};function Te(e,n,r,t){let s=/ (?:group(?:ed)?|split|organi[sz]ed?|put them|columns) by ([\p{L}\p{N} -]+?)(?= (?:and|only|with)|\s*$)/u.exec(t)?.[1]??(/^ by /.test(t)?U(t):void 0);if(s){let d=x(n,s);if(d?.type==="enum")return e.lens==="blocks"?{...R(e),group:d.name}:{lens:"columns",kind:e.kind,column:d.name};let c=se(n,s,r);return c?{lens:"coverage",kind:e.kind,across:c.to[0],link:c.name}:h(d?`${n.plural}' ${d.words} is not a choice, so they cannot be grouped by it`:`${n.plural} have nothing called ${s} to group by`)}let i=/ (?:sort(?:ed)?|order(?:ed)?) by ([\p{L}\p{N} -]+?)(?= (?:and|only|with)|\s*$)/u.exec(t)?.[1];if(i){let d=x(n,i);return d?{...e.lens==="blocks"?R(e):{lens:"blocks",kind:e.kind,as:"row",...e.lens==="columns"?{group:e.column}:{}},sort:{by:d.name,.../\b(newest|latest|desc|descending|most)\b/.test(t)?{direction:"desc"}:{}}}:h(`${n.plural} have nothing called ${i} to sort by`)}if(/\b(?:all of them|everything|show all|clear the filter|no filter|without the filter)\b/.test(t)){if(e.lens!=="blocks"||!e.where)return h("it already shows all of them");let{where:d,...c}=R(e);return c}let o=oe(t);if(o&&e.lens==="calendar"&&o.range)return{...R(e),range:o.range};if(o&&e.lens==="calendar"&&!o.range)return{lens:"blocks",kind:e.kind,as:"row",sort:{by:e.start},where:M(n,t)};let a=M(n,t);if(a.length>0){let d=e.lens==="blocks"?R(e):{lens:"blocks",kind:e.kind,as:"row",...e.lens==="columns"?{group:e.column}:{}};return{...d,where:[...d.where??[],...a]}}let l=e.lens==="calendar"?_(t):void 0;if(l)return{...R(e),range:l}}function Ne(e){return e.kinds.map(n=>{let r=n.fields.map(i=>`${i.name} (${i.type??"value"}${i.options?`: ${i.options.join(" | ")}`:""})`).join(", "),t=n.edges.map(i=>`${i.name} \u2192 ${i.to.join(" | ")}`).join(", "),s=Object.entries(n.roles).map(([i,o])=>`${i}=${o}`).join(", ");return`- ${n.kind} ("${n.plural}"): ${r}${t?`; relations: ${t}`:""}${s?`; roles: ${s}`:""}`}).join(`
|
|
2
|
-
`)}var Fe=['columns \u2014 a board, records in columns by one choice field: {"lens": "columns", "on": K, "bindings": {K: {"column": "<enum field>"}}}','calendar \u2014 records on a calendar by a date: {"lens": "calendar", "on": K, "bindings": {K: {"start": "<date field>", "end"?: "<date field>", "done"?: "<boolean field>"}}, "options": {"range"?: "day" | "week" | "month" | "quarter" | "year" | "agenda"}}','timeline \u2014 minutes of a day in columns: {"lens": "timeline", "on": K, "bindings": {K: {"start": "<number field>", "end": "<number field>", "column": "<enum field>"}}}','coverage \u2014 who covers what, a grid of two kinds joined by a relation: {"lens": "coverage", "on": K, "bindings": {"rows": {"kind": K}, "columns": {"kind": J}, "link": {"edge": "<relation of K to J>"}}}',`blocks \u2014 anything else, as blocks: {"lens": "blocks", "on": K, "options": {"blocks": [{"headline": "words"}, {"list": "all('K') where <condition>", "group"?: "<enum field>", "sort"?: "<field>" | {"by": "<field>", "direction": "desc"}, "as"?: "row" | "card", "empty"?: "words"}, {"figure": "count(all('K'))", "label": "words"}]}}. Conditions read a record's own fields: status == 'open', not done, days(today(), due) <= 7.`].join(`
|
|
3
|
-
`);function Ce(e,n,r){return["You draw a view of an app's data as JSON \u2014 never code. The app's kinds, their fields (with types) and relations:",Ne(n),"","The lenses you may use (prefer the first four; use blocks only when none of them fits):",Fe,"",r?`The view on screen now:
|
|
4
|
-
${JSON.stringify(r.lens)}
|
|
5
|
-
Change it as asked, and keep everything not asked about.`:"",`Asked: ${JSON.stringify(e)}`,'Answer with ONE JSON object: {"title": "<a few words, like Deliverables by status>", "lens": \u2026, "on": \u2026, "bindings"?: \u2026, "options"?: \u2026}. Name only the kinds, fields and relations listed above. If it cannot be drawn from them, answer {"failed": "<one sentence saying why>"}.'].filter(t=>t!=="").join(`
|
|
6
|
-
`)}async function le(e,n,r){let t=n.lastGood?{lastGood:n.lastGood}:{},s=j(O(n.app.schema,n.sight)),i;try{i=await n.complete(Ce(e,s,r))}catch{return{failed:"Couldn't draw that: the model did not answer.",...t}}let o=Q(i);if(typeof o!="object"||o===null||Array.isArray(o))return{failed:"Couldn't draw that: the model's answer was not a view.",...t};let a=o;if(typeof a.failed=="string")return{failed:`Couldn't draw that: ${a.failed.replace(/^Couldn't draw that:\s*/i,"").replace(/\.$/,"")}.`,...t};let l=de(a);if(!K(l.name))return{failed:`Couldn't draw that: "${l.name}" is not a picture the seat can draw.`,...t};let d=l.title?l.title.slice(0,80):r?.title??k(e.trim()).slice(0,80),c={...l,title:r&&r.title===d?d:q(d,n.app)},u=T(n.app,c,n.sight);return u.ok?{...V(n.app,c,u.drawn,n.sight,"model"),asks:[e]}:{failed:u.failed,...t}}function Qe(e,n,r){let t=[...e.lenses??[]];for(let s of n){let i={name:s.lens,title:s.title,on:s.on,...s.bindings?{bindings:s.bindings}:{},...s.options?{options:s.options}:{}};if(t.some(a=>a.title===i.title))continue;T({...e,lenses:t},i,r).ok&&(t=[...t,i])}return t.length===(e.lenses??[]).length?e:{...e,lenses:t}}async function Ze(e,n,r){let{app:t,drafts:s}=r,i=ue(t,r.principal),o=c=>{let u=de(c);return{lens:u,verdict:T(t,u,i)}};if(e==="keep_lens"){let{lens:c,verdict:u}=o(n);if(!u.ok)return{ok:!1,error:u.failed,reason:"invalid"};if(!s?.keep)return{ok:!1,error:"This app's declaration cannot be written from here."};let p=F(c),m=await s.keep(p);return m.ok?{ok:!0,data:{kept:p,said:m.said??`Adds \u201C${p.title}\u201D to the places.`,undo:ve(p)}}:{ok:!1,error:m.error}}if(n.lens!==void 0){let{lens:c,verdict:u}=o(n.lens);return u.ok?{ok:!0,data:te(V(t,c,u.drawn,i,"model"))}:{ok:!1,error:u.failed,reason:"invalid"}}let a={app:t,sight:i,...s?.complete?{complete:s.complete}:{}},l=String(n.ask??""),d;if(n.current!==void 0){let{lens:c,verdict:u}=o(n.current);if(!u.ok)return{ok:!1,error:u.failed,reason:"invalid"};d=await je(V(t,c,u.drawn,i,"model"),l,a)}else d=await Oe(l,a);return L(d)?{ok:!1,error:d.failed,reason:"invalid"}:{ok:!0,data:te(d)}}export{te as draftAnswer,V as draftFromLens,ue as draftSight,Oe as draftView,L as isDraftFailure,T as judgeLens,F as lensEditOf,de as lensFromSpec,xe as recipeOfLens,je as refineDraft,Ze as runDraftTool,ve as takeBackEditOf,Ie as templateDraft,Qe as withReaderLenses};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Aa as y,Z as m}from"./chunk.2VX6H2LL.js";import{a as k,b as g}from"./chunk.MRK6QJV5.js";import{b as c}from"./chunk.AJZBJBMO.js";var p=c(k(),1);var i=c(g(),1);var h={default:{background:"var(--graview-panel, #ffffff)",color:"var(--graview-ink, #1a1a1a)"},muted:{background:"var(--graview-panel-muted, #f7f5f1)",color:"var(--graview-ink, #1a1a1a)"},warning:{background:"var(--graview-panel-warning, #fdf3ec)",color:"var(--graview-ink, #1a1a1a)"}},N={color:"var(--graview-ink-muted, #55514a)"},T={color:"var(--graview-ink-faint, #625d55)"};function E(e){let[r,n]=(0,p.useState)(!1);return(0,p.useEffect)(()=>{let t=e.current;if(!t||typeof ResizeObserver>"u")return;let a=()=>n(t.scrollHeight>t.clientHeight+1||t.scrollWidth>t.clientWidth+1);a();let d=new ResizeObserver(a);d.observe(t);for(let l of t.children)d.observe(l);return()=>d.disconnect()}),r}function A({level:e,style:r,children:n}){if(e===void 0)return(0,i.jsx)("strong",{style:r,children:n});let t=`h${e}`;return(0,i.jsx)(t,{style:{margin:0,...r},children:n})}function L({title:e,subtitle:r,meta:n,selected:t,tone:a="default",children:d,style:l,fit:s=!1,variant:M,heading:R}){let u=(0,p.useRef)(null),f=E(u),C=m(),o=(M??(C==="fullscreen"?"page":"card"))==="page";return(0,i.jsxs)("div",{"data-graview-primitive":"panel","data-graview-variant":o?"page":"card","data-selected":t||void 0,style:{display:"flex",flexDirection:"column",gap:o?12:"var(--graview-gap, 7px)",height:o||s?"auto":"100%",maxHeight:o?"none":"100%",padding:o?0:"var(--graview-pad, 15px)",boxSizing:"border-box",borderRadius:o?0:"var(--graview-radius, 12px)",border:o?"none":`1px solid ${t?"var(--graview-accent, #2f6f5e)":"var(--graview-edge, #e4e0d8)"}`,boxShadow:o?"none":t?"0 0 0 1px var(--graview-accent-dim), var(--graview-lift-low)":"var(--graview-lift-low)",overflow:o?"visible":"hidden",...h[a],...o?{background:"transparent"}:{},"--graview-panel-bg":h[a].background,...l},children:[a==="warning"?(0,i.jsx)("span",{"data-graview-broken":"",style:y,children:"Implicated in a problem."}):null,e===void 0?null:(0,i.jsxs)("div",{style:{display:"flex",alignItems:"baseline",flexWrap:"wrap",gap:8,minWidth:0},children:[a==="warning"?(0,i.jsx)("span",{"aria-hidden":"true",title:"Implicated in a problem",style:{color:"var(--graview-warn)",flex:"0 0 auto"},children:"\u26A0"}):null,(0,i.jsx)(A,{level:R,style:{fontFamily:"var(--graview-font-display, inherit)",fontSize:o?"1.5625rem":"0.9375rem",lineHeight:o?1.15:1.25,fontWeight:o?600:560,letterSpacing:o?"-0.012em":"0.005em",minWidth:0,overflowWrap:"anywhere"},children:e}),n===void 0?null:(0,i.jsx)("span",{style:{marginLeft:"auto",fontSize:"0.75rem",letterSpacing:"0.08em",textTransform:"uppercase",minWidth:0,overflowWrap:"anywhere",...T},children:n})]}),r===void 0?null:(0,i.jsx)("div",{style:{fontSize:o?"0.90625rem":"0.8125rem",lineHeight:1.5,...N},children:r}),(0,i.jsx)("div",{ref:u,className:o?void 0:"graview-scroll",...f&&!o?{tabIndex:0,role:"region",...typeof e=="string"?{"aria-label":e}:{}}:{},style:{display:"flex",flexDirection:"column",gap:o?22:"var(--graview-gap, 7px)",flex:"1 1 auto",...o?{overflow:"visible"}:{}},"data-graview-overflowing":f&&!o?"":void 0,children:d})]})}function v({label:e,hue:r,selected:n,title:t,pickId:a,emphasis:d}){let l=typeof e=="string"?e:void 0,s=r===void 0?void 0:Math.round(r);return(0,i.jsxs)("span",{"data-graview-primitive":"chip","data-selected":n||void 0,"data-graview-pick":a,"data-graview-emphasis":d,title:t??l,style:{cursor:a?"pointer":void 0,display:"inline-flex",alignItems:"center",alignSelf:"flex-start",minHeight:24,boxSizing:"border-box",padding:"3px 9px",borderRadius:6,fontSize:"0.8125rem",lineHeight:1.5,whiteSpace:"nowrap",maxWidth:"min(28ch, 100%)",overflow:"hidden",letterSpacing:"0.01em",border:`1px solid ${n?"var(--graview-accent)":s===void 0?"var(--graview-edge)":`hsl(${s} 55% var(--graview-tint-lightness) / 0.45)`}`,background:s===void 0?"var(--graview-panel-muted)":`hsl(${s} 55% var(--graview-tint-lightness) / calc(var(--graview-tint-alpha) * 0.65))`,color:"var(--graview-ink, #1a1a1a)",boxShadow:n?"0 0 14px -4px var(--graview-accent)":void 0},children:[s===void 0?null:(0,i.jsx)("span",{"aria-hidden":"true",style:{width:9,height:6,clipPath:"polygon(50% 0, 100% 50%, 50% 100%, 0 50%)",flex:"0 0 auto",marginRight:6,background:`hsl(${s} 55% var(--graview-tint-lightness) / 0.9)`}}),(0,i.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e})]})}function D({items:e,max:r=8,selectedIds:n=[],pick:t=!1}){let a=e.slice(0,r),d=e.length-a.length;return(0,i.jsxs)("div",{"data-graview-primitive":"roster",style:{display:"flex",flexWrap:"wrap",gap:6,alignContent:"flex-start"},children:[a.map(l=>(0,i.jsx)(v,{label:l.label,...l.hue===void 0?{}:{hue:l.hue},...t?{pickId:l.id}:{},...l.emphasis===void 0?{}:{emphasis:l.emphasis},selected:n.includes(l.id)},l.id)),d>0?(0,i.jsx)(v,{label:`+${d} more`}):null]})}function B({label:e,count:r,items:n,onExpand:t,flagged:a}){return(0,i.jsx)(L,{title:e,meta:a?`\u26A0 ${r}`:r,tone:a?"warning":"muted",style:t?{cursor:"zoom-in"}:void 0,children:n&&n.length>0?(0,i.jsx)(D,{items:n,max:6,pick:!0}):null})}var x=["solid","dashed","dotted","double","tapered"],b=["arrow","none","dot","bar"];function H(e){let r=2166136261;for(let n=0;n<e.length;n++)r^=e.charCodeAt(n),r=Math.imul(r,16777619);return r>>>0}function O(e,r={}){let n=H(e);return{...{pattern:x[n%x.length],width:1.5+(n>>>3)%3*.75,cap:b[(n>>>7)%b.length],hue:(n>>>11)%360,opacity:.85},...r[e]}}var W={solid:void 0,dashed:"7 5",dotted:"1 5",double:"12 3",tapered:"10 3 3 3"};function z(e){return e.color??`hsl(${Math.round(e.hue)} 55% 62%)`}function _(e,r){return r?Math.max(1.6,e.width):Math.min(1.4,e.width)}function w(e,r,n){return[e,0,0,0,0,e,0,0,0,0,1,0,r,n,0,1]}var S={0:{scale:1,blur:0,falloff:0,shadow:.16,fidelity:"full"},1:{scale:.95,blur:.3,falloff:.26,shadow:.12,fidelity:"summary"},2:{scale:.9,blur:.3,falloff:.34,shadow:.07,fidelity:"glyph"}},P={0:{scale:1,blur:0,falloff:0,shadow:.34,fidelity:"full"},1:{scale:.95,blur:.45,falloff:.18,shadow:.24,fidelity:"summary"},2:{scale:.9,blur:.45,falloff:.26,shadow:.14,fidelity:"glyph"}};function $(e,r="dark"){let n=Math.max(0,Math.min(2,Math.round(e)));return(r==="light"?S:P)[n]}function F(e,r,n){let t=Math.max(0,Math.min(1,n)),a=(d,l)=>d+(l-d)*t;return{scale:a(e.scale,r.scale),blur:a(e.blur,r.blur),falloff:a(e.falloff,r.falloff),shadow:a(e.shadow,r.shadow),fidelity:t<.5?e.fidelity:r.fidelity}}function Y(e,r,n,t,a){return w(e.scale,r,n)}export{P as a,$ as b,F as c,Y as d,O as e,W as f,z as g,_ as h,L as i,v as j,D as k,B as l};
|
|
@@ -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 +0,0 @@
|
|
|
1
|
-
import{d as f}from"./chunk.AKOC43TV.js";import{Pb as y}from"./chunk.ZQ4HFIIS.js";import{a as x,b as s}from"./chunk.MRK6QJV5.js";import{b as a}from"./chunk.AJZBJBMO.js";var o=a(x(),1),l=a(s(),1);function v({context:e,stop:r,title:t,style:n,className:i,children:g,...p}){let d=y(e.views?.arrangement?.()),c=g??`In ${d==="Scene"?"the scene":d.replace(/^The /,"the ")} \u2197`;if(e.overview){let h=e.overview;return(0,l.jsx)("a",{href:r,...p,...t?{title:t}:{},style:n,...i?{className:i}:{},onClick:S=>{S.preventDefault(),h(r)},children:c})}return e.embedded?null:(0,l.jsx)("a",{href:`${e.sceneHref??"/"}${r}`,...p,...t?{title:t}:{},style:n,...i?{className:i}:{},children:c})}function w(){return(0,l.jsx)("a",{href:"#fresh","data-testid":"start-fresh",title:"Forget every edit made in this browser and return to the example",onClick:e=>{e.preventDefault();let r=new URL(window.location.href);r.searchParams.set("fresh","1"),window.location.assign(r.toString())},style:{color:"inherit",display:"inline-flex",alignItems:"center",minHeight:24,minWidth:24},children:"Start fresh"})}function b(e){let r=(0,o.useRef)(0),t=(0,o.useCallback)(n=>e.subscribe(()=>{r.current+=1,n()}),[e]);return(0,o.useSyncExternalStore)(t,()=>r.current,()=>0)}var m=a(s(),1),u=f.part(e=>(0,m.jsx)(e.ActivityRail,{calls:[]}),{quiet:!0});export{v as a,w as b,b as c,u as d};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as m}from"./chunk.EUCXNNCZ.js";import"./chunk.FKQTQ3FV.js";import"./chunk.RGXNZ7PN.js";import"./chunk.ONDILMIX.js";import{f as g}from"./chunk.VLNI5U6H.js";import"./chunk.GDIRDJF3.js";import"./chunk.Y4R77MKX.js";import"./chunk.FRNIWOKD.js";import"./chunk.42U4UBDE.js";import"./chunk.IKT7JQUW.js";import"./chunk.AKOC43TV.js";import"./chunk.MYCTNK6D.js";import"./chunk.53RZI5PM.js";import"./chunk.XJNXSQT4.js";import"./chunk.VTBAKTFP.js";import"./chunk.7U7Q3HIS.js";import"./chunk.6O67NOZR.js";import"./chunk.WWRWXFYR.js";import"./chunk.ISAMJ7AK.js";import"./chunk.54NSG7BX.js";import"./chunk.6KJSFIO7.js";import"./chunk.UM5IPM22.js";import"./chunk.6XBLDV4A.js";import"./chunk.WOTNMTIY.js";import"./chunk.HAQ4KHRY.js";import"./chunk.PRXKRG6O.js";import"./chunk.AHDOKM4O.js";import"./chunk.TDW6QEG4.js";import"./chunk.LW7KV5SL.js";import"./chunk.2VX6H2LL.js";import{xa as n}from"./chunk.ZQ4HFIIS.js";import{a as b,b as l}from"./chunk.MRK6QJV5.js";import{b as t}from"./chunk.AJZBJBMO.js";var y=t(b(),1),a=t(l(),1);function P({store:h,auto:c,brand:r,views:f,presence:i,steering:o,overview:s,scope:d,titleLevel:v=2,props:e}){let u=(0,y.useMemo)(()=>g({scope:`.${d}`}),[d]);return(0,a.jsxs)("div",{"data-embed-content":"",style:c?{flex:"0 0 auto",background:"var(--graview-ground)"}:{flex:"1 1 auto",minHeight:0,overflow:"auto",background:"var(--graview-ground)"},children:[(0,a.jsx)("style",{children:u}),(0,a.jsx)("div",{"data-embed-measure":"",style:{display:"flow-root"},children:(0,a.jsx)(m,{context:{store:h,embedded:!0,...e.bar!==!1?{barAbove:!0}:{},...s?{overview:s}:{},titleLevel:v,views:f,settings:e.app.settings??[],...i?{presence:i}:{},...r?{brand:r}:{},...e.principal?{principal:e.principal}:{},...e.seats?{seats:e.seats}:{},...e.people?{people:e.people}:{}},...e.pages?{registry:e.pages}:{},...o?{steering:o}:{},...e.routing==="address"?n(e.basePath)===""?{}:{basename:n(e.basePath)}:{initialPath:e.path??"/"},...e.path!==void 0?{path:e.path}:{},...e.onNavigate?{onNavigate:e.onNavigate}:{}})})]})}export{P as PagesContent};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as l,H as p,O as k,P as y,c}from"./chunk.FKQTQ3FV.js";import"./chunk.RGXNZ7PN.js";import"./chunk.ONDILMIX.js";import{b as m}from"./chunk.VLNI5U6H.js";import"./chunk.IKT7JQUW.js";import"./chunk.AKOC43TV.js";import"./chunk.MYCTNK6D.js";import"./chunk.53RZI5PM.js";import"./chunk.XJNXSQT4.js";import"./chunk.VTBAKTFP.js";import"./chunk.7U7Q3HIS.js";import"./chunk.6O67NOZR.js";import"./chunk.WWRWXFYR.js";import"./chunk.ISAMJ7AK.js";import"./chunk.54NSG7BX.js";import"./chunk.6KJSFIO7.js";import"./chunk.UM5IPM22.js";import"./chunk.6XBLDV4A.js";import"./chunk.WOTNMTIY.js";import"./chunk.HAQ4KHRY.js";import"./chunk.PRXKRG6O.js";import"./chunk.AHDOKM4O.js";import"./chunk.TDW6QEG4.js";import"./chunk.LW7KV5SL.js";import{U as s,W as d,da as g}from"./chunk.2VX6H2LL.js";import"./chunk.ZQ4HFIIS.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{e as l}from"./chunk.AKOC43TV.js";import{C as f,G as E,a as P,b as h,ca as O,f as V,ia as v,l as B,la as L,m as A,ra as R,ya as _,z as x}from"./chunk.2VX6H2LL.js";import{Ob as g}from"./chunk.ZQ4HFIIS.js";import{a as C,b as T}from"./chunk.MRK6QJV5.js";import{b as S}from"./chunk.AJZBJBMO.js";var k=S(C(),1);var H="The whole thing",y=e=>`scene:${e.kind}:${e.as}`;function D(e){let{view:t}=e,i=new Set,n=e.places.filter(r=>e.hidden.has(r.kind)||i.has(y(r))?!1:(i.add(y(r)),!0)),a=(r,p)=>{if(r===l)return B(A(p,!0),"view",null);let w=n.find(N=>y(N)===r);return w?E(p,w.kind,w.as):null},o=[{key:l,label:H,path:`${g}${V(a(l,h))}`,group:"home"},...n.map(r=>({key:y(r),label:r.title,path:`${g}${V(a(y(r),h))}`,group:"pictures",kind:r.kind}))],s=t.within?.view,d=r=>t.focusId===f(r.kind)&&(s===void 0?n.filter(p=>p.kind===r.kind).at(-1)===r:s===r.as),c=n.find(r=>d(r)&&(s!==void 0||!t.overview));return{places:o,current:c?y(c):l,to:a}}function I(){let{views:e,hiddenKinds:t}=O(),{view:i,go:n}=R(),a=e.places(),o=(0,k.useMemo)(()=>D({places:a,hidden:t,view:i}),[a,t,i]),s=(0,k.useMemo)(()=>({go:d=>{let c=o.to(d.key,i);c&&n(c)}}),[o,i,n]);return{places:o.places,current:o.current,reach:s}}function W(e,t,i=[]){if(e.focusId)return e.focusId;let a=(e.selection??[]).map(x).find(o=>o!==null)??i.find(o=>t.includes(o))??t[0]??null;return a===null?null:f(a)}var m=S(T(),1),u=_(P(()=>import("./chunk.H3HRTEW7.js")));function G(){return u.load().then(()=>{})}var K=[{cardinality:"one",fidelity:"full",slot:"page"},{cardinality:"one",fidelity:"summary",slot:"card"},{cardinality:"one",fidelity:"glyph",slot:"row"},{cardinality:"many",fidelity:"full"},{cardinality:"many",fidelity:"summary"},{cardinality:"many",fidelity:"glyph"}];function M({schema:e,specs:t,kind:i,view:n}){let a=u.current.frameworkViews(e,t).lookup(i,{cardinality:n.cardinality,fidelity:n.fidelity});return a?(0,m.jsx)(a,{...n}):null}var b=u.part((e,t)=>(0,m.jsx)(M,{...t}),{what:"This view"});function F(e,t,i){for(let n of t.kinds){let a=i?.[n];for(let o of K){let s=c=>(0,m.jsx)(b,{schema:t,specs:i,kind:n,view:c}),d=o.slot!==void 0&&a?.[o.slot]!==void 0;d&&(s.says=(c,r)=>u.current?.frameworkViews(t,i).lookup(n,{cardinality:o.cardinality,fidelity:o.fidelity})?.says?.(c,r)),e.register(n,{cardinality:o.cardinality,fidelity:o.fidelity},d?s:v(s))}}return e}function $(e,t){return F(L(e),e,t)}export{I as a,W as b,G as c,$ as d};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as n}from"./chunk.VTBAKTFP.js";import"./chunk.7U7Q3HIS.js";import"./chunk.6O67NOZR.js";import"./chunk.WWRWXFYR.js";import{a as p}from"./chunk.ISAMJ7AK.js";import"./chunk.54NSG7BX.js";import"./chunk.6KJSFIO7.js";import"./chunk.UM5IPM22.js";import"./chunk.6XBLDV4A.js";import"./chunk.WOTNMTIY.js";import"./chunk.HAQ4KHRY.js";import"./chunk.PRXKRG6O.js";import"./chunk.AHDOKM4O.js";import"./chunk.TDW6QEG4.js";import"./chunk.LW7KV5SL.js";import"./chunk.2VX6H2LL.js";import"./chunk.ZQ4HFIIS.js";import{b as m}from"./chunk.MRK6QJV5.js";import{b as t}from"./chunk.AJZBJBMO.js";var i=t(m(),1),a=new WeakMap;function l(o){let e=a.get(o);if(!e){let r=p(o);e=c=>c.mode==="fullscreen"?(0,i.jsx)(n,{blocks:r,slot:"home",heading:2,firstHeading:1}):(0,i.jsx)(n,{blocks:r,slot:"home",heading:3,firstHeading:2}),a.set(o,e)}return e}export{l as homeView};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as D}from"./chunk.TWGB347L.js";import{a as O,c as V,f as q,g as K,k as z,l as W,m as U}from"./chunk.AKOC43TV.js";import{c as j}from"./chunk.D3CYTXNZ.js";import{e as _,g as J,i as Q}from"./chunk.MYCTNK6D.js";import{ca as T,ea as $,ma as G,ta as I}from"./chunk.2VX6H2LL.js";import{Fb as H,eb as P,ob as L,pb as M}from"./chunk.ZQ4HFIIS.js";import{a as ne,b as N}from"./chunk.MRK6QJV5.js";import{b as A}from"./chunk.AJZBJBMO.js";var o=A(ne(),1);function te(e){let t=[e?.typography?.body,e?.typography?.display,e?.typography?.mono],n=[];for(let a of t){let r=a?.split(",")[0]?.trim().replace(/^["']|["']$/g,"");!r||M(r)||r.toLowerCase()!==P.toLowerCase()&&(n.includes(r)||n.push(r))}return n}function X(e){let t=te(e);return t.length===0?null:`https://fonts.googleapis.com/css2?${t.map(a=>`family=${encodeURIComponent(a).replace(/%20/g,"+")}:wght@400;500;600;700`).join("&")}&display=swap`}var p=A(N(),1);function pe(e,t){let{app:n}=e;return(0,o.useMemo)(()=>{let a=J(t(n.schema,n.viewSpecs),n),r=e.views?G(a,e.views(n.schema,a)):a;return Q(r,n.schema,_(e.brand??n.brand,n.schema)),r},[e.views,n.schema,n.viewSpecs,n.lenses,n.pages,n.home])}function re(e,t){return new H({schema:e.schema,mutations:e.mutations??[],invariants:e.invariants??[],...t?{snapshot:t}:{},...e.policy?{policy:e.policy}:{},...e.intelligence?{intelligence:e.intelligence}:{}})}function Y(e){if(typeof document>"u")return e==="dark"?"dark":"light";let t=document.documentElement.dataset.theme;return t==="dark"||t==="light"?t:e==="dark"||e==="light"?e:typeof matchMedia=="function"&&matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function oe(e,t){let[n,a]=(0,o.useState)(()=>Y(t));return(0,o.useEffect)(()=>{if(!e||typeof document>"u")return;let r=()=>a(Y(t));r();let i=new MutationObserver(r);i.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]});let u=typeof matchMedia=="function"?matchMedia("(prefers-color-scheme: dark)"):null;return u?.addEventListener?.("change",r),()=>{i.disconnect(),u?.removeEventListener?.("change",r)}},[e,t]),n}var R=e=>e?e.getBoundingClientRect().height:0;function ye(e,t,n){let a=(0,o.useRef)(n);a.current=n;let r=n!==void 0;(0,o.useLayoutEffect)(()=>{let i=e.current;if(!i||!r)return;let u=()=>{let l=[...i.children],g=l.find(c=>c.hasAttribute("data-graview-app-bar")),m=l.find(c=>c.hasAttribute("data-embed-content")),h=m?.querySelector("[data-embed-measure]")??null,d=l.find(c=>c.hasAttribute("data-graview-place-line"));return{strip:g,line:d,content:m,measure:h}},s=-1,y=()=>{let{strip:l,line:g,content:m,measure:h}=u(),d=Math.ceil(R(l)+R(g)+R(h||m));d!==s&&(s=d,a.current?.(d))};if(y(),typeof ResizeObserver>"u")return;let f=new ResizeObserver(y),w=()=>{f.disconnect();let{strip:l,line:g,content:m,measure:h}=u();for(let d of[i,l,g,m,h])d&&f.observe(d)};w();let v=new MutationObserver(()=>{w(),y()});return v.observe(i,{childList:!0}),()=>{f.disconnect(),v.disconnect()}},[e,t,r])}var fe=480,ae=0;function he(e){let{app:t,seed:n,scheme:a="auto",brand:r=t.brand,fonts:i=!0,height:u="100%",label:s}=e,y=(0,o.useRef)(null);I(y);let f=(0,o.useMemo)(()=>`graview-embed-${++ae}`,[]),w=(0,o.useMemo)(()=>e.store??e.remote?.store??re(t,n),[e.store,e.remote,t,n]),v=e.presence??e.remote?.presence,l=e.hostContext?.theme,g=oe(a==="auto"&&l===void 0,r?.scheme),m=a==="auto"?l??g:a,h=(0,o.useMemo)(()=>O(m,r,{scope:`.${f}`}),[m,r,f]);V(e.favicon?L(r):void 0),(0,o.useEffect)(()=>{if(!i||typeof document>"u")return;let c=X(r);if(!c||document.querySelector(`link[href="${c}"]`))return;let b=document.createElement("link");b.rel="stylesheet",b.href=c,document.head.appendChild(b)},[r,i]);let d=(0,o.useRef)(void 0);return(0,o.useLayoutEffect)(()=>{let c=y.current,b=d.current;if(d.current=s,!c||!s)return;let ee=S=>{let E=S.getAttribute("aria-label")??"",x=b&&b!==s?E.startsWith(`${b} \xB7 `)?E.slice(b.length+3):E===b?"":E:E;x===s&&(S.getAttribute("role")==="region"||S.tagName==="SECTION"&&!S.hasAttribute("role"))&&S.setAttribute("role","group");let B=x.startsWith(`${s} \xB7 `)||x===s?x:x?`${s} \xB7 ${x}`:s;B!==E&&S.setAttribute("aria-label",B)},k=()=>c.querySelectorAll("aside, nav, main, header, footer, section[aria-label]:not([role]), [role=region], [role=complementary], [role=navigation], [role=search]").forEach(S=>{S.hasAttribute("data-graview-named-by-lens")||ee(S)});k();let C=new MutationObserver(k);return C.observe(c,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["aria-label"]}),()=>C.disconnect()},[s]),{rootRef:y,scope:f,css:h,scheme:m,store:w,presence:v,brand:r,auto:u==="auto",height:u}}function ge({rootRef:e,board:t}){let n=(0,o.useCallback)(()=>e.current?.querySelector("[data-embed-content]")??e.current,[e]);return(0,p.jsx)(j,{board:t,anchor:n})}function be(e,t,n){return{brand:n,principal:e.principal,seats:e.seats,presence:t,people:e.people,memory:e.memory,presenceTtlMs:e.presenceTtlMs,onKeepLens:e.onKeepLens,ai:e.ai,app:e.app}}function Se({name:e,heading:t,faces:n,at:a,without:r,home:i,reach:u,standing:s,hostActions:y,keeping:f,onFind:w,switch:v}){let{brand:l,store:g,principal:m,views:h}=T();$();let d=r?.has("places")?[]:q({store:g,principal:m,views:h}),c=D();return(0,p.jsx)(z,{brand:l,name:e,description:l?.subtitle,heading:t,faces:n,home:i,places:d,current:a===null?null:K(d,a),reach:u,onFind:w,...v?{switch:v}:{},...n?{scenePlaces:c}:{},tools:(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(U,{clean:s}),(0,p.jsx)(W,{...y?{hostActions:y}:{},...f?{keeping:f}:{}})]})})}var ve=e=>e===!1?2:Math.min(e+1,6);function we(e){let[t,n]=(0,o.useState)(e),a=(0,o.useRef)(void 0),r=(0,o.useRef)(void 0),i=(0,o.useMemo)(()=>({go:a,at:n,pending:r}),[]),u=(0,o.useCallback)(s=>{if(a.current){a.current(s);return}r.current=s,n(s)},[]);return{at:t,setAt:n,steering:i,steer:u}}function se(e){let t=typeof e=="object"&&e!==null?e.name:void 0;return{name:typeof t=="string"&&t.length>0?t:typeof e=="object"?"Error":typeof e}}var F=()=>typeof performance<"u"?performance.now():Date.now();function Ee(e,t){let n=(0,o.useRef)({onError:e,face:t});return n.current={onError:e,face:t},(0,o.useCallback)((a,r)=>n.current.onError?.(se(a),{module:r.module,face:n.current.face}),[])}function xe(e,t){let n=(0,o.useRef)(null);n.current===null&&(n.current=F());let a=(0,o.useRef)({onReady:e,face:t});a.current={onReady:e,face:t};let r=(0,o.useRef)(!1);return(0,o.useCallback)(i=>{r.current||(r.current=!0,a.current.onReady?.({ms:Math.max(0,F()-(n.current??F())),face:i}))},[])}var Z=class extends o.Component{state={failed:!1};static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(t,n){console.error(`[graview] ${this.props.module} threw while rendering`,t,n.componentStack),this.props.report(t,{module:this.props.module})}render(){return this.state.failed?(0,p.jsxs)("div",{role:"alert","data-graview-face-error":this.props.module,...this.props.content?{"data-embed-content":""}:{},style:this.props.content?{flex:"1 1 auto",display:"grid",alignContent:"center",justifyItems:"center",gap:8,padding:24,background:"var(--graview-ground)",color:"var(--graview-ink)",fontSize:"0.9375rem"}:{display:"inline-flex",alignItems:"center",gap:6,fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:[(0,p.jsx)("span",{children:this.props.content?"This part of the app could not draw.":"Could not draw."}),(0,p.jsx)("button",{type:"button",onClick:()=>this.setState({failed:!1}),style:{padding:"3px 11px",fontSize:"0.8125rem"},children:"Try again"})]}):this.props.children}};export{pe as a,re as b,ye as c,fe as d,he as e,ge as f,be as g,Se as h,ve as i,we as j,Ee as k,xe as l,Z as m};
|