graview 0.1.27 → 0.1.28
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.FS5K4AVA.js → chunk.22H4JXTH.js} +1 -1
- package/dist/preview/{chunk.7SVIRYBB.js → chunk.25OYH6MY.js} +1 -1
- package/dist/preview/{chunk.LHAAZQNQ.js → chunk.2GBQJXJH.js} +1 -1
- package/dist/preview/chunk.2VUG6EAN.js +1 -0
- package/dist/preview/chunk.337WDTG3.js +2 -0
- package/dist/preview/{chunk.UPGDSOBY.js → chunk.3HLLQ5CJ.js} +1 -1
- package/dist/preview/{chunk.UMMN5Z6V.js → chunk.46KUPBQC.js} +1 -1
- package/dist/preview/{chunk.4R7LDCDO.js → chunk.4H7CQE56.js} +1 -1
- package/dist/preview/{chunk.7THQFY52.js → chunk.4RO5DA22.js} +1 -1
- package/dist/preview/{chunk.TX2GOL65.js → chunk.4TUNX4WM.js} +1 -1
- package/dist/preview/{chunk.IXVSJJQH.js → chunk.5BGA2VUS.js} +2 -2
- package/dist/preview/{chunk.T2EZ5MTH.js → chunk.7S22MBNN.js} +1 -1
- package/dist/preview/{chunk.KAKX5TZN.js → chunk.A73BXXE4.js} +2 -2
- package/dist/preview/chunk.ARE3MEDN.js +1 -0
- package/dist/preview/chunk.ASFZTYFO.js +1 -0
- package/dist/preview/{chunk.S5JWZIVE.js → chunk.BBJZ6O7J.js} +1 -1
- package/dist/preview/{chunk.NQNQPPPM.js → chunk.BCBH6WJF.js} +1 -1
- package/dist/preview/{chunk.ZNIJONZN.js → chunk.CAZAB352.js} +1 -1
- package/dist/preview/chunk.CY7MDLRS.js +1 -0
- package/dist/preview/chunk.DAVRLRGB.js +1 -0
- package/dist/preview/{chunk.IZDKEFPJ.js → chunk.DCIC3YHX.js} +1 -1
- package/dist/preview/{chunk.DQ5OWYLQ.js → chunk.EW4JFOJY.js} +1 -1
- package/dist/preview/{chunk.5BN2ARQ2.js → chunk.EYF6ONTA.js} +1 -1
- package/dist/preview/{chunk.Q7544RCB.js → chunk.FP27W5MU.js} +1 -1
- package/dist/preview/{chunk.U5ZUXGWM.js → chunk.G2OOBROL.js} +1 -1
- package/dist/preview/{chunk.7CO6VP6F.js → chunk.GCKSQ52O.js} +1 -1
- package/dist/preview/{chunk.VD6FJ6KJ.js → chunk.GE5EAN36.js} +1 -1
- package/dist/preview/chunk.HOPIZMJR.js +2 -0
- package/dist/preview/{chunk.VMD4PDYJ.js → chunk.IBGO4BUF.js} +1 -1
- package/dist/preview/{chunk.OA5BVKJH.js → chunk.IDI2BQ7Y.js} +1 -1
- package/dist/preview/{chunk.MNPNW4BQ.js → chunk.IH42QTOM.js} +1 -1
- package/dist/preview/{chunk.CW7BMVBG.js → chunk.ISRS7GOT.js} +1 -1
- package/dist/preview/{chunk.AS35X6KA.js → chunk.J6CBMLGR.js} +1 -1
- package/dist/preview/{chunk.4JXWQO6Y.js → chunk.JRCV6HVV.js} +1 -1
- package/dist/preview/{chunk.ATLUMYAJ.js → chunk.KWW3YHQ4.js} +1 -1
- package/dist/preview/{chunk.VMEX2KZ4.js → chunk.MKNXV4TM.js} +7 -7
- package/dist/preview/{chunk.V57P4LIZ.js → chunk.MVNIKZIC.js} +1 -1
- package/dist/preview/{chunk.DG2WKNMX.js → chunk.N2WTNKEV.js} +1 -1
- package/dist/preview/{chunk.VFICMX5G.js → chunk.N7HCALRK.js} +1 -1
- package/dist/preview/{chunk.OYULDOQP.js → chunk.NRRUGG22.js} +1 -1
- package/dist/preview/{chunk.ZMMMKTAG.js → chunk.OGL4PHTY.js} +1 -1
- package/dist/preview/{chunk.FTBKJ5RZ.js → chunk.PFQFPJ5L.js} +1 -1
- package/dist/preview/{chunk.EVTZE2OZ.js → chunk.PN2H6X7O.js} +1 -1
- package/dist/preview/{chunk.7QTBDACG.js → chunk.PWHJHFC4.js} +1 -1
- package/dist/preview/{chunk.4W24TPMR.js → chunk.Q3HVA6L4.js} +1 -1
- package/dist/preview/{chunk.LQZ2VQWN.js → chunk.RZLNDVGN.js} +2 -2
- package/dist/preview/{chunk.HPD3DSTP.js → chunk.SBHVVJY7.js} +1 -1
- package/dist/preview/{chunk.QZWN46V6.js → chunk.SNBIZ3B6.js} +1 -1
- package/dist/preview/chunk.TBG2QBOS.js +1 -0
- package/dist/preview/chunk.VR735ZQL.js +1 -0
- package/dist/preview/{chunk.YO7UFBJP.js → chunk.VSXCXPK2.js} +1 -1
- package/dist/preview/{chunk.TMPV4HLQ.js → chunk.W3LDQ6B2.js} +1 -1
- package/dist/preview/{chunk.YV2RTNPU.js → chunk.WCNONCTL.js} +1 -1
- package/dist/preview/{chunk.XDHBV5K5.js → chunk.WHTNSETN.js} +1 -1
- package/dist/preview/{chunk.NKIFVPS3.js → chunk.XG67BWH6.js} +1 -1
- package/dist/preview/{chunk.DG2UE7PJ.js → chunk.XRM6WXPW.js} +1 -1
- package/dist/preview/chunk.Y5LPZLDE.js +1 -0
- package/dist/preview/{chunk.E3SZ7T75.js → chunk.YETBY2LM.js} +1 -1
- package/dist/preview/chunk.ZEUBAAVQ.js +1 -0
- package/dist/preview/{chunk.PHY3AH3L.js → chunk.ZJDRD6PO.js} +1 -1
- package/dist/preview/page.js +2 -2
- package/package.json +6 -6
- package/dist/preview/chunk.DY2FFBWF.js +0 -1
- package/dist/preview/chunk.GHMICJIB.js +0 -1
- package/dist/preview/chunk.HO6JR7VY.js +0 -1
- package/dist/preview/chunk.I5KD54S6.js +0 -1
- package/dist/preview/chunk.J36GTQTV.js +0 -1
- package/dist/preview/chunk.MHJJEGQO.js +0 -1
- package/dist/preview/chunk.OHGJ5BZ4.js +0 -2
- package/dist/preview/chunk.RUC4HFVC.js +0 -1
- package/dist/preview/chunk.SHDYLMZE.js +0 -2
- package/dist/preview/chunk.ZD5HGRPR.js +0 -1
- package/dist/preview/chunk.ZKM4P7US.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as wr,c as br}from"./chunk.DY2FFBWF.js";import{a as lo,b as co,c as uo}from"./chunk.I5KD54S6.js";import{a as fr,e as hr,f as pr,i as wn,j as gr,l as en,m as bn,n as mr,o as yr}from"./chunk.XDHBV5K5.js";import{a as cr,b as Ue,c as yn,d as ur,f as xn,g as Xt,h as so}from"./chunk.6R4EI47C.js";import{d as xr}from"./chunk.QZWN46V6.js";import{A as Jt,B as Oe,C as Ot,D as xt,E as Zn,G as dt,H as pn,I as Gt,K as Ut,L as gn,M as Jn,N as sr,O as Et,P as At,Q as eo,R as dr,U as to,W as Ct,Z as no,a as zn,b as Gn,ba as mn,c as Un,ca as Lt,d as rr,da as le,e as ir,f as hn,fa as It,g as Kt,h as Rt,i as Pt,j as Xn,k as qn,ka as lr,l as Yt,ra as oo,s as Qn,sa as ro,t as yt,ta as Nt,v as zt,va as io,x as ce,y as $e,ya as ao,z as ar}from"./chunk.OYULDOQP.js";import{Eb as Te,Ga as Zo,N as Uo,P as Xo,S as _t,U as fn,V as Vt,W as Wt,Xb as er,Y as qo,Ya as Jo,_ as Qo,_b as tr,cc as nr,dc as or,mb as Mt}from"./chunk.VMEX2KZ4.js";import{a as De,b as be}from"./chunk.MRK6QJV5.js";import{b as ee}from"./chunk.AJZBJBMO.js";var vn=(e,t)=>e<t?-1:e>t?1:0;function Sr(e){return!e||e<=1?1:Math.min(4,Math.ceil(Math.sqrt(e)))}function kr(e,t,n){if(t===n)return 0;let r=e.kinds,o=0;for(let[i,a]of[[t,n],[n,t]]){let l=e.tryDefinition(i);for(let c of Object.values(l?.edges??{}))(c.to==="*"?r:c.to).includes(a)&&(o+=1)}return o}var vr=(e,t)=>`${Math.floor(e/5)},${Math.floor(t/5)}`;function Gi(e,t,n){if(n===0)return[{col:e,row:t}];let r=[];for(let o=0;o<n;o++)r.push({col:e+(n-o)*5,row:t+o*5}),r.push({col:e-o*5,row:t+(n-o)*5}),r.push({col:e-(n-o)*5,row:t-o*5}),r.push({col:e+o*5,row:t-(n-o)*5});return r}function fo(e,t={}){let n=[...e.kinds],r=[...(t.order??[]).filter(l=>n.includes(l)),...n.filter(l=>!(t.order??[]).includes(l)).sort(vn)].filter((l,c,d)=>d.indexOf(l)===c),o=new Map,i=new Set,a=(l,c,d)=>{o.set(l,{col:c,row:d,side:Sr(t.counts?.[l])}),i.add(vr(c,d))};for(let l of r){let c=e.tryDefinition(l)?.plot??t.plots?.[l];c&&a(l,c.col,c.row)}for(let l of r){if(o.has(l))continue;if(o.size===0){a(l,0,0);continue}let c,d=0;for(let f of[...o.keys()].sort(vn)){let g=kr(e,l,f);(g>d||g===d&&g>0&&c!==void 0&&vn(f,c)<0)&&(d=g,c=f)}let s=c?o.get(c):o.get(r.find(f=>o.has(f))),u;for(let f=1;!u&&f<64;f++)u=Gi(s.col,s.row,f).find(g=>!i.has(vr(g.col,g.row)));a(l,u?.col??s.col+5*o.size,u?.row??s.row)}return o}function ho(e,t){let n=[...t.keys()].sort(vn),r=[];for(let o=0;o<n.length;o++)for(let i=o+1;i<n.length;i++){let a=n[o],l=n[i],c=[];for(let[d,s]of[[a,l],[l,a]]){let u=e.tryDefinition(d);for(let[f,g]of Object.entries(u?.edges??{}))(g.to==="*"?e.kinds:g.to).includes(s)&&c.push(f)}c.length>0&&r.push({from:a,to:l,edges:c})}return r}function po(e){let t=1/0,n=1/0,r=-1/0,o=-1/0;for(let i of e.values())t=Math.min(t,i.col),n=Math.min(n,i.row),r=Math.max(r,i.col+i.side),o=Math.max(o,i.row+i.side);return e.size===0?{minCol:0,minRow:0,maxCol:1,maxRow:1}:{minCol:t,minRow:n,maxCol:r,maxRow:o}}function ve(e,t,n){return{x:(e-t)*n/2,y:(e+t)*n/4}}function Ui(e){if(e<3)return[];if(e%2===1){let r=(e-1)/2;return[[r,r]]}let t=e/2-1,n=e/2;return[[t,t],[n,t],[t,n],[n,n]]}function Mr(e){let t=2166136261;for(let n=0;n<e.length;n++)t=Math.imul(t^e.charCodeAt(n),16777619);return(t>>>0)%1e3/1e3}function go(e,t){let n=e.side+1,r=new Set(Ui(n).map(([c,d])=>`${c},${d}`)),o=e.side/n,i=[];for(let c=0;c<n;c++)for(let d=0;d<n;d++)r.has(`${d},${c}`)||i.push([d,c]);i.sort((c,d)=>c[0]+c[1]-(d[0]+d[1])||c[0]-d[0]);let a=t.slice(0,i.length);return{buildings:a.map((c,d)=>{let[s,u]=i[d];return{id:c,col:e.col+(s+.5)*o,row:e.row+(u+.5)*o,footprint:o*.62,height:.55+Mr(c)*.7}}),rest:Math.max(0,t.length-a.length)}}var Rr={width:1200,height:760,focusSize:{width:1200,height:420},relationSize:{width:240,height:140},contextSize:{width:300,height:104},gap:16,unit:16};var Pr=(e,t)=>e?`${e.edgeKind}|${e.direction}`:`raised|${t}`,Tt=(e,t,n)=>`${pn}${e}|${t}|${n}`;function Xi(e,t){if(!Gt(e))return null;let[n="",r="",o="",i=""]=e.slice(pn.length).split("|"),a=t.definitions.find(x=>x.kind===n),l=Wt(t,n),c=r==="raised"?null:(()=>{let x=a?.edges[r]??t.definitions.map(h=>h.edges[r]).find(Boolean);return((o==="in"?x?.inverse:x?.description)??_t(r)).toLowerCase()})(),[d="",s=""]=i.split("="),u=d.split(":")[0],f=i===""||i==="kind"||i.startsWith("more")?null:`${qo(a,u).toLowerCase()}: ${s==="none"?"none":s}`;return[i.startsWith("more")?`More ${l.toLowerCase()}`:l,[c,f].filter(Boolean).join(", ")].filter(Boolean).join(" \u2014 ")}function Sn(e,t){let n=e.map(()=>0),r=e.map((a,l)=>({size:a,index:l})).sort((a,l)=>a.size-l.size||a.index-l.index),o=Math.max(t,e.length),i=e.length;for(let{size:a,index:l}of r){let c=Math.max(1,Math.floor(o/i));n[l]=Math.min(a,c),o-=n[l],i-=1}return n}function yo(e){return Pr(e.via,e.node.kind)}function kn(e,t){let n=[],r=0;return e.forEach((o,i)=>{if(o<=0)return;if(n.length>0&&o<=r){for(let l=0;l<o;l++)n[n.length-1].push(i);r-=o;return}let a=o;for(;a>0;){let l=Math.min(t,a);n.push(Array.from({length:l},()=>i)),a-=l,r=t-l}}),n}function xo(e,t,n){let r=Sn(e,t*n);for(;kn(r,t).length>n;){let o=-1;if(r.forEach((i,a)=>{i>1&&(o<0||i>r[o])&&(o=a)}),o<0)break;r[o]=r[o]-1}return r}function qi(e,t,n){let r=o=>[t.chosen?.has(o.id)?0:1,t.hits?.has(o.id)?0:1,t.flagged?.has(o.id)?0:1,-(t.touched?.get(o.id)??0),-n.neighbors(o.id).length];return e.map((o,i)=>({node:o,index:i,key:r(o)})).sort((o,i)=>{for(let a=0;a<o.key.length;a++)if(o.key[a]!==i.key[a])return o.key[a]-i.key[a];return o.index-i.index}).map(o=>o.node)}var Qi=5,Zi=(e,t)=>{for(let n=0;n<e.length;n++)if(e[n]!==t[n])return e[n]<t[n];return!1};function Or(e,t,n){if(e.length===0||t<2)return;let r=e[0].kind,o={schema:n.schema,graph:n.graph,...n.today?{today:n.today}:{}},i=[];for(let l of Zo(n.schema,r).groups)if(l.key!==n.exclude)if(l.buckets)for(let c of["decade","year","month"])i.push({by:l.key,bucket:c});else i.push({by:l.key});let a;return i.forEach((l,c)=>{let s=xr(e,{group:l},o).groups;if(s.length<2||s.length>t)return;let f=s.filter(x=>x.key!=="").reduce((x,y)=>x+y.nodes.length,0)/e.length;if(f<.5||s.some(x=>x.nodes.length>e.length*.75))return;let g=[-Math.round(f*100),Math.abs(s.length-Qi),c];(!a||Zi(g,a.score))&&(a={grouping:{by:l.by,...l.bucket?{bucket:l.bucket}:{},groups:s},score:g})}),a?.grouping}function wo(e,t){let n=y=>({id:y.node.id,kind:y.node.kind,node:y.node,...y.via?{via:y.via}:{}});if(e.length<=t.budget)return e.map(n);let r={...t.relevance,chosen:new Set([...t.relevance?.chosen??[],...t.selection??[]])},o=new Map;for(let y of e){let h=Pr(y.via,y.node.kind),m=o.get(h);m?m.push(y):o.set(h,[y])}let i=[...o.entries()].map(([y,h])=>({key:y,run:h,via:h[0].via,kinds:[...new Set(h.map(m=>m.node.kind))],members:[],whole:!1,extra:0})),a=Sn(i.map(y=>y.run.length),t.budget);i.forEach((y,h)=>y.whole=y.run.length<=a[h]);let l=i.filter(y=>!y.whole),c=i.filter(y=>y.whole).reduce((y,h)=>y+h.run.length,0),d=Math.max(l.length,t.budget-c);for(let y of l){y.members=qi(y.run.map(m=>m.node),r,t.graph);let h=d-(l.length-1);y.kinds.length>1&&y.kinds.length<=h?y.byKind=!0:y.kinds.length===1&&(y.grouping=Or(y.members,h,{schema:t.schema,graph:t.graph,...y.via?{exclude:y.via.edgeKind}:{},...t.today?{today:t.today}:{}}))}let s=y=>y.byKind?y.kinds.length:y.grouping?y.grouping.groups.length:1;for(;l.reduce((y,h)=>y+s(h),0)>d;){let y=[...l].filter(h=>s(h)>1).sort((h,m)=>s(m)-s(h))[0];if(!y)break;y.grouping=void 0,y.byKind=!1}d-=l.reduce((y,h)=>y+s(h),0);let u=y=>y.byKind?y.kinds.some(h=>t.expanded.has(Tt(h,y.key,"kind"))):y.grouping?.groups.some(h=>t.expanded.has(Tt(y.kinds[0],y.key,mo(y.grouping,h.key)))),f=l.filter(y=>!y.grouping&&!y.byKind?!0:u(y)),g=Sn(f.map(y=>y.members.length),Math.max(0,d));f.forEach((y,h)=>y.extra=d>0?g[h]:0);let x=[];for(let y of i){let{key:h,via:m}=y;if(y.whole){x.push(...y.run.map(n));continue}let b=w=>({id:w.id,kind:w.kind,node:w,...m?{via:m}:{}}),R=new Map(y.run.map((w,M)=>[w.node.id,M])),P=(w,M,A)=>{let j=[...w.slice(0,M)].sort((F,D)=>R.get(F.id)-R.get(D.id));x.push(...j.map(b));let C=w.slice(M);if(C.length===0)return;let $=C[0].kind;x.push({id:Tt($,h,A?`more:${A}`:"more"),kind:$,...m?{via:m}:{},aggregate:{kind:$,memberIds:C.map(F=>F.id),label:M>0?`${C.length} more ${t.plural($).toLowerCase()}`:`${C.length} ${t.plural($).toLowerCase()}`,opens:{in:"picture",focus:Oe($),within:A?{filter:A}:{}}}})},O=m&&t.focusId?`${m.edgeKind}:${t.focusId}`:void 0;if(y.byKind){let w=y.kinds.find(M=>t.expanded.has(Tt(M,h,"kind")));for(let M of y.kinds){let A=y.members.filter(j=>j.kind===M);if(M===w){let j=y.extra+1;A.length<=j?x.push(...A.map(b)):P(A,j-1,O);continue}x.push({id:Tt(M,h,"kind"),kind:M,...m?{via:m}:{},aggregate:{kind:M,memberIds:A.map(j=>j.id),label:t.plural(M),opens:{in:"place"}}})}continue}let k=y.grouping;if(!k){P(y.members,y.extra,O);continue}let B=y.kinds[0],S=k.groups.find(w=>t.expanded.has(Tt(B,h,mo(k,w.key))));for(let w of k.groups){if(w===S){let M=y.members.filter(j=>w.nodes.includes(j)),A=y.extra+1;if(M.length<=A)x.push(...M.map(b));else{let j=w.key!==""&&!w.key.includes(",")&&!k.bucket,C=[O,j?`${k.by}:${w.key}`:void 0].filter(Boolean).join(",")||void 0;P(M,A-1,C)}continue}x.push({id:Tt(B,h,mo(k,w.key)),kind:B,...m?{via:m}:{},aggregate:{kind:B,memberIds:y.members.filter(M=>w.nodes.includes(M)).map(M=>M.id),label:w.label.charAt(0).toUpperCase()+w.label.slice(1),opens:{in:"place"}}})}}return x}var mo=(e,t)=>`${e.by}${e.bucket?`:${e.bucket}`:""}=${t||"none"}`;function bo(e,t,n=6){return e.x<t.x+t.width+n&&t.x<e.x+e.width+n&&e.y<t.y+t.height+n&&t.y<e.y+e.height+n}var Er=(e,t)=>ve(e.col+e.side/2,e.row+e.side/2,t);function vo(e,t,n,r,o={},i={}){let a={};for(let L of e)a[L.kind]=L.count;let l=fo(t,{...i.order?{order:i.order}:{},counts:a,...i.plots?{plots:i.plots}:{}}),c=o.left??0,d=r.width-c-(o.right??0),s=c+d/2,u=r.height*.53,f=po(l),g=[ve(f.minCol,f.minRow,1),ve(f.maxCol,f.minRow,1),ve(f.minCol,f.maxRow,1),ve(f.maxCol,f.maxRow,1)],x=Math.min(...g.map(L=>L.x)),y=Math.max(...g.map(L=>L.x)),h=Math.min(...g.map(L=>L.y)),m=Math.max(...g.map(L=>L.y)),b={x:Math.max(1,y-x),y:Math.max(.5,m-h)},R=Math.max(40,d-n.width*1.1),P=Math.max(24,r.height*.62-n.height*1.1),O=Math.max(18,Math.min(160,R/b.x,P/b.y)),k=i.scale??1,B=i.minHeight??0,S=i.avoid??[],w=0,M=(L,Y,v=1,N={x:0,y:0})=>{let T=s-(x+y)/2*L+N.x+w,G=u-(h+m)/2*L+N.y,H={width:n.width*Y,height:n.height*Y},re=e.map(J=>Er(l.get(J.kind),L).y),ie=Math.max(...re),de=Math.min(...re);return e.map(J=>{let Ce=l.get(J.kind),ke=Er(Ce,L),et=ie===de?.5:(ke.y-de)/(ie-de),Ke=.85+et*.45,U=H.width*Ke,Le=Math.max(B,H.height*Ke),tt=Le+(J.marquee??0)+(J.opened>0?Math.max(J.openedMin??0,J.opened*v):0);return{id:J.id,x:T+ke.x-U/2,y:G+ke.y-Le/2,width:U,height:tt,depth:1-et*.65,plot:Ce}})},A=L=>L.some((Y,v)=>L.some((N,T)=>T!==v&&bo(Y,N)))||L.some(Y=>S.some(v=>bo(Y,v))),j=L=>{if(S.length===0)return[{x:0,y:0}];let Y=Math.max(...S.map(T=>T.width))/2+L,v=Math.max(...S.map(T=>T.height))/2+L/2,N=[{x:0,y:0}];for(let T of[.5,.75,1,1.25]){let G=Y*T,H=v*T;N.push({x:G,y:0},{x:-G,y:0},{x:0,y:H},{x:0,y:-H},{x:G,y:H},{x:-G,y:H},{x:G,y:-H},{x:-G,y:-H})}return N},C=r.width-(o.right??0),$=L=>L.reduce((Y,v)=>{let N=Math.max(0,Math.min(v.x+v.width,r.width)-Math.max(v.x,0)),T=Math.max(0,Math.min(v.y+v.height,r.height)-Math.max(v.y,0));return Y+v.width*v.height-N*T},0),F=(L,Y,v)=>{let N,T;for(let G of j(L)){let H=M(L,Y,v,G);if(A(H)){T??={placed:H,shift:G};continue}let re=$(H);(!N||re<N.off-.5)&&(N={placed:H,shift:G,off:re})}return N??T},D=O,K=k,z=1,V=F(D,K,z);for(;A(V.placed)&&K>1.001;)K=Math.max(1,K-.05),V=F(D,K,z);for(;A(V.placed)&&z>.3;)z=Math.max(.3,z-.1),V=F(D,K,z);if(A(V.placed)||$(V.placed)>0){let L=A(V.placed)?void 0:{cell:D,settled:V,off:$(V.placed)};for(let Y=.9;Y>=.3;Y-=.1){let v=O*Y,N=F(v,K,z);if(A(N.placed))continue;let T=$(N.placed);if((!L||T<L.off-.5)&&(L={cell:v,settled:N,off:T}),T===0)break}L&&(D=L.cell,V=L.settled)}for(let L=0;A(V.placed)&&L<80;L++)D*=1.06,V=F(D,K,z);if(S.length===0){let L=Math.min(...V.placed.map(N=>N.x)),Y=Math.max(...V.placed.map(N=>N.x+N.width)),v=Y-L>C-c?0:L<c?c-L:Y>C?C-Y:0;if(v!==0){w=v;let N=M(D,K,z,V.shift);A(N)?w=0:V={placed:N,shift:V.shift}}}i.zoom&&i.zoom!==1&&(D*=i.zoom,w*=i.zoom,V=F(D,K,z));let ge=V.placed,me=s-(x+y)/2*D+V.shift.x+w,X=u-(h+m)/2*D+V.shift.y,oe={cell:D,originX:me,originY:X,pan:i.pan??{x:0,y:0},extent:{x:me+x*D,y:X+h*D,width:b.x*D,height:b.y*D},openedShare:z};return{placed:ge,frame:oe,map:l}}function wt(e){let t={x:e.width*.45,y:e.height*.45};if(!e.city)return t;let{extent:n}=e.city,r=24;return{x:Math.max(t.x,n.x+n.width-e.width+r,-n.x+r),y:Math.max(t.y,n.y+n.height-e.height+r,-n.y+r)}}var Mn=48;function So(e){if(!e.city)return[];let{width:t,height:n}=e,r=[];for(let o of e.nodes){if(!o.id.startsWith("kind:")||Math.round(o.plane)!==2)continue;let i=o.x+o.width/2,a=o.y+o.height/2,l=i<0?"left":i>t?"right":a<0?"top":a>n?"bottom":null;if(!l)continue;let c=l==="left"||l==="right",d=c?Math.max(0,Math.min(n,a)):Math.max(0,Math.min(t,i)),s=(g,x)=>g<x/4?x/4-g:g>x*3/4?x*3/4-g:0,u=(g,x)=>g<Mn?Mn-g:g>x-Mn?x-Mn-g:0,f=c?{x:s(i,t),y:u(a,n)}:{x:u(i,t),y:s(a,n)};r.push({id:o.id,kind:o.id.slice(5),side:l,along:d,by:f})}return r}function ko(e,t,n,r,o){return{x:e.x+(n.x-e.x-t.x-r.x)*(1-o),y:e.y+(n.y-e.y-t.y-r.y)*(1-o)}}var Ji={rankOf:()=>{},parentOf:()=>{}};function Ar(e,t){if(t.size===0)return Ji;let n=e.kinds,r=new Map,o=(d,s)=>{d!==s&&((r.get(d)??r.set(d,new Set).get(d)).add(s),(r.get(s)??r.set(s,new Set).get(s)).add(d))};for(let d of n){let s=e.tryDefinition(d);if(s)for(let u of Object.values(s.edges??{})){let f=u.to==="*"?n:u.to;for(let g of f)o(d,g)}}let i=new Map,a=new Map,l=[...t].filter(d=>n.includes(d));for(let d of l)i.set(d,0);let c=0;for(;l.length>0;){c+=1;let d=[];for(let s of[...l].sort((u,f)=>n.indexOf(u)-n.indexOf(f)))for(let u of[...r.get(s)??[]].sort((f,g)=>n.indexOf(f)-n.indexOf(g)))i.has(u)||(i.set(u,c),c===2&&a.set(u,s),d.push(u));l=d}return{rankOf:d=>{let s=i.get(d);if(s!==0)return s===1?"primary":"secondary"},parentOf:d=>a.get(d)}}function Cr(e,t,n,r,o={}){if(n){let i=new Map;for(let a of e.allEdges()){if(r&&a.kind!==r)continue;let l=a.from===n.id?a.to:a.to===n.id?a.from:null;if(l===null||l===n.id)continue;let c=e.getNode(l);if(!c||i.has(l))continue;let d=a.from===n.id?"out":"in",s=d==="out"?n.kind:c.kind,u=ea(t,s,a.kind,d);i.set(l,{node:c,via:{edgeKind:a.kind,direction:d,...u?{description:u}:{}}})}if(i.size>0){let a=l=>`${l.via.edgeKind}|${l.via.description??""}`;return[...i.values()].sort((l,c)=>(a(l)<a(c)?-1:a(l)>a(c)?1:0)||dt(l.node,c.node))}}if(n){let i=o[n.id]??[],a=new Set,l=[];for(let c of i){if(c===n.id||a.has(c))continue;let d=e.getNode(c);d&&(r&&r!=="judges"&&d.kind!==r||(a.add(c),l.push({node:d,via:{edgeKind:"judges",direction:"out",description:"what it finds wrong"}})))}if(l.length>0)return l.sort((c,d)=>dt(c.node,d.node))}return r?e.allNodes().filter(i=>i.kind===r).sort(dt).map(i=>({node:i})):[]}function ea(e,t,n,r){let i=e.tryDefinition(t)?.edges?.[n];return r==="out"?i?.description:i?.inverse}function Lr(e,t,n){let r=new Map,o=[...t.values()].sort((d,s)=>d.plane-s.plane);for(let d of o)for(let s of d.aggregate?.memberIds??[])!t.has(s)&&!r.has(s)&&r.set(s,d.id);let i=d=>t.get(d)??t.get(r.get(d)??""),a=new Map,l=new Map,c=new Map;for(let d of e.allEdges()){let s=i(d.from),u=i(d.to);if(!s||!u||s.id===u.id&&!(n.overview&&s.aggregate&&s.plane===2))continue;let f=`${d.kind}:${s.id}:${u.id}`,g=a.get(f);if(g){let x=`${d.from}
|
|
1
|
+
import{a as wr,c as br}from"./chunk.2VUG6EAN.js";import{a as lo,b as co,c as uo}from"./chunk.TBG2QBOS.js";import{a as fr,e as hr,f as pr,i as wn,j as gr,l as en,m as bn,n as mr,o as yr}from"./chunk.WHTNSETN.js";import{a as cr,b as Ue,c as yn,d as ur,f as xn,g as Xt,h as so}from"./chunk.6R4EI47C.js";import{d as xr}from"./chunk.SNBIZ3B6.js";import{A as Jt,B as Oe,C as Ot,D as xt,E as Zn,G as dt,H as pn,I as Gt,K as Ut,L as gn,M as Jn,N as sr,O as Et,P as At,Q as eo,R as dr,U as to,W as Ct,Z as no,a as zn,b as Gn,ba as mn,c as Un,ca as Lt,d as rr,da as le,e as ir,f as hn,fa as It,g as Kt,h as Rt,i as Pt,j as Xn,k as qn,ka as lr,l as Yt,ra as oo,s as Qn,sa as ro,t as yt,ta as Nt,v as zt,va as io,x as ce,y as $e,ya as ao,z as ar}from"./chunk.NRRUGG22.js";import{$ as Qo,$b as tr,Fb as Te,Ha as Zo,O as Uo,Q as Xo,T as _t,V as fn,W as Vt,X as Wt,Yb as er,Z as qo,Za as Jo,dc as nr,ec as or,nb as Mt}from"./chunk.MKNXV4TM.js";import{a as De,b as be}from"./chunk.MRK6QJV5.js";import{b as ee}from"./chunk.AJZBJBMO.js";var vn=(e,t)=>e<t?-1:e>t?1:0;function Sr(e){return!e||e<=1?1:Math.min(4,Math.ceil(Math.sqrt(e)))}function kr(e,t,n){if(t===n)return 0;let r=e.kinds,o=0;for(let[i,a]of[[t,n],[n,t]]){let l=e.tryDefinition(i);for(let c of Object.values(l?.edges??{}))(c.to==="*"?r:c.to).includes(a)&&(o+=1)}return o}var vr=(e,t)=>`${Math.floor(e/5)},${Math.floor(t/5)}`;function Gi(e,t,n){if(n===0)return[{col:e,row:t}];let r=[];for(let o=0;o<n;o++)r.push({col:e+(n-o)*5,row:t+o*5}),r.push({col:e-o*5,row:t+(n-o)*5}),r.push({col:e-(n-o)*5,row:t-o*5}),r.push({col:e+o*5,row:t-(n-o)*5});return r}function fo(e,t={}){let n=[...e.kinds],r=[...(t.order??[]).filter(l=>n.includes(l)),...n.filter(l=>!(t.order??[]).includes(l)).sort(vn)].filter((l,c,d)=>d.indexOf(l)===c),o=new Map,i=new Set,a=(l,c,d)=>{o.set(l,{col:c,row:d,side:Sr(t.counts?.[l])}),i.add(vr(c,d))};for(let l of r){let c=e.tryDefinition(l)?.plot??t.plots?.[l];c&&a(l,c.col,c.row)}for(let l of r){if(o.has(l))continue;if(o.size===0){a(l,0,0);continue}let c,d=0;for(let f of[...o.keys()].sort(vn)){let g=kr(e,l,f);(g>d||g===d&&g>0&&c!==void 0&&vn(f,c)<0)&&(d=g,c=f)}let s=c?o.get(c):o.get(r.find(f=>o.has(f))),u;for(let f=1;!u&&f<64;f++)u=Gi(s.col,s.row,f).find(g=>!i.has(vr(g.col,g.row)));a(l,u?.col??s.col+5*o.size,u?.row??s.row)}return o}function ho(e,t){let n=[...t.keys()].sort(vn),r=[];for(let o=0;o<n.length;o++)for(let i=o+1;i<n.length;i++){let a=n[o],l=n[i],c=[];for(let[d,s]of[[a,l],[l,a]]){let u=e.tryDefinition(d);for(let[f,g]of Object.entries(u?.edges??{}))(g.to==="*"?e.kinds:g.to).includes(s)&&c.push(f)}c.length>0&&r.push({from:a,to:l,edges:c})}return r}function po(e){let t=1/0,n=1/0,r=-1/0,o=-1/0;for(let i of e.values())t=Math.min(t,i.col),n=Math.min(n,i.row),r=Math.max(r,i.col+i.side),o=Math.max(o,i.row+i.side);return e.size===0?{minCol:0,minRow:0,maxCol:1,maxRow:1}:{minCol:t,minRow:n,maxCol:r,maxRow:o}}function ve(e,t,n){return{x:(e-t)*n/2,y:(e+t)*n/4}}function Ui(e){if(e<3)return[];if(e%2===1){let r=(e-1)/2;return[[r,r]]}let t=e/2-1,n=e/2;return[[t,t],[n,t],[t,n],[n,n]]}function Mr(e){let t=2166136261;for(let n=0;n<e.length;n++)t=Math.imul(t^e.charCodeAt(n),16777619);return(t>>>0)%1e3/1e3}function go(e,t){let n=e.side+1,r=new Set(Ui(n).map(([c,d])=>`${c},${d}`)),o=e.side/n,i=[];for(let c=0;c<n;c++)for(let d=0;d<n;d++)r.has(`${d},${c}`)||i.push([d,c]);i.sort((c,d)=>c[0]+c[1]-(d[0]+d[1])||c[0]-d[0]);let a=t.slice(0,i.length);return{buildings:a.map((c,d)=>{let[s,u]=i[d];return{id:c,col:e.col+(s+.5)*o,row:e.row+(u+.5)*o,footprint:o*.62,height:.55+Mr(c)*.7}}),rest:Math.max(0,t.length-a.length)}}var Rr={width:1200,height:760,focusSize:{width:1200,height:420},relationSize:{width:240,height:140},contextSize:{width:300,height:104},gap:16,unit:16};var Pr=(e,t)=>e?`${e.edgeKind}|${e.direction}`:`raised|${t}`,Tt=(e,t,n)=>`${pn}${e}|${t}|${n}`;function Xi(e,t){if(!Gt(e))return null;let[n="",r="",o="",i=""]=e.slice(pn.length).split("|"),a=t.definitions.find(x=>x.kind===n),l=Wt(t,n),c=r==="raised"?null:(()=>{let x=a?.edges[r]??t.definitions.map(h=>h.edges[r]).find(Boolean);return((o==="in"?x?.inverse:x?.description)??_t(r)).toLowerCase()})(),[d="",s=""]=i.split("="),u=d.split(":")[0],f=i===""||i==="kind"||i.startsWith("more")?null:`${qo(a,u).toLowerCase()}: ${s==="none"?"none":s}`;return[i.startsWith("more")?`More ${l.toLowerCase()}`:l,[c,f].filter(Boolean).join(", ")].filter(Boolean).join(" \u2014 ")}function Sn(e,t){let n=e.map(()=>0),r=e.map((a,l)=>({size:a,index:l})).sort((a,l)=>a.size-l.size||a.index-l.index),o=Math.max(t,e.length),i=e.length;for(let{size:a,index:l}of r){let c=Math.max(1,Math.floor(o/i));n[l]=Math.min(a,c),o-=n[l],i-=1}return n}function yo(e){return Pr(e.via,e.node.kind)}function kn(e,t){let n=[],r=0;return e.forEach((o,i)=>{if(o<=0)return;if(n.length>0&&o<=r){for(let l=0;l<o;l++)n[n.length-1].push(i);r-=o;return}let a=o;for(;a>0;){let l=Math.min(t,a);n.push(Array.from({length:l},()=>i)),a-=l,r=t-l}}),n}function xo(e,t,n){let r=Sn(e,t*n);for(;kn(r,t).length>n;){let o=-1;if(r.forEach((i,a)=>{i>1&&(o<0||i>r[o])&&(o=a)}),o<0)break;r[o]=r[o]-1}return r}function qi(e,t,n){let r=o=>[t.chosen?.has(o.id)?0:1,t.hits?.has(o.id)?0:1,t.flagged?.has(o.id)?0:1,-(t.touched?.get(o.id)??0),-n.neighbors(o.id).length];return e.map((o,i)=>({node:o,index:i,key:r(o)})).sort((o,i)=>{for(let a=0;a<o.key.length;a++)if(o.key[a]!==i.key[a])return o.key[a]-i.key[a];return o.index-i.index}).map(o=>o.node)}var Qi=5,Zi=(e,t)=>{for(let n=0;n<e.length;n++)if(e[n]!==t[n])return e[n]<t[n];return!1};function Or(e,t,n){if(e.length===0||t<2)return;let r=e[0].kind,o={schema:n.schema,graph:n.graph,...n.today?{today:n.today}:{}},i=[];for(let l of Zo(n.schema,r).groups)if(l.key!==n.exclude)if(l.buckets)for(let c of["decade","year","month"])i.push({by:l.key,bucket:c});else i.push({by:l.key});let a;return i.forEach((l,c)=>{let s=xr(e,{group:l},o).groups;if(s.length<2||s.length>t)return;let f=s.filter(x=>x.key!=="").reduce((x,y)=>x+y.nodes.length,0)/e.length;if(f<.5||s.some(x=>x.nodes.length>e.length*.75))return;let g=[-Math.round(f*100),Math.abs(s.length-Qi),c];(!a||Zi(g,a.score))&&(a={grouping:{by:l.by,...l.bucket?{bucket:l.bucket}:{},groups:s},score:g})}),a?.grouping}function wo(e,t){let n=y=>({id:y.node.id,kind:y.node.kind,node:y.node,...y.via?{via:y.via}:{}});if(e.length<=t.budget)return e.map(n);let r={...t.relevance,chosen:new Set([...t.relevance?.chosen??[],...t.selection??[]])},o=new Map;for(let y of e){let h=Pr(y.via,y.node.kind),m=o.get(h);m?m.push(y):o.set(h,[y])}let i=[...o.entries()].map(([y,h])=>({key:y,run:h,via:h[0].via,kinds:[...new Set(h.map(m=>m.node.kind))],members:[],whole:!1,extra:0})),a=Sn(i.map(y=>y.run.length),t.budget);i.forEach((y,h)=>y.whole=y.run.length<=a[h]);let l=i.filter(y=>!y.whole),c=i.filter(y=>y.whole).reduce((y,h)=>y+h.run.length,0),d=Math.max(l.length,t.budget-c);for(let y of l){y.members=qi(y.run.map(m=>m.node),r,t.graph);let h=d-(l.length-1);y.kinds.length>1&&y.kinds.length<=h?y.byKind=!0:y.kinds.length===1&&(y.grouping=Or(y.members,h,{schema:t.schema,graph:t.graph,...y.via?{exclude:y.via.edgeKind}:{},...t.today?{today:t.today}:{}}))}let s=y=>y.byKind?y.kinds.length:y.grouping?y.grouping.groups.length:1;for(;l.reduce((y,h)=>y+s(h),0)>d;){let y=[...l].filter(h=>s(h)>1).sort((h,m)=>s(m)-s(h))[0];if(!y)break;y.grouping=void 0,y.byKind=!1}d-=l.reduce((y,h)=>y+s(h),0);let u=y=>y.byKind?y.kinds.some(h=>t.expanded.has(Tt(h,y.key,"kind"))):y.grouping?.groups.some(h=>t.expanded.has(Tt(y.kinds[0],y.key,mo(y.grouping,h.key)))),f=l.filter(y=>!y.grouping&&!y.byKind?!0:u(y)),g=Sn(f.map(y=>y.members.length),Math.max(0,d));f.forEach((y,h)=>y.extra=d>0?g[h]:0);let x=[];for(let y of i){let{key:h,via:m}=y;if(y.whole){x.push(...y.run.map(n));continue}let b=w=>({id:w.id,kind:w.kind,node:w,...m?{via:m}:{}}),R=new Map(y.run.map((w,M)=>[w.node.id,M])),P=(w,M,A)=>{let j=[...w.slice(0,M)].sort((F,D)=>R.get(F.id)-R.get(D.id));x.push(...j.map(b));let C=w.slice(M);if(C.length===0)return;let $=C[0].kind;x.push({id:Tt($,h,A?`more:${A}`:"more"),kind:$,...m?{via:m}:{},aggregate:{kind:$,memberIds:C.map(F=>F.id),label:M>0?`${C.length} more ${t.plural($).toLowerCase()}`:`${C.length} ${t.plural($).toLowerCase()}`,opens:{in:"picture",focus:Oe($),within:A?{filter:A}:{}}}})},O=m&&t.focusId?`${m.edgeKind}:${t.focusId}`:void 0;if(y.byKind){let w=y.kinds.find(M=>t.expanded.has(Tt(M,h,"kind")));for(let M of y.kinds){let A=y.members.filter(j=>j.kind===M);if(M===w){let j=y.extra+1;A.length<=j?x.push(...A.map(b)):P(A,j-1,O);continue}x.push({id:Tt(M,h,"kind"),kind:M,...m?{via:m}:{},aggregate:{kind:M,memberIds:A.map(j=>j.id),label:t.plural(M),opens:{in:"place"}}})}continue}let k=y.grouping;if(!k){P(y.members,y.extra,O);continue}let B=y.kinds[0],S=k.groups.find(w=>t.expanded.has(Tt(B,h,mo(k,w.key))));for(let w of k.groups){if(w===S){let M=y.members.filter(j=>w.nodes.includes(j)),A=y.extra+1;if(M.length<=A)x.push(...M.map(b));else{let j=w.key!==""&&!w.key.includes(",")&&!k.bucket,C=[O,j?`${k.by}:${w.key}`:void 0].filter(Boolean).join(",")||void 0;P(M,A-1,C)}continue}x.push({id:Tt(B,h,mo(k,w.key)),kind:B,...m?{via:m}:{},aggregate:{kind:B,memberIds:y.members.filter(M=>w.nodes.includes(M)).map(M=>M.id),label:w.label.charAt(0).toUpperCase()+w.label.slice(1),opens:{in:"place"}}})}}return x}var mo=(e,t)=>`${e.by}${e.bucket?`:${e.bucket}`:""}=${t||"none"}`;function bo(e,t,n=6){return e.x<t.x+t.width+n&&t.x<e.x+e.width+n&&e.y<t.y+t.height+n&&t.y<e.y+e.height+n}var Er=(e,t)=>ve(e.col+e.side/2,e.row+e.side/2,t);function vo(e,t,n,r,o={},i={}){let a={};for(let L of e)a[L.kind]=L.count;let l=fo(t,{...i.order?{order:i.order}:{},counts:a,...i.plots?{plots:i.plots}:{}}),c=o.left??0,d=r.width-c-(o.right??0),s=c+d/2,u=r.height*.53,f=po(l),g=[ve(f.minCol,f.minRow,1),ve(f.maxCol,f.minRow,1),ve(f.minCol,f.maxRow,1),ve(f.maxCol,f.maxRow,1)],x=Math.min(...g.map(L=>L.x)),y=Math.max(...g.map(L=>L.x)),h=Math.min(...g.map(L=>L.y)),m=Math.max(...g.map(L=>L.y)),b={x:Math.max(1,y-x),y:Math.max(.5,m-h)},R=Math.max(40,d-n.width*1.1),P=Math.max(24,r.height*.62-n.height*1.1),O=Math.max(18,Math.min(160,R/b.x,P/b.y)),k=i.scale??1,B=i.minHeight??0,S=i.avoid??[],w=0,M=(L,Y,v=1,N={x:0,y:0})=>{let T=s-(x+y)/2*L+N.x+w,G=u-(h+m)/2*L+N.y,H={width:n.width*Y,height:n.height*Y},re=e.map(J=>Er(l.get(J.kind),L).y),ie=Math.max(...re),de=Math.min(...re);return e.map(J=>{let Ce=l.get(J.kind),ke=Er(Ce,L),et=ie===de?.5:(ke.y-de)/(ie-de),Ke=.85+et*.45,U=H.width*Ke,Le=Math.max(B,H.height*Ke),tt=Le+(J.marquee??0)+(J.opened>0?Math.max(J.openedMin??0,J.opened*v):0);return{id:J.id,x:T+ke.x-U/2,y:G+ke.y-Le/2,width:U,height:tt,depth:1-et*.65,plot:Ce}})},A=L=>L.some((Y,v)=>L.some((N,T)=>T!==v&&bo(Y,N)))||L.some(Y=>S.some(v=>bo(Y,v))),j=L=>{if(S.length===0)return[{x:0,y:0}];let Y=Math.max(...S.map(T=>T.width))/2+L,v=Math.max(...S.map(T=>T.height))/2+L/2,N=[{x:0,y:0}];for(let T of[.5,.75,1,1.25]){let G=Y*T,H=v*T;N.push({x:G,y:0},{x:-G,y:0},{x:0,y:H},{x:0,y:-H},{x:G,y:H},{x:-G,y:H},{x:G,y:-H},{x:-G,y:-H})}return N},C=r.width-(o.right??0),$=L=>L.reduce((Y,v)=>{let N=Math.max(0,Math.min(v.x+v.width,r.width)-Math.max(v.x,0)),T=Math.max(0,Math.min(v.y+v.height,r.height)-Math.max(v.y,0));return Y+v.width*v.height-N*T},0),F=(L,Y,v)=>{let N,T;for(let G of j(L)){let H=M(L,Y,v,G);if(A(H)){T??={placed:H,shift:G};continue}let re=$(H);(!N||re<N.off-.5)&&(N={placed:H,shift:G,off:re})}return N??T},D=O,K=k,z=1,V=F(D,K,z);for(;A(V.placed)&&K>1.001;)K=Math.max(1,K-.05),V=F(D,K,z);for(;A(V.placed)&&z>.3;)z=Math.max(.3,z-.1),V=F(D,K,z);if(A(V.placed)||$(V.placed)>0){let L=A(V.placed)?void 0:{cell:D,settled:V,off:$(V.placed)};for(let Y=.9;Y>=.3;Y-=.1){let v=O*Y,N=F(v,K,z);if(A(N.placed))continue;let T=$(N.placed);if((!L||T<L.off-.5)&&(L={cell:v,settled:N,off:T}),T===0)break}L&&(D=L.cell,V=L.settled)}for(let L=0;A(V.placed)&&L<80;L++)D*=1.06,V=F(D,K,z);if(S.length===0){let L=Math.min(...V.placed.map(N=>N.x)),Y=Math.max(...V.placed.map(N=>N.x+N.width)),v=Y-L>C-c?0:L<c?c-L:Y>C?C-Y:0;if(v!==0){w=v;let N=M(D,K,z,V.shift);A(N)?w=0:V={placed:N,shift:V.shift}}}i.zoom&&i.zoom!==1&&(D*=i.zoom,w*=i.zoom,V=F(D,K,z));let ge=V.placed,me=s-(x+y)/2*D+V.shift.x+w,X=u-(h+m)/2*D+V.shift.y,oe={cell:D,originX:me,originY:X,pan:i.pan??{x:0,y:0},extent:{x:me+x*D,y:X+h*D,width:b.x*D,height:b.y*D},openedShare:z};return{placed:ge,frame:oe,map:l}}function wt(e){let t={x:e.width*.45,y:e.height*.45};if(!e.city)return t;let{extent:n}=e.city,r=24;return{x:Math.max(t.x,n.x+n.width-e.width+r,-n.x+r),y:Math.max(t.y,n.y+n.height-e.height+r,-n.y+r)}}var Mn=48;function So(e){if(!e.city)return[];let{width:t,height:n}=e,r=[];for(let o of e.nodes){if(!o.id.startsWith("kind:")||Math.round(o.plane)!==2)continue;let i=o.x+o.width/2,a=o.y+o.height/2,l=i<0?"left":i>t?"right":a<0?"top":a>n?"bottom":null;if(!l)continue;let c=l==="left"||l==="right",d=c?Math.max(0,Math.min(n,a)):Math.max(0,Math.min(t,i)),s=(g,x)=>g<x/4?x/4-g:g>x*3/4?x*3/4-g:0,u=(g,x)=>g<Mn?Mn-g:g>x-Mn?x-Mn-g:0,f=c?{x:s(i,t),y:u(a,n)}:{x:u(i,t),y:s(a,n)};r.push({id:o.id,kind:o.id.slice(5),side:l,along:d,by:f})}return r}function ko(e,t,n,r,o){return{x:e.x+(n.x-e.x-t.x-r.x)*(1-o),y:e.y+(n.y-e.y-t.y-r.y)*(1-o)}}var Ji={rankOf:()=>{},parentOf:()=>{}};function Ar(e,t){if(t.size===0)return Ji;let n=e.kinds,r=new Map,o=(d,s)=>{d!==s&&((r.get(d)??r.set(d,new Set).get(d)).add(s),(r.get(s)??r.set(s,new Set).get(s)).add(d))};for(let d of n){let s=e.tryDefinition(d);if(s)for(let u of Object.values(s.edges??{})){let f=u.to==="*"?n:u.to;for(let g of f)o(d,g)}}let i=new Map,a=new Map,l=[...t].filter(d=>n.includes(d));for(let d of l)i.set(d,0);let c=0;for(;l.length>0;){c+=1;let d=[];for(let s of[...l].sort((u,f)=>n.indexOf(u)-n.indexOf(f)))for(let u of[...r.get(s)??[]].sort((f,g)=>n.indexOf(f)-n.indexOf(g)))i.has(u)||(i.set(u,c),c===2&&a.set(u,s),d.push(u));l=d}return{rankOf:d=>{let s=i.get(d);if(s!==0)return s===1?"primary":"secondary"},parentOf:d=>a.get(d)}}function Cr(e,t,n,r,o={}){if(n){let i=new Map;for(let a of e.allEdges()){if(r&&a.kind!==r)continue;let l=a.from===n.id?a.to:a.to===n.id?a.from:null;if(l===null||l===n.id)continue;let c=e.getNode(l);if(!c||i.has(l))continue;let d=a.from===n.id?"out":"in",s=d==="out"?n.kind:c.kind,u=ea(t,s,a.kind,d);i.set(l,{node:c,via:{edgeKind:a.kind,direction:d,...u?{description:u}:{}}})}if(i.size>0){let a=l=>`${l.via.edgeKind}|${l.via.description??""}`;return[...i.values()].sort((l,c)=>(a(l)<a(c)?-1:a(l)>a(c)?1:0)||dt(l.node,c.node))}}if(n){let i=o[n.id]??[],a=new Set,l=[];for(let c of i){if(c===n.id||a.has(c))continue;let d=e.getNode(c);d&&(r&&r!=="judges"&&d.kind!==r||(a.add(c),l.push({node:d,via:{edgeKind:"judges",direction:"out",description:"what it finds wrong"}})))}if(l.length>0)return l.sort((c,d)=>dt(c.node,d.node))}return r?e.allNodes().filter(i=>i.kind===r).sort(dt).map(i=>({node:i})):[]}function ea(e,t,n,r){let i=e.tryDefinition(t)?.edges?.[n];return r==="out"?i?.description:i?.inverse}function Lr(e,t,n){let r=new Map,o=[...t.values()].sort((d,s)=>d.plane-s.plane);for(let d of o)for(let s of d.aggregate?.memberIds??[])!t.has(s)&&!r.has(s)&&r.set(s,d.id);let i=d=>t.get(d)??t.get(r.get(d)??""),a=new Map,l=new Map,c=new Map;for(let d of e.allEdges()){let s=i(d.from),u=i(d.to);if(!s||!u||s.id===u.id&&!(n.overview&&s.aggregate&&s.plane===2))continue;let f=`${d.kind}:${s.id}:${u.id}`,g=a.get(f);if(g){let x=`${d.from}
|
|
2
2
|
${d.to}`,y=l.get(f);if(y.has(x))continue;if(y.add(x),c.get(f).push({from:d.from,to:d.to}),g.single){let{single:h,...m}=g;a.set(f,m)}continue}l.set(f,new Set([`${d.from}
|
|
3
3
|
${d.to}`])),c.set(f,[{from:d.from,to:d.to}]),a.set(f,{id:f,kind:d.kind,from:s.id,to:u.id,edges:[{from:d.from,to:d.to}],single:{from:d.from,to:d.to},...s.id===u.id?{loop:!0}:{},x1:s.x+s.width/2,y1:s.y+s.height/2,x2:u.x+u.width/2,y2:u.y+u.height/2})}return[...a.values()].map(d=>({...d,edges:c.get(d.id)})).sort(dt)}var Tr=.85,Ir=60,Rn=160,$r=2,na=240,oa=300,ra=52,Nr=60;function ia(e,t,n,r,o,i=Tr){let a=e*t.width+Math.max(0,e-1)*n,l=Math.max(n,(r-a)/2);return Array.from({length:e},(c,d)=>({x:l+d*(t.width+n),y:o,depth:i}))}function aa(e,t,n,r,o){let i=e*t.width+Math.max(0,e-1)*n,a=Math.max(n,(r-i)/2);return Array.from({length:e},(l,c)=>({x:a+c*(t.width+n),y:o}))}function Pn(e,t,n,r={}){let o={...Rr,...r},i=Math.max(8,o.unit??16)/16,a=o.inset?.left??0,l=o.width-a-(o.inset?.right??0),c=[],d=new Map,s=p=>n.past===!0||Uo(t.tryDefinition(p.kind),p,o.today),u=new Set(r.hiddenKinds??[]),f=p=>!u.has(p.kind),g=n.focusId?xt(n.focusId).filter(p=>t.tryDefinition(p)!==void 0).filter(p=>!u.has(p)):[];n.focusId&&xt(n.focusId).length>0&&g.length===0&&(n={...n,focusId:null});let x=n.focusId?e.getNode(n.focusId):void 0;x&&!f(x)&&(n={...n,focusId:null},g=[]);let y=g.length>0?[...e.allNodes()].filter(p=>g.includes(p.kind)).sort(dt):[],h=y.filter(f).filter(s),m=y.length-h.length,b=n.focusId&&g.length===0?e.getNode(n.focusId):void 0,R=n.zoom===!0&&!n.overview&&n.focusId!==null,P=Math.max(56,o.height*.062),O=Math.min(o.height*.895,o.height-P),k=R?b!==void 0?{focusY:o.height*.03,focusH:o.height*.58,relationY:o.height*.645,relationH:o.height*.2,contextY:O,contextH:P}:{focusY:o.height*.03,focusH:o.height*.71,relationY:o.height*.765,relationH:o.height*.1,contextY:O,contextH:P}:b===void 0?{focusY:o.height*.045,focusH:o.height*.62,relationY:o.height*.68,relationH:o.height*.2,contextY:o.height*.918,contextH:o.height*.082}:(()=>{let p=o.height,I=p*.04,W=Math.max(p*.42,Math.min(p*.56,300)),Q=I+W+p*.06;return{focusY:I,focusH:W,relationY:Q,relationH:Math.max(p*.12,p*.878-p*.068-Q),contextY:p*.878,contextH:p*.092}})(),B=p=>Math.min(o.gap*p,Math.round(l*.1)),S=R?Math.min(880,l-B(5)):Math.min(700,l-B(6)),w=R?l-B(5):Math.min(o.focusSize.width,l-B(6)),M=(p,I,W)=>({width:p===0?I:Math.min(I,(l-o.gap*(p+1))/p),height:W}),A=(p,I,W)=>{let Q=M(p,I,W),we=Math.min(I,Rn*i,l-o.gap*2);return Q.width>=we?Q:{width:we,height:W}},j=p=>Math.max(1,Math.floor((l-o.gap)/(Math.min(p,Rn*i,l-o.gap*2)+o.gap))),C=new Set(n.expanded),$=n.overview?[]:Cr(e,t,b,n.relation,o.judged).filter(p=>f(p.node)).filter(p=>s(p.node)),F=$.length>0?k.focusH:k.contextY-k.focusY-o.gap*2,D=w,K=o.height,z=Math.min(l*.5/D,o.height*.48/K),V=D*z,ge=K*z,me=new Set(r.plainGroups??[]),X=n.overview&&!b&&g.length>0&&n.focusId!==null,oe=X&&g.length>0&&g.every(p=>me.has(p));if(X)for(let p of g)oe?C.add(ce(p)):C.delete(ce(p));let L=X&&!oe&&g.length===1?g[0]:void 0,Y=L?r.screens?.[L]??[]:[],v=Y.find(p=>p.as===n.within?.view)??Y[0],N=L!==void 0&&v!==void 0,T;n.overview&&(b||g.length>0)&&n.focusId&&!oe?(T={x:a+(l-V)/2,y:o.height*.53-ge/2,width:V,height:ge},Zt({id:n.focusId,kind:b?b.kind:g[0],plane:0,x:T.x,y:T.y,width:V,height:ge,natural:{width:D,height:K},...b?{}:{aggregate:{kind:g.join("+"),memberIds:h.map(p=>p.id),label:r.plurals?.[n.focusId]??g.map(p=>Vt(t,p)).join(" and "),...m>0?{retired:m}:{}}}})):n.overview||(b?Zt({id:b.id,kind:b.kind,plane:0,x:a+(l-S)/2,y:k.focusY,width:S,height:F}):g.length>0&&n.focusId&&Zt({id:n.focusId,kind:g[0],plane:0,x:a+(l-w)/2,y:k.focusY,width:w,height:F,aggregate:{kind:g.join("+"),memberIds:h.map(p=>p.id),label:r.plurals?.[n.focusId]??g.map(p=>Vt(t,p)).join(" and "),...m>0?{retired:m}:{}}}));let G=26,H=52,re=22,ie=Math.round(o.relationSize.width*.75),de=Math.max(1,Math.floor((l-o.gap)/(ie+o.gap))),J=o.unit/16,Ce=Math.max(2,Math.floor((k.relationH+o.gap)/(G*J+o.gap))),ke=$.length>de*Ce,et={schema:t,graph:e,focusId:b?.id,expanded:C,...o.relevance?{relevance:o.relevance}:{},...n.selection?{selection:n.selection}:{},plural:p=>Vt(t,p),...o.today?{today:o.today}:{}},Ke=ke?Math.max(o.gap,re*J):o.gap,U,Le;if(!ke)U=$.map(p=>({id:p.node.id,kind:p.node.kind,node:p.node,...p.via?{via:p.via}:{}})),Le=Array.from({length:Math.max(1,Math.ceil(U.length/de))},(p,I)=>Array.from({length:Math.min(de,U.length-I*de)},(W,Q)=>I*de+Q));else{let p=Math.max(1,Math.floor((k.relationH+Ke)/(H*J+Ke))),I=new Map;for(let he of $){let ye=yo(he),Ge=I.get(ye);Ge?Ge.push(he):I.set(ye,[he])}let W=xo([...I.values()].map(he=>he.length),de,p),Q=[...I.values()].map((he,ye)=>wo(he,{...et,budget:W[ye]}));U=Q.flat();let we=Q.map((he,ye)=>Q.slice(0,ye).reduce((Ge,jt)=>Ge+jt.length,0)),st=Q.map(()=>0);Le=kn(Q.map(he=>he.length),de).map(he=>he.map(ye=>we[ye]+st[ye]++))}let tt=Le.length,nt=tt===1?k.relationH:(k.relationH-Ke*(tt-1))/tt,He=M(Math.max(...Le.map(p=>p.length),1),U.length<=2?Math.round(o.relationSize.width*1.35):o.relationSize.width,nt),Je=[];Le.forEach((p,I)=>{let W=aa(p.length,He,o.gap,l,k.relationY+I*(nt+Ke));p.forEach((Q,we)=>Je[Q]={...W[we],x:W[we].x+a})}),U.forEach((p,I)=>{let W=Je[I];Zt({id:p.id,kind:p.kind,plane:1,x:W.x,y:W.y,width:He.width,height:He.height,...p.via?{via:p.via}:{},...p.aggregate?{aggregate:p.aggregate}:{},...ke&&!p.aggregate?{compact:!0}:{}})});let ft=new Set(d.keys());for(let p of h)ft.add(p.id);let Ne=new Map;for(let p of e.allNodes()){let I=Ne.get(p.kind);I?I.push(p):Ne.set(p.kind,[p])}let ht=new Set(g.length>0?g:b?[b.kind]:[]),pt=[];for(let p of t.kinds){if(u.has(p))continue;let I=Ne.get(p)??[],W=I.filter(s);pt.push({id:ce(p),kind:p,members:W.sort(dt),retired:I.length-W.length,...ht.has(p)?{focused:!0}:{}})}for(let p of pt)p.kind===n.relation&&(p.raised=!0);pt.sort(dt);let Ye=Ar(t,ht),ot=!n.overview&&t.kinds.some(p=>Ye.rankOf(p)==="primary"),Ie=[];for(let p of pt)if(!n.overview&&C.has(p.id)&&p.members.length>0)for(let I of p.members)Ie.push({id:I.id,kind:I.kind});else{let I=ot?Ye.rankOf(p.kind):void 0,W=I==="secondary"?Ye.parentOf(p.kind):void 0;Ie.push({id:p.id,kind:p.kind,...p.raised?{raised:!0}:{},...p.focused?{focused:!0}:{},...n.overview&&C.has(p.id)?{opened:!0}:{},...I?{rank:I}:{},...W&&!C.has(ce(W))?{nestedUnder:ce(W)}:{},aggregate:{kind:p.kind,memberIds:p.members.map(Q=>Q.id),label:r.plurals?.[p.kind]??Vt(t,p.kind),...p.retired>0?{retired:p.retired}:{}}})}let St=2;if(Ie.length<=j((R?240:o.contextSize.width)*i))for(let p of Ie)delete p.nestedUnder;let xe=new Map;for(let p of Ie){if(p.nestedUnder===void 0)continue;let I=xe.get(p.nestedUnder)??0;I>=St?delete p.nestedUnder:xe.set(p.nestedUnder,I+1)}let rt=Ie.filter(p=>p.nestedUnder!==void 0),Me=Ie.filter(p=>p.nestedUnder===void 0),gt=j((R?240:o.contextSize.width)*i),mt=!n.overview&&Me.length>gt,kt=Math.max(0,gt-1),E=p=>p.focused?0:p.raised?1:2,ae=new Set([...Me].map((p,I)=>({item:p,at:I})).sort((p,I)=>E(p.item)-E(I.item)||p.at-I.at).slice(0,kt).map(({item:p})=>p.id)),fe=new Set(mt?Me.filter(p=>!ae.has(p.id)).map(p=>p.id):[]),Re=rt.filter(p=>!fe.has(p.nestedUnder)),it=rt.filter(p=>fe.has(p.nestedUnder)),at=mt?[...Me.filter(p=>ae.has(p.id)),{id:ar,kind:"",beyond:[...Me.filter(p=>fe.has(p.id)),...it].map(p=>p.kind)}]:Me,ze=n.overview?{width:Math.min(220,l/6.5),height:Math.min(92,o.height*.125)}:A(at.length,(R?240:o.contextSize.width)*i,k.contextH),je=n.overview?vo(at.map(p=>({id:p.id,kind:p.kind,count:p.aggregate?.memberIds.length??0,opened:C.has(p.id)?At(Et(p.aggregate?.memberIds.length??0))*i:0,openedMin:C.has(p.id)?At(Math.min(Jn,Et(p.aggregate?.memberIds.length??0)))*i:0,...(r.screens?.[p.kind]?.length??0)>0?{marquee:Ut((r.screens?.[p.kind]??[]).map(I=>I.title),Rn*i,r.nameWidth)*i}:{}})),t,ze,{width:o.width,height:o.height},o.inset??{},{...o.cityOrder?{order:o.cityOrder}:{},...o.plots?{plots:o.plots}:{},scale:i,minHeight:Ir*i,...r.cityZoom&&r.cityZoom!==1?{zoom:r.cityZoom}:{},pan:{x:n.pan?.x??0,y:n.pan?.y??0},...T&&!N?{avoid:[T]}:{}}):null,an=new Map(je?.placed.map(p=>[p.id,p.plot])??[]),Ht=je?je.placed.map(({x:p,y:I,depth:W,width:Q,height:we})=>({x:p,y:I,depth:W,width:Q,height:we})):ia(at.length,ze,o.gap,l,k.contextY,R?.97:Tr).map(p=>({...p,x:p.x+a})),_i=.74,sn=.8,Vi=52*i,Wi=86*i,_n=(p,I)=>Math.min(1,p+(1-p)*I),Vn=new Map;at.forEach((p,I)=>{let W=Ht[I],Q=W.width??ze.width,we=W.height??ze.height,st=p.rank==="secondary"?_i:1,he=Math.max(Math.min(Q,Rn*i),Q*st),ye=Math.max(Ir*i,we*st);Vn.set(p.id,{x:W.x+(Q-he)/2,y:W.y+(we-ye),depth:p.rank==="secondary"?_n(W.depth,.5):W.depth,width:he,height:ye})});let dn=[],ln=Ht[Ht.length-1],Wn=new Map;for(let p of Re)Wn.set(p.nestedUnder,(Wn.get(p.nestedUnder)??0)+1);let _o=new Map;for(let p of Re){let I=Vn.get(p.nestedUnder);if(I){let W=Wn.get(p.nestedUnder)??1,Q=_o.get(p.nestedUnder)??0;_o.set(p.nestedUnder,Q+1);let we=.98,st=ze.width*sn,he=Math.max(Wi,Math.min(st,I.width/(we*(W-1)+1))),ye=Math.max(Vi,ze.height*sn*(he/st)),Ge=he*we,jt=(W-1)*Ge+he;dn.push({...p,x:I.x+(I.width-jt)/2+Q*Ge,y:Math.max(0,I.y-ye+Math.min(ye*.5,16)),width:he,height:ye,depth:_n(I.depth,.8)})}else if(ln){let W=ze.width*sn,Q=ze.height*sn;dn.push({...p,x:ln.x,y:ln.y,width:W,height:Q,depth:_n(ln.depth??1,.8)})}}for(let p of at)dn.push({...p,...Vn.get(p.id)});if(dn.forEach(p=>{Zt({id:p.id,kind:p.kind,plane:2,x:p.x,y:p.y,width:p.width,height:p.height,...p.aggregate?{aggregate:p.aggregate}:{},...p.raised?{raised:!0}:{},...p.focused?{focused:!0}:{},...p.opened?{opened:!0}:{},...p.opened?{openedRows:Math.max(1,Math.floor((Math.max(At(Math.min(Jn,Et(p.aggregate?.memberIds.length??0))),At(Et(p.aggregate?.memberIds.length??0))*(je?.frame.openedShare??1))-sr)/gn))}:{},...p.rank?{rank:p.rank}:{},...p.nestedUnder?{nestedUnder:p.nestedUnder}:{},...p.beyond?{beyond:p.beyond}:{},...an.has(p.id)?{plot:an.get(p.id)}:{},depth:p.depth})}),N&&je&&T&&n.focusId){let p=je.frame,I=je.map.get(L),W=v?.across?je.map.get(v.across):void 0;if(I){let we=(Z=>{let Ee=ve(Z.col,Z.row,p.cell),Pe=ve(Z.col+Z.side/2,Z.row+Z.side/2,p.cell);return{top:{x:p.originX+Ee.x,y:p.originY+Ee.y},center:{x:p.originX+Pe.x,y:p.originY+Pe.y}}})(I),st=we.center.x,he=we.top.y+p.cell*.1,ye=o.screenHeight!==void 0&&o.screenHeight>0?Math.min(K,Math.max(na,Math.round(o.screenHeight))):K,Ge=ye/D,jt=Math.max(1,(r.cityZoom??1)/1.5),Ki=l*.78*jt,Vo=o.height*.72*jt,Kn=Math.min(oa*i,l*.5),cn=Math.max(Kn,Math.min(Ki,I.side*p.cell*2.4));cn*Ge>Vo&&(cn=Vo/Ge);let Yi=[...d.values()].filter(Z=>Z.plane===2&&Z.id!==ce(L)),Wo=Z=>{let Ee=Z*Ge,Pe=he-Ee;return{x:st-Z/2,y:Pe,width:Z,height:Ee}},Bt=Wo(cn),zi=Z=>Yi.some(Ee=>{let Pe={x:Ee.x-(n.pan?.x??0)-Nr*i,y:Ee.y-(n.pan?.y??0),width:Ee.width+Nr*i*2,height:Ee.height+ra*i};return Z.x<Pe.x+Pe.width&&Pe.x<Z.x+Z.width&&Z.y<Pe.y+Pe.height&&Pe.y<Z.y+Z.height});for(let Z=cn;zi(Bt)&&Z>Kn+1;Z=Math.max(Kn,Z*.92))Bt=Wo(Z);let un=c.findIndex(Z=>Z.id===n.focusId);if(un!==-1){let Z={x:Bt.x,y:Bt.y},Ee=n.pins[c[un].id],Pe=Ee?{x:Ee.x-Z.x,y:Ee.y-Z.y}:{x:0,y:0},Ko=Math.hypot(Pe.x,Pe.y),Yo=$r*p.cell,zo=Ko>Yo?Yo/Ko:1,Go={x:Z.x+Pe.x*zo,y:Z.y+Pe.y*zo},Yn={...c[un],x:Go.x+(n.pan?.x??0),y:Go.y+(n.pan?.y??0),width:Bt.width,height:Bt.height,natural:{width:D,height:ye},screenOf:L,...Ee?{pinned:!0}:{}};c[un]=Yn,d.set(Yn.id,Yn)}}}return{nodes:c,connectors:Lr(e,d,n),width:o.width,height:o.height,...je?{city:je.frame}:{}};function Zt(p){let I=n.pins[p.id],W=I?{...p,x:I.x,y:I.y,pinned:!0}:{...p,pinned:!1},Q=n.pan?{...W,x:W.x+n.pan.x,y:W.y+n.pan.y}:W;c.push(Q),d.set(Q.id,Q)}}function Mo(e,t,n){let r=e.nodes.find(l=>l.id===t);if(!r||r.screenOf!==void 0)return null;let o={...r,x:n.x,y:n.y,pinned:!0},i=o.x+o.width/2,a=o.y+o.height/2;return{...e,nodes:e.nodes.map(l=>l.id===t?o:l),connectors:e.connectors.map(l=>l.from===t?{...l,x1:i,y1:a}:l.to===t?{...l,x2:i,y2:a}:l)}}function Ro(e,t){return t.x===0&&t.y===0?e:{...e,nodes:e.nodes.map(n=>({...n,x:n.x+t.x,y:n.y+t.y})),connectors:e.connectors.map(n=>({...n,x1:n.x1+t.x,y1:n.y1+t.y,x2:n.x2+t.x,y2:n.y2+t.y})),...e.city?{city:{...e.city,pan:{x:t.x,y:t.y}}}:{}}}var pe=(e,t,n)=>e+(t-e)*n;function Dr(e){return{x:e.x+e.width/2,y:e.y+e.height/2}}var Fr=new WeakMap;function sa(e){let t=Fr.get(e);if(t)return t;let n=new Map,r=new Map;for(let o of e.nodes){n.set(o.id,o);for(let i of o.aggregate?.memberIds??[]){let a=r.get(i);a?a.push(o):r.set(i,[o])}}return t={byId:n,groupsOf:r},Fr.set(e,t),t}var Hr=new WeakMap;function jr(e,t){let n=Hr.get(t);if(n||Hr.set(t,n=new WeakMap),n.has(e))return n.get(e);let r=da(e,t);return n.set(e,r),r}function da(e,t){let{byId:n,groupsOf:r}=sa(t);if(e.screenOf!==void 0){let a=n.get(ce(e.screenOf));if(a)return{...e,x:a.x,y:a.y,width:a.width,height:a.height}}if(Ot(e.id)||$e(e.id)!==null){let a=(e.aggregate?.memberIds??[]).map(s=>n.get(s)).filter(s=>s!==void 0);if(a.length===0)return null;let l=a.map(Dr),c=l.reduce((s,u)=>s+u.x,0)/l.length,d=l.reduce((s,u)=>s+u.y,0)/l.length;return{...e,x:c-e.width/2,y:d-e.height/2}}let o=r.get(e.id)?.find(a=>a.id===ce(e.kind)||a.id===Oe(e.kind));if(!o)return null;let i=Dr(o);return{...e,x:i.x-e.width/2,y:i.y-e.height/2}}function $t(e,t,n){let r=Math.max(0,Math.min(1,n)),o=new Map(e.nodes.map(s=>[s.id,s])),i=new Map(t.nodes.map(s=>[s.id,s])),a=[];for(let[s,u]of o){let f=i.get(s);if(f){a.push(Po(u,f,r,1));continue}let g=jr(u,t)??u;a.push(Po(u,g,r,1-r))}for(let[s,u]of i){if(o.has(s))continue;let f=jr(u,e)??u;a.push(Po(f,u,r,r))}let l=new Map(e.connectors.map(s=>[s.id,s])),c=new Map(t.connectors.map(s=>[s.id,s])),d=[];for(let[s,u]of l){let f=c.get(s);d.push(f?{...la(u,f,r),opacity:1}:{...u,opacity:1-r})}for(let[s,u]of c)l.has(s)||d.push({...u,opacity:r});return{nodes:a.filter(s=>s.opacity>0).sort((s,u)=>s.id<u.id?-1:s.id>u.id?1:0),connectors:d.filter(s=>s.opacity>0).sort((s,u)=>s.id<u.id?-1:s.id>u.id?1:0),width:pe(e.width,t.width,r),height:pe(e.height,t.height,r),t:r,...Br(e.city,t.city,r)?{city:Br(e.city,t.city,r)}:{}}}function Br(e,t,n){return e?t?{cell:pe(e.cell,t.cell,n),originX:pe(e.originX,t.originX,n),originY:pe(e.originY,t.originY,n),pan:{x:pe(e.pan.x,t.pan.x,n),y:pe(e.pan.y,t.pan.y,n)},extent:{x:pe(e.extent.x,t.extent.x,n),y:pe(e.extent.y,t.extent.y,n),width:pe(e.extent.width,t.extent.width,n),height:pe(e.extent.height,t.extent.height,n)}}:e:t}function Po(e,t,n,r){return{id:t.id,kind:t.kind,plane:pe(e.plane,t.plane,n),x:pe(e.x,t.x,n),y:pe(e.y,t.y,n),width:pe(e.width,t.width,n),height:pe(e.height,t.height,n),pinned:t.pinned,opacity:r,...t.aggregate?{aggregate:t.aggregate}:{},...t.via?{via:t.via}:{},...t.raised?{raised:!0}:{},...t.focused?{focused:!0}:{},...t.opened?{opened:!0}:{},...t.openedRows!==void 0?{openedRows:t.openedRows}:{},...t.compact?{compact:!0}:{},...t.rank?{rank:t.rank}:{},...t.nestedUnder?{nestedUnder:t.nestedUnder}:{},...t.beyond?{beyond:t.beyond}:{},...t.plot?{plot:t.plot}:{},...t.screenOf?{screenOf:t.screenOf}:{},...t.depth===void 0?{}:{depth:pe(e.depth??1,t.depth,n)},...t.natural?{natural:t.natural}:{}}}function la(e,t,n){return{...t,x1:pe(e.x1,t.x1,n),y1:pe(e.y1,t.y1,n),x2:pe(e.x2,t.x2,n),y2:pe(e.y2,t.y2,n)}}function On(e){let t=Math.max(0,Math.min(1,e));return t<.5?4*t*t*t:1-(-2*t+2)**3/2}function ca(e,t){let n=[];for(let o=0;o<e.length;o+=1){let i=e[o],a=e[(o+1)%e.length];if(i.y===a.y)continue;let l=Math.min(i.y,a.y),c=Math.max(i.y,a.y);t<l||t>=c||n.push(i.x+(t-i.y)/(a.y-i.y)*(a.x-i.x))}n.sort((o,i)=>o-i);let r={x0:0,x1:0};for(let o=0;o+1<n.length;o+=2){let i={x0:n[o],x1:n[o+1]};i.x1-i.x0>r.x1-r.x0&&(r=i)}return r}function ua(e){let t=1/0,n=-1/0;for(let r of e)r.y<t&&(t=r.y),r.y>n&&(n=r.y);return{top:t,bottom:n}}function fa(e){let t=0;for(let n=0;n<e.length;n+=1){let r=e[n],o=e[(n+1)%e.length];t+=r.x*o.y-o.x*r.y}return Math.abs(t)/2}function ha(e){let t=0,n=0,r=0;for(let o=0;o<e.length;o+=1){let i=e[o],a=e[(o+1)%e.length],l=i.x*a.y-a.x*i.y;t+=l,n+=(i.x+a.x)*l,r+=(i.y+a.y)*l}if(Math.abs(t)<1e-9){let o=e.reduce((i,a)=>({x:i.x+a.x,y:i.y+a.y}),{x:0,y:0});return{x:o.x/e.length,y:o.y/e.length}}return{x:n/(3*t),y:r/(3*t)}}function pa(e,t){let{room:n,height:r,size:o,floor:i,measure:a=eo,lines:l=2}=t,c=(y,h)=>y.every(m=>a(m,h)<=n)&&y.length*h*1.15<=r;if(c([e],o))return{lines:[e],fontSize:o,whole:!0};let d=e.split(/\s+/);if(l>1&&d.length>1){let y=1,h=1/0,m=0;for(let R=0;R<d.length-1;R+=1){m+=d[R].length+1;let P=Math.abs(m-e.length/2);P<h&&(h=P,y=R+1)}let b=[d.slice(0,y).join(" "),d.slice(y).join(" ")];if(c(b,o))return{lines:b,fontSize:o,whole:!0};for(let R=o;R>=i;R-=o*.06)if(c(b,R))return{lines:b,fontSize:R,whole:!0}}for(let y=o;y>=i;y-=o*.06)if(c([e],y))return{lines:[e],fontSize:y,whole:!0};let s=a(e,i)/Math.max(1,e.length),u=Math.floor(n/s)-1;if(u<4||i*1.15>r)return null;let f=e.slice(0,u),g=f.lastIndexOf(" ");return{lines:[`${g>3?f.slice(0,g):f}\u2026`],fontSize:i,whole:!1}}var ga=(e,t)=>e.x0<t.x1&&t.x0<e.x1&&e.y0<t.y1&&t.y0<e.y1;var q=ee(De(),1);var Fe=ee(De(),1);var ma=520;function ya(){return typeof window>"u"||!window.matchMedia?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches}function _r(e,t={}){let n=t.duration??ma,r=(t.enabled??!0)&&!ya(),o=(0,Fe.useRef)(e),[i,a]=(0,Fe.useState)(()=>$t(e,e,1)),l=(0,Fe.useRef)(i),c=(0,Fe.useRef)(null),d=(0,Fe.useRef)(null);return(0,Fe.useEffect)(()=>{if(!r||typeof requestAnimationFrame>"u"){o.current=e;let h=$t(e,e,1);if(l.current=h,a(h),typeof requestAnimationFrame>"u")return;let m=requestAnimationFrame(()=>{let b=$t(e,e,1);l.current=b,a(b)});return()=>cancelAnimationFrame(m)}let s=performance.now(),f=d.current!==null&&l.current.t<1&&s-d.current<n?d.current:s;d.current=f;let g=On(Math.min(1,(s-f)/n)),x=o.current,y=h=>{let m=Math.min(1,(h-f)/n),b=g>=1?1:(On(m)-g)/(1-g),R=$t(x,e,Math.max(0,b));l.current=R,a(R),m<1?c.current=requestAnimationFrame(y):(d.current=null,o.current=e,c.current=requestAnimationFrame(()=>{let P=$t(e,e,1);l.current=P,a(P),c.current=null}))};return c.current=requestAnimationFrame(y),()=>{c.current!==null&&cancelAnimationFrame(c.current);let h=l.current;o.current={...e,...h.city?{city:h.city}:{},nodes:h.nodes.map(m=>({...m,plane:Math.round(m.plane)})),connectors:h.connectors}}},[e,n,r]),i}function Vr(e=1100){let{store:t}=le(),[n,r]=(0,Fe.useState)(()=>new Set);return(0,Fe.useEffect)(()=>{let o=null,i=t.subscribe(a=>{r(new Set(a.touched)),o&&clearTimeout(o),o=setTimeout(()=>r(new Set),e)});return()=>{i(),o&&clearTimeout(o)}},[t,e]),n}var xa={marks:new Map,acts:[]};function Wr(e=4e3){let{store:t}=le(),[n,r]=(0,Fe.useState)(xa);return(0,Fe.useEffect)(()=>{let o=null,i=t.subscribe((a,l)=>{r(c=>{let d=new Map(c.marks),s=[...c.acts];for(let u of l){if(u.undoes!==void 0){let x=s.find(h=>h.batch===u.undoes||h.wrote.length>0),y=s.filter(h=>u.writes.some(m=>h.wrote.includes(m)));for(let h of y.length>0?y:x?[x]:[]){for(let m of h.wrote)d.delete(m);s=s.filter(m=>m.batch!==h.batch)}continue}if(u.author.kind!=="agent")continue;let f=u.author.id??"the seat";for(let x of u.writes)d.set(x,f);s.find(x=>x.batch===u.batch)?s=s.map(x=>x.batch===u.batch?{...x,wrote:[...new Set([...x.wrote,...u.writes])]}:x):s=[{batch:u.batch,who:f,intent:u.batchIntent??u.intent,at:u.at,wrote:[...u.writes]},...s].slice(0,12)}return d.size===c.marks.size&&s===c.acts&&d.size===0?c:{marks:d,acts:s}}),o&&clearTimeout(o),o=setTimeout(()=>r(c=>c.marks.size===0?c:{...c,marks:new Map}),e)});return()=>{i(),o&&clearTimeout(o)}},[t,e]),n}var Dt=ee(be(),1),Xe=16;function Kr({marks:e,questions:t=[],whereIs:n,stageRef:r,width:o,height:i}){if(e.size===0&&t.length===0)return null;let a=r.current,l=a?.getBoundingClientRect()??null,c=[];for(let[s,u]of e){let f=null;if(a&&l&&typeof CSS<"u"){let h=a.querySelector(`[data-graview-pick="${CSS.escape(s)}"]`)?.getBoundingClientRect();h&&h.width>0&&h.height>0&&(f={x:h.left-l.left,y:h.top-l.top,width:h.width,height:h.height})}if(f??=n(s),!f)continue;let g=Math.min(Math.max(f.x+f.width-Xe/2,Xe/2),o-Xe/2),x=Math.min(Math.max(f.y-Xe/4,Xe/2),i-Xe/2);c.push({id:s,who:u,x:g,y:x})}let d=[];for(let s of t){let u=n(s.id);u&&d.push({...s,x:Math.min(Math.max(u.x+u.width/2,Xe),o-Xe),y:Math.min(Math.max(u.y-Xe/2,Xe),i-Xe)})}return c.length===0&&d.length===0?null:(0,Dt.jsxs)("div",{className:"graview-seat-marks","data-testid":"seat-marks","data-graview-seat-marks":c.length,children:[c.map(({id:s,who:u,x:f,y:g})=>(0,Dt.jsx)("span",{className:"graview-seat-mark","data-testid":"seat-mark","data-graview-seat-mark":s,"data-graview-seat-who":u,title:`${u} just changed this`,"aria-hidden":"true",style:{left:f,top:g,"--graview-hue":Mt(u)},children:"\u25C6"},s)),d.map(s=>(0,Dt.jsxs)("span",{className:"graview-seat-asking","data-testid":"seat-question","data-graview-seat-asking":s.id,title:s.asks,style:{left:s.x,top:s.y},children:[(0,Dt.jsx)("span",{"aria-hidden":"true",children:"?"}),(0,Dt.jsx)("span",{className:"graview-seat-asking-said",children:s.asks})]},`asking:${s.id}`))]})}var lt=ee(De(),1);var Se=ee(be(),1);function wa(e,t,n={x:0,y:0}){let r=(o,i)=>{let a=ve(o,i,t.cell);return{x:t.originX+n.x+a.x,y:t.originY+n.y+a.y}};return[r(e.col,e.row),r(e.col+e.side,e.row),r(e.col+e.side,e.row+e.side),r(e.col,e.row+e.side)]}var Cn=e=>e.map(t=>`${t.x.toFixed(1)},${t.y.toFixed(1)}`).join(" ");function Yr({frame:e,width:t,height:n,pan:r,brand:o,pinned:i,swallowed:a,onFocus:l}){let{selection:c,store:d,emphasis:s}=le(),u=wn(),f=e.city,g=e.nodes.filter(S=>S.plot!==void 0&&Math.round(S.plane)===2),x=f?.cell??0,y=(0,lt.useRef)(l);y.current=l;let h=(0,lt.useCallback)(S=>!y.current||a?.current?!1:(y.current(S),!0),[a]),m=`${x}|${g.map(S=>`${S.id}:${S.plot.col},${S.plot.row},${S.plot.side}`).join(";")}`,b=(0,lt.useMemo)(()=>{if(!f)return[];let S={cell:x,originX:0,originY:0},w=new Map;for(let M of g){let A=$e(M.id);A!==null&&M.plot&&w.set(A,M.plot)}return ho(d.schema,w).map(M=>({...M,d:Ma(w.get(M.from),w.get(M.to),S,{x:0,y:0}).map((A,j)=>`${j===0?"M":"L"} ${A.x.toFixed(1)} ${A.y.toFixed(1)}`).join(" ")}))},[m,d.schema]),R=(0,lt.useRef)(new Map),P=new Map;for(let S of g){let w=S.aggregate?.memberIds??[],M=`${x}|${S.plot.col},${S.plot.row},${S.plot.side}|${w.join(",")}`,A=R.current.get(S.id);if(A&&A.key===M){P.set(S.id,A);continue}let j={cell:x,originX:0,originY:0},C={x:0,y:0},{buildings:$,rest:F}=go(S.plot,w),D=wa(S.plot,j,C);P.set(S.id,{key:M,tile:Cn(D),front:D[2],rest:F,buildings:$.map(K=>({id:K.id,...va(K,j,C)}))})}if(R.current=P,!f)return null;let O={position:"absolute",left:0,top:0,pointerEvents:"none",overflow:"visible"},k=c.join(`
|
|
4
4
|
`),B=u.join(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{e as l}from"./chunk.
|
|
1
|
+
import{e as l}from"./chunk.ISRS7GOT.js";import{a as P}from"./chunk.6LJ66MB7.js";import{B as f,F as E,a as h,da as O,e as V,ja as v,k as B,l as A,ma as L,sa as H,y as x,za as R}from"./chunk.NRRUGG22.js";import{Yb as g}from"./chunk.MKNXV4TM.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 _="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:_,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}=H(),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=R(P(()=>import("./chunk.Y5LPZLDE.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,4 +1,4 @@
|
|
|
1
|
-
import{a as k,b as K}from"./chunk.
|
|
1
|
+
import{a as k,b as K}from"./chunk.SNBIZ3B6.js";import{a as z,d as U}from"./chunk.6LJ66MB7.js";import{va as j,ya as W,za as _}from"./chunk.NRRUGG22.js";import{F as M,Ha as F,Q as G,U as E}from"./chunk.MKNXV4TM.js";import{a as X,b as B}from"./chunk.MRK6QJV5.js";import{b as L}from"./chunk.AJZBJBMO.js";var S=L(X(),1);var r=L(B(),1),ee=520;function re(e,n,u,a){let o=u.filters.find(d=>d.key===a.key);if(!o)return`${a.key}: ${a.value}`;if(o.about==="is")return a.value.charAt(0).toUpperCase()+a.value.slice(1);if(o.about==="edge"){if(a.value==="*")return`${o.label}: anything`;if(a.value==="none")return`${o.label}: nothing`;let d=n.getNode(a.value);return`${o.label}: ${d?G(e.tryDefinition(d.kind),d):a.value}`}if(o.type==="date"){let[d,g]=a.value.split(":");return`${o.label} ${d} ${g?M(g):""}`.trim()}if(o.type==="boolean")return`${o.label}: ${a.value==="true"?"yes":"no"}`;if(o.type==="number"){let d=a.value.lastIndexOf(":"),g=a.value.slice(0,Math.max(0,d));if(g==="at-most"||g==="at-least")return`${o.label}: ${g==="at-most"?"at most":"at least"} ${E(e.tryDefinition(u.kind),o.key,Number(a.value.slice(d+1)))}`}return o.type==="text"?`${o.label}: ${a.value}`:`${o.label}: ${E(e.tryDefinition(u.kind),o.key,a.value)}`}var I=e=>/^[A-Z][a-z]/.test(e)?e.charAt(0).toLowerCase()+e.slice(1):e;function ne(e){return e?.type==="date"?{asc:"Earliest first",desc:"Latest first"}:e?.type==="number"?{asc:"Lowest first",desc:"Highest first"}:e?.type==="boolean"?{asc:"No first",desc:"Yes first"}:e?.type==="choice"?{asc:"In their order",desc:"In reverse order"}:{asc:"A to Z",desc:"Z to A"}}var $=_(z(()=>import("./chunk.PFQFPJ5L.js"))),x=$.part((e,n)=>(0,r.jsx)(e.ArrangeLists,{...n}),{what:"This list",quiet:!0}),fe=()=>$.load(),O=new Map;function ye(e){let{schema:n,graph:u,kind:a,arrangement:o,onChange:d}=e,g=F(n,a),s=e.testId??"arrange",c=k(e.allow,"sort")&&g.sorts.length>1,f=k(e.allow,"group")&&g.groups.length>0,m=k(e.allow,"filter")&&g.filters.length>0,R=e.query!==!1&&e.allow!==!1,v=te(e.noun,e.kept);if(!c&&!f&&!m&&!R&&!v)return null;let D=t=>JSON.stringify(K(t)),N=`${s}|${a}`,p={current:O.get(N)??{words:new Set,latest:null,at:0}};O.set(N,p.current),p.current.latest&&Date.now()-p.current.at>1500&&!p.current.words.has(D(o))&&(p.current={words:new Set,latest:null,at:0},O.set(N,p.current));let i=p.current.latest??o,h=t=>{let l={...p.current.latest??o,...t};for(let w of Object.keys(l))l[w]===void 0&&delete l[w];p.current.latest=l,p.current.at=Date.now(),p.current.words.add(D(l)),d(l)},y=i.filter??[],P=t=>{let l=y.filter((w,Q)=>Q!==t);h({filter:l.length>0?l:void 0})},T=t=>y.some(l=>l.key===t.key&&l.value===t.value),Y=t=>T(t)?P(y.findIndex(l=>l.key===t.key&&l.value===t.value)):h({filter:[...y,t]}),C=i.sort?g.sorts.find(t=>t.key===i.sort.by):void 0,q=i.group?g.groups.find(t=>t.key===i.group.by):void 0,Z=ne(C),b={schema:n,graph:u,offers:g,arrangement:i,set:h,toggle:Y,has:T,testId:s},V=i.sort?(0,r.jsxs)(r.Fragment,{children:["Sorted by ",I(C?.label??i.sort.by),(0,r.jsx)("span",{"aria-hidden":"true",children:i.sort.direction==="desc"?" \u2193":" \u2191"})]}):"Sort",J=i.group?.bucket&&q?.buckets?`, a ${i.group.bucket} each`:"",H=i.group?`Grouped by ${I(q?.label??i.group.by)}${J}`:"Group";return(0,r.jsxs)("div",{"data-testid":`${s}-bar`,role:"group","aria-label":"Arrange",className:"graview-arrange",style:e.style,onPointerEnter:$.prefetch,onFocus:$.prefetch,children:[(0,r.jsx)("style",{children:ie}),(0,r.jsxs)("div",{className:"graview-arrange-line",children:[v?(0,r.jsxs)("span",{className:"graview-arrange-count","data-testid":`${s}-count`,children:[v.kept?(0,r.jsx)("span",{"data-testid":`${s}-kept`,children:v.kept}):null,v.words]}):null,c?(0,r.jsx)("span",{className:"graview-arrange-part graview-arrange-one",children:(0,r.jsx)(A,{testId:`${s}-sort`,value:i.sort?.by??"",set:i.sort!==void 0,label:"Sort",name:i.sort?`Sorted by ${I(C?.label??i.sort.by)}, ${Z[i.sort.direction].toLowerCase()}`:"Sort",list:t=>(0,r.jsx)(x,{which:"sort",done:t,...b}),children:V})}):null,f?(0,r.jsx)("span",{className:"graview-arrange-part graview-arrange-one",children:(0,r.jsx)(A,{testId:`${s}-group`,value:i.group?.by??"",set:i.group!==void 0,label:"Group",name:H,list:t=>(0,r.jsx)(x,{which:"group",done:t,...b}),children:H})}):null,m?(0,r.jsx)("span",{className:"graview-arrange-part graview-arrange-one",children:(0,r.jsx)(A,{testId:`${s}-add`,value:"",set:!1,label:"Filter",name:y.length>0?`Filter \u2014 ${y.length} on`:"Filter",list:t=>(0,r.jsx)(x,{which:"filter",done:t,...b}),children:"Filter"})}):null,c||f||m?(0,r.jsx)("span",{className:"graview-arrange-part graview-arrange-all",children:(0,r.jsx)(A,{testId:`${s}-all`,value:"",set:!1,label:"Arrange",name:"Arrange: sort, group and filter",list:t=>(0,r.jsx)(x,{which:"all",done:t,parts:{sort:c,group:f,filter:m},...b}),children:"Arrange"})}):null,y.map((t,l)=>{let w=re(n,u,g,t);return(0,r.jsxs)("span",{className:"graview-arrange-token","data-testid":`${s}-condition`,children:[w,(0,r.jsx)("button",{type:"button","aria-label":`Remove: ${w}`,title:"Remove",onClick:()=>P(l),children:"\xD7"})]},`${t.key}:${t.value}`)}),R?(0,r.jsxs)("label",{className:"graview-arrange-words-at",children:[(0,r.jsx)("span",{style:U,children:"Find"}),(0,r.jsx)("input",{type:"search",className:"graview-arrange-words","data-testid":`${s}-query`,value:i.query??"",placeholder:"Find\u2026",onChange:t=>h({query:t.target.value.length>0?t.target.value:void 0})})]}):null]})]})}function te(e,n){if(!n)return null;let u=n.shown!==n.of;if(!e)return u?{words:"",kept:`${n.shown} of ${n.of}`}:null;let a=n.of===1?e.one:e.many;return u?{words:` ${a}`,kept:`${n.shown} of ${n.of}`}:{words:`${n.of} ${a}`}}function A({testId:e,value:n,set:u,label:a,name:o,list:d,children:g}){let s=W("arrange",{align:"start"}),c=(0,S.useRef)(null);return(0,S.useEffect)(()=>{s.open&&c.current?.querySelector('[aria-pressed="true"]')?.focus({preventScroll:!0})},[s.open]),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("button",{type:"button",className:"graview-arrange-open","data-testid":e,"data-set":u?"":void 0,value:n,"aria-label":o,...s.trigger,onClick:s.toggle,children:[g,(0,r.jsx)(oe,{})]}),s.open?(0,r.jsx)("div",{...s.pane,ref:f=>{s.pane.ref(f),c.current=f},role:"group","aria-label":a,"data-testid":"arrange-list","data-arrange":e,className:"graview-arrange-list",style:j,onKeyDown:ae,children:d(()=>s.setOpen(!1))}):null]})}function ae(e){if(!["ArrowDown","ArrowUp","Home","End"].includes(e.key))return;let n=[...e.currentTarget.querySelectorAll("button:not([disabled]), input")];if(n.length===0)return;let u=n.indexOf(document.activeElement);if(document.activeElement instanceof HTMLInputElement&&(e.key==="ArrowUp"||e.key==="ArrowDown"))return;e.preventDefault();let a=e.key==="Home"?0:e.key==="End"?n.length-1:e.key==="ArrowDown"?(u+1)%n.length:(u-1+n.length)%n.length;n[a].focus()}function oe(){return(0,r.jsx)("svg",{width:"9",height:"9",viewBox:"0 0 10 10","aria-hidden":"true",focusable:"false",style:{flex:"0 0 auto",opacity:.7},children:(0,r.jsx)("path",{d:"M2 3.5 L5 6.5 L8 3.5",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})})}var ie=`
|
|
2
2
|
.graview-arrange{container-type:inline-size;box-sizing:border-box;width:100%;min-width:0;max-width:100%}
|
|
3
3
|
.graview-arrange-line{display:flex;flex-wrap:wrap;align-items:center;gap:2px 6px;min-width:0;font-size:.875rem;line-height:1.35;color:var(--graview-ink-muted)}
|
|
4
4
|
.graview-arrange-count{margin-right:2px;color:var(--graview-ink-muted)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as R}from"./chunk.PN2H6X7O.js";import{a as q}from"./chunk.BCBH6WJF.js";import{$ as D,P as Q,Q as V,T as z,W as Y,_ as A,_a as nn,aa as X,bb as B,la as L,ma as Z}from"./chunk.MKNXV4TM.js";var E=c=>c.filter(Boolean).join(" "),en=new Set(["tell","me","about","what","how","show","describe","the","a","an","and","please"]),an=new Set([...en,"where","is","are","was","find","any","anything","something","things","called","named","which","who","of","for","with","to","in","on","i","my","do","does","have","has","can","you","it","that","this","there","we","our","got","be"]),dn=c=>c.length<=1?A(c[0]??"something"):`${c.slice(0,-1).map(A).join(", ")} and ${A(c[c.length-1])}`;function bn(c={}){return async(t,u,g={})=>{let w=u.toLowerCase(),h=n=>V(t.schema.tryDefinition(n.kind),n),y=(await import("./chunk.ZEUBAAVQ.js")).goingFrom(t,u,g,c.today);if(y.reply)return y.reply;let v=y.told,S=n=>y.moves?{...n,moves:y.moves}:n,p=[],C=w.split(/[^a-z0-9]+/).filter(Boolean),I=new Set;for(let n=0;n<C.length;n++){let e="";for(let s=n;s<Math.min(C.length,n+6);s++)e+=C[s],I.add(e)}let T=n=>n.toLowerCase().replace(/[^a-z0-9]+/g,""),H=[...t.graph.allNodes()].map(n=>({node:n,label:T(h(n))})).filter(({label:n})=>n.length>=2&&I.has(n)).sort((n,e)=>e.label.length-n.label.length),N=new Map;for(let{label:n}of H)N.set(n,(N.get(n)??0)+1);for(let{node:n,label:e}of H)(N.get(e)??0)>1||p.some(s=>s.id===n.id)||p.push(n);for(let n of g.selection??[]){let e=t.graph.getNode(n);e&&!p.some(s=>s.id===e.id)&&p.push(e)}let M=v&&t.graph.getNode(v);if(M){let n=p.findIndex(e=>e.id===M.id);n>=0&&p.splice(n,1),p.unshift(M)}let b=t.violations(),O=(n=b)=>ln(n);if(y.problems||!v&&/\b(wrong|broken|problem|violat|standing)\b/.test(w)){if(b.length===0)return S({say:"Nothing is wrong: every rule holds.",proposals:[],grounded:!0});let n=R(t,O().slice(0,4)),e=(i,r)=>{let d=t.allMutations().find(l=>l.name===i),a=d?q(d.input).find(l=>l.name===r):void 0;return a?.control==="node"&&!a.kinds.includes("*")?a.kinds.map(l=>D(t.schema.tryDefinition(l),l)).join(" or "):B(t.schema,d,r).label},s=[...new Set(b.flatMap(i=>i.repairs).filter(i=>(i.missing??[]).length>0).map(i=>`\u201C${i.label}\u201D (${(i.missing??[]).map(r=>e(i.mutation,r)).join(", ")})`))];return S({say:E([y.moves?.[0]?.said??"",`${Z(b)}:`,b.slice(0,4).map(i=>i.message).join("; ")+(b.length>4?"\u2026":"."),n.length>0?"The repairs below come from the rules themselves.":s.length>0?`Each way to fix ${b.length===1?"it":"these"} asks something first \u2014 ${s.slice(0,4).join(" or ")} \u2014 select the record and its own actions will ask.`:"No rule here names a way to fix it."]),proposals:n,grounded:!0})}let K=/\?\s*$/.test(u)||/^\s*(what|who|whom|whose|which|when|where|why|how|is|are|was|were|does|do|did|can|could|should|would|will|has|have)\b/.test(w),$=K?void 0:t.allMutations().find(n=>{let e=(n.title??n.name).toLowerCase();return e.length>3&&w.includes(e)});if($){let n={},e=[],s=u.slice(u.toLowerCase().indexOf(($.title??$.name).toLowerCase())+($.title??$.name).length),i=p.reduce((a,l)=>{let f=h(l).toLowerCase(),m=a.toLowerCase().indexOf(f);return m<0?a:`${a.slice(0,m)} it${a.slice(m+f.length)}`},s),r=u.match(/"([^"]+)"/)?.[1]??i.match(/^(?:\s+(?:it|this|that|them))?\s+(?:to|as)\s+(.+?)\s*[.!]?$/i)?.[1],d=[...p];for(let a of q($.input)){let l=un(a,d,r,c.today??g.today,w);if(l!==void 0){n[a.name]=l;let f=d.findIndex(m=>m.id===l);f>=0&&d.splice(f,1)}else a.optional||e.push(B(t.schema,$,a.name).label.toLowerCase())}return e.length===0?{say:"I can do that. Review it below.",proposals:R(t,[{mutation:$.name,args:n,why:"you asked in words"}])}:{say:`\u201C${$.title??z($.name)}\u201D needs ${dn(e)} \u2014 say ${e.length===1?"it":"them"} (or select ${e.length===1?"it":"them"}) and ask again.`,proposals:[]}}let tn={mon:"mon",monday:"mon",tue:"tue",tues:"tue",tuesday:"tue",wed:"wed",wednesday:"wed",thu:"thu",thur:"thu",thurs:"thu",thursday:"thu",fri:"fri",friday:"fri",sat:"sat",saturday:"sat",sun:"sun",sunday:"sun"},x=C.map(n=>tn[n]).find(Boolean),_=(n,e,s)=>{let i=t.schema.tryDefinition(n)?.display?.format?.[e];return i?i(s):String(s)},F=n=>{let e=t.schema.tryDefinition(n.kind)?.fieldRoles;if(!e?.start)return null;let s=n[e.start],i=e.end?n[e.end]:void 0,r=e.day?n[e.day]:e.days?n[e.days]:void 0;return s===void 0&&i===void 0?null:[s!==void 0?_(n.kind,e.start,s):null,i!==void 0&&e.end?`\u2013${_(n.kind,e.end,i)}`:null,Array.isArray(r)?` on ${r.join(", ")}`:r!==void 0?` on ${String(r)}`:null].filter(Boolean).join("")||null},sn=n=>{let e=[];for(let s of t.graph.allEdges()){let i=s.from===n?s.to:s.to===n?s.from:null;if(!i)continue;let r=t.graph.getNode(i);r&&!e.some(d=>d.id===r.id)&&e.push(r)}return e},G=n=>{let e=p[0];if(!e)return[];let s=[];for(let r of sn(e.id)){let d=0,a=T(h(r));for(let l of C)l.length>2&&a.includes(l)&&(d+=1);if(x){let l=t.schema.tryDefinition(r.kind)?.fieldRoles,f=l?.day?r[l.day]:void 0,m=l?.days?r[l.days]:void 0;f===x?d+=4:Array.isArray(m)&&m.includes(x)&&(d+=1)}n&&!F(r)||d>0&&s.push({node:r,score:d})}let i=s.sort((r,d)=>d.score-r.score).map(r=>r.node);return n&&F(e)?i.unshift(e):n||i.push(e),i};if(p.length>0&&/\bwhen\b/.test(w)){let n=G(!0)[0]??null,e=n?F(n):null;if(n&&e)return S({say:`${h(n)} runs ${e}.`,proposals:R(t,O(L(b,[n.id])).slice(0,3)),grounded:!0})}if(p.length>0&&/\bwho(m|se)?\b/.test(w))for(let n of G(!1)){let e=[],s=new Set;for(let i of t.schema.definitions)for(let[r,d]of Object.entries(i.edges)){let a=/\bwho\b/i.test(d.description??""),l=/\bwho\b/i.test(d.inverse??"");if(!a&&!l||s.has(r))continue;s.add(r);let f=[...t.graph.in(n.id,r),...t.graph.out(n.id,r)];if(f.length===0)continue;let m=a?d.description:d.inverse;e.push(`${m}: ${f.map(o=>h(o)).join(", ")}`)}if(e.length>0)return S({say:`${h(n)} \u2014 ${e.join("; ")}.`,proposals:R(t,O(L(b,[n.id])).slice(0,3)),grounded:!0})}if(p.length>0){let n=p[0],e=new Set(h(n).toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)),s=C.every(o=>e.has(o)||en.has(o)),i=K||s,r=t.schema.tryDefinition(n.kind),d=o=>o===o.toUpperCase()?o:o.charAt(0).toLowerCase()+o.slice(1),a=X(n,r,{limit:3}).map(o=>{let k=n[o.key];return typeof k=="boolean"&&!/\s/.test(o.label)?k?d(o.label):`not ${d(o.label)}`:typeof k=="string"&&hn.test(k)?`${d(o.label)} ${pn(k)}`:o.alone.startsWith(o.label)?d(o.label)+o.alone.slice(o.label.length):`${d(o.label)} ${o.alone}`}).join(", "),l=L(b,[n.id]),f=new Map;for(let o of[...t.graph.allEdges()]){let k=o.from===n.id?"out":o.to===n.id?"in":null;if(!k)continue;let J=t.graph.getNode(k==="out"?o.to:o.from);if(!J)continue;let P=`${o.kind}|${k}`;if(!f.has(P)){let W;for(let rn of t.schema.definitions){let j=rn.edges[o.kind];if(j&&(W=k==="out"?j.description:j.inverse??j.description,W))break}f.set(P,{sentence:W??z(o.kind).toLowerCase(),names:[]})}let U=f.get(P);U.names.length<6&&U.names.push(h(J))}let m=[...f.values()].slice(0,4).map(o=>`${o.sentence.charAt(0).toUpperCase()}${o.sentence.slice(1)}: ${o.names.join(", ")}`).join(". ");return S({say:E([y.moves?.[0]?.said??"",`${h(n)} \u2014 ${A(D(t.schema.tryDefinition(n.kind),n.kind))}${a?` (${a})`:""}.`,m?`${m}.`:"Connected to nothing yet.",l.length>0?`Trouble: ${l.map(o=>o.message).join("; ")}.`:"Nothing about it is broken."]),proposals:R(t,O(l).slice(0,3)),...i||v?{grounded:!0}:{}})}{let n=w.split(/[^\p{L}\p{N}]+/u).filter(e=>e.length>0&&!an.has(e));if(n.length>0){let e=nn(t,n.join(" "),{...g.principal?{principal:g.principal}:{},...g.selection?{from:g.selection}:{},...c.today??g.today?{today:c.today??g.today}:{},limit:6}),s=e.hits.filter(i=>i.about==="node");if(s.length>0){let i=Q(s.flatMap(a=>{let l=t.graph.getNode(a.id);return l?[l]:[]}),a=>t.schema.tryDefinition(a)),r=s.map(a=>`${a.label}${i.has(a.id)?` \xB7 ${i.get(a.id)}`:""} (${D(t.schema.tryDefinition(a.kind),a.kind)}${a.why.field==="label"?"":`, ${a.why.reading.toLowerCase()}: ${a.why.fragment}`})`);return{say:`${e.total===1?"One thing is":`${gn(e.total)} things are`} called \u201C${e.words}\u201D \u2014 ${r.join("; ")}${e.total>s.length?`; and ${e.total-s.length} more`:""}.`,proposals:[],picks:s}}}}let on=t.schema.kinds.filter(n=>!t.modules.disabledKinds.has(n)).map(n=>{let e=Y(t.schema,n);return`${t.graph.nodesOfKind(n).length} ${e}`}).join(", ");return{say:E([`This graph holds ${on}.`,"Ask about anything by name, ask what's wrong, or say a change in its own words \u2014",`like "${t.allMutations()[0]?.title??"an action"}".`]),proposals:[],unsure:!0}}}function ln(c){return c.flatMap(t=>{let u=t.repairs.find(g=>!g.missing?.length);return u?[{mutation:u.mutation,args:{...u.args},why:t.message}]:[]})}var cn=["No","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten"],gn=c=>cn[c]??String(c);function un(c,t,u,g,w=""){switch(c.control){case"node":return t.find(y=>c.kinds.includes("*")||c.kinds.includes(y.kind))?.id;case"text":return u;case"date":{let h=g??new Date().toISOString().slice(0,10);return c.time?`${h}T09:00`:h}case"choice":{let h=new Set(w.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)),y=(c.options??[]).filter(v=>v.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean).every(S=>h.has(S)));return y.length===1?y[0]:void 0}default:return}}function $n(c){return async(t,u,g={})=>(await import("./chunk.5BGA2VUS.js")).answerWithModel(c,t,u,g)}var hn=/^\d{4}-\d{2}-\d{2}$/,fn=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function pn(c){let[t,u,g]=c.split("-").map(Number);return`${g} ${fn[u-1]??""} ${t}`}export{bn as a,ln as b,$n as c};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{D as P,E as F,F as D,H as _,_ as C}from"./chunk.MKNXV4TM.js";var B=1e4,g=class{constructor(i){this.nodes=i}},J="",c=class extends Error{constructor(f,l){super(f);this.sentence=f;this.at=l}},K=class extends c{},V=t=>t!==null&&typeof t=="object"&&!Array.isArray(t)&&!(t instanceof g)&&typeof t.id=="string",W=t=>{let i=new Set;return new g(t.filter(f=>!i.has(f.id)&&i.add(f.id)))},p=t=>t===null?"nothing":t instanceof g?"a set of records":Array.isArray(t)?"a list":V(t)?"a record":typeof t=="string"?"a word":typeof t;function q(t,i){let f=i.budget??B,l=(n,s)=>{if(f-=n,f<0)throw new K("this rule looks at too much of the graph to judge in one go",s)},b=i.today??F(),A=i.now??new Date().toISOString(),w=new Map,T=new Set,G=i.bindings,L=(n,s,e,o)=>{let u=`${n?.id}\0${s}`;if(w.has(u))return w.get(u);if(T.has(u))throw new c(`"${s}"${n?` of ${C(n.kind)}`:""} depends on itself`,o);T.add(u);let r=G;G=void 0;try{let a=h(e,n);return w.set(u,a),a}finally{G=r,T.delete(u)}},M=(n,s,e)=>{l(1,e);let o=i.kinds.get(n.kind),u=o?.computed?.get(s);if(u)return L(n,s,u,e);let r=Object.hasOwn(n,s);if(o?.fields.has(s)||r){let d=r?n[s]:void 0;return d===void 0?null:d}let a=o?.edges.get(s);if(a){let d=i.graph.out(n.id,s);return l(d.length,e),a==="one"?d[0]??null:new g(d)}if(s==="id")return n.id;throw new c(`${C(n.kind)} has no field or relation called "${s}"`,e)},x=(n,s,e)=>{if(n instanceof g)return n;if(n===null)return new g([]);if(V(n))return new g([n]);throw new c(`${e}(\u2026) needs a set of records, and was given ${p(n)}`,s)},k=(n,s,e)=>{if(n===null)return null;if(typeof n=="string")return n;if(typeof n=="number"||typeof n=="boolean")return String(n);throw new c(`${e}(\u2026) needs a word, and was given ${p(n)}`,s)},O=(n,s,e)=>{let o=k(n,s,e);if(o===null)return null;let u=Date.parse(o.length===10?`${o}T00:00:00Z`:o);if(Number.isNaN(u))throw new c(`${e}(\u2026) needs a date, and "${o}" is not one`,s);return u},E=(n,s)=>V(n)&&V(s)?n.id===s.id:V(n)&&typeof s=="string"?n.id===s:typeof n=="string"&&V(s)?n===s.id:Array.isArray(n)&&Array.isArray(s)?n.length===s.length&&n.every((e,o)=>E(e,s[o])):n===s,N=(n,s,e)=>{if(n===null)return!1;if(typeof n=="boolean")return n;throw new c(`${e} must be true or false, and was ${p(n)}`,s)},R=(n,s)=>h(s,n);function h(n,s){switch(l(1,n.at),n.t){case"lit":return n.value;case"list":return n.items.map(e=>h(e,s));case"ident":{let e=G&&Object.hasOwn(G,n.name)?G[n.name]:void 0;if(e!==void 0)return e;if(s)return M(s,n.name,n.at);throw new c(`"${n.name}" means nothing in a rule over the whole graph`,n.at)}case"member":{let e=h(n.object,s);if(e===null)return null;if(V(e))return M(e,n.name,n.at);throw new c(`".${n.name}" needs a record before it, and was given ${p(e)}`,n.at)}case"unary":{let e=h(n.operand,s);if(n.op==="!")return!N(e,n.at,"what follows not");if(e===null)return null;if(typeof e!="number")throw new c(`"-" needs a number, and was given ${p(e)}`,n.at);return-e}case"where":{let e=x(h(n.set,s),n.at,"where");return l(e.nodes.length,n.at),new g(e.nodes.filter(o=>N(R(o,n.filter),n.at,"a where condition")))}case"binary":return H(n,s);case"call":return Y(n,s)}}function H(n,s){if(n.op==="&&")return N(h(n.left,s),n.at,"each side of and")&&N(h(n.right,s),n.at,"each side of and");if(n.op==="||")return N(h(n.left,s),n.at,"each side of or")||N(h(n.right,s),n.at,"each side of or");let e=h(n.left,s),o=h(n.right,s);if(n.op==="&"||n.op==="|"||n.op==="-"&&(e instanceof g||o instanceof g)){let u=x(e,n.at,n.op).nodes,r=x(o,n.at,n.op).nodes;l(u.length+r.length,n.at);let a=new Set(r.map(d=>d.id));return W(n.op==="|"?[...u,...r]:u.filter(d=>a.has(d.id)===(n.op==="&")))}switch(n.op){case"==":return E(e,o);case"!=":return!E(e,o);case"in":{if(o===null)return!1;if(o instanceof g)return o.nodes.some(u=>E(e,u));if(Array.isArray(o))return o.some(u=>E(e,u));if(typeof o=="string"&&typeof e=="string")return o.includes(e);throw new c(`"in" needs a list or a set on its right, and was given ${p(o)}`,n.at)}case"<":case"<=":case">":case">=":{if(e===null||o===null)return!1;if(!(typeof e=="number"&&typeof o=="number"||typeof e=="string"&&typeof o=="string"))throw new c(`cannot compare ${p(e)} with ${p(o)}`,n.at);return n.op==="<"?e<o:n.op==="<="?e<=o:n.op===">"?e>o:e>=o}default:{if(e===null||o===null)return null;if(n.op==="+"&&(typeof e=="string"||typeof o=="string")){let u=`${k(e,n.at,"+")}${k(o,n.at,"+")}`;if(u.length>1e4)throw new c("that makes a word too long",n.at);return u}if(typeof e!="number"||typeof o!="number")throw new c(`"${n.op}" needs numbers, and was given ${p(e)} and ${p(o)}`,n.at);return(n.op==="/"||n.op==="%")&&o===0?null:n.op==="+"?e+o:n.op==="-"?e-o:n.op==="*"?e*o:n.op==="/"?e/o:e%o}}}function Y(n,s){let e=(r,a=r)=>{if(n.args.length<r||n.args.length>a)throw new c(`${n.fn}(\u2026) takes ${r===a?r:`${r} to ${a}`} argument${a===1?"":"s"}`,n.at)},o=r=>h(n.args[r],s),u=r=>{let a=o(r);if(typeof a!="string")throw new c(`${n.fn}(\u2026) needs a quoted name, like ${n.fn}('name')`,n.at);return a};switch(n.fn){case"out":case"in":{e(1,2);let r=($,m)=>n.fn==="out"?i.graph.out($,m):i.graph.in($,m);if(n.args.length===2){let $=x(o(0),n.at,n.fn).nodes,m=u(1);return W($.flatMap(y=>{let S=r(y.id,m);return l(S.length+1,n.at),S}))}let a=u(0);if(!s)throw new c(`${n.fn}('${a}') needs a record to start from`,n.at);let d=r(s.id,a);return l(d.length,n.at),new g(d)}case"all":{e(1);let r=i.graph.nodesOfKind(u(0));return l(r.length,n.at),new g(r)}case"count":return e(1),x(o(0),n.at,"count").nodes.length;case"exists":return e(1),x(o(0),n.at,"exists").nodes.length>0;case"every":case"some":{e(2);let r=x(o(0),n.at,n.fn);l(r.nodes.length,n.at);let a=d=>N(R(d,n.args[1]),n.at,`the condition in ${n.fn}(\u2026)`);return n.fn==="every"?r.nodes.every(a):r.nodes.some(a)}case"sum":case"min":case"max":{e(2);let r=x(o(0),n.at,n.fn);l(r.nodes.length,n.at);let a=n.args[1],d=a.t==="lit"&&typeof a.value=="string"?a.value:void 0,$=a.t==="ident"?`'${a.name}'`:d!==void 0?`'${d}'`:"\u2026",m=r.nodes.map(y=>a.t==="ident"?M(y,a.name,n.at):d!==void 0?M(y,d,n.at):R(y,a)).filter(y=>{if(y===null)return!1;if(typeof y!="number")throw new c(`${n.fn}(\u2026, ${$}) needs a number for each member, and found ${p(y)}`,n.at);return!0});return n.fn==="sum"?m.reduce((y,S)=>y+S,0):m.length===0?null:n.fn==="min"?Math.min(...m):Math.max(...m)}case"fact":{e(1);let r=u(0),a=i.kinds.get(J)?.computed?.get(r);if(!a)throw new c(`no fact is called "${r}"`,n.at);return L(null,r,a,n.at)}case"first":return e(1),x(o(0),n.at,"first").nodes[0]??null;case"sort":{e(2,3);let r=x(o(0),n.at,"sort"),a=n.args.length===3?o(2):"asc";if(a!=="asc"&&a!=="desc")throw new c("sort(\u2026) goes 'asc' or 'desc'",n.at);let d=r.nodes.length;l(d+d*Math.ceil(Math.log2(d+1)),n.at);let $=r.nodes.map((y,S)=>({node:y,i:S,key:R(y,n.args[1])})),m=a==="desc"?-1:1;return $.sort((y,S)=>U(y.key,S.key,m,n.at)||y.i-S.i),new g($.map(y=>y.node))}case"either":{if(n.args.length<1)throw new c("either(\u2026) takes at least one argument",n.at);for(let r=0;r<n.args.length;r++){let a=o(r);if(a!==null&&!(a instanceof g&&a.nodes.length===0))return a}return null}case"present":{e(1);let r=o(0);return r===null||r===""?!1:Array.isArray(r)?r.length>0:r instanceof g?r.nodes.length>0:!0}case"len":{e(1);let r=o(0);if(r===null)return 0;if(typeof r=="string"||Array.isArray(r))return r.length;if(r instanceof g)return r.nodes.length;throw new c(`len(\u2026) needs a word or a list, and was given ${p(r)}`,n.at)}case"contains":case"startsWith":{e(2);let r=o(0),a=o(1);if(r===null||a===null)return!1;if(n.fn==="contains"&&Array.isArray(r))return r.some(m=>E(m,a));let d=k(r,n.at,n.fn),$=k(a,n.at,n.fn);return n.fn==="contains"?d.toLowerCase().includes($.toLowerCase()):d.startsWith($)}case"lower":{e(1);let r=k(o(0),n.at,"lower");return r===null?null:r.toLowerCase()}case"today":return e(0),b;case"now":return e(0),A;case"date":{e(1);let r=O(o(0),n.at,"date");return r===null?null:new Date(r).toISOString().slice(0,10)}case"days":case"hours":{e(2);let r=O(o(0),n.at,n.fn),a=O(o(1),n.at,n.fn);if(r===null||a===null)return null;let d=(a-r)/(n.fn==="days"?864e5:36e5);return n.fn==="days"?Math.round(d):d}case"if":return e(3),N(o(0),n.at,"the condition in if(\u2026)")?o(1):o(2);default:throw new c(`"${n.fn}" is not a function the rule language knows`,n.at)}}function U(n,s,e,o){if(n===null||s===null)return n===s?0:n===null?1:-1;if(Array.isArray(n)&&Array.isArray(s)){for(let r=0;r<Math.max(n.length,s.length);r++){let a=U(n[r]??null,s[r]??null,e,o);if(a!==0)return a}return 0}let u=r=>typeof r=="number"||typeof r=="string"||typeof r=="boolean"?typeof r:p(r);if(u(n)!==u(s)||typeof n=="object"||typeof s=="object")throw new c(`sort(\u2026) cannot put ${p(n)} and ${p(s)} in order`,o);return typeof n=="string"?e*(n<s?-1:n>s?1:0):e*(Number(n)-Number(s))}return h(t,i.subject)}var rn=["out","in","all","count","exists","every","some","sum","min","max","present","len","contains","startsWith","lower","today","now","date","days","hours","if","first","sort","either","fact"];var sn=(t,i,f,l)=>({severity:"error",code:t,path:i,message:f,...l?{fix:l}:{}}),an=(t,i,f,l)=>({severity:"warning",code:t,path:i,message:f,...l?{fix:l}:{}}),ln=t=>t.some(i=>i.severity==="error");function un(t){return t.map(i=>`${i.severity==="error"?"\u2717":i.severity==="warning"?"!":"\xB7"} ${i.path||"(document)"}: ${i.message}${i.fix?` \u2014 ${i.fix}`:""}`).join(`
|
|
2
|
+
`)}var yn=["money","percent","date","relative","upper","lower","count","words","and","plural"],Q={getNode:()=>{},allNodes:()=>[],allEdges:()=>[],nodesOfKind:()=>[],edgesOfKind:()=>[],out:()=>[],in:()=>[],neighbors:()=>[],has:()=>!1};function pn(t,i,f,l=[],b){return I(t,i,f,l,b)}function X(t,i={}){let f=Number.isInteger(t),l={maximumFractionDigits:f?0:2,minimumFractionDigits:f?0:2};try{return new Intl.NumberFormat(i.locale??"en-US",i.currency?{style:"currency",currency:i.currency,...l}:l).format(t)}catch{return t.toLocaleString("en-US",l)}}var Z=["zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"],z=["","","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"];function v(t){return!Number.isInteger(t)||t<0||t>99?t.toLocaleString("en-US",{maximumFractionDigits:2}):t<20?Z[t]:t%10===0?z[t/10]:`${z[Math.floor(t/10)]}-${Z[t%10]}`}function nn(t){return/[^aeiou]y$/i.test(t)?`${t.slice(0,-1)}ies`:/(s|x|z|ch|sh)$/i.test(t)?`${t}es`:`${t}s`}var j=t=>String(t.name??t.title??t.label??t.id);function I(t,i,f,l=[],b){if(i==="plural"){let A=t instanceof g?t.nodes.length:Array.isArray(t)?t.length:typeof t=="number"?t:null;return A===null||l[0]===void 0?"\u2014":A===1?l[0]:l[1]??nn(l[0])}if(t===null)return"\u2014";if(t instanceof g)return i==="count"?String(t.nodes.length):i==="and"?_(t.nodes.map(j)):t.nodes.map(j).join(", ");if(Array.isArray(t)){if(i==="count")return String(t.length);let A=t.map(w=>I(w,void 0,f,[],b));return i==="and"?_(A):A.join(", ")}if(typeof t=="object")return j(t);switch(i){case"words":return typeof t=="number"?v(t):String(t);case"money":return typeof t=="number"?X(t,b):String(t);case"percent":return typeof t=="number"?`${Math.round(t*100)}%`:String(t);case"upper":return String(t).toUpperCase();case"lower":return String(t).toLowerCase();case"date":return D(String(t).slice(0,10));case"relative":{let A=Date.parse(String(t).length===10?`${t}T00:00:00Z`:String(t));if(Number.isNaN(A))return String(t);let w=Math.round((A-Date.parse(`${f}T00:00:00Z`))/864e5);return w===0?"today":w===1?"tomorrow":w===-1?"yesterday":w>0?`in ${w} days`:`${-w} days ago`}default:return typeof t=="string"&&P.test(t)?D(t):String(t)}}function hn(t,i){let f=i.today??F();return t.map(l=>{if(l.text!==void 0)return l.text;try{let b=q(l.expr,{graph:i.graph??Q,subject:i.node,kinds:i.kinds,today:f,budget:i.budget??500,...i.bindings?{bindings:i.bindings}:{}});return I(b,l.format,f,l.formatArgs,i.money)}catch(b){if(b instanceof c)return"\u2014";throw b}}).join("")}export{g as a,J as b,c,K as d,q as e,rn as f,sn as g,an as h,ln as i,un as j,yn as k,Q as l,pn as m,X as n,hn as o};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as te,e as ne,f as ie,g as oe}from"./chunk.7THQFY52.js";import{a as Q}from"./chunk.G4JJXA63.js";import{j as X,n as J,o as ee}from"./chunk.FS5K4AVA.js";import"./chunk.DY2FFBWF.js";import"./chunk.MNPNW4BQ.js";import"./chunk.I5KD54S6.js";import"./chunk.EVTZE2OZ.js";import"./chunk.NQNQPPPM.js";import"./chunk.ZMMMKTAG.js";import"./chunk.IZDKEFPJ.js";import"./chunk.XDHBV5K5.js";import{a as G}from"./chunk.TMPV4HLQ.js";import{a as q,d as B}from"./chunk.7QTBDACG.js";import"./chunk.5BN2ARQ2.js";import"./chunk.4W24TPMR.js";import"./chunk.AHDOKM4O.js";import"./chunk.6R4EI47C.js";import"./chunk.QZWN46V6.js";import{d as Z}from"./chunk.6LJ66MB7.js";import{V as U,da as C,i as F,l as _,q as Y,ra as V}from"./chunk.OYULDOQP.js";import{P as j,U as P,V as T,Z as N,_ as W,cb as z}from"./chunk.VMEX2KZ4.js";import{a as he,b as K}from"./chunk.MRK6QJV5.js";import{b as O}from"./chunk.AJZBJBMO.js";var M=3;function re(e,n){return n.id?e.graph.getNode(n.id):void 0}function ae(e){return e?/^(?:kind|aggregate):([^:]+)$/.exec(e)?.[1]:void 0}function le(e,n){if(n)return e.find(t=>t.nodeIds.includes(n)||t.subjectId===n)}var ye=e=>{let n=e.trim();if(!n)return n;let t=n.charAt(0).toUpperCase()+n.slice(1);return/[.!?…]$/.test(t)?t:`${t}.`};function de({store:e,subject:n,violations:t,place:i}){let r=re(e,n),o=le(t,r?.id??null);if(o)return ye(o.message);if(r){let l=r.kind;return`${j(e.schema.tryDefinition(l),r)}, ${N(W(e.schema.tryDefinition(l),l))}.`}let c=i?.kind??ae(n.id);if(c){let l=e.graph.nodesOfKind(c).length,g=i?.title??n.name,u=T(e.schema,c),f=P(e.schema,c,l);return g.toLowerCase()===u.toLowerCase()?`${l===1?"There is":"There are"} ${f} here.`:`${g}: ${f}.`}let a=e.schema.kinds.map(l=>({kind:l,count:e.graph.nodesOfKind(l).length})).filter(l=>l.count>0).sort((l,g)=>g.count-l.count).slice(0,3);if(a.length===0)return"Nothing here yet.";let s=a.map(l=>P(e.schema,l.kind,l.count));return`The whole thing: ${s.length===1?s[0]:`${s.slice(0,-1).join(", ")} and ${s[s.length-1]}`}.`}function ce(e){let{store:n,subject:t,violations:i}=e,r=re(n,t),o=[];r&&le(i,r.id)?o.push({ask:`What's wrong with ${t.name}?`,why:"problem"}):i.length>0&&o.push({ask:"What needs attention?",why:"problem"});let c=r?r.kind:e.place?.kind??ae(t.id),a=ve(e,c);if(a)o.push(a);else{let l=ke(e,c);l&&o.push(l)}let s=be(e,c);return s&&o.push(s),o.length<M&&(r?o.push({ask:`Tell me about ${t.name}`,why:"about"}):o.push({ask:"What is here?",why:"here"})),o.slice(0,M)}function ue(e,n){return e.schema.tryDefinition(n)?.fields?.shape??{}}function me(e){let n=e;for(let t=0;t<4&&n;t++){let i=n;if(Array.isArray(i.options)&&i.options.every(r=>typeof r=="string"))return i.options;n=typeof i.unwrap=="function"?i.unwrap():i._def?.innerType}}var se=/^\d{4}-\d{2}-\d{2}/,Se=["due","deadline","date","when"];function ve(e,n){let{store:t}=e,i=e.today;if(!i||!se.test(i))return;let r=new Date(`${i.slice(0,10)}T00:00:00Z`);r.setUTCDate(r.getUTCDate()+6);let o=r.toISOString().slice(0,10),c=[...new Set([...n?[n]:[],...t.schema.kinds])];for(let a of c){let s=Se.find(u=>u in ue(t,a));if(!s||!t.graph.nodesOfKind(a).some(u=>{let f=u[s],S=u.done;return typeof f=="string"&&se.test(f)&&f.slice(0,10)>=i.slice(0,10)&&f.slice(0,10)<=o&&S!==!0}))continue;let g=T(t.schema,a);return{ask:`${Q(g)} due this week`,why:"due"}}}function ke(e,n){let t=e.place?.title,i=(e.places??[]).find(r=>r.kind!==null&&r.picture===!0&&r.title!==t&&r.kind!==n);return i?{ask:`Go to ${i.title}`,why:"go"}:void 0}function be(e,n){let{store:t}=e,i=[...t.schema.kinds].sort((o,c)=>t.graph.nodesOfKind(c).length-t.graph.nodesOfKind(o).length),r=[...new Set([...n?[n]:[],...i])];for(let o of r){if(t.graph.nodesOfKind(o).length<2)continue;let c=ue(t,o),a=Object.keys(c).find(g=>(me(c[g])?.length??0)>=2);if(!a)continue;let s=T(t.schema,o).toLowerCase(),l=a.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").toLowerCase();return{ask:`Show ${s} as a board by ${l}`,why:"draw"}}}function pe(e,{store:n,subject:t}){let i=a=>t.id!==null&&(a.nodeIds.includes(t.id)||Object.values(a.args).includes(t.id)),r=e.filter(a=>a.provider==="invariant"&&i(a)),o=e.filter(a=>a.pinned==="user"&&!r.includes(a));return[...r,...o].sort((a,s)=>Number(a.destructive??!1)-Number(s.destructive??!1)).slice(0,M).map(a=>({affordance:a,label:Ae(a,{store:n,subject:t})}))}var we=e=>/^[a-z0-9]+(?:[-_][a-z0-9]+)+$|^[a-z]+[A-Z][A-Za-z0-9]*$/.test(e);function Ae(e,{store:n,subject:t}){let i=e.label,r=we(i)||i===e.mutation;if(r){let s=i.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").toLowerCase();i=s.charAt(0).toUpperCase()+s.slice(1)}let o=t.id?n.graph.getNode(t.id):void 0,c=o!==void 0&&e.nodeIds.length<=1&&(e.nodeIds[0]??o.id)===o.id;if(c&&/\bit\b/.test(i))return i.replace(/\bit\b/,t.name);let a=n.allMutations().find(s=>s.name===e.mutation);if(e.open.length===0&&a?.describe&&(r||c))try{let s=a.describe(e.args,n.graph);if(s.trim())return s.trim()}catch{}return i}var y=O(he(),1);var p=O(K(),1);function ze({phone:e,side:n,name:t,onClose:i,respond:r,onCall:o,onPick:c,onMove:a,place:s,onDraft:l}){let{seatTalk:g}=C(),u=U(g),f=xe(c),S=[...u.turns].reverse().find(h=>h.role==="seat"),m=e&&u.draft!==null,b=(0,y.useRef)(null),w=(0,y.useRef)(!0);return(0,y.useLayoutEffect)(()=>{let h=b.current;if(!h)return;let A=m?[...h.querySelectorAll("ol > li")].pop():void 0;if(A){let v=A.getBoundingClientRect().top-h.getBoundingClientRect().top+h.scrollTop;h.style.maxHeight=`min(${Math.ceil(h.scrollHeight-v)}px, ${ge})`}let k=w.current?fe.get(g):void 0;w.current=!1,h.scrollTop=k&&k.turns===u.turns.length&&!u.busy?k.top:h.scrollHeight},[u.turns.length,u.busy,m]),(0,p.jsxs)("div",{"data-testid":"seat-panel",...m?{"data-graview-seat-yields":""}:{},style:{display:"grid",gridTemplateRows:"auto minmax(0, 1fr)",gap:4,minHeight:0},children:[(0,p.jsxs)("div",{"data-testid":"seat-top",...e?{onPointerDown:h=>Ce(h,i)}:{},style:{display:"flex",alignItems:"center",justifyContent:e?"center":"flex-end",gap:2,position:"relative",minHeight:28,...e?{touchAction:"none"}:{}},children:[e?(0,p.jsx)("button",{type:"button","data-testid":"seat-grab","aria-label":`Close Ask ${t}`,title:"Close",onClick:i,style:{...E,width:64},children:(0,p.jsx)("span",{"aria-hidden":"true",style:{display:"block",width:36,height:4,margin:"0 auto",borderRadius:2,background:"var(--graview-edge-strong, var(--graview-ink-faint))"}})}):(0,p.jsx)("button",{type:"button","data-testid":"seat-side","aria-label":n==="left"?"Move to the right":"Move to the left",title:n==="left"?"Move to the right":"Move to the left",onClick:()=>g.setSide(n==="left"?"right":"left"),style:E,children:(0,p.jsx)("span",{"aria-hidden":"true",children:"\u21C4"})}),(0,p.jsx)("button",{type:"button","data-testid":"seat-close","aria-label":`Close Ask ${t}`,title:"Close",onClick:i,style:e?{...E,position:"absolute",top:0,right:0}:E,children:(0,p.jsx)("span",{"aria-hidden":"true",children:"\u2715"})})]}),(0,p.jsx)("div",{ref:b,"data-testid":"seat-body",onScroll:h=>void fe.set(g,{top:h.currentTarget.scrollTop,turns:u.turns.length}),style:{minHeight:0,maxHeight:m?ge:e?"calc(70cqh - 96px)":"min(520px, calc(100cqh - 112px))",overflowY:"auto",overflowX:"hidden",padding:"0 4px"},children:(0,p.jsx)(ne,{shared:!0,composer:!1,testId:"seat",onPick:f,...a?{onMove:a}:{},...s?{place:s}:{},...l?{onDraft:l}:{},empty:(0,p.jsx)(Te,{...s?{here:s}:{}}),...r?{respond:r}:{},...o?{onCall:o}:{}})}),(0,p.jsx)("p",{"aria-live":"polite","data-testid":"seat-said",style:Z,children:u.busy?"":S?.text??""})]})}function xe(e){let{setView:n}=C();return(0,y.useCallback)(t=>e?e(t):n(i=>Y(F(_(i,!1),t),[t])),[e,n])}function Te({here:e}){let{store:n,views:t,view:i,seatTalk:r}=C(),o=te({hover:!1}),c=q(n,V()),a=(0,y.useMemo)(()=>c.map(d=>d.line?{...d,message:B(d)}:d),[c]),s=o.id?n.graph.getNode(o.id):void 0,l=e??i.within?.view,g=o.because==="place"&&o.id===null?t.places().find(d=>d.title===o.name):l?t.places().find(d=>d.as===l):void 0,u=n.today(),f={store:n,subject:{id:o.id,name:o.name},violations:a,place:g?{title:g.title,kind:g.kind}:null,places:t.places().map(d=>({title:d.title,kind:d.kind,picture:!0})),...u?{today:u}:{}},S=de(f),m=ce(f),b=(0,y.useMemo)(()=>({pins:X(),...s?{focus:s.id,about:[s.id]}:{}}),[s?.id]),{affordances:w}=J(b),h=s?pe(w,{store:n,subject:{id:o.id,name:o.name}}):[],{apply:A,preview:k}=ee(),[v,$]=(0,y.useState)(null),[D,R]=(0,y.useState)(null),H=(d,x)=>{try{return k(d,x),A(d,x),R(null),!0}catch(I){return R(z(n.schema,n.allMutations(),I)),!1}};return(0,p.jsxs)("div",{"data-testid":"seat-here",style:{display:"grid",gap:10,padding:"2px 2px 6px"},children:[(0,p.jsx)("p",{"data-testid":"seat-where",style:{margin:0,fontSize:"0.9375rem",lineHeight:1.45,color:"var(--graview-ink)"},children:S}),h.length>0?(0,p.jsx)("ul",{"aria-label":"What you can do",style:{margin:0,padding:0,listStyle:"none",display:"flex",flexWrap:"wrap",gap:6},children:h.map(({affordance:d,label:x})=>(0,p.jsx)("li",{children:(0,p.jsx)("button",{type:"button","data-testid":"seat-act","data-affordance":d.id,"aria-pressed":v?.id===d.id,title:d.why,onClick:()=>d.open.length>0?$(I=>I?.id===d.id?null:d):void H(d),style:{...ie,minHeight:30,textAlign:"start",...d.destructive?{color:"var(--graview-warn)"}:{}},children:x})},d.id))}):null,v?(0,p.jsx)(G,{affordance:v,onApply:d=>{H(v,d)&&$(null)},onCancel:()=>$(null)}):null,D?(0,p.jsx)("p",{"data-testid":"seat-refused",style:{margin:0,fontSize:"0.8125rem",color:"var(--graview-warn)"},children:D}):null,m.length>0?(0,p.jsx)("ul",{"aria-label":"Things to ask",style:{margin:0,padding:0,listStyle:"none",display:"grid",gap:2,justifyItems:"start"},children:m.map(d=>(0,p.jsx)("li",{children:(0,p.jsx)("button",{type:"button","data-testid":"seat-suggestion","data-graview-why":d.why,onClick:()=>r.ask(d.ask),style:oe,children:d.ask})},d.ask))}):null]})}var ge="min(5.5em, 22cqh)",fe=new WeakMap,L={far:64,flick:.5,least:16,tap:6};function Ce(e,n){if(e.button!==0)return;let t=e.currentTarget,i=t.closest('[data-testid="seat"]');if(!i)return;let r=e.pointerId,o=e.clientY,c={y:o,at:e.timeStamp},a=0,s=0;try{t.setPointerCapture(r)}catch{}let l=u=>{if(u.pointerId!==r)return;s=Math.max(0,u.clientY-o);let f=u.timeStamp-c.at;f>0&&(a=(u.clientY-c.y)/f),c={y:u.clientY,at:u.timeStamp},i.style.transition="none",i.style.transform=s>0?`translateY(${s}px)`:""},g=u=>{if(u.pointerId!==r)return;t.removeEventListener("pointermove",l),t.removeEventListener("pointerup",g),t.removeEventListener("pointercancel",g);let f=u.type==="pointerup"&&(s>=L.far||s>=L.least&&a>=L.flick);if(i.style.transition=f?"":"transform 160ms ease-out",i.style.transform="",s>L.tap){let S=m=>{m.preventDefault(),m.stopPropagation()};t.addEventListener("click",S,{capture:!0,once:!0}),setTimeout(()=>t.removeEventListener("click",S,{capture:!0}),0)}f&&n()};t.addEventListener("pointermove",l),t.addEventListener("pointerup",g),t.addEventListener("pointercancel",g)}var E={display:"inline-grid",placeItems:"center",width:28,height:28,padding:0,font:"inherit",fontSize:"0.875rem",lineHeight:1,color:"var(--graview-ink-muted)",background:"transparent",border:"1px solid transparent",borderRadius:6,boxShadow:"none",cursor:"pointer"};export{ze as SeatPanel,xe as useSeatGo};
|
|
1
|
+
import{d as te,e as ne,f as ie,g as oe}from"./chunk.4RO5DA22.js";import{a as Q}from"./chunk.G4JJXA63.js";import{j as X,n as J,o as ee}from"./chunk.22H4JXTH.js";import"./chunk.2VUG6EAN.js";import"./chunk.IH42QTOM.js";import"./chunk.TBG2QBOS.js";import"./chunk.PN2H6X7O.js";import"./chunk.BCBH6WJF.js";import"./chunk.OGL4PHTY.js";import"./chunk.DCIC3YHX.js";import"./chunk.WHTNSETN.js";import{a as G}from"./chunk.W3LDQ6B2.js";import{a as q,d as B}from"./chunk.PWHJHFC4.js";import"./chunk.EYF6ONTA.js";import"./chunk.Q3HVA6L4.js";import"./chunk.AHDOKM4O.js";import"./chunk.6R4EI47C.js";import"./chunk.SNBIZ3B6.js";import{d as Z}from"./chunk.6LJ66MB7.js";import{V as U,da as C,i as F,l as _,q as Y,ra as V}from"./chunk.NRRUGG22.js";import{$ as W,Q as j,V as P,W as T,_ as N,db as z}from"./chunk.MKNXV4TM.js";import{a as he,b as K}from"./chunk.MRK6QJV5.js";import{b as O}from"./chunk.AJZBJBMO.js";var M=3;function re(e,n){return n.id?e.graph.getNode(n.id):void 0}function ae(e){return e?/^(?:kind|aggregate):([^:]+)$/.exec(e)?.[1]:void 0}function le(e,n){if(n)return e.find(t=>t.nodeIds.includes(n)||t.subjectId===n)}var ye=e=>{let n=e.trim();if(!n)return n;let t=n.charAt(0).toUpperCase()+n.slice(1);return/[.!?…]$/.test(t)?t:`${t}.`};function de({store:e,subject:n,violations:t,place:i}){let r=re(e,n),o=le(t,r?.id??null);if(o)return ye(o.message);if(r){let l=r.kind;return`${j(e.schema.tryDefinition(l),r)}, ${N(W(e.schema.tryDefinition(l),l))}.`}let c=i?.kind??ae(n.id);if(c){let l=e.graph.nodesOfKind(c).length,g=i?.title??n.name,u=T(e.schema,c),f=P(e.schema,c,l);return g.toLowerCase()===u.toLowerCase()?`${l===1?"There is":"There are"} ${f} here.`:`${g}: ${f}.`}let a=e.schema.kinds.map(l=>({kind:l,count:e.graph.nodesOfKind(l).length})).filter(l=>l.count>0).sort((l,g)=>g.count-l.count).slice(0,3);if(a.length===0)return"Nothing here yet.";let s=a.map(l=>P(e.schema,l.kind,l.count));return`The whole thing: ${s.length===1?s[0]:`${s.slice(0,-1).join(", ")} and ${s[s.length-1]}`}.`}function ce(e){let{store:n,subject:t,violations:i}=e,r=re(n,t),o=[];r&&le(i,r.id)?o.push({ask:`What's wrong with ${t.name}?`,why:"problem"}):i.length>0&&o.push({ask:"What needs attention?",why:"problem"});let c=r?r.kind:e.place?.kind??ae(t.id),a=ve(e,c);if(a)o.push(a);else{let l=ke(e,c);l&&o.push(l)}let s=be(e,c);return s&&o.push(s),o.length<M&&(r?o.push({ask:`Tell me about ${t.name}`,why:"about"}):o.push({ask:"What is here?",why:"here"})),o.slice(0,M)}function ue(e,n){return e.schema.tryDefinition(n)?.fields?.shape??{}}function me(e){let n=e;for(let t=0;t<4&&n;t++){let i=n;if(Array.isArray(i.options)&&i.options.every(r=>typeof r=="string"))return i.options;n=typeof i.unwrap=="function"?i.unwrap():i._def?.innerType}}var se=/^\d{4}-\d{2}-\d{2}/,Se=["due","deadline","date","when"];function ve(e,n){let{store:t}=e,i=e.today;if(!i||!se.test(i))return;let r=new Date(`${i.slice(0,10)}T00:00:00Z`);r.setUTCDate(r.getUTCDate()+6);let o=r.toISOString().slice(0,10),c=[...new Set([...n?[n]:[],...t.schema.kinds])];for(let a of c){let s=Se.find(u=>u in ue(t,a));if(!s||!t.graph.nodesOfKind(a).some(u=>{let f=u[s],S=u.done;return typeof f=="string"&&se.test(f)&&f.slice(0,10)>=i.slice(0,10)&&f.slice(0,10)<=o&&S!==!0}))continue;let g=T(t.schema,a);return{ask:`${Q(g)} due this week`,why:"due"}}}function ke(e,n){let t=e.place?.title,i=(e.places??[]).find(r=>r.kind!==null&&r.picture===!0&&r.title!==t&&r.kind!==n);return i?{ask:`Go to ${i.title}`,why:"go"}:void 0}function be(e,n){let{store:t}=e,i=[...t.schema.kinds].sort((o,c)=>t.graph.nodesOfKind(c).length-t.graph.nodesOfKind(o).length),r=[...new Set([...n?[n]:[],...i])];for(let o of r){if(t.graph.nodesOfKind(o).length<2)continue;let c=ue(t,o),a=Object.keys(c).find(g=>(me(c[g])?.length??0)>=2);if(!a)continue;let s=T(t.schema,o).toLowerCase(),l=a.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").toLowerCase();return{ask:`Show ${s} as a board by ${l}`,why:"draw"}}}function pe(e,{store:n,subject:t}){let i=a=>t.id!==null&&(a.nodeIds.includes(t.id)||Object.values(a.args).includes(t.id)),r=e.filter(a=>a.provider==="invariant"&&i(a)),o=e.filter(a=>a.pinned==="user"&&!r.includes(a));return[...r,...o].sort((a,s)=>Number(a.destructive??!1)-Number(s.destructive??!1)).slice(0,M).map(a=>({affordance:a,label:Ae(a,{store:n,subject:t})}))}var we=e=>/^[a-z0-9]+(?:[-_][a-z0-9]+)+$|^[a-z]+[A-Z][A-Za-z0-9]*$/.test(e);function Ae(e,{store:n,subject:t}){let i=e.label,r=we(i)||i===e.mutation;if(r){let s=i.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").toLowerCase();i=s.charAt(0).toUpperCase()+s.slice(1)}let o=t.id?n.graph.getNode(t.id):void 0,c=o!==void 0&&e.nodeIds.length<=1&&(e.nodeIds[0]??o.id)===o.id;if(c&&/\bit\b/.test(i))return i.replace(/\bit\b/,t.name);let a=n.allMutations().find(s=>s.name===e.mutation);if(e.open.length===0&&a?.describe&&(r||c))try{let s=a.describe(e.args,n.graph);if(s.trim())return s.trim()}catch{}return i}var y=O(he(),1);var p=O(K(),1);function ze({phone:e,side:n,name:t,onClose:i,respond:r,onCall:o,onPick:c,onMove:a,place:s,onDraft:l}){let{seatTalk:g}=C(),u=U(g),f=xe(c),S=[...u.turns].reverse().find(h=>h.role==="seat"),m=e&&u.draft!==null,b=(0,y.useRef)(null),w=(0,y.useRef)(!0);return(0,y.useLayoutEffect)(()=>{let h=b.current;if(!h)return;let A=m?[...h.querySelectorAll("ol > li")].pop():void 0;if(A){let v=A.getBoundingClientRect().top-h.getBoundingClientRect().top+h.scrollTop;h.style.maxHeight=`min(${Math.ceil(h.scrollHeight-v)}px, ${ge})`}let k=w.current?fe.get(g):void 0;w.current=!1,h.scrollTop=k&&k.turns===u.turns.length&&!u.busy?k.top:h.scrollHeight},[u.turns.length,u.busy,m]),(0,p.jsxs)("div",{"data-testid":"seat-panel",...m?{"data-graview-seat-yields":""}:{},style:{display:"grid",gridTemplateRows:"auto minmax(0, 1fr)",gap:4,minHeight:0},children:[(0,p.jsxs)("div",{"data-testid":"seat-top",...e?{onPointerDown:h=>Ce(h,i)}:{},style:{display:"flex",alignItems:"center",justifyContent:e?"center":"flex-end",gap:2,position:"relative",minHeight:28,...e?{touchAction:"none"}:{}},children:[e?(0,p.jsx)("button",{type:"button","data-testid":"seat-grab","aria-label":`Close Ask ${t}`,title:"Close",onClick:i,style:{...E,width:64},children:(0,p.jsx)("span",{"aria-hidden":"true",style:{display:"block",width:36,height:4,margin:"0 auto",borderRadius:2,background:"var(--graview-edge-strong, var(--graview-ink-faint))"}})}):(0,p.jsx)("button",{type:"button","data-testid":"seat-side","aria-label":n==="left"?"Move to the right":"Move to the left",title:n==="left"?"Move to the right":"Move to the left",onClick:()=>g.setSide(n==="left"?"right":"left"),style:E,children:(0,p.jsx)("span",{"aria-hidden":"true",children:"\u21C4"})}),(0,p.jsx)("button",{type:"button","data-testid":"seat-close","aria-label":`Close Ask ${t}`,title:"Close",onClick:i,style:e?{...E,position:"absolute",top:0,right:0}:E,children:(0,p.jsx)("span",{"aria-hidden":"true",children:"\u2715"})})]}),(0,p.jsx)("div",{ref:b,"data-testid":"seat-body",onScroll:h=>void fe.set(g,{top:h.currentTarget.scrollTop,turns:u.turns.length}),style:{minHeight:0,maxHeight:m?ge:e?"calc(70cqh - 96px)":"min(520px, calc(100cqh - 112px))",overflowY:"auto",overflowX:"hidden",padding:"0 4px"},children:(0,p.jsx)(ne,{shared:!0,composer:!1,testId:"seat",onPick:f,...a?{onMove:a}:{},...s?{place:s}:{},...l?{onDraft:l}:{},empty:(0,p.jsx)(Te,{...s?{here:s}:{}}),...r?{respond:r}:{},...o?{onCall:o}:{}})}),(0,p.jsx)("p",{"aria-live":"polite","data-testid":"seat-said",style:Z,children:u.busy?"":S?.text??""})]})}function xe(e){let{setView:n}=C();return(0,y.useCallback)(t=>e?e(t):n(i=>Y(F(_(i,!1),t),[t])),[e,n])}function Te({here:e}){let{store:n,views:t,view:i,seatTalk:r}=C(),o=te({hover:!1}),c=q(n,V()),a=(0,y.useMemo)(()=>c.map(d=>d.line?{...d,message:B(d)}:d),[c]),s=o.id?n.graph.getNode(o.id):void 0,l=e??i.within?.view,g=o.because==="place"&&o.id===null?t.places().find(d=>d.title===o.name):l?t.places().find(d=>d.as===l):void 0,u=n.today(),f={store:n,subject:{id:o.id,name:o.name},violations:a,place:g?{title:g.title,kind:g.kind}:null,places:t.places().map(d=>({title:d.title,kind:d.kind,picture:!0})),...u?{today:u}:{}},S=de(f),m=ce(f),b=(0,y.useMemo)(()=>({pins:X(),...s?{focus:s.id,about:[s.id]}:{}}),[s?.id]),{affordances:w}=J(b),h=s?pe(w,{store:n,subject:{id:o.id,name:o.name}}):[],{apply:A,preview:k}=ee(),[v,$]=(0,y.useState)(null),[D,R]=(0,y.useState)(null),H=(d,x)=>{try{return k(d,x),A(d,x),R(null),!0}catch(I){return R(z(n.schema,n.allMutations(),I)),!1}};return(0,p.jsxs)("div",{"data-testid":"seat-here",style:{display:"grid",gap:10,padding:"2px 2px 6px"},children:[(0,p.jsx)("p",{"data-testid":"seat-where",style:{margin:0,fontSize:"0.9375rem",lineHeight:1.45,color:"var(--graview-ink)"},children:S}),h.length>0?(0,p.jsx)("ul",{"aria-label":"What you can do",style:{margin:0,padding:0,listStyle:"none",display:"flex",flexWrap:"wrap",gap:6},children:h.map(({affordance:d,label:x})=>(0,p.jsx)("li",{children:(0,p.jsx)("button",{type:"button","data-testid":"seat-act","data-affordance":d.id,"aria-pressed":v?.id===d.id,title:d.why,onClick:()=>d.open.length>0?$(I=>I?.id===d.id?null:d):void H(d),style:{...ie,minHeight:30,textAlign:"start",...d.destructive?{color:"var(--graview-warn)"}:{}},children:x})},d.id))}):null,v?(0,p.jsx)(G,{affordance:v,onApply:d=>{H(v,d)&&$(null)},onCancel:()=>$(null)}):null,D?(0,p.jsx)("p",{"data-testid":"seat-refused",style:{margin:0,fontSize:"0.8125rem",color:"var(--graview-warn)"},children:D}):null,m.length>0?(0,p.jsx)("ul",{"aria-label":"Things to ask",style:{margin:0,padding:0,listStyle:"none",display:"grid",gap:2,justifyItems:"start"},children:m.map(d=>(0,p.jsx)("li",{children:(0,p.jsx)("button",{type:"button","data-testid":"seat-suggestion","data-graview-why":d.why,onClick:()=>r.ask(d.ask),style:oe,children:d.ask})},d.ask))}):null]})}var ge="min(5.5em, 22cqh)",fe=new WeakMap,L={far:64,flick:.5,least:16,tap:6};function Ce(e,n){if(e.button!==0)return;let t=e.currentTarget,i=t.closest('[data-testid="seat"]');if(!i)return;let r=e.pointerId,o=e.clientY,c={y:o,at:e.timeStamp},a=0,s=0;try{t.setPointerCapture(r)}catch{}let l=u=>{if(u.pointerId!==r)return;s=Math.max(0,u.clientY-o);let f=u.timeStamp-c.at;f>0&&(a=(u.clientY-c.y)/f),c={y:u.clientY,at:u.timeStamp},i.style.transition="none",i.style.transform=s>0?`translateY(${s}px)`:""},g=u=>{if(u.pointerId!==r)return;t.removeEventListener("pointermove",l),t.removeEventListener("pointerup",g),t.removeEventListener("pointercancel",g);let f=u.type==="pointerup"&&(s>=L.far||s>=L.least&&a>=L.flick);if(i.style.transition=f?"":"transform 160ms ease-out",i.style.transform="",s>L.tap){let S=m=>{m.preventDefault(),m.stopPropagation()};t.addEventListener("click",S,{capture:!0,once:!0}),setTimeout(()=>t.removeEventListener("click",S,{capture:!0}),0)}f&&n()};t.addEventListener("pointermove",l),t.addEventListener("pointerup",g),t.addEventListener("pointercancel",g)}var E={display:"inline-grid",placeItems:"center",width:28,height:28,padding:0,font:"inherit",fontSize:"0.875rem",lineHeight:1,color:"var(--graview-ink-muted)",background:"transparent",border:"1px solid transparent",borderRadius:6,boxShadow:"none",cursor:"pointer"};export{ze as SeatPanel,xe as useSeatGo};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as z,b as Z,c as X,d as G}from"./chunk.DG2WKNMX.js";import{a as q}from"./chunk.HPD3DSTP.js";import{c as R,e as K}from"./chunk.VD6FJ6KJ.js";import{a as j,b as $,c as U,e as O,l as W,m as g,n as H}from"./chunk.OHGJ5BZ4.js";import{B as v,C as _,E as I,G as L,I as A,J as k,K as b,P as D,T as x,Y as F}from"./chunk.VMEX2KZ4.js";var T=e=>e?._zod?.def,ie=/^\^\\d\{4\}-\\d\{2\}-\\d\{2\}\$$/;function se(e){let n=T(e),a=!0,r;for(let i=0;n&&i<4;i++){if(n.type==="optional"||n.type==="nullable")a=!1;else if(n.type==="default")a=!1,r=n.defaultValue;else break;n=T(n.innerType)}if(!n)return{why:"it is not a zod field"};let o=_(e),t={...a?{required:!0}:{},...r!==void 0?{default:r}:{},...o?{description:o}:{}},d=(n.checks??[]).map(i=>T(i)),l=b(e);if(l)return{spec:{type:l,...t}};switch(n.type){case"string":{let i=n.format;return i==="email"?{spec:{type:"email",...t}}:i==="url"?{spec:{type:"url",...t}}:i==="date"?{spec:{type:"date",...t}}:i==="datetime"?{spec:{type:"datetime",...t}}:d.some(s=>s?.format==="regex"&&ie.test(String(s?.pattern?.source??"")))?{spec:{type:"date",...t}}:{spec:{type:"string",...t}}}case"number":{let i={};for(let s of d){let u=s?.value;typeof u=="number"&&(s?.check==="greater_than"&&s.inclusive?i.min=Math.max(i.min??u,u):s?.check==="less_than"&&s.inclusive?i.max=Math.min(i.max??u,u):s?.check==="multiple_of"&&(i.step=u))}return{spec:{type:d.some(s=>s?.format==="safeint"||s?.format==="int")?"integer":"number",...i,...t}}}case"boolean":return{spec:{type:"boolean",...t}};case"enum":{let i=Object.keys(n.entries??{});return i.length>0?{spec:{type:"enum",options:i,...t}}:{why:"it is an enum with no options"}}case"array":{let i=T(n.element),s=b(n.element)??(i?.type==="number"?"number":i?.type==="string"?"string":void 0);return s?{spec:{type:"list",of:s,...t}}:{why:`it is a list of ${String(i?.type??"something")}, and a document lists words, numbers, dates, images or files`}}default:return{why:`it is a ${String(n.type)}, which a document has no field type for`}}}function N(e){let n=se(e);return"spec"in n?n.spec:void 0}var M=e=>e.caption?.trim()||e.name;function de(e){let n=e?.fields?.shape??{};return Object.keys(n).filter(a=>{let r=v(n[a]);for(;r?.innerType;)r=v(r.innerType);return b(n[a])!==void 0||r?.type==="array"&&b(r.element)!==void 0})}function Fe(e,n){for(let a of de(n)){let r=k(e[a]).find(A);if(r)return r}}var S=e=>{try{return e()}catch{return null}},ne=e=>typeof e=="string"&&z.includes(e);function le(e){if(e!==void 0)return ne(e)?e:e&&typeof e=="object"&&typeof e.expr=="string"?{expr:S(()=>R(e.expr))}:"neutral"}var ue=4;function ye(e){let n=typeof e.list=="string"?S(()=>R(e.list)):null,a=e.sort,r=typeof a=="string"?a:a&&typeof a=="object"&&typeof a.by=="string"?a.by:void 0,o=a&&typeof a=="object"?a.direction:void 0,t=n,d;if(n&&r!==void 0)if(o==="choices")d=r;else{let p=S(()=>R(r));t=p?{t:"call",fn:"sort",args:[n,p,{t:"lit",value:o==="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,G):void 0,i=e.group,s=typeof i=="string"?i:i&&typeof i=="object"&&typeof i.by=="string"?i.by:void 0,u=i&&typeof i=="object"&&i.headings&&typeof i.headings=="object"?i.headings:{};return{t:"list",source:t,...d?{choiceOrder:d}:{},...l?{limit:l}:{},...s?{group:{by:s,headings:Object.fromEntries(Object.entries(u).filter(p=>typeof p[1]=="string"))}}:{},...typeof e.empty=="string"?{empty:e.empty}:{},as:e.as==="card"?"card":"row"}}function J(e,n=1,a=""){if(!Array.isArray(e)||n>ue)return[];let r={};return e.flatMap(o=>{if(!o||typeof o!="object"||Array.isArray(o))return[];let t=o,d=f=>typeof f=="string"?S(()=>K(f)):null,l=f=>typeof f=="string"?S(()=>R(f)):null,i=le(t.tone),s=typeof t.label=="string"?t.label:void 0,u=f=>Object.hasOwn(t,f),p=typeof t.currency=="string"&&/^[A-Z]{3}$/.test(t.currency)?t.currency:void 0,y=u("list")?"list":u("headline")?"headline":typeof t.figure=="string"?"number":fe.find(u);if(!y)return[];let B=r[y]=(r[y]??0)+1,E=t.key,P=typeof E=="string"&&E?E:`${a}${y}.${B}`;return[{...(()=>{switch(y){case"list":return ye(t);case"number":{let f=X.includes(t.as)?t.as:void 0;return{t:y,value:l(t.figure),...f?{as:f}:{},...p?{currency:p}:{},...s?{label:d(s)}:{}}}case"headline":case"title":return{t:y,parts:d(t[y])};case"text":case"badge":return{t:y,parts:d(t[y]),...i?{tone:i}:{}};case"field":{let f=Z.includes(t.as)?t.as:void 0;return{t:y,field:String(t.field),...f?{as:f}:{},...p?{currency:p}:{},...s?{label:s}:{}}}case"image":return{t:y,field:String(t.image),as:t.as==="gallery"?"gallery":"thumb",...s?{label:s}:{}};case"progress":{let f=t.progress??{};return{t:y,value:l(f.value),max:l(f.max),...s?{label:d(s)}:{}}}case"group":return{t:y,blocks:J(t.group,n+1,`${P}.`),direction:t.direction==="row"?"row":"column"};case"when":return{t:y,when:l(t.when),show:J(t.show,n+1,`${P}.`)};default:return{t:y}}})(),key:P}]})}var fe=["title","text","badge","field","image","progress","group","when","divider","figure"],m="\u2014",pe=500;function h(e,n){if(!e)return{ok:!1,problem:"an expression that does not parse"};try{return{ok:!0,value:O(e,{graph:n.graph??W,subject:n.node,kinds:n.kinds,today:n.today,budget:n.budget??pe})}}catch(a){return{ok:!1,problem:a instanceof Error?a.message:String(a)}}}function w(e,n){if(!e)return{text:m,problem:"a template that does not parse"};let a,r=e.map(o=>{if(o.text!==void 0)return o.text;let t=h(o.expr??null,n);return t.ok?g(t.value,o.format,n.today,o.formatArgs,n.money):(a??=`{${o.source??""}}: ${t.problem}`,m)}).join("");return a?{text:r,problem:a}:{text:r}}function Y(e,n){if(e===void 0)return;if(typeof e=="string")return e;let a=h(e.expr,n);return a.ok&&ne(a.value)?a.value:"neutral"}function ce(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 me(e,n,a,r,o){if(n==null||n==="")return m;if(typeof n=="boolean")return n?"yes":"no";if(r)return g(n,r,a.today,[],o?{...a.money,currency:o}:a.money);let t=a.fields[e];if(a.definition?.display?.format?.[e])return x(a.definition,e,n);if(t?.type==="date")return g(n,"date",a.today);if(t?.type==="enum"&&typeof n=="string")return x(a.definition,e,n);if(typeof n=="number")return n.toLocaleString("en-US");let d=k(n);return d[0]?d.map(M).join(", "):Array.isArray(n)?n.map(l=>String(l)).join(", "):typeof n=="object"?m:String(n)}function ge(e,n,a,r,o){return typeof e!="number"?String(e):n==="money"?H(e,a?{...o,currency:a}:o):n==="percent"?g(e,n,r):e.toLocaleString("en-US",{maximumFractionDigits:2})}var c=(e,n)=>n?{...e,problem:n}:e;function he(e,n,a){switch(e.t){case"title":{let r=w(e.parts,n);return c({t:"title",text:r.text},r.problem)}case"text":{let r=w(e.parts,n),o=Y(e.tone,n);return c({t:"text",text:r.text,...o?{tone:o}:{}},r.problem)}case"badge":{let r=w(e.parts,n);return c({t:"badge",text:r.text,tone:Y(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:m,problem:`"${e.field}" names a field, and these blocks are about no one record`};let o=n.kinds.get(n.node.kind)?.computed?.has(e.field),t,d;if(o){let s=h({t:"ident",name:e.field,at:0},n);s.ok?t=s.value!==null&&typeof s.value=="object"?g(s.value,void 0,n.today):s.value:d=s.problem}else t=Object.hasOwn(n.node,e.field)?n.node[e.field]:void 0;let l=n.fields[e.field]?.type==="url"&&e.as===void 0?ce(t):void 0,i=S(()=>me(e.field,t,n,e.as,e.currency))??m;return c({t:"field",field:e.field,label:r,text:i,...l?{href:l}:{}},d)}case"image":{let r=k(n.node&&Object.hasOwn(n.node,e.field)?n.node[e.field]:null),o=e.as==="gallery"?r:r.filter(A).slice(0,1);return{t:"image",field:e.field,label:e.label??F(n.definition,e.field),as:e.as,files:o,text:o.map(M).join(", ")||m}}case"progress":{let r=h(e.value,n),o=h(e.max,n),t=e.label?w(e.label,n):{text:"Progress"},d=t.text,l=r.ok?o.ok?t.problem:o.problem:r.problem;return r.ok&&o.ok&&typeof r.value=="number"&&typeof o.value=="number"&&Number.isFinite(r.value)&&Number.isFinite(o.value)&&o.value>0?c({t:"progress",label:d,value:r.value,max:o.value,text:`${g(r.value,void 0,n.today)} of ${g(o.value,void 0,n.today)}`},l):c({t:"progress",label:d,text:m},l)}case"group":return{t:"group",direction:e.direction,blocks:Q(e.blocks,n)};case"when":{let r=h(e.when,n),o=r.ok&&r.value===!0;return c({t:"when",shown:o,blocks:o?Q(e.show,n):[]},r.ok?void 0:r.problem)}case"divider":return{t:"divider"};case"figure":return{t:"figure"};case"headline":{let r=w(e.parts,n),o=Math.min(6,Math.max(1,(a?n.firstHeading:void 0)??n.heading??3));return c({t:"headline",level:o,text:r.text},r.problem)}case"number":{let r=h(e.value,n),o=!r.ok||r.value===null||typeof r.value=="object"?m:ge(r.value,e.as,e.currency,n.today,n.money),t=e.label?w(e.label,n):void 0;return c({t:"number",text:o,...t?{label:t.text}:{}},r.ok?t?.problem:r.problem)}case"list":return we(e,n)}}function Q(e,n){let a=e.findIndex(r=>r.t==="headline");return e.map((r,o)=>({...he(r,n,o===a),key:r.key}))}var be=new Set(["every","some","sum","min","max","sort"]);function He(e,n){let a=new Set,r=new Set,o=i=>{if(i)switch(i.t){case"ident":a.add(i.name);return;case"list":i.items.forEach(o);return;case"member":return o(i.object);case"unary":return o(i.operand);case"binary":return o(i.left),o(i.right);case"where":return o(i.set);case"call":i.args.forEach((s,u)=>{u===1&&be.has(i.fn)||o(s)});return;default:return}},t=i=>{for(let s of i??[])o(s.expr)},d=(i,s)=>{i.forEach((u,p)=>{let y=s[p];if(y)switch(u.t){case"field":case"image":a.add(u.field);return;case"title":case"text":case"badge":case"headline":t(u.parts);return;case"number":o(u.value),t(u.label);return;case"progress":o(u.value),o(u.max);return;case"group":y.t==="group"&&d(u.blocks,y.blocks);return;case"when":y.t==="when"&&y.shown&&d(u.show,y.blocks);return;case"list":if(y.t==="list")for(let B of y.members)r.add(B.id);return;default:return}})};d(e,n);let l=n[0];return{fields:a,records:r,...e[0]?.t==="title"&&l?.t==="title"?{title:l.text}:{}}}function we(e,n){let a=Math.min(6,(n.heading??3)+1),r=h(e.source,n);if(!r.ok)return{t:"list",as:e.as,failed:!0,members:[],headingLevel:a,more:0,problem:r.problem};let o=r.value,t=o instanceof j?o.nodes:o!==null&&typeof o=="object"&&!Array.isArray(o)?[o]:[];e.choiceOrder&&n.schema&&(t=Se(t,e.choiceOrder,n.schema));let d=t.length;t=t.slice(0,e.limit??G);let l=e.limit===void 0?d-t.length:0;return{t:"list",as:e.as,failed:!1,members:t,...e.group&&n.schema&&t.length>0?{groups:ke(t,e.group,n.schema)}:{},headingLevel:a,...t.length===0&&e.empty?{empty:e.empty}:{},more:l}}function re(e,n,a){let r=e.tryDefinition(n)?.fields?.shape,o=r&&Object.hasOwn(r,a)?N(r[a]):void 0;return o?.type==="enum"?o.options??[]:[]}var V=(e,n)=>Object.hasOwn(e,n)?e[n]:void 0;function Se(e,n,a){let r=o=>{let t=re(a,o.kind,n).indexOf(String(V(o,n)));return t<0?Number.MAX_SAFE_INTEGER:t};return e.map((o,t)=>({node:o,i:t,rank:r(o)})).sort((o,t)=>o.rank-t.rank||o.i-t.i).map(o=>o.node)}function ke(e,n,a){let r=[];for(let d of e)for(let l of re(a,d.kind,n.by))r.includes(l)||r.push(l);let o=[];for(let d of r){let l=e.filter(s=>V(s,n.by)===d);if(l.length===0)continue;let i=a.tryDefinition(l[0].kind);o.push({value:d,heading:n.headings[d]??L(x(i,n.by,d)),members:l})}let t=e.filter(d=>!r.includes(String(V(d,n.by))));return t.length>0&&o.push({value:null,members:t}),o}function ee(e){return e.t==="list"||e.t==="headline"||e.t==="number"||e.t==="image"&&e.as==="gallery"?!0:e.t==="group"?e.blocks.some(ee):e.t==="when"?e.show.some(ee):!1}function te(e,n){let a=e.tryDefinition(n)?.fields?.shape??{},r={};for(let[o,t]of Object.entries(a)){let d=N(t);d&&(r[o]=d)}return r}var oe=new WeakMap;function C(e){let n=oe.get(e);return n||oe.set(e,n=q(e)),n}function Re(e,n,a,r={}){let o=C(e),t={},d={},l=i=>{if(i instanceof j)return i.nodes.map(s=>l(s));if(Array.isArray(i))return i.map(s=>l(s));if(i!==null&&typeof i=="object"){let s=i;return{id:s.id,kind:s.kind,label:D(e.tryDefinition(s.kind),s)}}return i};for(let[i,s]of o.get(a?a.kind:$)?.computed??[])try{t[i]=l(O(s,{graph:n,subject:a,kinds:o,...r.today?{today:r.today}:{},...r.budget?{budget:r.budget}:{}}))}catch(u){if(!(u instanceof U))throw u;d[i]=u.sentence}return{values:t,refused:d}}function qe(e,n,a){let{values:r}=Re(e,n,a);if(Object.keys(r).length===0)return a;let o=t=>Array.isArray(t)?t.map(o):t!==null&&typeof t=="object"?t.label:t;return{...a,...Object.fromEntries(Object.entries(r).map(([t,d])=>[t,o(d)]))}}var Ae=500,xe=2e4,ae=new WeakMap;function je(e,n){let a=ae.get(e);a||ae.set(e,a=new Map);let r=a.get(n);return r||a.set(n,r=te(e,n)),r}function nn(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 o=n?e.seenBy(n):e,t=n&&a?o.graph.getNode(a.id)??null:a,d=o.schema,l=t&&d.tryDefinition(t.kind),i=!t||(r.slot??"page")==="page",{money:s,firstHeading:u}=r;return{node:t,graph:o.graph,schema:d,kinds:C(d),fields:t?je(d,t.kind):{},definition:l||void 0,today:r.today??o.today?.()??I(),money:s,heading:r.heading??(i?2:3),firstHeading:u,budget:r.budget??(i?xe:Ae)}}export{N as a,M as b,de as c,Fe as d,J as e,Q as f,He as g,ee as h,Re as i,qe as j,nn as k};
|
|
1
|
+
import{a as z,b as Z,c as X,d as G}from"./chunk.N2WTNKEV.js";import{a as q}from"./chunk.SBHVVJY7.js";import{c as R,e as K}from"./chunk.GE5EAN36.js";import{a as j,b as $,c as U,e as O,l as W,m as g,n as H}from"./chunk.337WDTG3.js";import{B as v,C as _,E as I,G as L,J as A,K as k,L as b,Q as D,U as x,Z as F}from"./chunk.MKNXV4TM.js";var T=e=>e?._zod?.def,ie=/^\^\\d\{4\}-\\d\{2\}-\\d\{2\}\$$/;function se(e){let n=T(e),a=!0,r;for(let i=0;n&&i<4;i++){if(n.type==="optional"||n.type==="nullable")a=!1;else if(n.type==="default")a=!1,r=n.defaultValue;else break;n=T(n.innerType)}if(!n)return{why:"it is not a zod field"};let o=_(e),t={...a?{required:!0}:{},...r!==void 0?{default:r}:{},...o?{description:o}:{}},d=(n.checks??[]).map(i=>T(i)),l=b(e);if(l)return{spec:{type:l,...t}};switch(n.type){case"string":{let i=n.format;return i==="email"?{spec:{type:"email",...t}}:i==="url"?{spec:{type:"url",...t}}:i==="date"?{spec:{type:"date",...t}}:i==="datetime"?{spec:{type:"datetime",...t}}:d.some(s=>s?.format==="regex"&&ie.test(String(s?.pattern?.source??"")))?{spec:{type:"date",...t}}:{spec:{type:"string",...t}}}case"number":{let i={};for(let s of d){let u=s?.value;typeof u=="number"&&(s?.check==="greater_than"&&s.inclusive?i.min=Math.max(i.min??u,u):s?.check==="less_than"&&s.inclusive?i.max=Math.min(i.max??u,u):s?.check==="multiple_of"&&(i.step=u))}return{spec:{type:d.some(s=>s?.format==="safeint"||s?.format==="int")?"integer":"number",...i,...t}}}case"boolean":return{spec:{type:"boolean",...t}};case"enum":{let i=Object.keys(n.entries??{});return i.length>0?{spec:{type:"enum",options:i,...t}}:{why:"it is an enum with no options"}}case"array":{let i=T(n.element),s=b(n.element)??(i?.type==="number"?"number":i?.type==="string"?"string":void 0);return s?{spec:{type:"list",of:s,...t}}:{why:`it is a list of ${String(i?.type??"something")}, and a document lists words, numbers, dates, images or files`}}default:return{why:`it is a ${String(n.type)}, which a document has no field type for`}}}function N(e){let n=se(e);return"spec"in n?n.spec:void 0}var M=e=>e.caption?.trim()||e.name;function de(e){let n=e?.fields?.shape??{};return Object.keys(n).filter(a=>{let r=v(n[a]);for(;r?.innerType;)r=v(r.innerType);return b(n[a])!==void 0||r?.type==="array"&&b(r.element)!==void 0})}function Fe(e,n){for(let a of de(n)){let r=k(e[a]).find(A);if(r)return r}}var S=e=>{try{return e()}catch{return null}},ne=e=>typeof e=="string"&&z.includes(e);function le(e){if(e!==void 0)return ne(e)?e:e&&typeof e=="object"&&typeof e.expr=="string"?{expr:S(()=>R(e.expr))}:"neutral"}var ue=4;function ye(e){let n=typeof e.list=="string"?S(()=>R(e.list)):null,a=e.sort,r=typeof a=="string"?a:a&&typeof a=="object"&&typeof a.by=="string"?a.by:void 0,o=a&&typeof a=="object"?a.direction:void 0,t=n,d;if(n&&r!==void 0)if(o==="choices")d=r;else{let p=S(()=>R(r));t=p?{t:"call",fn:"sort",args:[n,p,{t:"lit",value:o==="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,G):void 0,i=e.group,s=typeof i=="string"?i:i&&typeof i=="object"&&typeof i.by=="string"?i.by:void 0,u=i&&typeof i=="object"&&i.headings&&typeof i.headings=="object"?i.headings:{};return{t:"list",source:t,...d?{choiceOrder:d}:{},...l?{limit:l}:{},...s?{group:{by:s,headings:Object.fromEntries(Object.entries(u).filter(p=>typeof p[1]=="string"))}}:{},...typeof e.empty=="string"?{empty:e.empty}:{},as:e.as==="card"?"card":"row"}}function J(e,n=1,a=""){if(!Array.isArray(e)||n>ue)return[];let r={};return e.flatMap(o=>{if(!o||typeof o!="object"||Array.isArray(o))return[];let t=o,d=f=>typeof f=="string"?S(()=>K(f)):null,l=f=>typeof f=="string"?S(()=>R(f)):null,i=le(t.tone),s=typeof t.label=="string"?t.label:void 0,u=f=>Object.hasOwn(t,f),p=typeof t.currency=="string"&&/^[A-Z]{3}$/.test(t.currency)?t.currency:void 0,y=u("list")?"list":u("headline")?"headline":typeof t.figure=="string"?"number":fe.find(u);if(!y)return[];let B=r[y]=(r[y]??0)+1,E=t.key,P=typeof E=="string"&&E?E:`${a}${y}.${B}`;return[{...(()=>{switch(y){case"list":return ye(t);case"number":{let f=X.includes(t.as)?t.as:void 0;return{t:y,value:l(t.figure),...f?{as:f}:{},...p?{currency:p}:{},...s?{label:d(s)}:{}}}case"headline":case"title":return{t:y,parts:d(t[y])};case"text":case"badge":return{t:y,parts:d(t[y]),...i?{tone:i}:{}};case"field":{let f=Z.includes(t.as)?t.as:void 0;return{t:y,field:String(t.field),...f?{as:f}:{},...p?{currency:p}:{},...s?{label:s}:{}}}case"image":return{t:y,field:String(t.image),as:t.as==="gallery"?"gallery":"thumb",...s?{label:s}:{}};case"progress":{let f=t.progress??{};return{t:y,value:l(f.value),max:l(f.max),...s?{label:d(s)}:{}}}case"group":return{t:y,blocks:J(t.group,n+1,`${P}.`),direction:t.direction==="row"?"row":"column"};case"when":return{t:y,when:l(t.when),show:J(t.show,n+1,`${P}.`)};default:return{t:y}}})(),key:P}]})}var fe=["title","text","badge","field","image","progress","group","when","divider","figure"],m="\u2014",pe=500;function h(e,n){if(!e)return{ok:!1,problem:"an expression that does not parse"};try{return{ok:!0,value:O(e,{graph:n.graph??W,subject:n.node,kinds:n.kinds,today:n.today,budget:n.budget??pe})}}catch(a){return{ok:!1,problem:a instanceof Error?a.message:String(a)}}}function w(e,n){if(!e)return{text:m,problem:"a template that does not parse"};let a,r=e.map(o=>{if(o.text!==void 0)return o.text;let t=h(o.expr??null,n);return t.ok?g(t.value,o.format,n.today,o.formatArgs,n.money):(a??=`{${o.source??""}}: ${t.problem}`,m)}).join("");return a?{text:r,problem:a}:{text:r}}function Y(e,n){if(e===void 0)return;if(typeof e=="string")return e;let a=h(e.expr,n);return a.ok&&ne(a.value)?a.value:"neutral"}function ce(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 me(e,n,a,r,o){if(n==null||n==="")return m;if(typeof n=="boolean")return n?"yes":"no";if(r)return g(n,r,a.today,[],o?{...a.money,currency:o}:a.money);let t=a.fields[e];if(a.definition?.display?.format?.[e])return x(a.definition,e,n);if(t?.type==="date")return g(n,"date",a.today);if(t?.type==="enum"&&typeof n=="string")return x(a.definition,e,n);if(typeof n=="number")return n.toLocaleString("en-US");let d=k(n);return d[0]?d.map(M).join(", "):Array.isArray(n)?n.map(l=>String(l)).join(", "):typeof n=="object"?m:String(n)}function ge(e,n,a,r,o){return typeof e!="number"?String(e):n==="money"?H(e,a?{...o,currency:a}:o):n==="percent"?g(e,n,r):e.toLocaleString("en-US",{maximumFractionDigits:2})}var c=(e,n)=>n?{...e,problem:n}:e;function he(e,n,a){switch(e.t){case"title":{let r=w(e.parts,n);return c({t:"title",text:r.text},r.problem)}case"text":{let r=w(e.parts,n),o=Y(e.tone,n);return c({t:"text",text:r.text,...o?{tone:o}:{}},r.problem)}case"badge":{let r=w(e.parts,n);return c({t:"badge",text:r.text,tone:Y(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:m,problem:`"${e.field}" names a field, and these blocks are about no one record`};let o=n.kinds.get(n.node.kind)?.computed?.has(e.field),t,d;if(o){let s=h({t:"ident",name:e.field,at:0},n);s.ok?t=s.value!==null&&typeof s.value=="object"?g(s.value,void 0,n.today):s.value:d=s.problem}else t=Object.hasOwn(n.node,e.field)?n.node[e.field]:void 0;let l=n.fields[e.field]?.type==="url"&&e.as===void 0?ce(t):void 0,i=S(()=>me(e.field,t,n,e.as,e.currency))??m;return c({t:"field",field:e.field,label:r,text:i,...l?{href:l}:{}},d)}case"image":{let r=k(n.node&&Object.hasOwn(n.node,e.field)?n.node[e.field]:null),o=e.as==="gallery"?r:r.filter(A).slice(0,1);return{t:"image",field:e.field,label:e.label??F(n.definition,e.field),as:e.as,files:o,text:o.map(M).join(", ")||m}}case"progress":{let r=h(e.value,n),o=h(e.max,n),t=e.label?w(e.label,n):{text:"Progress"},d=t.text,l=r.ok?o.ok?t.problem:o.problem:r.problem;return r.ok&&o.ok&&typeof r.value=="number"&&typeof o.value=="number"&&Number.isFinite(r.value)&&Number.isFinite(o.value)&&o.value>0?c({t:"progress",label:d,value:r.value,max:o.value,text:`${g(r.value,void 0,n.today)} of ${g(o.value,void 0,n.today)}`},l):c({t:"progress",label:d,text:m},l)}case"group":return{t:"group",direction:e.direction,blocks:Q(e.blocks,n)};case"when":{let r=h(e.when,n),o=r.ok&&r.value===!0;return c({t:"when",shown:o,blocks:o?Q(e.show,n):[]},r.ok?void 0:r.problem)}case"divider":return{t:"divider"};case"figure":return{t:"figure"};case"headline":{let r=w(e.parts,n),o=Math.min(6,Math.max(1,(a?n.firstHeading:void 0)??n.heading??3));return c({t:"headline",level:o,text:r.text},r.problem)}case"number":{let r=h(e.value,n),o=!r.ok||r.value===null||typeof r.value=="object"?m:ge(r.value,e.as,e.currency,n.today,n.money),t=e.label?w(e.label,n):void 0;return c({t:"number",text:o,...t?{label:t.text}:{}},r.ok?t?.problem:r.problem)}case"list":return we(e,n)}}function Q(e,n){let a=e.findIndex(r=>r.t==="headline");return e.map((r,o)=>({...he(r,n,o===a),key:r.key}))}var be=new Set(["every","some","sum","min","max","sort"]);function He(e,n){let a=new Set,r=new Set,o=i=>{if(i)switch(i.t){case"ident":a.add(i.name);return;case"list":i.items.forEach(o);return;case"member":return o(i.object);case"unary":return o(i.operand);case"binary":return o(i.left),o(i.right);case"where":return o(i.set);case"call":i.args.forEach((s,u)=>{u===1&&be.has(i.fn)||o(s)});return;default:return}},t=i=>{for(let s of i??[])o(s.expr)},d=(i,s)=>{i.forEach((u,p)=>{let y=s[p];if(y)switch(u.t){case"field":case"image":a.add(u.field);return;case"title":case"text":case"badge":case"headline":t(u.parts);return;case"number":o(u.value),t(u.label);return;case"progress":o(u.value),o(u.max);return;case"group":y.t==="group"&&d(u.blocks,y.blocks);return;case"when":y.t==="when"&&y.shown&&d(u.show,y.blocks);return;case"list":if(y.t==="list")for(let B of y.members)r.add(B.id);return;default:return}})};d(e,n);let l=n[0];return{fields:a,records:r,...e[0]?.t==="title"&&l?.t==="title"?{title:l.text}:{}}}function we(e,n){let a=Math.min(6,(n.heading??3)+1),r=h(e.source,n);if(!r.ok)return{t:"list",as:e.as,failed:!0,members:[],headingLevel:a,more:0,problem:r.problem};let o=r.value,t=o instanceof j?o.nodes:o!==null&&typeof o=="object"&&!Array.isArray(o)?[o]:[];e.choiceOrder&&n.schema&&(t=Se(t,e.choiceOrder,n.schema));let d=t.length;t=t.slice(0,e.limit??G);let l=e.limit===void 0?d-t.length:0;return{t:"list",as:e.as,failed:!1,members:t,...e.group&&n.schema&&t.length>0?{groups:ke(t,e.group,n.schema)}:{},headingLevel:a,...t.length===0&&e.empty?{empty:e.empty}:{},more:l}}function re(e,n,a){let r=e.tryDefinition(n)?.fields?.shape,o=r&&Object.hasOwn(r,a)?N(r[a]):void 0;return o?.type==="enum"?o.options??[]:[]}var V=(e,n)=>Object.hasOwn(e,n)?e[n]:void 0;function Se(e,n,a){let r=o=>{let t=re(a,o.kind,n).indexOf(String(V(o,n)));return t<0?Number.MAX_SAFE_INTEGER:t};return e.map((o,t)=>({node:o,i:t,rank:r(o)})).sort((o,t)=>o.rank-t.rank||o.i-t.i).map(o=>o.node)}function ke(e,n,a){let r=[];for(let d of e)for(let l of re(a,d.kind,n.by))r.includes(l)||r.push(l);let o=[];for(let d of r){let l=e.filter(s=>V(s,n.by)===d);if(l.length===0)continue;let i=a.tryDefinition(l[0].kind);o.push({value:d,heading:n.headings[d]??L(x(i,n.by,d)),members:l})}let t=e.filter(d=>!r.includes(String(V(d,n.by))));return t.length>0&&o.push({value:null,members:t}),o}function ee(e){return e.t==="list"||e.t==="headline"||e.t==="number"||e.t==="image"&&e.as==="gallery"?!0:e.t==="group"?e.blocks.some(ee):e.t==="when"?e.show.some(ee):!1}function te(e,n){let a=e.tryDefinition(n)?.fields?.shape??{},r={};for(let[o,t]of Object.entries(a)){let d=N(t);d&&(r[o]=d)}return r}var oe=new WeakMap;function C(e){let n=oe.get(e);return n||oe.set(e,n=q(e)),n}function Re(e,n,a,r={}){let o=C(e),t={},d={},l=i=>{if(i instanceof j)return i.nodes.map(s=>l(s));if(Array.isArray(i))return i.map(s=>l(s));if(i!==null&&typeof i=="object"){let s=i;return{id:s.id,kind:s.kind,label:D(e.tryDefinition(s.kind),s)}}return i};for(let[i,s]of o.get(a?a.kind:$)?.computed??[])try{t[i]=l(O(s,{graph:n,subject:a,kinds:o,...r.today?{today:r.today}:{},...r.budget?{budget:r.budget}:{}}))}catch(u){if(!(u instanceof U))throw u;d[i]=u.sentence}return{values:t,refused:d}}function qe(e,n,a){let{values:r}=Re(e,n,a);if(Object.keys(r).length===0)return a;let o=t=>Array.isArray(t)?t.map(o):t!==null&&typeof t=="object"?t.label:t;return{...a,...Object.fromEntries(Object.entries(r).map(([t,d])=>[t,o(d)]))}}var Ae=500,xe=2e4,ae=new WeakMap;function je(e,n){let a=ae.get(e);a||ae.set(e,a=new Map);let r=a.get(n);return r||a.set(n,r=te(e,n)),r}function nn(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 o=n?e.seenBy(n):e,t=n&&a?o.graph.getNode(a.id)??null:a,d=o.schema,l=t&&d.tryDefinition(t.kind),i=!t||(r.slot??"page")==="page",{money:s,firstHeading:u}=r;return{node:t,graph:o.graph,schema:d,kinds:C(d),fields:t?je(d,t.kind):{},definition:l||void 0,today:r.today??o.today?.()??I(),money:s,heading:r.heading??(i?2:3),firstHeading:u,budget:r.budget??(i?xe:Ae)}}export{N as a,M as b,de as c,Fe as d,J as e,Q as f,He as g,ee as h,Re as i,qe as j,nn as k};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as m}from"./chunk.
|
|
1
|
+
import{b as m}from"./chunk.W3LDQ6B2.js";import{b as f}from"./chunk.Q3HVA6L4.js";import{d as T}from"./chunk.6LJ66MB7.js";import{da as c,fa as b,va as L,ya as R}from"./chunk.NRRUGG22.js";import{T as A,ca as I,da as k,ra as x}from"./chunk.MKNXV4TM.js";import{a as W,b as C}from"./chunk.MRK6QJV5.js";import{b as w}from"./chunk.AJZBJBMO.js";var u=w(W(),1);var e=w(C(),1);function z(i=4){let{store:n}=c(),p=b();return(0,u.useMemo)(()=>[...n.batches()].reverse().slice(0,i).map(a=>({intent:a.intent,author:a.author.kind,...a.author.id?{authorId:a.author.id}:{},by:a.author,...a.ops[0]?.via?{via:a.ops[0].via}:{},touched:[...new Set(a.ops.filter(o=>!x(o)).flatMap(o=>o.writes))],batch:a.id,...a.ops.every(x)?{withheld:!0}:{}})),[n,p,i])}function H({batch:i}){let{store:n,principal:p,noteSeat:a}=c(),o=b(),[h,y]=(0,u.useState)(null),l=(0,u.useMemo)(()=>n.canUndo(i),[n,i,o]);if(!l.ok&&l.ops.length===0)return null;let s=!l.ok,g=s?l.includeBatches:[];return(0,e.jsxs)("span",{style:{marginLeft:"auto",flex:"0 0 auto",display:"grid",justifyItems:"end",gap:2},children:[(0,e.jsx)("button",{type:"button","data-testid":"undo-turn",title:s?`${l.message} \u2014 undo those too`:"Take this back, keeping everything since",onClick:()=>{y(null);try{let d=n.log.all().find(t=>t.batch===i&&t.author.kind==="agent");n.undo(s?[i,...g]:i,{author:p}),d&&a({type:"home",author:d.author})}catch(d){y(d instanceof Error?d.message:String(d))}},style:{display:"inline-flex",alignItems:"center",minHeight:24,minWidth:24,padding:"1px 8px",fontSize:"0.75rem",...s?{borderColor:"var(--graview-warn)",color:"var(--graview-warn)"}:{}},children:s?`undo +${g.length}`:"undo"}),h?(0,e.jsx)("span",{"data-testid":"undo-refused",role:"alert",style:{fontSize:"0.75rem",lineHeight:1.4,color:"var(--graview-warn)",maxWidth:260,textAlign:"right"},children:h}):null]})}function O(){let i=()=>{let n=new URL(window.location.href);return n.searchParams.set("fresh","1"),n.toString()};return(0,e.jsx)("a",{href:"#fresh","data-testid":"start-fresh",title:"Forget every edit made in this browser and return to the example",onClick:n=>{n.preventDefault(),window.location.assign(i())},style:{display:"inline-flex",alignItems:"center",minHeight:24,minWidth:24,fontSize:"0.8125rem",color:"var(--graview-ink-muted)",textDecoration:"underline",textDecorationColor:"var(--graview-edge-bright)",textUnderlineOffset:3},children:"Start fresh"})}function N({calls:i,seat:n,remembers:p=!1}){let a=z(),{store:o,principal:h,seats:y,people:l}=c(),s=i.some(t=>t.phase==="running"),g=R("activity"),d=g.open;return n===void 0&&i.length===0&&a.length===0&&!p?null:(0,e.jsxs)("div",{style:{position:"relative"},children:[(0,e.jsxs)("button",{type:"button","data-testid":"activity-button",...g.trigger,onClick:g.toggle,title:s?"An agent is working":"What has happened",style:{display:"inline-flex",alignItems:"center",gap:6,minHeight:30,padding:"0 8px",borderRadius:8,border:"1px solid transparent",background:"transparent",boxShadow:"none",fontSize:"0.875rem",whiteSpace:"nowrap",color:s?"var(--graview-accent)":"var(--graview-ink-muted)"},children:[s?(0,e.jsx)("span",{"aria-hidden":"true",style:{width:6,height:6,borderRadius:999,background:"var(--graview-accent)"}}):null,a.length>0?a.length:"",(0,e.jsxs)("svg",{className:"graview-activity-mark",width:"15",height:"15",viewBox:"0 0 16 16","aria-hidden":"true",focusable:"false",style:{display:"var(--graview-activity-mark, none)"},children:[(0,e.jsx)("circle",{cx:"8",cy:"8",r:"5.75",fill:"none",stroke:"currentColor",strokeWidth:"1.4"}),(0,e.jsx)("path",{d:"M8 4.75 V8 L10.25 9.5",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})]}),(0,e.jsx)("span",{className:"graview-activity-word",children:" Activity"})]}),!d&&n!==void 0?(0,e.jsx)("div",{hidden:!0,"data-testid":"agent-seat-seated",children:n}):null,d?(0,e.jsxs)("section",{...g.pane,"aria-label":"Activity","data-testid":"activity","data-graview-offstage":"",style:{...L,width:300,maxHeight:"min(52cqh, 460px)",overflow:"auto",display:"flex",flexDirection:"column",gap:9,padding:12,borderRadius:10,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)"},children:[(0,e.jsx)("h2",{style:{...T,margin:0},children:"Activity"}),n!==void 0?(0,e.jsxs)("div",{"data-testid":"agent-seat-row",style:{display:"grid",gap:5,paddingBottom:i.length>0||a.length>0?9:0,...i.length>0||a.length>0?{borderBottom:"1px solid var(--graview-edge)"}:{}},children:[(0,e.jsx)("span",{style:{fontSize:"0.75rem",letterSpacing:"0.14em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},children:"The agent's seat"}),n]}):null,i.length>0?(0,e.jsx)("ol",{style:{margin:0,padding:0,listStyle:"none",display:"grid",gap:7},children:i.slice(0,6).map((t,v)=>(0,e.jsxs)("li",{style:{display:"grid",gap:2,fontSize:"0.8125rem",lineHeight:1.45},children:[(0,e.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:6},children:[(0,e.jsx)("span",{"aria-hidden":"true",style:{width:6,height:6,borderRadius:999,flex:"0 0 auto",background:t.phase==="running"?"var(--graview-accent)":t.phase==="failed"?"var(--graview-warn)":"var(--graview-edge-bright)"}}),(0,e.jsxs)("span",{style:{color:"var(--graview-ink)"},children:[t.mutating?"changed":"read"," \xB7"," ",o.allMutations().find(r=>r.name===t.name)?.title??A(t.name)]})]}),!t.mutating&&t.reads&&t.reads.length>0?(0,e.jsxs)("div",{"data-testid":"activity-reads",style:{display:"flex",flexWrap:"wrap",gap:4,paddingLeft:12},children:[[...new Set(t.reads)].slice(0,3).map(r=>(0,e.jsx)(f,{label:m(o,r),pickId:r},r)),new Set(t.reads).size>3?(0,e.jsxs)("span",{style:{color:"var(--graview-ink-muted)"},children:["+",new Set(t.reads).size-3]}):null]}):Object.values(t.args).some(r=>typeof r=="string")?(0,e.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:4,paddingLeft:12},children:Object.entries(t.args).filter(r=>typeof r[1]=="string").slice(0,3).map(([r,S])=>(0,e.jsx)(f,{label:m(o,S),pickId:S},r))}):null,t.error?(0,e.jsx)("div",{style:{paddingLeft:12,color:"var(--graview-warn)"},children:t.error}):null]},`${t.at}:${v}`))}):null,a.length>0?(0,e.jsx)("ol",{"data-testid":"diff-log",style:{margin:0,padding:0,listStyle:"none",display:"grid",gap:6,fontSize:"0.8125rem"},children:a.map((t,v)=>t.withheld?(0,e.jsx)("li",{"data-testid":"withheld-change",style:{display:"grid",gap:3,lineHeight:1.45},children:(0,e.jsx)("span",{"data-touched":"",style:{color:"var(--graview-ink-muted)",fontStyle:"italic"},children:t.intent})},`change:${v}`):(0,e.jsxs)("li",{style:{display:"grid",gap:3,lineHeight:1.45},children:[(0,e.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:6},children:[(0,e.jsxs)("span",{style:{minWidth:0},children:[(0,e.jsxs)("strong",{style:{fontWeight:600},children:[t.author==="human"&&t.by?.onBehalfOf===void 0&&(t.authorId===void 0||h.id===void 0||t.authorId===h.id)?"you":I(t.by??{kind:t.author,id:t.authorId},{graph:o.graph,schema:o.schema,seats:y,people:l}),k(t.via)?(0,e.jsxs)("span",{style:{fontWeight:400,color:"var(--graview-ink-muted)"},children:[", ",k(t.via)]}):null]})," ",(0,e.jsx)("span",{style:{color:"var(--graview-ink-muted)"},children:t.intent})]}),t.batch?(0,e.jsx)(H,{batch:t.batch}):null]}),(0,e.jsx)("div",{"data-touched":t.touched.join(" "),style:{display:"flex",flexWrap:"wrap",gap:4},children:t.touched.slice(0,4).map(r=>(0,e.jsx)(f,{label:m(o,r),pickId:r},r))})]},`change:${v}`))}):null,p?(0,e.jsxs)("div",{"data-testid":"remembered",style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:10,paddingTop:8,borderTop:"1px solid var(--graview-edge)",fontSize:"0.8125rem",color:"var(--graview-ink-faint)"},children:[(0,e.jsx)("span",{children:"Remembered in this browser"}),(0,e.jsx)(O,{})]}):null]}):null]})}export{N as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as je,j as Ve,l as Fe,m as Ie}from"./chunk.FS5K4AVA.js";import{b as Be}from"./chunk.MNPNW4BQ.js";import{b as Ge,e as W,f as ve}from"./chunk.EVTZE2OZ.js";import{b as qe}from"./chunk.ZMMMKTAG.js";import{d as ge,e as We,f as ye,h as _e}from"./chunk.IZDKEFPJ.js";import{b as De}from"./chunk.XDHBV5K5.js";import{a as ze}from"./chunk.TMPV4HLQ.js";import{B as Ee,D as Ne,F as He,S as Ke,T as Oe,V as oe,c as Le,da as q,i as I,k as j,l as _,q as G,qa as re,r as Re,x as Pe,y as Me}from"./chunk.OYULDOQP.js";import{P as $e,Pa as ne,Qa as me,Sa as Te,Ta as Ce,V as Ae,W as te}from"./chunk.VMEX2KZ4.js";import{a as U,b as ae}from"./chunk.MRK6QJV5.js";import{b as O}from"./chunk.AJZBJBMO.js";var Je=O(U(),1);function Qe(e,t){try{t.length===0?localStorage.removeItem(ge(e)):localStorage.setItem(ge(e),JSON.stringify(t))}catch{}}function ct(e,t){Qe(e,[...ye(e).filter(r=>r.title!==t.title),t])}function pt(e,t){Qe(e,ye(e).filter(r=>r.title!==t))}function ut(e,t){for(let r of e.places().filter(a=>a.title===t))e.forget?.(r.kind,r.as)}var ft=e=>e===!0?{written:!0}:typeof e=="object"&&e!==null?{written:e.kept===!0,...e.said?{said:e.said}:{}}:{written:!1},Ue=e=>({title:e.title,lens:e.lens,on:e.on,...e.bindings?{bindings:e.bindings}:{},...e.options?{options:e.options}:{}});function mt(e,t){let r=a=>t.some(c=>c.title===a||c.as===ne(a));if(!r(e))return e;for(let a=2;;a++)if(!r(`${e} ${a}`))return`${e} ${a}`}function Ye(e){let{store:t,views:r,brand:a,seatTalk:c,onKeepLens:l}=q(),S=(0,Je.useContext)(qe),x=We(a,t.schema),M=async p=>{let{edit:u}=p;if(p.written&&l)try{await l({op:"remove-lens",title:u.title,on:u.on})}catch{}pt(x,u.title),ut(r,u.title),S?.dismiss(`kept:${u.title}`),c.setTurns(g=>[...g.map(h=>h.kept&&h.kept.edit.title===u.title&&!h.kept.taken?{...h,kept:{...h.kept,taken:!0}}:h),{role:"seat",text:`Took \u201C${u.title}\u201D back out of the places.`}]);let s=te(t.schema,u.on);e({to:"kind",kind:u.on,title:s,address:me(t.schema,u.on),said:`Went to ${s}.`})};return{keep:async p=>{let u=mt(p.edit.title,r.places()),s={...p.edit,title:u},g=!1,h;if(l)try{({written:g,said:h}=ft(await l(s)))}catch{g=!1}g||ct(x,Ue(s)),_e(r,t.schema,[Ue(s)]);let d=r.places(),f=d.find(w=>w.title===u),A=h??(g?`Kept \u201C${u}\u201D as a lens: it is in the places now.`:l?`Kept \u201C${u}\u201D as your own lens. Ask the owner to keep it for everyone.`:`Kept \u201C${u}\u201D as your own lens.`),T={edit:s,written:g};c.setDraft(null),c.setTurns(w=>[...w,{role:"seat",text:A,kept:T}]),c.get().open||S?.notify({kind:"toast",id:`kept:${u}`,sentence:A,timeout:1e4,action:{label:"Take back",onSelect:()=>void M(T)}}),f&&e({to:"picture",kind:f.kind,as:f.as,title:u,address:Te(f.as,Ce(f,d)?me(t.schema,f.kind).slice(1):void 0),said:`Went to ${u}.`})},takeBack:M}}var Ze=O(U(),1);function gt(e,t){switch(t.to){case"place":return{view:Le("#")};case"picture":return{view:G(He(j(e,"filter",null),t.kind,t.as),[])};case"kind":{let r=Re(_({...I(e,Ee(t.kind)),relation:null},!1),!0);return{view:G(j(j(r,"view",null),"filter",t.filter??null),[])}}case"record":return{view:G(I(_(j(j(e,"view",null),"filter",null),!1),t.id),[t.id])};case"problems":return{pane:"problems"}}}function yt(e){let t=typeof document>"u"?null:document.querySelector('[data-testid="standing"]');t&&t.getAttribute("aria-expanded")==="true"!==e&&t.click()}function Xe(){let{setView:e,seatTalk:t}=q();return(0,Ze.useCallback)(r=>{t.get().draft&&t.setDraft(null),yt(r.to==="problems"),r.to!=="problems"&&e(a=>{let c=gt(a,r);return"view"in c?c.view:a})},[e,t])}var se=O(U(),1),vt=220;function ht(e,t){if(!e||!t||typeof document>"u")return null;let r=e.getBoundingClientRect(),a=document.elementFromPoint(r.left+t.x,r.top+t.y),c=a?.closest("[data-graview-pick]")?.getAttribute("data-graview-pick");return c||(a?.closest("[data-graview-view]")?.getAttribute("data-graview-view")??null)}function et({hover:e=!0}={}){let{store:t,view:r,views:a,pointer:c}=q(),{selection:l}=re(),[S,x]=(0,se.useState)(null);(0,se.useEffect)(()=>{if(!e)return;let s=null,g=!1,h=()=>typeof document<"u"&&document.querySelector("[data-graview-reach]")!==null?document.querySelector("[data-graview-settled]")===null:!1,d=()=>{if(s&&clearTimeout(s),g)return;let w=c.snapshot();if(!w){x(R=>R===null?R:null);return}s=setTimeout(()=>{if(g||h()){d();return}let R=typeof document>"u"?null:document.querySelector("[data-graview-stage]"),b=ht(R,w);x(P=>P===b?P:b)},vt)},f=()=>{g=!0,s&&clearTimeout(s)},A=()=>{g=!1,d()},T=c.subscribe(d);return document.addEventListener("pointerdown",f,!0),document.addEventListener("pointerup",A,!0),document.addEventListener("pointercancel",A,!0),d(),()=>{T(),document.removeEventListener("pointerdown",f,!0),document.removeEventListener("pointerup",A,!0),document.removeEventListener("pointercancel",A,!0),s&&clearTimeout(s)}},[c,e]);let M=s=>{let g=t.graph.getNode(s);if(g)return $e(t.schema.tryDefinition(g.kind),g);let h=je(s,t.schema);if(h)return h;let d=Me(s);if(d)return te(t.schema,d);let f=Ne(s);if(f.length>0){let A=f.map(w=>Ae(t.schema,w)),T=A.length===1?A[0]:`${A.slice(0,-1).join(", ")} and ${A.at(-1)}`;return T.charAt(0).toUpperCase()+T.slice(1)}return null},E=l[l.length-1];if(E!==void 0){let s=M(E);if(s)return{id:E,name:l.length>1?`${s} and ${l.length-1} more`:s,because:"selection"}}if(S!=null){let s=M(S);if(s)return{id:S,name:s,because:"hover"}}let p=r.within?.view,u=p?a.places().find(s=>s.as===p||ne(s.title)===p):void 0;if(u)return{id:null,name:u.title,because:"place"};if(r.focusId){let s=M(r.focusId);if(s)return{id:r.focusId,name:s,because:"place"}}return{id:null,name:"the whole thing",because:"place"}}var L=O(U(),1);var D=O(U(),1),$=O(ae(),1),B=(e,t)=>`${e}:${t}`;function tt({answer:e,said:t,onReply:r,talk:a}){let[c]=(0,D.useState)(()=>Oe(null)),l=a??c,{turns:S,outcomes:x,busy:M}=oe(l),E=(0,D.useCallback)((u,s)=>l.settle(u,s),[l]);return{turns:S,outcomes:x,busy:M,send:async u=>{let s=u.trim();if(!s||l.get().busy)return;l.setBusy(!0);let g=l.get();l.setTurns(f=>[...f,{role:"person",text:s}]);let h=g.turns.map((f,A)=>{let T=(f.proposals??[]).map((w,R)=>{let b=g.outcomes.get(B(A,R));return b?.state==="refused"?`${t(w)} \u2014 refused: ${b.error}`:b?`${b.said} \u2014 ${b.state==="applied"?"applied":"set aside"}`:t(w)});return{role:f.role,text:T.length>0?`${f.text} [Offered beneath this answer: ${T.join("; ")}]`:f.text}}),d;try{d=await e(s,{history:h})}catch(f){d={say:`That couldn't be answered: ${f instanceof Error?f.message:String(f)}`,proposals:[]}}l.setTurns(f=>[...f,{role:"seat",text:d.say,proposals:d.proposals,...d.questions?{questions:d.questions}:{},...d.picks?.length?{picks:d.picks}:{},...d.moves?.length?{moves:d.moves}:{},...d.offer?{offer:d.offer}:{},...d.unsure?{unsure:!0}:{},...d.via?{via:d.via}:{}}]),r?.(d),l.setBusy(!1)},settle:E}}var wt=e=>{let t=/^([\s\S]*?)\s*(\((?:[^()]|\([^()]*\))*\))\s*$/.exec(e);return t&&t[1]?{said:t[1],aside:t[2]}:{said:e}};function nt({turns:e,outcomes:t,busy:r,testId:a,empty:c,minHeight:l=64,maxHeight:S="min(46cqh, 400px)",renderProposal:x,renderAfter:M,renderSaid:E,ready:p=()=>!0,onApplyAll:u,applyAllLabel:s="Apply all"}){let g=(0,D.useRef)(null);return(0,D.useEffect)(()=>{g.current?.scrollTo?.({top:g.current.scrollHeight})},[e]),e.length===0&&c===null&&!r?null:(0,$.jsxs)("ol",{ref:g,style:{margin:0,padding:10,listStyle:"none",display:"grid",gap:8,alignContent:"start",maxHeight:S,minHeight:l,overflowY:"auto"},children:[e.length===0?c===null?null:(0,$.jsx)("li",{style:{fontSize:"0.8125rem",color:"var(--graview-ink-muted)",lineHeight:1.5},children:c}):null,e.map((h,d)=>{let f=h.proposals??[],A=f.filter((w,R)=>{let b=B(d,R),P=t.get(b);return P?.state!=="applied"&&P?.state!=="declined"&&p(w,b)}),T=wt(h.text);return(0,$.jsxs)("li",{style:{display:"grid",gap:6,justifyItems:h.role==="person"?"end":"start"},children:[h.role==="person"?(0,$.jsx)("p",{style:{margin:0,maxWidth:"85%",padding:"6px 10px",borderRadius:"12px 12px 4px 12px",fontSize:"0.875rem",lineHeight:1.45,background:"var(--graview-panel-muted)",color:"var(--graview-ink)"},children:h.text}):(0,$.jsxs)("p",{style:{margin:0,fontSize:"0.875rem",lineHeight:1.5,color:"var(--graview-ink)"},children:[E?E(h,T.said):T.said,h.via?(0,$.jsx)("span",{"data-testid":`${a}-answered-with-ai`,style:{marginLeft:6,fontSize:"0.6875rem",color:"var(--graview-ink-faint)",whiteSpace:"nowrap"},children:Ke}):null,T.aside?(0,$.jsx)("span",{style:{display:"block",marginTop:2,fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:T.aside}):null]}),M?.(h,d),f.map((w,R)=>{let b=B(d,R),P=t.get(b);return P?.state==="applied"||P?.state==="declined"?(0,$.jsx)(ie,{outcome:P,testId:a},b):(0,$.jsxs)("span",{style:{display:"grid",gap:4,justifySelf:"stretch",justifyItems:"start"},children:[x(w,{key:b,turn:d,at:R}),P?(0,$.jsx)(ie,{outcome:P,testId:a}):null]},b)}),u&&A.length>=2?(0,$.jsxs)("button",{type:"button","data-testid":`${a}-apply-all`,onClick:()=>u(d,f),title:"Take these in order; anything still missing is asked for",style:{fontSize:"0.8125rem",justifySelf:"start",fontWeight:600},children:[s," ",A.length]}):null]},d)}),r?(0,$.jsx)("li",{style:{fontSize:"0.8125rem",color:"var(--graview-ink-faint)"},children:"thinking\u2026"}):null]})}function ie({outcome:e,testId:t}){if(e.state==="refused")return(0,$.jsxs)("span",{"data-testid":`${t}-refused`,style:{fontSize:"0.8125rem",color:"var(--graview-warn)"},children:["Refused: ",e.error]});let r=e.state==="applied";return(0,$.jsxs)("span",{"data-testid":`${t}-${e.state}`,style:{fontSize:"0.8125rem",color:r?"var(--graview-ink-muted)":"var(--graview-ink-faint)"},children:[r?(0,$.jsx)("span",{"aria-hidden":"true",style:{color:"var(--graview-accent)"},children:"\u2713 "}):null,r?e.said:(0,$.jsx)("s",{children:e.said})]})}function ot({busy:e,placeholder:t,ariaLabel:r,testId:a,onSend:c}){let[l,S]=(0,D.useState)("");return(0,$.jsxs)("form",{onSubmit:x=>{x.preventDefault(),!(e||l.trim().length===0)&&(c(l),S(""))},style:{display:"flex",gap:6,padding:8,borderTop:"1px solid var(--graview-edge)"},children:[(0,$.jsx)("input",{value:l,onChange:x=>S(x.target.value),placeholder:t,"aria-label":r,"data-testid":`${a}-draft`,style:{flex:1,minWidth:0,font:"inherit",fontSize:"0.875rem",padding:"6px 9px",borderRadius:8,border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",color:"var(--graview-ink)"}}),(0,$.jsx)("button",{type:"submit","data-testid":`${a}-send`,disabled:e||l.trim().length===0,style:{fontSize:"0.875rem"},children:"Send"})]})}var v=O(ae(),1),bt=/\b(?:board|kanban|timeline|calendar|gantt|who covers|covers what|coverage|floor plan|layout|draw|chart|(?:list|table) of|as an? (?:list|table|board|calendar|timeline|grid))\b/i,kt=/\b(?:group(?:ed)? by|split by|sort(?:ed)? by|order(?:ed)? by|only|call it|name it|as an? (?:board|kanban|calendar|timeline|list|table|cards|rows|grid|plan|layout)|show all|all of them|clear the filter|no filter)\b/i,St=e=>e.charAt(0).toLowerCase()+e.slice(1),xt=e=>e.to==="record"?e.label:e.to==="problems"?"problems":e.title;function $t(e,t,r){let a=[],c=e;for(let l of t){let S=xt(l),x=S?c.toLowerCase().indexOf(S.toLowerCase()):-1;x<0||(a.push(c.slice(0,x),r(l,c.slice(x,x+S.length))),c=c.slice(x+S.length))}return a.length===0?e:[...a,c]}function Qt({respond:e,onCall:t,onPick:r,testId:a="chat",empty:c,shared:l=!1,composer:S=!0,onMove:x,place:M,onDraft:E}){let{store:p,views:u,view:s,principal:g,setView:h,seatWho:d,noteSeat:f,session:A,ai:T,seatTalk:w,brand:R,app:b}=q(),P=Xe(),le=x??P,{takeBack:rt}=Ye(le),{selection:de}=re(),he=et(),we=d??"chat",z=(0,L.useMemo)(()=>({kind:"agent",id:we,session:A}),[we,A]),ce=(0,L.useRef)(void 0),V=(0,L.useMemo)(()=>Be(p,{author:{...z,...g.roles?{roles:g.roles}:{}},derive:()=>({pins:Ve()}),places:()=>u.places(),via:()=>ce.current,...b?{app:b}:{}}),[p,g,z,u,b]),st=(0,L.useMemo)(()=>e??Ie(T),[e,T]);(0,L.useEffect)(()=>t?V.onCall(t):void 0,[V,t]),De(V);let be=(0,L.useMemo)(()=>({name:R?.name??"app",schema:p.schema,...p.policy?{policy:p.policy}:{}}),[p,R]),it=async n=>{let i=w.get().draft,o=i!==null&&kt.test(n);if(!o&&!bt.test(n))return;let m=await import("./chunk.YV2RTNPU.js"),k=e?void 0:Fe(T),y={app:be,sight:m.draftSight(be,Y),...k?{complete:k}:{},...i?{lastGood:i}:{}},C=o&&i?await m.refineDraft(i,n,y):await m.draftView(n,y);if(m.isDraftFailure(C)){let K=C.lastGood??i;return K?(w.setDraft(K,C.failed),E?.(),{say:`${C.failed} The last view stays.`,proposals:[],grounded:!0}):{say:C.failed,proposals:[],grounded:!0}}return w.setDraft(C,null),E?.(),{say:`Here is ${St(C.said)} Ask to change it, or keep it as a lens.`,proposals:[],grounded:!0}},N=tt({...l?{talk:w}:{},said:n=>W(p,n),answer:async(n,i)=>{let o=await it(n);if(o)return o;let{placesFromViews:m}=await import("./chunk.GHMICJIB.js"),k=M??s.within?.view,y=u.arrangement?.(),C=p.today();return st(p,n,{...i,selection:he.id?[he.id]:de,principal:{...z,...g.roles?{roles:g.roles}:{}},places:m(p.schema,u.places(),y?{pages:y}:{}),...k?{place:k}:{},...C?{today:C}:{},...b?{app:b}:{}})},onReply:n=>{let i=n.moves?.[0];i&&le(i);let o=n.questions?.[0];f(o?{type:"asking",author:z,where:o.nodeId??null,say:`${o.nodeLabel?`${o.nodeLabel}: `:""}${o.asks}`,confidence:o.confidence}:{type:"said",author:z,say:n.say});let m=n.proposals.find(k=>!ue(k));if(m){let k=p.permits({name:m.mutation,args:{...m.args}},Y);k.ok||f({type:"refused",author:z,where:Se(m.mutation),say:k.refusal.message})}}}),{outcomes:Q,settle:pe}=N,ke=oe(w);(0,L.useEffect)(()=>{if(!l||ke.pending===null||N.busy)return;let n=w.takePending();n&&N.send(n)},[l,ke.pending,N.busy]);let Y={...z,...g.roles?{roles:g.roles}:{}},ue=n=>p.permits({name:n.mutation,args:{...n.args}},Y).ok,Se=n=>{let i=p.allMutations().find(o=>o.name===n)?.subject?.kinds;return Array.isArray(i)&&i[0]?Pe(i[0]):null},[H,Z]=(0,L.useState)(null),X=async(n,i)=>{let o=Ge(p,n),m=W(p,o),k=V.definitions.find(C=>C.act===o.mutation)?.name??o.mutation;ce.current=N.turns[Number(i.split(":")[0])]?.via;let y=await V.call(k,{...o.args}).finally(()=>{ce.current=void 0});return y.ok?(pe(i,{state:"applied",said:m}),!0):(pe(i,{state:"refused",error:y.error}),f({type:"refused",author:z,where:Se(o.mutation),say:y.error}),!1)},lt=async(n,i)=>{for(let[o,m]of i.entries()){let k=B(n,o);if(Q.get(k)?.state==="applied"||!ue(m))continue;let y=ve(p,m);if(y.length>0){Z({proposal:m,open:y,key:k});return}if(!await X(m,k))return}},ee=(0,L.useRef)(null),fe=(0,L.useRef)(null);(0,L.useLayoutEffect)(()=>{let n=fe.current;if(!n||n.isConnected||document.activeElement!==document.body)return;fe.current=null,(ee.current?.querySelector(`[data-testid="${a}-apply"]:not([disabled])`)??ee.current?.querySelector(`[data-testid="${a}-draft"]`)??ee.current?.closest("[data-testid='seat']")?.querySelector("[data-testid='seat-field']"))?.focus()});let dt=(n,i,o,m)=>{let k=p.permits({name:o.mutation,args:{...o.args}},Y);if(!k.ok)return(0,v.jsxs)("span",{"data-testid":`${a}-withheld`,style:{fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:[(0,v.jsx)("s",{children:W(p,o)})," \u2014 ",k.refusal.message]});let y=ve(p,o),C=(N.turns[n]?.proposals??[]).slice(0,i).filter((xe,F)=>Q.get(B(n,F))?.state!=="applied").find(xe=>y.some(F=>F.kinds&&typeof o.args[F.name]=="string"&&xe.args.label===o.args[F.name])),K=W(p,o);return(0,v.jsxs)("span",{style:{display:"flex",flexWrap:"wrap",alignItems:"baseline",gap:"4px 10px"},children:[(0,v.jsxs)("span",{style:{fontSize:"0.875rem",color:"var(--graview-ink)"},title:o.why,children:[K,y.length>0&&!C?" \u2026":""]}),(0,v.jsxs)("span",{style:{display:"inline-flex",gap:6},children:[(0,v.jsx)("button",{type:"button","data-testid":`${a}-apply`,"data-graview-asks":y.length>0?y.length:void 0,disabled:C!==void 0,"aria-label":`Do it: ${K}`,onClick:()=>y.length>0?Z({proposal:o,open:y,key:m}):void X(o,m),title:C?`After \u201C${W(p,C)}\u201D`:y.length>0?`${K} \u2014 it asks for ${y.length===1?"one more thing":`${y.length} more things`}`:K,style:J,children:"Do it"}),(0,v.jsx)("button",{type:"button","data-testid":`${a}-decline`,"aria-label":`Not now: ${K}`,onClick:()=>pe(m,{state:"declined",said:K}),style:{...J,color:"var(--graview-ink-muted)"},children:"Not now"})]})]})};return(0,v.jsxs)("div",{"data-testid":`${a}-panel`,ref:ee,onFocus:n=>{fe.current=n.target},style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",alignContent:"start",gap:8,minWidth:0,minHeight:0},children:[N.turns.length===0?c??null:null,(0,v.jsx)(nt,{turns:N.turns,outcomes:Q,busy:N.busy,testId:a,minHeight:0,maxHeight:"none",empty:c!==void 0?null:(0,v.jsxs)(v.Fragment,{children:["Ask what's wrong, ask about anything by name, or say a change in its own words.",de.length>0?" \u201CThis\u201D means what you have selected.":""]}),renderProposal:(n,{key:i,turn:o,at:m})=>dt(o,m,n,i),ready:n=>ue(n),onApplyAll:(n,i)=>void lt(n,i),applyAllLabel:"Do all",renderSaid:(n,i)=>n.moves?.length?$t(i,n.moves,(o,m)=>(0,v.jsx)("button",{type:"button","data-testid":`${a}-went`,title:`Go to ${m}`,onClick:()=>le(o),style:{...at,fontSize:"inherit"},children:m},`${o.address}:${m}`)):i,renderAfter:(n,i)=>[...n.offer?[(0,v.jsx)("button",{type:"button","data-testid":`${a}-offer`,onClick:()=>w.ask(`a list of ${n.offer.draft}`),style:{...J,justifySelf:"start"},children:n.offer.label},`${i}:offer`)]:[],...n.kept&&!n.kept.taken?[(0,v.jsx)("button",{type:"button","data-testid":`${a}-take-back`,onClick:()=>void rt(n.kept),style:{...J,justifySelf:"start"},children:"Take back"},`${i}:take-back`)]:[],...n.picks?.length?[(0,v.jsx)("p",{"data-testid":`${a}-picks`,style:{margin:0,display:"flex",flexWrap:"wrap",gap:"2px 12px"},children:n.picks.map(o=>(0,v.jsx)("button",{type:"button","data-testid":`${a}-pick`,"data-chat-pick":o.id,title:o.why.field==="label"?`Go to ${o.label}`:`${o.why.reading}: ${o.why.fragment}`,onClick:()=>r?r(o.id):h(m=>G(I(_(m,!1),o.id),[o.id])),style:at,children:o.label},o.id))},`${i}:picks`)]:[],...(n.questions??[]).map(o=>{let m=`${i}:q:${o.id}`,k=Q.get(m);return(0,v.jsxs)("div",{"data-testid":`${a}-question`,"data-chat-question-node":o.nodeId,style:{display:"grid",gap:4,justifySelf:"start"},children:[(0,v.jsxs)("span",{style:{fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:[o.nodeLabel?(0,v.jsxs)("strong",{children:[o.nodeLabel,": "]}):null,o.asks,o.because==="split"?" (it could be either)":" (it was not sure)"]}),(0,v.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:o.options.map(y=>(0,v.jsxs)("button",{type:"button","data-testid":`${a}-option`,disabled:!y.call,title:y.call?y.call.why??"Take this answer":"Nothing to do for this answer",onClick:()=>y.call?void X(y.call,m):void 0,style:J,children:[y.value," ",Math.round(y.probability*100),"%"]},y.value))}),k?(0,v.jsx)(ie,{outcome:k,testId:a}):null]},o.id)})]}),H?(0,v.jsx)("div",{"data-testid":`${a}-asking`,children:(0,v.jsx)(ze,{affordance:{id:`chat:${H.proposal.mutation}`,mutation:H.proposal.mutation,label:W(p,H.proposal),provider:"llm",why:H.proposal.why??"Suggested in the conversation.",nodeIds:[],args:H.proposal.args,open:H.open,score:0},onApply:n=>{let i={...H.proposal,args:{...H.proposal.args,...n}};Z(null),X(i,H.key)},onCancel:()=>Z(null)})}):null,S?(0,v.jsx)(ot,{busy:N.busy,placeholder:de.length>0?"Ask about this\u2026":"Ask, or say a change\u2026",ariaLabel:"Ask",testId:a,onSend:n=>l?w.ask(n):void N.send(n)}):null]})}var J={font:"inherit",fontSize:"0.8125rem",minHeight:26,padding:"0 9px",borderRadius:6,border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",boxShadow:"none",color:"var(--graview-ink)",cursor:"pointer"},at={font:"inherit",fontSize:"0.875rem",minHeight:24,padding:0,border:0,borderRadius:2,background:"transparent",boxShadow:"none",color:"var(--graview-accent)",textDecoration:"underline",textUnderlineOffset:3,textAlign:"start",cursor:"pointer"};export{Ye as a,yt as b,Xe as c,et as d,Qt as e,J as f,at as g};
|
|
1
|
+
import{a as je,j as Ve,l as Fe,m as Ie}from"./chunk.22H4JXTH.js";import{b as Be}from"./chunk.IH42QTOM.js";import{b as Ge,e as W,f as ve}from"./chunk.PN2H6X7O.js";import{b as qe}from"./chunk.OGL4PHTY.js";import{d as ge,e as We,f as ye,h as _e}from"./chunk.DCIC3YHX.js";import{b as De}from"./chunk.WHTNSETN.js";import{a as ze}from"./chunk.W3LDQ6B2.js";import{B as Ee,D as Ne,F as He,S as Ke,T as Oe,V as oe,c as Le,da as q,i as I,k as j,l as _,q as G,qa as re,r as Re,x as Pe,y as Me}from"./chunk.NRRUGG22.js";import{Q as $e,Qa as ne,Ra as me,Ta as Te,Ua as Ce,W as Ae,X as te}from"./chunk.MKNXV4TM.js";import{a as U,b as ae}from"./chunk.MRK6QJV5.js";import{b as O}from"./chunk.AJZBJBMO.js";var Je=O(U(),1);function Qe(e,t){try{t.length===0?localStorage.removeItem(ge(e)):localStorage.setItem(ge(e),JSON.stringify(t))}catch{}}function ct(e,t){Qe(e,[...ye(e).filter(r=>r.title!==t.title),t])}function pt(e,t){Qe(e,ye(e).filter(r=>r.title!==t))}function ut(e,t){for(let r of e.places().filter(a=>a.title===t))e.forget?.(r.kind,r.as)}var ft=e=>e===!0?{written:!0}:typeof e=="object"&&e!==null?{written:e.kept===!0,...e.said?{said:e.said}:{}}:{written:!1},Ue=e=>({title:e.title,lens:e.lens,on:e.on,...e.bindings?{bindings:e.bindings}:{},...e.options?{options:e.options}:{}});function mt(e,t){let r=a=>t.some(c=>c.title===a||c.as===ne(a));if(!r(e))return e;for(let a=2;;a++)if(!r(`${e} ${a}`))return`${e} ${a}`}function Ye(e){let{store:t,views:r,brand:a,seatTalk:c,onKeepLens:l}=q(),S=(0,Je.useContext)(qe),x=We(a,t.schema),M=async p=>{let{edit:u}=p;if(p.written&&l)try{await l({op:"remove-lens",title:u.title,on:u.on})}catch{}pt(x,u.title),ut(r,u.title),S?.dismiss(`kept:${u.title}`),c.setTurns(g=>[...g.map(h=>h.kept&&h.kept.edit.title===u.title&&!h.kept.taken?{...h,kept:{...h.kept,taken:!0}}:h),{role:"seat",text:`Took \u201C${u.title}\u201D back out of the places.`}]);let s=te(t.schema,u.on);e({to:"kind",kind:u.on,title:s,address:me(t.schema,u.on),said:`Went to ${s}.`})};return{keep:async p=>{let u=mt(p.edit.title,r.places()),s={...p.edit,title:u},g=!1,h;if(l)try{({written:g,said:h}=ft(await l(s)))}catch{g=!1}g||ct(x,Ue(s)),_e(r,t.schema,[Ue(s)]);let d=r.places(),f=d.find(w=>w.title===u),A=h??(g?`Kept \u201C${u}\u201D as a lens: it is in the places now.`:l?`Kept \u201C${u}\u201D as your own lens. Ask the owner to keep it for everyone.`:`Kept \u201C${u}\u201D as your own lens.`),T={edit:s,written:g};c.setDraft(null),c.setTurns(w=>[...w,{role:"seat",text:A,kept:T}]),c.get().open||S?.notify({kind:"toast",id:`kept:${u}`,sentence:A,timeout:1e4,action:{label:"Take back",onSelect:()=>void M(T)}}),f&&e({to:"picture",kind:f.kind,as:f.as,title:u,address:Te(f.as,Ce(f,d)?me(t.schema,f.kind).slice(1):void 0),said:`Went to ${u}.`})},takeBack:M}}var Ze=O(U(),1);function gt(e,t){switch(t.to){case"place":return{view:Le("#")};case"picture":return{view:G(He(j(e,"filter",null),t.kind,t.as),[])};case"kind":{let r=Re(_({...I(e,Ee(t.kind)),relation:null},!1),!0);return{view:G(j(j(r,"view",null),"filter",t.filter??null),[])}}case"record":return{view:G(I(_(j(j(e,"view",null),"filter",null),!1),t.id),[t.id])};case"problems":return{pane:"problems"}}}function yt(e){let t=typeof document>"u"?null:document.querySelector('[data-testid="standing"]');t&&t.getAttribute("aria-expanded")==="true"!==e&&t.click()}function Xe(){let{setView:e,seatTalk:t}=q();return(0,Ze.useCallback)(r=>{t.get().draft&&t.setDraft(null),yt(r.to==="problems"),r.to!=="problems"&&e(a=>{let c=gt(a,r);return"view"in c?c.view:a})},[e,t])}var se=O(U(),1),vt=220;function ht(e,t){if(!e||!t||typeof document>"u")return null;let r=e.getBoundingClientRect(),a=document.elementFromPoint(r.left+t.x,r.top+t.y),c=a?.closest("[data-graview-pick]")?.getAttribute("data-graview-pick");return c||(a?.closest("[data-graview-view]")?.getAttribute("data-graview-view")??null)}function et({hover:e=!0}={}){let{store:t,view:r,views:a,pointer:c}=q(),{selection:l}=re(),[S,x]=(0,se.useState)(null);(0,se.useEffect)(()=>{if(!e)return;let s=null,g=!1,h=()=>typeof document<"u"&&document.querySelector("[data-graview-reach]")!==null?document.querySelector("[data-graview-settled]")===null:!1,d=()=>{if(s&&clearTimeout(s),g)return;let w=c.snapshot();if(!w){x(R=>R===null?R:null);return}s=setTimeout(()=>{if(g||h()){d();return}let R=typeof document>"u"?null:document.querySelector("[data-graview-stage]"),b=ht(R,w);x(P=>P===b?P:b)},vt)},f=()=>{g=!0,s&&clearTimeout(s)},A=()=>{g=!1,d()},T=c.subscribe(d);return document.addEventListener("pointerdown",f,!0),document.addEventListener("pointerup",A,!0),document.addEventListener("pointercancel",A,!0),d(),()=>{T(),document.removeEventListener("pointerdown",f,!0),document.removeEventListener("pointerup",A,!0),document.removeEventListener("pointercancel",A,!0),s&&clearTimeout(s)}},[c,e]);let M=s=>{let g=t.graph.getNode(s);if(g)return $e(t.schema.tryDefinition(g.kind),g);let h=je(s,t.schema);if(h)return h;let d=Me(s);if(d)return te(t.schema,d);let f=Ne(s);if(f.length>0){let A=f.map(w=>Ae(t.schema,w)),T=A.length===1?A[0]:`${A.slice(0,-1).join(", ")} and ${A.at(-1)}`;return T.charAt(0).toUpperCase()+T.slice(1)}return null},E=l[l.length-1];if(E!==void 0){let s=M(E);if(s)return{id:E,name:l.length>1?`${s} and ${l.length-1} more`:s,because:"selection"}}if(S!=null){let s=M(S);if(s)return{id:S,name:s,because:"hover"}}let p=r.within?.view,u=p?a.places().find(s=>s.as===p||ne(s.title)===p):void 0;if(u)return{id:null,name:u.title,because:"place"};if(r.focusId){let s=M(r.focusId);if(s)return{id:r.focusId,name:s,because:"place"}}return{id:null,name:"the whole thing",because:"place"}}var L=O(U(),1);var D=O(U(),1),$=O(ae(),1),B=(e,t)=>`${e}:${t}`;function tt({answer:e,said:t,onReply:r,talk:a}){let[c]=(0,D.useState)(()=>Oe(null)),l=a??c,{turns:S,outcomes:x,busy:M}=oe(l),E=(0,D.useCallback)((u,s)=>l.settle(u,s),[l]);return{turns:S,outcomes:x,busy:M,send:async u=>{let s=u.trim();if(!s||l.get().busy)return;l.setBusy(!0);let g=l.get();l.setTurns(f=>[...f,{role:"person",text:s}]);let h=g.turns.map((f,A)=>{let T=(f.proposals??[]).map((w,R)=>{let b=g.outcomes.get(B(A,R));return b?.state==="refused"?`${t(w)} \u2014 refused: ${b.error}`:b?`${b.said} \u2014 ${b.state==="applied"?"applied":"set aside"}`:t(w)});return{role:f.role,text:T.length>0?`${f.text} [Offered beneath this answer: ${T.join("; ")}]`:f.text}}),d;try{d=await e(s,{history:h})}catch(f){d={say:`That couldn't be answered: ${f instanceof Error?f.message:String(f)}`,proposals:[]}}l.setTurns(f=>[...f,{role:"seat",text:d.say,proposals:d.proposals,...d.questions?{questions:d.questions}:{},...d.picks?.length?{picks:d.picks}:{},...d.moves?.length?{moves:d.moves}:{},...d.offer?{offer:d.offer}:{},...d.unsure?{unsure:!0}:{},...d.via?{via:d.via}:{}}]),r?.(d),l.setBusy(!1)},settle:E}}var wt=e=>{let t=/^([\s\S]*?)\s*(\((?:[^()]|\([^()]*\))*\))\s*$/.exec(e);return t&&t[1]?{said:t[1],aside:t[2]}:{said:e}};function nt({turns:e,outcomes:t,busy:r,testId:a,empty:c,minHeight:l=64,maxHeight:S="min(46cqh, 400px)",renderProposal:x,renderAfter:M,renderSaid:E,ready:p=()=>!0,onApplyAll:u,applyAllLabel:s="Apply all"}){let g=(0,D.useRef)(null);return(0,D.useEffect)(()=>{g.current?.scrollTo?.({top:g.current.scrollHeight})},[e]),e.length===0&&c===null&&!r?null:(0,$.jsxs)("ol",{ref:g,style:{margin:0,padding:10,listStyle:"none",display:"grid",gap:8,alignContent:"start",maxHeight:S,minHeight:l,overflowY:"auto"},children:[e.length===0?c===null?null:(0,$.jsx)("li",{style:{fontSize:"0.8125rem",color:"var(--graview-ink-muted)",lineHeight:1.5},children:c}):null,e.map((h,d)=>{let f=h.proposals??[],A=f.filter((w,R)=>{let b=B(d,R),P=t.get(b);return P?.state!=="applied"&&P?.state!=="declined"&&p(w,b)}),T=wt(h.text);return(0,$.jsxs)("li",{style:{display:"grid",gap:6,justifyItems:h.role==="person"?"end":"start"},children:[h.role==="person"?(0,$.jsx)("p",{style:{margin:0,maxWidth:"85%",padding:"6px 10px",borderRadius:"12px 12px 4px 12px",fontSize:"0.875rem",lineHeight:1.45,background:"var(--graview-panel-muted)",color:"var(--graview-ink)"},children:h.text}):(0,$.jsxs)("p",{style:{margin:0,fontSize:"0.875rem",lineHeight:1.5,color:"var(--graview-ink)"},children:[E?E(h,T.said):T.said,h.via?(0,$.jsx)("span",{"data-testid":`${a}-answered-with-ai`,style:{marginLeft:6,fontSize:"0.6875rem",color:"var(--graview-ink-faint)",whiteSpace:"nowrap"},children:Ke}):null,T.aside?(0,$.jsx)("span",{style:{display:"block",marginTop:2,fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:T.aside}):null]}),M?.(h,d),f.map((w,R)=>{let b=B(d,R),P=t.get(b);return P?.state==="applied"||P?.state==="declined"?(0,$.jsx)(ie,{outcome:P,testId:a},b):(0,$.jsxs)("span",{style:{display:"grid",gap:4,justifySelf:"stretch",justifyItems:"start"},children:[x(w,{key:b,turn:d,at:R}),P?(0,$.jsx)(ie,{outcome:P,testId:a}):null]},b)}),u&&A.length>=2?(0,$.jsxs)("button",{type:"button","data-testid":`${a}-apply-all`,onClick:()=>u(d,f),title:"Take these in order; anything still missing is asked for",style:{fontSize:"0.8125rem",justifySelf:"start",fontWeight:600},children:[s," ",A.length]}):null]},d)}),r?(0,$.jsx)("li",{style:{fontSize:"0.8125rem",color:"var(--graview-ink-faint)"},children:"thinking\u2026"}):null]})}function ie({outcome:e,testId:t}){if(e.state==="refused")return(0,$.jsxs)("span",{"data-testid":`${t}-refused`,style:{fontSize:"0.8125rem",color:"var(--graview-warn)"},children:["Refused: ",e.error]});let r=e.state==="applied";return(0,$.jsxs)("span",{"data-testid":`${t}-${e.state}`,style:{fontSize:"0.8125rem",color:r?"var(--graview-ink-muted)":"var(--graview-ink-faint)"},children:[r?(0,$.jsx)("span",{"aria-hidden":"true",style:{color:"var(--graview-accent)"},children:"\u2713 "}):null,r?e.said:(0,$.jsx)("s",{children:e.said})]})}function ot({busy:e,placeholder:t,ariaLabel:r,testId:a,onSend:c}){let[l,S]=(0,D.useState)("");return(0,$.jsxs)("form",{onSubmit:x=>{x.preventDefault(),!(e||l.trim().length===0)&&(c(l),S(""))},style:{display:"flex",gap:6,padding:8,borderTop:"1px solid var(--graview-edge)"},children:[(0,$.jsx)("input",{value:l,onChange:x=>S(x.target.value),placeholder:t,"aria-label":r,"data-testid":`${a}-draft`,style:{flex:1,minWidth:0,font:"inherit",fontSize:"0.875rem",padding:"6px 9px",borderRadius:8,border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",color:"var(--graview-ink)"}}),(0,$.jsx)("button",{type:"submit","data-testid":`${a}-send`,disabled:e||l.trim().length===0,style:{fontSize:"0.875rem"},children:"Send"})]})}var v=O(ae(),1),bt=/\b(?:board|kanban|timeline|calendar|gantt|who covers|covers what|coverage|floor plan|layout|draw|chart|(?:list|table) of|as an? (?:list|table|board|calendar|timeline|grid))\b/i,kt=/\b(?:group(?:ed)? by|split by|sort(?:ed)? by|order(?:ed)? by|only|call it|name it|as an? (?:board|kanban|calendar|timeline|list|table|cards|rows|grid|plan|layout)|show all|all of them|clear the filter|no filter)\b/i,St=e=>e.charAt(0).toLowerCase()+e.slice(1),xt=e=>e.to==="record"?e.label:e.to==="problems"?"problems":e.title;function $t(e,t,r){let a=[],c=e;for(let l of t){let S=xt(l),x=S?c.toLowerCase().indexOf(S.toLowerCase()):-1;x<0||(a.push(c.slice(0,x),r(l,c.slice(x,x+S.length))),c=c.slice(x+S.length))}return a.length===0?e:[...a,c]}function Qt({respond:e,onCall:t,onPick:r,testId:a="chat",empty:c,shared:l=!1,composer:S=!0,onMove:x,place:M,onDraft:E}){let{store:p,views:u,view:s,principal:g,setView:h,seatWho:d,noteSeat:f,session:A,ai:T,seatTalk:w,brand:R,app:b}=q(),P=Xe(),le=x??P,{takeBack:rt}=Ye(le),{selection:de}=re(),he=et(),we=d??"chat",z=(0,L.useMemo)(()=>({kind:"agent",id:we,session:A}),[we,A]),ce=(0,L.useRef)(void 0),V=(0,L.useMemo)(()=>Be(p,{author:{...z,...g.roles?{roles:g.roles}:{}},derive:()=>({pins:Ve()}),places:()=>u.places(),via:()=>ce.current,...b?{app:b}:{}}),[p,g,z,u,b]),st=(0,L.useMemo)(()=>e??Ie(T),[e,T]);(0,L.useEffect)(()=>t?V.onCall(t):void 0,[V,t]),De(V);let be=(0,L.useMemo)(()=>({name:R?.name??"app",schema:p.schema,...p.policy?{policy:p.policy}:{}}),[p,R]),it=async n=>{let i=w.get().draft,o=i!==null&&kt.test(n);if(!o&&!bt.test(n))return;let m=await import("./chunk.WCNONCTL.js"),k=e?void 0:Fe(T),y={app:be,sight:m.draftSight(be,Y),...k?{complete:k}:{},...i?{lastGood:i}:{}},C=o&&i?await m.refineDraft(i,n,y):await m.draftView(n,y);if(m.isDraftFailure(C)){let K=C.lastGood??i;return K?(w.setDraft(K,C.failed),E?.(),{say:`${C.failed} The last view stays.`,proposals:[],grounded:!0}):{say:C.failed,proposals:[],grounded:!0}}return w.setDraft(C,null),E?.(),{say:`Here is ${St(C.said)} Ask to change it, or keep it as a lens.`,proposals:[],grounded:!0}},N=tt({...l?{talk:w}:{},said:n=>W(p,n),answer:async(n,i)=>{let o=await it(n);if(o)return o;let{placesFromViews:m}=await import("./chunk.ZEUBAAVQ.js"),k=M??s.within?.view,y=u.arrangement?.(),C=p.today();return st(p,n,{...i,selection:he.id?[he.id]:de,principal:{...z,...g.roles?{roles:g.roles}:{}},places:m(p.schema,u.places(),y?{pages:y}:{}),...k?{place:k}:{},...C?{today:C}:{},...b?{app:b}:{}})},onReply:n=>{let i=n.moves?.[0];i&&le(i);let o=n.questions?.[0];f(o?{type:"asking",author:z,where:o.nodeId??null,say:`${o.nodeLabel?`${o.nodeLabel}: `:""}${o.asks}`,confidence:o.confidence}:{type:"said",author:z,say:n.say});let m=n.proposals.find(k=>!ue(k));if(m){let k=p.permits({name:m.mutation,args:{...m.args}},Y);k.ok||f({type:"refused",author:z,where:Se(m.mutation),say:k.refusal.message})}}}),{outcomes:Q,settle:pe}=N,ke=oe(w);(0,L.useEffect)(()=>{if(!l||ke.pending===null||N.busy)return;let n=w.takePending();n&&N.send(n)},[l,ke.pending,N.busy]);let Y={...z,...g.roles?{roles:g.roles}:{}},ue=n=>p.permits({name:n.mutation,args:{...n.args}},Y).ok,Se=n=>{let i=p.allMutations().find(o=>o.name===n)?.subject?.kinds;return Array.isArray(i)&&i[0]?Pe(i[0]):null},[H,Z]=(0,L.useState)(null),X=async(n,i)=>{let o=Ge(p,n),m=W(p,o),k=V.definitions.find(C=>C.act===o.mutation)?.name??o.mutation;ce.current=N.turns[Number(i.split(":")[0])]?.via;let y=await V.call(k,{...o.args}).finally(()=>{ce.current=void 0});return y.ok?(pe(i,{state:"applied",said:m}),!0):(pe(i,{state:"refused",error:y.error}),f({type:"refused",author:z,where:Se(o.mutation),say:y.error}),!1)},lt=async(n,i)=>{for(let[o,m]of i.entries()){let k=B(n,o);if(Q.get(k)?.state==="applied"||!ue(m))continue;let y=ve(p,m);if(y.length>0){Z({proposal:m,open:y,key:k});return}if(!await X(m,k))return}},ee=(0,L.useRef)(null),fe=(0,L.useRef)(null);(0,L.useLayoutEffect)(()=>{let n=fe.current;if(!n||n.isConnected||document.activeElement!==document.body)return;fe.current=null,(ee.current?.querySelector(`[data-testid="${a}-apply"]:not([disabled])`)??ee.current?.querySelector(`[data-testid="${a}-draft"]`)??ee.current?.closest("[data-testid='seat']")?.querySelector("[data-testid='seat-field']"))?.focus()});let dt=(n,i,o,m)=>{let k=p.permits({name:o.mutation,args:{...o.args}},Y);if(!k.ok)return(0,v.jsxs)("span",{"data-testid":`${a}-withheld`,style:{fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:[(0,v.jsx)("s",{children:W(p,o)})," \u2014 ",k.refusal.message]});let y=ve(p,o),C=(N.turns[n]?.proposals??[]).slice(0,i).filter((xe,F)=>Q.get(B(n,F))?.state!=="applied").find(xe=>y.some(F=>F.kinds&&typeof o.args[F.name]=="string"&&xe.args.label===o.args[F.name])),K=W(p,o);return(0,v.jsxs)("span",{style:{display:"flex",flexWrap:"wrap",alignItems:"baseline",gap:"4px 10px"},children:[(0,v.jsxs)("span",{style:{fontSize:"0.875rem",color:"var(--graview-ink)"},title:o.why,children:[K,y.length>0&&!C?" \u2026":""]}),(0,v.jsxs)("span",{style:{display:"inline-flex",gap:6},children:[(0,v.jsx)("button",{type:"button","data-testid":`${a}-apply`,"data-graview-asks":y.length>0?y.length:void 0,disabled:C!==void 0,"aria-label":`Do it: ${K}`,onClick:()=>y.length>0?Z({proposal:o,open:y,key:m}):void X(o,m),title:C?`After \u201C${W(p,C)}\u201D`:y.length>0?`${K} \u2014 it asks for ${y.length===1?"one more thing":`${y.length} more things`}`:K,style:J,children:"Do it"}),(0,v.jsx)("button",{type:"button","data-testid":`${a}-decline`,"aria-label":`Not now: ${K}`,onClick:()=>pe(m,{state:"declined",said:K}),style:{...J,color:"var(--graview-ink-muted)"},children:"Not now"})]})]})};return(0,v.jsxs)("div",{"data-testid":`${a}-panel`,ref:ee,onFocus:n=>{fe.current=n.target},style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",alignContent:"start",gap:8,minWidth:0,minHeight:0},children:[N.turns.length===0?c??null:null,(0,v.jsx)(nt,{turns:N.turns,outcomes:Q,busy:N.busy,testId:a,minHeight:0,maxHeight:"none",empty:c!==void 0?null:(0,v.jsxs)(v.Fragment,{children:["Ask what's wrong, ask about anything by name, or say a change in its own words.",de.length>0?" \u201CThis\u201D means what you have selected.":""]}),renderProposal:(n,{key:i,turn:o,at:m})=>dt(o,m,n,i),ready:n=>ue(n),onApplyAll:(n,i)=>void lt(n,i),applyAllLabel:"Do all",renderSaid:(n,i)=>n.moves?.length?$t(i,n.moves,(o,m)=>(0,v.jsx)("button",{type:"button","data-testid":`${a}-went`,title:`Go to ${m}`,onClick:()=>le(o),style:{...at,fontSize:"inherit"},children:m},`${o.address}:${m}`)):i,renderAfter:(n,i)=>[...n.offer?[(0,v.jsx)("button",{type:"button","data-testid":`${a}-offer`,onClick:()=>w.ask(`a list of ${n.offer.draft}`),style:{...J,justifySelf:"start"},children:n.offer.label},`${i}:offer`)]:[],...n.kept&&!n.kept.taken?[(0,v.jsx)("button",{type:"button","data-testid":`${a}-take-back`,onClick:()=>void rt(n.kept),style:{...J,justifySelf:"start"},children:"Take back"},`${i}:take-back`)]:[],...n.picks?.length?[(0,v.jsx)("p",{"data-testid":`${a}-picks`,style:{margin:0,display:"flex",flexWrap:"wrap",gap:"2px 12px"},children:n.picks.map(o=>(0,v.jsx)("button",{type:"button","data-testid":`${a}-pick`,"data-chat-pick":o.id,title:o.why.field==="label"?`Go to ${o.label}`:`${o.why.reading}: ${o.why.fragment}`,onClick:()=>r?r(o.id):h(m=>G(I(_(m,!1),o.id),[o.id])),style:at,children:o.label},o.id))},`${i}:picks`)]:[],...(n.questions??[]).map(o=>{let m=`${i}:q:${o.id}`,k=Q.get(m);return(0,v.jsxs)("div",{"data-testid":`${a}-question`,"data-chat-question-node":o.nodeId,style:{display:"grid",gap:4,justifySelf:"start"},children:[(0,v.jsxs)("span",{style:{fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:[o.nodeLabel?(0,v.jsxs)("strong",{children:[o.nodeLabel,": "]}):null,o.asks,o.because==="split"?" (it could be either)":" (it was not sure)"]}),(0,v.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:o.options.map(y=>(0,v.jsxs)("button",{type:"button","data-testid":`${a}-option`,disabled:!y.call,title:y.call?y.call.why??"Take this answer":"Nothing to do for this answer",onClick:()=>y.call?void X(y.call,m):void 0,style:J,children:[y.value," ",Math.round(y.probability*100),"%"]},y.value))}),k?(0,v.jsx)(ie,{outcome:k,testId:a}):null]},o.id)})]}),H?(0,v.jsx)("div",{"data-testid":`${a}-asking`,children:(0,v.jsx)(ze,{affordance:{id:`chat:${H.proposal.mutation}`,mutation:H.proposal.mutation,label:W(p,H.proposal),provider:"llm",why:H.proposal.why??"Suggested in the conversation.",nodeIds:[],args:H.proposal.args,open:H.open,score:0},onApply:n=>{let i={...H.proposal,args:{...H.proposal.args,...n}};Z(null),X(i,H.key)},onCancel:()=>Z(null)})}):null,S?(0,v.jsx)(ot,{busy:N.busy,placeholder:de.length>0?"Ask about this\u2026":"Ask, or say a change\u2026",ariaLabel:"Ask",testId:a,onSend:n=>l?w.ask(n):void N.send(n)}):null]})}var J={font:"inherit",fontSize:"0.8125rem",minHeight:26,padding:"0 9px",borderRadius:6,border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",boxShadow:"none",color:"var(--graview-ink)",cursor:"pointer"},at={font:"inherit",fontSize:"0.875rem",minHeight:24,padding:0,border:0,borderRadius:2,background:"transparent",boxShadow:"none",color:"var(--graview-accent)",textDecoration:"underline",textUnderlineOffset:3,textAlign:"start",cursor:"pointer"};export{Ye as a,yt as b,Xe as c,et as d,Qt as e,J as f,at as g};
|