graview 0.1.29 → 0.1.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/preview/{chunk.X53HI436.js → chunk.26CZTUY4.js} +1 -1
  2. package/dist/preview/chunk.2CIBWZJG.js +1 -0
  3. package/dist/preview/chunk.2EXGG6BB.js +1 -0
  4. package/dist/preview/chunk.2NBYNZRD.js +1 -0
  5. package/dist/preview/chunk.2XAONC66.js +1 -0
  6. package/dist/preview/chunk.34ZMMURV.js +27 -0
  7. package/dist/preview/{chunk.44FVJOK4.js → chunk.3ADPAGPY.js} +1 -1
  8. package/dist/preview/chunk.3JGGBLRB.js +1 -0
  9. package/dist/preview/chunk.3JNMSOFG.js +1 -0
  10. package/dist/preview/chunk.3R4W2P5X.js +1 -0
  11. package/dist/preview/chunk.3SKKIHU3.js +4 -0
  12. package/dist/preview/{chunk.OGXE2RHC.js → chunk.3URFMWXZ.js} +2 -2
  13. package/dist/preview/chunk.3VL5WECB.js +1 -0
  14. package/dist/preview/chunk.42YX6NOY.js +2 -0
  15. package/dist/preview/{chunk.XAXJHEMD.js → chunk.4ALKPNXM.js} +1 -1
  16. package/dist/preview/chunk.4HP7UWA2.js +1 -0
  17. package/dist/preview/{chunk.ZBXOX3W3.js → chunk.4SJUTBDV.js} +1 -1
  18. package/dist/preview/chunk.5U5J3ISK.js +1 -0
  19. package/dist/preview/{chunk.YCA7P5MK.js → chunk.6T2Q6NLO.js} +1 -1
  20. package/dist/preview/chunk.6V2RG5JG.js +5 -0
  21. package/dist/preview/chunk.6XMEU2Q2.js +1 -0
  22. package/dist/preview/chunk.7BWT5L2L.js +1 -0
  23. package/dist/preview/chunk.AK3IHFCF.js +1 -0
  24. package/dist/preview/chunk.BPWNWE7N.js +1 -0
  25. package/dist/preview/{chunk.YRQZZH5V.js → chunk.C5CYZNSJ.js} +1 -1
  26. package/dist/preview/chunk.CM6LOIQE.js +88 -0
  27. package/dist/preview/{chunk.IPBXAAQV.js → chunk.D3IECJ2S.js} +1 -1
  28. package/dist/preview/chunk.DT7LHWU2.js +1 -0
  29. package/dist/preview/chunk.DZRTOURR.js +1 -0
  30. package/dist/preview/{chunk.JNGUSAWX.js → chunk.ERXSYPYL.js} +17 -3
  31. package/dist/preview/chunk.FDELO7NY.js +116 -0
  32. package/dist/preview/chunk.FGVKJWNS.js +6 -0
  33. package/dist/preview/{chunk.7D77HEIJ.js → chunk.FWCOJDOD.js} +1 -1
  34. package/dist/preview/chunk.GFF2FB2J.js +25 -0
  35. package/dist/preview/chunk.GLBHQFJ2.js +1 -0
  36. package/dist/preview/{chunk.ZSKP6UQS.js → chunk.HHI65WFZ.js} +1 -1
  37. package/dist/preview/chunk.HHPGWJDO.js +2 -0
  38. package/dist/preview/chunk.HSCTWAUV.js +1 -0
  39. package/dist/preview/chunk.INZUEWC5.js +1 -0
  40. package/dist/preview/{chunk.QNHECGMH.js → chunk.J2ITFGN3.js} +1 -1
  41. package/dist/preview/chunk.JH6MU6TX.js +2 -0
  42. package/dist/preview/chunk.JISMMIMX.js +1 -0
  43. package/dist/preview/chunk.JN7DIFR3.js +1 -0
  44. package/dist/preview/chunk.JPHNKWTY.js +1 -0
  45. package/dist/preview/chunk.JTNWD2CN.js +1 -0
  46. package/dist/preview/chunk.K75FUIZI.js +1 -0
  47. package/dist/preview/chunk.K776HO42.js +2 -0
  48. package/dist/preview/chunk.KN3ULTGF.js +1 -0
  49. package/dist/preview/chunk.KOB6N3SL.js +1 -0
  50. package/dist/preview/chunk.KQT7WAQE.js +1 -0
  51. package/dist/preview/chunk.L4DECHXR.js +327 -0
  52. package/dist/preview/{chunk.J46KDTEZ.js → chunk.L6OMEYL6.js} +1 -1
  53. package/dist/preview/chunk.LQ7V6KEE.js +1 -0
  54. package/dist/preview/{chunk.AVUS5LMG.js → chunk.MD74YVRN.js} +2 -2
  55. package/dist/preview/chunk.MGNP4LAM.js +1 -0
  56. package/dist/preview/chunk.NCTOBUCT.js +1 -0
  57. package/dist/preview/chunk.NDADLJE6.js +1 -0
  58. package/dist/preview/{chunk.64P76WK4.js → chunk.NO52VON3.js} +1 -1
  59. package/dist/preview/{chunk.5AT4O4BN.js → chunk.O2LK2AO7.js} +1 -1
  60. package/dist/preview/chunk.OAF7TUMI.js +1 -0
  61. package/dist/preview/{chunk.WLRTPFAC.js → chunk.OQ4KFN6W.js} +1 -1
  62. package/dist/preview/chunk.OXQMNIRO.js +1 -0
  63. package/dist/preview/chunk.OZNW5W4Z.js +1 -0
  64. package/dist/preview/{chunk.HV6I74DF.js → chunk.PAVR5TK5.js} +1 -1
  65. package/dist/preview/chunk.PKK6FRZR.js +2 -0
  66. package/dist/preview/chunk.QIAKO27D.js +1 -0
  67. package/dist/preview/{chunk.CK7QWLMX.js → chunk.QNGWEV47.js} +1 -1
  68. package/dist/preview/{chunk.3G5MQFZK.js → chunk.QTA4ROAK.js} +1 -1
  69. package/dist/preview/chunk.QTMWHE5O.js +1 -0
  70. package/dist/preview/chunk.R26DREVU.js +1 -0
  71. package/dist/preview/chunk.RI3PYG5T.js +19 -0
  72. package/dist/preview/{chunk.ONGVH3ZM.js → chunk.RIEHYQLK.js} +44 -19
  73. package/dist/preview/chunk.RRVIXV7W.js +1 -0
  74. package/dist/preview/{chunk.BZ5OJYHU.js → chunk.RYT5U3QM.js} +1 -1
  75. package/dist/preview/chunk.SE5SKFQH.js +1 -0
  76. package/dist/preview/chunk.SHPXD6FC.js +1 -0
  77. package/dist/preview/chunk.SOBC3CTN.js +47 -0
  78. package/dist/preview/chunk.SOD3PBJM.js +1 -0
  79. package/dist/preview/{chunk.QSDT2RLY.js → chunk.T3VPD7JQ.js} +1 -1
  80. package/dist/preview/chunk.TI4OSTQV.js +1 -0
  81. package/dist/preview/chunk.UDSEJKCY.js +1 -0
  82. package/dist/preview/chunk.UGFDSE37.js +1 -0
  83. package/dist/preview/{chunk.IZW7DBK4.js → chunk.UWGWXFWZ.js} +1 -1
  84. package/dist/preview/{chunk.T4LY5QXO.js → chunk.UZWWDAGM.js} +1 -1
  85. package/dist/preview/chunk.V5ZYUVMH.js +1 -0
  86. package/dist/preview/chunk.V7BDAGDE.js +35 -0
  87. package/dist/preview/chunk.VG56IUIQ.js +9 -0
  88. package/dist/preview/chunk.VOAZBHCG.js +1 -0
  89. package/dist/preview/{chunk.O4QPITBD.js → chunk.VS7K3SCD.js} +1 -1
  90. package/dist/preview/{chunk.Z5V23DQN.js → chunk.VSZQXB4Q.js} +2 -2
  91. package/dist/preview/chunk.W3S6UXNA.js +1 -0
  92. package/dist/preview/chunk.WAFDCOOG.js +3 -0
  93. package/dist/preview/chunk.WYTIOLPP.js +1 -0
  94. package/dist/preview/chunk.X37L5TN5.js +1 -0
  95. package/dist/preview/{chunk.GZH6PTXN.js → chunk.XRJBLH4N.js} +1 -1
  96. package/dist/preview/{chunk.D4GOVA25.js → chunk.XS7YFNDU.js} +1 -1
  97. package/dist/preview/{chunk.V6TK4LHW.js → chunk.XSTXV6FP.js} +4 -4
  98. package/dist/preview/chunk.Y4UXEL6Y.js +1 -0
  99. package/dist/preview/chunk.YJUB4OD7.js +1 -0
  100. package/dist/preview/chunk.YLQB3KBA.js +1 -0
  101. package/dist/preview/{chunk.XXHNV24G.js → chunk.YNQDVGZM.js} +1 -1
  102. package/dist/preview/chunk.YV2LJFGS.js +1 -0
  103. package/dist/preview/chunk.Z2YUYZT4.js +1 -0
  104. package/dist/preview/chunk.ZYKAS4BT.js +1 -0
  105. package/dist/preview/page.js +6 -6
  106. package/package.json +6 -6
  107. package/dist/preview/chunk.2643W7FT.js +0 -1
  108. package/dist/preview/chunk.2CLPRG3I.js +0 -1
  109. package/dist/preview/chunk.2IZFIORK.js +0 -1
  110. package/dist/preview/chunk.2NCTM5K2.js +0 -2
  111. package/dist/preview/chunk.3JM2TNDD.js +0 -2
  112. package/dist/preview/chunk.4GGAPOMK.js +0 -2
  113. package/dist/preview/chunk.5JXUAMKI.js +0 -1
  114. package/dist/preview/chunk.5R66YTET.js +0 -2
  115. package/dist/preview/chunk.7DNFXJH3.js +0 -1
  116. package/dist/preview/chunk.7PRFYYVM.js +0 -1
  117. package/dist/preview/chunk.AE5GKL4C.js +0 -1
  118. package/dist/preview/chunk.ARR75WBP.js +0 -35
  119. package/dist/preview/chunk.BKPGDEES.js +0 -1
  120. package/dist/preview/chunk.COTG2IG5.js +0 -1
  121. package/dist/preview/chunk.DAA6XWLF.js +0 -1
  122. package/dist/preview/chunk.DKTCRFMS.js +0 -1
  123. package/dist/preview/chunk.DLGTFXGM.js +0 -1
  124. package/dist/preview/chunk.DN7SN6ZR.js +0 -1
  125. package/dist/preview/chunk.G4WQGTZR.js +0 -3
  126. package/dist/preview/chunk.GDA3G4U2.js +0 -6
  127. package/dist/preview/chunk.GS4T26WW.js +0 -328
  128. package/dist/preview/chunk.HFKMHLJ3.js +0 -1
  129. package/dist/preview/chunk.HGAMNIST.js +0 -1
  130. package/dist/preview/chunk.HKBKH7EK.js +0 -1
  131. package/dist/preview/chunk.HLLWKSZB.js +0 -5
  132. package/dist/preview/chunk.HONUT6OG.js +0 -1
  133. package/dist/preview/chunk.HRWLR7T4.js +0 -1
  134. package/dist/preview/chunk.IWYUFYDJ.js +0 -1
  135. package/dist/preview/chunk.JU2ZVKMT.js +0 -2
  136. package/dist/preview/chunk.K4ZUVH2G.js +0 -1
  137. package/dist/preview/chunk.KC6UZHBM.js +0 -1
  138. package/dist/preview/chunk.KLITC55P.js +0 -1
  139. package/dist/preview/chunk.KZ2376BD.js +0 -19
  140. package/dist/preview/chunk.LYJAVUST.js +0 -1
  141. package/dist/preview/chunk.MOUGB4H6.js +0 -1
  142. package/dist/preview/chunk.MYFWM572.js +0 -1
  143. package/dist/preview/chunk.N4FBDA2W.js +0 -1
  144. package/dist/preview/chunk.O42YET3W.js +0 -1
  145. package/dist/preview/chunk.ONDILMIX.js +0 -1
  146. package/dist/preview/chunk.OWBEV6FR.js +0 -1
  147. package/dist/preview/chunk.OWE6OJ4P.js +0 -1
  148. package/dist/preview/chunk.OYJSFO3A.js +0 -1
  149. package/dist/preview/chunk.P62SKNJS.js +0 -27
  150. package/dist/preview/chunk.PA5HYAEO.js +0 -1
  151. package/dist/preview/chunk.PMEDLEZY.js +0 -9
  152. package/dist/preview/chunk.PTXQHHKF.js +0 -1
  153. package/dist/preview/chunk.R2D373VG.js +0 -1
  154. package/dist/preview/chunk.RB4RTBRZ.js +0 -1
  155. package/dist/preview/chunk.RCLJ4H52.js +0 -116
  156. package/dist/preview/chunk.RKRSRKF3.js +0 -1
  157. package/dist/preview/chunk.RWGLKDWH.js +0 -1
  158. package/dist/preview/chunk.SIL4KD3K.js +0 -1
  159. package/dist/preview/chunk.SS76EIMI.js +0 -1
  160. package/dist/preview/chunk.UIIVEQAT.js +0 -1
  161. package/dist/preview/chunk.UTHHX2TJ.js +0 -1
  162. package/dist/preview/chunk.UWNYT7PF.js +0 -1
  163. package/dist/preview/chunk.VNBO2RXD.js +0 -1
  164. package/dist/preview/chunk.VPPUTA74.js +0 -1
  165. package/dist/preview/chunk.WKXNBHTL.js +0 -4
  166. package/dist/preview/chunk.XDZSTIS6.js +0 -88
  167. package/dist/preview/chunk.YUWRZWGX.js +0 -1
  168. package/dist/preview/chunk.Z2RGLFLS.js +0 -1
  169. package/dist/preview/chunk.Z56B2JR2.js +0 -25
  170. package/dist/preview/chunk.ZEGSQCSD.js +0 -1
  171. package/dist/preview/chunk.ZEVVWWNA.js +0 -44
  172. package/dist/preview/chunk.ZS4DJ76C.js +0 -1
  173. /package/dist/preview/{chunk.OHE5AMHH.js → chunk.EYZ7MHBZ.js} +0 -0
@@ -1 +0,0 @@
1
- import{a as X}from"./chunk.HGAMNIST.js";import{f as J,i as h,k as Q}from"./chunk.ZS4DJ76C.js";import{b as Y}from"./chunk.5R66YTET.js";import{c as U,g as V}from"./chunk.G4WQGTZR.js";import{F as ne,M as G,V as _,h as q,u as B}from"./chunk.Z56B2JR2.js";import{W as T,Y as j,ca as M}from"./chunk.HLLWKSZB.js";import{b as W}from"./chunk.AJZBJBMO.js";var i=W(ne(),1),a=W(G(),1);function fe({affordance:o,onApply:r,onCancel:m,store:w}){let b=_(),l=w??b?.store,[O,P]=(0,i.useState)({}),[f,N]=(0,i.useState)(""),[$,H]=(0,i.useState)(Z),L=(0,i.useId)(),D=(0,i.useRef)(null),k=o.open.filter(e=>!(e.name in O)),s=k[0];if((0,i.useEffect)(()=>N(""),[s?.name]),(0,i.useEffect)(()=>{D.current?.scrollIntoView?.({block:"nearest",inline:"nearest"})},[s?.name]),(0,i.useLayoutEffect)(()=>{let e=D.current,n=typeof document>"u"?null:document.activeElement;if(!e||n&&n!==document.body&&!e.contains(n))return;let u=e.querySelector("form input, [role=group] button:not([disabled])");u&&u!==n&&u.focus()},[s?.name]),!s)return null;let y=e=>{let n={...O,[s.name]:e};if(o.open.filter(c=>!(c.name in n)).length===0){let c=r(Object.fromEntries(Object.entries(n).filter(([,I])=>I!==void 0)));c&&c.length>0&&P(Object.fromEntries(Object.entries(n).filter(([I])=>!c.includes(I))))}else P(n)},z=s.optional?(0,a.jsx)("button",{type:"button",onClick:()=>y(void 0),style:{fontSize:"0.8125rem"},children:"Skip"}):null,t=s.shape??{type:"unknown"},d=t.type==="number"?t.amount:void 0,p=oe(s,t),g=J(l.schema,l.allMutations().find(e=>e.name===o.mutation),s.name),[C,ee]=(0,i.useState)(""),R=(0,i.useMemo)(()=>{let e=p.map(n=>l.graph.getNode(n)).filter(n=>n!==void 0);return Y(e,n=>l.schema.tryDefinition(n))},[p,l]),E=e=>{let n=ae(l,t,e),u=t.type==="choice"||t.type==="several"&&t.of.type==="choice"?g.option(e):n,c=R.get(e);return c?`${u} \xB7 ${c}`:u},x=(0,i.useMemo)(()=>{let e=C.trim().toLowerCase();return e===""?p:p.filter(n=>E(n).toLowerCase().includes(e))},[p,C,l,t,R]),v=t.type==="several",K=t.type==="file"?t:t.type==="several"&&t.of.type==="file"?t.of:void 0,F=v&&p.length===0,S=s.kinds&&s.kinds.length>0&&!s.kinds.includes("*")?s.kinds.map(e=>j(M(l.schema.tryDefinition(e),e))).join(" or "):g.label,te=o.open.length>1?`${S} \xB7 ${o.open.length-k.length+1} of ${o.open.length}`:S;return(0,a.jsxs)("div",{ref:D,"data-graview-asking":o.id,style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:4,padding:"5px 0 2px"},children:[o.open.length>1||p.length>0?(0,a.jsx)("span",{id:L,style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:te}):null,p.length>A?(0,a.jsx)("input",{type:"search",value:C,onChange:e=>ee(e.target.value),placeholder:`Filter ${p.length}\u2026`,"aria-label":`Filter ${S}`,"data-testid":"ask-filter",style:{font:"inherit",fontSize:"0.8125rem",minWidth:0,padding:"3px 7px"}}):null,K?(0,a.jsxs)("div",{style:{display:"grid",gap:4},children:[(0,a.jsx)(X,{as:"control",value:void 0,onChange:y,several:v,image:K.image===!0,label:g.label}),z]}):p.length>0?(0,a.jsxs)("div",{role:"group","aria-labelledby":L,style:{display:"flex",flexWrap:"wrap",gap:4},children:[x.slice(0,A).map(e=>{let n=$.includes(e);return(0,a.jsx)("button",{type:"button","aria-label":`${S}: ${E(e)}`,...v?{"aria-pressed":n}:{},style:{padding:"3px 9px",fontSize:"0.8125rem",...n?{borderColor:"var(--graview-accent)",color:"var(--graview-accent)"}:{}},onClick:()=>v?H(u=>u.includes(e)?u.filter(c=>c!==e):[...u,e]):y(t.type==="boolean"?e==="yes":e),children:E(e)},e)}),x.length>A?(0,a.jsxs)("span",{"data-testid":"ask-more",style:{alignSelf:"center",fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:[x.length-A," more \u2014 type to narrow"]}):null,x.length===0?(0,a.jsxs)("span",{"data-testid":"ask-none",style:{alignSelf:"center",fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:["None of the ",p.length," match that."]}):null,v?(0,a.jsx)("button",{type:"button",disabled:$.length===0,style:{fontSize:"0.8125rem"},onClick:()=>{let e=$;H(Z),y(e)},children:k.length>1?"Next":"Apply"}):null,z]}):(0,a.jsxs)("form",{style:{display:"flex",flexWrap:"wrap",gap:4},onSubmit:e=>{if(e.preventDefault(),F){y(f.split(/[,\n]/).map(n=>n.trim()).filter(Boolean));return}if(f.trim().length!==0){if(d){let n=Q(f,d);n!==void 0&&y(n);return}y(t.type==="number"?t.duration?V(f)??f:Number(f):f)}},children:[t.type==="text"&&t.long?(0,a.jsx)("textarea",{autoFocus:!0,name:s.name,"aria-label":g.label,placeholder:g.label,value:f,rows:4,onChange:e=>N(e.target.value),onKeyDown:e=>{e.key==="Escape"?m():e.key==="Enter"&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),e.currentTarget.form?.requestSubmit())},style:{flex:"1 1 100%",minWidth:0,font:"inherit",fontSize:"0.875rem",lineHeight:1.45,padding:"5px 8px",borderRadius:7,border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",color:"var(--graview-ink)",resize:"vertical",fieldSizing:"content",minHeight:"5.5em",maxHeight:"40vh"}}):(0,a.jsx)("input",{autoFocus:!0,type:t.type==="date"?t.time?"datetime-local":"date":t.type==="number"&&!t.duration&&!d?"number":t.type==="text"&&t.holds==="phone"?"tel":"text",...d?{inputMode:"decimal","data-graview-amount":d.format??"unit"}:{},name:s.name,"aria-label":g.label,placeholder:F?`${g.label}, separated by commas`:d?`${g.label}, ${h(d).hint} \u2014 ${h(d).prefix??""}${h(d).placeholder}${h(d).suffix?` ${h(d).suffix}`:""}`:g.label,value:f,...t.type==="number"&&t.min!==void 0?{min:t.min}:{},...t.type==="number"&&t.max!==void 0?{max:t.max}:{},...t.type==="number"&&t.step!==void 0?{step:t.step}:{},onChange:e=>N(e.target.value),onKeyDown:e=>{e.key==="Escape"&&m()},style:{flex:1,minWidth:0,font:"inherit",fontSize:"0.875rem",padding:"5px 8px",borderRadius:7,border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",color:"var(--graview-ink)"}}),(0,a.jsx)("button",{type:"submit",disabled:!F&&f.trim().length===0,style:{fontSize:"0.8125rem"},children:k.length>1?"Next":"Apply"}),z]})]})}var Z=[],A=10;function oe(o,r){return o.candidates&&o.candidates.length>0?o.candidates:r.type==="choice"?r.options:r.type==="several"&&r.of.type==="choice"?r.of.options:r.type==="boolean"?re:[]}var re=["yes","no"];function ae(o,r,m){return r.type==="boolean"||r.type==="choice"||r.type==="several"&&r.of.type==="choice"?m:ie(o,m)}function ie(o,r){let m=q(r);if(m){let l=U(o.schema,o.graph.getNode(m.from)?.kind??"",m.kind,"out");return l.charAt(0).toUpperCase()+l.slice(1)}let w=B(r);if(w.length>0)return w.map(l=>o.schema.tryDefinition(l)?.plural??`${l}s`).join(" + ");let b=o.graph.getNode(r);return b?T(o.schema.tryDefinition(b.kind),b):r}export{fe as a,ie as b};
@@ -1,4 +0,0 @@
1
- import{a as vr,b as kr,c as Sr}from"./chunk.OWE6OJ4P.js";import{a as At,f as Lt,g as an}from"./chunk.QNHECGMH.js";import{e as xr}from"./chunk.RKRSRKF3.js";import{e as yr,o as An,p as pr}from"./chunk.KC6UZHBM.js";import{b as sn}from"./chunk.ZBXOX3W3.js";import{a as Le,b as po,c as Ut,d as br,e as xo}from"./chunk.5AT4O4BN.js";import{a as wr}from"./chunk.X53HI436.js";import{b as dr,d as lr}from"./chunk.UT6642FC.js";import{a as cr,c as ho,d as fo,g as mo,h as go,i as yo,j as ur,k as _t,l as Gt,p as Ot,q as Kt,r as mr,s as gr}from"./chunk.OYJSFO3A.js";import{a as hr,b as fr}from"./chunk.HV6I74DF.js";import{a as ir,b as ze,c as En,d as ar,f as On,g as on,h as rn,i as zt,j as uo}from"./chunk.OQDETV4X.js";import{c as sr}from"./chunk.G4WQGTZR.js";import{a as Jt}from"./chunk.GS4T26WW.js";import{A as ot,B as Mn,C as Vt,F as Te,H as oo,J as ft,M as Oe,N as ro,R as io,S as Rn,T as Mt,U as ge,W as Rt,_ as Yt,a as Qn,aa as rr,b as Zn,c as Jn,d as tr,e as nr,f as kn,h as kt,ha as ao,ia as so,j as ut,ja as Et,k as eo,l as Sn,la as lo,m as en,oa as co,p as to,pa as nn,r as be,s as Re,t as or,u as tn,v as Ee,w as St,x as ht,y as no}from"./chunk.Z56B2JR2.js";import{$ as Wt,Fb as Ie,V as Xo,W as vn,Y as Ft,Z as jt,_ as vt,aa as qo,ca as Qo,ob as Zt,oc as Zo,rc as Jo,wc as er}from"./chunk.HLLWKSZB.js";import{b as se}from"./chunk.AJZBJBMO.js";var Mr={width:1200,height:760,focusSize:{width:1200,height:420},relationSize:{width:240,height:140},contextSize:{width:300,height:104},gap:16,unit:16};var Rr=(e,t)=>e?`${e.edgeKind}|${e.direction}`:`raised|${t}`,It=(e,t,n)=>`${Mn}${e}|${t}|${n}`;function zi(e,t){if(!Vt(e))return null;let[n="",r="",o="",a=""]=e.slice(Mn.length).split("|"),i=t.definitions.find(x=>x.kind===n),l=Wt(t,n),u=r==="raised"?null:(()=>{let x=i?.edges[r]??t.definitions.map(p=>p.edges[r]).find(Boolean);return((o==="in"?x?.inverse:x?.description)??Ft(r)).toLowerCase()})(),[s="",d=""]=a.split("="),c=s.split(":")[0],h=a===""||a==="kind"||a.startsWith("more")?null:`${qo(i,c).toLowerCase()}: ${d==="none"?"none":d}`;return[a.startsWith("more")?`More ${l.toLowerCase()}`:l,[u,h].filter(Boolean).join(", ")].filter(Boolean).join(" \u2014 ")}function Ln(e,t){let n=e.map(()=>0),r=e.map((i,l)=>({size:i,index:l})).sort((i,l)=>i.size-l.size||i.index-l.index),o=Math.max(t,e.length),a=e.length;for(let{size:i,index:l}of r){let u=Math.max(1,Math.floor(o/a));n[l]=Math.min(i,u),o-=n[l],a-=1}return n}function wo(e){return Rr(e.via,e.node.kind)}function In(e,t){let n=[],r=0;return e.forEach((o,a)=>{if(o<=0)return;if(n.length>0&&o<=r){for(let l=0;l<o;l++)n[n.length-1].push(a);r-=o;return}let i=o;for(;i>0;){let l=Math.min(t,i);n.push(Array.from({length:l},()=>a)),i-=l,r=t-l}}),n}function vo(e,t,n){let r=Ln(e,t*n);for(;In(r,t).length>n;){let o=-1;if(r.forEach((a,i)=>{a>1&&(o<0||a>r[o])&&(o=i)}),o<0)break;r[o]=r[o]-1}return r}function _i(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,a)=>({node:o,index:a,key:r(o)})).sort((o,a)=>{for(let i=0;i<o.key.length;i++)if(o.key[i]!==a.key[i])return o.key[i]-a.key[i];return o.index-a.index}).map(o=>o.node)}var Gi=5,Ki=(e,t)=>{for(let n=0;n<e.length;n++)if(e[n]!==t[n])return e[n]<t[n];return!1};function Er(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}:{}},a=[];for(let l of yr(n.schema,r).groups)if(l.key!==n.exclude)if(l.buckets)for(let u of["decade","year","month"])a.push({by:l.key,bucket:u});else a.push({by:l.key});let i;return a.forEach((l,u)=>{let d=xr(e,{group:l},o).groups;if(d.length<2||d.length>t)return;let h=d.filter(x=>x.key!=="").reduce((x,f)=>x+f.nodes.length,0)/e.length;if(h<.5||d.some(x=>x.nodes.length>e.length*.75))return;let y=[-Math.round(h*100),Math.abs(d.length-Gi),u];(!i||Ki(y,i.score))&&(i={grouping:{by:l.by,...l.bucket?{bucket:l.bucket}:{},groups:d},score:y})}),i?.grouping}function ko(e,t){let n=f=>({id:f.node.id,kind:f.node.kind,node:f.node,...f.via?{via:f.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 f of e){let p=Rr(f.via,f.node.kind),b=o.get(p);b?b.push(f):o.set(p,[f])}let a=[...o.entries()].map(([f,p])=>({key:f,run:p,via:p[0].via,kinds:[...new Set(p.map(b=>b.node.kind))],members:[],whole:!1,extra:0})),i=Ln(a.map(f=>f.run.length),t.budget);a.forEach((f,p)=>f.whole=f.run.length<=i[p]);let l=a.filter(f=>!f.whole),u=a.filter(f=>f.whole).reduce((f,p)=>f+p.run.length,0),s=Math.max(l.length,t.budget-u);for(let f of l){f.members=_i(f.run.map(b=>b.node),r,t.graph);let p=s-(l.length-1);f.kinds.length>1&&f.kinds.length<=p?f.byKind=!0:f.kinds.length===1&&(f.grouping=Er(f.members,p,{schema:t.schema,graph:t.graph,...f.via?{exclude:f.via.edgeKind}:{},...t.today?{today:t.today}:{}}))}let d=f=>f.byKind?f.kinds.length:f.grouping?f.grouping.groups.length:1;for(;l.reduce((f,p)=>f+d(p),0)>s;){let f=[...l].filter(p=>d(p)>1).sort((p,b)=>d(b)-d(p))[0];if(!f)break;f.grouping=void 0,f.byKind=!1}s-=l.reduce((f,p)=>f+d(p),0);let c=f=>f.byKind?f.kinds.some(p=>t.expanded.has(It(p,f.key,"kind"))):f.grouping?.groups.some(p=>t.expanded.has(It(f.kinds[0],f.key,bo(f.grouping,p.key)))),h=l.filter(f=>!f.grouping&&!f.byKind?!0:c(f)),y=Ln(h.map(f=>f.members.length),Math.max(0,s));h.forEach((f,p)=>f.extra=s>0?y[p]:0);let x=[];for(let f of a){let{key:p,via:b}=f;if(f.whole){x.push(...f.run.map(n));continue}let g=v=>({id:v.id,kind:v.kind,node:v,...b?{via:b}:{}}),O=new Map(f.run.map((v,M)=>[v.node.id,M])),I=(v,M,w)=>{let E=[...v.slice(0,M)].sort((N,H)=>O.get(N.id)-O.get(H.id));x.push(...E.map(g));let V=v.slice(M);if(V.length===0)return;let A=V[0].kind;x.push({id:It(A,p,w?`more:${w}`:"more"),kind:A,...b?{via:b}:{},aggregate:{kind:A,memberIds:V.map(N=>N.id),label:M>0?`${V.length} more ${t.plural(A).toLowerCase()}`:`${V.length} ${t.plural(A).toLowerCase()}`,opens:{in:"picture",focus:Ee(A),within:w?{filter:w}:{}}}})},L=b&&t.focusId?`${b.edgeKind}:${t.focusId}`:void 0;if(f.byKind){let v=f.kinds.find(M=>t.expanded.has(It(M,p,"kind")));for(let M of f.kinds){let w=f.members.filter(E=>E.kind===M);if(M===v){let E=f.extra+1;w.length<=E?x.push(...w.map(g)):I(w,E-1,L);continue}x.push({id:It(M,p,"kind"),kind:M,...b?{via:b}:{},aggregate:{kind:M,memberIds:w.map(E=>E.id),label:t.plural(M),opens:{in:"place"}}})}continue}let C=f.grouping;if(!C){I(f.members,f.extra,L);continue}let Z=f.kinds[0],q=C.groups.find(v=>t.expanded.has(It(Z,p,bo(C,v.key))));for(let v of C.groups){if(v===q){let M=f.members.filter(E=>v.nodes.includes(E)),w=f.extra+1;if(M.length<=w)x.push(...M.map(g));else{let E=v.key!==""&&!v.key.includes(",")&&!C.bucket,V=[L,E?`${C.by}:${v.key}`:void 0].filter(Boolean).join(",")||void 0;I(M,w-1,V)}continue}x.push({id:It(Z,p,bo(C,v.key)),kind:Z,...b?{via:b}:{},aggregate:{kind:Z,memberIds:f.members.filter(M=>v.nodes.includes(M)).map(M=>M.id),label:v.label.charAt(0).toUpperCase()+v.label.slice(1),opens:{in:"place"}}})}}return x}var bo=(e,t)=>`${e.by}${e.bucket?`:${e.bucket}`:""}=${t||"none"}`;function Ar(e,t,n,r,o=1){let a=l=>String(l).length*7.4,i=e.length*8.6+6+a(t)+14+(n>0?22+a(n):0);return{width:Math.max(i,r?184:0)*o,height:(r?38:22)*o,short:{width:i*o,height:22*o}}}function Ct(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 So=(e,t,n,r)=>{let o=Math.max(e.x,Math.min(t.x,e.x+e.width)),a=Math.max(e.y,Math.min(t.y,e.y+e.height));return Math.abs(o-t.x)/n+Math.abs(a-t.y)/r<.92},dn=4,Or=.45;function Mo(e,t,n,r={},o={}){let a={};for(let k of e)a[k.kind]=k.count;let i={x:(r.left??0)+8,y:(r.top??0)+8,width:n.width-(r.left??0)-(r.right??0)-16,height:n.height-(r.top??0)-(r.bottom??0)-16},l=o.avoid??[],u=o.tilt??.5,s=k=>k.nameplate??{width:120,height:34,short:{width:90,height:20}},d=k=>e.map(R=>{let $=k.get(R.kind);return{card:R,plot:$,center:Ut($.col+$.side/2,$.row+$.side/2,1,u)}}),c=(k,R)=>{let $=1/0,Y=-1/0,j=1/0,S=-1/0;for(let{card:T,plot:B,center:W}of k){let z=W.x*R,K=W.y*R,D=B.side*R/2,re=T.opened>0?s(T).width:s(T).short.width;$=Math.min($,z-Math.max(D+(T.count>12?30:0),re/2)),Y=Math.max(Y,z+Math.max(D,re/2)),j=Math.min(j,K-D*u-R*Or),S=Math.max(S,K+D*u+dn+s(T).short.height)}return{minX:$,maxX:Y,minY:j,maxY:S}},h=k=>{let R=4,$=160;for(let Y=0;Y<24;Y++){let j=(R+$)/2,S=c(k,j);S.maxX-S.minX<=i.width&&S.maxY-S.minY<=i.height?R=j:$=j}return R},y=k=>{let R={...o.order?{order:o.order}:{},counts:a,...o.plots?{plots:o.plots}:{},pitch:k},$=po(t,R),Y=po(t,{...R,upright:!0}),j=h(d($)),S=h(d(Y)),T=n.height>n.width&&S>=j?Y:$;return{map:T,fitted:T===Y?S:j}},x=[],f=new Map,p=0,b=(k,R={x:0,y:0})=>{let $=c(x,k),Y=i.x+i.width/2-($.minX+$.maxX)/2+R.x,j=i.y+i.height/2-($.minY+$.maxY)/2+R.y;return{originX:Y,originY:j,cell:k}},g=k=>{let{originX:R,originY:$,cell:Y}=k,j=x.map(({center:B})=>B.y),S=Math.max(...j),T=Math.min(...j);return x.map(({card:B,plot:W,center:z})=>{let K=R+z.x*Y,D=$+z.y*Y,re=W.side*Y/2,G=re*u,we=S===T?.5:(z.y-T)/(S-T);return{card:B,plot:W,x:K,y:D,halfW:re,halfH:G,depth:1-we*.65}})},O=(k,R=!0)=>{let $=[];return[...k].sort((j,S)=>(S.card.weight??S.card.count)-(j.card.weight??j.card.count)||e.indexOf(j.card)-e.indexOf(S.card)).filter(j=>[s(j.card),s(j.card).short].some(S=>{let T=C(j,S),B=(!R||T.x>=0&&T.y>=0&&T.x+T.width<=n.width&&T.y+T.height<=n.height)&&!$.some(W=>Ct(T,W,4))&&!k.some(W=>W!==j&&So(T,W,W.halfW,W.halfH))&&!l.some(W=>Ct(T,W,0));return B&&$.push(T),B})).length},I=k=>k.card.marquee?{x:k.x-k.card.marquee.width/2,y:k.y+k.halfH+dn+s(k.card).height,width:k.card.marquee.width,height:k.card.marquee.height}:null,L=(k,R,$)=>$.some(Y=>{if(Y===R)return!1;let j=I(Y);return j!==null&&Ct(k,j,4)}),C=(k,R,$="under")=>$==="aside"?{x:k.x+k.halfW+dn,y:k.y-R.height/2,width:R.width,height:R.height}:$==="above"?{x:k.x-R.width/2,y:k.y-k.halfH-dn-Or*M.cell-R.height,width:R.width,height:R.height}:{x:k.x-R.width/2,y:k.y+k.halfH+dn,width:R.width,height:R.height},Z=k=>k.some(R=>l.some($=>So($,R,R.halfW,R.halfH)||Ct($,C(R,s(R.card).short),0))),q=k=>k.every(R=>{let $=C(R,s(R.card).short);return R.x-R.halfW>=0&&R.x+R.halfW<=n.width&&R.y-R.halfH>=0&&$.x>=0&&$.x+$.width<=n.width&&$.y+$.height<=n.height}),v={pitch:Le,said:-1};for(let k of[Le,Le+1,Le+2,Le+3,Le+5,Le+7]){({map:f,fitted:p}=y(k)),x=d(f);let R=O(g(b(p)));if(R>v.said&&(v={pitch:k,said:R}),R===e.length)break}(v.pitch!==Le+7||v.said!==e.length)&&({map:f,fitted:p}=y(v.pitch),x=d(f));let M=b(p);if(l.length>0&&Z(g(M))){let k;for(let R=1;R>=.3&&!k;R-=.05){let $=p*R,Y=Math.max(...l.map(S=>S.width))/2+$,j=Math.max(...l.map(S=>S.height))/2+$/2;for(let S of[0,.5,.75,1,1.25]){for(let[T,B]of[[1,0],[-1,0],[0,1],[0,-1],[1,1],[-1,1],[1,-1],[-1,-1]]){let W=b($,{x:T*Y*S,y:B*j*S}),z=g(W);if(!Z(z)&&q(z)){k=W;break}if(S===0)break}if(k)break}}k&&(M=k)}let w=(k,R)=>{let $={x:n.width/2,y:n.height/2};return{cell:k.cell*R,originX:$.x+(k.originX-$.x)*R,originY:$.y+(k.originY-$.y)*R}},E=1;if(O(g(M))<e.length){let k={said:O(g(M),!1),area:1/0,pitch:-1,by:1},R={map:f,shape:x,fitted:p,where:M};for(let Y of[Le,Le+1,Le+2,Le+3,Le+5,Le+7]){({map:f,fitted:p}=y(Y)),x=d(f);let j=b(p);for(let S=1;S<=3.001;S+=.1){let T=O(g(w(j,S)),!1),B=c(x,p*S),W=(B.maxX-B.minX)*(B.maxY-B.minY);if((T>k.said||T===k.said&&W<k.area)&&(k={said:T,area:W,pitch:Y,by:S}),T===e.length)break}}k.pitch<0?{map:f,shape:x,fitted:p,where:M}=R:({map:f,fitted:p}=y(k.pitch),x=d(f),E=k.by,M=w(b(p),E));let $=g(M).filter(Y=>o.keep?.includes(Y.card.kind));if($.length>0){let Y=$.flatMap(z=>[{x:z.x-z.halfW,y:z.y-z.halfH,width:z.halfW*2,height:z.halfH*2},C(z,s(z.card))]),j=Math.min(...Y.map(z=>z.x)),S=Math.max(...Y.map(z=>z.x+z.width)),T=Math.min(...Y.map(z=>z.y)),B=Math.max(...Y.map(z=>z.y+z.height)),W=(z,K,D)=>K-z>D-16?D/2-(z+K)/2:z<8?8-z:K>D-8?D-8-K:0;M={...M,originX:M.originX+W(j,S,n.width),originY:M.originY+W(T,B,n.height)}}}let V=o.zoom&&o.zoom!==1?o.zoom:1;V!==1&&(M=w(M,V));let A=g(M),N=[],H=new Map,U=[...A].sort((k,R)=>(R.card.weight??R.card.count)-(k.card.weight??k.card.count)||e.indexOf(k.card)-e.indexOf(R.card));for(let k of U){let R=[["full",s(k.card),"under"],["short",s(k.card).short,"under"]],$="none",Y=k===U[0],j=(T,B)=>R.filter(([W])=>W.startsWith(B)).map(([W,z,K])=>[W,z,K,T]),S=Y?[...j(!1,"full"),...j(!1,"short"),...j(!0,"full"),...j(!0,"short")]:R.map(([T,B,W])=>[T,B,W,!1]);for(let[T,B,W,z]of S){let K=C(k,B,W);if((V!==1||E!==1||K.x>=0&&K.y>=0&&K.x+K.width<=n.width&&K.y+K.height<=n.height)&&!N.some(G=>Ct(K,G,4))&&(z||!A.some(G=>G!==k&&So(K,G,G.halfW,G.halfH)))&&!L(K,k,A)&&!l.some(G=>Ct(K,G,0))){$=T,N.push(K);break}}H.set(k.card.id,$)}let X=A.map(k=>({id:k.card.id,x:k.x-k.halfW,y:k.y-k.halfH,width:k.halfW*2,height:k.halfH*2+(k.card.opened>0?Math.max(k.card.openedMin??0,k.card.opened):0),depth:k.depth,plot:k.plot,nameplate:H.get(k.card.id)??"none"})),de=c(x,M.cell),le={cell:M.cell,originX:M.originX,originY:M.originY,pan:o.pan??{x:0,y:0},extent:{x:M.originX+de.minX,y:M.originY+de.minY,width:de.maxX-de.minX,height:de.maxY-de.minY},openedShare:1,...u!==.5?{tilt:u}:{},...A.some(k=>k.card.marquee)?{showings:A.flatMap(k=>{let R=I(k);return R?[{id:k.card.id,x:R.x-(k.x-k.halfW),y:R.y-(k.y-k.halfH),width:R.width,height:R.height}]:[]})}:{}};return{placed:X,frame:le,map:f}}function mt(e){let{width:t,height:n}=e.visible??e,r={x:t*.45,y:n*.45};if(!e.city)return r;let{extent:o}=e.city,a=24;return{x:Math.max(r.x,o.x+o.width-t+a,-o.x+a),y:Math.max(r.y,o.y+o.height-n+a,-o.y+a)}}var Cn=48;function Ro(e){if(!e.city)return[];let{width:t,height:n}=e.visible??e,r=[];for(let o of e.nodes){if(!o.id.startsWith("kind:")||Math.round(o.plane)!==2)continue;let a=o.x+o.width/2,i=o.y+o.height/2,l=a<0?"left":a>t?"right":i<0?"top":i>n?"bottom":null;if(!l)continue;let u=l==="left"||l==="right",s=u?Math.max(0,Math.min(n,i)):Math.max(0,Math.min(t,a)),d=(y,x)=>y<x/4?x/4-y:y>x*3/4?x*3/4-y:0,c=(y,x)=>y<Cn?Cn-y:y>x-Cn?x-Cn-y:0,h=u?{x:d(a,t),y:c(i,n)}:{x:c(a,t),y:d(i,n)};r.push({id:o.id,kind:o.id.slice(5),side:l,along:s,by:h})}return r}function Eo(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 Ui={rankOf:()=>{},parentOf:()=>{}};function Lr(e,t){if(t.size===0)return Ui;let n=e.kinds,r=new Map,o=(s,d)=>{s!==d&&((r.get(s)??r.set(s,new Set).get(s)).add(d),(r.get(d)??r.set(d,new Set).get(d)).add(s))};for(let s of n){let d=e.tryDefinition(s);if(d)for(let c of Object.values(d.edges??{})){let h=c.to==="*"?n:c.to;for(let y of h)o(s,y)}}let a=new Map,i=new Map,l=[...t].filter(s=>n.includes(s));for(let s of l)a.set(s,0);let u=0;for(;l.length>0;){u+=1;let s=[];for(let d of[...l].sort((c,h)=>n.indexOf(c)-n.indexOf(h)))for(let c of[...r.get(d)??[]].sort((h,y)=>n.indexOf(h)-n.indexOf(y)))a.has(c)||(a.set(c,u),u===2&&i.set(c,d),s.push(c));l=s}return{rankOf:s=>{let d=a.get(s);if(d!==0)return d===1?"primary":"secondary"},parentOf:s=>i.get(s)}}function Ir(e,t,n,r,o={}){if(n){let a=new Map;for(let i of e.allEdges()){if(r&&i.kind!==r)continue;let l=i.from===n.id?i.to:i.to===n.id?i.from:null;if(l===null||l===n.id)continue;let u=e.getNode(l);if(!u||a.has(l))continue;let s=i.from===n.id?"out":"in",d=s==="out"?n.kind:u.kind,c=Xi(t,d,i.kind,s);a.set(l,{node:u,via:{edgeKind:i.kind,direction:s,...c?{description:c}:{}}})}if(a.size>0){let i=l=>`${l.via.edgeKind}|${l.via.description??""}`;return[...a.values()].sort((l,u)=>(i(l)<i(u)?-1:i(l)>i(u)?1:0)||ot(l.node,u.node))}}if(n){let a=o[n.id]??[],i=new Set,l=[];for(let u of a){if(u===n.id||i.has(u))continue;let s=e.getNode(u);s&&(r&&r!=="judges"&&s.kind!==r||(i.add(u),l.push({node:s,via:{edgeKind:"judges",direction:"out",description:"what it finds wrong"}})))}if(l.length>0)return l.sort((u,s)=>ot(u.node,s.node))}return r?e.allNodes().filter(a=>a.kind===r).sort(ot).map(a=>({node:a})):[]}function Xi(e,t,n,r){let a=e.tryDefinition(t)?.edges?.[n];return r==="out"?a?.description:a?.inverse}function Cr(e,t,n){let r=new Map,o=[...t.values()].sort((s,d)=>s.plane-d.plane);for(let s of o)for(let d of s.aggregate?.memberIds??[])!t.has(d)&&!r.has(d)&&r.set(d,s.id);let a=s=>t.get(s)??t.get(r.get(s)??""),i=new Map,l=new Map,u=new Map;for(let s of e.allEdges()){let d=a(s.from),c=a(s.to);if(!d||!c||d.id===c.id&&!(n.overview&&d.aggregate&&d.plane===2))continue;let h=`${s.kind}:${d.id}:${c.id}`,y=i.get(h);if(y){let x=`${s.from}
2
- ${s.to}`,f=l.get(h);if(f.has(x))continue;if(f.add(x),u.get(h).push({from:s.from,to:s.to}),y.single){let{single:p,...b}=y;i.set(h,b)}continue}l.set(h,new Set([`${s.from}
3
- ${s.to}`])),u.set(h,[{from:s.from,to:s.to}]),i.set(h,{id:h,kind:s.kind,from:d.id,to:c.id,edges:[{from:s.from,to:s.to}],single:{from:s.from,to:s.to},...d.id===c.id?{loop:!0}:{},x1:d.x+d.width/2,y1:d.y+d.height/2,x2:c.x+c.width/2,y2:c.y+c.height/2})}return[...i.values()].map(s=>({...s,edges:u.get(s.id)})).sort(ot)}var Pr=.85,qi=60,Oo=160;function Qi(e,t,n,r,o,a=Pr){let i=e*t.width+Math.max(0,e-1)*n,l=Math.max(n,(r-i)/2);return Array.from({length:e},(u,s)=>({x:l+s*(t.width+n),y:o,depth:a}))}function Zi(e,t,n,r,o){let a=e*t.width+Math.max(0,e-1)*n,i=Math.max(n,(r-a)/2);return Array.from({length:e},(l,u)=>({x:i+u*(t.width+n),y:o}))}function Pn(e,t,n,r={}){let o={...Mr,...r},a=Math.max(8,o.unit??16)/16,i=o.inset?.left??0,l=n.overview?Math.max(0,o.dock?.right??0):0,u=n.overview?Math.max(0,o.dock?.bottom??0):0,s=o.width-l-i-(o.inset?.right??0),d=[],c=new Map,h=m=>n.past===!0||Xo(t.tryDefinition(m.kind),m,o.today),y=new Set(r.hiddenKinds??[]),x=m=>!y.has(m.kind),f=n.focusId?ht(n.focusId).filter(m=>t.tryDefinition(m)!==void 0).filter(m=>!y.has(m)):[];n.focusId&&ht(n.focusId).length>0&&f.length===0&&(n={...n,focusId:null});let p=n.focusId?e.getNode(n.focusId):void 0;p&&!x(p)&&(n={...n,focusId:null},f=[]);let b=f.length>0?[...e.allNodes()].filter(m=>f.includes(m.kind)).sort(ot):[],g=b.filter(x).filter(h),O=b.length-g.length,I=n.focusId&&f.length===0?e.getNode(n.focusId):void 0,L=n.zoom===!0&&!n.overview&&n.focusId!==null,C=Math.max(56,o.height*.062),Z=Math.min(o.height*.895,o.height-C),q=L?I!==void 0?{focusY:o.height*.03,focusH:o.height*.58,relationY:o.height*.645,relationH:o.height*.2,contextY:Z,contextH:C}:{focusY:o.height*.03,focusH:o.height*.71,relationY:o.height*.765,relationH:o.height*.1,contextY:Z,contextH:C}:I===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 m=o.height,F=m*.04,_=Math.max(m*.42,Math.min(m*.56,300)),ee=F+_+m*.06;return{focusY:F,focusH:_,relationY:ee,relationH:Math.max(m*.12,m*.878-m*.068-ee),contextY:m*.878,contextH:m*.092}})(),v=m=>Math.min(o.gap*m,Math.round(s*.1)),M=L?Math.min(880,s-v(5)):Math.min(700,s-v(6)),w=L?s-v(5):Math.min(o.focusSize.width,s-v(6)),E=(m,F,_)=>({width:m===0?F:Math.min(F,(s-o.gap*(m+1))/m),height:_}),V=(m,F,_)=>{let ee=E(m,F,_),xe=Math.min(F,Oo*a,s-o.gap*2);return ee.width>=xe?ee:{width:xe,height:_}},A=m=>Math.max(1,Math.floor((s-o.gap)/(Math.min(m,Oo*a,s-o.gap*2)+o.gap))),N=new Set(n.expanded),H=n.overview?[]:Ir(e,t,I,n.relation,o.judged).filter(m=>x(m.node)).filter(m=>h(m.node)),U=H.length>0?q.focusH:q.contextY-q.focusY-o.gap*2,X=w,de=o.height,le=Math.min(s*.5/X,o.height*.48/de),k=X*le,R=de*le,$=new Set(r.plainGroups??[]),Y=n.overview&&!I&&f.length>0&&n.focusId!==null,j=Y&&f.length>0&&f.every(m=>$.has(m));if(Y)for(let m of f)j&&r.besideTheMap!==!0?N.add(be(m)):N.delete(be(m));let S=Y&&!j&&f.length===1?f[0]:void 0,T=S!==void 0&&(r.screens?.[S]?.length??0)>0,B,W=n.overview===!0&&I!==void 0&&r.besideTheMap===!0;n.overview&&(I||f.length>0)&&n.focusId&&!j&&!T&&!(Y&&r.besideTheMap===!0)&&!W?(B={x:i+(s-k)/2,y:o.height*.53-R/2,width:k,height:R},Qt({id:n.focusId,kind:I?I.kind:f[0],plane:0,x:B.x,y:B.y,width:k,height:R,natural:{width:X,height:de},...I?{}:{aggregate:{kind:f.join("+"),memberIds:g.map(m=>m.id),label:r.plurals?.[n.focusId]??f.map(m=>vt(t,m)).join(" and "),...O>0?{retired:O}:{}}}})):n.overview||(I?Qt({id:I.id,kind:I.kind,plane:0,x:i+(s-M)/2,y:q.focusY,width:M,height:U}):f.length>0&&n.focusId&&Qt({id:n.focusId,kind:f[0],plane:0,x:i+(s-w)/2,y:q.focusY,width:w,height:U,aggregate:{kind:f.join("+"),memberIds:g.map(m=>m.id),label:r.plurals?.[n.focusId]??f.map(m=>vt(t,m)).join(" and "),...O>0?{retired:O}:{}}}));let z=26,K=52,D=22,re=Math.round(o.relationSize.width*.75),G=Math.max(1,Math.floor((s-o.gap)/(re+o.gap))),we=o.unit/16,Ce=Math.max(2,Math.floor((q.relationH+o.gap)/(z*we+o.gap))),Je=H.length>G*Ce,at={schema:t,graph:e,focusId:I?.id,expanded:N,...o.relevance?{relevance:o.relevance}:{},...n.selection?{selection:n.selection}:{},plural:m=>vt(t,m),...o.today?{today:o.today}:{}},Ue=Je?Math.max(o.gap,D*we):o.gap,Ve,te;if(!Je)Ve=H.map(m=>({id:m.node.id,kind:m.node.kind,node:m.node,...m.via?{via:m.via}:{}})),te=Array.from({length:Math.max(1,Math.ceil(Ve.length/G))},(m,F)=>Array.from({length:Math.min(G,Ve.length-F*G)},(_,ee)=>F*G+ee));else{let m=Math.max(1,Math.floor((q.relationH+Ue)/(K*we+Ue))),F=new Map;for(let ce of H){let Me=wo(ce),wt=F.get(Me);wt?wt.push(ce):F.set(Me,[ce])}let _=vo([...F.values()].map(ce=>ce.length),G,m),ee=[...F.values()].map((ce,Me)=>ko(ce,{...at,budget:_[Me]}));Ve=ee.flat();let xe=ee.map((ce,Me)=>ee.slice(0,Me).reduce((wt,qn)=>wt+qn.length,0)),Ye=ee.map(()=>0);te=In(ee.map(ce=>ce.length),G).map(ce=>ce.map(Me=>xe[Me]+Ye[Me]++))}let st=te.length,Ht=st===1?q.relationH:(q.relationH-Ue*(st-1))/st,dt=E(Math.max(...te.map(m=>m.length),1),Ve.length<=2?Math.round(o.relationSize.width*1.35):o.relationSize.width,Ht),et=[];te.forEach((m,F)=>{let _=Zi(m.length,dt,o.gap,s,q.relationY+F*(Ht+Ue));m.forEach((ee,xe)=>et[ee]={..._[xe],x:_[xe].x+i})}),Ve.forEach((m,F)=>{let _=et[F];Qt({id:m.id,kind:m.kind,plane:1,x:_.x,y:_.y,width:dt.width,height:dt.height,...m.via?{via:m.via}:{},...m.aggregate?{aggregate:m.aggregate}:{},...Je&&!m.aggregate?{compact:!0}:{}})});let lt=new Set(c.keys());for(let m of g)lt.add(m.id);let ke=new Map;for(let m of e.allNodes()){let F=ke.get(m.kind);F?F.push(m):ke.set(m.kind,[m])}let pt=new Set(f.length>0?f:I?[I.kind]:[]),Be=[];for(let m of t.kinds){if(y.has(m))continue;let F=ke.get(m)??[],_=F.filter(h);Be.push({id:be(m),kind:m,members:_.sort(ot),retired:F.length-_.length,...pt.has(m)?{focused:!0}:{}})}for(let m of Be)m.kind===n.relation&&(m.raised=!0);Be.sort(ot);let Xe=Lr(t,pt),qe=!n.overview&&t.kinds.some(m=>Xe.rankOf(m)==="primary"),Se=[];for(let m of Be)if(!n.overview&&N.has(m.id)&&m.members.length>0)for(let F of m.members)Se.push({id:F.id,kind:F.kind});else{let F=qe?Xe.rankOf(m.kind):void 0,_=F==="secondary"?Xe.parentOf(m.kind):void 0;Se.push({id:m.id,kind:m.kind,...m.raised?{raised:!0}:{},...m.focused?{focused:!0}:{},...n.overview&&N.has(m.id)?{opened:!0}:{},...F?{rank:F}:{},..._&&!N.has(be(_))?{nestedUnder:be(_)}:{},aggregate:{kind:m.kind,memberIds:m.members.map(ee=>ee.id),label:r.plurals?.[m.kind]??vt(t,m.kind),...m.retired>0?{retired:m.retired}:{}}})}let Qe=2;if(Se.length<=A((L?240:o.contextSize.width)*a))for(let m of Se)delete m.nestedUnder;let ct=new Map;for(let m of Se){if(m.nestedUnder===void 0)continue;let F=ct.get(m.nestedUnder)??0;F>=Qe?delete m.nestedUnder:ct.set(m.nestedUnder,F+1)}let tt=Se.filter(m=>m.nestedUnder!==void 0),Pe=Se.filter(m=>m.nestedUnder===void 0),bt=A((L?240:o.contextSize.width)*a),Fe=!n.overview&&Pe.length>bt,ne=Math.max(0,bt-1),ve=m=>m.focused?0:m.raised?1:2,nt=new Set([...Pe].map((m,F)=>({item:m,at:F})).sort((m,F)=>ve(m.item)-ve(F.item)||m.at-F.at).slice(0,ne).map(({item:m})=>m.id)),P=new Set(Fe?Pe.filter(m=>!nt.has(m.id)).map(m=>m.id):[]),oe=tt.filter(m=>!P.has(m.nestedUnder)),he=tt.filter(m=>P.has(m.nestedUnder)),fe=Fe?[...Pe.filter(m=>nt.has(m.id)),{id:or,kind:"",beyond:[...Pe.filter(m=>P.has(m.id)),...he].map(m=>m.kind)}]:Pe,Ae=n.overview?{width:Math.min(220,s/6.5),height:Math.min(92,o.height*.125)}:V(fe.length,(L?240:o.contextSize.width)*a,q.contextH),Dt=o.relevance?.flagged,gn=(m,F)=>{let _=xo(t,m);if(!_)return{};let ee=_.values.map(()=>0),xe=0;for(let Ye of F){let ce=_.values.indexOf(e.getNode(Ye)?.[_.field]);ce<0?xe++:ee[ce]++}return{states:{field:_.field,values:[..._.values.map((Ye,ce)=>({value:Ye,tier:_.tiers[ce],count:ee[ce]})),...xe>0?[{value:null,tier:"waiting",count:xe}]:[]]}}},Ne=n.overview?Mo(fe.map(m=>{let F=m.aggregate?.memberIds??[],_=Dt?F.filter(ee=>Dt.has(ee)).length:0;return{id:m.id,kind:m.kind,count:F.length,opened:N.has(m.id)?Gt(_t(F.length))*a:0,openedMin:N.has(m.id)?Gt(Math.min(yo,_t(F.length)))*a:0,nameplate:Ar(m.aggregate?.label??vt(t,m.kind),F.length,_,xo(t,m.kind)!==void 0,a),weight:_*1e3+F.length,...f.includes(m.kind)&&(r.screens?.[m.kind]?.length??0)>0?{marquee:{width:fo+12,height:mo(r.screens[m.kind].map(ee=>ee.title),fo,r.nameWidth)+8}}:{}}}),t,{width:o.width-l,height:o.height-u},o.chrome?{...o.inset,right:Math.min(o.inset?.right??0,8)}:o.inset??{},{...o.cityOrder?{order:o.cityOrder}:{},...o.plots?{plots:o.plots}:{},...r.cityZoom&&r.cityZoom!==1?{zoom:r.cityZoom}:{},keep:[...n.selection??[],...n.focusId?[n.focusId]:[]].flatMap(m=>m.startsWith("kind:")?[m.slice(5)]:m.startsWith("aggregate:")&&!m.includes("|")?[m.slice(10)]:W&&m===I?.id?[I.kind]:[]),...r.tilt!==void 0?{tilt:r.tilt}:{},pan:{x:n.pan?.x??0,y:n.pan?.y??0},...B||o.chrome?.length?{avoid:[...B?[B]:[],...o.chrome??[]]}:{}}):null,yn=new Map(Ne?.placed.map(m=>[m.id,m.plot])??[]),pn=new Map(Ne?.placed.map(m=>[m.id,m.nameplate])??[]),Bt=Ne?Ne.placed.map(({x:m,y:F,depth:_,width:ee,height:xe})=>({x:m,y:F,depth:_,width:ee,height:xe})):Qi(fe.length,Ae,o.gap,s,q.contextY,L?.97:Pr).map(m=>({...m,x:m.x+i})),Wi=.74,xn=.8,Vi=52*a,Yi=86*a,Kn=(m,F)=>Math.min(1,m+(1-m)*F),Un=new Map;fe.forEach((m,F)=>{let _=Bt[F],ee=_.width??Ae.width,xe=_.height??Ae.height,Ye=m.rank==="secondary"?Wi:1,ce=Ne?ee:Math.max(Math.min(ee,Oo*a),ee*Ye),Me=Ne?xe:Math.max(qi*a,xe*Ye);Un.set(m.id,{x:_.x+(ee-ce)/2,y:_.y+(xe-Me),depth:m.rank==="secondary"?Kn(_.depth,.5):_.depth,width:ce,height:Me})});let bn=[],wn=Bt[Bt.length-1],Xn=new Map;for(let m of oe)Xn.set(m.nestedUnder,(Xn.get(m.nestedUnder)??0)+1);let Uo=new Map;for(let m of oe){let F=Un.get(m.nestedUnder);if(F){let _=Xn.get(m.nestedUnder)??1,ee=Uo.get(m.nestedUnder)??0;Uo.set(m.nestedUnder,ee+1);let xe=.98,Ye=Ae.width*xn,ce=Math.max(Yi,Math.min(Ye,F.width/(xe*(_-1)+1))),Me=Math.max(Vi,Ae.height*xn*(ce/Ye)),wt=ce*xe,qn=(_-1)*wt+ce;bn.push({...m,x:F.x+(F.width-qn)/2+ee*wt,y:Math.max(0,F.y-Me+Math.min(Me*.5,16)),width:ce,height:Me,depth:Kn(F.depth,.8)})}else if(wn){let _=Ae.width*xn,ee=Ae.height*xn;bn.push({...m,x:wn.x,y:wn.y,width:_,height:ee,depth:Kn(wn.depth??1,.8)})}}for(let m of fe)bn.push({...m,...Un.get(m.id)});return bn.forEach(m=>{Qt({id:m.id,kind:m.kind,plane:2,x:m.x,y:m.y,width:m.width,height:m.height,...m.aggregate?{aggregate:m.aggregate}:{},...m.raised?{raised:!0}:{},...m.focused?{focused:!0}:{},...m.opened?{opened:!0}:{},...m.opened?{openedRows:Math.max(1,Math.floor((Math.max(Gt(Math.min(yo,_t(m.aggregate?.memberIds.length??0))),Gt(_t(m.aggregate?.memberIds.length??0))*(Ne?.frame.openedShare??1))-ur)/go))}:{},...m.rank?{rank:m.rank}:{},...m.nestedUnder?{nestedUnder:m.nestedUnder}:{},...m.beyond?{beyond:m.beyond}:{},...yn.has(m.id)?{plot:yn.get(m.id)}:{},...pn.has(m.id)?{nameplate:pn.get(m.id)}:{},...Ne&&m.aggregate?gn(m.kind,m.aggregate.memberIds):{},depth:m.depth})}),{nodes:d,connectors:Cr(e,c,n),width:o.width,height:o.height,...Ne?{city:Ne.frame}:{},...l>0||u>0?{visible:{width:o.width-l,height:o.height-u}}:{}};function Qt(m){let F=n.overview&&Re(m.id)!==null?void 0:n.pins[m.id],_=F?{...m,x:F.x,y:F.y,pinned:!0}:{...m,pinned:!1},ee=n.pan?{..._,x:_.x+n.pan.x,y:_.y+n.pan.y}:_;d.push(ee),c.set(ee.id,ee)}}function Ao(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},a=o.x+o.width/2,i=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:a,y1:i}:l.to===t?{...l,x2:a,y2:i}:l)}}function Lo(e,t){return t.x===0&&t.y===0?e:{...e,nodes:e.nodes.map(n=>({...n,x:n.x+t.x,y:n.y+t.y})),connectors:e.connectors.map(n=>({...n,x1:n.x1+t.x,y1:n.y1+t.y,x2:n.x2+t.x,y2:n.y2+t.y})),...e.city?{city:{...e.city,pan:{x:t.x,y:t.y}}}:{}}}var ye=(e,t,n)=>e+(t-e)*n;function Nr(e){return{x:e.x+e.width/2,y:e.y+e.height/2}}var Tr=new WeakMap;function Ji(e){let t=Tr.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 a of o.aggregate?.memberIds??[]){let i=r.get(a);i?i.push(o):r.set(a,[o])}}return t={byId:n,groupsOf:r},Tr.set(e,t),t}var $r=new WeakMap;function Hr(e,t){let n=$r.get(t);if(n||$r.set(t,n=new WeakMap),n.has(e))return n.get(e);let r=ea(e,t);return n.set(e,r),r}function ea(e,t){let{byId:n,groupsOf:r}=Ji(t);if(e.screenOf!==void 0){let i=n.get(be(e.screenOf));if(i)return{...e,x:i.x,y:i.y,width:i.width,height:i.height}}if(St(e.id)||Re(e.id)!==null){let i=(e.aggregate?.memberIds??[]).map(d=>n.get(d)).filter(d=>d!==void 0);if(i.length===0)return null;let l=i.map(Nr),u=l.reduce((d,c)=>d+c.x,0)/l.length,s=l.reduce((d,c)=>d+c.y,0)/l.length;return{...e,x:u-e.width/2,y:s-e.height/2}}let o=r.get(e.id)?.find(i=>i.id===be(e.kind)||i.id===Ee(e.kind));if(!o)return null;let a=Nr(o);return{...e,x:a.x-e.width/2,y:a.y-e.height/2}}function Pt(e,t,n){let r=Math.max(0,Math.min(1,n)),o=new Map(e.nodes.map(d=>[d.id,d])),a=new Map(t.nodes.map(d=>[d.id,d])),i=[];for(let[d,c]of o){let h=a.get(d);if(h){i.push(Io(c,h,r,1));continue}let y=Hr(c,t)??c;i.push(Io(c,y,r,1-r))}for(let[d,c]of a){if(o.has(d))continue;let h=Hr(c,e)??c;i.push(Io(h,c,r,r))}let l=new Map(e.connectors.map(d=>[d.id,d])),u=new Map(t.connectors.map(d=>[d.id,d])),s=[];for(let[d,c]of l){let h=u.get(d);s.push(h?{...ta(c,h,r),opacity:1}:{...c,opacity:1-r})}for(let[d,c]of u)l.has(d)||s.push({...c,opacity:r});return{nodes:i.filter(d=>d.opacity>0).sort((d,c)=>d.id<c.id?-1:d.id>c.id?1:0),connectors:s.filter(d=>d.opacity>0).sort((d,c)=>d.id<c.id?-1:d.id>c.id?1:0),width:ye(e.width,t.width,r),height:ye(e.height,t.height,r),t:r,...Dr(e.city,t.city,r)?{city:Dr(e.city,t.city,r)}:{}}}function Dr(e,t,n){return e?t?{cell:ye(e.cell,t.cell,n),...e.tilt!==void 0||t.tilt!==void 0?{tilt:ye(e.tilt??.5,t.tilt??.5,n)}:{},originX:ye(e.originX,t.originX,n),originY:ye(e.originY,t.originY,n),pan:{x:ye(e.pan.x,t.pan.x,n),y:ye(e.pan.y,t.pan.y,n)},extent:{x:ye(e.extent.x,t.extent.x,n),y:ye(e.extent.y,t.extent.y,n),width:ye(e.extent.width,t.extent.width,n),height:ye(e.extent.height,t.extent.height,n)}}:e:t}function Io(e,t,n,r){return{id:t.id,kind:t.kind,plane:ye(e.plane,t.plane,n),x:ye(e.x,t.x,n),y:ye(e.y,t.y,n),width:ye(e.width,t.width,n),height:ye(e.height,t.height,n),pinned:t.pinned,opacity:r,...t.aggregate?{aggregate:t.aggregate}:{},...t.via?{via:t.via}:{},...t.raised?{raised:!0}:{},...t.focused?{focused:!0}:{},...t.opened?{opened:!0}:{},...t.openedRows!==void 0?{openedRows:t.openedRows}:{},...t.compact?{compact:!0}:{},...t.rank?{rank:t.rank}:{},...t.nestedUnder?{nestedUnder:t.nestedUnder}:{},...t.beyond?{beyond:t.beyond}:{},...t.plot?{plot:t.plot}:{},...t.nameplate?{nameplate:t.nameplate}:{},...t.states?{states:t.states}:{},...t.screenOf?{screenOf:t.screenOf}:{},...t.depth===void 0?{}:{depth:ye(e.depth??1,t.depth,n)},...t.natural?{natural:t.natural}:{}}}function ta(e,t,n){return{...t,x1:ye(e.x1,t.x1,n),y1:ye(e.y1,t.y1,n),x2:ye(e.x2,t.x2,n),y2:ye(e.y2,t.y2,n)}}function Nn(e){let t=Math.max(0,Math.min(1,e));return t<.5?4*t*t*t:1-(-2*t+2)**3/2}function na(e,t){let n=[];for(let o=0;o<e.length;o+=1){let a=e[o],i=e[(o+1)%e.length];if(a.y===i.y)continue;let l=Math.min(a.y,i.y),u=Math.max(a.y,i.y);t<l||t>=u||n.push(a.x+(t-a.y)/(i.y-a.y)*(i.x-a.x))}n.sort((o,a)=>o-a);let r={x0:0,x1:0};for(let o=0;o+1<n.length;o+=2){let a={x0:n[o],x1:n[o+1]};a.x1-a.x0>r.x1-r.x0&&(r=a)}return r}function oa(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 ra(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 ia(e){let t=0,n=0,r=0;for(let o=0;o<e.length;o+=1){let a=e[o],i=e[(o+1)%e.length],l=a.x*i.y-i.x*a.y;t+=l,n+=(a.x+i.x)*l,r+=(a.y+i.y)*l}if(Math.abs(t)<1e-9){let o=e.reduce((a,i)=>({x:a.x+i.x,y:a.y+i.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 aa(e,t){let{room:n,height:r,size:o,floor:a,measure:i=ho,lines:l=2}=t,u=(f,p)=>f.every(b=>i(b,p)<=n)&&f.length*p*1.15<=r;if(u([e],o))return{lines:[e],fontSize:o,whole:!0};let s=e.split(/\s+/);if(l>1&&s.length>1){let f=1,p=1/0,b=0;for(let O=0;O<s.length-1;O+=1){b+=s[O].length+1;let I=Math.abs(b-e.length/2);I<p&&(p=I,f=O+1)}let g=[s.slice(0,f).join(" "),s.slice(f).join(" ")];if(u(g,o))return{lines:g,fontSize:o,whole:!0};for(let O=o;O>=a;O-=o*.06)if(u(g,O))return{lines:g,fontSize:O,whole:!0}}for(let f=o;f>=a;f-=o*.06)if(u([e],f))return{lines:[e],fontSize:f,whole:!0};let d=i(e,a)/Math.max(1,e.length),c=Math.floor(n/d)-1;if(c<4||a*1.15>r)return null;let h=e.slice(0,c),y=h.lastIndexOf(" ");return{lines:[`${y>3?h.slice(0,y):h}\u2026`],fontSize:a,whole:!1}}var sa=(e,t)=>e.x0<t.x1&&t.x0<e.x1&&e.y0<t.y1&&t.y0<e.y1;var J=se(Te(),1);var $e=se(Te(),1);var da=520;function la(){return typeof window>"u"||!window.matchMedia?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches}function Br(e,t={}){let n=t.duration??da,r=(t.enabled??!0)&&!la(),o=(0,$e.useRef)(e),[a,i]=(0,$e.useState)(()=>Pt(e,e,1)),l=(0,$e.useRef)(a),u=(0,$e.useRef)(null),s=(0,$e.useRef)(null);return(0,$e.useEffect)(()=>{if(!r||typeof requestAnimationFrame>"u"){o.current=e;let p=Pt(e,e,1);if(l.current=p,i(p),typeof requestAnimationFrame>"u")return;let b=requestAnimationFrame(()=>{let g=Pt(e,e,1);l.current=g,i(g)});return()=>cancelAnimationFrame(b)}let d=performance.now(),h=s.current!==null&&l.current.t<1&&d-s.current<n?s.current:d;s.current=h;let y=Nn(Math.min(1,(d-h)/n)),x=o.current,f=p=>{let b=Math.min(1,(p-h)/n),g=y>=1?1:(Nn(b)-y)/(1-y),O=Pt(x,e,Math.max(0,g));l.current=O,i(O),b<1?u.current=requestAnimationFrame(f):(s.current=null,o.current=e,u.current=requestAnimationFrame(()=>{let I=Pt(e,e,1);l.current=I,i(I),u.current=null}))};return u.current=requestAnimationFrame(f),()=>{u.current!==null&&cancelAnimationFrame(u.current);let p=l.current;o.current={...e,...p.city?{city:p.city}:{},nodes:p.nodes.map(b=>({...b,plane:Math.round(b.plane)})),connectors:p.connectors}}},[e,n,r]),a}function Fr(e=1100){let{store:t}=ge(),[n,r]=(0,$e.useState)(()=>new Set);return(0,$e.useEffect)(()=>{let o=null,a=t.subscribe(i=>{r(new Set(i.touched)),o&&clearTimeout(o),o=setTimeout(()=>r(new Set),e)});return()=>{a(),o&&clearTimeout(o)}},[t,e]),n}var ca={marks:new Map,acts:[]};function jr(e=4e3){let{store:t}=ge(),[n,r]=(0,$e.useState)(ca);return(0,$e.useEffect)(()=>{let o=null,a=t.subscribe((i,l)=>{r(u=>{let s=new Map(u.marks),d=[...u.acts];for(let c of l){if(c.undoes!==void 0){let x=d.find(p=>p.batch===c.undoes||p.wrote.length>0),f=d.filter(p=>c.writes.some(b=>p.wrote.includes(b)));for(let p of f.length>0?f:x?[x]:[]){for(let b of p.wrote)s.delete(b);d=d.filter(b=>b.batch!==p.batch)}continue}if(c.author.kind!=="agent")continue;let h=c.author.id??"the seat";for(let x of c.writes)s.set(x,h);d.find(x=>x.batch===c.batch)?d=d.map(x=>x.batch===c.batch?{...x,wrote:[...new Set([...x.wrote,...c.writes])]}:x):d=[{batch:c.batch,who:h,intent:c.batchIntent??c.intent,at:c.at,wrote:[...c.writes]},...d].slice(0,12)}return s.size===u.marks.size&&d===u.acts&&s.size===0?u:{marks:s,acts:d}}),o&&clearTimeout(o),o=setTimeout(()=>r(u=>u.marks.size===0?u:{...u,marks:new Map}),e)});return()=>{a(),o&&clearTimeout(o)}},[t,e]),n}var Nt=se(Oe(),1),_e=16;function Wr({marks:e,questions:t=[],whereIs:n,stageRef:r,width:o,height:a}){if(e.size===0&&t.length===0)return null;let i=r.current,l=i?.getBoundingClientRect()??null,u=[];for(let[d,c]of e){let h=null;if(i&&l&&typeof CSS<"u"){let p=i.querySelector(`[data-graview-pick="${CSS.escape(d)}"]`)?.getBoundingClientRect();p&&p.width>0&&p.height>0&&(h={x:p.left-l.left,y:p.top-l.top,width:p.width,height:p.height})}if(h??=n(d),!h)continue;let y=Math.min(Math.max(h.x+h.width-_e/2,_e/2),o-_e/2),x=Math.min(Math.max(h.y-_e/4,_e/2),a-_e/2);u.push({id:d,who:c,x:y,y:x})}let s=[];for(let d of t){let c=n(d.id);c&&s.push({...d,x:Math.min(Math.max(c.x+c.width/2,_e),o-_e),y:Math.min(Math.max(c.y-_e/2,_e),a-_e)})}return u.length===0&&s.length===0?null:(0,Nt.jsxs)("div",{className:"graview-seat-marks","data-testid":"seat-marks","data-graview-seat-marks":u.length,children:[u.map(({id:d,who:c,x:h,y})=>(0,Nt.jsx)("span",{className:"graview-seat-mark","data-testid":"seat-mark","data-graview-seat-mark":d,"data-graview-seat-who":c,title:`${c} just changed this`,"aria-hidden":"true",style:{left:h,top:y,"--graview-hue":Zt(c)},children:"\u25C6"},d)),s.map(d=>(0,Nt.jsxs)("span",{className:"graview-seat-asking","data-testid":"seat-question","data-graview-seat-asking":d.id,title:d.asks,style:{left:d.x,top:d.y},children:[(0,Nt.jsx)("span",{"aria-hidden":"true",children:"?"}),(0,Nt.jsx)("span",{className:"graview-seat-asking-said",children:d.asks})]},`asking:${d.id}`))]})}var Q=se(Oe(),1);function ua({hue:e,mode:t}){let n=t==="docked";return(0,Q.jsxs)("svg",{viewBox:"0 0 32 38","aria-hidden":"true",children:[(0,Q.jsxs)("g",{fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinejoin:"round",strokeLinecap:"round",children:[(0,Q.jsx)("line",{x1:"16",y1:"3.5",x2:"16",y2:"7"}),(0,Q.jsx)("circle",{cx:"16",cy:"2.6",r:"1.5",fill:"none"}),(0,Q.jsx)("path",{d:"M8 16 V12.5 C8 8.5 11.5 7 16 7 C20.5 7 24 8.5 24 12.5 V16 Z",fill:"currentColor",fillOpacity:"0.1"}),t==="refused"?(0,Q.jsx)("line",{x1:"11",y1:"12.5",x2:"21",y2:"12.5",strokeWidth:"2"}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)("rect",{x:"10.2",y:"10.2",width:"11.6",height:"4.6",rx:"2.3",fill:"currentColor",fillOpacity:"0.14",strokeWidth:"1"}),(0,Q.jsx)("circle",{cx:"13.4",cy:"12.5",r:"1.25",fill:"currentColor",stroke:"none",opacity:n?.45:1}),(0,Q.jsx)("circle",{cx:"18.6",cy:"12.5",r:"1.25",fill:"currentColor",stroke:"none",opacity:n?.45:1}),t==="reading"?(0,Q.jsx)("line",{x1:"10.2",y1:"12.5",x2:"21.8",y2:"12.5",strokeWidth:"0.8",opacity:"0.7"}):null]}),(0,Q.jsx)("line",{x1:"16",y1:"16",x2:"16",y2:"18.5"}),(0,Q.jsx)("polygon",{points:"16,18.5 24,22.5 16,26.5 8,22.5",fill:"currentColor",fillOpacity:"0.22"}),(0,Q.jsx)("polygon",{points:"8,22.5 16,26.5 16,33.5 8,29.5",fill:"currentColor",fillOpacity:"0.08"}),(0,Q.jsx)("polygon",{points:"24,22.5 16,26.5 16,33.5 24,29.5",fill:"currentColor",fillOpacity:"0.3"}),t==="writing"?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)("polyline",{points:"24,24 28.5,20.5"}),(0,Q.jsx)("line",{x1:"27.5",y1:"19",x2:"30",y2:"21.5",strokeWidth:"1.8"})]}):(0,Q.jsx)("line",{x1:"24",y1:"24",x2:"26.5",y2:"29"}),(0,Q.jsx)("line",{x1:"8",y1:"24",x2:"5.5",y2:"29"}),(0,Q.jsx)("path",{d:"M9.5 33.5 v2.2 h4"}),(0,Q.jsx)("path",{d:"M22.5 33.5 v2.2 h-4"})]}),(0,Q.jsx)("title",{children:`robot, ${t}`})]})}function ha({hue:e}){return(0,Q.jsxs)("svg",{viewBox:"0 0 22 24","aria-hidden":"true",style:{color:`hsl(${Math.round(e)} 50% 48%)`},children:[(0,Q.jsxs)("g",{fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinejoin:"round",strokeLinecap:"round",children:[(0,Q.jsx)("circle",{cx:"11",cy:"6",r:"4.2"}),(0,Q.jsx)("path",{d:"M3 23 C3 15.5 6 13 11 13 C16 13 19 15.5 19 23"})]}),(0,Q.jsx)("title",{children:"somebody"})]})}function Vr({width:e,whereIs:t}){let{who:n,following:r,follow:o}=ge(),a=mr([...n.values()],t,e);return a.length===0?null:(0,Q.jsx)("div",{className:"graview-occupants","data-testid":"occupants","data-graview-occupants":a.length,children:a.map((i,l)=>{if(i.kind==="over")return(0,Q.jsx)("div",{className:"graview-presence-over","data-testid":"presence-over","data-graview-over-by":i.presence.participant,style:{left:i.box.x-3,top:i.box.y-3,width:i.box.width+6,height:i.box.height+6,"--graview-hue":i.presence.hue}},`over:${i.presence.participant}`);if(i.kind==="count")return(0,Q.jsxs)("span",{className:"graview-figure-count","data-testid":"presence-count","data-graview-at":i.at,style:{left:i.point.x,top:i.point.y},title:`${i.n} more here`,children:["+",i.n]},`count:${i.at}:${l}`);let u=i.presence.hue,s=er(i.presence)||"somebody";if(i.kind==="edge")return(0,Q.jsxs)("button",{type:"button",className:"graview-figure-edge","data-testid":"presence-edge","data-graview-person":i.presence.participant,style:{left:Math.max(8,i.point.x-120),top:i.point.y},onClick:()=>o(i.presence.participant),"aria-label":`${s} is somewhere else \u2014 press to go where they are`,children:["\u2192 ",s]},`edge:${i.presence.participant}`);if(i.kind==="robot")return(0,Q.jsxs)("div",{className:"graview-figure","data-graview-figure":`theirs:${i.presence.participant}`,"data-graview-theirs":"","data-graview-mode":i.mode,"data-graview-at":i.presence.robot?.at??"",style:{transform:`translate(${i.point.x.toFixed(1)}px, ${i.point.y.toFixed(1)}px)`,"--graview-hue":u},children:[(0,Q.jsx)("span",{className:"graview-figure-body",role:"img","aria-label":`${s}'s agent \u2014 ${i.mode}`,style:{cursor:"default"},children:(0,Q.jsx)(ua,{hue:u,mode:i.mode})}),(0,Q.jsxs)("span",{className:"graview-figure-name",children:[s,"'s agent"]})]},`robot:${i.presence.participant}`);let d=r?.participant===i.presence.participant;return(0,Q.jsxs)("div",{className:"graview-figure","data-graview-figure":i.presence.participant,"data-graview-person":"","data-graview-at":i.at,"data-graview-audience":i.audience?"":void 0,"data-graview-followed":d?"":void 0,style:{transform:`translate(${i.point.x.toFixed(1)}px, ${i.point.y.toFixed(1)}px)`,"--graview-hue":u},children:[(0,Q.jsx)("button",{type:"button",className:"graview-figure-body","aria-label":`${s} is here${d?". Press to stop following":". Press to go where they go"}`,"aria-pressed":d,onClick:c=>{c.stopPropagation(),o(d?null:i.presence.participant)},onPointerDown:c=>c.stopPropagation(),children:(0,Q.jsx)(ha,{hue:u})}),(0,Q.jsx)("span",{className:"graview-figure-name",children:s})]},`person:${i.presence.participant}`)})})}var ln=se(Oe(),1),Yr={left:"\u2190",right:"\u2192",top:"\u2191",bottom:"\u2193"},Tn=36,$n=56;function zr({result:e,schema:t,onGo:n}){let r=Ro(e);if(r.length===0)return null;let o=(e.city?.showings??[]).flatMap(i=>{let l=e.nodes.find(u=>u.id===i.id);return l?[{left:l.x+i.x,top:l.y+i.y,right:l.x+i.x+i.width,bottom:l.y+i.y+i.height}]:[]}),a=[];for(let i of["left","right","top","bottom"]){let l=e.visible??e,u=i==="left"||i==="right"?l.height:l.width,s=-1/0,d=r.filter(c=>c.side===i).sort((c,h)=>c.along-h.along);for(let c of d){let h=Wt(t,c.kind),{at:y,inset:x}=ma(o,i,Math.max($n,Math.min(u-$n,Math.max(c.along,s+Tn))),fa(h),l,u);s=y;let f=i==="left"?{left:x,top:y,transform:"translateY(-50%)"}:i==="right"?{right:`calc(${x}px + var(--graview-dock, 0px))`,top:y,transform:"translateY(-50%)"}:i==="top"?{top:x,left:y,transform:"translateX(-50%)"}:{bottom:`calc(${x}px + var(--graview-sheet, 0px))`,left:y,transform:"translateX(-50%)"};a.push((0,ln.jsx)("button",{type:"button",className:"graview-edge-sign","data-graview-past-edge":c.id,"aria-label":`${h}, past the ${i} edge \u2014 bring it into view`,title:`${h} is past the ${i} edge`,tabIndex:-1,onPointerDown:p=>p.stopPropagation(),onClick:p=>{p.stopPropagation(),n(c.by)},style:{...ga,...f},children:i==="right"||i==="bottom"?`${h} ${Yr[i]}`:`${Yr[i]} ${h}`},c.id))}}return(0,ln.jsx)(ln.Fragment,{children:a})}var fa=e=>(e.length+2)*7.4+22,Co=Tn/2,je=6;function ma(e,t,n,r,o,a){let i=t==="left"||t==="right",l=x=>i?{left:t==="left"?je:o.width-je-r,right:t==="left"?je+r:o.width-je,top:x-Co,bottom:x+Co}:{left:x-r/2,right:x+r/2,top:t==="top"?je:o.height-je-Tn,bottom:t==="top"?je+Tn:o.height-je},u=x=>e.find(f=>{let p=l(x);return p.left<f.right&&f.left<p.right&&p.top<f.bottom&&f.top<p.bottom}),s=u(n);if(!s)return{at:n,inset:je};let d=i?Co:r/2,c=(i?s.bottom:s.right)+d+4,h=(i?s.top:s.left)-d-4;if(c<=a-$n&&!u(c))return{at:c,inset:je};if(h>=$n&&!u(h))return{at:h,inset:je};let y=t==="left"?s.right:t==="right"?o.width-s.left:t==="top"?s.bottom:o.height-s.top;return{at:n,inset:Math.max(je,y+4)}}var ga={position:"absolute",zIndex:Ie.lines,minHeight:28,maxWidth:"40%",padding:"3px 10px",font:"inherit",fontSize:"0.75rem",letterSpacing:"0.04em",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",color:"var(--graview-ink)",background:"var(--graview-panel)",border:"1px solid var(--graview-edge)",borderRadius:6,boxShadow:"0 2px 8px rgb(0 0 0 / 0.12)",cursor:"pointer"};var gt=se(Te(),1),ya=180;function _r({view:e,result:t,frame:n,panned:r,closer:o,screenId:a,setCamera:i}){let l=(0,gt.useRef)(new Map),u=Math.round((t.nodes.find(c=>c.id===a)?.height??0)/16),s=(0,gt.useRef)(e.overview??!1),d=(0,gt.useRef)(null);if((0,gt.useEffect)(()=>{if(!e.overview||!a||!t.city){if(s.current&&!e.overview)return;i(C=>C.x===0&&C.y===0?C:{x:0,y:0});return}let c=t.nodes.find(C=>C.id===a);if(!c)return;let h=o>1&&c.screenOf?t.nodes.find(C=>C.id===be(c.screenOf)):void 0,y=h?{x:Math.min(c.x,h.x),y:Math.min(c.y,h.y),width:Math.max(c.x+c.width,h.x+h.width)-Math.min(c.x,h.x),height:Math.max(c.y+c.height,h.y+h.height)-Math.min(c.y,h.y)}:c;if(y.x>=0&&y.y>=0&&y.x+y.width<=t.width&&y.y+y.height<=t.height&&!h)return;let f=24,p=(C,Z,q)=>C<f?f-C:C+Z>q-f?q-f-(C+Z):0,b=mt(t),g=e.pan??{x:0,y:0},O=h?r.x+(t.width/2-(y.x+y.width/2)):r.x+p(y.x,y.width,t.width),I=t.height/2-(y.y+y.height/2),L=h?r.y+(c.y+I<f?f-c.y:I):r.y+p(y.y,y.height,t.height);i({x:(h?O:Math.max(-b.x,Math.min(b.x,O)))-g.x,y:(h?L:Math.max(-b.y,Math.min(b.y,L)))-g.y})},[a,e.overview,o,e.within?.view,u]),n.city){let c=new Map;for(let h of n.nodes){if(!h.plot||Math.round(h.plane)!==2)continue;let y=Ut(h.plot.col+h.plot.side/2,h.plot.row+h.plot.side/2,n.city.cell,n.city.tilt);c.set(h.id,{x:n.city.originX+r.x+y.x,y:n.city.originY+r.y+y.y})}l.current=c}return(0,gt.useEffect)(()=>{let c=e.overview??!1,h=s.current&&!c;if(s.current=c,c&&d.current&&(clearTimeout(d.current),d.current=null),!h)return;let y=e.focusId?ht(e.focusId)[0]:void 0,x=y?l.current.get(be(y)):void 0,f=t.nodes.find(p=>p.id===e.focusId);if(!x||!f){i({x:0,y:0});return}i({x:x.x-(f.x+f.width/2),y:x.y-(f.y+f.height/2)}),d.current&&clearTimeout(d.current),d.current=setTimeout(()=>{d.current=null,i({x:0,y:0})},ya)},[e.overview]),(0,gt.useEffect)(()=>()=>{d.current&&clearTimeout(d.current)},[]),{gliding:()=>d.current!==null}}var Dn=se(Te(),1),Hn="[data-graview-view]";function pa(e,t){let n=null;for(let r=e?.closest(Hn)??null;r&&t.contains(r);r=r.parentElement?.closest(Hn)??null)n=r;return n}function Gr(e,t){let n=e.getBoundingClientRect();return{left:n.left,top:n.top,right:n.right-t.right,bottom:n.bottom-t.bottom,box:n}}function Kr(e,t,n){let r=(0,Dn.useRef)({dock:t,reveal:n});r.current={dock:t,reveal:n},(0,Dn.useEffect)(()=>{let o=e.current;if(!o)return;let a=u=>{let{dock:s}=r.current;if(u.key!=="Tab"||u.defaultPrevented||s.right<=0&&s.bottom<=0)return;let d=Gr(o,s),c=[];for(let h of o.querySelectorAll(Hn)){if(h.parentElement?.closest(Hn)||h.inert||h.contains(document.activeElement))continue;let y=h.getBoundingClientRect(),x=Math.max(y.left,d.box.left),f=Math.min(y.right,d.box.right),p=Math.max(y.top,d.box.top),b=Math.min(y.bottom,d.box.bottom);f<=x||b<=p||!(s.right>0&&x>=d.right-1||s.bottom>0&&p>=d.bottom-1)||(h.inert=!0,c.push(h))}c.length!==0&&setTimeout(()=>{for(let h of c)h.inert=!1},0)},i=u=>{let s=u.target,d=pa(s,o);if(!d)return;let c=!0;try{c=s?.matches(":focus-visible")??!0}catch{}requestAnimationFrame(()=>{for(let h=d.parentElement;h;h=h===o?null:h.parentElement)h.scrollTop!==0&&(h.scrollTop=0),h.scrollLeft!==0&&(h.scrollLeft=0);c&&d.isConnected&&l(d)})},l=u=>{let s=Gr(o,r.current.dock),d=u.getBoundingClientRect(),c=12,h=(f,p,b,g)=>g-b>p-f-2*c||b<f+c?f+c-b:g>p-c?p-c-g:0,y=h(s.left,s.right,d.left,d.right),x=h(s.top,s.bottom,d.top,d.bottom);(Math.abs(y)>=1||Math.abs(x)>=1)&&r.current.reveal(Math.round(y),Math.round(x))};return document.addEventListener("keydown",a,!0),o.addEventListener("focusin",i),()=>{document.removeEventListener("keydown",a,!0),o.removeEventListener("focusin",i)}},[e])}var ie=se(Te(),1);function Ur(){let e=(0,ie.useRef)(null),[t,n]=(0,ie.useState)({right:0,bottom:0});return(0,ie.useLayoutEffect)(()=>{let r=e.current;if(!r)return;let o=()=>{let i=r.getBoundingClientRect(),l={right:Math.round(i.width),bottom:Math.round(i.height)};n(u=>u.right===l.right&&u.bottom===l.bottom?u:l)};if(o(),typeof ResizeObserver>"u")return;let a=new ResizeObserver(o);return a.observe(r),()=>a.disconnect()},[]),{probe:e,dock:t}}function Xr(){let[e,t]=(0,ie.useState)(null),n=(0,ie.useRef)(null),r=(0,ie.useRef)(0),o=(0,ie.useCallback)(i=>{n.current=i,r.current===0&&(r.current=requestAnimationFrame(()=>{r.current=0,t(n.current)}))},[]),a=(0,ie.useCallback)(()=>{r.current!==0&&cancelAnimationFrame(r.current),r.current=0;let i=n.current;return n.current=null,i&&t(null),i},[]);return{held:e,place:o,release:a}}function qr({stage:e,pan:t,setView:n,settled:r}){let o=(0,ie.useRef)({x:0,y:0}),a=(0,ie.useRef)(0),i=(0,ie.useRef)(!1),l=(0,ie.useRef)(r);l.current=r;let u=(0,ie.useCallback)(()=>[...e.current?.querySelectorAll("[data-graview-world]")??[]],[e]),s=(0,ie.useCallback)(()=>{a.current===0&&(a.current=requestAnimationFrame(()=>{a.current=0;let{x,y:f}=o.current,p=x===0&&f===0?"":`translate3d(${x}px, ${f}px, 0)`;for(let b of u())b.style.transform=p}))},[u]),d=(0,ie.useCallback)(()=>{i.current=!1;for(let x of u())x.style.transform="";l.current()},[u]),c=(0,ie.useCallback)((x,f)=>{o.current={x:x.x-f.x,y:x.y-f.y},s()},[s]),h=(0,ie.useCallback)(()=>{let{x,y:f}=o.current;return x===0&&f===0?!1:(o.current={x:0,y:0},i.current=!0,n(p=>{let b=p.pan??{x:0,y:0};return Lt(p,{x:b.x+x,y:b.y+f})}),window.setTimeout(()=>{i.current&&d()},300),!0)},[n,d]);(0,ie.useLayoutEffect)(()=>{i.current&&d()},[t,d]);let y=(0,ie.useCallback)(()=>o.current,[]);return{shiftTo:c,settle:h,settling:i,offset:y}}var xa=4;function Qr({view:e,panned:t,limit:n,panWithin:r,moveByTransform:o,setView:a,setDragging:i,noteMoved:l,shift:u,district:s}){let d=(0,ie.useRef)(!1),c=(0,ie.useRef)(null),h=b=>{let g=e.pan??{x:0,y:0};c.current={kind:"pan",fromX:b.clientX,fromY:b.clientY,baseX:g.x,baseY:g.y,moved:!1}};return{onGroundDown:b=>{b.button===0&&(b.target.closest("[data-graview-view]")||h(b))},onCardDown:(b,g)=>{if(g.button===0){if(b.screenOf!==void 0&&!g.target.closest("[data-graview-grip]")){h(g);return}if(e.overview&&Re(b.id)!==null){h(g);return}c.current={kind:"card",id:b.id,fromX:g.clientX,fromY:g.clientY,baseX:b.x-t.x,baseY:b.y-t.y,moved:!1}}},onDragMove:b=>{let g=c.current;if(!g)return;let O=b.clientX-g.fromX,I=b.clientY-g.fromY;if(!g.moved){if(Math.hypot(O,I)<xa)return;g.moved=!0,i(!0),b.currentTarget.setPointerCapture(b.pointerId)}if(g.kind==="pan"){let L=r(n(),{x:g.baseX+O,y:g.baseY+I});o?u.shiftTo(L,e.pan??{x:0,y:0}):a(C=>Lt(C,L))}else g.id&&s.place({id:g.id,x:g.baseX+O,y:g.baseY+I})},onDragUp:()=>{u.settle();let b=s.release();b&&a(g=>an(g,b.id,{x:b.x,y:b.y})),c.current?.moved&&(d.current=!0,setTimeout(()=>d.current=!1,0),l()),c.current=null,!u.settling.current&&i(!1)},swallow:d}}function Zr({stage:e,view:t,setView:n}){let r=(0,ie.useRef)({view:t,charge:0,coolUntil:0,lastScale:1});r.current.view=t;let o=(0,ie.useRef)(()=>{}),a=(0,ie.useRef)(()=>{});return(0,ie.useEffect)(()=>{let i=e.current;if(!i)return;let l=(c,h)=>{let y=r.current;if(h<y.coolUntil)return;let x=y.view.overview??!1;c!==x&&(y.coolUntil=h+600,y.charge=0,n(en(y.view,c)))},u=c=>{let h=r.current,y=h.view.overview??!1;if(c.ctrlKey){if(c.preventDefault(),!y){if(h.charge+=c.deltaY,Math.abs(h.charge)<60)return;h.charge>0?l(!0,performance.now()):h.charge=0;return}o.current(Math.exp(-c.deltaY*.004),c.clientX,c.clientY);return}!y||c.target?.closest("[data-graview-view], .graview-scroll, [data-graview-overlay], .graview-zoom")||(c.preventDefault(),a.current(-c.deltaX,-c.deltaY))},s=c=>{c.preventDefault(),r.current.lastScale=1},d=c=>{c.preventDefault();let h=r.current,y=c.scale??1;if(!(h.view.overview??!1)){y<.72&&l(!0,performance.now());return}let x=y/(h.lastScale||1);h.lastScale=y;let f=c;o.current(x,f.clientX,f.clientY)};return i.addEventListener("wheel",u,{passive:!1}),i.addEventListener("gesturestart",s),i.addEventListener("gesturechange",d),()=>{i.removeEventListener("wheel",u),i.removeEventListener("gesturestart",s),i.removeEventListener("gesturechange",d)}},[n,e]),{zoomAbout:o,panBy:a}}var Jr={directed:"You",autonomous:"An agent","co-edited":"You and an agent",rule:"A rule"};function Po(e,t){let n=new Set(e.map(o=>o.id)),r=new Set;for(let o of t){if(n.has(o)){r.add(o);continue}let a=e.find(i=>i.aggregate?.memberIds.includes(o));a&&r.add(a.id)}return r}function No(e){return e.emphasized?e.stressed?.95:.08:e.anyChosen?e.mine?.9:.12:e.touches?Math.max(.34,.9-.09*Math.max(0,(e.siblings??1)-1)):.12}function To(e){return e.edgeChosen?.9:e.lit?.78:e.own*(e.anyLit?e.kit.dim:e.kit.rest)}function Ze(e,t){if(!e)return null;let n=Math.max(0,Math.min(2,Math.floor(e.plane))),r=Math.max(0,Math.min(2,Math.ceil(e.plane))),{scale:o}=n===r?ze(n,t):En(ze(n,t),ze(r,t),e.plane-n);return{x:e.x,y:e.y,width:e.width*o,height:e.height*o}}function cn(e,t){if(typeof getComputedStyle>"u"||getComputedStyle(e).visibility==="hidden")return null;let n=-1/0,r=-1/0,o=1/0,a=1/0,i=e.getBoundingClientRect();n=Math.max(n,i.left),r=Math.max(r,i.top),o=Math.min(o,i.right),a=Math.min(a,i.bottom);let l=e.parentElement;for(;l&&l!==t;){let s=getComputedStyle(l);if(s.overflowX!=="visible"||s.overflowY!=="visible"){let d=l.getBoundingClientRect();s.overflowX!=="visible"&&(n=Math.max(n,d.left),o=Math.min(o,d.right)),s.overflowY!=="visible"&&(r=Math.max(r,d.top),a=Math.min(a,d.bottom))}l=l.parentElement}if(o-n<=2||a-r<=2)return null;let u=t.getBoundingClientRect();return{x:n-u.left,y:r-u.top,width:o-n,height:a-r}}function He(e,t,n,r=!1){if(!e||typeof document>"u")return null;let o=e.querySelector(`[data-graview-view="${CSS.escape(t)}"]`);if(!o)return null;let a=(n?o.querySelector(".graview-kind-block"):null)??o.querySelector('[data-graview-primitive="panel"], .graview-kind-face, .graview-kind-card')??(r?null:o.querySelector(':scope > [data-graview-primitive="chip"]'))??o;return cn(a,e)}function Bn(e,t,n,r,o){let a=s=>e.nodes.find(d=>d.id===s);if(o.startsWith("screen:")){let s=e.nodes.find(d=>d.id===be(o.slice(7)));return s?He(t,s.id,!0)??Ze(s,n):null}let i=a(o),l=Re(o);if(!i&&l!==null&&(i=a(Ee(l))),!i&&St(o)){let[s]=ht(o);s&&(i=a(be(s)))}if(!i){let s=r.places().find(d=>d.as===o);s&&(i=a(Ee(s.kind))??a(be(s.kind)))}if(i||(i=[...e.nodes].filter(s=>s.aggregate?.memberIds.includes(o)).sort((s,d)=>s.plane-d.plane)[0]),!i)return null;let u=e.city!==void 0;return He(t,i.id,u&&i.aggregate!==void 0&&Math.round(i.plane)===2)??Ze(i,n)}var rt=se(Te(),1);var ae=se(Oe(),1);function ti({kinds:e}){let{store:t}=ge(),{view:n,go:r}=so(),o=(0,rt.useRef)(null),a=co("districts",{align:"start"}),i=a.open,l=h=>Wt(t.schema,h),u=h=>t.graph.allNodes().filter(y=>y.kind===h).length,s=h=>!n.overview&&n.focusId===Ee(h),d=e.filter(h=>!s(h)),c=h=>{a.setOpen(!1);let y=o.current?.querySelector(".graview-beyond-more")??null;s(h)||r(ut(n,Ee(h))),y?.focus({preventScroll:!0});let x=`[data-graview-view="${Ee(h)}"][tabindex], [data-graview-view="${be(h)}"][tabindex]`,f=40,p=()=>{let b=document.querySelector(x);b?b.focus({preventScroll:!0}):--f>0&&requestAnimationFrame(p)};requestAnimationFrame(p)};return(0,ae.jsxs)("div",{ref:o,className:"graview-beyond","data-graview-beyond":e.length,"data-graview-beyond-open":i?"":void 0,children:[(0,ae.jsxs)("button",{type:"button",className:"graview-beyond-more","data-testid":"beyond-more",...a.trigger,"aria-haspopup":"menu",title:`${d.length} more district${d.length===1?"":"s"} \u2014 press to see them`,onPointerDown:h=>h.stopPropagation(),onClick:h=>{h.stopPropagation(),a.toggle()},children:[(0,ae.jsxs)("span",{className:"graview-beyond-count",children:["+",d.length]}),(0,ae.jsx)("span",{className:"graview-beyond-word",children:"more"}),(0,ae.jsx)("span",{className:"graview-beyond-chevron","aria-hidden":"true",children:i?"\u25BE":"\u25B4"})]}),i?(0,ae.jsx)("ul",{...a.pane,className:"graview-beyond-list",role:"menu","aria-label":"The other districts","data-testid":"beyond-list",style:lo,onPointerDown:h=>h.stopPropagation(),children:e.map(h=>(0,ae.jsx)("li",{role:"none",children:(0,ae.jsxs)("button",{type:"button",role:"menuitem","data-graview-pick":be(h),"aria-current":s(h)?"location":void 0,title:s(h)?`${l(h)} \u2014 where you are`:`Go to ${l(h)}`,onPointerDown:y=>y.stopPropagation(),onClick:y=>{y.stopPropagation(),c(h)},children:[(0,ae.jsx)("span",{className:"graview-beyond-name",children:l(h)}),(0,ae.jsx)("span",{className:"graview-beyond-tally",children:s(h)?"here":u(h)})]})},h))}):null]})}function ba(e,t){if(e===t)return!0;let n=Object.keys(e);return n.length!==Object.keys(t).length?!1:n.every(r=>r==="x"||r==="y"||Ho(e[r],t[r]))}function Ho(e,t){if(Object.is(e,t))return!0;if(typeof e!="object"||typeof t!="object"||e===null||t===null||Array.isArray(e)!==Array.isArray(t)||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t))return!1;let n=Object.getPrototypeOf(e);if(n!==Object.prototype&&n!==Array.prototype)return!1;if(Array.isArray(e)){let o=t;if(e.length!==o.length)return!1;for(let a=0;a<e.length;a++)if(!Ho(e[a],o[a]))return!1;return!0}let r=Object.keys(e);return r.length!==Object.keys(t).length?!1:r.every(o=>Ho(e[o],t[o]))}var ni=(0,rt.memo)(oi,(e,t)=>e.mode===t.mode&&e.selected===t.selected&&e.fidelity===t.fidelity&&ba(e.node,t.node));function oi({node:e,mode:t,selected:n,fidelity:r}){let{store:o,views:a,view:i}=ge(),l=Rt(),u=fr(),s=hr(),d=e.aggregate||St(e.id)||Re(e.id)!==null?"many":"one",c={cardinality:d,fidelity:r??ir[va(e.plane)].fidelity},h=d==="many"&&e.id===i.focusId?i.within?.view:void 0,y=a.resolve(e.kind,c,h),x=y?.view,f=a.resolve(e.kind,{cardinality:"many",fidelity:"full"})?.view,p=f!==void 0&&f.generic!==!0,b=e.aggregate?.memberIds,g=(0,rt.useMemo)(()=>(b??[]).map(L=>o.graph.getNode(L)).filter(L=>L!==void 0),[b,o,l]),O={...e.aggregate?{nodes:g,label:y?.title??e.aggregate.label}:{node:o.graph.getNode(e.id)},fidelity:c.fidelity,cardinality:c.cardinality,mode:t,selected:n,implicated:u,flagged:s,...e.raised?{raised:!0}:{},...e.focused?{focused:!0}:{},...e.opened?{opened:!0}:{},...e.openedRows!==void 0?{openedRows:e.openedRows}:{},...e.plot?{plot:e.plot}:{},...e.nameplate?{nameplate:e.nameplate}:{},...e.states?{states:e.states}:{},...e.aggregate?.retired?{retired:e.aggregate.retired}:{},...e.rank?{rank:e.rank}:{},...e.nestedUnder?{nestedUnder:e.nestedUnder}:{},...p?{hasOwnView:!0}:{}};if(!x)return(0,ae.jsx)(ka,{node:e,props:O});let I=[e.id,y?.title??"",c.fidelity,c.cardinality,t,n,e.raised??!1,e.focused??!1,e.opened??!1,e.openedRows??"",e.rank??"",e.nestedUnder??"",e.plot?`${e.plot.col},${e.plot.row},${e.plot.side}`:"",e.nameplate??"",e.states?e.states.values.map(L=>L.count).join(","):"",e.aggregate?$o(e.aggregate.memberIds):"",e.aggregate?.retired??"",u?$o(u):"",s?$o(s):"",p].join("|");return(0,ae.jsx)(ro,{mode:t,children:(0,ae.jsx)(gr,{kind:O.label??e.kind,...y?.title?{view:y.title}:{},children:(0,ae.jsx)(wa,{signature:I,graph:l,draw:()=>(0,ae.jsx)(x,{...O})})},`${e.id}|${y?.title??""}`)})}var wa=(0,rt.memo)(function({draw:t}){return(0,ae.jsx)(ae.Fragment,{children:t()})},(e,t)=>e.signature===t.signature&&e.graph===t.graph);function va(e){return Math.max(0,Math.min(2,Math.round(e)))}function ka({node:e,props:t}){return(0,ae.jsxs)("div",{style:{padding:8,font:"13px/1.4 system-ui",overflow:"hidden"},children:[(0,ae.jsx)("strong",{children:t.label??e.kind}),t.nodes?(0,ae.jsxs)("div",{children:[t.nodes.length," items"]}):(0,ae.jsx)("div",{children:e.id})]})}var ri=(0,rt.memo)(function({node:t}){let{store:n}=ge(),r=Mt(),o=t.aggregate,a=o.opens,i=o.memberIds.length,l=jt(n.schema,o.kind,i),u=o.memberIds.slice(0,3).map(h=>{let y=n.graph.getNode(h),x=y?n.schema.tryDefinition(y.kind):void 0;return y?x?.label?x.label(y):String(y.label??h):h}),s=o.memberIds,d=(0,rt.useMemo)(()=>{let h=r?Rn(r):null;return h?s.filter(y=>h.has(y)).length:0},[r,s]),c=a.in==="picture";return(0,ae.jsxs)("div",{className:"graview-band-group","data-graview-band":a.in,"data-graview-band-count":i,"data-graview-emphasis":r?d>0?"lit":"dimmed":void 0,title:c?`${o.label} \u2014 press twice to see them all, arranged`:`${o.label}: ${l} \u2014 press twice to open`,children:[(0,ae.jsxs)("span",{className:"graview-band-group-head",children:[(0,ae.jsx)("span",{className:"graview-band-group-name",children:o.label}),(0,ae.jsx)("span",{className:"graview-band-group-open","aria-hidden":"true",children:c?"\u2197":"\u25BE"})]}),(0,ae.jsxs)("span",{className:"graview-band-group-names",children:[c?null:(0,ae.jsxs)("span",{className:"graview-band-group-count",children:[l,d>0?` \xB7 ${d} match`:""," \xB7 "]}),u.join(" \xB7 "),i>u.length?" \u2026":""]})]})}),ei=new WeakMap;function $o(e){let t=ei.get(e);if(t!==void 0)return t;let n=2166136261;for(let o of e){for(let a=0;a<o.length;a++)n=Math.imul(n^o.charCodeAt(a),16777619);n=Math.imul(n^44,16777619)}let r=`${e.length}:${(n>>>0).toString(36)}`;return ei.set(e,r),r}var yt=se(Te(),1);function Do(e,t,n){let r=e.aggregate?[...e.aggregate.memberIds]:[e.id];return n?r.every(a=>t.includes(a))?t.filter(a=>!r.includes(a)):[...t,...r.filter(a=>!t.includes(a))]:r}function ii(){let[e,t]=(0,yt.useState)(16);return(0,yt.useEffect)(()=>{if(typeof window>"u")return;let n=document.documentElement,r=()=>{let a=parseFloat(getComputedStyle(n).fontSize);Number.isFinite(a)&&t(i=>Math.abs(i-a)<.5?i:a)};r();let o=new MutationObserver(r);return o.observe(n,{attributes:!0,attributeFilter:["style"]}),window.addEventListener("resize",r),()=>{o.disconnect(),window.removeEventListener("resize",r)}},[]),e}function ai(e){let[t,n]=(0,yt.useState)(null);return(0,yt.useLayoutEffect)(()=>{let r=e.current?.getBoundingClientRect();!r||r.width===0||r.height===0||n(o=>o??{width:Math.round(r.width),height:Math.round(r.height)})},[e]),(0,yt.useEffect)(()=>{let r=e.current;if(!r||typeof ResizeObserver>"u")return;let o=l=>{!l||l.width===0||l.height===0||n(u=>{let s={width:Math.round(l.width),height:Math.round(l.height)};return u&&u.width===s.width&&u.height===s.height?u:s})},a=new ResizeObserver(l=>o(l[0]?.contentRect)),i=()=>o(r.getBoundingClientRect());return a.observe(r),addEventListener("resize",i),()=>{a.disconnect(),removeEventListener("resize",i)}},[e]),t}function si(e,t){if(t==="dark")return`0 ${(10*e).toFixed(1)}px ${(34*e).toFixed(1)}px rgba(0,0,0,${(e+.12).toFixed(2)})`;let n=`0 ${(1+2*e).toFixed(1)}px ${(2+5*e).toFixed(1)}px rgba(20,30,32,${(.03+.06*e).toFixed(3)})`,r=`0 ${(6+26*e).toFixed(1)}px ${(18+60*e).toFixed(1)}px -${(10+10*e).toFixed(1)}px rgba(20,30,32,${(.1+.3*e).toFixed(3)})`;return`${n}, ${r}`}function di(e){return`matrix3d(${e.join(",")})`}var pe=se(Te(),1);var Bo=(e,t)=>t.some(n=>e.x>n.x&&e.x<n.x+n.width&&e.y>n.y&&e.y<n.y+n.height);function Fo(e,t){let n=[],r=[];for(let a=0;a<e.length-1;a++){let i=e[a],l=e[a+1],u=!Bo(i,t);u&&r.length===0&&r.push(i);for(let s=1;s<=48;s++){let d=s/48,c={x:i.x+(l.x-i.x)*d,y:i.y+(l.y-i.y)*d},h=!Bo(c,t);if(h===u)continue;let y=(s-1)/48,x=d;for(let b=0;b<10;b++){let g=(y+x)/2,O={x:i.x+(l.x-i.x)*g,y:i.y+(l.y-i.y)*g};!Bo(O,t)===u?y=g:x=g}let f=(y+x)/2,p={x:i.x+(l.x-i.x)*f,y:i.y+(l.y-i.y)*f};h?r=[p]:(r.push(p),r.length>=2&&n.push(r),r=[]),u=h}u&&r.push(l)}return r.length>=2&&n.push(r),n}function un(e,t){let n=Math.abs(t.x-e.x);if(Math.abs(t.y-e.y)>n){if(n<2)return[e,t];let a=(e.y+t.y)/2;return[e,{x:e.x,y:a},{x:t.x,y:a},t]}let o=(e.x+t.x)/2;return Math.abs(t.x-e.x)<2?[e,t]:[e,{x:o,y:e.y},{x:o,y:t.y},t]}var We=e=>Math.round(e*100)/100,Tt=e=>e.map(t=>t.map((n,r)=>`${r===0?"M":"L"} ${We(n.x)} ${We(n.y)}`).join(" ")).join(" ");function Fn(e,t){if(e.length<3)return Tt([e]);let n=[`M ${We(e[0].x)} ${We(e[0].y)}`];for(let o=1;o<e.length-1;o++){let a=e[o-1],i=e[o],l=e[o+1],u=Math.hypot(i.x-a.x,i.y-a.y),s=Math.hypot(l.x-i.x,l.y-i.y),d=Math.min(t,u/2,s/2),c={x:i.x+(a.x-i.x)/(u||1)*d,y:i.y+(a.y-i.y)/(u||1)*d},h={x:i.x+(l.x-i.x)/(s||1)*d,y:i.y+(l.y-i.y)/(s||1)*d};n.push(`L ${We(c.x)} ${We(c.y)} Q ${We(i.x)} ${We(i.y)} ${We(h.x)} ${We(h.y)}`)}let r=e[e.length-1];return n.push(`L ${We(r.x)} ${We(r.y)}`),n.join(" ")}function li(e,t,n){if(e==="orthogonal"){let l=un(t.p0,t.p1),u=l.slice(1).map((c,h)=>Math.hypot(c.x-l[h].x,c.y-l[h].y)),s=u.reduce((c,h)=>c+h,0)||1,d=n*s;for(let c=0;c<u.length;c++){let h=u[c];if(d<=h||c===u.length-1){let y=h===0?0:Math.min(1,d/h),x=l[c],f=l[c+1];return{x:x.x+(f.x-x.x)*y,y:x.y+(f.y-x.y)*y}}d-=h}return t.p1}let r=e==="straight"?{x:(t.p0.x+t.p1.x)/2,y:(t.p0.y+t.p1.y)/2}:t.c,o=(1-n)*(1-n),a=2*(1-n)*n,i=n*n;return{x:o*t.p0.x+a*r.x+i*t.p1.x,y:o*t.p0.y+a*r.y+i*t.p1.y}}function jn(e,t){return e!=="straight"?t:{...t,c:{x:(t.p0.x+t.p1.x)/2,y:(t.p0.y+t.p1.y)/2}}}function ci(e,t){let n=t.x-e.x,r=t.y-e.y,o=(n/2+r)/2,a=(r-n/2)/2;if(Math.abs(o)<1||Math.abs(a)<1)return[e,t];let i={x:e.x+2*o,y:e.y+o};return[e,i,t]}function ui(e){let t=[...e].sort((r,o)=>r.y-o.y||r.x-o.x),n=[];for(let r of t){let o=n.find(a=>r.y<a.bottom+3&&r.y+r.height>a.top-3);o?(o.boxes.push(r),o.top=Math.min(o.top,r.y),o.bottom=Math.max(o.bottom,r.y+r.height)):n.push({top:r.y,bottom:r.y+r.height,boxes:[r]})}for(let r of n)r.boxes.sort((o,a)=>o.x-a.x);return n.sort((r,o)=>r.top-o.top)}var hn=(e,t)=>e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height,Wo=(e,t)=>e.findIndex(n=>n.boxes.some(r=>hn(r,t)));function hi(e,t,n){return t<0?e[0].top-12*2:n>=e.length?e[e.length-1].bottom+12*2:(e[t].bottom+e[n].top)/2}function Yo(e,t){let n=[{from:-1/0,to:1/0}];for(let a of e){let i=[],l=-1/0;for(let s of a.boxes)i.push({from:l,to:s.x-12}),l=Math.max(l,s.x+s.width+12);i.push({from:l,to:1/0});let u=[];for(let s of n)for(let d of i){let c=Math.max(s.from,d.from),h=Math.min(s.to,d.to);h-c>=0&&u.push({from:c,to:h})}n=u}let r=t,o=1/0;for(let a of n){let i=Math.min(Math.max(t,a.from),a.to),l=a.from===-1/0||a.to===1/0,u=Math.abs(i-t)+(l?60:0);u<o&&(o=u,r=i)}return r}var Ge=e=>({x:e.x,y:-(e.y+e.height),width:e.width,height:e.height}),Wn=e=>e.map(t=>({x:t.x,y:-t.y}));function Vo(e){let t=(r,o)=>Math.abs(r-o)<.5,n=e.filter((r,o)=>o===0||!(t(r.x,e[o-1].x)&&t(r.y,e[o-1].y)));return n.filter((r,o)=>{let a=n[o-1],i=n[o+1];return!a||!i||!(t(a.x,r.x)&&t(r.x,i.x)||t(a.y,r.y)&&t(r.y,i.y))})}function zo(e,t,n){let r=e.boxes.filter(s=>!hn(s,t)&&s.y+s.height<=t.y+1&&s.x<t.x+t.width&&s.x+s.width>t.x),o=[{from:t.x+6,to:t.x+t.width-6}];for(let s of r)o=o.flatMap(d=>[{from:d.from,to:Math.min(d.to,s.x-12/2)},{from:Math.max(d.from,s.x+s.width+12/2),to:d.to}]).filter(d=>d.to>=d.from);let a=null;for(let s of o){let d=Math.min(Math.max(n,s.from),s.to);(a===null||Math.abs(d-n)<Math.abs(a-n))&&(a=d)}if(a!==null)return{x:a,tail:[{x:a,y:t.y}]};let i=n<t.x+t.width/2,l=Yo([e],i?t.x-12:t.x+t.width+12),u=t.y+t.height/2;return{x:l,tail:[{x:l,y:u},{x:l<t.x?t.x:t.x+t.width,y:u}]}}function jo(e,t,n){let r=zo({top:-e.bottom,bottom:-e.top,boxes:e.boxes.map(Ge)},Ge(t),n);return{x:r.x,head:Wn(r.tail).reverse()}}function fi(e,t,n,r){let o=t;for(;o>r&&!e[o-1].boxes.some(a=>n>a.x-12/2&&n<a.x+a.width+12/2);)o--;return o}var mi=(e,t)=>(e%3-1)*Math.max(0,Math.min(4,t/2-3));function gi(e,t,n,r,o,a,i,l){let u=f=>f<0?e[0].top-n:e[f+1].top-e[f].bottom,s=f=>(f<0?(n+e[0].top)/2:hi(e,f,f+1))+mi(l,u(f)),d=zo(e[a],o,i),c=fi(e,a,d.x,t+1),h=s(t);if(c===t+1)return Vo([...r.head,{x:r.x,y:h},{x:d.x,y:h},...d.tail]);let y=Yo(e.slice(t+1,c),d.x),x=s(c-1);return Vo([...r.head,{x:r.x,y:h},{x:y,y:h},{x:y,y:x},{x:d.x,y:x},...d.tail])}function Xt(e,t,n,r=0){let o=ui(n.some(d=>hn(d,e))&&n.some(d=>hn(d,t))?n:[...n,e,t]),a=Wo(o,e),i=Wo(o,t),l=e.x+e.width/2,u=t.x+t.width/2;if(a===i){if(!(a<o.length-1||o.length===1))return Wn(Xt(Ge(e),Ge(t),n.map(Ge),r));let c=hi(o,a,a+1)+mi(r,a<o.length-1?o[a+1].top-o[a].bottom:2*12),h=jo(o[a],e,u),y=jo(o[a],t,l);return Vo([...h.head,{x:h.x,y:c},{x:y.x,y:c},...[...y.head].reverse()])}if(i<a)return Wn(Xt(Ge(e),Ge(t),n.map(Ge),r));let s=jo(o[a],e,u);return gi(o,a,o[a].bottom,s,t,i,l,r)}function _o(e,t,n,r=0){if(t.y+t.height<=e.y){let y=_o(Ge(e),Ge(t),n.map(Ge),r);return y?Wn(y):null}let o=e.y+e.height;if(t.y<o)return null;let a=ui([...n.filter(y=>y.y>=o&&!hn(y,t)),t]),i=Wo(a,t),l=t.x+t.width/2,u=zo(a[i],t,l),s=fi(a,i,u.x,0),d=s===0?u.x:Yo(a.slice(0,s),u.x),c=Math.min(12,e.width/2),h=Math.min(Math.max(d,e.x+c),e.x+e.width-c);return gi(a,-1,o,{x:h,head:[{x:h,y:o}]},t,i,l,r)}function yi(e,t=16){let n=new Map;for(let o of e){let a=o.a<o.b?`${o.a}\0${o.b}`:`${o.b}\0${o.a}`,i=n.get(a);i?i.push(o.key):n.set(a,[o.key])}let r=new Map;for(let o of n.values())o.forEach((a,i)=>r.set(a,(i-(o.length-1)/2)*t));return r}var De=se(Oe(),1);function Yn(e,t){let n=Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x),r=Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y);if(n>0&&r>0)return null;let o=n>.5*Math.min(e.width,t.width),a=!o&&r>.5*Math.min(e.height,t.height);if(o){let x={x:e.x+e.width,y:e.y+e.height/2},f={x:t.x+t.width,y:t.y+t.height/2};return{from:x,to:f,control:{x:Math.max(x.x,f.x)+18,y:(x.y+f.y)/2},mode:"stacked"}}if(a){let x={x:e.x+e.width/2,y:e.y},f={x:t.x+t.width/2,y:t.y};return{from:x,to:f,control:{x:(x.x+f.x)/2,y:Math.min(x.y,f.y)-18},mode:"abreast"}}let i={x:t.x+t.width/2,y:t.y+t.height/2},l={x:e.x+e.width/2,y:e.y+e.height/2},u=Vn(e,i),s=Vn(t,l),d=Math.hypot(s.x-u.x,s.y-u.y);if(d<8)return null;let c=Math.min(36,d*.12),h=-(s.y-u.y)/d,y=(s.x-u.x)/d;return{from:u,to:s,control:{x:(u.x+s.x)/2+h*c,y:(u.y+s.y)/2+y*c},mode:"direct"}}function Vn(e,t){let n=e.x+e.width/2,r=e.y+e.height/2,o=t.x-n,a=t.y-r;if(o===0&&a===0)return{x:n,y:r};let i=o===0?1/0:e.width/2/Math.abs(o),l=a===0?1/0:e.height/2/Math.abs(a),u=Math.min(i,l),s=Math.max(0,u*.98);return{x:n+o*s,y:r+a*s}}function Sa(e,t,n){let r=t.get(e.from),o=t.get(e.to);if(!r||!o)return!1;if(n)return!0;let a=Math.round(r.plane)===1||Math.round(o.plane)===1,i=l=>!!l.aggregate&&Math.round(l.plane)===2;return a&&!i(r)&&!i(o)}var Ma=()=>({clips:new Map,members:new Map,marks:new Map});function xi(e,t){let n=t.marks.get(e);if(n)return n;n=new Map;for(let r of e.querySelectorAll("[data-graview-pick], [data-graview-slot]"))for(let o of new Set([r.getAttribute("data-graview-pick"),r.getAttribute("data-graview-slot")])){if(o===null)continue;let a=n.get(o);a?a.push(r):n.set(o,[r])}return t.marks.set(e,n),n}function Ra(e,t){let n=t.clips.get(e);if(n===void 0){let r=getComputedStyle(e);n=r.overflow!=="visible"||r.overflowX!=="visible"||r.overflowY!=="visible"?e.getBoundingClientRect():null,t.clips.set(e,n)}return n}function Ea(e,t,n){let r=e.parentElement;for(;r!==null;){let o=Ra(r,n);if(o&&!(t.right>o.left+1&&t.left<o.right-1&&t.bottom>o.top+1&&t.top<o.bottom-1))return!1;if(r.hasAttribute("data-graview-view"))break;r=r.parentElement}return!0}function fn(e,t,n,r){if(!e||!t||typeof document>"u")return[];let o=r.members.get(t);o||r.members.set(t,o=new Map);let a=o.get(n);if(a)return a;let i=e.getBoundingClientRect(),l=[];for(let u of xi(t,r).get(n)??[]){if(u.closest("[data-graview-offstage]"))continue;let s=u.getBoundingClientRect();s.width<=2||s.height<=2||Ea(u,s,r)&&l.push({x:s.left-i.left,y:s.top-i.top,width:s.width,height:s.height})}return l.sort((u,s)=>u.width*u.height-s.width*s.height),o.set(n,l),l}function zn(e,t,n,r,o){let a=new Map(e.map(g=>[g.id,g])),i=Ma(),l=new Map,u=g=>{if(!n||typeof document>"u")return null;let O=l.get(g);return O===void 0&&(O=n.querySelector(`[data-graview-view="${CSS.escape(g)}"]`),l.set(g,O)),O},s=new Map;for(let g of e){let O=He(n,g.id,r)??Ze(g,o);O&&s.set(g.id,O)}let d=new Map;if(n&&typeof document<"u"){let g=n.getBoundingClientRect();for(let O of n.querySelectorAll("[data-graview-pick], [data-graview-slot]")){if(O.closest("[data-graview-offstage]"))continue;let I=O.getAttribute("data-graview-pick")??O.getAttribute("data-graview-slot");if(I===null)continue;let L=O.getBoundingClientRect();if(L.width<=2||L.height<=2||L.width>g.width*.6&&L.height>g.height*.6)continue;let C=d.get(I),Z={x:L.left-g.left,y:L.top-g.top,width:L.width,height:L.height};C?C.push(Z):d.set(I,[Z])}}let c=(g,O)=>{let I=[];for(let[L,C]of s)L!==g&&L!==O&&I.push(C);for(let[L,C]of d)L!==g&&L!==O&&I.push(...C);return I},h=g=>Math.round(a.get(g)?.plane??-1)===1,y=[];for(let g of e){let O=s.get(g.id);O&&Math.round(g.plane)===1&&y.push(O)}if(!r&&n&&typeof document<"u"){let g=n.getBoundingClientRect();for(let O of n.querySelectorAll("[data-graview-relation] > span")){let I=O.getBoundingClientRect();I.width>0&&I.height>0&&y.push({x:I.left-g.left,y:I.top-g.top,width:I.width,height:I.height})}}let x=(g,O)=>!r&&h(g)&&h(O)?y:void 0,f=r?void 0:e.find(g=>Math.round(g.plane)===0&&!g.aggregate),p=(g,O,I,L)=>{if(!f)return{};let C=g.to===f.id&&I===f.id;if(!C&&!(g.from===f.id&&O===f.id))return{};let Z=C?g.from:g.to,q=s.get(f.id),v=s.get(Z);if(Z===f.id||!h(Z)||!q||!v)return{};let M=u(f.id),w=A=>M!==null&&xi(M,i).get(A)?.some(N=>!N.closest("[data-graview-offstage]"))===!0,E=L.map(A=>A.from===f.id?A.to:A.from),V=E.length>0&&E.every(w);return{band:y,tie:{card:q,chip:v,cardIsTo:C,toward:Z,holds:a.get(Z)?.aggregate?.memberIds??[Z]},...V?{said:E}:{}}},b=[];for(let g of t){if(!Sa(g,a,r))continue;let O=s.get(g.from),I=s.get(g.to);if(!O||!I)continue;let L=c(g.from,g.to),C=g.edges,Z=r&&C.some(M=>M.from!==g.from&&fn(n,u(g.from),M.from,i).length>0||M.to!==g.to&&fn(n,u(g.to),M.to,i).length>0),q=x(g.from,g.to);if(r&&!Z||g.loop||C.length===0){b.push({key:g.id,connector:g,edges:C,fromBox:O,toBox:I,fromAnchor:g.from,toAnchor:g.to,obstacles:L,hosts:[],...q?{band:q}:{},...p(g,g.from,g.to,C)});continue}let v=new Map;for(let M of C){let w=M.from===g.from?[]:fn(n,u(g.from),M.from,i),E=M.to===g.to?[]:fn(n,u(g.to),M.to,i),V=[g.from,g.to].find(Y=>Math.round(a.get(Y)?.plane??-1)===0);if(!r&&V!==void 0&&(V===g.from?M.from!==g.from:M.to!==g.to)&&fn(n,u(V),V===g.from?M.to:M.from,i).length>0)continue;let A=V!==void 0?a.get(V):void 0;if(!r&&A?.aggregate&&n&&(V===g.from?M.from!==g.from&&w.length===0:M.to!==g.to&&E.length===0))continue;let N=w.length>0?M.from:g.from,H=E.length>0?M.to:g.to,U=`${g.id}|${N}|${H}`,X=v.get(U);if(X){X.edges.push(M);continue}let de=w.length>0?w:[O],le=E.length>0?E:[I],k=de[0],R=le[0],$=1/0;for(let Y of de)for(let j of le){let S=Math.hypot(Y.x+Y.width/2-(j.x+j.width/2),Y.y+Y.height/2-(j.y+j.height/2));S<$&&($=S,k=Y,R=j)}v.set(U,{edges:[M],fromBox:k,toBox:R,fromAnchor:N,toAnchor:H})}for(let[M,w]of v)b.push({key:M,connector:g,obstacles:L,hosts:[...w.fromAnchor!==g.from?[O]:[],...w.toAnchor!==g.to?[I]:[]],...q?{band:q}:{},...w,...p(g,w.fromAnchor,w.toAnchor,w.edges)})}return b}function bi(e,t,n){let r=new Map(t.map(i=>[i.id,i])),o=new Map;for(let i of n){let l=r.get(i.id);l&&(l.x!==i.x||l.y!==i.y)&&o.set(i.id,{x:i.x-l.x,y:i.y-l.y})}if(o.size===0)return[...e];let a=(i,l)=>{let u=o.get(l);return u?{...i,x:i.x+u.x,y:i.y+u.y}:i};return e.map(i=>{let{from:l,to:u}=i.connector;if(!o.has(l)&&!o.has(u))return i;let s=a(i.fromBox,l),d=a(i.toBox,u),c=i.tie&&{...i.tie,card:a(i.tie.card,i.tie.cardIsTo?u:l),chip:a(i.tie.chip,i.tie.toward)},h=y=>y===i.fromBox?s:y===i.toBox?d:i.tie&&y===i.tie.chip?c.chip:y;return{...i,fromBox:s,toBox:d,...c?{tie:c}:{},...i.band?{band:i.band.map(h)}:{}}})}function Go(e,t){let n=(1-t)*(1-t),r=2*(1-t)*t,o=t*t;return{x:n*e.p0.x+r*e.c.x+o*e.p1.x,y:n*e.p0.y+r*e.c.y+o*e.p1.y}}function pi(e,t,n){let r=(1-t)*(1-n),o=(1-t)*n+t*(1-n),a=t*n;return{p0:Go(e,t),c:{x:r*e.p0.x+o*e.c.x+a*e.p1.x,y:r*e.p0.y+o*e.c.y+a*e.p1.y},p1:Go(e,n)}}function mn(e,t){let n=s=>t.some(d=>s.x>d.x&&s.x<d.x+d.width&&s.y>d.y&&s.y<d.y+d.height),r=s=>!n(Go(e,s)),a=(s,d,c)=>{for(let h=0;h<10;h++){let y=(s+d)/2;r(y)===c?s=y:d=y}return(s+d)/2},i=[],l=null,u=r(0);u&&(l=0);for(let s=1;s<=64;s++){let d=s/64,c=r(d);if(c===u)continue;let h=a((s-1)/64,d,u);c?l=h:l!==null&&(h-l>.001&&i.push(pi(e,l,h)),l=null),u=c}return l!==null&&1-l>.001&&i.push(pi(e,l,1)),i}function wi({strands:e,result:t,scheme:n,overview:r,selection:o,emphasis:a,stageRef:i,liveOf:l,onPickEdge:u,provisional:s,pointed:d=null}){let c=Ot(),h=new Set(t.nodes.filter(v=>v.plot!==void 0&&Math.round(v.plane)===2).map(v=>v.id)),y=v=>r&&t.city!==void 0&&h.has(v.from)&&h.has(v.to),x=Po(t.nodes,o),f=v=>x.size===0||x.has(v.from)||x.has(v.to),p=new Set(o.filter(v=>kt(v)===null)),b=r?t.nodes.find(v=>Math.round(v.plane)===0):void 0,g=b?He(i.current,b.id,!1)??Ze(b,n):null;if(e.length===0)return null;let O=v=>v.edges.some(M=>p.has(M.from)||p.has(M.to)),I=p.size>0&&e.some(O),L=new Map;for(let v of e)L.set(v.connector.id,(L.get(v.connector.id)??0)+1);let C=yi(e.map(v=>({key:v.key,a:v.fromAnchor,b:v.toAnchor}))),Z=new Set,q=e.map((v,M)=>{let{connector:w,fromBox:E,toBox:V}=v,A={x:E.x+E.width/2,y:E.y+E.height/2},N={x:V.x+V.width/2,y:V.y+V.height/2},H=r?Vn(E,N):A,U=r?Vn(V,A):N,X=w.loop===!0,{connector:de,style:le}=Kt(c,w.kind);if(!de.visible)return null;let k=X?Math.max(22,Math.min(E.width,E.height)*.3):0,R=X?{x:A.x+E.width*.22,y:A.y-E.height/2-k+7}:H,$=(H.x+U.x)/2,Y=(H.y+U.y)/2,j=Math.hypot(U.x-H.x,U.y-H.y),S=Math.min(r?40:90,j*(r?.09:.16)),T=0,B=0;if(j>0){T=-(U.y-H.y)/j,B=(U.x-H.x)/j;let ne=$-t.width/2,ve=Y-t.height/2;if(g&&!X){let nt=g.x+g.width/2,P=g.y+g.height/2;ne=$-nt,ve=Y-P;let oe=Math.abs(T*(nt-H.x)+B*(P-H.y)),he=Math.hypot(g.width/2,g.height/2)*.85+24,fe=((nt-H.x)*(U.x-H.x)+(P-H.y)*(U.y-H.y))/(j*j);oe<he&&fe>.1&&fe<.9&&(S=Math.min(180,Math.max(S,(he-oe)*2)))}T*ne+B*ve<0&&(T=-T,B=-B)}S+=2*(C.get(v.key)??0);let W=jn(de.route,{p0:H,c:{x:$+T*S,y:Y+B*S},p1:U}),z=y(w),K=de.route==="orthogonal"||z,D=(ne,ve)=>z?ci(ne,ve):un(ne,ve),re=!X&&v.tie?_o(v.tie.card,v.tie.chip,v.band??[],M):null,G=re?v.tie.cardIsTo?re.reverse():re:!X&&v.band?Xt(E,V,v.band,M):null,we=X||K||G?[]:mn(W,[E,V,...v.obstacles]),Ce=G?[G]:!X&&K?Fo(D(H,U),[E,V,...v.obstacles]):[];if(!X&&we.length===0&&Ce.length===0)return null;let Je=Ce[Ce.length-1],at=K||G?Ce[0]?.[0]:we[0]?.p0,Ue=K||G?Je?.[Je.length-1]:we[we.length-1]?.p1,Ve=ne=>ne.map(ve=>`M ${ve.p0.x} ${ve.p0.y} Q ${ve.c.x} ${ve.c.y} ${ve.p1.x} ${ve.p1.y}`).join(" "),te=`M ${R.x-k} ${R.y} A ${k} ${k} 0 1 1 ${R.x+k} ${R.y} A ${k} ${k} 0 0 1 ${R.x-k} ${R.y}`,st=X?te:G?Fn(G,10):K?Tt(Ce):Ve(we),Ht=ne=>({x:ne.x-8,y:ne.y-8,width:ne.width+16,height:ne.height+16}),dt=[E,V,...v.hosts,...v.obstacles].map(Ht),et=X?te:G?Tt(Ce):K?Tt(Fo(D(H,U),dt)):Ve(mn(W,dt)),lt=v.edges.length===1?v.edges[0]:null,ke=lt?At(w.kind,lt.from,lt.to):null,pt=ke!==null&&o.includes(ke),Be=ke!==null?s?.get(ke):void 0,Xe=v.edges.some(ne=>p.has(ne.from)||p.has(ne.to)),qe=v.tie?.toward??"",Se=v.tie!==void 0&&(d!==null&&(qe===d||v.tie.holds.includes(d)||v.said?.includes(d)===!0)||p.has(qe))&&!Z.has(qe);Se&&Z.add(qe);let Qe=!r&&p.size>0&&Xe||Se,xt=a!==null&&w.kind===a||pt,ct=l?.(w)!==void 0;if(r&&!ct||!r&&!ct&&p.size>0&&!Xe&&!xt&&!Se||v.said!==void 0&&!Se&&!v.said.some(ne=>p.has(ne))&&!xt)return null;let tt=r?No({emphasized:a!==null,stressed:xt,anyChosen:I,mine:Xe,touches:f(w),siblings:L.get(w.id)??1}):To({edgeChosen:pt,lit:Qe,anyLit:I||a!==null,own:le.opacity,kit:c.emphasis}),Pe=Qe&&at&&Ue?v.tie?v.tie.cardIsTo?at:Ue:v.edges.some(ne=>p.has(ne.from))?Ue:at:null,bt=(0,De.jsxs)("g",{children:[(0,De.jsx)("path",{"data-graview-connector":w.kind,"data-graview-edges":v.edges.length,"data-graview-from":v.fromAnchor,"data-graview-to":v.toAnchor,"data-graview-lit":Qe||void 0,"data-graview-activity":l?.(w)?.manner,"data-graview-provisional":Be!==void 0||void 0,opacity:tt*(w.opacity??1)*(Be!==void 0?rn:1),d:st,fill:"none",stroke:zt(le),strokeWidth:(Qe?Math.max(1.6,uo(le,r)):uo(le,r))+(xt?.6:0),strokeDasharray:Be!==void 0?on:On[le.pattern],strokeLinecap:"round"}),Pe?(0,De.jsx)("circle",{cx:Pe.x,cy:Pe.y,r:2.6,fill:zt(le),opacity:tt}):null,X&&r?(0,De.jsx)("text",{x:R.x,y:R.y-k-5,textAnchor:"middle",opacity:tt,style:{font:"9px var(--graview-font-body, system-ui)",letterSpacing:"0.09em",textTransform:"uppercase",fill:"var(--graview-ink-faint)"},children:Ft(w.kind).toLowerCase()}):null]},v.key),Fe=null;return ke&&u&&!X&&tt>=.2&&(Fe=(0,De.jsx)("path",{"data-graview-edge":ke,className:"graview-edge-hit",d:et,fill:"none",pathLength:1,strokeDasharray:"0.86",strokeDashoffset:-.07,stroke:"transparent",strokeWidth:14,style:{pointerEvents:"stroke",cursor:"pointer"},onClick:ne=>{ne.stopPropagation(),u(ke,{x:ne.clientX,y:ne.clientY})},onContextMenu:ne=>{ne.preventDefault(),ne.stopPropagation(),u(ke,{x:ne.clientX,y:ne.clientY})},children:Be!==void 0?(0,De.jsx)("title",{children:Be}):null},`hit:${v.key}`)),{key:v.key,line:bt,hit:Fe}});return(0,De.jsxs)(De.Fragment,{children:[(0,De.jsx)("svg",{"aria-hidden":"true","data-graview-world":"",width:t.width,height:t.height,style:{position:"absolute",left:0,top:0,pointerEvents:"none",zIndex:Ie.ties},children:q.map(v=>v?.line)}),q.some(v=>v?.hit)?(0,De.jsx)("svg",{"data-graview-world":"",width:t.width,height:t.height,style:{position:"absolute",left:0,top:0,pointerEvents:"none",zIndex:Ie.tieLabels},children:q.map(v=>v?.hit)}):null]})}var Oa=e=>e.length*8.4+16;function vi(e,t){let n=new Map;for(let a of e){let i=n.get(a.key);i?i.push(a):n.set(a.key,[a])}let r=[...n.values()].map(a=>{let i=Math.min(...a.map(u=>u.top)),l=a.filter(u=>u.top-i<=12);return{key:a[0].key,text:a[0].text,left:Math.min(...l.map(u=>u.left)),right:Math.max(...l.map(u=>u.right)),top:i}});r.sort((a,i)=>a.top-i.top||a.left-i.left);let o=r.map(a=>{let i=Math.max(a.right-a.left,Math.min(300,Oa(a.text))),l=(a.left+a.right)/2;return{left:l-i/2,right:l+i/2}});return r.map((a,i)=>{let l=r.map((b,g)=>({other:b,at:g})).filter(({other:b})=>b!==a&&Math.abs(b.top-a.top)<=12),u=l.filter(({other:b})=>b.right<=a.left).map(({other:b,at:g})=>o[g].right+8<=(b.right+a.left)/2?o[g].right+8:(b.right+a.left+8)/2),s=l.filter(({other:b})=>b.left>=a.right).map(({other:b,at:g})=>o[g].left-8>=(a.right+b.left)/2?o[g].left-8:(a.right+b.left-8)/2),d=Math.max(t.left,...u),c=Math.min(t.right,...s),h=a.right-a.left,y=o[i].right-o[i].left,x=Math.max(h,Math.min(y,c-d)),f=(a.left+a.right)/2,p=h>=x?a.left:Math.max(d,Math.min(f-x/2,c-x));return{key:a.key,text:a.text,left:p,width:x,top:a.top}})}function _n(e){return e<640?{left:8,right:56}:{left:8,right:Math.round(Math.min(128,e*.107))}}var me=se(Oe(),1);function Si(e){let t=lr(e);return t.length>0?new Map(t.map(n=>[At(n.edge.kind,n.edge.from,n.edge.to),dr(n)])):void 0}function Mi({frame:e,width:t,height:n,scheme:r,overview:o,selection:a,emphasis:i,stageRef:l,store:u,graphNodes:s,onPickEdge:d,liveOf:c,holding:h=!1,provisional:y,focusId:x=null,beside:f=!1}){let[p,b]=(0,pe.useState)(0),[g,O]=(0,pe.useState)(null),I=e.t<1,L=(0,pe.useRef)(""),C=(0,pe.useRef)([]),Z=()=>[...l.current?.querySelectorAll("[data-graview-relation] > span")??[]].map(A=>{let N=A.getBoundingClientRect();return`${Math.round(N.left)},${Math.round(N.top)},${Math.round(N.width)}`}).join(" ");(0,pe.useLayoutEffect)(()=>{I||h||(L.current=Z(),C.current=e.nodes,O(zn(e.nodes,e.connectors,l.current,o,r)))},[e,I,h,a,o,s,r,p,l]),(0,pe.useEffect)(()=>{if(I||h||o||typeof requestAnimationFrame>"u")return;let A=requestAnimationFrame(()=>{Z()!==L.current&&b(N=>N+1)});return()=>cancelAnimationFrame(A)},[g]);let q=e.nodes.map(A=>A.id).join(`
4
- `);(0,pe.useLayoutEffect)(()=>{let A=l.current;if(A===null||typeof window>"u")return;let N=0,H=()=>{N===0&&(N=requestAnimationFrame(()=>{N=0,b(X=>X+1)}))};A.addEventListener("scroll",H,{capture:!0,passive:!0}),window.addEventListener("resize",H,{passive:!0});let U=typeof ResizeObserver>"u"?null:new ResizeObserver(H);if(U){U.observe(A);for(let X of A.querySelectorAll("[data-graview-view]"))U.observe(X)}return()=>{N!==0&&cancelAnimationFrame(N),A.removeEventListener("scroll",H,{capture:!0}),window.removeEventListener("resize",H),U?.disconnect()}},[l,q]);let[v,M]=(0,pe.useState)(null),w=(g??[]).some(A=>A.tie!==void 0);if((0,pe.useEffect)(()=>{let A=l.current;if(!w||A===null)return;let N=U=>{let X=U.target?.closest?.("[data-graview-pick], [data-graview-view]");M(X?.getAttribute("data-graview-pick")??X?.getAttribute("data-graview-view")??null)},H=()=>M(null);return A.addEventListener("pointerover",N),A.addEventListener("focusin",N),A.addEventListener("pointerleave",H),A.addEventListener("focusout",H),()=>{A.removeEventListener("pointerover",N),A.removeEventListener("focusin",N),A.removeEventListener("pointerleave",H),A.removeEventListener("focusout",H)}},[w,l]),I)return null;let E=(g&&h?bi(g,C.current,e.nodes):g)??zn(e.nodes,e.connectors,null,o,r),V=new Set;for(let A of E){if(A.edges.length!==1)continue;let N=A.edges[0];V.add(`${A.connector.kind}|${N.from}|${N.to}`)}return(0,me.jsxs)(me.Fragment,{children:[(0,me.jsx)(wi,{strands:E,result:e,scheme:r,overview:o,selection:a,emphasis:i,stageRef:l,onPickEdge:d,liveOf:c,pointed:v,...y?{provisional:y}:{}}),o&&sn(a,{overview:o,focusId:x,beside:f},A=>u.graph.getNode(A)?.kind).records.length>0?(0,me.jsx)(pe.Suspense,{fallback:null,children:(0,me.jsx)(La,{frame:e,width:t,height:n,stageRef:l,tick:p,store:u,graphVersion:s,selection:a,view:{overview:o,focusId:x,beside:f},rulers:y?{...ki,unsureOf:(A,N,H)=>y.get(At(A,N,H))}:ki})}):null,o?null:(0,me.jsx)(Ia,{...y?{provisional:y}:{},stageRef:l,nodes:e.nodes,scheme:r,selection:a,store:u,graphNodes:s,overview:o,width:t,height:n,onPickEdge:d,alreadyDrawn:V,tick:p})]})}var ki={visibleRect:cn,clipQuadratic:mn,unsureDash:on,unsureOpacity:rn},Aa=nn(Jt(()=>import("./chunk.ZSKP6UQS.js"))),La=Aa.part((e,t)=>(0,me.jsx)(e.RecordLinks,{...t}),{what:"The links",quiet:!0});function Ia({stageRef:e,nodes:t,scheme:n,selection:r,store:o,graphNodes:a,overview:i,width:l,height:u,onPickEdge:s,alreadyDrawn:d,tick:c,provisional:h}){let y=Ot(),x=(0,pe.useMemo)(()=>{if(r.length===0||r.length>4)return[];let g=new Set(r),O=[];for(let L of r){let C=kt(L);C&&O.push({kind:C.kind,self:C.from,other:C.to})}for(let L of o.graph.allEdges()){let C=g.has(L.from)?L.from:g.has(L.to)?L.to:null;if(!C)continue;let Z=C===L.from?L.to:L.from;g.has(Z)||O.push({kind:L.kind,self:C,other:Z})}if(O.length<=14)return O;let I=new Set(t.map(L=>L.id));return O.map((L,C)=>({tie:L,index:C,real:I.has(L.other)?0:1})).sort((L,C)=>L.real-C.real||L.index-C.index).slice(0,14).map(({tie:L})=>L)},[o,r,a,t]),f=()=>{if(x.length===0||typeof document>"u")return[];let g=e.current?.getBoundingClientRect();if(!g)return[];let O=[...e.current?.querySelectorAll("[data-graview-joins]")??[]].find(w=>{if(w.closest("[data-graview-offstage]"))return!1;try{let E=JSON.parse(w.getAttribute("data-graview-joins")??"[]");return E.length===r.length&&E.every(V=>r.includes(V))}catch{return!1}});if(O){let w=cn(O,e.current);if(!w)return[];let E=[];for(let V of r){let A=t.find(X=>X.id===V);if(!A)continue;let N=He(e.current,A.id,i)??Ze(A,n),H=N?Yn(w,N):null;if(!N||!H)continue;let U=[...o.graph.allEdges()].find(X=>X.from===V&&r.includes(X.to)||X.to===V&&r.includes(X.from));E.push({key:`join:${V}`,self:V,other:"",others:1,kind:U?.kind??"",endX:H.to.x,endY:H.to.y,...H,fromBox:w,toBox:N,proxy:!1,edgeId:U?At(U.kind,U.from,U.to):null})}return E}let I=(w,E)=>{let V=e.current?.querySelectorAll(`[data-graview-pick="${CSS.escape(w)}"], [data-graview-slot="${CSS.escape(w)}"]`),A=[];for(let N of V??[]){if(N.closest("[data-graview-offstage]")||E(N)||N.closest("[data-graview-mark]"))continue;let H=cn(N,e.current);H&&A.push(H)}return A.sort((N,H)=>N.width*N.height-H.width*H.height)},L=w=>t.find(E=>E.id===w)??t.find(E=>E.aggregate?.memberIds.includes(w)),C=w=>`[data-graview-pick="${CSS.escape(w)}"], [data-graview-slot="${CSS.escape(w)}"]`,Z=(w,E)=>{let V=e.current;if(!V)return!1;for(let A of V.querySelectorAll("[data-graview-view]")){let N=A.querySelector(C(w));if(N===null||N.closest("[data-graview-offstage]"))continue;let H=A.querySelector(C(E));if(H!==null&&!H.closest("[data-graview-offstage]"))return!0}return!1},q=[];if(!i&&e.current){for(let w of t){if(Math.round(w.plane)!==1)continue;let E=He(e.current,w.id,!1);E&&q.push(E)}for(let w of e.current.querySelectorAll("[data-graview-relation] > span")){let E=w.getBoundingClientRect();E.width>0&&E.height>0&&q.push({x:E.left-g.left,y:E.top-g.top,width:E.width,height:E.height})}}let v=new Map,M=[];for(let w of x){if(Z(w.self,w.other))continue;let E=L(w.self),V=E?e.current?.querySelector(`[data-graview-view="${CSS.escape(E.id)}"]`):null,A=!i&&E?.id===w.self&&Math.round(E.plane)===1?He(e.current,E.id,!1):null,N=A?[A]:I(w.self,()=>!1);if(!(N.length>0)&&E){let D=He(e.current,E.id,!1)??Ze(E,n);D&&N.push(D)}let U=t.find(D=>D.id===w.other),X=[],de=!1;if(U){let D=He(e.current,U.id,i)??Ze(U,n);D&&X.push(D)}else if(X.push(...I(w.other,D=>V?V.contains(D):!1)),X.length===0){let D=L(w.other);if(D&&(!E||D.id!==E.id)){let re=He(e.current,D.id,i)??Ze(D,n);re&&(X.push(re),de=!0)}}if(N.length===0||X.length===0||de&&i)continue;let le=N[0],k=X[0],R=1/0;for(let D of N)for(let re of X){let G=Math.hypot(D.x+D.width/2-(re.x+re.width/2),D.y+D.height/2-(re.y+re.height/2));G<R&&(R=G,le=D,k=re)}if(d?.has(`${w.kind}|${w.self}|${w.other}`)||d?.has(`${w.kind}|${w.other}|${w.self}`))continue;let $=`${w.kind}:${Math.round(le.x)},${Math.round(le.y)}:${Math.round(k.x)},${Math.round(k.y)}`,Y=v.get($);if(Y){Y.others+=1;continue}let j=Yn(le,k);if(!j)continue;let{from:S,control:T}=j,B=A&&le===A?Xt(le,k,q,M.length):void 0,W=B?B[B.length-1]:j.to,z=[...o.graph.allEdges()].find(D=>D.kind===w.kind&&(D.from===w.self&&D.to===w.other||D.from===w.other&&D.to===w.self)),K={key:`${w.kind}:${w.self}:${w.other}`,self:w.self,other:w.other,others:1,kind:w.kind,endX:W.x,endY:W.y,from:S,to:W,control:T,fromBox:le,toBox:k,...B?{points:B}:{},proxy:de,edgeId:z?At(z.kind,z.from,z.to):null};v.set($,K),M.push(K)}for(let w of M){let E=[...o.graph.allEdges()].find(U=>U.kind===w.kind&&(U.from===w.self&&U.to===w.other||U.from===w.other&&U.to===w.self)),V=o.graph.getNode(w.self),A=o.graph.getNode(w.other);if(!E||!V||!A)continue;let N=E.from===w.self?"out":"in",H=sr(o.schema,N==="out"?V.kind:A.kind,w.kind,N);w.said=w.proxy?`${H}: ${jt(o.schema,A.kind,w.others)}`:`${H}: ${vn(o.schema.tryDefinition(A.kind),A)}`}return M},[p,b]=(0,pe.useState)([]);return(0,pe.useLayoutEffect)(()=>{b(f())},[x,t,i,n,l,u,d,c,e]),p.length===0?null:(0,me.jsxs)(me.Fragment,{children:[(0,me.jsx)("svg",{"aria-hidden":p.some(g=>g.edgeId)?void 0:!0,"data-graview-ties":p.length,"data-graview-world":"",width:l,height:u,style:{position:"absolute",left:0,top:0,pointerEvents:"none",zIndex:Ie.lines},children:p.map(g=>{let{connector:O,style:I}=Kt(y,g.kind);if(!O.visible)return null;let L=g.edgeId?h?.get(g.edgeId):void 0,C={p0:g.from,c:g.control,p1:g.to},Z=g.points?Fn(g.points,10):O.route==="orthogonal"?Tt([un(g.from,g.to)]):(({p0:v,c:M,p1:w})=>`M ${v.x} ${v.y} Q ${M.x} ${M.y} ${w.x} ${w.y}`)(jn(O.route,C)),q=null;if(g.edgeId&&s&&!g.proxy){let v=(w,E)=>E.x>=w.x&&E.x<=w.x+w.width&&E.y>=w.y&&E.y<=w.y+w.height,M=g.points?[...g.points]:[];for(let w=0;w<=(g.points?-1:40);w++){let E=li(O.route,C,w/40);v(g.fromBox,E)||v(g.toBox,E)||M.push(E)}M.length>=2&&(q=(0,me.jsx)("path",{"data-graview-edge":g.edgeId,className:"graview-edge-hit",d:`M ${M[0].x} ${M[0].y} ${M.slice(1).map(w=>`L ${w.x} ${w.y}`).join(" ")}`,fill:"none",pathLength:1,strokeDasharray:"0.86",strokeDashoffset:-.07,stroke:"transparent",strokeWidth:14,style:{pointerEvents:"stroke",cursor:"pointer"},onClick:w=>{w.stopPropagation(),s(g.edgeId,{x:w.clientX,y:w.clientY})},onContextMenu:w=>{w.preventDefault(),w.stopPropagation(),s(g.edgeId,{x:w.clientX,y:w.clientY})},children:L!==void 0?(0,me.jsx)("title",{children:L}):null}))}return(0,me.jsxs)("g",{opacity:(g.proxy?.32:.72)*(L!==void 0?rn:1),children:[(0,me.jsx)("path",{"data-graview-tie":g.kind,"data-graview-tie-proxy":g.proxy||void 0,"data-graview-provisional":L!==void 0||void 0,d:Z,fill:"none",stroke:zt(I),strokeWidth:g.proxy?1.1:1.6,strokeDasharray:L!==void 0?on:On[I.pattern],strokeLinecap:"round"}),(0,me.jsx)("circle",{cx:g.endX,cy:g.endY,r:g.proxy?2:2.6,fill:zt(I)}),q]},g.key)})}),(0,me.jsx)("div",{"aria-hidden":"true","data-graview-world":"",style:{position:"absolute",inset:0,pointerEvents:"none",zIndex:Ie.tieLabels},children:p.map(g=>g.said?(0,me.jsx)("span",{className:"graview-record-link-said","data-graview-link-said":g.kind,"data-graview-lands":g.proxy?"district":"record",style:{position:"absolute",left:g.endX,top:g.endY-26},children:g.said},g.key):null)})]})}function Ri({nodes:e,scheme:t,width:n,stageRef:r,moving:o=!1,holding:a=!1}){let i=Ot(),[l,u]=(0,pe.useState)([]);(0,pe.useLayoutEffect)(()=>{o||a||u(s())},[e,o,a,t,n,r]);function s(){let d=[];for(let h of e){if(!h.via||Math.round(h.plane)!==1)continue;let y=He(r.current,h.id,!1,!0),{scale:x}=ze(1,t);d.push({key:`${h.via.edgeKind}|${h.via.direction}`,text:h.via.description??`${h.via.direction==="in"?"\u2190":"\u2192"} ${Ft(h.via.edgeKind).toLowerCase()}`,left:y?.x??h.x,right:y?y.x+y.width:h.x+h.width*x,top:y?.y??h.y})}let c=_n(n);return vi(d,{left:c.left,right:n-c.right})}return l.length===0||!i.captions.visible||o?null:(0,me.jsx)("div",{"aria-hidden":"true",style:{position:"absolute",inset:0,pointerEvents:"none",zIndex:Ie.lines},children:l.map(d=>{let{left:c,width:h}=d;return(0,me.jsx)("div",{"data-graview-relation":d.key,title:d.text,style:{position:"absolute",left:c,width:h,textAlign:"center",top:Math.max(0,d.top-19),fontSize:"0.75rem",letterSpacing:"0.09em",textTransform:"uppercase",color:"var(--graview-ink-faint)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:(0,me.jsx)("span",{style:{background:"var(--graview-ground)",padding:"1px 7px",borderRadius:4},children:d.text})},d.key)})})}var $t=se(Te(),1);var Pa=new Set;function Ei(e,t,n,r,o,a,i){let{store:l,views:u,hiddenKinds:s}=ge(),d=Mt(),c=(0,$t.useContext)(Yt),h=ao(),y=(0,$t.useMemo)(()=>{let p={};for(let b of h){if(b.subjectId===void 0)continue;let g=p[b.subjectId]??=[];for(let O of b.nodeIds)O!==b.subjectId&&!g.includes(O)&&g.push(O)}return p},[h]),x=(0,$t.useMemo)(()=>({flagged:new Set(h.flatMap(p=>p.nodeIds)),touched:An(l.log.all())}),[h,l,i]),f=(0,$t.useMemo)(()=>({hits:d?Rn(d):Pa,...x}),[d,x]);return(0,$t.useMemo)(()=>({...e,cityZoom:o,...c?{besideTheMap:!0}:{},...s.size>0?{hiddenKinds:[...s].sort()}:{},...Object.keys(y).length>0?{judged:y}:{},relevance:f,inset:{..._n((t?.width??1200)-a.right),top:8,bottom:r?0:56},chrome:[{x:(t?.width??1200)-a.right-176,y:0,width:176,height:100}],...a.right>0||a.bottom>0?{dock:a}:{},unit:n,plainGroups:l.schema.kinds.filter(p=>rr(u.lookup(p,{cardinality:"many",fidelity:"full"}))),cityOrder:Jo(wr({name:"scene",schema:l.schema,mutations:l.allMutations().filter(p=>!p.derived)}).order.map(p=>p.kind),u.arrangement?.()?.order),screens:u.places().reduce((p,b)=>((p[b.kind]??=[]).push({as:b.as,title:b.title,...b.across?{across:b.across}:{}}),p),{}),...t?{width:t.width,height:r?Math.max(0,t.height-64):t.height}:{}}),[e,t,n,l,u,s,y,f,o,r,c,a.right,a.bottom])}var it=se(Te(),1);var Oi=se(Te(),1);function Gn(e){let t=e?.closest?.("[data-graview-pick]")?.getAttribute("data-graview-joins");if(!t)return null;try{let n=JSON.parse(t);return Array.isArray(n)&&n.length>0&&n.every(r=>typeof r=="string")?n:null}catch{return null}}function Ai(e){(0,Oi.useEffect)(()=>{let t=e.current;if(!t)return;let n=()=>{for(let a of t.querySelectorAll("[data-graview-pick]"))a.getAttribute("tabindex")===null&&a.setAttribute("tabindex","0"),a.getAttribute("role")===null&&Ta(a)&&a.setAttribute("role","button")};if(n(),typeof MutationObserver>"u")return;let r=0,o=new MutationObserver(()=>{r===0&&(r=typeof requestAnimationFrame>"u"?0:requestAnimationFrame(()=>{r=0,n()}),r===0&&n())});return o.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-graview-pick"]}),()=>{o.disconnect(),r!==0&&cancelAnimationFrame(r)}},[e])}var Na=new Set(["div","span","p","figure","img","td","output","b","i","em","strong","small","canvas","g","polygon","circle","rect","path","ellipse","polyline","line","use"]);function Ta(e){return Na.has(e.localName.toLowerCase())}var qt=se(Oe(),1);function Li({node:e,useDom:t,touched:n,frontY:r,centerY:o,screen:a,onDrawnHeight:i,crowded:l,activity:u,scheme:s,canvasWidth:d,canvasHeight:c,selected:h,onSelect:y,onPick:x,onTravel:f,onMenu:p,selection:b,onJackIn:g,onDragStart:O,onDragMove:I,onDragEnd:L,swallowClick:C,children:Z}){let{brand:q,store:v,actsDoor:M}=ge(),w=e.beyond?`${e.beyond.length} more district${e.beyond.length===1?"":"s"}`:e.aggregate?.opens?.in==="place"?`${e.aggregate.label}, ${jt(v.schema,e.aggregate.kind,e.aggregate.memberIds.length)}`:e.aggregate?e.aggregate.label:(()=>{let S=v.graph.getNode(e.id);return S?vn(v.schema.tryDefinition(e.kind),S):e.id})(),[E,V]=(0,it.useState)(null),A=Math.round(e.plane)===0&&!e.aggregate;(0,it.useLayoutEffect)(()=>{if(!A)return;let S=k.current;if(!S)return;let T=()=>{let W=[...S.children].find(G=>G.dataset.graviewKindtag===void 0);if(!W)return;let z=S.getBoundingClientRect(),K=W.getBoundingClientRect(),D=S.offsetWidth>0?z.width/S.offsetWidth:1,re={top:Math.round((K.top-z.top)/D)-9,right:Math.round((z.right-K.right)/D)+14};V(G=>G&&G.top===re.top&&G.right===re.right?G:re)};if(typeof ResizeObserver>"u"){T();return}let B=new ResizeObserver(T);B.observe(S);for(let W of S.children)B.observe(W);return()=>B.disconnect()},[A,e.id]);let N=r!==void 0?0:e.plane-(1-(e.depth??1))*.55,H=Math.max(0,Math.min(2,Math.floor(N))),U=Math.max(0,Math.min(2,Math.ceil(N))),X=H===U?ze(H,s):En(ze(H,s),ze(U,s),N-H),de=ar(X,e.x,e.y,d,c),le=ze(Math.max(0,Math.min(2,Math.round(N))),s).blur,k=(0,it.useRef)(null);Ai(k);let R=e.natural,$=R?Math.min(e.width/R.width,e.height/R.height):1,Y=(0,it.useRef)(null);(0,it.useEffect)(()=>{if(!a||!i)return;let S=Y.current;if(!S||typeof ResizeObserver>"u")return;let T=()=>{let D=0,re=0;for(let G of S.children)if(!(!(G instanceof HTMLElement)||G.classList.contains("graview-screen-fullscreen"))){D=Math.max(D,G.offsetTop+G.offsetHeight);for(let we of[G,...G.querySelectorAll("*")]){let Ce=getComputedStyle(we).overflowY;(Ce==="auto"||Ce==="scroll")&&(re+=we.scrollHeight-we.clientHeight)}}i(D+re)},B=0,W=()=>{B||(B=requestAnimationFrame(()=>{B=0,T()}))};T();let z=new ResizeObserver(W);z.observe(S);for(let D of S.children)z.observe(D);let K=new MutationObserver(W);return K.observe(S,{childList:!0,subtree:!0,characterData:!0,attributes:!0}),()=>{B&&cancelAnimationFrame(B),z.disconnect(),K.disconnect(),i(void 0)}},[a,i,e.id]);let j=t?{transform:di(de),transformOrigin:"0 0",filter:le>0?`blur(${le}px)`:void 0,opacity:(1-X.falloff*.55)*(e.opacity??1),"--graview-lift-low":si(X.shadow,s),...r!==void 0?{"--graview-front-y":`${r.toFixed(1)}px`}:{},...o!==void 0?{"--graview-center-y":`${o.toFixed(1)}px`}:{}}:{};return(0,qt.jsxs)("div",{ref:k,"data-graview-view":e.id,"data-graview-plane":Math.round(e.plane),"data-graview-selected":h||void 0,"data-graview-touched":n||void 0,"data-graview-plot":r!==void 0?"":void 0,"data-graview-screen":a?"":void 0,"data-graview-record-focus":Math.round(e.plane)===0&&!e.aggregate&&!R&&!a?"":void 0,"data-graview-nested":e.nestedUnder??void 0,"data-graview-crowded":l||void 0,"data-graview-pinned":e.pinned||void 0,"data-graview-activity":u?u.manner:void 0,"data-graview-wrote":u?.wrote||void 0,"data-graview-read":u&&!u.wrote?!0:void 0,"data-graview-broke":u?.broke||void 0,title:u?`${Jr[u.manner]} ${u.wrote?"changed this":"read this"}: ${u.intent}`:e.aggregate&&Math.round(e.plane)!==0?`Open ${e.aggregate.label}`:void 0,role:"group","aria-label":w,"aria-keyshortcuts":M&&!e.beyond?M.key:void 0,tabIndex:0,onPointerDown:O,onPointerMove:I,onPointerUp:L,onPointerCancel:L,onClick:S=>{if(C.current)return;let T=S.target?.closest("input, textarea, select, button, a[href], [contenteditable='true']");if(T&&!T.hasAttribute("data-graview-pick"))return;let B=S.metaKey||S.shiftKey,W=ft(S.target);if(W&&W!==e.id){S.stopPropagation(),x(W,B,Gn(S.target)??void 0);return}y(B)},onKeyDown:S=>{if(M&&!e.beyond&&S.key.toLowerCase()===M.key.toLowerCase()&&!S.metaKey&&!S.ctrlKey&&!S.altKey&&!S.target?.closest("input, textarea, select, [contenteditable='true']")){S.preventDefault(),S.stopPropagation();let K=ft(S.target)??e.id;b.includes(K)||x(K,!1),M.open(S.target instanceof HTMLElement?S.target:S.currentTarget);return}if(S.key!=="Enter"&&S.key!==" "||S.target?.closest("input, textarea, select, button, [contenteditable='true']"))return;let B=ft(S.target);if(S.preventDefault(),S.stopPropagation(),!B||B===e.id){b.length===1&&b[0]===e.id&&!S.metaKey&&!S.shiftKey?g():y(S.metaKey||S.shiftKey);return}let W=Gn(S.target);(W?b.length===W.length&&W.every(K=>b.includes(K)):b.length===1&&b[0]===B)&&!S.metaKey&&!S.shiftKey?f(B):x(B,S.metaKey||S.shiftKey,W??void 0)},onContextMenu:S=>{let T=ft(S.target);S.preventDefault(),S.stopPropagation();let B=T&&T!==e.id?T:e.id;x(B,!1,(B===T?Gn(S.target):null)??void 0),p({x:S.clientX,y:S.clientY,on:B})},onDoubleClick:S=>{let T=ft(S.target);if(T&&T!==e.id){S.stopPropagation(),f(T);return}g()},style:{position:"absolute",...t?{}:{pointerEvents:"none"},zIndex:e.opened?Ie.opened:Ie.card-Math.round(e.plane),left:t?0:Math.round(e.x),top:t?0:Math.round(e.y),width:Math.round(e.width),height:Math.round(e.height),boxSizing:"border-box",display:"flex",flexDirection:"column",justifyContent:"center",...j},children:[R?(0,qt.jsx)("div",{ref:Y,"data-graview-natural":`${Math.round(R.width)}x${Math.round(R.height)}`,style:{position:"absolute",left:"50%",top:"50%",width:R.width,height:R.height,transform:`translate(-50%, -50%) scale(${$})`,transformOrigin:"50% 50%",display:"flex",flexDirection:"column"},children:Z}):Z,Math.round(e.plane)===0&&!e.aggregate?(0,qt.jsxs)("span",{"data-graview-kindtag":"",className:"graview-kind-tag","aria-hidden":"true",style:{...E??{},"--graview-hue":Math.round(Zt(e.kind,q?.accents))},children:[(0,qt.jsx)("span",{style:{width:9,height:6,clipPath:"polygon(50% 0, 100% 50%, 50% 100%, 0 50%)",flex:"0 0 auto",background:`hsl(${Math.round(Zt(e.kind,q?.accents))} 55% var(--graview-tint-lightness) / 0.9)`}}),Qo(v.schema.tryDefinition(e.kind),e.kind)]}):null]})}var ue=se(Oe(),1);io({search:pr,touchWeights:An});var $a=e=>e?{activity:e}:{},Ha=e=>`${Math.round(e.x)} ${Math.round(e.y)}`,Ii=e=>e.stopPropagation(),Ti=.6,$i=3,Da=80,Ci=e=>Math.round(e.plane)===1&&(e.compact===!0||e.width<175||e.height<Da);function Ba(e){let[t,n]=(0,J.useState)(1),r=(0,J.useRef)(1);return(0,J.useEffect)(()=>{e||(r.current=1,n(1))},[e]),[t,r,n]}function Fa(e){let[t,n]=(0,J.useState)({x:0,y:0}),r=(0,J.useMemo)(()=>({x:(e.pan?.x??0)+t.x,y:(e.pan?.y??0)+t.y}),[e.pan,t]),o=(0,J.useMemo)(()=>t.x===0&&t.y===0?e:Lt(e,r),[e,t,r]),a=(0,J.useRef)(t);a.current=t;let i=(0,J.useCallback)((l,u)=>{let s=a.current,d=(c,h,y)=>Math.max(Math.min(-c,h),Math.min(Math.max(c,h),y+h))-h;return{x:d(l.x,s.x,u.x),y:d(l.y,s.y,u.y)}},[]);return[r,o,i,a,n]}function ja(e,t,n,r,o,a){let i=n!==null&&!t.overview,l=i?null:n,u=(0,J.useMemo)(()=>{let h=t.pan?{...t,pan:void 0}:t;return l?an(h,l.id,{x:l.x,y:l.y}):h},[t,l]),s=(0,J.useMemo)(()=>Pn(e.graph,e.schema,u,r),[e,u,r,o]),d=(0,J.useMemo)(()=>n&&i?Ao(s,n.id,{x:n.x,y:n.y})??Pn(e.graph,e.schema,an(u,n.id,{x:n.x,y:n.y}),r):s,[s,n,i,e,u,r]);return[(0,J.useMemo)(()=>Lo(d,a??{x:0,y:0}),[d,a]),i]}function Wa(){let[e,t]=(0,J.useState)(!1),[n,r]=(0,J.useState)(!1),o=(0,J.useRef)(null),a=(0,J.useRef)(()=>!1),i=(0,J.useCallback)(()=>{r(!0),o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{o.current=null,!a.current()&&r(!1)},160)},[]);return[e,n,t,i,a,()=>{t(!1),r(!1)}]}function Va(e){let t=(0,J.useRef)(!1),n=e!==null&&!t.current;return(0,J.useEffect)(()=>{e!==null&&(t.current=!0)},[e]),n}function Ya({registerScene:e,scheme:t,views:n},r,o){let a=(0,J.useRef)(r);a.current=r,(0,J.useEffect)(()=>(e({whereIs:i=>Bn(a.current,o.current,t,n,i)}),()=>e(null)),[e,t,n])}function za(e,t){(0,J.useEffect)(()=>{let n;return e.onActive(r=>{let o=t.current;if(!o)return;let a=l=>{let u=o.getBoundingClientRect();e.set({x:l.clientX-u.left,y:l.clientY-u.top})},i=()=>e.set(null);r?(o.addEventListener("pointermove",a),o.addEventListener("pointerleave",i),n=()=>{o.removeEventListener("pointermove",a),o.removeEventListener("pointerleave",i)}):(n?.(),n=void 0)})},[e])}function _a(e,t,n,r,o){(0,J.useEffect)(()=>{if(e==="dom")return;let a=n.current;if(!a||!t)return;let i=new Set;for(let u of r.nodes)(o.has(u.id)||u.aggregate?.memberIds.some(s=>o.has(s)))&&i.add(u.id);let l=t({canvas:a,layout:r,dirty:i,hostOf:u=>a.querySelector(`[data-graview-view="${CSS.escape(u)}"]`)});return()=>{l?.()}},[e,t,r,o])}function Ga(){let e=cr();return t=>{let n=t?e.get(t.id):void 0,r=t?.aggregate?.memberIds??[];if(!n&&r.length===0)return;let o=n,a=n?.wrote??!1,i=n?.read??!1,l=n?.broke??!1;for(let u of r){let s=e.get(u);s&&(a||=s.wrote,i||=s.read,l||=s.broke,(!o||s.at>o.at||s.at===o.at&&s.wrote&&!o.wrote)&&(o=s))}return o?{...o,wrote:a,read:i,broke:l}:void 0}}var Pi=(e,t)=>e.includes(t)?e.filter(n=>n!==t):[...e,t];function Ka(){let{views:e,view:t,setView:n,setSelection:r}=ge(),o=Mt(),a=(0,J.useContext)(Yt),i=l=>{if(Re(l.id)===null&&!l.aggregate)return!1;let u=e.resolve(l.kind,{cardinality:"many",fidelity:"full"})?.view;return u!==void 0&&u.generic!==!0};return l=>({onSelect:u=>{if(Vt(l.id)){r(d=>u?Pi(d,l.id):[l.id]);return}let s=l.aggregate?tn(l.id):[];if(t.overview){r(d=>u?[...new Set([...d,l.id])]:[l.id]);return}if(s.length===1&&!u&&Math.round(l.plane)!==0){let d=s[0];n(c=>eo(c,c.relation===d?null:d));return}r(d=>Do(l,d,u))},onPick:(u,s,d)=>r(c=>d?s?[...new Set([...c,...d])]:[...d]:s?Pi(c,u):[u]),onTravel:u=>{n(s=>({...ut(s,u),relation:null})),r([u])},onJackIn:()=>{let u=l.aggregate?.opens;if(u){u.in==="place"?n(c=>to(c,l.id)):n(c=>Object.entries(u.within).reduce((h,[y,x])=>Sn(h,y,x),ut(en(c,!1),u.focus))),r([]);return}let s=Re(l.id),d=s!==null&&(o?.byKind[s]??0)>0;if(a&&s!==null&&t.overview&&!i(l)&&!(d&&t.q)){n(c=>Sn({...ut(c,`aggregate:${s}`),relation:null},"view",null)),r([]);return}n(c=>no(c,l.id,{ownPicture:i(l),...d&&c.q?{carry:c.q}:{}})),r(l.aggregate?[]:[l.id])}})}var Ua=nn(Jt(()=>import("./chunk.5JXUAMKI.js"))),Xa=Ua.part((e,t)=>(0,ue.jsx)(e.Ribbons,{...t}),{what:"The relations",quiet:!0}),Ni="graview:map-from-above";function qa(){let[e,t]=(0,J.useState)(()=>{try{return globalThis.localStorage?.getItem(Ni)==="1"}catch{return!1}}),n=(0,J.useCallback)(r=>{t(r);try{globalThis.localStorage?.setItem(Ni,r?"1":"0")}catch{}},[]);return[e,n]}var Qa=nn(Jt(()=>import("./chunk.44FVJOK4.js"))),Za=Qa.part((e,t)=>(0,ue.jsx)(e.Plots,{...t}),{quiet:!0});function Ja({zoom:e,zoomBy:t,above:n,setAbove:r}){let o=(a,i,l,u)=>(0,ue.jsx)("button",{type:"button",className:"graview-zoom-button","data-testid":`zoom-${a}`,"aria-label":`Zoom ${a}`,title:`Zoom ${a} \u2014 or pinch, or ctrl+wheel`,disabled:u,onClick:()=>t(l),children:i});return(0,ue.jsxs)("div",{className:"graview-zoom","data-graview-foot":"",role:"group","aria-label":"Zoom",onPointerDown:Ii,onClick:Ii,children:[o("out","\u2212",1/1.25,e<=Ti+1e-6),(0,ue.jsxs)("span",{className:"graview-zoom-level","data-testid":"zoom-level","aria-live":"polite",children:[Math.round(e*100),"%"]}),o("in","+",1.25,e>=$i-1e-6),(0,ue.jsx)("button",{type:"button",className:"graview-zoom-button graview-zoom-above","data-testid":"from-above","aria-pressed":n,title:n?"See the city at an angle again":"See the city from straight above",onClick:()=>r(!n),children:"From above"})]})}function es({options:e,renderer:t="auto",attachRenderer:n,className:r,style:o,animate:a=!0,children:i}){let l=ge(),{store:u,scheme:s,views:d,view:c,setView:h,selection:y,setSelection:x,setMenuAt:f,emphasis:p,brand:b,noteMoved:g,robots:O,seatTalk:I,motion:L}=l,C=(0,J.useContext)(Yt),Z=oo(I),q=(0,J.useRef)(null),v=(0,J.useRef)(null),M=ai(v),w=ii(),{zoomAbout:E,panBy:V}=Zr({stage:v,view:c,setView:h}),A=Rt(),N=1,[H,U,X]=Ba(c.overview),[de,le]=qa(),k=(0,J.useMemo)(()=>de?{...e,tilt:br}:e,[e,de]),{probe:R,dock:$}=Ur(),Y=Ei(k,M,w,Z,N*H,$,A),[j,S,T,B,W]=Fa(c),z=(0,J.useMemo)(()=>new Set(Object.keys(c.pins).filter(P=>Re(P)===null)),[c.pins]),K=Xr(),[D,re]=ja(u,c,K.held,Y,A,S.pan),[G,we,Ce,Je,at,Ue]=Wa(),Ve=Va(M),te=Br(D,{enabled:a&&!G&&!we&&M!==null&&!Ve});(0,J.useEffect)(()=>L.set(G||we||te.t<1),[L,G,we,te]);let st=Fr(),Ht=jr(),dt=_r({view:c,result:D,frame:te,panned:j,closer:N,screenId:null,setCamera:W});Ya(l,te,v),za(l.pointer,v),_a(t,n,q,te,st);let et=t==="dom"||t==="auto"&&!n,lt=Ga(),ke=qr({stage:v,pan:c.pan,setView:h,settled:Ue});at.current=ke.settle;let{onGroundDown:pt,onCardDown:Be,onDragMove:Xe,onDragUp:qe,swallow:Se}=Qr({view:c,panned:j,limit:()=>mt(D),panWithin:T,moveByTransform:et,setView:h,setDragging:Ce,noteMoved:g,shift:ke,district:K});E.current=(P,oe,he)=>{if(!c.overview)return;at.current();let fe=U.current,Ae=Math.max(Ti,Math.min($i,fe*P));if(Math.abs(Ae-fe)<1e-4)return;U.current=Ae,Je(),X(Ae);let Dt=v.current?.getBoundingClientRect(),gn=D.visible??D,Ne={x:gn.width/2,y:gn.height/2},yn=Dt&&oe!==void 0&&he!==void 0?{x:oe-Dt.left,y:he-Dt.top}:Ne,pn=Ae/fe;h(Bt=>Lt(Bt,Eo(Bt.pan??{x:0,y:0},B.current,yn,Ne,pn))),g()};let Qe=(P,oe,he=mt(D))=>h(fe=>Lt(fe,T(he,{x:(fe.pan?.x??0)+P,y:(fe.pan?.y??0)+oe})));Kr(v,$,(P,oe)=>Qe(P,oe)),V.current=(P,oe)=>{Je();let he=mt(D),fe=c.pan??{x:0,y:0};if(et){let Ae=ke.offset();ke.shiftTo(T(he,{x:fe.x+Ae.x+P,y:fe.y+Ae.y+oe}),fe)}else Qe(P,oe,he);g()};let xt=Ka(),ct=Ot(),tt=(0,J.useCallback)(P=>Kt(ct,P).connector.visible,[ct]),Pe=P=>lt(te.nodes.find(oe=>oe.id===P)),bt=(P,oe,he,fe)=>P.originY+j.y+Ut(he.col+he.side/fe,he.row+he.side/fe,P.cell,P.tilt).y-oe.y,Fe={width:D.width,height:D.height},ne={position:"relative",zIndex:Ie.stage,...Fe},ve=P=>Bn(te,v.current,s,d,P),nt=te.nodes.filter(P=>P.screenOf===void 0).map(P=>(0,ue.jsx)(Li,{node:P,crowded:Ci(P),useDom:et,...P.plot&&te.city&&Math.round(P.plane)===2?{frontY:bt(te.city,P,P.plot,1),centerY:bt(te.city,P,P.plot,2)}:{},touched:st.has(P.id),...$a(lt(P)),scheme:s,canvasWidth:D.width,canvasHeight:D.height,selected:y.includes(P.id),...xt(P),onMenu:f,selection:y,onDragStart:oe=>Be(P,oe),onDragMove:Xe,onDragEnd:qe,swallowClick:Se,children:P.beyond?(0,ue.jsx)(ti,{kinds:P.beyond}):P.aggregate?.opens?(0,ue.jsx)(ri,{node:P}):(0,ue.jsx)(ni,{node:P,mode:"scene",selected:y.includes(P.id),...Ci(P)?{fidelity:"glyph"}:{}})},P.id));return(0,ue.jsxs)("div",{ref:v,className:`graview-ground${r?` ${r}`:""}`,"data-graview-altitude":c.overview?"":void 0,"data-graview-reach":te.city?Ha(mt(D)):void 0,"data-graview-settled":te.t>=1&&!dt.gliding()?"":void 0,"data-graview-box":M?`${M.width}x${M.height}`:void 0,onPointerDown:pt,onPointerMove:Xe,onPointerUp:qe,onPointerCancel:qe,onClick:P=>{Se.current||P.target.closest("[data-graview-view], button, aside, section[aria-label], [data-graview-offstage], a, input, select")||(x([]),f(null))},style:{position:"relative",width:"100%",height:"100%",cursor:G?"grabbing":"grab",touchAction:"none","--graview-altitude":c.overview?1:0,...te.city?{"--graview-lattice-cell":`${te.city.cell.toFixed(2)}px`,"--graview-lattice-tilt":(te.city.tilt??.5).toFixed(3),"--graview-lattice-x":`${(te.city.originX+te.city.pan.x).toFixed(1)}px`,"--graview-lattice-y":`${(te.city.originY+te.city.pan.y).toFixed(1)}px`}:{},...G?{userSelect:"none"}:{},overflow:"hidden",...o},children:[c.overview&&te.city?(0,ue.jsx)(J.Suspense,{fallback:null,children:(0,ue.jsx)(Xa,{frame:te,...Fe,pan:te.city.pan,store:u,graphVersion:A,selection:y,view:{overview:c.overview,focusId:c.focusId,beside:C},emphasis:p,hiddenKinds:l.hiddenKinds,drawn:tt})}):null,(0,ue.jsx)("div",{ref:R,"aria-hidden":"true",style:{position:"absolute",top:0,right:0,width:"var(--graview-dock, 0px)",height:"var(--graview-sheet, 0px)",visibility:"hidden",pointerEvents:"none"}}),te.city?(0,ue.jsx)(J.Suspense,{fallback:null,children:(0,ue.jsx)(Za,{frame:te,...Fe,pan:te.city?te.city.pan:j,brand:b,pinned:z,close:N*H>1.2,swallowed:Se,...c.overview?{chosen:sn(y,{overview:c.overview,focusId:c.focusId,beside:C},P=>u.graph.getNode(P)?.kind).records}:{},onFocus:P=>{let oe=Re(P);oe!==null&&h(he=>ut(he,Ee(oe)))}})}):null,et?(0,ue.jsx)("div",{"data-graview-stage":"dom","data-graview-world":"",style:{...ne,overflow:"hidden"},children:nt}):(0,ue.jsx)("canvas",{ref:q,"data-graview-stage":"gpu",layoutsubtree:"",...Fe,style:{display:"block",...ne},children:nt}),c.overview&&!G?(0,ue.jsx)(zr,{result:D,schema:u.schema,onGo:P=>{Qe(P.x,P.y),g()}}):null,c.overview?(0,ue.jsx)(Ja,{zoom:H,zoomBy:P=>E.current(P),above:de,setAbove:le}):null,(0,ue.jsx)(Mi,{frame:te,focusId:c.focusId,beside:C,holding:re,...Fe,scheme:s,overview:!!c.overview,selection:y,emphasis:p,stageRef:v,store:u,graphNodes:A,...(P=>P?{provisional:P}:{})(Si(u)),onPickEdge:(P,oe)=>{Se.current||(x([P]),f(oe?{...oe,on:P}:null))},liveOf:P=>{let oe=Pe(P.from),he=Pe(P.to);return oe?.wrote&&he?.wrote?oe.at>he.at?oe:he:void 0}}),(0,ue.jsx)(Vr,{width:D.width,whereIs:ve}),(0,ue.jsx)(Wr,{marks:Ht.marks,questions:[...O.values()].filter(P=>P.mode==="asking"&&P.at!==null&&P.say).map(P=>({id:P.at,who:P.who,asks:P.say})),whereIs:ve,stageRef:v,...Fe}),(0,ue.jsx)(Ri,{nodes:te.nodes,moving:te.t<1,holding:re,scheme:s,width:D.width,stageRef:v}),i]})}var Ke=se(Te(),1);function ts(){return Fi(),null}var Bi=()=>window.location.pathname.endsWith(Zo),Hi=()=>(Bi()?tr:Jn)(window.location.hash),ns=e=>(Bi()?nr:Zn)(e);function Fi(){let{view:e,setView:t,views:n,principal:r}=ge(),o=JSON.stringify(r),a=(0,Ke.useCallback)(d=>{let c=d.within?.view;if(c===void 0||d.focusId)return d;let h=n.places().find(y=>y.as===c);return h?{...d,focusId:Ee(h.kind)}:d},[n]),i=(0,Ke.useRef)(!1);(0,Ke.useEffect)(()=>{if(typeof window>"u")return;let d=a(Hi());!kn(d,Qn)&&!kn(d,e)&&(i.current=!0,t(d))},[]),(0,Ke.useEffect)(()=>{if(typeof window>"u")return;let d=()=>t(a(Hi()));return window.addEventListener("popstate",d),window.addEventListener("hashchange",d),()=>{window.removeEventListener("popstate",d),window.removeEventListener("hashchange",d)}},[t,a]);let l=(0,Ke.useRef)(!1),u=(0,Ke.useRef)(null),s=(0,Ke.useRef)(o);(0,Ke.useEffect)(()=>{if(typeof window>"u")return;if(i.current){i.current=!1;return}let d=s.current!==o;s.current=o;let c=ns(e),h=c||`${window.location.pathname}${window.location.search}`;if((window.location.hash||(window.location.href.includes("#")?"#":""))===c){l.current=!0,u.current=e;return}if(!l.current){l.current=!0,u.current=e,window.history.replaceState({graview:Et.at},"",h);return}if(d||ji(u.current,e)){window.history.replaceState({graview:Et.at},"",h),u.current=e;return}u.current=e,window.history.pushState({graview:++Et.at},"",h),Et.depth=Et.at,Et.tell()},[e,o])}function ji(e,t){return e?e.focusId===t.focusId&&e.relation===t.relation&&(e.overview??!1)===(t.overview??!1)&&(e.zoom??!1)===(t.zoom??!1)&&(e.past??!1)===(t.past??!1)&&e.expanded.join(",")===t.expanded.join(",")&&(e.shown??[]).join(",")===(t.shown??[]).join(",")&&os(e.within,t.within):!1}function os(e,t){let n=r=>Object.entries(r??{}).sort(([o],[a])=>o.localeCompare(a)).map(([o,a])=>`${o}=${a}`).join("&");return n(Di(e))===n(Di(t))}function Di(e){if(!e||!("q"in e))return e;let{q:t,...n}=e;return n}var Ko=se(Te(),1);function rs(e={}){let{store:t,selection:n,principal:r,providers:o}=ge(),{about:a,...i}=e,l=a??n,u=Rt();return(0,Ko.useMemo)(()=>{let s=[...new Set(l.flatMap(c=>tn(c)))],d=l.map(c=>kt(c)).filter(c=>c!==null);return vr(t,l,{principal:r,kindSelection:s,edgeSelection:d,...o?{providers:o}:{},...i})},[t,l,e,u,r,o])}function is(){let{store:e,principal:t}=ge();return(0,Ko.useMemo)(()=>({preview:(n,r)=>Sr(e,n,r??{}),apply:(n,r)=>kr(e,n,r??{},{author:t})}),[e,t])}export{zi as a,na as b,oa as c,ra as d,ia as e,aa as f,sa as g,es as h,ts as i,rs as j,is as k};
@@ -1,88 +0,0 @@
1
- import{a as Fe,c as Ve}from"./chunk.XAXJHEMD.js";import{b as Ke}from"./chunk.P62SKNJS.js";import{a as Pe,b as Le,c as Ie,d as j}from"./chunk.GDA3G4U2.js";import{j as $e,k as Ee}from"./chunk.WKXNBHTL.js";import"./chunk.OWE6OJ4P.js";import"./chunk.3JM2TNDD.js";import"./chunk.BKPGDEES.js";import"./chunk.JNGUSAWX.js";import"./chunk.CK7QWLMX.js";import"./chunk.QNHECGMH.js";import{m as De}from"./chunk.KZ2376BD.js";import{a as Ce,b as Re}from"./chunk.IZW7DBK4.js";import{e as Ae}from"./chunk.RKRSRKF3.js";import{e as Se,f as Ne}from"./chunk.KC6UZHBM.js";import"./chunk.HJCQ6I3S.js";import"./chunk.ZBXOX3W3.js";import{e as ne}from"./chunk.5AT4O4BN.js";import{a as Oe,b as Te,j as Me}from"./chunk.V6TK4LHW.js";import"./chunk.G4JJXA63.js";import"./chunk.YRQZZH5V.js";import"./chunk.HONUT6OG.js";import"./chunk.X53HI436.js";import"./chunk.COTG2IG5.js";import"./chunk.Q5WEOX3Q.js";import"./chunk.Z2RGLFLS.js";import"./chunk.UTHHX2TJ.js";import"./chunk.YCA7P5MK.js";import{a as ke}from"./chunk.VPPUTA74.js";import"./chunk.UT6642FC.js";import"./chunk.3G5MQFZK.js";import"./chunk.2CLPRG3I.js";import"./chunk.O42YET3W.js";import"./chunk.Z5V23DQN.js";import"./chunk.OHE5AMHH.js";import{s as ye}from"./chunk.OYJSFO3A.js";import"./chunk.HV6I74DF.js";import"./chunk.WVUJXDXZ.js";import{a as be}from"./chunk.DAA6XWLF.js";import"./chunk.7DNFXJH3.js";import"./chunk.7PRFYYVM.js";import"./chunk.2NCTM5K2.js";import"./chunk.JU2ZVKMT.js";import"./chunk.HGAMNIST.js";import"./chunk.OQDETV4X.js";import{g as me}from"./chunk.ZS4DJ76C.js";import{d as te}from"./chunk.5R66YTET.js";import{c as he}from"./chunk.G4WQGTZR.js";import"./chunk.HFKMHLJ3.js";import{i as Y,v as xe}from"./chunk.GS4T26WW.js";import{F as Xe,M as fe,N as we,U as F,W as X,aa as ve,ha as ee,ia as U,j as ce,l as ge,m as ue,r as Z}from"./chunk.Z56B2JR2.js";import{$ as le,J as se,M as D,W as G,Z as de,aa as pe,va as W}from"./chunk.HLLWKSZB.js";import{b as Q}from"./chunk.AJZBJBMO.js";var f=Q(Xe(),1);var et=300,tt=14,z=50,nt=3,it=2;function qe(e,n,r){let l=e.tryDefinition(n)?.fields?.shape;return(l?.[r]===void 0?void 0:be(l[r]))?.type}var at=(e,n)=>Object.keys(e.tryDefinition(n)?.fields?.shape??{}),ot=e=>e==="date"||e==="datetime",Be=/^(due|dueOn|dueAt|dueDate|deadline|by)$/i,rt=/^(date|on|day|when|at|start|starts|startsOn|startsAt|begins|from|sown|scheduled|scheduledFor|planned|plannedFor)$/i,st=/^(done|finished|complete|completed|closed)$/i;function ae(e,n){let r=e.tryDefinition(n),l=at(e,n),i=l.filter(w=>ot(qe(e,n,w)));if(i.length===0)return;let a=r?.fieldRoles??{},s=w=>a[w]!==void 0&&i.includes(a[w])?a[w]:void 0,u=s("start")??s("when")??i.find(w=>Be.test(w))??i.find(w=>rt.test(w));if(!u)return;let y=s("end")??i.find(w=>w!==u&&/^(end|ends|until|to|finish|finished|harvested|through)$/i.test(w)),v=l.find(w=>st.test(w)&&qe(e,n,w)==="boolean");return{field:u,due:Be.test(u),...y?{end:y}:{},...v?{done:v}:{}}}function ie(e,n){return Math.round((Date.parse(`${n.slice(0,10)}T00:00:00Z`)-Date.parse(`${e.slice(0,10)}T00:00:00Z`))/864e5)}var V=e=>typeof e=="string"&&/^\d{4}-\d{2}-\d{2}/.test(e)?e.slice(0,10):void 0;function _e(e,n,r,l){let i=ne(e,n);if(i&&r.length>0&&r.length<=et)return{shape:"board",field:i.field};let a=ae(e,n);if(a&&!a.due){let s=o=>{let m=V(o[a.field]),g=V(W(o,a.field,l));return m&&g?ie(m,g):0},u=r.map(o=>({from:V(W(o,a.field,l)),to:a.end&&V(o[a.end])?L(V(o[a.end]),s(o)):void 0})).filter(o=>o.from!==void 0).map(o=>({from:o.from,to:o.to&&o.to>o.from?o.to:o.from})),y=`${l.slice(0,7)}-01`,v=L(`${L(y,31).slice(0,7)}-01`,-1),w=u.filter(o=>o.from<=v&&o.to>=y),p=u.map(o=>ie(o.from,o.to)).sort((o,m)=>o-m),c=p[Math.floor(p.length/2)]??0;if(w.length>0&&c<=tt){let o=L(l,-((new Date(`${l}T00:00:00Z`).getUTCDay()+6)%7)),m=L(o,6),g=w.every(N=>N.from>=o&&N.to<=m);return{shape:"calendar",start:a.field,...a.end?{end:a.end}:{},...a.done?{done:a.done}:{},range:g?"week":"month"}}}return{shape:"table"}}function Ge(e,n){let r=ae(e,n);return r?{by:r.field,direction:r.due?"asc":"desc"}:void 0}function je(e,n,r={}){switch(n.shape){case"board":return{lens:"columns",kind:e,column:n.field};case"calendar":return{lens:"calendar",kind:e,start:n.start,...n.end?{end:n.end}:{},...n.done?{done:n.done}:{},range:n.range};case"table":return{lens:"blocks",kind:e,as:"row",...r.group?.by?{group:r.group.by}:{},...r.sort?{sort:{by:r.sort.by,...r.sort.direction==="desc"?{direction:"desc"}:{}}}:{}}}}var dt=60;function ze(e,n,r,l){let i=e.tryDefinition(n),a=r.slice(0,dt),s=new Map;a.forEach(p=>{let c=G(i,p);te(p,i,{glance:!0,said:[c]}).forEach((o,m)=>{if(o.long||o.files||o.app)return;let g=s.get(o.key);g?g.count++:s.set(o.key,{label:o.label,count:1,at:m})})});let u=Math.max(1,Math.ceil(a.length/3)),y=[...s.entries()].filter(([,p])=>p.count>=u).sort((p,c)=>p[1].at-c[1].at).slice(0,nt).map(([p,c])=>({about:"field",key:p,label:c.label})),v=new Map;for(let p of a){let c=new Set;for(let[o,m]of[["out",l.outEdges(p.id)],["in",l.inEdges(p.id)]])for(let g of m){let N=l.getNode(o==="out"?g.to:g.from);if(!N||N.id===p.id)continue;let h=`${g.kind}|${o}`;if(c.has(h))continue;c.add(h);let R=v.get(h);R?R.count++:v.set(h,{edge:g.kind,direction:o,far:N.kind,count:1})}}let w=[...v.entries()].sort((p,c)=>c[1].count-p[1].count).slice(0,it).map(([p,c])=>{let o=he(e,c.direction==="out"?n:c.far,c.edge,c.direction);return{about:"edge",key:p,label:o.charAt(0).toUpperCase()+o.slice(1),edge:c.edge,direction:c.direction}});return[...y,...w]}function He(e,n,r,l){if(r.about==="field"){let s=e.tryDefinition(n.kind);return{text:te(n,s,{excerpt:!0}).find(y=>y.key===r.key)?.value??""}}let a=(r.direction==="out"?l.outEdges(n.id):l.inEdges(n.id)).filter(s=>s.kind===r.edge).map(s=>l.getNode(r.direction==="out"?s.to:s.from)).filter(s=>s!==void 0).map(s=>G(e.tryDefinition(s.kind),s));return a.length===0?{text:""}:a.length===1?{text:a[0]}:{text:`${a[0]} +${a.length-1}`,title:a.join(", ")}}function We(e,n,r=()=>{}){let l=new Map;for(let i of e){let a=i.nodeIds.filter(u=>n.has(u));if(a.length===0&&!(i.subjectId!==void 0&&n.has(i.subjectId)))continue;let s=l.get(i.invariant)??{invariant:i.invariant,label:r(i.invariant)||i.label||i.message,violations:[],records:new Set};s.violations.push(i);for(let u of a)s.records.add(u);i.subjectId!==void 0&&n.has(i.subjectId)&&s.records.add(i.subjectId),l.set(i.invariant,s)}return[...l.values()].sort((i,a)=>a.violations.length-i.violations.length).map(i=>({invariant:i.invariant,label:i.label,violations:i.violations,records:[...i.records]}))}var Ze=6;function Ue(e,n,r,l){let i=ae(e,n);if(!i)return;let a=ne(e,n),s=v=>{if(i.done!==void 0&&v[i.done]===!0)return!0;if(!a)return!1;let w=a.values.indexOf(String(v[a.field]));return w>=0&&a.tiers[w]==="done"},u=0,y=0;for(let v of r){let w=V(W(v,i.field,l));if(!w||s(v))continue;let p=ie(l,w);i.due&&p<0?u++:p>=0&&p<=Ze&&y++}if(!(u===0&&y===0))return{field:i.field,due:i.due,overdue:u,soon:y}}function L(e,n){return new Date(Date.parse(`${e.slice(0,10)}T00:00:00Z`)+n*864e5).toISOString().slice(0,10)}function oe(e,n,r){return n==="overdue"?[{key:e.field,value:`before:${r}`}]:[{key:e.field,value:`after:${L(r,-1)}`},{key:e.field,value:`before:${L(r,Ze+1)}`}]}function Ye(e,n,r,l){let i=new Set,a=new Set;for(let s of e)if(!(s.at<=r))for(let u of s.primitives)u.op==="add-node"&&u.node?.kind===n?i.add(u.node.id):u.op==="patch-node"&&u.id!==void 0&&l(u.id)===n&&a.add(u.id);for(let s of i)a.delete(s);return{added:[...i].filter(s=>l(s)===n).length,changed:[...a].filter(s=>l(s)===n).length}}var t=Q(fe(),1),Je="as",lt=(e,n)=>`graview:kind-seen:${e}:${n}`;function pt(e){try{return localStorage.getItem(e)}catch{return null}}function ct(e,n){try{localStorage.setItem(e,n)}catch{}}var gt=(e,n)=>({...ce(ue(e,!1),n),relation:null});function Zt({kind:e,members:n,flagged:r=[],label:l}){let{store:i,brand:a,principal:s,views:u,view:y}=F(),{go:v}=U(),w=X(),p=i.schema,c=p.tryDefinition(e),o=l??le(p,e),m=i.today()??new Date().toISOString().slice(0,10),g=n,N=(0,f.useId)(),h=(0,f.useMemo)(()=>_e(p,e,g,m),[p,e,g,m]),$=y.within?.[Je]==="table"?{shape:"table"}:h,x=Ce(y),k=$.shape==="table"&&!x.sort?Ge(p,e):void 0,S=k?{...x,sort:k}:x,b=(0,f.useMemo)(()=>new Set(r),[r]),C=(0,f.useMemo)(()=>Ae(g,S,{schema:p,graph:i.graph,flagged:b,today:m}),[g,S,p,i,b,m,w]),q=(0,f.useMemo)(()=>Ne(p,Se(p,e)),[p,e]),M=u.arrangement?.()?.lists?.[e]?.filters,T=E=>v(Re(y,E)),I=(0,f.useMemo)(()=>({name:a?.name??"app",schema:p,...i.policy?{policy:i.policy}:{}}),[a,p,i]),H=JSON.stringify(je(e,$,S)),B=(0,f.useMemo)(()=>{let E=Me(JSON.parse(H),{app:I,sight:Te(I,s)});return Oe(E)?void 0:E},[H,I,s]),P=$.shape!=="table"&&B!==void 0;return(0,t.jsxs)("section",{"aria-labelledby":N,className:"graview-kind-stop","data-testid":"kind-stop","data-graview-kind-stop":e,"data-graview-shape":$.shape,children:[(0,t.jsx)("style",{children:kt}),(0,t.jsx)(ut,{kind:e,plural:o,count:g.length,headingId:N,description:c?.description}),(0,t.jsx)(wt,{kind:e,plural:o,members:g,today:m,arrangement:S,onArrange:T}),g.length>1&&!P?(0,t.jsx)(De,{schema:p,graph:i.graph,kind:e,arrangement:S,onChange:T,offers:q,...M?{filters:M}:{},kept:{shown:C.nodes.length,of:g.length},testId:"kind-arrange",chips:{nodes:g,flagged:b,today:m}}):null,g.length>0?(0,t.jsx)(mt,{derived:h,shape:$,draft:B}):null,(0,t.jsx)("div",{className:"graview-kind-stop-body","data-testid":"kind-stop-body",children:g.length===0?(0,t.jsx)("p",{className:"graview-kind-stop-empty","data-testid":"kind-stop-empty",children:"Nothing here yet."}):P?(0,t.jsx)(bt,{draft:B,nodes:g}):C.nodes.length===0?(0,t.jsxs)("p",{className:"graview-kind-stop-empty","data-testid":"kind-stop-none-kept",children:["None of the ",D(g.length)," ",o.toLowerCase()," ",S.query?`says \u201C${S.query}\u201D`:"is kept by these filters","."," ",(0,t.jsx)("button",{type:"button",className:"graview-kind-stop-link",onClick:()=>T({}),children:"Show them all"})]}):(0,t.jsx)(yt,{kind:e,nodes:C.nodes,groups:C.grouped?C.groups.map(E=>({key:E.key,label:E.label,nodes:E.nodes})):void 0,flagged:b,plural:o,arrangement:S})})]})}function ut({kind:e,plural:n,count:r,headingId:l,description:i}){let{store:a,setSelection:s,setMenuAt:u}=F(),y=(0,f.useMemo)(()=>({about:[Z(e)]}),[e]),{affordances:v}=$e(y),{apply:w,preview:p}=Ee(),c=(0,f.useMemo)(()=>{let x=k=>a.allMutations().find(S=>S.name===k.mutation)?.creates?.includes(e)??!1;return v.find(k=>!k.destructive&&!k.setsAside&&x(k))},[v,a,e]),[o,m]=(0,f.useState)(!1),[g,N]=(0,f.useState)(null),h=(0,f.useRef)(null),R=(0,f.useRef)(null);(0,f.useEffect)(()=>{let x=R.current;!x||x.closest('[data-testid="kind-stop"]')?.contains(document.activeElement)||x.focus({preventScroll:!0})},[e]);let $=(x,k)=>{try{p(x,k),w(x,k),N(null),m(!1),requestAnimationFrame(()=>h.current?.focus())}catch(S){return N(me(a.schema,a.allMutations(),S)),[]}};return(0,t.jsxs)("header",{className:"graview-kind-stop-head",children:[(0,t.jsxs)("div",{className:"graview-kind-stop-title",children:[(0,t.jsx)("h2",{id:l,ref:R,tabIndex:-1,"data-testid":"kind-stop-title",children:n}),(0,t.jsxs)("p",{"data-testid":"kind-stop-count",children:[de(a.schema,e,r),i?` \xB7 ${i}`:""]})]}),(0,t.jsxs)("div",{className:"graview-kind-stop-acts",children:[c?(0,t.jsx)("button",{ref:h,type:"button",className:"graview-kind-stop-primary","data-testid":"kind-stop-primary","data-affordance":c.id,"aria-expanded":c.open.length>0?o:void 0,onClick:()=>{N(null),c.open.length===0?$(c):m(x=>!x)},children:c.label}):null,(0,t.jsx)("button",{type:"button",className:"graview-kind-stop-quiet","data-testid":"kind-stop-acts","aria-haspopup":"menu","aria-label":`What can be done with the ${n.toLowerCase()}`,onClick:x=>{let k=x.currentTarget.getBoundingClientRect();s([Z(e)]),u({x:Math.round(k.left),y:Math.round(k.bottom+4),on:Z(e)})},children:"Acts\u2026"})]}),o&&c?(0,t.jsx)("div",{className:"graview-kind-stop-ask","data-testid":"kind-stop-ask","aria-label":c.label,role:"group",children:(0,t.jsx)(ke,{affordance:c,onApply:x=>$(c,x),onCancel:()=>{m(!1),h.current?.focus()}})}):null,g?(0,t.jsx)("p",{role:"alert",className:"graview-kind-stop-failed","data-testid":"kind-stop-failed",children:g}):null]})}var ft=Y.part((e,n)=>(0,t.jsx)(e.ProblemRows,{...n}),{what:"The problems",as:"li"});function wt({kind:e,plural:n,members:r,today:l,arrangement:i,onArrange:a}){let{store:s,brand:u,setSelection:y}=F(),v=s.schema,w=ee(),p=(0,f.useMemo)(()=>new Set(r.map(b=>b.id)),[r]),c=(0,f.useMemo)(()=>We(w,p,b=>s.allInvariants().find(C=>C.name===b)?.label),[w,p,s]),o=(0,f.useMemo)(()=>Ue(v,e,r,l),[v,e,r,l]),m=lt(xe(u,v),e),[g]=(0,f.useState)(()=>pt(m));(0,f.useEffect)(()=>()=>ct(m,new Date().toISOString()),[m]);let N=X(),h=(0,f.useMemo)(()=>g?Ye(s.log.all(),e,g,b=>s.graph.getNode(b)?.kind):null,[g,s,e,N]),[R,$]=(0,f.useState)(null),x=b=>a({...i,filter:[...(i.filter??[]).filter(C=>!b?.some(q=>q.key===C.key)),...b??[]]}),k=c.reduce((b,C)=>b+C.violations.length,0),S=[];if(o&&(o.overdue>0||o.soon>0)){let b=o.field;S.push((0,t.jsxs)("li",{"data-testid":"kind-stop-dates",children:[o.overdue>0?(0,t.jsxs)("button",{type:"button",className:"graview-kind-stop-fact","data-tone":"warn",onClick:()=>x(oe(o,"overdue",l)),"aria-label":`${D(o.overdue)} overdue \u2014 show only these`,children:[D(o.overdue)," overdue"]}):null,o.soon>0?(0,t.jsxs)("button",{type:"button",className:"graview-kind-stop-fact",onClick:()=>x(oe(o,"soon",l)),"aria-label":`${D(o.soon)} in the next 7 days \u2014 show only these`,children:[D(o.soon)," ",o.due?"due":""," in the next 7 days"]}):null,(0,t.jsxs)("span",{className:"graview-kind-stop-quiet-text",children:[" by ",pe(v.tryDefinition(e),b).toLowerCase()]})]},"dates"))}if(c.length>0&&S.push((0,t.jsxs)("li",{"data-testid":"kind-stop-problems","data-graview-problems":k,children:[(0,t.jsxs)("span",{className:"graview-kind-stop-warn",children:[(0,t.jsx)("span",{"aria-hidden":"true",children:"\u26A0 "}),k===1?"1 problem":`${D(k)} problems`]}),(0,t.jsxs)("span",{className:"graview-kind-stop-quiet-text",children:[" in ",n.toLowerCase(),":"]}),(0,t.jsx)("ul",{className:"graview-kind-stop-rules",children:c.map(b=>(0,t.jsx)(vt,{group:b,open:R===b.invariant,onToggle:()=>$(C=>C===b.invariant?null:b.invariant),onPick:C=>y([C])},b.invariant))}),(0,t.jsxs)("button",{type:"button",className:"graview-kind-stop-link","data-testid":"kind-stop-only-problems",onClick:()=>x([{key:"is",value:"flagged"}]),children:["Show only the ",n.toLowerCase()," with a problem"]})]},"problems")),h&&(h.added>0||h.changed>0)){let b=[h.added>0?`${D(h.added)} added`:"",h.changed>0?`${D(h.changed)} changed`:""].filter(Boolean);S.push((0,t.jsxs)("li",{"data-testid":"kind-stop-since",children:[(0,t.jsxs)("span",{className:"graview-kind-stop-quiet-text",children:["Since you last looked (",se(g.slice(0,10)),"):"]})," ",b.join(", ")]},"since"))}return S.length===0?null:(0,t.jsx)("ul",{className:"graview-kind-stop-going-on","aria-label":`What is going on in the ${n.toLowerCase()}`,"data-testid":"kind-stop-going-on",children:S})}function vt({group:e,open:n,onToggle:r,onPick:l}){let i=(0,f.useId)();return(0,t.jsxs)("li",{"data-graview-rule":e.invariant,children:[(0,t.jsxs)("button",{type:"button",className:"graview-kind-stop-rule","aria-expanded":n,"aria-controls":i,onClick:r,onPointerEnter:Y.prefetch,onFocus:Y.prefetch,children:[(0,t.jsx)("span",{"aria-hidden":"true",className:"graview-kind-stop-chevron","data-open":n||void 0,children:"\u203A"}),e.label," ",(0,t.jsxs)("span",{className:"graview-kind-stop-quiet-text",children:["\xB7 ",D(e.violations.length)]})]}),n?(0,t.jsx)("ol",{id:i,className:"graview-kind-stop-problem-rows","data-testid":"kind-stop-problem-rows",children:(0,t.jsx)(f.Suspense,{fallback:null,children:(0,t.jsx)(ft,{violations:e.violations,pick:a=>{let s=a.subjectId??e.records[0]??a.nodeIds[0];s!==void 0&&l(s)}})})}):null]})}var ht={board:"Board",calendar:"Calendar",table:"Table"};function mt({derived:e,shape:n,draft:r}){let{view:l}=F(),{go:i}=U(),{keep:a}=Fe(Ve()),[s,u]=(0,f.useState)(!1),y=e.shape==="table"?[]:[e.shape,"table"];return(0,t.jsxs)("div",{className:"graview-kind-stop-shape","data-testid":"kind-stop-shape",children:[y.length>0?(0,t.jsx)("span",{role:"group","aria-label":"Show as",className:"graview-kind-stop-switch",children:y.map(v=>(0,t.jsx)("button",{type:"button","aria-pressed":n.shape===v,"data-testid":`kind-stop-as-${v}`,onClick:()=>i(ge(l,Je,v===e.shape?null:v)),children:ht[v]},v))}):null,(0,t.jsx)("span",{className:"graview-kind-stop-quiet-text","data-testid":"kind-stop-derived",children:r?`${r.said.replace(/\.$/,"")}, derived from the declaration`:"Derived from the declaration"}),r?(0,t.jsx)("button",{type:"button",className:"graview-kind-stop-link","data-testid":"kind-stop-keep",disabled:s,title:`Keep \u201C${r.title}\u201D as a lens: a place of its own`,onClick:()=>{u(!0),a(r).finally(()=>u(!1))},children:"Keep as a lens"}):null]})}function bt({draft:e,nodes:n}){let r=Ke(e.drawn);return(0,t.jsx)("div",{className:"graview-kind-stop-lens","data-graview-draft":e.lens.name,children:(0,t.jsx)(we,{mode:"scene",children:(0,t.jsx)(ye,{kind:e.kind,view:e.title,children:(0,t.jsx)(r,{nodes:n,label:e.title,fidelity:"full",cardinality:"many",mode:"fullscreen",selected:!1})})})})}function yt({kind:e,nodes:n,groups:r,flagged:l,plural:i,arrangement:a}){let{store:s,views:u,view:y,selection:v,setSelection:w,setMenuAt:p,principal:c}=F(),{go:o}=U(),m=s.schema,g=s.graph,N=(0,f.useMemo)(()=>(r?r.flatMap(d=>d.nodes):n).map(d=>d.id),[n,r]),h=Pe(N),R=(0,f.useMemo)(()=>s.permittedMutations(c).some(d=>{let A=d.subject?.kinds;return A!==void 0&&(A==="*"||A.includes(e))}),[s,c,e]),$=(0,f.useRef)(null),x=d=>{h.choose(d),requestAnimationFrame(()=>{let A=h.list.current;((d[0]===void 0?null:A?.querySelector(`[data-graview-choose-box="${CSS.escape(d[0])}"]`))??A)?.focus({preventScroll:!0})})},k=h.chosen.length,S=u.lookup(e,{cardinality:"one",fidelity:"glyph"}),b=S!==void 0&&!ve(S)?S:void 0,C=d=>v.includes(d),q=ee(),M=(0,f.useMemo)(()=>ze(m,e,n,g),[m,e,n,g]),[T,I]=(0,f.useState)(z);(0,f.useEffect)(()=>I(z),[a.query,a.filter?.length,a.sort?.by,a.group?.by]);let H=m.tryDefinition(e),B=d=>q.filter(A=>A.nodeIds.includes(d)||A.subjectId===d).map(A=>A.message),P=a.sort?.by,E=`${i}${a.sort?`, in order of ${M.find(d=>d.key===P)?.label.toLowerCase()??P}`:""}`,J=T,Qe=d=>{let A=G(H,d),K=l.has(d.id)?B(d.id):[];return(0,t.jsxs)("tr",{"data-graview-pick":d.id,tabIndex:-1,"data-graview-record":d.id,"data-flagged":K.length>0||void 0,...R?{"data-graview-choose":d.id}:{},children:[R?(0,t.jsx)("td",{className:"graview-choose-at",children:(0,t.jsx)("input",{...h.boxProps(d.id,A),onPointerEnter:j,onFocus:j})}):null,(0,t.jsxs)("th",{scope:"row",className:"graview-kind-stop-name",children:[b?(0,t.jsx)("div",{"data-graview-pick":d.id,className:"graview-kind-stop-own-row",children:(0,t.jsx)(b,{node:d,cardinality:"one",fidelity:"glyph",mode:"scene",selected:C(d.id),...K.length>0?{flagged:[d.id]}:{}})}):(0,t.jsx)("button",{type:"button","data-testid":"kind-stop-row-go",title:`Go to ${A}`,onClick:()=>o(gt(y,d.id)),children:A}),K.length>0?(0,t.jsxs)("span",{className:"graview-kind-stop-flag",title:K.join(" \xB7 "),children:[(0,t.jsx)("span",{"aria-hidden":"true",children:"\u26A0"}),(0,t.jsx)("span",{className:"graview-kind-stop-hidden",children:`Problem: ${K.join(". ")}`})]}):null]}),M.map(_=>{let O=He(m,d,_,g);return(0,t.jsx)("td",{"data-label":_.label,"data-short":O.text.length>0&&O.text.length<=14||void 0,"data-empty":O.text?void 0:"",...O.title?{title:O.title}:{},children:O.text?(0,t.jsx)("span",{children:O.text}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("b",{"aria-hidden":"true",children:"\u2014"}),(0,t.jsx)("i",{className:"graview-kind-stop-hidden",children:"none"})]})},_.key)}),(0,t.jsx)("td",{className:"graview-kind-stop-row-acts",children:(0,t.jsx)("button",{type:"button","data-testid":"kind-stop-row-acts","aria-haspopup":"menu","aria-label":`What can be done with ${A}`,onClick:_=>{let O=_.currentTarget.getBoundingClientRect();w([d.id]),p({x:Math.round(O.left),y:Math.round(O.bottom+4),on:d.id})},children:(0,t.jsx)("span",{"aria-hidden":"true",children:"\u22EF"})})})]},d.id)},re=d=>{let A=d.slice(0,Math.max(0,J));return J-=A.length,A.map(Qe)};return(0,t.jsxs)("div",{className:"graview-kind-stop-table-at",...R?{...h.listProps,ref:d=>{$.current=d,h.list.current=d},tabIndex:-1,role:"group","aria-label":k>0?`${i}, ${k} chosen`:i,"data-graview-choosable":""}:{},children:[R?(0,t.jsx)("style",{children:Le}):null,(0,t.jsxs)("table",{className:"graview-kind-stop-table","data-testid":"kind-stop-table",children:[(0,t.jsx)("caption",{className:"graview-kind-stop-hidden",children:E}),(0,t.jsx)("thead",{children:(0,t.jsxs)("tr",{children:[R?(0,t.jsx)("td",{className:"graview-choose-at graview-choose-all",children:(0,t.jsx)("input",{type:"checkbox",className:"graview-choose-box","data-testid":"kind-stop-choose-all","aria-label":`Choose all ${D(n.length)} ${i.toLowerCase()}`,checked:k>0&&k===n.length,ref:d=>{d&&(d.indeterminate=k>0&&k<n.length)},onPointerEnter:j,onFocus:j,onChange:()=>k===n.length?h.clear():h.choose(N)})}):null,(0,t.jsx)("th",{scope:"col","aria-sort":P==="label"?a.sort?.direction==="desc"?"descending":"ascending":void 0,children:"Name"}),M.map(d=>(0,t.jsx)("th",{scope:"col","aria-sort":d.about==="field"&&d.key===P?a.sort?.direction==="desc"?"descending":"ascending":void 0,children:d.label},d.key)),(0,t.jsx)("th",{scope:"col",children:(0,t.jsx)("span",{className:"graview-kind-stop-hidden",children:"Acts"})})]})}),r?r.map(d=>J<=0?null:(0,t.jsxs)("tbody",{"data-graview-group":d.key,children:[(0,t.jsx)("tr",{className:"graview-kind-stop-group",children:(0,t.jsxs)("th",{scope:"rowgroup",colSpan:M.length+(R?3:2),children:[d.label," ",(0,t.jsxs)("span",{className:"graview-kind-stop-quiet-text",children:["\xB7 ",D(d.nodes.length)]})]})}),re(d.nodes)]},d.key||"-")):(0,t.jsx)("tbody",{children:re(n)})]}),R?(0,t.jsx)(Ie,{store:s,chosen:h.chosen,principal:c,anchor:()=>$.current?.closest('[data-testid="kind-stop"]')??null,of:N.length,onChooseAll:()=>h.choose(N),onClear:h.clear,onActed:x}):null,n.length>T?(0,t.jsxs)("p",{className:"graview-kind-stop-more",children:[(0,t.jsxs)("span",{className:"graview-kind-stop-quiet-text","data-testid":"kind-stop-shown",children:[D(T)," of ",D(n.length)," shown"]})," ",(0,t.jsxs)("button",{type:"button",className:"graview-kind-stop-link","data-testid":"kind-stop-more",onClick:()=>I(d=>d+z),children:["Show ",D(Math.min(z,n.length-T))," more"]})]}):null]})}var kt=`
2
- .graview-kind-stop{container-type:inline-size;box-sizing:border-box;height:100%;min-height:0;display:flex;flex-direction:column;gap:10px;padding:16px 18px 12px;border:1px solid var(--graview-edge);border-radius:var(--graview-radius,12px);background:var(--graview-panel);color:var(--graview-ink);box-shadow:var(--graview-lift-low);overflow:auto;overscroll-behavior:contain}
3
- [data-graview-map-panel] .graview-kind-stop{height:auto;padding:4px 6px 12px;border:0;box-shadow:none;background:none;overflow:visible}
4
- .graview-kind-stop :focus-visible{outline:2px solid var(--graview-accent);outline-offset:2px}
5
- .graview-kind-stop button{font:inherit;cursor:pointer}
6
- .graview-kind-stop :is(.graview-kind-stop-link,.graview-kind-stop-rule,.graview-kind-stop-name button,.graview-kind-stop-row-acts button,.graview-kind-stop-fact,.graview-kind-stop-switch button){box-shadow:none}
7
- .graview-kind-stop-head{display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px 16px}
8
- .graview-kind-stop-title{flex:1 1 16rem;min-width:0}
9
- .graview-kind-stop-title h2{margin:0;outline-offset:2px;font-size:var(--graview-text-heading);line-height:1.3;overflow-wrap:anywhere}
10
- .graview-kind-stop-title p{margin:2px 0 0;font-size:.875rem;color:var(--graview-ink-muted);overflow-wrap:anywhere}
11
- .graview-kind-stop-acts{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
12
- .graview-kind-stop-primary,.graview-kind-stop-quiet{min-height:32px;padding:0 14px;border-radius:8px;font-size:.875rem}
13
- .graview-kind-stop-primary{border:1px solid var(--graview-accent);background:var(--graview-accent);color:var(--graview-accent-ink);font-weight:600}
14
- .graview-kind-stop-quiet{border:1px solid var(--graview-edge);background:transparent;color:var(--graview-ink)}
15
- .graview-kind-stop-ask{flex:1 1 100%;min-width:0;padding:10px 12px;border:1px solid var(--graview-edge);border-radius:10px}
16
- .graview-kind-stop-failed{flex:1 1 100%;margin:0;font-size:var(--graview-text-small);color:var(--graview-warn)}
17
- .graview-kind-stop-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
18
- .graview-kind-stop-going-on{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:.875rem}
19
- .graview-kind-stop-going-on>li{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;min-width:0}
20
- .graview-kind-stop-fact{min-height:28px;padding:0 10px;border:1px solid var(--graview-edge);border-radius:999px;background:transparent;color:var(--graview-ink)}
21
- .graview-kind-stop-fact[data-tone=warn],.graview-kind-stop-warn{color:var(--graview-warn);font-weight:600}
22
- .graview-kind-stop-quiet-text{color:var(--graview-ink-muted)}
23
- .graview-kind-stop-rules{list-style:none;margin:0;padding:0;flex:1 1 100%;display:grid;gap:2px}
24
- .graview-kind-stop-rule{display:inline-flex;align-items:center;gap:6px;min-height:28px;max-width:100%;padding:0 6px;border:1px solid transparent;border-radius:7px;background:none;color:var(--graview-ink);text-align:left;overflow-wrap:anywhere}
25
- .graview-kind-stop-rule:hover{border-color:var(--graview-edge)}
26
- .graview-kind-stop-chevron{display:inline-block;width:.8em}
27
- .graview-kind-stop-chevron[data-open]{transform:rotate(90deg)}
28
- .graview-kind-stop-problem-rows{list-style:none;margin:2px 0 6px 18px;padding:0;max-width:44rem}
29
- .graview-kind-stop-link{min-height:28px;padding:0 4px;border:0;background:none;color:var(--graview-accent);text-decoration:underline;text-underline-offset:2px}
30
- .graview-kind-stop-link:disabled{opacity:.6;cursor:default}
31
- .graview-kind-stop-shape{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:var(--graview-text-small)}
32
- .graview-kind-stop-switch{display:inline-flex;border:1px solid var(--graview-edge);border-radius:8px;overflow:hidden}
33
- .graview-kind-stop-switch button{min-height:28px;padding:0 12px;border:0;background:transparent;color:var(--graview-ink-muted)}
34
- .graview-kind-stop-switch button+button{border-left:1px solid var(--graview-edge)}
35
- .graview-kind-stop-switch button[aria-pressed=true]{background:color-mix(in srgb,var(--graview-accent) 16%,transparent);color:var(--graview-ink);font-weight:600}
36
- .graview-kind-stop-body{flex:1 0 auto;min-width:0}
37
- .graview-kind-stop-empty{margin:24px 0;color:var(--graview-ink-muted)}
38
- .graview-kind-stop-lens{min-width:0}
39
-
40
- .graview-kind-stop-table-at{min-width:0}
41
- .graview-kind-stop-table{width:100%;border-collapse:collapse;font-size:.875rem}
42
- .graview-kind-stop-table th,.graview-kind-stop-table td{padding:7px 8px;text-align:left;vertical-align:top;border-top:1px solid var(--graview-edge);overflow-wrap:break-word}
43
- .graview-kind-stop-table td{color:var(--graview-ink)}
44
- .graview-kind-stop-table td>span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
45
- .graview-kind-stop-table td[data-short]{white-space:nowrap;font-variant-numeric:tabular-nums}
46
- .graview-kind-stop-table thead th{border-top:0;font-size:var(--graview-text-small);font-weight:600;letter-spacing:.04em;color:var(--graview-ink-muted)}
47
- .graview-kind-stop-name{font-weight:500;min-width:8rem;max-width:22rem}
48
- .graview-kind-stop-name button{display:inline-block;min-width:24px;min-height:24px;padding:0;border:0;background:none;color:var(--graview-ink);font-weight:500;text-align:left;text-decoration:underline;text-decoration-color:var(--graview-edge);text-underline-offset:3px}
49
- .graview-kind-stop-name button:hover{text-decoration-color:currentColor}
50
- .graview-kind-stop-own-row{display:inline-block;max-width:100%;cursor:pointer}
51
- .graview-kind-stop-flag{margin-left:6px;color:var(--graview-warn)}
52
- .graview-kind-stop-group th{padding-top:12px;font-weight:600;color:var(--graview-ink)}
53
- .graview-kind-stop-row-acts{width:1%;white-space:nowrap;text-align:right}
54
- .graview-kind-stop-row-acts button{min-width:32px;min-height:28px;border:1px solid var(--graview-edge-bright,var(--graview-edge));border-radius:7px;background:none;color:var(--graview-ink);font-size:1.125rem;font-weight:700;line-height:1}
55
- .graview-kind-stop-row-acts button:hover{background:color-mix(in srgb,var(--graview-ink) 8%,transparent)}
56
- .graview-kind-stop-table td[data-empty] b{font-weight:400;color:var(--graview-ink-faint)}
57
- .graview-kind-stop-table tr[data-graview-pick]{cursor:default}
58
- .graview-kind-stop-more{margin:10px 0 0;font-size:.875rem}
59
- .graview-kind-stop-table-at[data-graview-choosable]{outline:none}
60
- [data-graview-choosable]:hover .graview-choose-all .graview-choose-box{opacity:1}
61
- .graview-kind-stop-table .graview-choose-at{width:1%;padding-right:0;vertical-align:middle}
62
- @container (max-width: 559px){
63
- .graview-kind-stop{padding:12px}
64
- .graview-kind-stop-acts{flex:1 1 100%}
65
- .graview-kind-stop-primary{flex:1 1 auto}
66
- .graview-kind-stop-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
67
- .graview-kind-stop-table,.graview-kind-stop-table tbody,.graview-kind-stop-table tr{display:block}
68
- .graview-kind-stop-table tr{position:relative;padding:8px 40px 8px 0;border-top:1px solid var(--graview-edge)}
69
- .graview-kind-stop-table th,.graview-kind-stop-table td{display:block;padding:1px 0;border:0}
70
- .graview-kind-stop-table td>span{display:inline}
71
- .graview-kind-stop-table td[data-short]{white-space:normal}
72
- .graview-kind-stop-table td[data-label]::before{content:attr(data-label) " \xB7 ";color:var(--graview-ink-muted)}
73
- .graview-kind-stop-row-acts{position:absolute;top:6px;right:0;width:auto}
74
- .graview-kind-stop-table [data-graview-choose]{padding-left:34px}
75
- .graview-kind-stop-table td.graview-choose-at{position:absolute;left:0;top:8px;width:auto;padding:0}
76
- .graview-kind-stop-table thead .graview-choose-at{position:static}
77
- }
78
- @media (pointer: coarse){
79
- .graview-kind-stop-table-at:not([data-graview-choosing]) .graview-choose-at{display:none}
80
- .graview-kind-stop-table-at:not([data-graview-choosing]) [data-graview-choose]{padding-left:0}
81
- }
82
- @media (pointer: coarse){
83
- .graview-kind-stop-primary,.graview-kind-stop-quiet,.graview-kind-stop-fact,.graview-kind-stop-rule,.graview-kind-stop-link,.graview-kind-stop-switch button,.graview-kind-stop-row-acts button{min-height:44px}
84
- .graview-kind-stop-row-acts button{min-width:44px}
85
- .graview-kind-stop-name button{min-height:44px}
86
- }
87
- @media (prefers-reduced-motion: reduce){.graview-kind-stop *{transition:none!important;animation:none!important}}
88
- `;export{Zt as KindStop};
@@ -1 +0,0 @@
1
- import{d as x}from"./chunk.O42YET3W.js";import"./chunk.Z5V23DQN.js";import"./chunk.OHE5AMHH.js";import{o as v}from"./chunk.OYJSFO3A.js";import"./chunk.HV6I74DF.js";import"./chunk.WVUJXDXZ.js";import"./chunk.DAA6XWLF.js";import"./chunk.7DNFXJH3.js";import"./chunk.7PRFYYVM.js";import"./chunk.2NCTM5K2.js";import"./chunk.JU2ZVKMT.js";import"./chunk.HGAMNIST.js";import"./chunk.OQDETV4X.js";import"./chunk.ZS4DJ76C.js";import"./chunk.5R66YTET.js";import"./chunk.G4WQGTZR.js";import"./chunk.HFKMHLJ3.js";import"./chunk.GS4T26WW.js";import{F as h,M as A,V as k}from"./chunk.Z56B2JR2.js";import{Gb as m,da as c}from"./chunk.HLLWKSZB.js";import{b as u}from"./chunk.AJZBJBMO.js";var f=u(h(),1);var R=u(h(),1),S=(0,R.createContext)(void 0);var i=u(A(),1),L=new WeakMap,w=new WeakMap,P=(e,n)=>`${n.kind}\0${n.id??""}\0${e}`;function W(e,n,r){let a=P(n,r),o=L.get(e);o||L.set(e,o=new Map);let t=o.get(a);return t||(t=Promise.resolve().then(()=>e(n,r)).then(s=>b(s)?s:null,()=>null).then(s=>{let p=w.get(e);return p||w.set(e,p=new Map),p.set(a,s),s}),o.set(a,t)),t}function b(e){if(e===null)return!0;if(typeof e!="object"||e===void 0)return!1;if(e.denied===!0)return!0;let n=e;return typeof n.name=="string"&&n.name.trim()!==""&&typeof n.href=="string"}function y(e){if(/^https?:\/\//i.test(e))try{return new URL(e).href}catch{return}}var C=e=>y(e)??(c(e)?e:void 0),I=e=>y(e)??(e.startsWith("/")&&c(e)?e:void 0),E={kind:"human"},g={color:"var(--graview-ink-muted)"};function N({icon:e}){if(!e)return null;let n=I(e);if(n)return(0,i.jsx)("img",{src:n,alt:"",width:20,height:20,"data-graview-app-icon":"",style:{width:20,height:20,borderRadius:5,objectFit:"cover",flex:"0 0 auto"}});let r=[...e.trim()].slice(0,2).join("");return r?(0,i.jsx)("span",{"aria-hidden":"true","data-graview-app-icon":"",style:{flex:"0 0 auto",lineHeight:"20px"},children:r}):null}function M(e){let n=k(),r=(0,f.useContext)(S)??n?.resolveApp,a=n?.principal??E,o=()=>r?w.get(r)?.get(P(e,a))??"asking":null,[t,s]=(0,f.useState)(o);return(0,f.useEffect)(()=>{let p=o();if(s(p),p!=="asking"||!r)return;let l=!0;return W(r,e,a).then(d=>l&&s(d)),()=>{l=!1}},[r,e,a.kind,a.id]),t}function V({address:e,as:n="chip",nodeId:r,field:a,style:o}){let t=M(e),s={position:"relative",zIndex:m.raised,overflowWrap:"anywhere",minWidth:0,maxWidth:"100%",...o},p;if(t==="asking")p=(0,i.jsx)("span",{"data-graview-app-link":"","data-graview-app-state":"asking","aria-busy":"true",style:{...g,...s},children:"Linked app"});else if(t&&"denied"in t)p=(0,i.jsx)("span",{"data-graview-app-link":"","data-graview-app-state":"denied",style:{...g,fontStyle:"italic",...s},children:"linked app (no access)"});else if(t){let l=C(t.href),d=n==="record"?t.headline?.trim():void 0;p=(0,i.jsxs)(l?"a":"span",{"data-graview-app-link":"","data-graview-app-state":"found",...l?{href:l}:{},...!d&&t.headline?{title:t.headline}:{},style:{display:"inline-flex",alignItems:d?"flex-start":"center",minHeight:24,gap:8,color:"inherit",textUnderlineOffset:3,...s},children:[(0,i.jsx)(N,{icon:t.icon}),(0,i.jsxs)("span",{style:{display:"grid",minWidth:0},children:[(0,i.jsx)("span",{"data-graview-app-name":"",style:{fontWeight:600},children:t.name}),d?(0,i.jsx)("span",{"data-graview-app-headline":"",style:{...g,fontSize:"0.8125em",fontWeight:400},children:d}):null]})]})}else{let l=y(e);p=l?(0,i.jsx)("a",{"data-graview-app-link":"","data-graview-app-state":"plain",href:l,rel:"noopener noreferrer",target:"_blank",style:{color:"var(--graview-accent)",display:"inline-flex",alignItems:"center",minHeight:24,...s},children:e}):(0,i.jsx)("span",{"data-graview-app-link":"","data-graview-app-state":"plain",style:s,children:e})}return r&&a?(0,i.jsx)(H,{nodeId:r,field:a,address:e,drawn:p}):p}function H({nodeId:e,field:n,address:r,drawn:a}){return v(e).fields.some(t=>t.field===n)?(0,i.jsxs)("span",{style:{display:"inline-flex",flexWrap:"wrap",alignItems:"baseline",gap:"4px 12px",maxWidth:"100%",minWidth:0},children:[a,(0,i.jsx)("span",{style:{fontSize:"0.8125rem"},children:(0,i.jsx)(x,{nodeId:e,field:n,value:"Change",stored:r})})]}):a}var Y=e=>(0,i.jsx)(V,{...e});export{V as AppLink,Y as drawAppLink};
@@ -1 +0,0 @@
1
- import{a as $e,b as Ae,c as Fe,d as de,e as S,f as De,h as Re}from"./chunk.UTHHX2TJ.js";import{e as Te,f as Ke,g as Pe}from"./chunk.7DNFXJH3.js";import{a as ne,b as te,c as L,d as Me,e as W,g as X,h as Ce}from"./chunk.2NCTM5K2.js";import{b as xe,g as h,h as Ee,i as ce}from"./chunk.JU2ZVKMT.js";import{b as ee,c as Y,e as ke,f as we,g as G,h as k,k as _,l as ve,m as P,n as je,o as N,p as R,r as w,s as Se,t as M,u as O,v as U,w as K,x as t,y as V,z as Oe}from"./chunk.HLLWKSZB.js";function le(e){let n=/^(edit|remove|archive|unarchive|merge|skip|detach|split)-(.+)$/.exec(e);return n?{act:n[1],kind:n[2]}:void 0}var pe="graview-document",ue=1,me=256*1024,fe=64*1024,_e=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/,ge=/^[a-z][A-Za-z0-9]*$/,nn=new Set(["id","kind"]),tn=e=>e in Object.prototype,Ne=V(e=>!tn(e),"every object already has this name \u2014 choose another"),Ie=(e,n)=>[...e===void 0?[]:[we(e)],...n===void 0?[]:[ke(n)]],$=(e,n)=>k().check(...Ie(e,n)),x=(e,n,s)=>R(e).check(...Ie(n,s)),D=e=>k().check(G(_e,`${e} names are lower-case words joined by hyphens, like "booked-vendor"`)),on=/^(?:[a-z][a-z0-9]*(?:-[a-z0-9]+)*|[a-z][A-Za-z0-9]*)$/,B=k().check(G(on,'relation names are one camelCase word, like "tendedBy"'),Ne),C=k().check(G(ge,'field names are one word or camelCase, like "dueDate" \u2014 rules say them bare'),V(e=>!nn.has(e),'a field cannot be called "id" or "kind" \u2014 the framework keeps those; try "type" or "category"'),Ne),I=$(1,500),J=$(1,2e3),se=$(1,300),sn=["string","text","number","integer","boolean","date","datetime","enum","list","url","email","image","file","app-link","phone","place","duration"],qe=w({type:U(sn),required:t(P()),description:t(I),label:t($(1,60)),options:t(x($(1,80),1,100)),of:t(U(["string","number","date","image","file"])),default:t(N()),unit:t($(void 0,12)),format:t(U(["money","percent","duration","markdown"])),min:t(_()),max:t(_()),step:t(_()),renamedFrom:t(k().check(G(ge))),repeats:t(P())}).check(Oe((e,n)=>{e.type==="enum"&&!e.options&&n.addIssue({code:"custom",message:'an enum field lists its "options"',path:["options"]}),e.type!=="enum"&&e.options&&n.addIssue({code:"custom",message:'"options" belongs only on an enum field',path:["options"]}),e.type!=="list"&&e.of&&n.addIssue({code:"custom",message:'"of" belongs only on a list field',path:["of"]}),e.repeats&&e.type!=="date"&&e.type!=="datetime"&&n.addIssue({code:"custom",message:'"repeats" belongs only on a date or datetime field',path:["repeats"]})})),rn=w({to:M([x(D("kind"),1),K("*")]),cardinality:t(U(["one","many"])),description:t(I),inverse:t($(1,80)),appendOnly:t(P()),renamedFrom:t(k())}),Ve=M([J,w({expr:J,label:t($(1,60)),description:t(I)})]),an=w({noun:t($(1,40)),plural:t($(1,40)),description:t(I),fields:O(C,qe).check(V(e=>Object.keys(e).length>0,"a kind has at least one field")),label:t(se),describe:t(se),lifecycle:t(w({field:C,retired:x(M([k(),_(),P()]),1)})),figure:t($(void 0,2e4)),glance:t(x(C,1,20)),page:t(w({fields:t(x(C,1,40)),groups:t(x(w({title:$(1,60),fields:x(C,1,40)}),1,12))})),edges:t(O(B,rn)),computed:t(O(k(),Ve).check(V(e=>Object.keys(e).length<=20,"a kind works out at most 20 computed fields"))),fieldRoles:t(O(k(),k())),renamedFrom:t(k().check(G(_e))),people:t(P()),archives:t(K(!1))}),H=M([k(),_(),P(),je(),R(N()),w({expr:J})]),Z=k().check(G(/^\$[A-Za-z][A-Za-z0-9]*$/,'a reference is "$" and a name, like "$subject" or "$new"')),cn=M([w({create:D("kind"),as:t(k().check(G(ge))),set:t(O(C,H))}),w({set:O(C,H),target:t(Z)}),w({connect:B,from:Z,to:Z}),w({sever:B,from:Z,to:Z}),w({remove:Z})]),dn=w({title:t($(1,80)),description:t(I),fromTheOtherEnd:t($(1,80)),on:t(M([D("kind"),x(D("kind"),1)])),creates:t(D("kind")),sets:t(O(C,H)),writes:t(x(C,1)),connects:t(B),severs:t(B),setsOther:t(O(C,H)),replaces:t(M([K(!0),x(B,1,10)])),removes:t(K(!0)),args:t(O(C,qe)),effects:t(x(cn,1,20)),allowedWhen:t(J),refusal:t(se),destructive:t(P())}),ln=w({act:D("act"),label:t($(1,80)),args:t(O(k(),H))}),fn=w({title:t($(1,120)),description:t(I),over:M([K("graph"),D("kind")]),when:t(J),require:J,says:t(se),repairs:t(x(ln,void 0,10))}),pn=w({roles:M([x(D("role"),1),K("*")]),mutations:M([x(D("act"),1),K("*")]),kinds:t(M([R(D("kind")),K("*")])),describe:t(I),self:t(P()),ownEnd:t(P())}),Ge=t(x(D("field"),1)),un=w({roles:M([x(D("role"),1),K("*")]),kinds:x(D("kind"),1),own:t(P()),via:t(B),fields:Ge,hide:Ge}),mn=w({grants:R(pn),sees:t(R(un))}),gn=w({accent:t(k().check(G(/^#[0-9a-fA-F]{6}$/,'an accent is a color like "#c2577a"'))),name:t($(1,60)),currency:t(k().check(G(/^[A-Z]{3}$/,'a currency is its three-letter code, like "USD" or "EUR"'))),locale:t($(2,35)),logo:t(M([$(1,fe),w({src:$(1,fe),alt:t($(1,120))})])),favicon:t($(1,fe)),typography:t(w({display:t($(1,200)),body:t($(1,200)),mono:t($(1,200))})),shape:t(w({radius:t(_().check(Y(0),ee(32))),density:t(_().check(Y(.75),ee(1.5)))})),accents:t(O(k(),_().check(Y(0),ee(360)))),scheme:t(U(["light","dark","auto"]))}),oe=O(k(),N()),hn=w({card:t(R(N())),row:t(R(N())),page:t(R(N()))}),zn=Se({order:t(R(k())),hide:t(R(k())),first:t(k()),primary:t(x($(1,80),void 0,40)),scene:t($(1,40)),pages:t($(1,40)),lists:t(O(k(),w({filters:t(x($(1,120),void 0,40))})))}),Be=w({$schema:t(k()),format:K(pe),formatVersion:K(ue),name:$(1,80),description:t(I),version:t(_().check(ve(),Y(1))),kinds:O(D("kind"),an).check(V(e=>Object.keys(e).length>0,"a document declares at least one kind"),V(e=>Object.keys(e).length<=40,"a document declares at most 40 kinds")),computed:t(O(k(),Ve)),acts:t(O(D("act"),dn)),rules:t(O(D("rule"),fn)),roles:t(R(D("role"))),policy:t(mn),modules:t(oe),lenses:t(R(oe)),pages:t(zn),views:t(O(k(),M([hn,R(N())]))),brand:t(gn),settings:t(R(oe)),migrations:t(R(oe))});var yn={};function Ue(e,n=yn,s=ue){let{document:r,respelled:a}=$e(e),u=a.length>0?{respelled:a}:{};if(!r||typeof r!="object"||Array.isArray(r))return{document:r};let g=r;if(g.format!==pe||typeof g.formatVersion!="number"||g.formatVersion>=s)return{document:r,...u};let l=g.formatVersion,i=structuredClone(g);for(let o=l;o<s;o++){let c=n[o];if(!c)throw new Error(`there is no upgrade from format ${o} to ${o+1}`);i={...c(i),formatVersion:o+1}}return{document:i,from:l,...u}}function Le(e,n,s){let r=Object.keys(e).filter(l=>e[l].edges?.[n]!==void 0);if(r.length===0)return;let a=r.map(l=>e[l].edges[n].to),u=a.some(l=>l==="*")?"*":[...new Set(a.flatMap(l=>l))];if(s.length===0||s.some(l=>r.includes(l)))return{reversed:!1,kinds:u};let g=r.filter(l=>{let i=e[l].edges[n].to;return i==="*"||s.every(o=>i.includes(o))});return g.length>0?{reversed:!0,kinds:g}:{reversed:!1,kinds:u}}var Je=(e,n)=>{let s=e?.fields[n];return s!==void 0&&(s.type==="duration"||(s.type==="number"||s.type==="integer")&&s.format==="duration")};function We(e,n,s,r){if(r==="out"){let a=e[n]?.edges?.[s]?.to;return a===void 0?[]:a==="*"?Object.keys(e):a}return Object.entries(e).filter(([,a])=>{let u=a.edges?.[s]?.to;return u!==void 0&&(u==="*"||u.includes(n))}).map(([a])=>a)}function he(e,n,s){if(s.t==="ident")return e[n]?.edges?.[s.name]?We(e,n,s.name,"out"):void 0;if(s.t==="where")return he(e,n,s.set);if(s.t==="call"&&(s.fn==="out"||s.fn==="in")&&s.args[0]?.t==="lit"&&typeof s.args[0].value=="string")return We(e,n,s.args[0].value,s.fn)}var Ze=(e,n,s)=>{let r=n.filter(a=>e[a]?.fields[s]!==void 0);return r.length>0&&r.every(a=>Je(e[a],s))};function Ye(e,n,s){let r=e.kinds,a=r[n],u=new Map(s),g=new Map,l=(o,c)=>{if(c>8)return!1;switch(o.t){case"ident":return Je(a,o.name)||i(o.name,c+1);case"member":{let d=he(r,n,o.object);return d!==void 0&&Ze(r,d,o.name)}case"call":{if(o.fn!=="sum"&&o.fn!=="min"&&o.fn!=="max")return!1;let[d,y]=o.args,p=d&&he(r,n,d);return p!==void 0&&y?.t==="ident"&&Ze(r,p,y.name)}case"binary":return(o.op==="+"||o.op==="-")&&l(o.left,c)&&l(o.right,c);case"unary":return o.op==="-"&&l(o.operand,c);default:return!1}},i=(o,c)=>{if(a?.computed?.[o]===void 0)return!1;if(g.has(o))return g.get(o);g.set(o,!1);let d=u.get(o),y=d!==void 0&&l(d,c);return g.set(o,y),y};return s.map(([o])=>o).filter(o=>i(o,0))}function Xe(e,n,s=`kinds.${e}.page`){let r=n.page;if(!r)return[];let a=[],u=[...Object.keys(n.fields),...Object.keys(n.computed??{})],g=new Set,l=(o,c)=>{u.includes(o)?g.has(o)&&a.push(h("page-field-twice",c,`"${o}" is on ${e}'s page twice; name each field once`)):a.push(h("page-field",c,`${e}'s page is to show "${o}", and ${e} has no field or computed field called that`,`use one of: ${u.join(", ")}`)),g.add(o)};(r.fields??[]).forEach((o,c)=>l(o,`${s}.fields.${c}`));let i=new Set;return(r.groups??[]).forEach((o,c)=>{let d=o.title.trim().toLowerCase();i.has(d)&&a.push(h("page-group-twice",`${s}.groups.${c}.title`,`${e}'s page has two groups called "${o.title}"; give each its own title`)),i.add(d),o.fields.forEach((y,p)=>l(y,`${s}.groups.${c}.fields.${p}`))}),a}var bn=new Set(["subject","now","today","me"]);function $n(e){if((typeof e=="string"?e:JSON.stringify(e??null)).length>me)return{findings:[h("too-large","",`a document may be at most ${me/1024} KB`)]};if(typeof e=="string")try{e=JSON.parse(e)}catch(r){return{findings:[h("not-json","",`this is not JSON: ${r.message}`)]}}try{e=Ue(e).document}catch(r){return{findings:[h("format","formatVersion",r.message)]}}let n=Be.safeParse(e);if(!n.success)return{findings:n.error.issues.map(r=>{let a=r.path.map(String).join(".");if(r.code==="unrecognized_keys")return h("unknown-key",a,`${r.keys.map(u=>`"${u}"`).join(", ")} ${r.keys.length===1?"is":"are"} not part of a Graview document here`,"check the spelling against docs/declaration-document.md");if(r.code==="invalid_union"&&/\.effects\.\d+$/.test(a))return h("effect-shape",a,"this effect is not one Graview knows",'an effect is one of {"create": kind, "as"?: name, "set"?: {field: value}}, {"set": {field: value, \u2026}, "target"?: "$ref"}, {"connect"|"sever": relation, "from": "$ref", "to": "$ref"}, {"remove": "$ref"}');if(r.code==="invalid_key"){let u=r.issues?.[0]?.message;return h("shape",a,`the name "${String(r.path.at(-1))}" is not allowed here${u?`: ${u}`:""}`)}return h("shape",a,r.message)})};let s=n.data;return{document:s,findings:kn(s)}}var ie=e=>[e??[]].flat();function He(e){let n=new Map;for(let[s,r]of Object.entries(e.kinds))for(let[a,u]of Object.entries(r.edges??{})){let g=n.get(a);n.set(a,{name:a,from:[...g?.from??[],s],to:u.to==="*"||g?.to==="*"?"*":[...new Set([...g?.to??[],...u.to])],cardinality:u.cardinality??"many"})}return n}function Hn(e){let n=new Map;for(let[r,a]of Object.entries(e.kinds)){let u=X(a);n.set(r,{fields:new Set(Object.keys(a.fields)),edges:new Map(Object.entries(a.edges??{}).map(([g,l])=>[g,l.cardinality??"many"])),...u?{computed:u}:{}})}let s=X(e);return s&&n.set(xe,{computed:s}),n}function Qe(e,n){let s=[],r=ie(e.on),a=(u,g)=>{let l=Le(n.kinds,u,r)?.reversed===!0,[i,o]=l?["$to","$subject"]:["$subject","$to"];return g==="connect"?{connect:u,from:i,to:o}:{sever:u,from:i,to:o}};if(e.creates){let u=n.kinds[e.creates],g={};for(let l of Object.keys(u?.fields??{}))g[l]=`$${l}`;for(let l of e.effects??[])"set"in l&&!("create"in l)&&S(l.target)==="new"&&Object.assign(g,l.set);s.push({create:e.creates,as:"new",set:g})}return e.sets&&s.push({set:e.sets}),e.writes&&!(e.creates&&e.on===void 0)&&s.push({set:Object.fromEntries(e.writes.map(u=>[u,`$${u}`]))}),e.connects&&(e.replaces&&s.push({replace:e.replaces===!0?[e.connects]:[...e.replaces],keep:e.connects}),s.push(a(e.connects,"connect"))),e.severs&&s.push(a(e.severs,"sever")),e.setsOther&&(e.connects||e.severs)&&s.push({set:e.setsOther,target:"$to"}),e.removes&&s.push({remove:"$subject"}),e.effects&&s.push(...e.effects.filter(u=>!(e.creates&&"set"in u&&!("create"in u)&&S(u.target)==="new"))),s}function ze(e,n,s){try{let r=L(e),a=ne(r);for(let u of a.unknownFunctions)s.push(h("unknown-function",n,`"${u}" is not a function the rule language knows`,"see docs/declaration-document.md#expression-language"));return r}catch(r){if(r instanceof te){s.push(h("expression",n,r.sentence+` (at character ${r.at+1})`));return}throw r}}function ye(e,n,s){try{return W(e)}catch(r){if(r instanceof Me||r instanceof te){s.push(h("template",n,(r instanceof te,r.sentence)));return}throw r}}function kn(e){let n=[],s=new Set(Object.keys(e.kinds)),r=He(e),a=e.acts??{},u=new Set(e.roles??[]);for(let[l,i]of Object.entries(e.kinds)){let o=`kinds.${l}`;for(let[d,y]of Object.entries(i.edges??{})){if(y.to!=="*")for(let p of y.to)s.has(p)||n.push(h("edge-target",`${o}.edges.${d}.to`,`"${p}" is not a kind this document declares`));i.fields[d]&&n.push(h("edge-field-clash",`${o}.edges.${d}`,`"${d}" is both a field and a relation of ${l}`,"rename one of them"))}i.lifecycle&&!i.fields[i.lifecycle.field]&&n.push(h("lifecycle-field",`${o}.lifecycle.field`,`${l} has no field "${i.lifecycle.field}"`));let c=d=>i.computed!==void 0&&Object.hasOwn(i.computed,d);for(let d of i.glance??[])!i.fields[d]&&!c(d)&&n.push(h("glance-field",`${o}.glance`,`a glance at ${l} is to say "${d}", and ${l} has no field or computed field called that`,`use one of: ${[...Object.keys(i.fields),...Object.keys(i.computed??{})].join(", ")}`));n.push(...Xe(l,i));for(let d of["label","describe"]){let y=i[d];if(!y)continue;let p=ye(y,`${o}.${d}`,n);for(let f of p??[])if(f.expr){for(let m of ne(f.expr).names)if(!i.fields[m]){if(c(m)){Ce(i,m)||n.push(h("template-field",`${o}.${d}`,`${l}'s ${m} is worked out from beyond the record, and a ${d} is said with no graph to read`,`show it in a view instead, or name a computed field worked out from ${l}'s own fields`));continue}n.push(h("template-field",`${o}.${d}`,`${l} has no field "${m}" for its ${d} to show`,d==="label"?"a label can only show the record's own fields and what they work out":void 0))}}}for(let[d,y]of Object.entries(i.fields)){y.default!==void 0&&y.type==="enum"&&!y.options?.includes(String(y.default))&&n.push(h("default-option",`${o}.fields.${d}.default`,`"${String(y.default)}" is not one of ${d}'s options`));let p=`${d}Repeat`;y.repeats&&(i.fields[p]||i.edges?.[p]||i.computed?.[p])&&n.push(h("repeat-clash",`${o}.fields.${d}.repeats`,`${l} already has "${p}", where how ${d} repeats is kept`))}}for(let[l,i]of Object.entries(a)){let o=`acts.${l}`;for(let p of ie(i.on))s.has(p)||n.push(h("act-kind",`${o}.on`,`"${p}" is not a kind this document declares`));let c=ie(i.on),d=Qe(i,e);if(i.creates&&i.on===void 0&&i.writes&&s.has(i.creates))for(let p of i.writes)e.kinds[i.creates].fields[p]||(e.kinds[i.creates].computed?.[p]!==void 0?n.push(h("computed-written",`${o}.writes`,`${i.creates}'s ${p} is worked out, not written: no act can set it`,"write the stored fields it is worked out from")):n.push(h("act-field",`${o}.writes`,`${i.creates} has no field "${p}"`)));d.length===0&&n.push(h("act-empty",o,`"${l}" does nothing`,"give it effects or a shorthand such as sets or creates"));let y=new Map;d.forEach((p,f)=>{let m=d.length-(i.effects?.length??0),v=i.effects&&f>=m?`${o}.effects.${f-m}`:o;if("create"in p){if(!s.has(p.create))n.push(h("act-kind",`${v}.create`,`"${p.create}" is not a kind this document declares`));else for(let b of Object.keys(p.set??{}))e.kinds[p.create].fields[b]||(e.kinds[p.create].computed?.[b]!==void 0?n.push(h("computed-written",`${v}.set.${b}`,`${p.create}'s ${b} is worked out, not written: no act can set it`,"set the stored fields it is worked out from")):n.push(h("act-field",`${v}.set.${b}`,`${p.create} has no field "${b}"`)));p.as&&y.set(p.as,p.create)}else if("connect"in p||"sever"in p){let b="connect"in p?p.connect:p.sever;r.has(b)||n.push(h("act-edge",`${v}.${"connect"in p?"connect":"sever"}`,`"${b}" is not a relation any kind declares`)),S(p.from)==="subject"&&c.length===0&&n.push(h("act-subject",`${o}.on`,`"${l}" acts on "$subject" but does not say which kinds it is "on"`))}else if("set"in p){let b=S(p.target??"$subject"),E=b==="subject"?c:y.has(b??"")?[y.get(b)]:[];b==="subject"&&c.length===0&&n.push(h("act-subject",`${o}.on`,`"${l}" changes "$subject" but does not say which kinds it is "on"`));for(let F of Object.keys(p.set))for(let q of E)!s.has(q)||e.kinds[q].fields[F]||(e.kinds[q].computed?.[F]!==void 0?n.push(h("computed-written",`${v}.set.${F}`,`${q}'s ${F} is worked out, not written: no act can set it`,"set the stored fields it is worked out from")):n.push(h("act-field",`${v}.set.${F}`,`${q} has no field "${F}"`)))}else"remove"in p&&S(p.remove)==="subject"&&c.length===0&&n.push(h("act-subject",`${o}.on`,`"${l}" removes "$subject" but does not say which kinds it is "on"`));("set"in p&&p.set?Object.values(p.set):[]).forEach(b=>{b&&typeof b=="object"&&!Array.isArray(b)&&"expr"in b&&ze(b.expr,`${v}.set`,n)})}),i.allowedWhen&&ze(i.allowedWhen,`${o}.allowedWhen`,n),i.refusal&&ye(i.refusal,`${o}.refusal`,n)}for(let[l,i]of Object.entries(e.rules??{})){let o=`rules.${l}`;i.over!=="graph"&&!s.has(i.over)&&n.push(h("rule-kind",`${o}.over`,`"${i.over}" is not a kind this document declares`));let c=i.over==="graph"?void 0:e.kinds[i.over];for(let d of["when","require"]){let y=i[d];if(!y)continue;let p=ze(y,`${o}.${d}`,n);if(!p)continue;let f=ne(p);for(let m of f.names)if(i.over==="graph")n.push(h("rule-name",`${o}.${d}`,`"${m}" means nothing in a rule over the whole graph`,`name a kind in "over", or use all('kind')`));else if(c&&!c.fields[m]&&!c.edges?.[m]&&c.computed?.[m]===void 0){let v=Object.keys(c.edges??{}).find(A=>A.includes("-")&&A.split("-").includes(m));n.push(h("rule-name",`${o}.${d}`,`${i.over} has no field or relation called "${m}"`,v?`"${v}" reads as a subtraction in a rule; rename the relation to one camelCase word, like "${v.replace(/-([a-z0-9])/g,(A,b)=>b.toUpperCase())}"`:void 0))}for(let m of f.edges)r.has(m)||n.push(h("rule-edge",`${o}.${d}`,`"${m}" is not a relation any kind declares`));for(let m of f.sweeps)s.has(m)?i.over!=="graph"&&n.push(Ee("rule-cost",`${o}.${d}`,`this rule looks at every ${m} for every ${i.over}, which grows slowly as the app grows`,"walk a relation with out()/in() instead of all() where you can")):n.push(h("rule-kind",`${o}.${d}`,`"${m}" is not a kind this document declares`))}i.says&&ye(i.says,`${o}.says`,n),(i.repairs??[]).forEach((d,y)=>{!a[d.act]&&!le(d.act)&&n.push(h("repair-act",`${o}.repairs.${y}.act`,`"${d.act}" is not an act this document declares`))})}let g=e.policy;return g&&(g.grants.forEach((l,i)=>{if(l.roles!=="*"&&u.size>0)for(let o of l.roles)u.has(o)||n.push(h("grant-role",`policy.grants.${i}.roles`,`"${o}" is not one of the document's roles`));if(l.mutations!=="*")for(let o of l.mutations)!a[o]&&!le(o)&&n.push(h("grant-act",`policy.grants.${i}.mutations`,`"${o}" is not an act this document declares`))}),(g.sees??[]).forEach((l,i)=>{for(let o of l.kinds)s.has(o)||n.push(h("sight-kind",`policy.sees.${i}.kinds`,`"${o}" is not a kind this document declares`));if(l.roles!=="*"&&u.size>0)for(let o of l.roles)u.has(o)||n.push(h("sight-role",`policy.sees.${i}.roles`,`"${o}" is not one of the document's roles`))})),n.push(...Pe(e)),n}function wn(e,n,s,r){let a=new Map,u=ie(e.on),g=new Map,l=new Map;(u.length>0||n.some(f=>"remove"in f&&S(f.remove)==="subject"||"from"in f&&(S(f.from)==="subject"||S(f.to)==="subject")||"set"in f&&!("create"in f)&&S(f.target??"$subject")==="subject"))&&a.set(de,{ref:u.length>0?u:"*",required:!0});let o=e.args??{},c=e.writes?.length===1,d=(f,m)=>m&&f.type===m.type&&f.min===void 0&&f.max===void 0&&f.step===void 0?{...f,...m.min===void 0?{}:{min:m.min},...m.max===void 0?{}:{max:m.max},...m.step===void 0?{}:{step:m.step}}:f,y=(f,m)=>m&&f.type===m.type&&f.format===void 0&&f.unit===void 0?{...d(f,m),...m.format?{format:m.format}:{},...m.unit?{unit:m.unit}:{}}:d(f,m),p=(f,m,v)=>{if(f===de||bn.has(f)||g.has(f)||a.has(f))return;let A=o[f]?y(o[f],v):void 0;a.set(f,A?{field:A,optional:!A.required,required:!!A.required}:m())};for(let f of n)if("create"in f){let m=s.kinds[f.create];for(let[v,A]of Object.entries(f.set??{})){let b=S(A),E=m?.fields[v];if(b&&E){let F=!!E.required&&E.default===void 0;p(b,()=>({field:E,optional:!F,required:F}),E)}}f.as&&g.set(f.as,f.create)}else if("connect"in f||"sever"in f){let m=r.get("connect"in f?f.connect:f.sever);for(let[v,A]of[["from",f.from],["to",f.to]]){let b=S(A);if(!b)continue;let E=v==="to"?m?.to??"*":m?.from??"*";E!=="*"&&!l.has(b)&&l.set(b,E),p(b,()=>({ref:E,required:!0}))}}else if("set"in f){let m=S(f.target??"$subject"),v=m==="subject"?u[0]:g.get(m??"")??l.get(m??"")?.[0];m&&m!=="subject"&&!g.has(m)&&p(m,()=>({ref:"*",required:!0}));for(let[A,b]of Object.entries(f.set)){let E=S(b);if(!E)continue;let F=v?s.kinds[v]?.fields[A]:void 0;p(E,()=>F?{field:F,optional:!c,required:c}:{any:!0,required:!1},F)}}else if("remove"in f){let m=S(f.remove);m&&p(m,()=>({ref:"*",required:!0}))}for(let[f,m]of Object.entries(o))a.has(f)||a.set(f,{field:m,optional:!m.required,required:!!m.required});return a}function Qn(e,n={}){let s=$n(e);if(!s.document||ce(s.findings))return{ok:!1,findings:s.findings};let r=s.document,a=[...s.findings];n.previous&&a.push(...jn(r,n.previous));let u=vn(r,a);return ce(u.findings)?{ok:!1,findings:u.findings}:Re(u,n)}function re(e,n){return e.map(s=>{let r=!s.format&&s.expr?.t==="ident"?n?.[s.expr.name]?.format:void 0;return r==="money"||r==="percent"?{...s,format:r}:s})}function vn(e,n){let s=He(e),r={};for(let[o,c]of Object.entries(e.kinds)){let d=De(c),y=c.label??(d?`{${d}}`:void 0),p=X(c),f=p?Ye(e,o,[...p]):[];r[o]={...y?{label:re(W(y),c.fields)}:{},...c.describe?{describe:re(W(c.describe),c.fields)}:{},...p?{computed:[...p]}:{},...f.length>0?{durations:f}:{}}}let a={};for(let[o,c]of Object.entries(e.acts??{})){let d=Qe(c,e),y=wn(c,d,e,s),p=c.destructive??d.some(z=>"remove"in z||"sever"in z||"replace"in z),f=[...new Set(d.flatMap(z=>"create"in z?[z.create]:[]))],m=[...new Set(d.flatMap(z=>"connect"in z?[z.connect]:[]))],v=[...new Set(d.flatMap(z=>"sever"in z?[z.sever]:"replace"in z?z.replace:[]))],A=[...new Set(d.flatMap(z=>"set"in z&&!("create"in z)&&S(z.target??"$subject")==="subject"?Object.keys(z.set):[]))],b=new Map;for(let z of d){if(!("connect"in z)&&!("sever"in z))continue;let j=s.get("connect"in z?z.connect:z.sever);for(let[T,en]of[["from",z.from],["to",z.to]]){let Q=S(en),ae=T==="to"?j?.to:j?.from;Q&&Q!=="subject"&&ae&&ae!=="*"&&b.set(Q,[...new Set([...b.get(Q)??[],...ae])])}}let E={};for(let z of d){if(!("set"in z)||"create"in z)continue;let j=S(z.target??"$subject");for(let T of j&&j!=="subject"&&b.get(j)||[])E[T]=[...new Set([...E[T]??[],...Object.keys(z.set)])]}let F={};for(let z of d)if(!(!("set"in z)||"create"in z||S(z.target??"$subject")!=="subject"))for(let[j,T]of Object.entries(z.set??{}))typeof T=="string"&&S(T)===void 0||typeof T=="number"||typeof T=="boolean"?F[j]=typeof T=="string"&&T.startsWith("$$")?T.slice(1):T:delete F[j];let q=f.length===0&&d.every(z=>!("set"in z)||!z.set||Object.values(z.set).every(j=>!(j&&typeof j=="object"&&!Array.isArray(j)&&"expr"in j))),be=new Map;for(let z of d)if(!(!("set"in z)||!z.set))for(let j of Object.values(z.set))j&&typeof j=="object"&&!Array.isArray(j)&&"expr"in j&&be.set(j.expr,L(j.expr));a[o]={title:c.title??o.replace(/-/g," "),effects:d,args:[...y],...c.allowedWhen?{guard:L(c.allowedWhen)}:{},...c.refusal?{refusal:re(W(c.refusal),e.kinds[[c.on??[]].flat()[0]??""]?.fields)}:{},exprs:[...be],destructive:p,idempotent:q,creates:f,connects:m,severs:v,writes:A,writesOther:E,sets:F}}let u={};for(let[o,c]of Object.entries(e.rules??{}))u[o]={title:c.title??o.replace(/-/g," "),require:L(c.require),...c.when?{when:L(c.when)}:{},...c.says?{says:re(W(c.says),e.kinds[c.over]?.fields)}:{}};let g=Ae(e,n),l=Te(e),i=Ke(e);return{format:Fe,document:e,findings:n,kinds:r,...e.computed?{facts:[...X(e)??[]]}:{},edges:[...s].map(([o,{from:c,to:d,cardinality:y}])=>[o,{from:c,to:d,cardinality:y}]),acts:a,rules:u,brand:g,...Object.keys(l).length>0?{viewSpecs:l}:{},...i?{home:i}:{}}}function et(e,n){let s=e.split(/[\s:·]/).find(r=>r.length>0)??e;return n.kinds[s]?`kinds.${s}`:n.acts?.[s]?`acts.${s}`:n.rules?.[s]?`rules.${s}`:e}function nt(e,n,s){let r=/^defineNode\("([^"]+)"\)/.exec(n)?.[1],a=r?s.kinds[r]:void 0;if(!r||!a)return e;let u=Object.keys(a.fields).filter(g=>g!=="label").slice(0,3);return{...e,path:`kinds.${r}.glance`,fix:`Say which: "glance": [${u.map(g=>`"${g}"`).join(", ")}] on kinds.${r} \u2014 the facts a person compares one by, at a glance.`}}function jn(e,n){let s=[],r=new Set(Object.values(n.kinds).flatMap(a=>Object.keys(a.edges??{})));for(let[a,u]of Object.entries(e.kinds)){let g=u.renamedFrom;g&&!n.kinds[g]&&s.push(h("renamed-from-nothing",`kinds.${a}.renamedFrom`,`${a} says it was ${g}, and the previous version has no kind called ${g}`,"name the kind it was, or drop renamedFrom"));let l=n.kinds[g??a];for(let[i,o]of Object.entries(u.fields)){let c=o.renamedFrom;c&&!l?.fields[c]&&s.push(h("renamed-from-nothing",`kinds.${a}.fields.${i}.renamedFrom`,`${i} says it was ${c}, and the previous ${g??a} has no field called ${c}`,"name the field it was, or drop renamedFrom"))}for(let[i,o]of Object.entries(u.edges??{})){let c=o.renamedFrom;c&&!r.has(c)&&s.push(h("renamed-from-nothing",`kinds.${a}.edges.${i}.renamedFrom`,`${i} says it was ${c}, and the previous version has no relation called ${c}`,"name the relation it was, or drop renamedFrom"))}}return s}export{$n as a,Hn as b,Qe as c,Qn as d,et as e,nt as f};