graview 0.1.58 → 0.1.60

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 (178) hide show
  1. package/README.md +4 -2
  2. package/dist/preview/chunk.2K4TT2BV.js +1 -0
  3. package/dist/preview/{chunk.OHQ3JH65.js → chunk.2USDHXB4.js} +1 -1
  4. package/dist/preview/{chunk.F7SF6EP2.js → chunk.37TVS7CA.js} +1 -1
  5. package/dist/preview/chunk.3IZ3ABII.js +1 -0
  6. package/dist/preview/{chunk.NKC3JILT.js → chunk.3MOJF7BA.js} +1 -1
  7. package/dist/preview/{chunk.IDJPBWL2.js → chunk.3UOKUF5Z.js} +1 -1
  8. package/dist/preview/{chunk.2VYNNWW5.js → chunk.3V4WP7RY.js} +3 -3
  9. package/dist/preview/{chunk.WNSC3RWD.js → chunk.3XGA65Y3.js} +1 -1
  10. package/dist/preview/{chunk.D5KTGX7F.js → chunk.3ZT5WQYL.js} +1 -1
  11. package/dist/preview/{chunk.IULQRCEE.js → chunk.4LR64TPU.js} +1 -1
  12. package/dist/preview/chunk.4MP72LPR.js +25 -0
  13. package/dist/preview/{chunk.GQBJVCSM.js → chunk.4TCKEG6I.js} +1 -1
  14. package/dist/preview/chunk.5DD62IOW.js +21 -0
  15. package/dist/preview/{chunk.KJ264E6K.js → chunk.5YOLUDVO.js} +1 -1
  16. package/dist/preview/{chunk.EB4NVTJL.js → chunk.67U6M7OV.js} +1 -1
  17. package/dist/preview/{chunk.XU34T2H4.js → chunk.6C2MHWSX.js} +1 -1
  18. package/dist/preview/{chunk.ILRCNTGT.js → chunk.6HF6POIX.js} +1 -1
  19. package/dist/preview/{chunk.U6O3MMQR.js → chunk.6WHAWOO7.js} +1 -1
  20. package/dist/preview/{chunk.GKSUTAIX.js → chunk.6ZQAR5ZA.js} +1 -1
  21. package/dist/preview/{chunk.EPPXZZPK.js → chunk.7MHCGVGM.js} +1 -1
  22. package/dist/preview/{chunk.MQ5HBUBL.js → chunk.7N32AVIJ.js} +1 -1
  23. package/dist/preview/{chunk.7V23SXGJ.js → chunk.7OPM55I2.js} +1 -1
  24. package/dist/preview/chunk.7TFLRR7D.js +1 -0
  25. package/dist/preview/{chunk.LDAYDCUO.js → chunk.7VKSXGTX.js} +1 -1
  26. package/dist/preview/{chunk.KJHPDL4N.js → chunk.A3ZXDG6V.js} +1 -1
  27. package/dist/preview/{chunk.27CW6SCT.js → chunk.A5PDXNY6.js} +1 -1
  28. package/dist/preview/chunk.AVBTPSQF.js +1 -0
  29. package/dist/preview/{chunk.YZZONE4M.js → chunk.BF6S5UE4.js} +1 -1
  30. package/dist/preview/chunk.BLPYNNR4.js +1 -0
  31. package/dist/preview/{chunk.LRUNFSHP.js → chunk.BQIHNT7C.js} +1 -1
  32. package/dist/preview/{chunk.O4CVKTPJ.js → chunk.BRT27WON.js} +1 -1
  33. package/dist/preview/{chunk.HMFJT4KO.js → chunk.BXDM3UMN.js} +1 -1
  34. package/dist/preview/chunk.BYKD5RLA.js +1 -0
  35. package/dist/preview/chunk.C7OLSEWK.js +1 -0
  36. package/dist/preview/{chunk.3OYGXYQY.js → chunk.CC5BJH5A.js} +1 -1
  37. package/dist/preview/{chunk.GCBZ3WE2.js → chunk.CFKZXLXS.js} +1 -1
  38. package/dist/preview/chunk.CMN6BBAD.js +1 -0
  39. package/dist/preview/{chunk.YP2F5UGY.js → chunk.CQT3W2SF.js} +1 -1
  40. package/dist/preview/chunk.D7YSL3NK.js +2 -0
  41. package/dist/preview/chunk.DCHQHKSA.js +1 -0
  42. package/dist/preview/{chunk.H3BFHI3G.js → chunk.EL5ICOOM.js} +1 -1
  43. package/dist/preview/{chunk.PZG3B7F4.js → chunk.ENL2JJ47.js} +1 -1
  44. package/dist/preview/chunk.EQXB7LKI.js +1 -0
  45. package/dist/preview/{chunk.ELAMMS2V.js → chunk.ERFT54HT.js} +1 -1
  46. package/dist/preview/{chunk.XN2RVXOI.js → chunk.F6V7RWDK.js} +1 -1
  47. package/dist/preview/{chunk.64R3K2OE.js → chunk.FBJARKDT.js} +1 -1
  48. package/dist/preview/{chunk.SDLUWRGI.js → chunk.FC6AF6CC.js} +1 -1
  49. package/dist/preview/{chunk.GZB6A6KF.js → chunk.FFTYMBBT.js} +1 -1
  50. package/dist/preview/chunk.FLUK3UXF.js +1 -0
  51. package/dist/preview/{chunk.KFQSYCY3.js → chunk.FRYBMS3W.js} +1 -1
  52. package/dist/preview/chunk.G3R4BTI7.js +1 -0
  53. package/dist/preview/chunk.G4YJPKRG.js +5 -0
  54. package/dist/preview/{chunk.BB33TI4S.js → chunk.GLWSVSQL.js} +1 -1
  55. package/dist/preview/{chunk.SDVPJYVF.js → chunk.GNBIVVL3.js} +1 -1
  56. package/dist/preview/{chunk.ZN5HTWSI.js → chunk.GTKJJYQH.js} +1 -1
  57. package/dist/preview/{chunk.TUUVVO5U.js → chunk.H45Q3O4F.js} +1 -1
  58. package/dist/preview/{chunk.M34CS7DI.js → chunk.HDP3PS7N.js} +1 -1
  59. package/dist/preview/{chunk.CCWPF5PK.js → chunk.HDUO2USQ.js} +1 -1
  60. package/dist/preview/{chunk.PBCNOFQH.js → chunk.HUJ6YTWE.js} +1 -1
  61. package/dist/preview/{chunk.JB7TTJXQ.js → chunk.I4XQBQRC.js} +1 -1
  62. package/dist/preview/chunk.IBOKXVWN.js +1 -0
  63. package/dist/preview/{chunk.4HSH2UIK.js → chunk.IGJZ4UH3.js} +2 -2
  64. package/dist/preview/{chunk.WNQFHMNR.js → chunk.IGVASEZU.js} +1 -1
  65. package/dist/preview/{chunk.7SQAKSJD.js → chunk.IHBUBZQT.js} +1 -1
  66. package/dist/preview/chunk.IOK4GVJC.js +1 -0
  67. package/dist/preview/{chunk.I3WWCPQ2.js → chunk.JEYQBH33.js} +1 -1
  68. package/dist/preview/{chunk.S2H7B6RG.js → chunk.JJGCTGWA.js} +1 -1
  69. package/dist/preview/{chunk.E5MSFXL6.js → chunk.JPONLMU7.js} +1 -1
  70. package/dist/preview/{chunk.QPXXY2DL.js → chunk.KBVTLNS5.js} +3 -3
  71. package/dist/preview/{chunk.HS3GHAUR.js → chunk.KDRLUBVF.js} +1 -1
  72. package/dist/preview/{chunk.YIA2EDVF.js → chunk.KGW75Z5L.js} +1 -1
  73. package/dist/preview/{chunk.KWJWAIQJ.js → chunk.KI37ZEV3.js} +1 -1
  74. package/dist/preview/chunk.L6AWE76F.js +1 -0
  75. package/dist/preview/{chunk.LY3YOWKV.js → chunk.LGEA5257.js} +1 -1
  76. package/dist/preview/{chunk.TF5I4VHX.js → chunk.LLYRFVIN.js} +1 -1
  77. package/dist/preview/{chunk.WQOI6BLM.js → chunk.LQVAABPS.js} +1 -1
  78. package/dist/preview/{chunk.POBMGM3X.js → chunk.LSY256J4.js} +1 -1
  79. package/dist/preview/{chunk.HEWVPXRE.js → chunk.LZIBQ3VX.js} +1 -1
  80. package/dist/preview/{chunk.7MSFDD7J.js → chunk.M4UD4ARP.js} +1 -1
  81. package/dist/preview/chunk.MDJWK5W2.js +1 -0
  82. package/dist/preview/{chunk.4AFFPYOK.js → chunk.MJVYWLQQ.js} +1 -1
  83. package/dist/preview/{chunk.3YZHZGTM.js → chunk.MSWWWLEA.js} +1 -1
  84. package/dist/preview/{chunk.BTVBZ6KE.js → chunk.MVWC3VR3.js} +2 -2
  85. package/dist/preview/{chunk.B2GVJD6H.js → chunk.NC7FXY2H.js} +1 -1
  86. package/dist/preview/{chunk.LCPGZK7G.js → chunk.NGTRL5U4.js} +1 -1
  87. package/dist/preview/{chunk.NOFWGDOT.js → chunk.NHUQ2N6J.js} +1 -1
  88. package/dist/preview/{chunk.LL2MLSPH.js → chunk.OLFJH4RK.js} +1 -1
  89. package/dist/preview/{chunk.WXIEQZLY.js → chunk.P6RORYOT.js} +1 -1
  90. package/dist/preview/{chunk.SPXRLO5K.js → chunk.PFSYXD6Q.js} +1 -1
  91. package/dist/preview/chunk.PHJ6WPWH.js +1 -0
  92. package/dist/preview/{chunk.QGV7H7RQ.js → chunk.PI44XMY2.js} +1 -1
  93. package/dist/preview/{chunk.ZOHMWSHD.js → chunk.PNW5K7BW.js} +1 -1
  94. package/dist/preview/chunk.Q355UPFG.js +1 -0
  95. package/dist/preview/{chunk.GEB2DFBU.js → chunk.QBLKTFF4.js} +1 -1
  96. package/dist/preview/{chunk.HXRV3WVJ.js → chunk.QDSEVPF3.js} +1 -1
  97. package/dist/preview/chunk.QFUMFQJU.js +1 -0
  98. package/dist/preview/{chunk.B3WZHPM3.js → chunk.QHDCTAD7.js} +1 -1
  99. package/dist/preview/{chunk.UAP5M3CD.js → chunk.QI4SLPQ4.js} +2 -2
  100. package/dist/preview/{chunk.HZB5F476.js → chunk.RQOX5YDW.js} +1 -1
  101. package/dist/preview/{chunk.TBW7CU4G.js → chunk.RXYNW5QB.js} +1 -1
  102. package/dist/preview/{chunk.RE7DELSR.js → chunk.SB2PZKN5.js} +1 -1
  103. package/dist/preview/{chunk.INZQ6WZM.js → chunk.SRVQJZRT.js} +1 -1
  104. package/dist/preview/{chunk.TJ647W6J.js → chunk.T7LQD67N.js} +2 -2
  105. package/dist/preview/chunk.TAT2IQUR.js +1 -0
  106. package/dist/preview/chunk.TFWIG6LL.js +6 -0
  107. package/dist/preview/{chunk.GP7F3PEF.js → chunk.TKVLNBRD.js} +1 -1
  108. package/dist/preview/{chunk.YHTE34RN.js → chunk.TLJOZSDD.js} +1 -1
  109. package/dist/preview/{chunk.6W7O5YLL.js → chunk.TLWT67ON.js} +1 -1
  110. package/dist/preview/{chunk.KKNDX4JT.js → chunk.TY4GQJKC.js} +1 -1
  111. package/dist/preview/{chunk.EQTSV7BK.js → chunk.UITT6JWW.js} +1 -1
  112. package/dist/preview/{chunk.LO3U3P55.js → chunk.UJTE7UAP.js} +1 -1
  113. package/dist/preview/{chunk.DBZHRYBK.js → chunk.ULL6ZIJJ.js} +1 -1
  114. package/dist/preview/{chunk.VUPLFUUS.js → chunk.UQWTZJBV.js} +1 -1
  115. package/dist/preview/{chunk.NFX24NUI.js → chunk.URWAFZHF.js} +1 -1
  116. package/dist/preview/{chunk.A6C4AGJJ.js → chunk.VADQ7ZGA.js} +1 -1
  117. package/dist/preview/chunk.VDMDPZ6U.js +1 -0
  118. package/dist/preview/{chunk.2EDC63RI.js → chunk.VFOON3Z3.js} +1 -1
  119. package/dist/preview/{chunk.4444RPWW.js → chunk.VMV464JK.js} +1 -1
  120. package/dist/preview/{chunk.4KC35UNR.js → chunk.VNDKKTED.js} +4 -2
  121. package/dist/preview/chunk.VSCIXAHN.js +5 -0
  122. package/dist/preview/{chunk.34TW32TB.js → chunk.VUBNBTJP.js} +2 -2
  123. package/dist/preview/{chunk.JUNMJYH5.js → chunk.VWJGQDCE.js} +1 -1
  124. package/dist/preview/{chunk.KXPRILAO.js → chunk.VZJWJ5XM.js} +1 -1
  125. package/dist/preview/{chunk.5ICIMQE6.js → chunk.W3W54DSX.js} +1 -1
  126. package/dist/preview/{chunk.YD3TKV6P.js → chunk.WC3DENU4.js} +2 -2
  127. package/dist/preview/chunk.WQ6RCEUQ.js +1 -0
  128. package/dist/preview/{chunk.YS6GVLIP.js → chunk.WXUFATY5.js} +1 -1
  129. package/dist/preview/chunk.X6A4VSSD.js +1 -0
  130. package/dist/preview/{chunk.VHSWBFXB.js → chunk.XGASJAV2.js} +1 -1
  131. package/dist/preview/{chunk.RRKYJYZJ.js → chunk.XR6YR6RV.js} +1 -1
  132. package/dist/preview/chunk.XZPKBHJT.js +1 -0
  133. package/dist/preview/{chunk.GDOTG7YA.js → chunk.Y5C4RXG7.js} +1 -1
  134. package/dist/preview/{chunk.JES77WXG.js → chunk.Y7G3OGDE.js} +1 -1
  135. package/dist/preview/{chunk.E34OQVSR.js → chunk.YEBGI6ED.js} +1 -1
  136. package/dist/preview/{chunk.TWKXSLYY.js → chunk.YFSBVZTG.js} +1 -1
  137. package/dist/preview/chunk.YFVJUHAK.js +1 -0
  138. package/dist/preview/chunk.YH63KQ2G.js +1 -0
  139. package/dist/preview/{chunk.LMN4TSAP.js → chunk.YZ7FUKAL.js} +1 -1
  140. package/dist/preview/{chunk.JGKA5QBX.js → chunk.Z2ERZ4S6.js} +1 -1
  141. package/dist/preview/{chunk.VG7OWV2H.js → chunk.ZP5RT2EK.js} +1 -1
  142. package/dist/preview/{chunk.ETBFD76E.js → chunk.ZXOT3IXJ.js} +1 -1
  143. package/dist/preview/{chunk.TJOXNEFU.js → chunk.ZYM2SSGW.js} +1 -1
  144. package/dist/preview/index.html +51 -51
  145. package/dist/preview/page.js +2 -2
  146. package/package.json +6 -6
  147. package/dist/preview/chunk.32FMOHZK.js +0 -1
  148. package/dist/preview/chunk.3FCOFEGW.js +0 -1
  149. package/dist/preview/chunk.43OKZU73.js +0 -1
  150. package/dist/preview/chunk.47JQPYXL.js +0 -2
  151. package/dist/preview/chunk.4GGPPCMM.js +0 -1
  152. package/dist/preview/chunk.4Y2JTY6Q.js +0 -1
  153. package/dist/preview/chunk.6K7EN2YI.js +0 -1
  154. package/dist/preview/chunk.6VC6AGYV.js +0 -5
  155. package/dist/preview/chunk.7BBGRTXM.js +0 -5
  156. package/dist/preview/chunk.7ECBGIUK.js +0 -1
  157. package/dist/preview/chunk.ACYDJQRC.js +0 -1
  158. package/dist/preview/chunk.ARWBIBSI.js +0 -6
  159. package/dist/preview/chunk.BKVBX2YB.js +0 -1
  160. package/dist/preview/chunk.DM767F2Q.js +0 -21
  161. package/dist/preview/chunk.ELERUERU.js +0 -1
  162. package/dist/preview/chunk.GUEHKCWN.js +0 -1
  163. package/dist/preview/chunk.HT2BEOEV.js +0 -25
  164. package/dist/preview/chunk.JOAN54PN.js +0 -1
  165. package/dist/preview/chunk.L7V24JPO.js +0 -1
  166. package/dist/preview/chunk.LA4CPZ2N.js +0 -1
  167. package/dist/preview/chunk.MV3AJ7JH.js +0 -1
  168. package/dist/preview/chunk.MYNQWWCL.js +0 -1
  169. package/dist/preview/chunk.OASYYMG5.js +0 -1
  170. package/dist/preview/chunk.PM3SYXKB.js +0 -1
  171. package/dist/preview/chunk.QB25SMP6.js +0 -1
  172. package/dist/preview/chunk.R7LFO7KI.js +0 -1
  173. package/dist/preview/chunk.S5MGE2U5.js +0 -1
  174. package/dist/preview/chunk.TXGNPW76.js +0 -1
  175. package/dist/preview/chunk.UGFDSE37.js +0 -1
  176. package/dist/preview/chunk.UKMVJV6Q.js +0 -1
  177. package/dist/preview/chunk.UUG3BYVN.js +0 -1
  178. package/dist/preview/chunk.WJFQIE3Y.js +0 -1
@@ -1,4 +1,4 @@
1
- var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{a as Qe,b as Xe,c as Je,d as at,e as tt,h as Ze,i as ea,k as aa,l as ta,m as rt}from"./chunk.IDJPBWL2.js";import{c as je}from"./chunk.3OYGXYQY.js";import{g as Qa,h as Ja,i as Za}from"./chunk.UAP5M3CD.js";import"./chunk.GDOTG7YA.js";import{b as Ua,c as Va,d as Ye,e as Ya}from"./chunk.KFQSYCY3.js";import"./chunk.NKC3JILT.js";import{m as Re,q as qa,r as _a,s as Ga}from"./chunk.HEWVPXRE.js";import{a as Xa}from"./chunk.HJCQ6I3S.js";import{b as ja}from"./chunk.HXRV3WVJ.js";import"./chunk.MQ5HBUBL.js";import{b as Wa}from"./chunk.R7LFO7KI.js";import{b as _e,d as Ue,e as Ve}from"./chunk.HS3GHAUR.js";import"./chunk.ZOHMWSHD.js";import{b as Ge}from"./chunk.PZG3B7F4.js";import"./chunk.LRUNFSHP.js";import"./chunk.WNSC3RWD.js";import"./chunk.S5MGE2U5.js";import"./chunk.LL2MLSPH.js";import"./chunk.EB4NVTJL.js";import"./chunk.VG7OWV2H.js";import"./chunk.KXPRILAO.js";import{e as et}from"./chunk.S2H7B6RG.js";import"./chunk.RRKYJYZJ.js";import"./chunk.2EDC63RI.js";import"./chunk.GZHZLJBF.js";import{c as Ha,d as Oa,e as we,o as Da}from"./chunk.ELERUERU.js";import"./chunk.OJGHDWI6.js";import"./chunk.YHTE34RN.js";import"./chunk.3YZHZGTM.js";import"./chunk.EQTSV7BK.js";import"./chunk.27CW6SCT.js";import{E as Fa,c as Na,d as Ia,j as qe,l as Ba,s as Ka}from"./chunk.YD3TKV6P.js";import{b as Ea,c as $t}from"./chunk.4KC35UNR.js";import{G,Ga as Ee,Na as Ma,Oa as U,Ra as La,T as $,Va as Pa,_ as Ra,aa as Ta,ba as T,da as Ce,i as Ke,j as $e,ka as za,m as ee,n as Ae,o as Fe,r as ve,x as Aa,y as ue,z as Ca}from"./chunk.HT2BEOEV.js";import{a as ie}from"./chunk.SDO3U72B.js";import{Tc as H,Vc as D,W as re,ia as ka,ja as Se,ka as _,oa as Sa,uc as $a}from"./chunk.7BBGRTXM.js";import"./chunk.FQLNBIQ5.js";import{b as m}from"./chunk.AJZBJBMO.js";function At(e){return`
1
+ var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{a as Qe,b as Xe,c as Je,d as at,e as tt,h as Ze,i as ea,k as aa,l as ta,m as rt}from"./chunk.3UOKUF5Z.js";import{c as je}from"./chunk.CC5BJH5A.js";import{g as Qa,h as Ja,i as Za}from"./chunk.QI4SLPQ4.js";import"./chunk.Y5C4RXG7.js";import{b as Ua,c as Va,d as Ye,e as Ya}from"./chunk.FRYBMS3W.js";import"./chunk.3MOJF7BA.js";import{m as Re,q as qa,r as _a,s as Ga}from"./chunk.LZIBQ3VX.js";import{a as Xa}from"./chunk.HJCQ6I3S.js";import{b as ja}from"./chunk.QDSEVPF3.js";import"./chunk.7N32AVIJ.js";import{b as Wa}from"./chunk.X6A4VSSD.js";import{b as _e,d as Ue,e as Ve}from"./chunk.KDRLUBVF.js";import"./chunk.PNW5K7BW.js";import{b as Ge}from"./chunk.ENL2JJ47.js";import"./chunk.BQIHNT7C.js";import"./chunk.3XGA65Y3.js";import"./chunk.2K4TT2BV.js";import"./chunk.OLFJH4RK.js";import"./chunk.67U6M7OV.js";import"./chunk.ZP5RT2EK.js";import"./chunk.VZJWJ5XM.js";import{e as et}from"./chunk.JJGCTGWA.js";import"./chunk.XR6YR6RV.js";import"./chunk.VFOON3Z3.js";import"./chunk.GZHZLJBF.js";import{c as Ha,d as Oa,e as we,o as Da}from"./chunk.IOK4GVJC.js";import"./chunk.OJGHDWI6.js";import"./chunk.TLJOZSDD.js";import"./chunk.MSWWWLEA.js";import"./chunk.UITT6JWW.js";import"./chunk.A5PDXNY6.js";import{E as Fa,c as Na,d as Ia,j as qe,l as Ba,s as Ka}from"./chunk.WC3DENU4.js";import{b as Ea,c as $t}from"./chunk.VNDKKTED.js";import{G,Ga as Ee,Na as Ma,Oa as U,Ra as La,T as $,Va as Pa,_ as Ra,aa as Ta,ba as T,da as Ce,i as Ke,j as $e,ka as za,m as ee,n as Ae,o as Fe,r as ve,x as Aa,y as ue,z as Ca}from"./chunk.4MP72LPR.js";import{a as ie}from"./chunk.SDO3U72B.js";import{Ac as $a,W as re,_c as H,ad as D,ia as ka,ja as Se,ka as _,oa as Sa}from"./chunk.VSCIXAHN.js";import"./chunk.FQLNBIQ5.js";import{b as m}from"./chunk.AJZBJBMO.js";function At(e){return`
2
2
 
3
3
 
4
4
  .graview-altitude-control {
@@ -1128,6 +1128,6 @@ var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=gl
1128
1128
  }
1129
1129
  [data-graview-connector][data-graview-activity] {
1130
1130
  animation: graview-relation 1200ms cubic-bezier(0.22, 1, 0.36, 1);
1131
- }`}function ra(e="dark",o={}){let d=At(e);return o.scope===void 0?d:Ea(d,o.scope)}var O=m(G(),1);var V=m($(),1),Ct=Ee(ie(()=>(__graviewPreload(import.meta.url,["./chunk.YD3TKV6P.js","./chunk.4KC35UNR.js","./chunk.HT2BEOEV.js","./chunk.SDO3U72B.js","./chunk.7BBGRTXM.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.B2GVJD6H.js")))).part(e=>(0,V.jsx)(e.MapKey,{}),{quiet:!0});function ia(){let{store:e}=T(),{view:o}=U(),d=Ce(),s=(0,O.useMemo)(()=>e.graph.allEdges().length>0,[e,d]),[n,w]=(0,O.useState)(!1),v=(0,O.useId)(),g=(0,O.useRef)(null),x=(0,O.useRef)(null);return(0,O.useEffect)(()=>{if(!n)return;let h=c=>{let C=c.target;C&&(x.current?.contains(C)||g.current?.contains(C))||w(!1)};return document.addEventListener("pointerdown",h,!0),()=>document.removeEventListener("pointerdown",h,!0)},[n]),s?(0,V.jsxs)("div",{style:{display:"contents"},onKeyDown:h=>{h.key!=="Escape"||!n||(h.preventDefault(),h.stopPropagation(),w(!1),g.current?.focus({preventScroll:!0}))},children:[(0,V.jsx)("button",{ref:g,type:"button","data-testid":"lines-key","aria-expanded":n,"aria-controls":v,title:"What the lines mean",onClick:()=>w(h=>!h),style:{position:"absolute",top:60,right:"calc(14px + var(--graview-dock, 0px))",zIndex:D("overview"),height:30,padding:"0 11px",borderRadius:8,borderColor:"transparent",fontSize:"0.8125rem",color:n?"var(--graview-accent)":"var(--graview-ink-muted)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-low)"},children:"Key"}),n?(0,V.jsxs)("div",{ref:x,id:v,"data-testid":"lines-key-pane","data-graview-offstage":"",style:{position:"absolute",top:98,right:"calc(14px + var(--graview-dock, 0px))",zIndex:D("rail"),width:tt,maxHeight:"calc(100cqh - 120px)",overflowY:"auto",boxSizing:"border-box",padding:"8px 8px",borderRadius:10,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)"},children:[o.overview?(0,V.jsx)(Ct,{}):null,(0,V.jsx)(at,{inside:!0,widthOf:Xa})]}):null]}):null}var ze=m(G(),1),Te=m($(),1);function it(e){return e.lens!==null?{what:"lens",kind:e.lens}:e.records.length===1&&e.districts.length===0?{what:"record",id:e.records[0]}:e.districts.length===1&&e.records.length===0?{what:"district",kind:e.districts[0]}:null}var Et=Ee(ie(()=>(__graviewPreload(import.meta.url,["./chunk.UAP5M3CD.js","./chunk.EPPXZZPK.js","./chunk.KFQSYCY3.js","./chunk.NKC3JILT.js","./chunk.HEWVPXRE.js","./chunk.HJCQ6I3S.js","./chunk.HXRV3WVJ.js","./chunk.MQ5HBUBL.js","./chunk.WNSC3RWD.js","./chunk.ACYDJQRC.js","./chunk.S5MGE2U5.js","./chunk.34TW32TB.js","./chunk.LL2MLSPH.js","./chunk.EB4NVTJL.js","./chunk.VG7OWV2H.js","./chunk.KXPRILAO.js","./chunk.2EDC63RI.js","./chunk.WVUJXDXZ.js","./chunk.LDAYDCUO.js","./chunk.KKNDX4JT.js","./chunk.GKSUTAIX.js","./chunk.5ICIMQE6.js","./chunk.QGV7H7RQ.js","./chunk.YIA2EDVF.js","./chunk.GZHZLJBF.js","./chunk.ELERUERU.js","./chunk.OJGHDWI6.js","./chunk.YHTE34RN.js","./chunk.3YZHZGTM.js","./chunk.EQTSV7BK.js","./chunk.27CW6SCT.js","./chunk.YD3TKV6P.js","./chunk.4KC35UNR.js","./chunk.HT2BEOEV.js","./chunk.SDO3U72B.js","./chunk.7BBGRTXM.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.GEB2DFBU.js")))),Rt=Et.part((e,o)=>(0,Te.jsx)(e.MapPanelFor,{showing:o.showing}),{what:"This panel",quiet:!0});function na(){let{store:e,view:o,selection:d,hiddenKinds:s,seatTalk:n}=T();Ce();let w=(0,ze.useSyncExternalStore)(n.subscribe,()=>n.get().draft!==null,()=>!1);if(!o.overview||w)return null;let v=it(ja(d,{...o,beside:!0},g=>e.graph.getNode(g)?.kind));return!v||v.what!=="record"&&(s.has(v.kind)||!e.schema.kinds.includes(v.kind))?null:(0,Te.jsx)(ze.Suspense,{fallback:null,children:(0,Te.jsx)(Rt,{showing:v})})}var Tt=m(G(),1);var W=m($(),1);function oa(){let{view:e,go:o}=U(),{store:d,views:s,hiddenKinds:n}=T(),w=e.overview??!1,v=s.places().map(E=>E.kind).filter(E=>!n.has(E)),g=Fa(e,d.schema.kinds,v),x=()=>{o($e(ee(e,!1),g))},h=(()=>{if(!g)return null;let E=Aa(g)[0],b=e.within?.view,R=(b?s.places().find(N=>N.as===b):void 0)??(E?s.places().filter(N=>N.kind===E).at(-1):void 0);return R?R.title:E?_(d.schema,E):d.graph.getNode(g)?.label??null})(),c=w?"Close the map":"Up",C=w&&h?`Close the map, down to ${h}`:c;return(0,W.jsxs)("button",{type:"button","data-testid":"overview",className:"graview-altitude-control","aria-pressed":w,"aria-label":C,title:w?C:"Up \u2014 the whole thing, from above",onClick:()=>w?x():o(ee(e,!0)),style:{position:"absolute",top:14,right:"calc(14px + var(--graview-dock, 0px))",zIndex:D("overview"),display:"inline-flex",alignItems:"center",justifyContent:"center",gap:7,height:38,padding:"0 13px 0 11px",borderRadius:8,borderColor:"transparent",fontSize:"0.875rem",whiteSpace:"nowrap",background:"var(--graview-float)",boxShadow:"var(--graview-lift-low)","--graview-altitude":w?1:0,...w?{color:"var(--graview-accent)"}:{}},children:[(0,W.jsxs)("svg",{className:"graview-altitude-mark",width:"16",height:"16",viewBox:"0 0 12 12","aria-hidden":"true",children:[(0,W.jsx)("ellipse",{className:"graview-altitude-mark-ring",cx:"6",cy:"6.6",rx:"5",ry:"2.6",fill:"none",stroke:"currentColor",strokeWidth:"0.9"}),(0,W.jsx)("circle",{className:"graview-altitude-mark-apex",cx:"6",cy:"4",r:"1.5",fill:"currentColor"}),(0,W.jsx)("circle",{className:"graview-altitude-mark-wing","data-side":"left",cx:"1.6",cy:"7.4",r:"1.2",fill:"currentColor"}),(0,W.jsx)("circle",{className:"graview-altitude-mark-wing","data-side":"right",cx:"10.4",cy:"7.4",r:"1.2",fill:"currentColor"})]}),(0,W.jsx)("span",{className:"graview-altitude-label",children:c})]})}var sa=m($(),1);function da(){let{administered:e}=T(),{view:o,go:d}=U(),s=e.filter(n=>n.canShow);return s.length===0?null:(0,sa.jsx)("div",{role:"group","aria-label":"Administered","data-testid":"administered",style:{display:"flex",gap:6},children:s.map(n=>(0,sa.jsx)("button",{type:"button","aria-pressed":n.shown,"data-testid":`show-${n.name}`,title:n.shown?`Hide the ${n.name}'s own districts again`:n.description??`Show the ${n.name}'s own districts beside the domain`,onClick:()=>d(Ua(o,n.name,!n.shown)),style:{padding:"3px 11px",borderRadius:999,fontSize:"0.875rem",borderWidth:1,borderStyle:"solid",borderColor:n.shown?"var(--graview-accent)":"var(--graview-edge)",color:n.shown?"var(--graview-accent)":"var(--graview-ink-muted)",background:n.shown?"var(--graview-panel)":"transparent"},children:n.shown?`Hide the ${n.name}`:`Show the ${n.name}`},n.name))})}var u=m(G(),1);var t=m($(),1);Ra({search:_a,touchWeights:qa});var ne=e=>e!==void 0&&"act"in e,Me=e=>e!==void 0&&"hit"in e&&e.hit.about==="node"?e:void 0,zt=e=>e.about==="rule"?"rule:":e.about==="act"?"act:":e.kind;function Mt(e){let o=()=>typeof window>"u"||window.innerWidth>=Ft,[d,s]=(0,u.useState)(o);return(0,u.useEffect)(()=>{let n=()=>s(o());return window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[]),d&&!e}function dt({compact:e=!1}){let{store:o,view:d,setView:s,principal:n,setMenuAt:w,brand:v,aiDesk:g,selection:x}=T(),h=Ia(g),c=Ta(),C=Ma(),E=Da().marks.flag,b=Mt(e),R=(0,u.useRef)(null),N=(0,u.useRef)(null),z=(0,u.useRef)(null),B=(0,u.useId)(),[Le,I]=(0,u.useState)(!1),[K,se]=(0,u.useState)(null),[ft,he]=(0,u.useState)(null),[Pe,be]=(0,u.useState)([]),M=d.q??"";(0,u.useEffect)(()=>{let a=r=>{if(r.defaultPrevented)return;let i=r.key.toLowerCase()==="k"&&(r.metaKey||r.ctrlKey)&&!r.altKey&&!r.shiftKey,l=r.key==="/"&&!r.metaKey&&!r.ctrlKey&&!r.altKey;if(!i&&!l)return;let p=R.current;if(!p)return;let f=p.closest("[data-graview-embed]"),S=r.target,J=S===document.body||S===document.documentElement||S===window;if(f&&!(i&&J||S instanceof Node&&f.contains(S)))return;let Z=document.activeElement,ge=Z instanceof HTMLInputElement||Z instanceof HTMLTextAreaElement||Z instanceof HTMLSelectElement||Z instanceof HTMLElement&&Z.isContentEditable;l&&ge||(r.preventDefault(),p.getClientRects().length===0&&p.closest("[data-graview-app-bar]")?.querySelector('[data-testid="app-find-open"]')?.click(),p.focus({preventScroll:!0}),p.select(),I(!0))};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[]);let Ne=(0,u.useMemo)(()=>{let a=new Map;for(let[i,l]of(c?.hits??[]).entries()){if(l.about==="act")continue;let p=zt(l),f=a.get(p)??[];f.push({id:`${B}-${i}`,hit:l}),a.set(p,f)}let r=[...a.values()].filter(i=>i.some(l=>l.hit.about==="node")).length>1;return[...a.entries()].map(([i,l])=>{let p=0,f=l.filter(ge=>ge.hit.about!=="node"||!r||++p<=Wt),S=f.filter(ge=>ge.hit.about==="node").length,J=i.endsWith(":")?l.length:c?.byKind[i]??S,Z=!i.endsWith(":")&&S>0&&J>S?{id:`${B}-all-${i}`,all:i,count:J}:null;return{key:i,rows:f,count:J,more:Z}})},[c,B]),ae=h&&M.trim()?{id:`${B}-ask`,ask:M.trim()}:null,k=(0,u.useMemo)(()=>[...Ne.flatMap(a=>a.more?[...a.rows,a.more]:a.rows),...ae?[ae]:[]],[Ne,ae?.ask]),wa=(c?.hits??[]).filter(a=>a.about==="node").length,xe=c?.words??M,Ie=(0,u.useMemo)(()=>Re(xe).split(" ").filter(Boolean),[xe]),F=(0,u.useCallback)(a=>a.hit.about==="node"?Ga(o,a.hit.id,xe,{principal:n,limit:Bt}).map((r,i)=>({id:`${a.id}-act-${i}`,act:r,of:a.id})):[],[o,xe,n]),He=k.find(a=>a.id===K),q=k.find(a=>a.id===ft)??He??k[0],de=(0,u.useMemo)(()=>b&&Me(q)?F(q):[],[b,q?.id,F]),ye=(0,u.useMemo)(()=>b?new Map:new Map(Pe.flatMap(a=>{let r=Me(k.find(i=>i.id===a));return r?[[a,F(r)]]:[]})),[b,Pe,k,F]),ht=(0,u.useMemo)(()=>b?new Set:new Set(k.flatMap(a=>Me(a)&&F(a).length>0?[a.id]:[])),[b,k,F]),Oe=(0,u.useMemo)(()=>b?de:[...ye.values()].flat(),[b,de,ye]),L=He??Oe.find(a=>a.id===K)??k[0];(0,u.useEffect)(()=>{se(null),he(null),be([])},[M]);let le=(0,u.useRef)(null);(0,u.useEffect)(()=>{let a=le.current;if(!a)return;le.current=null;let r=0,i=()=>{let l=document.querySelector(`[data-graview-view="aggregate:${CSS.escape(a)}"]`),p=document.activeElement;if(!(!p||p===document.body||p===document.documentElement||p===R.current||p===z.current||p===l))return;let S=[...l?.querySelectorAll('[role="group"][aria-label="Arrange"] :is(button, input)')??[]].find(J=>J.checkVisibility?.()??!0);if(S)return S.focus({preventScroll:!0});l&&l.tabIndex>=0&&p!==l&&l.focus({preventScroll:!0}),++r<240?requestAnimationFrame(i):document.activeElement===z.current&&z.current?.blur()};requestAnimationFrame(i)},[d]);let De=(a,r)=>{let i=document.querySelector(`[data-graview-view="aggregate:${CSS.escape(a)}"]`);if(i&&i.tabIndex>=0)return i.focus({preventScroll:!0});let l=z.current;if(!l)return R.current?.blur();l.setAttribute("aria-label",r),l.focus({preventScroll:!0})},ma=(0,u.useRef)({x:Number.NaN,y:Number.NaN,moved:!1});(0,u.useEffect)(()=>{let a=r=>{let i=ma.current;i.moved=r.clientX!==i.x||r.clientY!==i.y,i.x=r.clientX,i.y=r.clientY};return window.addEventListener("mousemove",a,{capture:!0,passive:!0}),()=>window.removeEventListener("mousemove",a,{capture:!0})},[]);let ce=(0,u.useRef)(void 0);(0,u.useEffect)(()=>()=>clearTimeout(ce.current),[]);let te=a=>{a&&(clearTimeout(ce.current),se(a.id),ne(a)||he(a.id))},fa=a=>{if(!ma.current.moved)return;let r=a.target.closest?.('[role="option"]')?.id;if(!r||r===K)return;let i=k.find(l=>l.id===r)??Oe.find(l=>l.id===r);i&&(se(i.id),!ne(i)&&(clearTimeout(ce.current),ce.current=setTimeout(()=>he(i.id),Kt)))},bt=()=>{clearTimeout(ce.current),q&&!ne(L)&&se(q.id)},xt=a=>be(r=>r.includes(a.id)?r.filter(i=>i!==a.id):[...r,a.id]),ha=a=>{let r=N.current,i=r?.querySelector('[role="option"]')?.getBoundingClientRect().height??0,l=r?.clientHeight??0;return Math.min(a,i>0&&l>0?Math.max(1,Math.floor(l/i)-1):Ot)};(0,u.useEffect)(()=>{K&&document.getElementById(K)?.scrollIntoView?.({block:"nearest"})},[K]);let We=a=>{if(!a)return;if("ask"in a){Na(g,{pointed:{...x[0]!==void 0?{on:x[0]}:{},about:x},asked:a.ask}),s(i=>Ye(i)),I(!1);return}if("all"in a)return s(i=>ue(ee(i,!1),ve(a.all),{ownPicture:!0,...i.q?{carry:i.q}:{}})),le.current=a.all,I(!1),De(a.all,`Opening ${_(o.schema,a.all)} matching \u201C${M.trim()}\u201D\u2026`);if(ne(a)){let i=a.act.subject;s(p=>Ae(p,[i]));let l=R.current?.getBoundingClientRect();w({x:l?.left??0,y:(l?.bottom??0)+6,on:i}),I(!1),R.current?.blur();return}let r=a.hit;switch(r.about){case"node":s(i=>Ae($e(ee(i,!1),r.id),[r.id]));break;case"kind":return s(i=>ue(ee(i,!1),ve(r.kind),{ownPicture:!0})),le.current=r.kind,I(!1),De(r.kind,`Opening ${r.label}\u2026`);case"place":return s(i=>Ca(i,r.kind,r.as)),le.current=r.kind,I(!1),De(r.kind,`Opening ${r.title}\u2026`);case"rule":{let i=C.filter(l=>l.invariant===r.name).flatMap(l=>l.nodeIds);s(l=>Ae(l,[...new Set(i)]));break}case"act":break}I(!1),R.current?.blur()},yt=c?Ht(c.byKind,c.hits,o.schema):"",pe=Le&&M.trim().length>0,kt=(0,u.useCallback)(()=>{let a=R.current?.closest("[data-graview-app-bar]")?.getBoundingClientRect();if(a)return{x:a.right,y:a.bottom-Ut};let r=R.current?.getBoundingClientRect();return r?{x:r.right,y:r.bottom}:null},[]),ba=Pa("find",{open:pe,onOpenChange:a=>{a||I(!1)},...e?{at:kt}:{}}),ke=k.every(a=>"ask"in a),xa=a=>ne(a)?Oe.filter(r=>r.of===a.of):[],St=a=>{let r=ne(L)&&K!==null,i=r?k.find(p=>p.id===L.of):K!==null?He:void 0,l=i?k.indexOf(i):-1;if(a.key==="ArrowDown"){if(a.preventDefault(),I(!0),r){let p=xa(L),f=p.indexOf(L)+1;if(f<p.length)return te(p[f]);if(b)return}te(k[Math.min(k.length-1,l+1)])}else if(a.key==="ArrowUp"){if(a.preventDefault(),r){let p=xa(L),f=p.indexOf(L)-1;return te(f>=0?p[f]:i)}te(k[Math.max(0,l-1)])}else if((a.key==="PageDown"||a.key==="PageUp")&&k.length>0){a.preventDefault(),I(!0);let p=a.key==="PageDown"?ha(k.length):-ha(k.length);te(k[Math.min(k.length-1,Math.max(0,(l<0?-1:l)+p))])}else if(a.key==="ArrowRight"&&!r&&Me(L)){let p=L,f=b?p.id===q?.id?de:F(p):ye.get(p.id)??F(p);if(f.length===0)return;a.preventDefault(),!b&&!Pe.includes(p.id)&&be(S=>[...S,p.id]),he(p.id),se(f[0].id)}else if(a.key==="ArrowLeft"&&r){a.preventDefault();let p=L.of;b||be(f=>f.filter(S=>S!==p)),te(k.find(f=>f.id===p))}else a.key==="Enter"?(a.preventDefault(),We(L)):a.key==="Escape"&&(a.preventDefault(),M?s(p=>Ye(p)):R.current?.blur())},Be=(a,r,i={},l={})=>{let p=a.id===L?.id;return(0,t.jsx)("div",{id:a.id,role:"option","aria-selected":p,onClick:()=>We(a),style:{...Zt,...p?er:null,...i},...l,children:r},a.id)},ya=(a,r)=>{let i=a.id===L?.id;return(0,t.jsx)("div",{id:a.id,role:"option","aria-selected":i,"data-testid":"find-act","data-about":"act",onClick:()=>We(a),style:{...r?ir:ct,...i?nr:null,...a.act.destructive?{color:"var(--graview-warn)"}:null},children:a.act.title},a.id)};return(0,t.jsxs)("div",{style:{position:"relative",minWidth:0,flex:"1 1 auto"},"data-testid":"find",children:[(0,t.jsx)("input",{ref:a=>{R.current=a,ba.trigger.ref(a)},"data-graview-popover-trigger":"find",type:"search",role:"combobox","aria-label":"Find anything","aria-expanded":pe,"aria-controls":B,"aria-autocomplete":"list",...pe&&L?{"aria-activedescendant":L.id}:{},"data-testid":"find-box",placeholder:"Find\u2026","aria-keyshortcuts":"/ Meta+K Control+K",value:M,onChange:a=>{let r=a.target.value;I(!0),s(i=>Va(i,r.length>0?r:null))},onFocus:()=>I(!0),onBlur:()=>I(!1),onKeyDown:St,style:{width:"100%",boxSizing:"border-box",minWidth:0,height:30,padding:"0 var(--graview-bar-find-end, 10px) 0 10px",font:"inherit",fontSize:"0.875rem",color:"var(--graview-ink)",background:"var(--graview-panel)",border:`1px solid ${M?"var(--graview-accent)":"var(--graview-edge)"}`,borderRadius:8}}),(0,t.jsx)("span",{role:"status","aria-live":"polite",style:qe,"data-testid":"find-count",children:M.trim()?yt:""}),(0,t.jsx)("span",{ref:z,tabIndex:-1,role:"status",style:qe,"data-testid":"find-landing"}),(0,t.jsxs)("div",{...ba.pane,id:B,role:"listbox","aria-label":M?`What \u201C${M}\u201D finds`:"What the words find","data-testid":"find-strip","data-graview-find":b?"panel":"narrow",hidden:!pe,onMouseDown:a=>a.preventDefault(),style:{..._t,...e?Vt:b&&!ke?Gt:null,...pe?{display:"flex"}:null},children:[(0,t.jsxs)("div",{style:{...Yt,gridTemplateColumns:b&&!ke?`minmax(0, 1fr) ${qt}`:"minmax(0, 1fr)"},children:[(0,t.jsxs)("div",{ref:N,role:"presentation","data-testid":"find-list",onMouseMove:fa,style:jt,children:[ke?(0,t.jsxs)("p",{role:"presentation",style:{margin:0,padding:"10px 12px",color:"var(--graview-ink-muted)",fontSize:"0.875rem"},"data-testid":"find-nothing",children:["Nothing here is called \u201C",c?.words||M,"\u201D."]}):Ne.map(a=>(0,t.jsxs)("div",{role:"group","aria-label":ot(a.key,o.schema),children:[(0,t.jsxs)("div",{role:"presentation",style:la,children:[a.key!=="rule:"&&a.key!=="act:"?(0,t.jsx)(lt,{kind:a.key,accents:v?.accents}):null,(0,t.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:ot(a.key,o.schema)}),(0,t.jsx)("span",{"aria-hidden":"true",style:Jt,"data-testid":"find-group-count",children:re(a.count)})]}),a.rows.map(r=>{let i=r.hit,l=i.about==="node"?i:null,p=!b&&l!==null&&ht.has(r.id),f=ye.get(r.id);return(0,t.jsxs)(u.Fragment,{children:[Be(r,(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(Pt,{hit:i,flag:E,words:l?.near&&l.why.matched?[...Ie,Re(l.why.matched)]:Ie}),p?(0,t.jsx)("span",{"aria-hidden":"true","data-testid":"find-acts-open","data-open":f?"":void 0,title:f?"Put its actions away":"Actions",onClick:S=>{S.stopPropagation(),xt(r)},style:{...sr,...f?dr:null},children:(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,t.jsx)("circle",{cx:"3.5",cy:"8",r:"1.4",fill:"currentColor"}),(0,t.jsx)("circle",{cx:"8",cy:"8",r:"1.4",fill:"currentColor"}),(0,t.jsx)("circle",{cx:"12.5",cy:"8",r:"1.4",fill:"currentColor"})]})}):null]}),p?{paddingRight:48}:{},{"data-testid":"find-hit","data-about":i.about,...l?.near?{"data-near":""}:{},title:It(i)}),f?(0,t.jsx)("div",{role:"group","aria-label":`What can be done about ${l?.label??"it"}`,style:or,children:f.map(S=>ya(S,!0))}):null]},r.id)}),a.more?Be(a.more,(0,t.jsxs)("span",{style:Q,children:["All ",re(a.more.count)," ",Se(o.schema,a.more.all).toLowerCase()," matching \u201C",M.trim(),"\u201D"]}),ar,{"data-testid":"find-all","data-about":"all"}):null]},a.key)),ae?Be(ae,(0,t.jsxs)("span",{style:Q,children:["Ask: ",(0,t.jsxs)("span",{style:{fontWeight:600},children:["\u2018",ae.ask,"\u2019"]})]}),{borderTop:"1px solid var(--graview-edge)",marginTop:4},{"data-testid":"find-ask"}):null,wa>Dt?(0,t.jsxs)("p",{role:"presentation",style:st,"data-testid":"find-more-words",children:[re(wa)," found: another word of the name narrows them."]}):null,c&&c.searched.past===!1&&c.searched.kinds.some(a=>o.schema.tryDefinition(a)?.lifecycle)?(0,t.jsx)("p",{role:"presentation",style:st,children:"Current ones; add is:any for the past."}):null]}),b&&!ke&&q?(0,t.jsxs)("div",{role:"group","aria-label":"The one lit","data-testid":"find-panel",onMouseEnter:bt,onMouseMove:fa,style:Qt,children:[(0,t.jsx)(Lt,{row:q,schema:o.schema,accents:v?.accents,marking:Ie,q:M.trim(),flag:E}),de.length>0?(0,t.jsxs)("div",{role:"group","aria-label":"Actions",style:{display:"grid",gap:4},children:[(0,t.jsx)("div",{role:"presentation",style:{...la,padding:"10px 0 4px"},children:"Actions"}),de.map(a=>ya(a,!1))]}):null]}):null]}),e?null:(0,t.jsxs)("div",{"aria-hidden":"true",style:lr,"data-testid":"find-keys",children:[(0,t.jsxs)("span",{children:[(0,t.jsx)("kbd",{style:fe,children:"\u2191"}),(0,t.jsx)("kbd",{style:fe,children:"\u2193"})," move"]}),(0,t.jsxs)("span",{children:[(0,t.jsx)("kbd",{style:fe,children:"\u21B5"})," open"]}),(0,t.jsxs)("span",{children:[(0,t.jsx)("kbd",{style:fe,children:"\u2192"})," actions"]}),(0,t.jsxs)("span",{children:[(0,t.jsx)("kbd",{style:fe,children:"esc"})," close"]})]})]})]})}function Lt({row:e,schema:o,accents:d,marking:s,q:n,flag:w}){let v=null,g="",x,h=null;if("ask"in e)g="Ask",x=`\u2018${e.ask}\u2019`,h=(0,t.jsx)("p",{style:Y,children:"Asks it of what is selected; the answer comes on a card beside it."});else if("all"in e)v=e.all,g=_(o,e.all),x=`All ${re(e.count)} matching \u201C${n}\u201D`,h=(0,t.jsxs)("p",{style:Y,children:["Opens the ",Se(o,e.all).toLowerCase(),", narrowed by these words."]});else{let c=e.hit;switch(c.about){case"node":{v=c.kind,g=nt(Sa(o.tryDefinition(c.kind),c.kind)),x=(0,t.jsxs)(t.Fragment,{children:[c.flagged?(0,t.jsxs)("span",{style:{color:"var(--graview-warn)"},children:[w," "]}):null,(0,t.jsx)(j,{text:c.label,words:s})]});let C=[c.apart,c.current?null:"past",c.archived?"set aside":null].filter(Boolean).join(" \xB7 ");h=(0,t.jsxs)(t.Fragment,{children:[C?(0,t.jsx)("p",{style:Y,children:nt(C)}):null,c.near?(0,t.jsxs)("p",{style:Y,children:["Near \u201C",c.why.asked,"\u201D",c.why.field!=="label"?` \u2014 ${c.why.reading.toLowerCase()}: ${c.why.fragment}`:""]}):c.why.field!=="label"?(0,t.jsxs)("p",{style:Y,children:[(0,t.jsx)("span",{style:{color:"var(--graview-ink-faint)"},children:c.why.reading}),(0,t.jsx)("br",{}),(0,t.jsx)(j,{text:c.why.fragment,words:s})]}):null]});break}case"kind":v=c.kind,g="Kind",x=c.label,h=(0,t.jsxs)("p",{style:Y,children:["Goes into the ",c.label.toLowerCase(),", all of them",c.count>0?`; ${re(c.count)} match these words`:"","."]});break;case"place":v=c.kind,g="Place",x=c.title,h=(0,t.jsxs)("p",{style:Y,children:["A picture of the ",Se(o,c.kind).toLowerCase(),"."]});break;case"rule":g="Rule",x=c.label,h=(0,t.jsx)("p",{style:Y,children:"Selects what it flags."});break;case"act":g="Act",x=c.title;break}}return(0,t.jsxs)("div",{role:"presentation","data-testid":"find-said",style:{display:"grid",gap:6},children:[(0,t.jsxs)("div",{style:{...la,padding:0},children:[v?(0,t.jsx)(lt,{kind:v,accents:d}):null,g]}),(0,t.jsx)("div",{style:Xt,children:x}),h]})}function Pt({hit:e,flag:o,words:d}){switch(e.about){case"node":return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("span",{style:tr,children:[e.flagged?(0,t.jsxs)("span",{style:{color:"var(--graview-warn)"},children:[o," "]}):null,(0,t.jsx)(j,{text:e.label,words:d}),e.apart?(0,t.jsxs)("span",{style:me,children:[" \xB7 ",e.apart]}):null,e.current?null:(0,t.jsx)("span",{style:me,children:" \xB7 past"})]}),e.near?(0,t.jsxs)("span",{style:{...Q,...me},"data-testid":"find-near",children:["Near \u201C",e.why.asked,"\u201D",e.why.field!=="label"?` \u2014 ${e.why.reading.toLowerCase()}: `:"",e.why.field!=="label"?(0,t.jsx)(j,{text:e.why.fragment,words:d}):null]}):e.why.field!=="label"?(0,t.jsxs)("span",{style:{...Q,...me},children:[e.why.reading.toLowerCase(),": ",(0,t.jsx)(j,{text:e.why.fragment,words:d})]}):null]});case"kind":return(0,t.jsxs)("span",{style:Q,children:[(0,t.jsx)(j,{text:e.label,words:d}),(0,t.jsxs)("span",{style:me,children:[" \xB7 ",e.count," match"]})]});case"place":return(0,t.jsxs)("span",{style:Q,children:["Go to ",(0,t.jsx)(j,{text:e.title,words:d})]});case"rule":return(0,t.jsxs)("span",{style:Q,children:["The rule \u201C",(0,t.jsx)(j,{text:e.label,words:d}),"\u201D"]});case"act":return(0,t.jsx)("span",{style:Q,children:e.title})}}function Nt(e,o){if(o.length===0)return[{text:e}];let d=[],s=0;for(let n of e.matchAll(/[\p{L}\p{N}]+/gu)){let w=n[0],v=Re(w).replace(/ /g,""),g=o.filter(c=>v.startsWith(c)).sort((c,C)=>C.length-c.length)[0];if(!g)continue;let x=v.length===w.length?g.length:w.length,h=n.index??0;h>s&&d.push({text:e.slice(s,h)}),d.push({text:w.slice(0,x),marked:!0}),s=h+x}return s<e.length&&d.push({text:e.slice(s)}),d}function j({text:e,words:o}){return(0,t.jsx)(t.Fragment,{children:Nt(e,o).map((d,s)=>d.marked?(0,t.jsx)("mark",{style:rr,children:d.text},s):(0,t.jsx)(u.Fragment,{children:d.text},s))})}function It(e){if(e.about!=="node")return"";let o=e.near?`Near \u201C${e.why.asked}\u201D`:e.why.field!=="label"?`${e.why.reading}: ${e.why.fragment}`:"";return o?`${e.label}
1132
- ${o}`:e.label}var nt=e=>e&&e[0].toUpperCase()+e.slice(1);function lt({kind:e,accents:o}){let d=Math.round($a(e,o));return(0,t.jsx)("span",{"aria-hidden":"true",style:{width:8,height:8,borderRadius:2,flex:"0 0 auto",background:`hsl(${d} 55% 52%)`}})}function ot(e,o){return e==="rule:"?"Rules":e==="act:"?"Acts":_(o,e)}function Ht(e,o,d){let s=Object.entries(e).map(([v,g])=>ka(d,v,g)),n=o.filter(v=>v.about==="kind"||v.about==="place"||v.about==="rule").length;n>0&&s.push(`${n} ${n===1?"place or rule":"places and rules"}`);let w=o.filter(v=>v.about==="node"&&v.near).length;return s.length===0?"Nothing found":`${s.join(", ")} found${w>0?`, ${w} of them near`:""}`}var Ot=10,Dt=12,Wt=5,Bt=6,Kt=140,Ft=760,qt="15.5rem",_t={...La,flexDirection:"column",width:"min(26rem, calc(100vw - 24px))",maxHeight:"min(64vh, 30rem)",overflow:"hidden",boxSizing:"border-box",background:"linear-gradient(var(--graview-panel), var(--graview-panel)) var(--graview-ground, var(--graview-panel))",borderTop:"1px solid var(--graview-edge)",borderRight:"1px solid var(--graview-edge)",borderBottom:"1px solid var(--graview-edge)",borderLeft:"1px solid var(--graview-edge)",borderRadius:10,boxShadow:"0 10px 28px rgb(0 0 0 / 0.18)",padding:0},Gt={width:"min(42rem, calc(100vw - 24px))"},Ut=6,Vt={width:"var(--graview-bar-width, 100vw)",maxHeight:"55vh",borderRadius:0,borderLeft:"none",borderRight:"none"},Yt={display:"grid",gridTemplateRows:"minmax(0, 1fr)",flex:"1 1 auto",minHeight:0},jt={overflowY:"auto",overflowX:"hidden",minHeight:0,padding:"4px 0",overscrollBehavior:"contain"},Qt={overflowY:"auto",minHeight:0,padding:"12px 14px",borderLeft:"1px solid var(--graview-edge)",background:"var(--graview-panel-muted)",display:"flex",flexDirection:"column",gap:4},Xt={fontWeight:600,fontSize:"0.9375rem",lineHeight:1.35,color:"var(--graview-ink)",overflowWrap:"anywhere"},Y={margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)",overflowWrap:"anywhere"},la={display:"flex",alignItems:"center",gap:6,padding:"10px 12px 4px",fontSize:"0.6875rem",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:"var(--graview-ink-muted)"},Jt={marginLeft:"auto",fontWeight:400,letterSpacing:0,fontVariantNumeric:"tabular-nums",color:"var(--graview-ink-faint)"},Zt={position:"relative",display:"grid",gap:1,minHeight:34,padding:"5px 12px",alignContent:"center",cursor:"pointer",fontSize:"0.875rem",lineHeight:1.35,color:"var(--graview-ink)",minWidth:0},er={background:"color-mix(in srgb, var(--graview-accent) 12%, var(--graview-panel))",boxShadow:"inset 3px 0 0 var(--graview-accent)"},ar={color:"var(--graview-accent)",fontSize:"0.8125rem",minHeight:30},Q={display:"block",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},tr={display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:2,minWidth:0,overflow:"hidden",overflowWrap:"anywhere",fontWeight:600},me={color:"var(--graview-ink-muted)",fontSize:"0.8125rem",fontWeight:400},rr={background:"color-mix(in srgb, var(--graview-accent) 24%, transparent)",color:"inherit",borderRadius:2,padding:0,boxShadow:"0 1px 0 color-mix(in srgb, var(--graview-accent) 70%, transparent)"},ct={display:"flex",alignItems:"center",minHeight:32,padding:"4px 10px",boxSizing:"border-box",borderWidth:1,borderStyle:"solid",borderColor:"var(--graview-edge)",borderRadius:6,background:"var(--graview-panel)",color:"var(--graview-ink)",fontSize:"0.8125rem",lineHeight:1.3,cursor:"pointer",overflowWrap:"anywhere"},ir={...ct,minHeight:32,margin:"0 12px 4px 24px"},nr={borderColor:"var(--graview-accent)",boxShadow:"inset 0 0 0 1px var(--graview-accent)",background:"color-mix(in srgb, var(--graview-accent) 12%, var(--graview-panel))"},or={display:"grid",padding:"2px 0 6px"},sr={position:"absolute",top:"50%",right:6,transform:"translateY(-50%)",width:36,height:32,display:"grid",placeItems:"center",borderRadius:6,color:"var(--graview-ink-muted)",borderWidth:1,borderStyle:"solid",borderColor:"transparent"},dr={color:"var(--graview-accent)",borderColor:"var(--graview-edge)",background:"var(--graview-panel)"},st={margin:0,padding:"6px 12px 4px",color:"var(--graview-ink-faint)",fontSize:"0.75rem"},lr={display:"flex",flexWrap:"wrap",gap:"4px 14px",padding:"7px 12px",borderTop:"1px solid var(--graview-edge)",color:"var(--graview-ink-faint)",fontSize:"0.75rem",flex:"0 0 auto"},fe={display:"inline-block",minWidth:16,padding:"0 4px",marginRight:3,border:"1px solid var(--graview-edge)",borderRadius:4,font:"inherit",fontSize:"0.6875rem",lineHeight:"16px",textAlign:"center",color:"var(--graview-ink-muted)",background:"var(--graview-panel)"};var oe=m(G(),1);var ca=m($t(),1);var gt=m($(),1);function pt(){let{following:e,follow:o}=T();return e?(0,gt.jsxs)("button",{type:"button","data-testid":"following-who",onClick:()=>o(null),title:"Press, or Escape, to stop following",style:{display:"inline-flex",alignItems:"center",gap:6,minHeight:24,padding:"2px 9px",borderRadius:999,border:"1px solid var(--graview-accent)",background:"transparent",color:"var(--graview-accent)",fontSize:"0.875rem",whiteSpace:"nowrap"},children:["following ",e.name]}):null}var vt=m(G(),1);var A=m($(),1);function ut({home:e,homeLabel:o,children:d,onPicture:s=!1}){let{view:n,focus:w,show:v,go:g}=U(),{store:x}=T(),{movedByHand:h}=T(),c=h&&(n.pan!==void 0||Object.keys(n.pins).length>0),C=n.focusId&&n.focusId!==e?x.graph.getNode(n.focusId):void 0,E=z=>_(x.schema,z),b={display:"inline-flex",alignItems:"center",gap:6,minHeight:26,padding:"2px 6px",fontSize:"0.8125rem",borderRadius:6,border:"1px solid transparent",boxShadow:"none",background:"transparent",color:"var(--graview-ink-muted)",whiteSpace:"nowrap"},R=o!==void 0&&C!==void 0,N=[];if(C&&!s&&N.push({key:"focused",node:(0,A.jsxs)("button",{type:"button","data-testid":"focused",onClick:()=>g(Fe({...n,focusId:e},!1)),title:Ge(x,C.id),style:{...b,maxWidth:"min(14rem, 15vw)"},children:[(0,A.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis"},children:Ge(x,C.id)}),(0,A.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\xD7"})]})}),n.past&&N.push({key:"past",node:(0,A.jsxs)("button",{type:"button","data-testid":"past",onClick:()=>g(Ya(n,!1)),title:"Back to now \u2014 retired things leave the picture again",style:b,children:["the past",(0,A.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\xD7"})]})}),n.zoom&&N.push({key:"zoomed",node:(0,A.jsxs)("button",{type:"button","data-testid":"zoomed",onClick:()=>g(Fe(n,!1)),title:"Zoom back out",style:b,children:["zoomed in",(0,A.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\xD7"})]})}),c&&N.push({key:"moved",node:(0,A.jsx)("button",{type:"button","data-testid":"moved",onClick:()=>g(Ke(n)),title:"Put the camera and everything you dragged back where the layout wanted them",style:b,children:"Reset view"})}),n.relation){let z=n.relation;N.push({key:"raised",node:(0,A.jsxs)("span",{style:{display:"inline-flex",alignItems:"center"},children:[(0,A.jsxs)("button",{type:"button","data-testid":"raised-into",onClick:()=>g(ue(n,ve(z),{ownPicture:!0})),title:`Go into the ${E(z).toLowerCase()}`,"aria-label":`Go into the ${E(z).toLowerCase()}`,style:{...b,color:"var(--graview-ink)"},children:[E(z),(0,A.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\u2198"})]}),(0,A.jsx)("button",{type:"button","data-testid":"raised",onClick:()=>v(null),title:`Stop showing ${E(z).toLowerCase()}`,"aria-label":`Stop showing ${E(z).toLowerCase()}`,style:{...b,minWidth:26,justifyContent:"center"},children:(0,A.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\xD7"})})]})})}return s&&!R&&N.length===0&&d===void 0?null:(0,A.jsxs)("nav",{"aria-label":"View","data-testid":"trail",style:{display:"flex",alignItems:"center",gap:8,fontSize:"0.875rem",minWidth:0,...s?{pointerEvents:"auto",padding:"4px 6px",borderRadius:8,background:"var(--graview-float)",boxShadow:"var(--graview-lift-low)",overflow:"hidden"}:{}},children:[R?(0,A.jsx)("button",{type:"button",onClick:()=>w(e),style:{border:"none",background:"none",padding:"3px 0",minHeight:24,whiteSpace:"nowrap",color:"var(--graview-ink-muted)"},children:o}):null,N.map(({key:z,node:B},Le)=>(0,A.jsxs)(vt.Fragment,{children:[R||Le>0?(0,A.jsx)("span",{style:{color:"var(--graview-ink-faint)"},children:"\u203A"}):null,B]},z)),d]})}var P=m($(),1);function pa(){let[e,o]=(0,oe.useState)([]),d=(0,oe.useCallback)(s=>{o(n=>{let w=s.phase!=="running"&&n[0]?.name===s.name&&n[0]?.at===s.at;return[s,...w?n.slice(1):n].slice(0,12)})},[]);return[e,d]}function ga({find:e,calls:o,seat:d,remembers:s=!1}){return e?(0,P.jsxs)(P.Fragment,{children:[(0,ca.createPortal)((0,P.jsx)(dt,{compact:e.compact}),e.slot),e.own?(0,ca.createPortal)((0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(oe.Suspense,{fallback:null,children:(0,P.jsx)(rt,{})}),(0,P.jsx)(Wa,{calls:o,remembers:s,...d!==void 0?{seat:d}:{}})]}),e.own):null]}):null}function va({home:e=null}){return(0,P.jsxs)("div",{"data-graview-scene-trail":"",style:{position:"absolute",top:14,left:14,maxWidth:"calc(100% - 150px - var(--graview-dock, 0px))",zIndex:D("overview"),display:"flex",alignItems:"center",gap:6,minWidth:0,pointerEvents:"none"},children:[(0,P.jsx)(ut,{home:e,onPicture:!0}),(0,P.jsx)("span",{style:{pointerEvents:"auto"},children:(0,P.jsx)(pt,{})})]})}var X=m(G(),1);var wt=m($(),1),cr=ie(()=>(__graviewPreload(import.meta.url,["./chunk.UGFDSE37.js","./chunk.YD3TKV6P.js","./chunk.4KC35UNR.js","./chunk.HT2BEOEV.js","./chunk.SDO3U72B.js","./chunk.7BBGRTXM.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.GP7F3PEF.js")));function ua(){let{store:e,principal:o}=T(),d=(0,X.useContext)(Ba),s=(0,X.useRef)(null),n=(0,X.useRef)(!1);return(0,X.useEffect)(()=>()=>void(n.current=!0),[]),(0,X.useEffect)(()=>{let w=e.batches().length,v=cr().then(g=>g.sceneWay(e,o,d,w,s.current),()=>{});return()=>void v.then(g=>g?.(n.current))},[e,o,d]),(0,wt.jsx)("span",{ref:s,hidden:!0})}var mt=m(G(),1);var y=m($(),1);function qi({address:e=!1,auto:o,quickAsk:d=!0,scheme:s,scope:n}){let w=(0,mt.useMemo)(()=>`${ta({scope:`.${n}`})}
1131
+ }`}function ra(e="dark",o={}){let d=At(e);return o.scope===void 0?d:Ea(d,o.scope)}var O=m(G(),1);var V=m($(),1),Ct=Ee(ie(()=>(__graviewPreload(import.meta.url,["./chunk.WC3DENU4.js","./chunk.VNDKKTED.js","./chunk.4MP72LPR.js","./chunk.SDO3U72B.js","./chunk.VSCIXAHN.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.NC7FXY2H.js")))).part(e=>(0,V.jsx)(e.MapKey,{}),{quiet:!0});function ia(){let{store:e}=T(),{view:o}=U(),d=Ce(),s=(0,O.useMemo)(()=>e.graph.allEdges().length>0,[e,d]),[n,w]=(0,O.useState)(!1),v=(0,O.useId)(),g=(0,O.useRef)(null),x=(0,O.useRef)(null);return(0,O.useEffect)(()=>{if(!n)return;let h=c=>{let C=c.target;C&&(x.current?.contains(C)||g.current?.contains(C))||w(!1)};return document.addEventListener("pointerdown",h,!0),()=>document.removeEventListener("pointerdown",h,!0)},[n]),s?(0,V.jsxs)("div",{style:{display:"contents"},onKeyDown:h=>{h.key!=="Escape"||!n||(h.preventDefault(),h.stopPropagation(),w(!1),g.current?.focus({preventScroll:!0}))},children:[(0,V.jsx)("button",{ref:g,type:"button","data-testid":"lines-key","aria-expanded":n,"aria-controls":v,title:"What the lines mean",onClick:()=>w(h=>!h),style:{position:"absolute",top:60,right:"calc(14px + var(--graview-dock, 0px))",zIndex:D("overview"),height:30,padding:"0 11px",borderRadius:8,borderColor:"transparent",fontSize:"0.8125rem",color:n?"var(--graview-accent)":"var(--graview-ink-muted)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-low)"},children:"Key"}),n?(0,V.jsxs)("div",{ref:x,id:v,"data-testid":"lines-key-pane","data-graview-offstage":"",style:{position:"absolute",top:98,right:"calc(14px + var(--graview-dock, 0px))",zIndex:D("rail"),width:tt,maxHeight:"calc(100cqh - 120px)",overflowY:"auto",boxSizing:"border-box",padding:"8px 8px",borderRadius:10,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)"},children:[o.overview?(0,V.jsx)(Ct,{}):null,(0,V.jsx)(at,{inside:!0,widthOf:Xa})]}):null]}):null}var ze=m(G(),1),Te=m($(),1);function it(e){return e.lens!==null?{what:"lens",kind:e.lens}:e.records.length===1&&e.districts.length===0?{what:"record",id:e.records[0]}:e.districts.length===1&&e.records.length===0?{what:"district",kind:e.districts[0]}:null}var Et=Ee(ie(()=>(__graviewPreload(import.meta.url,["./chunk.QI4SLPQ4.js","./chunk.7MHCGVGM.js","./chunk.FRYBMS3W.js","./chunk.3MOJF7BA.js","./chunk.LZIBQ3VX.js","./chunk.HJCQ6I3S.js","./chunk.QDSEVPF3.js","./chunk.7N32AVIJ.js","./chunk.3XGA65Y3.js","./chunk.BYKD5RLA.js","./chunk.2K4TT2BV.js","./chunk.VUBNBTJP.js","./chunk.OLFJH4RK.js","./chunk.67U6M7OV.js","./chunk.ZP5RT2EK.js","./chunk.VZJWJ5XM.js","./chunk.VFOON3Z3.js","./chunk.WVUJXDXZ.js","./chunk.7VKSXGTX.js","./chunk.TY4GQJKC.js","./chunk.6ZQAR5ZA.js","./chunk.W3W54DSX.js","./chunk.PI44XMY2.js","./chunk.KGW75Z5L.js","./chunk.GZHZLJBF.js","./chunk.IOK4GVJC.js","./chunk.OJGHDWI6.js","./chunk.TLJOZSDD.js","./chunk.MSWWWLEA.js","./chunk.UITT6JWW.js","./chunk.A5PDXNY6.js","./chunk.WC3DENU4.js","./chunk.VNDKKTED.js","./chunk.4MP72LPR.js","./chunk.SDO3U72B.js","./chunk.VSCIXAHN.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.QBLKTFF4.js")))),Rt=Et.part((e,o)=>(0,Te.jsx)(e.MapPanelFor,{showing:o.showing}),{what:"This panel",quiet:!0});function na(){let{store:e,view:o,selection:d,hiddenKinds:s,seatTalk:n}=T();Ce();let w=(0,ze.useSyncExternalStore)(n.subscribe,()=>n.get().draft!==null,()=>!1);if(!o.overview||w)return null;let v=it(ja(d,{...o,beside:!0},g=>e.graph.getNode(g)?.kind));return!v||v.what!=="record"&&(s.has(v.kind)||!e.schema.kinds.includes(v.kind))?null:(0,Te.jsx)(ze.Suspense,{fallback:null,children:(0,Te.jsx)(Rt,{showing:v})})}var Tt=m(G(),1);var W=m($(),1);function oa(){let{view:e,go:o}=U(),{store:d,views:s,hiddenKinds:n}=T(),w=e.overview??!1,v=s.places().map(E=>E.kind).filter(E=>!n.has(E)),g=Fa(e,d.schema.kinds,v),x=()=>{o($e(ee(e,!1),g))},h=(()=>{if(!g)return null;let E=Aa(g)[0],b=e.within?.view,R=(b?s.places().find(N=>N.as===b):void 0)??(E?s.places().filter(N=>N.kind===E).at(-1):void 0);return R?R.title:E?_(d.schema,E):d.graph.getNode(g)?.label??null})(),c=w?"Close the map":"Up",C=w&&h?`Close the map, down to ${h}`:c;return(0,W.jsxs)("button",{type:"button","data-testid":"overview",className:"graview-altitude-control","aria-pressed":w,"aria-label":C,title:w?C:"Up \u2014 the whole thing, from above",onClick:()=>w?x():o(ee(e,!0)),style:{position:"absolute",top:14,right:"calc(14px + var(--graview-dock, 0px))",zIndex:D("overview"),display:"inline-flex",alignItems:"center",justifyContent:"center",gap:7,height:38,padding:"0 13px 0 11px",borderRadius:8,borderColor:"transparent",fontSize:"0.875rem",whiteSpace:"nowrap",background:"var(--graview-float)",boxShadow:"var(--graview-lift-low)","--graview-altitude":w?1:0,...w?{color:"var(--graview-accent)"}:{}},children:[(0,W.jsxs)("svg",{className:"graview-altitude-mark",width:"16",height:"16",viewBox:"0 0 12 12","aria-hidden":"true",children:[(0,W.jsx)("ellipse",{className:"graview-altitude-mark-ring",cx:"6",cy:"6.6",rx:"5",ry:"2.6",fill:"none",stroke:"currentColor",strokeWidth:"0.9"}),(0,W.jsx)("circle",{className:"graview-altitude-mark-apex",cx:"6",cy:"4",r:"1.5",fill:"currentColor"}),(0,W.jsx)("circle",{className:"graview-altitude-mark-wing","data-side":"left",cx:"1.6",cy:"7.4",r:"1.2",fill:"currentColor"}),(0,W.jsx)("circle",{className:"graview-altitude-mark-wing","data-side":"right",cx:"10.4",cy:"7.4",r:"1.2",fill:"currentColor"})]}),(0,W.jsx)("span",{className:"graview-altitude-label",children:c})]})}var sa=m($(),1);function da(){let{administered:e}=T(),{view:o,go:d}=U(),s=e.filter(n=>n.canShow);return s.length===0?null:(0,sa.jsx)("div",{role:"group","aria-label":"Administered","data-testid":"administered",style:{display:"flex",gap:6},children:s.map(n=>(0,sa.jsx)("button",{type:"button","aria-pressed":n.shown,"data-testid":`show-${n.name}`,title:n.shown?`Hide the ${n.name}'s own districts again`:n.description??`Show the ${n.name}'s own districts beside the domain`,onClick:()=>d(Ua(o,n.name,!n.shown)),style:{padding:"3px 11px",borderRadius:999,fontSize:"0.875rem",borderWidth:1,borderStyle:"solid",borderColor:n.shown?"var(--graview-accent)":"var(--graview-edge)",color:n.shown?"var(--graview-accent)":"var(--graview-ink-muted)",background:n.shown?"var(--graview-panel)":"transparent"},children:n.shown?`Hide the ${n.name}`:`Show the ${n.name}`},n.name))})}var u=m(G(),1);var t=m($(),1);Ra({search:_a,touchWeights:qa});var ne=e=>e!==void 0&&"act"in e,Me=e=>e!==void 0&&"hit"in e&&e.hit.about==="node"?e:void 0,zt=e=>e.about==="rule"?"rule:":e.about==="act"?"act:":e.kind;function Mt(e){let o=()=>typeof window>"u"||window.innerWidth>=Ft,[d,s]=(0,u.useState)(o);return(0,u.useEffect)(()=>{let n=()=>s(o());return window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[]),d&&!e}function dt({compact:e=!1}){let{store:o,view:d,setView:s,principal:n,setMenuAt:w,brand:v,aiDesk:g,selection:x}=T(),h=Ia(g),c=Ta(),C=Ma(),E=Da().marks.flag,b=Mt(e),R=(0,u.useRef)(null),N=(0,u.useRef)(null),z=(0,u.useRef)(null),B=(0,u.useId)(),[Le,I]=(0,u.useState)(!1),[K,se]=(0,u.useState)(null),[ft,he]=(0,u.useState)(null),[Pe,be]=(0,u.useState)([]),M=d.q??"";(0,u.useEffect)(()=>{let a=r=>{if(r.defaultPrevented)return;let i=r.key.toLowerCase()==="k"&&(r.metaKey||r.ctrlKey)&&!r.altKey&&!r.shiftKey,l=r.key==="/"&&!r.metaKey&&!r.ctrlKey&&!r.altKey;if(!i&&!l)return;let p=R.current;if(!p)return;let f=p.closest("[data-graview-embed]"),S=r.target,J=S===document.body||S===document.documentElement||S===window;if(f&&!(i&&J||S instanceof Node&&f.contains(S)))return;let Z=document.activeElement,ge=Z instanceof HTMLInputElement||Z instanceof HTMLTextAreaElement||Z instanceof HTMLSelectElement||Z instanceof HTMLElement&&Z.isContentEditable;l&&ge||(r.preventDefault(),p.getClientRects().length===0&&p.closest("[data-graview-app-bar]")?.querySelector('[data-testid="app-find-open"]')?.click(),p.focus({preventScroll:!0}),p.select(),I(!0))};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[]);let Ne=(0,u.useMemo)(()=>{let a=new Map;for(let[i,l]of(c?.hits??[]).entries()){if(l.about==="act")continue;let p=zt(l),f=a.get(p)??[];f.push({id:`${B}-${i}`,hit:l}),a.set(p,f)}let r=[...a.values()].filter(i=>i.some(l=>l.hit.about==="node")).length>1;return[...a.entries()].map(([i,l])=>{let p=0,f=l.filter(ge=>ge.hit.about!=="node"||!r||++p<=Wt),S=f.filter(ge=>ge.hit.about==="node").length,J=i.endsWith(":")?l.length:c?.byKind[i]??S,Z=!i.endsWith(":")&&S>0&&J>S?{id:`${B}-all-${i}`,all:i,count:J}:null;return{key:i,rows:f,count:J,more:Z}})},[c,B]),ae=h&&M.trim()?{id:`${B}-ask`,ask:M.trim()}:null,k=(0,u.useMemo)(()=>[...Ne.flatMap(a=>a.more?[...a.rows,a.more]:a.rows),...ae?[ae]:[]],[Ne,ae?.ask]),wa=(c?.hits??[]).filter(a=>a.about==="node").length,xe=c?.words??M,Ie=(0,u.useMemo)(()=>Re(xe).split(" ").filter(Boolean),[xe]),F=(0,u.useCallback)(a=>a.hit.about==="node"?Ga(o,a.hit.id,xe,{principal:n,limit:Bt}).map((r,i)=>({id:`${a.id}-act-${i}`,act:r,of:a.id})):[],[o,xe,n]),He=k.find(a=>a.id===K),q=k.find(a=>a.id===ft)??He??k[0],de=(0,u.useMemo)(()=>b&&Me(q)?F(q):[],[b,q?.id,F]),ye=(0,u.useMemo)(()=>b?new Map:new Map(Pe.flatMap(a=>{let r=Me(k.find(i=>i.id===a));return r?[[a,F(r)]]:[]})),[b,Pe,k,F]),ht=(0,u.useMemo)(()=>b?new Set:new Set(k.flatMap(a=>Me(a)&&F(a).length>0?[a.id]:[])),[b,k,F]),Oe=(0,u.useMemo)(()=>b?de:[...ye.values()].flat(),[b,de,ye]),L=He??Oe.find(a=>a.id===K)??k[0];(0,u.useEffect)(()=>{se(null),he(null),be([])},[M]);let le=(0,u.useRef)(null);(0,u.useEffect)(()=>{let a=le.current;if(!a)return;le.current=null;let r=0,i=()=>{let l=document.querySelector(`[data-graview-view="aggregate:${CSS.escape(a)}"]`),p=document.activeElement;if(!(!p||p===document.body||p===document.documentElement||p===R.current||p===z.current||p===l))return;let S=[...l?.querySelectorAll('[role="group"][aria-label="Arrange"] :is(button, input)')??[]].find(J=>J.checkVisibility?.()??!0);if(S)return S.focus({preventScroll:!0});l&&l.tabIndex>=0&&p!==l&&l.focus({preventScroll:!0}),++r<240?requestAnimationFrame(i):document.activeElement===z.current&&z.current?.blur()};requestAnimationFrame(i)},[d]);let De=(a,r)=>{let i=document.querySelector(`[data-graview-view="aggregate:${CSS.escape(a)}"]`);if(i&&i.tabIndex>=0)return i.focus({preventScroll:!0});let l=z.current;if(!l)return R.current?.blur();l.setAttribute("aria-label",r),l.focus({preventScroll:!0})},ma=(0,u.useRef)({x:Number.NaN,y:Number.NaN,moved:!1});(0,u.useEffect)(()=>{let a=r=>{let i=ma.current;i.moved=r.clientX!==i.x||r.clientY!==i.y,i.x=r.clientX,i.y=r.clientY};return window.addEventListener("mousemove",a,{capture:!0,passive:!0}),()=>window.removeEventListener("mousemove",a,{capture:!0})},[]);let ce=(0,u.useRef)(void 0);(0,u.useEffect)(()=>()=>clearTimeout(ce.current),[]);let te=a=>{a&&(clearTimeout(ce.current),se(a.id),ne(a)||he(a.id))},fa=a=>{if(!ma.current.moved)return;let r=a.target.closest?.('[role="option"]')?.id;if(!r||r===K)return;let i=k.find(l=>l.id===r)??Oe.find(l=>l.id===r);i&&(se(i.id),!ne(i)&&(clearTimeout(ce.current),ce.current=setTimeout(()=>he(i.id),Kt)))},bt=()=>{clearTimeout(ce.current),q&&!ne(L)&&se(q.id)},xt=a=>be(r=>r.includes(a.id)?r.filter(i=>i!==a.id):[...r,a.id]),ha=a=>{let r=N.current,i=r?.querySelector('[role="option"]')?.getBoundingClientRect().height??0,l=r?.clientHeight??0;return Math.min(a,i>0&&l>0?Math.max(1,Math.floor(l/i)-1):Ot)};(0,u.useEffect)(()=>{K&&document.getElementById(K)?.scrollIntoView?.({block:"nearest"})},[K]);let We=a=>{if(!a)return;if("ask"in a){Na(g,{pointed:{...x[0]!==void 0?{on:x[0]}:{},about:x},asked:a.ask}),s(i=>Ye(i)),I(!1);return}if("all"in a)return s(i=>ue(ee(i,!1),ve(a.all),{ownPicture:!0,...i.q?{carry:i.q}:{}})),le.current=a.all,I(!1),De(a.all,`Opening ${_(o.schema,a.all)} matching \u201C${M.trim()}\u201D\u2026`);if(ne(a)){let i=a.act.subject;s(p=>Ae(p,[i]));let l=R.current?.getBoundingClientRect();w({x:l?.left??0,y:(l?.bottom??0)+6,on:i}),I(!1),R.current?.blur();return}let r=a.hit;switch(r.about){case"node":s(i=>Ae($e(ee(i,!1),r.id),[r.id]));break;case"kind":return s(i=>ue(ee(i,!1),ve(r.kind),{ownPicture:!0})),le.current=r.kind,I(!1),De(r.kind,`Opening ${r.label}\u2026`);case"place":return s(i=>Ca(i,r.kind,r.as)),le.current=r.kind,I(!1),De(r.kind,`Opening ${r.title}\u2026`);case"rule":{let i=C.filter(l=>l.invariant===r.name).flatMap(l=>l.nodeIds);s(l=>Ae(l,[...new Set(i)]));break}case"act":break}I(!1),R.current?.blur()},yt=c?Ht(c.byKind,c.hits,o.schema):"",pe=Le&&M.trim().length>0,kt=(0,u.useCallback)(()=>{let a=R.current?.closest("[data-graview-app-bar]")?.getBoundingClientRect();if(a)return{x:a.right,y:a.bottom-Ut};let r=R.current?.getBoundingClientRect();return r?{x:r.right,y:r.bottom}:null},[]),ba=Pa("find",{open:pe,onOpenChange:a=>{a||I(!1)},...e?{at:kt}:{}}),ke=k.every(a=>"ask"in a),xa=a=>ne(a)?Oe.filter(r=>r.of===a.of):[],St=a=>{let r=ne(L)&&K!==null,i=r?k.find(p=>p.id===L.of):K!==null?He:void 0,l=i?k.indexOf(i):-1;if(a.key==="ArrowDown"){if(a.preventDefault(),I(!0),r){let p=xa(L),f=p.indexOf(L)+1;if(f<p.length)return te(p[f]);if(b)return}te(k[Math.min(k.length-1,l+1)])}else if(a.key==="ArrowUp"){if(a.preventDefault(),r){let p=xa(L),f=p.indexOf(L)-1;return te(f>=0?p[f]:i)}te(k[Math.max(0,l-1)])}else if((a.key==="PageDown"||a.key==="PageUp")&&k.length>0){a.preventDefault(),I(!0);let p=a.key==="PageDown"?ha(k.length):-ha(k.length);te(k[Math.min(k.length-1,Math.max(0,(l<0?-1:l)+p))])}else if(a.key==="ArrowRight"&&!r&&Me(L)){let p=L,f=b?p.id===q?.id?de:F(p):ye.get(p.id)??F(p);if(f.length===0)return;a.preventDefault(),!b&&!Pe.includes(p.id)&&be(S=>[...S,p.id]),he(p.id),se(f[0].id)}else if(a.key==="ArrowLeft"&&r){a.preventDefault();let p=L.of;b||be(f=>f.filter(S=>S!==p)),te(k.find(f=>f.id===p))}else a.key==="Enter"?(a.preventDefault(),We(L)):a.key==="Escape"&&(a.preventDefault(),M?s(p=>Ye(p)):R.current?.blur())},Be=(a,r,i={},l={})=>{let p=a.id===L?.id;return(0,t.jsx)("div",{id:a.id,role:"option","aria-selected":p,onClick:()=>We(a),style:{...Zt,...p?er:null,...i},...l,children:r},a.id)},ya=(a,r)=>{let i=a.id===L?.id;return(0,t.jsx)("div",{id:a.id,role:"option","aria-selected":i,"data-testid":"find-act","data-about":"act",onClick:()=>We(a),style:{...r?ir:ct,...i?nr:null,...a.act.destructive?{color:"var(--graview-warn)"}:null},children:a.act.title},a.id)};return(0,t.jsxs)("div",{style:{position:"relative",minWidth:0,flex:"1 1 auto"},"data-testid":"find",children:[(0,t.jsx)("input",{ref:a=>{R.current=a,ba.trigger.ref(a)},"data-graview-popover-trigger":"find",type:"search",role:"combobox","aria-label":"Find anything","aria-expanded":pe,"aria-controls":B,"aria-autocomplete":"list",...pe&&L?{"aria-activedescendant":L.id}:{},"data-testid":"find-box",placeholder:"Find\u2026","aria-keyshortcuts":"/ Meta+K Control+K",value:M,onChange:a=>{let r=a.target.value;I(!0),s(i=>Va(i,r.length>0?r:null))},onFocus:()=>I(!0),onBlur:()=>I(!1),onKeyDown:St,style:{width:"100%",boxSizing:"border-box",minWidth:0,height:30,padding:"0 var(--graview-bar-find-end, 10px) 0 10px",font:"inherit",fontSize:"0.875rem",color:"var(--graview-ink)",background:"var(--graview-panel)",border:`1px solid ${M?"var(--graview-accent)":"var(--graview-edge)"}`,borderRadius:8}}),(0,t.jsx)("span",{role:"status","aria-live":"polite",style:qe,"data-testid":"find-count",children:M.trim()?yt:""}),(0,t.jsx)("span",{ref:z,tabIndex:-1,role:"status",style:qe,"data-testid":"find-landing"}),(0,t.jsxs)("div",{...ba.pane,id:B,role:"listbox","aria-label":M?`What \u201C${M}\u201D finds`:"What the words find","data-testid":"find-strip","data-graview-find":b?"panel":"narrow",hidden:!pe,onMouseDown:a=>a.preventDefault(),style:{..._t,...e?Vt:b&&!ke?Gt:null,...pe?{display:"flex"}:null},children:[(0,t.jsxs)("div",{style:{...Yt,gridTemplateColumns:b&&!ke?`minmax(0, 1fr) ${qt}`:"minmax(0, 1fr)"},children:[(0,t.jsxs)("div",{ref:N,role:"presentation","data-testid":"find-list",onMouseMove:fa,style:jt,children:[ke?(0,t.jsxs)("p",{role:"presentation",style:{margin:0,padding:"10px 12px",color:"var(--graview-ink-muted)",fontSize:"0.875rem"},"data-testid":"find-nothing",children:["Nothing here is called \u201C",c?.words||M,"\u201D."]}):Ne.map(a=>(0,t.jsxs)("div",{role:"group","aria-label":ot(a.key,o.schema),children:[(0,t.jsxs)("div",{role:"presentation",style:la,children:[a.key!=="rule:"&&a.key!=="act:"?(0,t.jsx)(lt,{kind:a.key,accents:v?.accents}):null,(0,t.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:ot(a.key,o.schema)}),(0,t.jsx)("span",{"aria-hidden":"true",style:Jt,"data-testid":"find-group-count",children:re(a.count)})]}),a.rows.map(r=>{let i=r.hit,l=i.about==="node"?i:null,p=!b&&l!==null&&ht.has(r.id),f=ye.get(r.id);return(0,t.jsxs)(u.Fragment,{children:[Be(r,(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(Pt,{hit:i,flag:E,words:l?.near&&l.why.matched?[...Ie,Re(l.why.matched)]:Ie}),p?(0,t.jsx)("span",{"aria-hidden":"true","data-testid":"find-acts-open","data-open":f?"":void 0,title:f?"Put its actions away":"Actions",onClick:S=>{S.stopPropagation(),xt(r)},style:{...sr,...f?dr:null},children:(0,t.jsxs)("svg",{width:"16",height:"16",viewBox:"0 0 16 16","aria-hidden":"true",children:[(0,t.jsx)("circle",{cx:"3.5",cy:"8",r:"1.4",fill:"currentColor"}),(0,t.jsx)("circle",{cx:"8",cy:"8",r:"1.4",fill:"currentColor"}),(0,t.jsx)("circle",{cx:"12.5",cy:"8",r:"1.4",fill:"currentColor"})]})}):null]}),p?{paddingRight:48}:{},{"data-testid":"find-hit","data-about":i.about,...l?.near?{"data-near":""}:{},title:It(i)}),f?(0,t.jsx)("div",{role:"group","aria-label":`What can be done about ${l?.label??"it"}`,style:or,children:f.map(S=>ya(S,!0))}):null]},r.id)}),a.more?Be(a.more,(0,t.jsxs)("span",{style:Q,children:["All ",re(a.more.count)," ",Se(o.schema,a.more.all).toLowerCase()," matching \u201C",M.trim(),"\u201D"]}),ar,{"data-testid":"find-all","data-about":"all"}):null]},a.key)),ae?Be(ae,(0,t.jsxs)("span",{style:Q,children:["Ask: ",(0,t.jsxs)("span",{style:{fontWeight:600},children:["\u2018",ae.ask,"\u2019"]})]}),{borderTop:"1px solid var(--graview-edge)",marginTop:4},{"data-testid":"find-ask"}):null,wa>Dt?(0,t.jsxs)("p",{role:"presentation",style:st,"data-testid":"find-more-words",children:[re(wa)," found: another word of the name narrows them."]}):null,c&&c.searched.past===!1&&c.searched.kinds.some(a=>o.schema.tryDefinition(a)?.lifecycle)?(0,t.jsx)("p",{role:"presentation",style:st,children:"Current ones; add is:any for the past."}):null]}),b&&!ke&&q?(0,t.jsxs)("div",{role:"group","aria-label":"The one lit","data-testid":"find-panel",onMouseEnter:bt,onMouseMove:fa,style:Qt,children:[(0,t.jsx)(Lt,{row:q,schema:o.schema,accents:v?.accents,marking:Ie,q:M.trim(),flag:E}),de.length>0?(0,t.jsxs)("div",{role:"group","aria-label":"Actions",style:{display:"grid",gap:4},children:[(0,t.jsx)("div",{role:"presentation",style:{...la,padding:"10px 0 4px"},children:"Actions"}),de.map(a=>ya(a,!1))]}):null]}):null]}),e?null:(0,t.jsxs)("div",{"aria-hidden":"true",style:lr,"data-testid":"find-keys",children:[(0,t.jsxs)("span",{children:[(0,t.jsx)("kbd",{style:fe,children:"\u2191"}),(0,t.jsx)("kbd",{style:fe,children:"\u2193"})," move"]}),(0,t.jsxs)("span",{children:[(0,t.jsx)("kbd",{style:fe,children:"\u21B5"})," open"]}),(0,t.jsxs)("span",{children:[(0,t.jsx)("kbd",{style:fe,children:"\u2192"})," actions"]}),(0,t.jsxs)("span",{children:[(0,t.jsx)("kbd",{style:fe,children:"esc"})," close"]})]})]})]})}function Lt({row:e,schema:o,accents:d,marking:s,q:n,flag:w}){let v=null,g="",x,h=null;if("ask"in e)g="Ask",x=`\u2018${e.ask}\u2019`,h=(0,t.jsx)("p",{style:Y,children:"Asks it of what is selected; the answer comes on a card beside it."});else if("all"in e)v=e.all,g=_(o,e.all),x=`All ${re(e.count)} matching \u201C${n}\u201D`,h=(0,t.jsxs)("p",{style:Y,children:["Opens the ",Se(o,e.all).toLowerCase(),", narrowed by these words."]});else{let c=e.hit;switch(c.about){case"node":{v=c.kind,g=nt(Sa(o.tryDefinition(c.kind),c.kind)),x=(0,t.jsxs)(t.Fragment,{children:[c.flagged?(0,t.jsxs)("span",{style:{color:"var(--graview-warn)"},children:[w," "]}):null,(0,t.jsx)(j,{text:c.label,words:s})]});let C=[c.apart,c.current?null:"past",c.archived?"set aside":null].filter(Boolean).join(" \xB7 ");h=(0,t.jsxs)(t.Fragment,{children:[C?(0,t.jsx)("p",{style:Y,children:nt(C)}):null,c.near?(0,t.jsxs)("p",{style:Y,children:["Near \u201C",c.why.asked,"\u201D",c.why.field!=="label"?` \u2014 ${c.why.reading.toLowerCase()}: ${c.why.fragment}`:""]}):c.why.field!=="label"?(0,t.jsxs)("p",{style:Y,children:[(0,t.jsx)("span",{style:{color:"var(--graview-ink-faint)"},children:c.why.reading}),(0,t.jsx)("br",{}),(0,t.jsx)(j,{text:c.why.fragment,words:s})]}):null]});break}case"kind":v=c.kind,g="Kind",x=c.label,h=(0,t.jsxs)("p",{style:Y,children:["Goes into the ",c.label.toLowerCase(),", all of them",c.count>0?`; ${re(c.count)} match these words`:"","."]});break;case"place":v=c.kind,g="Place",x=c.title,h=(0,t.jsxs)("p",{style:Y,children:["A picture of the ",Se(o,c.kind).toLowerCase(),"."]});break;case"rule":g="Rule",x=c.label,h=(0,t.jsx)("p",{style:Y,children:"Selects what it flags."});break;case"act":g="Act",x=c.title;break}}return(0,t.jsxs)("div",{role:"presentation","data-testid":"find-said",style:{display:"grid",gap:6},children:[(0,t.jsxs)("div",{style:{...la,padding:0},children:[v?(0,t.jsx)(lt,{kind:v,accents:d}):null,g]}),(0,t.jsx)("div",{style:Xt,children:x}),h]})}function Pt({hit:e,flag:o,words:d}){switch(e.about){case"node":return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("span",{style:tr,children:[e.flagged?(0,t.jsxs)("span",{style:{color:"var(--graview-warn)"},children:[o," "]}):null,(0,t.jsx)(j,{text:e.label,words:d}),e.apart?(0,t.jsxs)("span",{style:me,children:[" \xB7 ",e.apart]}):null,e.current?null:(0,t.jsx)("span",{style:me,children:" \xB7 past"})]}),e.near?(0,t.jsxs)("span",{style:{...Q,...me},"data-testid":"find-near",children:["Near \u201C",e.why.asked,"\u201D",e.why.field!=="label"?` \u2014 ${e.why.reading.toLowerCase()}: `:"",e.why.field!=="label"?(0,t.jsx)(j,{text:e.why.fragment,words:d}):null]}):e.why.field!=="label"?(0,t.jsxs)("span",{style:{...Q,...me},children:[e.why.reading.toLowerCase(),": ",(0,t.jsx)(j,{text:e.why.fragment,words:d})]}):null]});case"kind":return(0,t.jsxs)("span",{style:Q,children:[(0,t.jsx)(j,{text:e.label,words:d}),(0,t.jsxs)("span",{style:me,children:[" \xB7 ",e.count," match"]})]});case"place":return(0,t.jsxs)("span",{style:Q,children:["Go to ",(0,t.jsx)(j,{text:e.title,words:d})]});case"rule":return(0,t.jsxs)("span",{style:Q,children:["The rule \u201C",(0,t.jsx)(j,{text:e.label,words:d}),"\u201D"]});case"act":return(0,t.jsx)("span",{style:Q,children:e.title})}}function Nt(e,o){if(o.length===0)return[{text:e}];let d=[],s=0;for(let n of e.matchAll(/[\p{L}\p{N}]+/gu)){let w=n[0],v=Re(w).replace(/ /g,""),g=o.filter(c=>v.startsWith(c)).sort((c,C)=>C.length-c.length)[0];if(!g)continue;let x=v.length===w.length?g.length:w.length,h=n.index??0;h>s&&d.push({text:e.slice(s,h)}),d.push({text:w.slice(0,x),marked:!0}),s=h+x}return s<e.length&&d.push({text:e.slice(s)}),d}function j({text:e,words:o}){return(0,t.jsx)(t.Fragment,{children:Nt(e,o).map((d,s)=>d.marked?(0,t.jsx)("mark",{style:rr,children:d.text},s):(0,t.jsx)(u.Fragment,{children:d.text},s))})}function It(e){if(e.about!=="node")return"";let o=e.near?`Near \u201C${e.why.asked}\u201D`:e.why.field!=="label"?`${e.why.reading}: ${e.why.fragment}`:"";return o?`${e.label}
1132
+ ${o}`:e.label}var nt=e=>e&&e[0].toUpperCase()+e.slice(1);function lt({kind:e,accents:o}){let d=Math.round($a(e,o));return(0,t.jsx)("span",{"aria-hidden":"true",style:{width:8,height:8,borderRadius:2,flex:"0 0 auto",background:`hsl(${d} 55% 52%)`}})}function ot(e,o){return e==="rule:"?"Rules":e==="act:"?"Acts":_(o,e)}function Ht(e,o,d){let s=Object.entries(e).map(([v,g])=>ka(d,v,g)),n=o.filter(v=>v.about==="kind"||v.about==="place"||v.about==="rule").length;n>0&&s.push(`${n} ${n===1?"place or rule":"places and rules"}`);let w=o.filter(v=>v.about==="node"&&v.near).length;return s.length===0?"Nothing found":`${s.join(", ")} found${w>0?`, ${w} of them near`:""}`}var Ot=10,Dt=12,Wt=5,Bt=6,Kt=140,Ft=760,qt="15.5rem",_t={...La,flexDirection:"column",width:"min(26rem, calc(100vw - 24px))",maxHeight:"min(64vh, 30rem)",overflow:"hidden",boxSizing:"border-box",background:"linear-gradient(var(--graview-panel), var(--graview-panel)) var(--graview-ground, var(--graview-panel))",borderTop:"1px solid var(--graview-edge)",borderRight:"1px solid var(--graview-edge)",borderBottom:"1px solid var(--graview-edge)",borderLeft:"1px solid var(--graview-edge)",borderRadius:10,boxShadow:"0 10px 28px rgb(0 0 0 / 0.18)",padding:0},Gt={width:"min(42rem, calc(100vw - 24px))"},Ut=6,Vt={width:"var(--graview-bar-width, 100vw)",maxHeight:"55vh",borderRadius:0,borderLeft:"none",borderRight:"none"},Yt={display:"grid",gridTemplateRows:"minmax(0, 1fr)",flex:"1 1 auto",minHeight:0},jt={overflowY:"auto",overflowX:"hidden",minHeight:0,padding:"4px 0",overscrollBehavior:"contain"},Qt={overflowY:"auto",minHeight:0,padding:"12px 14px",borderLeft:"1px solid var(--graview-edge)",background:"var(--graview-panel-muted)",display:"flex",flexDirection:"column",gap:4},Xt={fontWeight:600,fontSize:"0.9375rem",lineHeight:1.35,color:"var(--graview-ink)",overflowWrap:"anywhere"},Y={margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)",overflowWrap:"anywhere"},la={display:"flex",alignItems:"center",gap:6,padding:"10px 12px 4px",fontSize:"0.6875rem",fontWeight:600,letterSpacing:"0.06em",textTransform:"uppercase",color:"var(--graview-ink-muted)"},Jt={marginLeft:"auto",fontWeight:400,letterSpacing:0,fontVariantNumeric:"tabular-nums",color:"var(--graview-ink-faint)"},Zt={position:"relative",display:"grid",gap:1,minHeight:34,padding:"5px 12px",alignContent:"center",cursor:"pointer",fontSize:"0.875rem",lineHeight:1.35,color:"var(--graview-ink)",minWidth:0},er={background:"color-mix(in srgb, var(--graview-accent) 12%, var(--graview-panel))",boxShadow:"inset 3px 0 0 var(--graview-accent)"},ar={color:"var(--graview-accent)",fontSize:"0.8125rem",minHeight:30},Q={display:"block",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},tr={display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:2,minWidth:0,overflow:"hidden",overflowWrap:"anywhere",fontWeight:600},me={color:"var(--graview-ink-muted)",fontSize:"0.8125rem",fontWeight:400},rr={background:"color-mix(in srgb, var(--graview-accent) 24%, transparent)",color:"inherit",borderRadius:2,padding:0,boxShadow:"0 1px 0 color-mix(in srgb, var(--graview-accent) 70%, transparent)"},ct={display:"flex",alignItems:"center",minHeight:32,padding:"4px 10px",boxSizing:"border-box",borderWidth:1,borderStyle:"solid",borderColor:"var(--graview-edge)",borderRadius:6,background:"var(--graview-panel)",color:"var(--graview-ink)",fontSize:"0.8125rem",lineHeight:1.3,cursor:"pointer",overflowWrap:"anywhere"},ir={...ct,minHeight:32,margin:"0 12px 4px 24px"},nr={borderColor:"var(--graview-accent)",boxShadow:"inset 0 0 0 1px var(--graview-accent)",background:"color-mix(in srgb, var(--graview-accent) 12%, var(--graview-panel))"},or={display:"grid",padding:"2px 0 6px"},sr={position:"absolute",top:"50%",right:6,transform:"translateY(-50%)",width:36,height:32,display:"grid",placeItems:"center",borderRadius:6,color:"var(--graview-ink-muted)",borderWidth:1,borderStyle:"solid",borderColor:"transparent"},dr={color:"var(--graview-accent)",borderColor:"var(--graview-edge)",background:"var(--graview-panel)"},st={margin:0,padding:"6px 12px 4px",color:"var(--graview-ink-faint)",fontSize:"0.75rem"},lr={display:"flex",flexWrap:"wrap",gap:"4px 14px",padding:"7px 12px",borderTop:"1px solid var(--graview-edge)",color:"var(--graview-ink-faint)",fontSize:"0.75rem",flex:"0 0 auto"},fe={display:"inline-block",minWidth:16,padding:"0 4px",marginRight:3,border:"1px solid var(--graview-edge)",borderRadius:4,font:"inherit",fontSize:"0.6875rem",lineHeight:"16px",textAlign:"center",color:"var(--graview-ink-muted)",background:"var(--graview-panel)"};var oe=m(G(),1);var ca=m($t(),1);var gt=m($(),1);function pt(){let{following:e,follow:o}=T();return e?(0,gt.jsxs)("button",{type:"button","data-testid":"following-who",onClick:()=>o(null),title:"Press, or Escape, to stop following",style:{display:"inline-flex",alignItems:"center",gap:6,minHeight:24,padding:"2px 9px",borderRadius:999,border:"1px solid var(--graview-accent)",background:"transparent",color:"var(--graview-accent)",fontSize:"0.875rem",whiteSpace:"nowrap"},children:["following ",e.name]}):null}var vt=m(G(),1);var A=m($(),1);function ut({home:e,homeLabel:o,children:d,onPicture:s=!1}){let{view:n,focus:w,show:v,go:g}=U(),{store:x}=T(),{movedByHand:h}=T(),c=h&&(n.pan!==void 0||Object.keys(n.pins).length>0),C=n.focusId&&n.focusId!==e?x.graph.getNode(n.focusId):void 0,E=z=>_(x.schema,z),b={display:"inline-flex",alignItems:"center",gap:6,minHeight:26,padding:"2px 6px",fontSize:"0.8125rem",borderRadius:6,border:"1px solid transparent",boxShadow:"none",background:"transparent",color:"var(--graview-ink-muted)",whiteSpace:"nowrap"},R=o!==void 0&&C!==void 0,N=[];if(C&&!s&&N.push({key:"focused",node:(0,A.jsxs)("button",{type:"button","data-testid":"focused",onClick:()=>g(Fe({...n,focusId:e},!1)),title:Ge(x,C.id),style:{...b,maxWidth:"min(14rem, 15vw)"},children:[(0,A.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis"},children:Ge(x,C.id)}),(0,A.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\xD7"})]})}),n.past&&N.push({key:"past",node:(0,A.jsxs)("button",{type:"button","data-testid":"past",onClick:()=>g(Ya(n,!1)),title:"Back to now \u2014 retired things leave the picture again",style:b,children:["the past",(0,A.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\xD7"})]})}),n.zoom&&N.push({key:"zoomed",node:(0,A.jsxs)("button",{type:"button","data-testid":"zoomed",onClick:()=>g(Fe(n,!1)),title:"Zoom back out",style:b,children:["zoomed in",(0,A.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\xD7"})]})}),c&&N.push({key:"moved",node:(0,A.jsx)("button",{type:"button","data-testid":"moved",onClick:()=>g(Ke(n)),title:"Put the camera and everything you dragged back where the layout wanted them",style:b,children:"Reset view"})}),n.relation){let z=n.relation;N.push({key:"raised",node:(0,A.jsxs)("span",{style:{display:"inline-flex",alignItems:"center"},children:[(0,A.jsxs)("button",{type:"button","data-testid":"raised-into",onClick:()=>g(ue(n,ve(z),{ownPicture:!0})),title:`Go into the ${E(z).toLowerCase()}`,"aria-label":`Go into the ${E(z).toLowerCase()}`,style:{...b,color:"var(--graview-ink)"},children:[E(z),(0,A.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\u2198"})]}),(0,A.jsx)("button",{type:"button","data-testid":"raised",onClick:()=>v(null),title:`Stop showing ${E(z).toLowerCase()}`,"aria-label":`Stop showing ${E(z).toLowerCase()}`,style:{...b,minWidth:26,justifyContent:"center"},children:(0,A.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\xD7"})})]})})}return s&&!R&&N.length===0&&d===void 0?null:(0,A.jsxs)("nav",{"aria-label":"View","data-testid":"trail",style:{display:"flex",alignItems:"center",gap:8,fontSize:"0.875rem",minWidth:0,...s?{pointerEvents:"auto",padding:"4px 6px",borderRadius:8,background:"var(--graview-float)",boxShadow:"var(--graview-lift-low)",overflow:"hidden"}:{}},children:[R?(0,A.jsx)("button",{type:"button",onClick:()=>w(e),style:{border:"none",background:"none",padding:"3px 0",minHeight:24,whiteSpace:"nowrap",color:"var(--graview-ink-muted)"},children:o}):null,N.map(({key:z,node:B},Le)=>(0,A.jsxs)(vt.Fragment,{children:[R||Le>0?(0,A.jsx)("span",{style:{color:"var(--graview-ink-faint)"},children:"\u203A"}):null,B]},z)),d]})}var P=m($(),1);function pa(){let[e,o]=(0,oe.useState)([]),d=(0,oe.useCallback)(s=>{o(n=>{let w=s.phase!=="running"&&n[0]?.name===s.name&&n[0]?.at===s.at;return[s,...w?n.slice(1):n].slice(0,12)})},[]);return[e,d]}function ga({find:e,calls:o,seat:d,remembers:s=!1}){return e?(0,P.jsxs)(P.Fragment,{children:[(0,ca.createPortal)((0,P.jsx)(dt,{compact:e.compact}),e.slot),e.own?(0,ca.createPortal)((0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(oe.Suspense,{fallback:null,children:(0,P.jsx)(rt,{})}),(0,P.jsx)(Wa,{calls:o,remembers:s,...d!==void 0?{seat:d}:{}})]}),e.own):null]}):null}function va({home:e=null}){return(0,P.jsxs)("div",{"data-graview-scene-trail":"",style:{position:"absolute",top:14,left:14,maxWidth:"calc(100% - 150px - var(--graview-dock, 0px))",zIndex:D("overview"),display:"flex",alignItems:"center",gap:6,minWidth:0,pointerEvents:"none"},children:[(0,P.jsx)(ut,{home:e,onPicture:!0}),(0,P.jsx)("span",{style:{pointerEvents:"auto"},children:(0,P.jsx)(pt,{})})]})}var X=m(G(),1);var wt=m($(),1),cr=ie(()=>(__graviewPreload(import.meta.url,["./chunk.Q355UPFG.js","./chunk.WC3DENU4.js","./chunk.VNDKKTED.js","./chunk.4MP72LPR.js","./chunk.SDO3U72B.js","./chunk.VSCIXAHN.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.TKVLNBRD.js")));function ua(){let{store:e,principal:o}=T(),d=(0,X.useContext)(Ba),s=(0,X.useRef)(null),n=(0,X.useRef)(!1);return(0,X.useEffect)(()=>()=>void(n.current=!0),[]),(0,X.useEffect)(()=>{let w=e.batches().length,v=cr().then(g=>g.sceneWay(e,o,d,w,s.current),()=>{});return()=>void v.then(g=>g?.(n.current))},[e,o,d]),(0,wt.jsx)("span",{ref:s,hidden:!0})}var mt=m(G(),1);var y=m($(),1);function qi({address:e=!1,auto:o,quickAsk:d=!0,scheme:s,scope:n}){let w=(0,mt.useMemo)(()=>`${ta({scope:`.${n}`})}
1133
1133
  ${ra(s,{scope:`.${n}`})}`,[s,n]),v=Ka(),[g]=pa();return(0,y.jsx)(za.Provider,{value:!0,children:(0,y.jsxs)("div",{"data-embed-content":"",style:{position:"relative",flex:o?`0 0 ${et}px`:"1 1 auto",minHeight:0,containerType:"size"},children:[(0,y.jsx)("style",{children:w}),e?(0,y.jsx)(Za,{}):null,(0,y.jsx)(Ja,{}),(0,y.jsx)(va,{}),(0,y.jsx)(oa,{}),(0,y.jsx)(ia,{}),(0,y.jsxs)(Qa,{children:[(0,y.jsx)(Xe,{}),(0,y.jsx)(Je,{face:"scene",on:d}),(0,y.jsx)(na,{}),(0,y.jsx)(Ue,{children:(0,y.jsx)(je,{children:(0,y.jsx)(Ze,{children:(0,y.jsx)(aa,{children:(0,y.jsx)(Qe,{placement:"menu"})})})})}),(0,y.jsx)(Ve,{}),(0,y.jsx)(ea,{}),(0,y.jsx)(ga,{find:v,calls:g}),(0,y.jsx)(ua,{}),(0,y.jsx)(_e,{face:"scene"})]})]})})}function _i(){return(0,y.jsx)(da,{})}export{qi as SceneFace,_i as SceneKeeping};
@@ -1 +1 @@
1
- var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{s as P}from"./chunk.ELERUERU.js";import{G as M,Ga as S,O as w,T as y,ba as m,ca as I,s as b,w as T,x as A}from"./chunk.HT2BEOEV.js";import{a as p}from"./chunk.SDO3U72B.js";import{b as f}from"./chunk.AJZBJBMO.js";var C=f(M(),1),h=f(y(),1),x=S(p(()=>(__graviewPreload(import.meta.url,["./chunk.HZB5F476.js","./chunk.YD3TKV6P.js","./chunk.4KC35UNR.js","./chunk.HT2BEOEV.js","./chunk.SDO3U72B.js","./chunk.7BBGRTXM.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.E5MSFXL6.js")))),O=x.part((e,n)=>(0,h.jsx)(e.Timeline,{...n}),{what:"The timeline"}),q=()=>x.prefetch();function K({face:e}){return w()?.open?(0,h.jsx)(C.Suspense,{fallback:null,children:(0,h.jsx)(O,{face:e})}):null}var i=f(M(),1),u=f(y(),1),v=new WeakMap,D=e=>{let n=v.get(e);return n||v.set(e,n={ask:null,doors:[],listeners:new Set}),n},k=e=>{for(let n of e.listeners)n()};function g(e,n){let t=D(e);t.ask=n,k(t)}var N=S(p(()=>(__graviewPreload(import.meta.url,["./chunk.XN2RVXOI.js","./chunk.HZB5F476.js","./chunk.5ICIMQE6.js","./chunk.QGV7H7RQ.js","./chunk.YIA2EDVF.js","./chunk.YD3TKV6P.js","./chunk.4KC35UNR.js","./chunk.HT2BEOEV.js","./chunk.SDO3U72B.js","./chunk.7BBGRTXM.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.IULQRCEE.js")))),B=N.part((e,n)=>{let t=e.NotifySheet;return(0,u.jsx)(t,{...n})},{what:"Notify me"}),W=N.part((e,n)=>{let t=e.NotifiedList;return(0,u.jsx)(t,{...n})},{quiet:!0}),E=(e,n)=>n===void 0&&(e.onBehalfOf??e).id!==void 0;function F(e,n,t){let c=d=>t.tryDefinition(d)?.noun??d.replace(/[-_]+/g," "),o=e.on!==void 0?e.on:e.about.length===1?e.about[0]:void 0;if(e.act!==void 0){let d=o!==void 0&&n(o)!==void 0?o:void 0;return{label:"Notify me when someone does this\u2026",choices:[{on:"act",act:e.act,...d!==void 0?{record:d}:{}},...d!==void 0?[{on:"act",act:e.act}]:[]]}}if(o===void 0)return null;let s=n(o);if(s!==void 0)return{label:"Notify me when this changes\u2026",choices:[{on:"changed",record:o},{on:"act",record:o},{on:"reaches",kind:s,condition:"",record:o}]};let r=b(o)!==null?[b(o)]:T(o)?A(o):[];if(r.length!==1||!t.kinds.includes(r[0]))return null;let l=r[0],a=c(l);return{label:`Notify me when ${/^[aeiou]/i.test(a)?"an":"a"} ${a} is added\u2026`,choices:[{on:"created",kind:l},{on:"changed",kind:l},{on:"reaches",kind:l,condition:""}]}}function L(){let{store:e,principal:n,subscriptions:t,signIn:c}=m(),o=E(n,c);return(0,i.useMemo)(()=>o?s=>{let r=F(s,a=>e.graph.getNode(a)?.kind,e.schema);return r?{id:"notify",items:[{id:"notify-me",label:r.label,run:()=>g(t,{choices:r.choices,returnTo:s.element??null})}],prepare:()=>N.prefetch()}:null}:null,[o,e,t])}var z=[];function U({children:e}){let n=L(),t=(0,i.useMemo)(()=>n?[n]:z,[n]);return(0,u.jsx)(P,{sections:t,children:e})}function V(){let{subscriptions:e}=m(),n=(0,i.useId)(),t=D(e);(0,i.useEffect)(()=>(t.doors.push(n),k(t),()=>{t.doors.splice(t.doors.indexOf(n),1),k(t)}),[t,n]);let c=(0,i.useMemo)(()=>r=>(t.listeners.add(r),()=>void t.listeners.delete(r)),[t]),o=(0,i.useSyncExternalStore)(c,()=>t.ask,()=>null),s=(0,i.useSyncExternalStore)(c,()=>t.doors[0]===n,()=>!1);return!o||!s?null:(0,u.jsx)(i.Suspense,{fallback:null,children:(0,u.jsx)(B,{ask:o,close:()=>g(e,null)})})}function X({choices:e,label:n="Notify me",style:t,className:c,testId:o="notify-me"}){let{principal:s,subscriptions:r,signIn:l}=m();return E(s,l)?(0,u.jsx)("button",{type:"button","data-testid":o,className:c,onClick:a=>g(r,{choices:e,returnTo:a.currentTarget}),style:t,children:n}):null}function G(){let e=I(),n=e?.subscriptions,t=e?(e.principal.onBehalfOf??e.principal).id:void 0,[c,o]=(0,i.useState)(0);return(0,i.useEffect)(()=>{if(t===void 0||!n)return;let s=!0,r=()=>void Promise.resolve(n.list(t)).then(a=>s&&o(a.length),()=>s&&o(0));r();let l=n.onChange?.(r);return()=>{s=!1,l?.()}},[n,t]),c}function Y({style:e}){return G()===0?null:(0,u.jsx)(i.Suspense,{fallback:null,children:(0,u.jsx)(W,{...e?{style:e}:{}})})}export{q as a,K as b,L as c,U as d,V as e,X as f,G as g,Y as h};
1
+ var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{s as P}from"./chunk.IOK4GVJC.js";import{G as M,Ga as S,O as w,T as y,ba as m,ca as I,s as b,w as T,x as A}from"./chunk.4MP72LPR.js";import{a as p}from"./chunk.SDO3U72B.js";import{b as f}from"./chunk.AJZBJBMO.js";var C=f(M(),1),h=f(y(),1),x=S(p(()=>(__graviewPreload(import.meta.url,["./chunk.RQOX5YDW.js","./chunk.WC3DENU4.js","./chunk.VNDKKTED.js","./chunk.4MP72LPR.js","./chunk.SDO3U72B.js","./chunk.VSCIXAHN.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.JPONLMU7.js")))),O=x.part((e,n)=>(0,h.jsx)(e.Timeline,{...n}),{what:"The timeline"}),q=()=>x.prefetch();function K({face:e}){return w()?.open?(0,h.jsx)(C.Suspense,{fallback:null,children:(0,h.jsx)(O,{face:e})}):null}var i=f(M(),1),u=f(y(),1),v=new WeakMap,D=e=>{let n=v.get(e);return n||v.set(e,n={ask:null,doors:[],listeners:new Set}),n},k=e=>{for(let n of e.listeners)n()};function g(e,n){let t=D(e);t.ask=n,k(t)}var N=S(p(()=>(__graviewPreload(import.meta.url,["./chunk.F6V7RWDK.js","./chunk.RQOX5YDW.js","./chunk.W3W54DSX.js","./chunk.PI44XMY2.js","./chunk.KGW75Z5L.js","./chunk.WC3DENU4.js","./chunk.VNDKKTED.js","./chunk.4MP72LPR.js","./chunk.SDO3U72B.js","./chunk.VSCIXAHN.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.4LR64TPU.js")))),B=N.part((e,n)=>{let t=e.NotifySheet;return(0,u.jsx)(t,{...n})},{what:"Notify me"}),W=N.part((e,n)=>{let t=e.NotifiedList;return(0,u.jsx)(t,{...n})},{quiet:!0}),E=(e,n)=>n===void 0&&(e.onBehalfOf??e).id!==void 0;function F(e,n,t){let c=d=>t.tryDefinition(d)?.noun??d.replace(/[-_]+/g," "),o=e.on!==void 0?e.on:e.about.length===1?e.about[0]:void 0;if(e.act!==void 0){let d=o!==void 0&&n(o)!==void 0?o:void 0;return{label:"Notify me when someone does this\u2026",choices:[{on:"act",act:e.act,...d!==void 0?{record:d}:{}},...d!==void 0?[{on:"act",act:e.act}]:[]]}}if(o===void 0)return null;let s=n(o);if(s!==void 0)return{label:"Notify me when this changes\u2026",choices:[{on:"changed",record:o},{on:"act",record:o},{on:"reaches",kind:s,condition:"",record:o}]};let r=b(o)!==null?[b(o)]:T(o)?A(o):[];if(r.length!==1||!t.kinds.includes(r[0]))return null;let l=r[0],a=c(l);return{label:`Notify me when ${/^[aeiou]/i.test(a)?"an":"a"} ${a} is added\u2026`,choices:[{on:"created",kind:l},{on:"changed",kind:l},{on:"reaches",kind:l,condition:""}]}}function L(){let{store:e,principal:n,subscriptions:t,signIn:c}=m(),o=E(n,c);return(0,i.useMemo)(()=>o?s=>{let r=F(s,a=>e.graph.getNode(a)?.kind,e.schema);return r?{id:"notify",items:[{id:"notify-me",label:r.label,run:()=>g(t,{choices:r.choices,returnTo:s.element??null})}],prepare:()=>N.prefetch()}:null}:null,[o,e,t])}var z=[];function U({children:e}){let n=L(),t=(0,i.useMemo)(()=>n?[n]:z,[n]);return(0,u.jsx)(P,{sections:t,children:e})}function V(){let{subscriptions:e}=m(),n=(0,i.useId)(),t=D(e);(0,i.useEffect)(()=>(t.doors.push(n),k(t),()=>{t.doors.splice(t.doors.indexOf(n),1),k(t)}),[t,n]);let c=(0,i.useMemo)(()=>r=>(t.listeners.add(r),()=>void t.listeners.delete(r)),[t]),o=(0,i.useSyncExternalStore)(c,()=>t.ask,()=>null),s=(0,i.useSyncExternalStore)(c,()=>t.doors[0]===n,()=>!1);return!o||!s?null:(0,u.jsx)(i.Suspense,{fallback:null,children:(0,u.jsx)(B,{ask:o,close:()=>g(e,null)})})}function X({choices:e,label:n="Notify me",style:t,className:c,testId:o="notify-me"}){let{principal:s,subscriptions:r,signIn:l}=m();return E(s,l)?(0,u.jsx)("button",{type:"button","data-testid":o,className:c,onClick:a=>g(r,{choices:e,returnTo:a.currentTarget}),style:t,children:n}):null}function G(){let e=I(),n=e?.subscriptions,t=e?(e.principal.onBehalfOf??e.principal).id:void 0,[c,o]=(0,i.useState)(0);return(0,i.useEffect)(()=>{if(t===void 0||!n)return;let s=!0,r=()=>void Promise.resolve(n.list(t)).then(a=>s&&o(a.length),()=>s&&o(0));r();let l=n.onChange?.(r);return()=>{s=!1,l?.()}},[n,t]),c}function Y({style:e}){return G()===0?null:(0,u.jsx)(i.Suspense,{fallback:null,children:(0,u.jsx)(W,{...e?{style:e}:{}})})}export{q as a,K as b,L as c,U as d,V as e,X as f,G as g,Y as h};
@@ -1,3 +1,3 @@
1
- import{F as j,Fa as X,H as J,I as B,K as F,Mb as z,Na as v,Q as G,T as C,Tb as tn,U as Q,V as U,W as P,Ya as nn,aa as I,ab as en,ca as K,na as Z}from"./chunk.7BBGRTXM.js";var fn=1e4,y=class{constructor(a){this.nodes=a}},on=Symbol.for("@graview/core:far-record"),cn=e=>typeof e=="object"&&e!==null&&e[on]===!0;function pn(e){let a={...e.fields,id:`@${e.address}/${e.kind}:${e.id}`,kind:`@${e.address}/${e.kind}`,label:e.label};return Object.defineProperty(a,on,{value:!0}),a}function Rn(e){let a=`the linked record in ${e.ref.address}`;return e.reason==="denied"?`${a} is not one this viewer may open`:`${a} has not been read`}var gn="",u=class extends Error{constructor(f,c){super(f);this.sentence=f;this.at=c}},W=class extends u{},M=e=>e!==null&&typeof e=="object"&&!Array.isArray(e)&&!(e instanceof y)&&typeof e.id=="string",rn=e=>{let a=new Set;return new y(e.filter(f=>!a.has(f.id)&&a.add(f.id)))},w=e=>e===null?"nothing":e instanceof y?"a set of records":Array.isArray(e)?"a list":M(e)?"a record":typeof e=="string"?"a word":typeof e;function an(e,a){let f=a.budget??fn,c=(n,s)=>{if(f-=n,f<0)throw new W("this rule looks at too much of the graph to judge in one go",s)},d=a.today??F(),b=a.now??new Date().toISOString(),k=new Map,x=new Set,A=a.bindings,H=(n,s,t,o)=>{let l=`${n?.id}\0${s}`;if(k.has(l))return k.get(l);if(x.has(l))throw new u(`"${s}"${n?` of ${Z(n.kind)}`:""} depends on itself`,o);x.add(l);let r=A;A=void 0;try{let i=$(t,n);return k.set(l,i),i}finally{A=r,x.delete(l)}},E=(n,s,t)=>{c(1,t);let o=a.kinds.get(n.kind),l=o?.computed?.get(s);if(l)return H(n,s,l,t);let r=o?.linked?.get(s);if(r){let g=X(Object.hasOwn(n,s)?n[s]:void 0,r);c(g.length,t);let m=a.linked??v(a.graph),h=g.flatMap(N=>{let _=m?m(N):{unread:!0};return"record"in _?[pn(_.record)]:(a.onUnread?.({relation:s,ref:N,reason:"denied"in _?"denied":"unread"}),[])});return r.cardinality==="one"?h[0]??null:new y(h)}let i=Object.hasOwn(n,s);if(o?.fields.has(s)||i){let g=i?nn(n,s,d):void 0;return g===void 0?null:g}let p=o?.edges.get(s);if(p){let g=a.graph.out(n.id,s);return c(g.length,t),p==="one"?g[0]??null:new y(g)}if(s==="id")return n.id;if(cn(n))return null;throw new u(`${Z(n.kind)} has no field or relation called "${s}"`,t)},S=(n,s,t)=>{if(n instanceof y)return n;if(n===null)return new y([]);if(M(n))return new y([n]);throw new u(`${t}(\u2026) needs a set of records, and was given ${w(n)}`,s)},V=(n,s,t)=>{if(n===null)return null;if(typeof n=="string")return n;if(typeof n=="number"||typeof n=="boolean")return String(n);throw new u(`${t}(\u2026) needs a word, and was given ${w(n)}`,s)},D=(n,s,t)=>{let o=V(n,s,t);if(o===null)return null;let l=Date.parse(o.length===10?`${o}T00:00:00Z`:o);if(Number.isNaN(l))throw new u(`${t}(\u2026) needs a date, and "${o}" is not one`,s);return l},O=(n,s)=>M(n)&&M(s)?n.id===s.id:M(n)&&typeof s=="string"?n.id===s:typeof n=="string"&&M(s)?n===s.id:Array.isArray(n)&&Array.isArray(s)?n.length===s.length&&n.every((t,o)=>O(t,s[o])):n===s,R=(n,s,t)=>{if(n===null)return!1;if(typeof n=="boolean")return n;throw new u(`${t} must be true or false, and was ${w(n)}`,s)},T=(n,s)=>$(s,n);function $(n,s){switch(c(1,n.at),n.t){case"lit":return n.value;case"list":return n.items.map(t=>$(t,s));case"ident":{let t=A&&Object.hasOwn(A,n.name)?A[n.name]:void 0;if(t!==void 0)return t;if(s)return E(s,n.name,n.at);throw new u(`"${n.name}" means nothing in a rule over the whole graph`,n.at)}case"member":{let t=$(n.object,s);if(t===null)return null;if(M(t))return E(t,n.name,n.at);throw new u(`".${n.name}" needs a record before it, and was given ${w(t)}`,n.at)}case"unary":{let t=$(n.operand,s);if(n.op==="!")return!R(t,n.at,"what follows not");if(t===null)return null;if(typeof t!="number")throw new u(`"-" needs a number, and was given ${w(t)}`,n.at);return-t}case"where":{let t=S($(n.set,s),n.at,"where");return c(t.nodes.length,n.at),new y(t.nodes.filter(o=>R(T(o,n.filter),n.at,"a where condition")))}case"binary":return ln(n,s);case"call":return un(n,s)}}function ln(n,s){if(n.op==="&&")return R($(n.left,s),n.at,"each side of and")&&R($(n.right,s),n.at,"each side of and");if(n.op==="||")return R($(n.left,s),n.at,"each side of or")||R($(n.right,s),n.at,"each side of or");let t=$(n.left,s),o=$(n.right,s);if(n.op==="&"||n.op==="|"||n.op==="-"&&(t instanceof y||o instanceof y)){let l=S(t,n.at,n.op).nodes,r=S(o,n.at,n.op).nodes;c(l.length+r.length,n.at);let i=new Set(r.map(p=>p.id));return rn(n.op==="|"?[...l,...r]:l.filter(p=>i.has(p.id)===(n.op==="&")))}switch(n.op){case"==":return O(t,o);case"!=":return!O(t,o);case"in":{if(o===null)return!1;if(o instanceof y)return o.nodes.some(l=>O(t,l));if(Array.isArray(o))return o.some(l=>O(t,l));if(typeof o=="string"&&typeof t=="string")return o.includes(t);throw new u(`"in" needs a list or a set on its right, and was given ${w(o)}`,n.at)}case"<":case"<=":case">":case">=":{if(t===null||o===null)return!1;if(!(typeof t=="number"&&typeof o=="number"||typeof t=="string"&&typeof o=="string"))throw new u(`cannot compare ${w(t)} with ${w(o)}`,n.at);return n.op==="<"?t<o:n.op==="<="?t<=o:n.op===">"?t>o:t>=o}default:{if(t===null||o===null)return null;if(n.op==="+"&&(typeof t=="string"||typeof o=="string")){let l=`${V(t,n.at,"+")}${V(o,n.at,"+")}`;if(l.length>1e4)throw new u("that makes a word too long",n.at);return l}if(typeof t!="number"||typeof o!="number")throw new u(`"${n.op}" needs numbers, and was given ${w(t)} and ${w(o)}`,n.at);return(n.op==="/"||n.op==="%")&&o===0?null:n.op==="+"?t+o:n.op==="-"?t-o:n.op==="*"?t*o:n.op==="/"?t/o:t%o}}}function un(n,s){let t=(r,i=r)=>{if(n.args.length<r||n.args.length>i)throw new u(`${n.fn}(\u2026) takes ${r===i?r:`${r} to ${i}`} argument${i===1?"":"s"}`,n.at)},o=r=>$(n.args[r],s),l=r=>{let i=o(r);if(typeof i!="string")throw new u(`${n.fn}(\u2026) needs a quoted name, like ${n.fn}('name')`,n.at);return i};switch(n.fn){case"out":case"in":{t(1,2);let r=(g,m)=>n.fn==="out"?a.graph.out(g,m):a.graph.in(g,m);if(n.args.length===2){let g=S(o(0),n.at,n.fn).nodes,m=l(1);return rn(g.flatMap(h=>{let N=r(h.id,m);return c(N.length+1,n.at),N}))}let i=l(0);if(!s)throw new u(`${n.fn}('${i}') needs a record to start from`,n.at);let p=r(s.id,i);return c(p.length,n.at),new y(p)}case"all":{t(1,2);let r=a.graph.nodesOfKind(l(0),{archived:n.args.length===2?o(1):!1});return c(r.length,n.at),new y(r)}case"archived":return t(0,1),en(n.args.length===1?o(0):s);case"count":return t(1),S(o(0),n.at,"count").nodes.length;case"exists":return t(1),S(o(0),n.at,"exists").nodes.length>0;case"every":case"some":{t(2);let r=S(o(0),n.at,n.fn);c(r.nodes.length,n.at);let i=p=>R(T(p,n.args[1]),n.at,`the condition in ${n.fn}(\u2026)`);return n.fn==="every"?r.nodes.every(i):r.nodes.some(i)}case"sum":case"min":case"max":{t(2);let r=S(o(0),n.at,n.fn);c(r.nodes.length,n.at);let i=n.args[1],p=i.t==="lit"&&typeof i.value=="string"?i.value:void 0,g=i.t==="ident"?`'${i.name}'`:p!==void 0?`'${p}'`:"\u2026",m=r.nodes.map(h=>i.t==="ident"?E(h,i.name,n.at):p!==void 0?E(h,p,n.at):T(h,i)).filter(h=>{if(h===null)return!1;if(typeof h!="number")throw new u(`${n.fn}(\u2026, ${g}) needs a number for each member, and found ${w(h)}`,n.at);return!0});return n.fn==="sum"?m.reduce((h,N)=>h+N,0):m.length===0?null:n.fn==="min"?Math.min(...m):Math.max(...m)}case"fact":{t(1);let r=l(0),i=a.kinds.get(gn)?.computed?.get(r);if(!i)throw new u(`no fact is called "${r}"`,n.at);return H(null,r,i,n.at)}case"first":return t(1),S(o(0),n.at,"first").nodes[0]??null;case"sort":{t(2,3);let r=S(o(0),n.at,"sort"),i=n.args.length===3?o(2):"asc";if(i!=="asc"&&i!=="desc")throw new u("sort(\u2026) goes 'asc' or 'desc'",n.at);let p=r.nodes.length;c(p+p*Math.ceil(Math.log2(p+1)),n.at);let g=r.nodes.map((h,N)=>({node:h,i:N,key:T(h,n.args[1])})),m=i==="desc"?-1:1;return g.sort((h,N)=>Y(h.key,N.key,m,n.at)||h.i-N.i),new y(g.map(h=>h.node))}case"either":{if(n.args.length<1)throw new u("either(\u2026) takes at least one argument",n.at);for(let r=0;r<n.args.length;r++){let i=o(r);if(i!==null&&!(i instanceof y&&i.nodes.length===0))return i}return null}case"present":{t(1);let r=o(0);return r===null||r===""?!1:Array.isArray(r)?r.length>0:r instanceof y?r.nodes.length>0:!0}case"len":{t(1);let r=o(0);if(r===null)return 0;if(typeof r=="string"||Array.isArray(r))return r.length;if(r instanceof y)return r.nodes.length;throw new u(`len(\u2026) needs a word or a list, and was given ${w(r)}`,n.at)}case"contains":case"startsWith":{t(2);let r=o(0),i=o(1);if(r===null||i===null)return!1;if(n.fn==="contains"&&Array.isArray(r))return r.some(m=>O(m,i));let p=V(r,n.at,n.fn),g=V(i,n.at,n.fn);return n.fn==="contains"?p.toLowerCase().includes(g.toLowerCase()):p.startsWith(g)}case"lower":{t(1);let r=V(o(0),n.at,"lower");return r===null?null:r.toLowerCase()}case"today":return t(0),d;case"now":return t(0),b;case"date":{t(1);let r=D(o(0),n.at,"date");return r===null?null:new Date(r).toISOString().slice(0,10)}case"days":case"hours":{t(2);let r=D(o(0),n.at,n.fn),i=D(o(1),n.at,n.fn);if(r===null||i===null)return null;let p=(i-r)/(n.fn==="days"?864e5:36e5);return n.fn==="days"?Math.round(p):p}case"round":{t(1,2);let r=o(0);if(r===null)return null;if(typeof r!="number")throw new u(`round(\u2026) needs a number, and was given ${w(r)}`,n.at);let i=n.args.length===2?o(1):0;if(typeof i!="number"||!Number.isInteger(i)||i<0||i>12)throw new u("round(\u2026, places) takes a whole number of places from 0 to 12",n.at);let p=10**i,g=Math.sign(r)*Math.round(Math.abs(r)*p*(1+Number.EPSILON))/p;return Object.is(g,-0)?0:g}case"if":return t(3),R(o(0),n.at,"the condition in if(\u2026)")?o(1):o(2);default:throw new u(`"${n.fn}" is not a function the rule language knows`,n.at)}}function Y(n,s,t,o){if(n===null||s===null)return n===s?0:n===null?1:-1;if(Array.isArray(n)&&Array.isArray(s)){for(let r=0;r<Math.max(n.length,s.length);r++){let i=Y(n[r]??null,s[r]??null,t,o);if(i!==0)return i}return 0}let l=r=>typeof r=="number"||typeof r=="string"||typeof r=="boolean"?typeof r:w(r);if(l(n)!==l(s)||typeof n=="object"||typeof s=="object")throw new u(`sort(\u2026) cannot put ${w(n)} and ${w(s)} in order`,o);return typeof n=="string"?t*(n<s?-1:n>s?1:0):t*(Number(n)-Number(s))}return $(e,a.subject)}var Mn=["out","in","all","count","exists","every","some","sum","min","max","present","len","contains","startsWith","lower","today","now","date","days","hours","if","first","sort","either","fact","archived","round"];var On=(e,a,f,c)=>({severity:"error",code:e,path:a,message:f,...c?{fix:c}:{}}),Gn=(e,a,f,c,d)=>({severity:"warning",code:e,path:a,message:f,...c?{fix:c}:{},...d&&d.length>0?{edits:d}:{}}),En=e=>e.some(a=>a.severity==="error");function Tn(e){return e.map(a=>`${a.severity==="error"?"\u2717":a.severity==="warning"?"!":"\xB7"} ${a.path||"(document)"}: ${a.message}${a.fix?` \u2014 ${a.fix}`:""}${(a.edits??[]).map(f=>`
1
+ import{F as j,Fa as X,H as J,I as B,K as F,Na as v,Q as G,Sb as z,T as C,U as Q,V as U,W as P,Ya as nn,Zb as tn,aa as I,ab as en,ca as K,na as Z}from"./chunk.VSCIXAHN.js";var fn=1e4,y=class{constructor(a){this.nodes=a}},on=Symbol.for("@graview/core:far-record"),cn=e=>typeof e=="object"&&e!==null&&e[on]===!0;function pn(e){let a={...e.fields,id:`@${e.address}/${e.kind}:${e.id}`,kind:`@${e.address}/${e.kind}`,label:e.label};return Object.defineProperty(a,on,{value:!0}),a}function Rn(e){let a=`the linked record in ${e.ref.address}`;return e.reason==="denied"?`${a} is not one this viewer may open`:`${a} has not been read`}var gn="",u=class extends Error{constructor(f,c){super(f);this.sentence=f;this.at=c}},W=class extends u{},M=e=>e!==null&&typeof e=="object"&&!Array.isArray(e)&&!(e instanceof y)&&typeof e.id=="string",rn=e=>{let a=new Set;return new y(e.filter(f=>!a.has(f.id)&&a.add(f.id)))},w=e=>e===null?"nothing":e instanceof y?"a set of records":Array.isArray(e)?"a list":M(e)?"a record":typeof e=="string"?"a word":typeof e;function an(e,a){let f=a.budget??fn,c=(n,s)=>{if(f-=n,f<0)throw new W("this rule looks at too much of the graph to judge in one go",s)},d=a.today??F(),b=a.now??new Date().toISOString(),k=new Map,x=new Set,A=a.bindings,H=(n,s,t,o)=>{let l=`${n?.id}\0${s}`;if(k.has(l))return k.get(l);if(x.has(l))throw new u(`"${s}"${n?` of ${Z(n.kind)}`:""} depends on itself`,o);x.add(l);let r=A;A=void 0;try{let i=$(t,n);return k.set(l,i),i}finally{A=r,x.delete(l)}},E=(n,s,t)=>{c(1,t);let o=a.kinds.get(n.kind),l=o?.computed?.get(s);if(l)return H(n,s,l,t);let r=o?.linked?.get(s);if(r){let g=X(Object.hasOwn(n,s)?n[s]:void 0,r);c(g.length,t);let m=a.linked??v(a.graph),h=g.flatMap(N=>{let _=m?m(N):{unread:!0};return"record"in _?[pn(_.record)]:(a.onUnread?.({relation:s,ref:N,reason:"denied"in _?"denied":"unread"}),[])});return r.cardinality==="one"?h[0]??null:new y(h)}let i=Object.hasOwn(n,s);if(o?.fields.has(s)||i){let g=i?nn(n,s,d):void 0;return g===void 0?null:g}let p=o?.edges.get(s);if(p){let g=a.graph.out(n.id,s);return c(g.length,t),p==="one"?g[0]??null:new y(g)}if(s==="id")return n.id;if(cn(n))return null;throw new u(`${Z(n.kind)} has no field or relation called "${s}"`,t)},S=(n,s,t)=>{if(n instanceof y)return n;if(n===null)return new y([]);if(M(n))return new y([n]);throw new u(`${t}(\u2026) needs a set of records, and was given ${w(n)}`,s)},V=(n,s,t)=>{if(n===null)return null;if(typeof n=="string")return n;if(typeof n=="number"||typeof n=="boolean")return String(n);throw new u(`${t}(\u2026) needs a word, and was given ${w(n)}`,s)},D=(n,s,t)=>{let o=V(n,s,t);if(o===null)return null;let l=Date.parse(o.length===10?`${o}T00:00:00Z`:o);if(Number.isNaN(l))throw new u(`${t}(\u2026) needs a date, and "${o}" is not one`,s);return l},O=(n,s)=>M(n)&&M(s)?n.id===s.id:M(n)&&typeof s=="string"?n.id===s:typeof n=="string"&&M(s)?n===s.id:Array.isArray(n)&&Array.isArray(s)?n.length===s.length&&n.every((t,o)=>O(t,s[o])):n===s,R=(n,s,t)=>{if(n===null)return!1;if(typeof n=="boolean")return n;throw new u(`${t} must be true or false, and was ${w(n)}`,s)},T=(n,s)=>$(s,n);function $(n,s){switch(c(1,n.at),n.t){case"lit":return n.value;case"list":return n.items.map(t=>$(t,s));case"ident":{let t=A&&Object.hasOwn(A,n.name)?A[n.name]:void 0;if(t!==void 0)return t;if(s)return E(s,n.name,n.at);throw new u(`"${n.name}" means nothing in a rule over the whole graph`,n.at)}case"member":{let t=$(n.object,s);if(t===null)return null;if(M(t))return E(t,n.name,n.at);throw new u(`".${n.name}" needs a record before it, and was given ${w(t)}`,n.at)}case"unary":{let t=$(n.operand,s);if(n.op==="!")return!R(t,n.at,"what follows not");if(t===null)return null;if(typeof t!="number")throw new u(`"-" needs a number, and was given ${w(t)}`,n.at);return-t}case"where":{let t=S($(n.set,s),n.at,"where");return c(t.nodes.length,n.at),new y(t.nodes.filter(o=>R(T(o,n.filter),n.at,"a where condition")))}case"binary":return ln(n,s);case"call":return un(n,s)}}function ln(n,s){if(n.op==="&&")return R($(n.left,s),n.at,"each side of and")&&R($(n.right,s),n.at,"each side of and");if(n.op==="||")return R($(n.left,s),n.at,"each side of or")||R($(n.right,s),n.at,"each side of or");let t=$(n.left,s),o=$(n.right,s);if(n.op==="&"||n.op==="|"||n.op==="-"&&(t instanceof y||o instanceof y)){let l=S(t,n.at,n.op).nodes,r=S(o,n.at,n.op).nodes;c(l.length+r.length,n.at);let i=new Set(r.map(p=>p.id));return rn(n.op==="|"?[...l,...r]:l.filter(p=>i.has(p.id)===(n.op==="&")))}switch(n.op){case"==":return O(t,o);case"!=":return!O(t,o);case"in":{if(o===null)return!1;if(o instanceof y)return o.nodes.some(l=>O(t,l));if(Array.isArray(o))return o.some(l=>O(t,l));if(typeof o=="string"&&typeof t=="string")return o.includes(t);throw new u(`"in" needs a list or a set on its right, and was given ${w(o)}`,n.at)}case"<":case"<=":case">":case">=":{if(t===null||o===null)return!1;if(!(typeof t=="number"&&typeof o=="number"||typeof t=="string"&&typeof o=="string"))throw new u(`cannot compare ${w(t)} with ${w(o)}`,n.at);return n.op==="<"?t<o:n.op==="<="?t<=o:n.op===">"?t>o:t>=o}default:{if(t===null||o===null)return null;if(n.op==="+"&&(typeof t=="string"||typeof o=="string")){let l=`${V(t,n.at,"+")}${V(o,n.at,"+")}`;if(l.length>1e4)throw new u("that makes a word too long",n.at);return l}if(typeof t!="number"||typeof o!="number")throw new u(`"${n.op}" needs numbers, and was given ${w(t)} and ${w(o)}`,n.at);return(n.op==="/"||n.op==="%")&&o===0?null:n.op==="+"?t+o:n.op==="-"?t-o:n.op==="*"?t*o:n.op==="/"?t/o:t%o}}}function un(n,s){let t=(r,i=r)=>{if(n.args.length<r||n.args.length>i)throw new u(`${n.fn}(\u2026) takes ${r===i?r:`${r} to ${i}`} argument${i===1?"":"s"}`,n.at)},o=r=>$(n.args[r],s),l=r=>{let i=o(r);if(typeof i!="string")throw new u(`${n.fn}(\u2026) needs a quoted name, like ${n.fn}('name')`,n.at);return i};switch(n.fn){case"out":case"in":{t(1,2);let r=(g,m)=>n.fn==="out"?a.graph.out(g,m):a.graph.in(g,m);if(n.args.length===2){let g=S(o(0),n.at,n.fn).nodes,m=l(1);return rn(g.flatMap(h=>{let N=r(h.id,m);return c(N.length+1,n.at),N}))}let i=l(0);if(!s)throw new u(`${n.fn}('${i}') needs a record to start from`,n.at);let p=r(s.id,i);return c(p.length,n.at),new y(p)}case"all":{t(1,2);let r=a.graph.nodesOfKind(l(0),{archived:n.args.length===2?o(1):!1});return c(r.length,n.at),new y(r)}case"archived":return t(0,1),en(n.args.length===1?o(0):s);case"count":return t(1),S(o(0),n.at,"count").nodes.length;case"exists":return t(1),S(o(0),n.at,"exists").nodes.length>0;case"every":case"some":{t(2);let r=S(o(0),n.at,n.fn);c(r.nodes.length,n.at);let i=p=>R(T(p,n.args[1]),n.at,`the condition in ${n.fn}(\u2026)`);return n.fn==="every"?r.nodes.every(i):r.nodes.some(i)}case"sum":case"min":case"max":{t(2);let r=S(o(0),n.at,n.fn);c(r.nodes.length,n.at);let i=n.args[1],p=i.t==="lit"&&typeof i.value=="string"?i.value:void 0,g=i.t==="ident"?`'${i.name}'`:p!==void 0?`'${p}'`:"\u2026",m=r.nodes.map(h=>i.t==="ident"?E(h,i.name,n.at):p!==void 0?E(h,p,n.at):T(h,i)).filter(h=>{if(h===null)return!1;if(typeof h!="number")throw new u(`${n.fn}(\u2026, ${g}) needs a number for each member, and found ${w(h)}`,n.at);return!0});return n.fn==="sum"?m.reduce((h,N)=>h+N,0):m.length===0?null:n.fn==="min"?Math.min(...m):Math.max(...m)}case"fact":{t(1);let r=l(0),i=a.kinds.get(gn)?.computed?.get(r);if(!i)throw new u(`no fact is called "${r}"`,n.at);return H(null,r,i,n.at)}case"first":return t(1),S(o(0),n.at,"first").nodes[0]??null;case"sort":{t(2,3);let r=S(o(0),n.at,"sort"),i=n.args.length===3?o(2):"asc";if(i!=="asc"&&i!=="desc")throw new u("sort(\u2026) goes 'asc' or 'desc'",n.at);let p=r.nodes.length;c(p+p*Math.ceil(Math.log2(p+1)),n.at);let g=r.nodes.map((h,N)=>({node:h,i:N,key:T(h,n.args[1])})),m=i==="desc"?-1:1;return g.sort((h,N)=>Y(h.key,N.key,m,n.at)||h.i-N.i),new y(g.map(h=>h.node))}case"either":{if(n.args.length<1)throw new u("either(\u2026) takes at least one argument",n.at);for(let r=0;r<n.args.length;r++){let i=o(r);if(i!==null&&!(i instanceof y&&i.nodes.length===0))return i}return null}case"present":{t(1);let r=o(0);return r===null||r===""?!1:Array.isArray(r)?r.length>0:r instanceof y?r.nodes.length>0:!0}case"len":{t(1);let r=o(0);if(r===null)return 0;if(typeof r=="string"||Array.isArray(r))return r.length;if(r instanceof y)return r.nodes.length;throw new u(`len(\u2026) needs a word or a list, and was given ${w(r)}`,n.at)}case"contains":case"startsWith":{t(2);let r=o(0),i=o(1);if(r===null||i===null)return!1;if(n.fn==="contains"&&Array.isArray(r))return r.some(m=>O(m,i));let p=V(r,n.at,n.fn),g=V(i,n.at,n.fn);return n.fn==="contains"?p.toLowerCase().includes(g.toLowerCase()):p.startsWith(g)}case"lower":{t(1);let r=V(o(0),n.at,"lower");return r===null?null:r.toLowerCase()}case"today":return t(0),d;case"now":return t(0),b;case"date":{t(1);let r=D(o(0),n.at,"date");return r===null?null:new Date(r).toISOString().slice(0,10)}case"days":case"hours":{t(2);let r=D(o(0),n.at,n.fn),i=D(o(1),n.at,n.fn);if(r===null||i===null)return null;let p=(i-r)/(n.fn==="days"?864e5:36e5);return n.fn==="days"?Math.round(p):p}case"round":{t(1,2);let r=o(0);if(r===null)return null;if(typeof r!="number")throw new u(`round(\u2026) needs a number, and was given ${w(r)}`,n.at);let i=n.args.length===2?o(1):0;if(typeof i!="number"||!Number.isInteger(i)||i<0||i>12)throw new u("round(\u2026, places) takes a whole number of places from 0 to 12",n.at);let p=10**i,g=Math.sign(r)*Math.round(Math.abs(r)*p*(1+Number.EPSILON))/p;return Object.is(g,-0)?0:g}case"if":return t(3),R(o(0),n.at,"the condition in if(\u2026)")?o(1):o(2);default:throw new u(`"${n.fn}" is not a function the rule language knows`,n.at)}}function Y(n,s,t,o){if(n===null||s===null)return n===s?0:n===null?1:-1;if(Array.isArray(n)&&Array.isArray(s)){for(let r=0;r<Math.max(n.length,s.length);r++){let i=Y(n[r]??null,s[r]??null,t,o);if(i!==0)return i}return 0}let l=r=>typeof r=="number"||typeof r=="string"||typeof r=="boolean"?typeof r:w(r);if(l(n)!==l(s)||typeof n=="object"||typeof s=="object")throw new u(`sort(\u2026) cannot put ${w(n)} and ${w(s)} in order`,o);return typeof n=="string"?t*(n<s?-1:n>s?1:0):t*(Number(n)-Number(s))}return $(e,a.subject)}var Mn=["out","in","all","count","exists","every","some","sum","min","max","present","len","contains","startsWith","lower","today","now","date","days","hours","if","first","sort","either","fact","archived","round"];var On=(e,a,f,c)=>({severity:"error",code:e,path:a,message:f,...c?{fix:c}:{}}),Gn=(e,a,f,c,d)=>({severity:"warning",code:e,path:a,message:f,...c?{fix:c}:{},...d&&d.length>0?{edits:d}:{}}),En=e=>e.some(a=>a.severity==="error");function Tn(e){return e.map(a=>`${a.severity==="error"?"\u2717":a.severity==="warning"?"!":"\xB7"} ${a.path||"(document)"}: ${a.message}${a.fix?` \u2014 ${a.fix}`:""}${(a.edits??[]).map(f=>`
2
2
  edit: ${JSON.stringify(f)}`).join("")}`).join(`
3
3
  `)}var Un=["money","percent","date","time","datetime","relative","upper","lower","count","words","and","plural","excerpt"],yn={getNode:()=>{},allNodes:()=>[],allEdges:()=>[],nodesOfKind:()=>[],edgesOfKind:()=>[],out:()=>[],in:()=>[],neighbors:()=>[],has:()=>!1};function Pn(e,a,f,c=[],d,b=L){return q(e,a,f,c,d,b)}var hn=(e,a)=>e.capital?I(a):a,mn=new Set(["words","plural","relative"]);function In(e,a){let f=e[0];return!f||f.text!==void 0||!f.format||!mn.has(f.format)?a:/^[a-z][a-z'’-]*(?=\s|$|[,.;:!?])/.test(a)?I(a):a}function wn(e){return e?a=>{let f=e.tryDefinition(a.kind)?.label;return f?f(a):L(a)}:L}var sn=["zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"],dn=["","","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"];function $n(e,a){return!Number.isInteger(e)||e<0||e>99?P(e,a):e<20?sn[e]:e%10===0?dn[e/10]:`${dn[Math.floor(e/10)]}-${sn[e%10]}`}function bn(e){return/[^aeiou]y$/i.test(e)?`${e.slice(0,-1)}ies`:/(s|x|z|ch|sh)$/i.test(e)?`${e}es`:`${e}s`}var L=e=>String(e.name??e.title??e.label??e.id);function q(e,a,f,c=[],d,b=L){if(a==="plural"){let k=e instanceof y?e.nodes.length:Array.isArray(e)?e.length:typeof e=="number"?e:null;return k===null||c[0]===void 0?"\u2014":k===1?c[0]:c[1]??bn(c[0])}if(e===null)return"\u2014";if(e instanceof y)return a==="count"?String(e.nodes.length):a==="and"?K(e.nodes.map(b)):e.nodes.map(b).join(", ");if(Array.isArray(e)){if(a==="count")return String(e.length);let k=e.map(x=>q(x,void 0,f,[],d,b));return a==="and"?K(k):k.join(", ")}if(typeof e=="object")return b(e);switch(a){case"words":return typeof e=="number"?$n(e,d?.locale):String(e);case"money":return typeof e=="number"?z(e,d):String(e);case"percent":return typeof e=="number"?P(e,d?.locale,{style:"percent",maximumFractionDigits:0}):String(e);case"upper":return String(e).toUpperCase();case"lower":return String(e).toLowerCase();case"excerpt":return tn(String(e),Number(c[0])||void 0);case"date":return G(U(String(e),d?.timeZone)??String(e).slice(0,10),d?.locale);case"time":return typeof e=="string"&&j.test(e)?G(e,d?.locale):Q(String(e),d?.locale,d?.timeZone);case"datetime":return typeof e=="string"&&j.test(e)?G(e,d?.locale):C(String(e),d?.locale,d?.timeZone);case"relative":{let k=U(String(e),d?.timeZone),x=k===void 0?Date.parse(String(e)):Date.parse(`${k}T00:00:00Z`);if(Number.isNaN(x))return String(e);let A=Math.round((x-Date.parse(`${f}T00:00:00Z`))/864e5);return A===0?"today":A===1?"tomorrow":A===-1?"yesterday":A>0?`in ${A} days`:`${-A} days ago`}default:return typeof e=="string"&&J.test(e)?G(e,d?.locale):typeof e=="string"&&B.test(e)?C(e,d?.locale,d?.timeZone):String(e)}}function Kn(e,a){let f=a.today??F(),c=a.name??wn(a.graph?.schema);return e.map(d=>{if(d.text!==void 0)return d.text;try{let b=an(d.expr,{graph:a.graph??yn,subject:a.node,kinds:a.kinds,today:f,budget:a.budget??500,...a.bindings?{bindings:a.bindings}:{}});return hn(d,q(b,d.format,f,d.formatArgs,a.money,c))}catch(b){if(b instanceof u)return"\u2014";throw b}}).join("")}export{y as a,Rn as b,gn as c,u as d,W as e,an as f,Mn as g,On as h,Gn as i,En as j,Tn as k,Un as l,yn as m,Pn as n,hn as o,In as p,wn as q,Kn as r};
@@ -1 +1 @@
1
- import{a as v,b as y,c as m}from"./chunk.MB7LKKUD.js";import"./chunk.YD3TKV6P.js";import"./chunk.4KC35UNR.js";import{G as N,Sa as c,T as u,Ua as b}from"./chunk.HT2BEOEV.js";import"./chunk.SDO3U72B.js";import{Vc as f}from"./chunk.7BBGRTXM.js";import"./chunk.FQLNBIQ5.js";import{b as p}from"./chunk.AJZBJBMO.js";var l=p(N(),1);var t=p(u(),1);function z({notices:o,anchor:n,board:a}){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(w,{notices:o.filter(i=>i.kind==="banner"),at:"top",anchor:n,board:a}),(0,t.jsx)(w,{notices:o.filter(i=>i.kind==="toast"),at:"foot",anchor:n,board:a})]})}var h={info:"var(--graview-accent)",good:"var(--graview-good)",warn:"var(--graview-warn)",bad:"var(--graview-bad)"};function w({notices:o,at:n,anchor:a,board:i}){let d=(0,l.useRef)(null),e=o.length>0;return(0,l.useLayoutEffect)(()=>{let r=d.current;if(!e||!r)return;if(typeof r.showPopover=="function"&&!c(r))try{r.showPopover()}catch{}let s=()=>(n==="top"?m:y)(r,a());s(),n==="foot"&&i.hold?.(()=>r.matches(":hover, :focus-within"));let S=b(r);addEventListener("resize",s),addEventListener("scroll",s,!0),n==="foot"&&addEventListener(v,s);let g=typeof ResizeObserver=="function"?new ResizeObserver(s):null;return g?.observe(r),()=>{if(S(),g?.disconnect(),removeEventListener("resize",s),removeEventListener("scroll",s,!0),removeEventListener(v,s),r.isConnected&&c(r))try{r.hidePopover()}catch{}}},[e,n,a,i]),e?(0,t.jsx)("div",{ref:d,popover:"manual",role:"region","aria-label":n==="top"?"Notices":"Messages","data-testid":n==="top"?"notices-banners":"notices-toasts","data-graview-offstage":"",style:{position:"fixed",inset:"auto",margin:0,padding:0,border:"none",background:"none",overflow:"visible",zIndex:f("toast"),width:"max-content",height:"auto",maxWidth:"min(560px, calc(100vw - 32px))",display:"grid",gap:8,color:"var(--graview-ink)"},children:o.map(r=>(0,t.jsx)(C,{notice:r,board:i},r.id))}):null}var T=o=>o.split(/\s+/).filter(Boolean).map(n=>n.replace(/^Meta\+/,"\u2318").replace(/^Control\+/,"Ctrl+").replace(/^Alt\+/,"Alt+")).join(" or ");function C({notice:o,board:n}){let a=o.tone??"info",i=[...o.action?[o.action]:[],...o.actions??[]],d=()=>n.dismiss(o.id);return(0,t.jsxs)("div",{"data-testid":"notice","data-kind":o.kind,"data-tone":a,style:{boxSizing:"border-box",display:"flex",flexWrap:"wrap",alignItems:"center",gap:"8px 12px",padding:o.kind==="banner"?"8px 10px 8px 14px":"10px 12px 10px 14px",borderRadius:"var(--graview-radius, 12px)",borderTop:"1px solid var(--graview-edge)",borderRight:"1px solid var(--graview-edge)",borderBottom:"1px solid var(--graview-edge)",borderLeft:`3px solid ${h[a]}`,background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)",fontSize:"0.875rem",lineHeight:1.45},children:[(0,t.jsx)("span",{"aria-hidden":"true",style:{width:7,height:7,borderRadius:999,flex:"0 0 auto",background:h[a]}}),(0,t.jsx)("span",{style:{flex:"1 1 16rem",minWidth:0},children:o.sentence}),i.length>0?(0,t.jsx)("span",{style:{display:"flex",flexWrap:"wrap",gap:6},children:i.map((e,r)=>e.href!==void 0?(0,t.jsx)("a",{href:e.href,...e.target?{target:e.target,rel:"noopener"}:{},"data-testid":"notice-action",onClick:()=>{e.onSelect?.(),d()},style:{...x,...r===0?k:{}},children:e.label},e.label):(0,t.jsx)("button",{type:"button","data-testid":"notice-action",...e.keys?{"aria-keyshortcuts":e.keys,title:`${e.label} \u2014 ${T(e.keys)}`}:{},onClick:()=>{d(),e.onSelect?.()},style:{...x,...r===0?k:{}},children:e.label},e.label))}):null,(0,t.jsx)("button",{type:"button","data-testid":"notice-dismiss","aria-label":`Dismiss: ${o.sentence}`,title:"Dismiss",onClick:d,style:E,children:"\xD7"})]})}var x={display:"inline-flex",alignItems:"center",minHeight:28,padding:"2px 12px",borderRadius:9,border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",color:"var(--graview-ink)",font:"inherit",fontWeight:500,textDecoration:"none",cursor:"pointer"},k={background:"var(--graview-accent)",borderColor:"var(--graview-accent)",color:"var(--graview-accent-ink)"},E={minWidth:28,minHeight:28,padding:0,border:"none",background:"none",boxShadow:"none",color:"var(--graview-ink-muted)",fontSize:"1rem",cursor:"pointer"};export{z as NoticeStacks};
1
+ import{a as v,b as y,c as m}from"./chunk.MB7LKKUD.js";import"./chunk.WC3DENU4.js";import"./chunk.VNDKKTED.js";import{G as N,Sa as c,T as u,Ua as b}from"./chunk.4MP72LPR.js";import"./chunk.SDO3U72B.js";import{ad as f}from"./chunk.VSCIXAHN.js";import"./chunk.FQLNBIQ5.js";import{b as p}from"./chunk.AJZBJBMO.js";var l=p(N(),1);var t=p(u(),1);function z({notices:o,anchor:n,board:a}){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(w,{notices:o.filter(i=>i.kind==="banner"),at:"top",anchor:n,board:a}),(0,t.jsx)(w,{notices:o.filter(i=>i.kind==="toast"),at:"foot",anchor:n,board:a})]})}var h={info:"var(--graview-accent)",good:"var(--graview-good)",warn:"var(--graview-warn)",bad:"var(--graview-bad)"};function w({notices:o,at:n,anchor:a,board:i}){let d=(0,l.useRef)(null),e=o.length>0;return(0,l.useLayoutEffect)(()=>{let r=d.current;if(!e||!r)return;if(typeof r.showPopover=="function"&&!c(r))try{r.showPopover()}catch{}let s=()=>(n==="top"?m:y)(r,a());s(),n==="foot"&&i.hold?.(()=>r.matches(":hover, :focus-within"));let S=b(r);addEventListener("resize",s),addEventListener("scroll",s,!0),n==="foot"&&addEventListener(v,s);let g=typeof ResizeObserver=="function"?new ResizeObserver(s):null;return g?.observe(r),()=>{if(S(),g?.disconnect(),removeEventListener("resize",s),removeEventListener("scroll",s,!0),removeEventListener(v,s),r.isConnected&&c(r))try{r.hidePopover()}catch{}}},[e,n,a,i]),e?(0,t.jsx)("div",{ref:d,popover:"manual",role:"region","aria-label":n==="top"?"Notices":"Messages","data-testid":n==="top"?"notices-banners":"notices-toasts","data-graview-offstage":"",style:{position:"fixed",inset:"auto",margin:0,padding:0,border:"none",background:"none",overflow:"visible",zIndex:f("toast"),width:"max-content",height:"auto",maxWidth:"min(560px, calc(100vw - 32px))",display:"grid",gap:8,color:"var(--graview-ink)"},children:o.map(r=>(0,t.jsx)(C,{notice:r,board:i},r.id))}):null}var T=o=>o.split(/\s+/).filter(Boolean).map(n=>n.replace(/^Meta\+/,"\u2318").replace(/^Control\+/,"Ctrl+").replace(/^Alt\+/,"Alt+")).join(" or ");function C({notice:o,board:n}){let a=o.tone??"info",i=[...o.action?[o.action]:[],...o.actions??[]],d=()=>n.dismiss(o.id);return(0,t.jsxs)("div",{"data-testid":"notice","data-kind":o.kind,"data-tone":a,style:{boxSizing:"border-box",display:"flex",flexWrap:"wrap",alignItems:"center",gap:"8px 12px",padding:o.kind==="banner"?"8px 10px 8px 14px":"10px 12px 10px 14px",borderRadius:"var(--graview-radius, 12px)",borderTop:"1px solid var(--graview-edge)",borderRight:"1px solid var(--graview-edge)",borderBottom:"1px solid var(--graview-edge)",borderLeft:`3px solid ${h[a]}`,background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)",fontSize:"0.875rem",lineHeight:1.45},children:[(0,t.jsx)("span",{"aria-hidden":"true",style:{width:7,height:7,borderRadius:999,flex:"0 0 auto",background:h[a]}}),(0,t.jsx)("span",{style:{flex:"1 1 16rem",minWidth:0},children:o.sentence}),i.length>0?(0,t.jsx)("span",{style:{display:"flex",flexWrap:"wrap",gap:6},children:i.map((e,r)=>e.href!==void 0?(0,t.jsx)("a",{href:e.href,...e.target?{target:e.target,rel:"noopener"}:{},"data-testid":"notice-action",onClick:()=>{e.onSelect?.(),d()},style:{...x,...r===0?k:{}},children:e.label},e.label):(0,t.jsx)("button",{type:"button","data-testid":"notice-action",...e.keys?{"aria-keyshortcuts":e.keys,title:`${e.label} \u2014 ${T(e.keys)}`}:{},onClick:()=>{d(),e.onSelect?.()},style:{...x,...r===0?k:{}},children:e.label},e.label))}):null,(0,t.jsx)("button",{type:"button","data-testid":"notice-dismiss","aria-label":`Dismiss: ${o.sentence}`,title:"Dismiss",onClick:d,style:E,children:"\xD7"})]})}var x={display:"inline-flex",alignItems:"center",minHeight:28,padding:"2px 12px",borderRadius:9,border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",color:"var(--graview-ink)",font:"inherit",fontWeight:500,textDecoration:"none",cursor:"pointer"},k={background:"var(--graview-accent)",borderColor:"var(--graview-accent)",color:"var(--graview-accent-ink)"},E={minWidth:28,minHeight:28,padding:0,border:"none",background:"none",boxShadow:"none",color:"var(--graview-ink-muted)",fontSize:"1rem",cursor:"pointer"};export{z as NoticeStacks};
@@ -0,0 +1 @@
1
+ import{b as f}from"./chunk.3V4WP7RY.js";import"./chunk.LLYRFVIN.js";import"./chunk.YFSBVZTG.js";import"./chunk.G4YJPKRG.js";import{l as g}from"./chunk.3UOKUF5Z.js";import"./chunk.Q355UPFG.js";import"./chunk.PXQVXBNG.js";import"./chunk.MVWC3VR3.js";import"./chunk.CC5BJH5A.js";import"./chunk.CFKZXLXS.js";import"./chunk.Y5C4RXG7.js";import"./chunk.7MHCGVGM.js";import"./chunk.FRYBMS3W.js";import"./chunk.LQVAABPS.js";import"./chunk.NGTRL5U4.js";import"./chunk.3MOJF7BA.js";import"./chunk.LZIBQ3VX.js";import"./chunk.YZ7FUKAL.js";import"./chunk.KDRLUBVF.js";import"./chunk.BQIHNT7C.js";import"./chunk.TAT2IQUR.js";import"./chunk.3XGA65Y3.js";import"./chunk.BYKD5RLA.js";import"./chunk.2K4TT2BV.js";import"./chunk.VUBNBTJP.js";import"./chunk.BJUUSIQY.js";import"./chunk.ZP5RT2EK.js";import"./chunk.VZJWJ5XM.js";import"./chunk.XOZU4OFA.js";import"./chunk.GLWSVSQL.js";import"./chunk.MB7LKKUD.js";import"./chunk.WVUJXDXZ.js";import"./chunk.7VKSXGTX.js";import"./chunk.TY4GQJKC.js";import"./chunk.6ZQAR5ZA.js";import"./chunk.W3W54DSX.js";import"./chunk.PI44XMY2.js";import"./chunk.KGW75Z5L.js";import"./chunk.GZHZLJBF.js";import"./chunk.IOK4GVJC.js";import"./chunk.OJGHDWI6.js";import"./chunk.TLJOZSDD.js";import"./chunk.MSWWWLEA.js";import"./chunk.UITT6JWW.js";import"./chunk.A5PDXNY6.js";import"./chunk.WC3DENU4.js";import"./chunk.VNDKKTED.js";import{G as b,T as h}from"./chunk.4MP72LPR.js";import"./chunk.SDO3U72B.js";import{Zd as n}from"./chunk.VSCIXAHN.js";import"./chunk.FQLNBIQ5.js";import{b as t}from"./chunk.AJZBJBMO.js";var m=t(b(),1),a=t(h(),1);function P({store:c,auto:y,brand:i,views:u,presence:s,steering:r,overview:o,scope:d,titleLevel:w=2,quickAsk:l,props:e}){let v=(0,m.useMemo)(()=>g({scope:`.${d}`}),[d]);return(0,a.jsxs)("div",{"data-embed-content":"",style:y?{flex:"0 0 auto",background:"var(--graview-ground)"}:{flex:"1 1 auto",minHeight:0,overflow:"auto",background:"var(--graview-ground)"},children:[(0,a.jsx)("style",{children:v}),(0,a.jsx)("div",{"data-embed-measure":"",style:{display:"flow-root"},children:(0,a.jsx)(f,{context:{store:c,embedded:!0,...e.bar!==!1?{barAbove:!0}:{},...o?{overview:o}:{},titleLevel:w,views:u,settings:e.app.settings??[],app:e.app,...s?{presence:s}:{},...i?{brand:i}:{},...e.locale?{locale:e.locale}:{},...e.timeZone?{timeZone:e.timeZone}:{},...e.principal?{principal:e.principal}:{},...e.seats?{seats:e.seats}:{},...e.people?{people:e.people}:{},...e.subscriptions?{subscriptions:e.subscriptions}:{},dismissals:e.dismissals,whileAway:e.whileAway,...e.signIn?{signIn:e.signIn}:{},...l!==void 0?{quickAsk:l}:{}},...e.pages?{registry:e.pages}:{},...r?{steering:r}:{},...e.routing==="address"?n(e.basePath)===""?{}:{basename:n(e.basePath)}:{initialPath:e.path??"/"},...e.path!==void 0?{path:e.path}:{},...e.hrefOf?{hrefOf:e.hrefOf}:e.routing==="address"?{}:{hrefOf:!1},...e.onNavigate?{onNavigate:e.onNavigate}:{}})})]})}export{P as PagesContent};
@@ -1,4 +1,4 @@
1
- import{a as k}from"./chunk.G4JJXA63.js";import{a as Z}from"./chunk.EB4NVTJL.js";import{a as Y}from"./chunk.XU34T2H4.js";import{a as X}from"./chunk.KKNDX4JT.js";import{c as _}from"./chunk.QGV7H7RQ.js";import{Gd as T,Id as H,Jd as P,Kd as V,tb as J,ub as U}from"./chunk.7BBGRTXM.js";var O=n=>"failed"in n;function fn(n,e){let r=n.schema.kinds,t=n.policy?.sees;if(!t?.length||U(e))return{kinds:r};let o=J(e).roles??[],s=new Set(t.filter(i=>i.roles==="*"||o.some(a=>i.roles.includes(a))).flatMap(i=>i.kinds));return{kinds:r.filter(i=>s.has(i))}}function E(n,e){if(!e)return n;let r=new Set(e.kinds.filter(s=>n.tryDefinition(s)!==void 0));if(r.size===n.kinds.length)return n;let t=new Map,o=s=>{if(r.has(s)){if(!t.has(s)){let i=n.tryDefinition(s),a=Object.fromEntries(Object.entries(i?.edges??{}).flatMap(([l,d])=>{if(d.to==="*")return[[l,d]];let c=d.to.filter(u=>r.has(u));return c.length>0?[[l,{...d,to:c}]]:[]}));t.set(s,{...i,edges:a})}return t.get(s)}};return{...n,definitions:n.definitions.filter(s=>r.has(s.kind)),kinds:n.kinds.filter(s=>r.has(s)),tryDefinition:o,definition:s=>{let i=o(s);if(!i)throw new Error(`Unknown node kind "${s}"`);return i}}}var gn=n=>n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),p=n=>gn(n).replace(/[-_]+/g," ").trim();function x(n){let e=[];for(let t of n.kinds){let o=n.tryDefinition(t);if(!o)continue;let s=o.display?.labels??{},i=Object.entries(o.fields?.shape??{}).filter(([d])=>d!=="id"&&d!=="kind").map(([d,c])=>{let u=X(c);return{name:d,type:u?.type,...u?.options?{options:u.options}:{},words:(s[d]??p(d)).toLowerCase()}}),a=Object.entries(o.edges??{}).map(([d,c])=>({name:d,from:t,to:c.to==="*"?n.kinds.filter(u=>u!==t):c.to,words:p(d)})),l=(o.plural??`${p(t)}s`).toLowerCase();e.push({kind:t,plural:l,noun:(o.noun??p(t)).toLowerCase(),fields:i,roles:o.fieldRoles??{},edges:a})}let r=new Map(e.map(t=>[t.kind,t]));return{schema:n,kinds:e,info:t=>r.get(t)}}var $=(n,e)=>e===void 0?void 0:n.fields.find(r=>r.name===e),R=n=>n?.type==="date"||n?.type==="datetime",K=n=>n?.type==="number"||n?.type==="integer"||n?.type==="duration",rn=n=>` ${n.toLowerCase().replace(/[“”"’‘]/g,"'").replace(/[^\p{L}\p{N}' -]+/gu," ").replace(/\s+/g," ").trim()} `,A=(n,e)=>n.includes(` ${e} `),L=n=>n.endsWith("ies")?`${n.slice(0,-3)}y`:n.endsWith("ses")?n.slice(0,-2):n.endsWith("s")?n.slice(0,-1):n;function yn(n,e){let r=[];for(let t of e.kinds){let o=new Set([t.plural,t.noun,`${t.noun}s`,p(t.kind),`${p(t.kind)}s`]),s=-1;for(let i of o){let a=n.indexOf(` ${i} `);a>=0&&(s<0||a<s)&&(s=a)}s>=0&&r.push({info:t,at:s})}return r.sort((t,o)=>t.at-o.at).map(t=>t.info)}function I(n,e,r){let t=e.trim().toLowerCase();if(t.length===0)return;let o=n.fields.filter(s=>!r||r(s));return o.find(s=>s.words===t||p(s.name)===t||s.name.toLowerCase()===t)??o.find(s=>s.words===L(t)||p(s.name)===L(t))??o.find(s=>t.split(" ").some(i=>i.length>2&&(s.words.split(" ").includes(i)||s.words.split(" ").includes(L(i)))))}function sn(n,e,r){let t=e.trim().toLowerCase();if(t.length!==0)return n.edges.find(o=>o.words===t||o.name.toLowerCase()===t)??n.edges.find(o=>o.to.some(s=>{let i=r.info(s);return i!==void 0&&(i.noun===L(t)||i.plural===t||p(s)===L(t))}))??n.edges.find(o=>t.split(" ").some(s=>s.length>2&&o.words.split(" ").includes(s)))}function z(n){return/ (?:grouped |group |split |sorted |organi[sz]ed )?by ([\p{L}\p{N}' -]+?)(?= (?:and|with|for|in|on|only|where|from|this|that|as|sorted|grouped) |\s*$)/u.exec(n)?.[1]?.trim()}var mn=/\bwho\b.*\b(covers?|cover|tends?|owns?|handles?|does|works? on|looks? after|is on|is assigned|staffs?|runs?)\b|\bcoverage\b|\bmatrix\b|\bwho covers\b/,pn=/\bcalendar\b|\bmonth\b|\bagenda\b|\bschedule\b|\bdue\b|\bdeadlines?\b|\bdates?\b|\bwhen\b/,bn=/\btimeline\b|\bover time\b|\bgantt\b|\bspans?\b|\bweek\b/,hn=/\bboard\b|\bkanban\b|\bcolumns?\b|\bpipeline\b|\bstages?\b|\bstatus\b/,wn=/\blaid out\b|\blayout\b|\bseating\b|\bwhere (?:they|it|each) (?:sits?|lies?|stands?)\b|\bfloor\b/,kn=/\bplan\b|\bmap\b|\bregions?\b/,$n=/\blist\b|\btable\b|\bgroup(?:ed)? by\b|\bsort(?:ed)? by\b|\bonly\b|\bjust the\b/;function Sn(n){let e=[];return/\blist\b|\btable\b/.test(n)&&e.push("blocks"),mn.test(n)&&e.push("coverage"),wn.test(n)&&e.push("board"),(/\bfloor plan\b/.test(n)||kn.test(n))&&e.push("plan"),bn.test(n)&&e.push("timeline"),pn.test(n)&&e.push("calendar"),hn.test(n)&&e.push("columns"),$n.test(n)&&!e.includes("blocks")&&e.push("blocks"),e.length===0&&z(n)&&e.push("columns"),e}var on=n=>{let e=r=>r?` and not ${r}`:"";if(/\boverdue\b|\blate\b|\bpast due\b/.test(n))return{cond:(r,t)=>`days(today(), ${r}) < 0${e(t)}`,says:r=>`overdue by ${r.words}`};if(/\btoday\b/.test(n))return{range:"day",cond:r=>`days(today(), ${r}) == 0`,says:r=>`with ${r.words} today`};if(/\bthis week\b|\bnext 7 days\b|\bnext week\b/.test(n))return{range:"week",cond:r=>`days(today(), ${r}) >= 0 and days(today(), ${r}) <= 6`,says:r=>`with ${r.words} in the next week`};if(/\bthis month\b|\bnext 30 days\b|\bnext month\b/.test(n))return{range:"month",cond:r=>`days(today(), ${r}) >= 0 and days(today(), ${r}) <= 30`,says:r=>`with ${r.words} in the next month`};if(/\blast month\b|\bpast month\b/.test(n))return{range:"month",cond:r=>`days(today(), ${r}) >= -30 and days(today(), ${r}) <= 0`,says:r=>`with ${r.words} in the last month`};if(/\bthis year\b/.test(n))return{range:"year",cond:r=>`days(today(), ${r}) >= 0 and days(today(), ${r}) <= 365`,says:r=>`with ${r.words} in the next year`};if(/\bquarter\b/.test(n))return{range:"quarter",cond:r=>`days(today(), ${r}) >= 0 and days(today(), ${r}) <= 91`,says:r=>`with ${r.words} in the next quarter`}},M=n=>{if(/\bagenda\b|\bin order\b/.test(n))return"agenda";if(/\btoday\b|\bday\b/.test(n))return"day";if(/\bweek\b/.test(n))return"week";if(/\bquarter\b/.test(n))return"quarter";if(/\byears\b/.test(n))return"years";if(/\byear\b/.test(n))return"year";if(/\bmonth\b/.test(n))return"month"},Q=/^(user|person|people|member|staff|gardener|volunteer|owner|agent|employee|worker|team|player|customer|client|contact|party|attendee|guest)s?$/,j=class extends Error{},b=n=>{throw new j(n)};function Dn(n,e){let r=n.fields.filter(s=>s.type==="enum");if(e){let s=I(n,e);if(s&&s.type==="enum")return s;s&&b(`${n.plural}' ${s.words} is not a choice, so it has no columns`)}let t=$(n,n.roles.status??n.roles.column);if(t?.type==="enum")return t;let o=r.find(s=>/^(status|stage|state|phase)$/.test(s.name));return o||(r[0]?r[0]:b(`${n.plural} have no choice field to put in columns`))}function nn(n,e){let r=n.fields.filter(R),t=l=>{let d=$(n,n.roles[l]);return R(d)?d:void 0},s=r.find(l=>A(e,l.words)||A(e,p(l.name)))??t("start")??r.find(l=>/^(due|date|on|at|start|starts|begins|from|sown|when)/i.test(l.name))??r[0];if(!s)return b(`no date field on ${n.plural}`);let i=t("end")??r.find(l=>l!==s&&/^(end|ends|until|to|finish|finished|harvested|due|closes|through)/i.test(l.name)),a=n.fields.find(l=>l.type==="boolean"&&/^(done|finished|complete|completed|closed)$/.test(l.name));return{start:s,...i&&i!==s?{end:i}:{},...a?{done:a}:{}}}function an(n){let e=$(n,n.roles.start),r=$(n,n.roles.end),t=$(n,n.roles.column??n.roles.day??n.roles.columns);if(K(e)&&K(r)&&t?.type==="enum")return{start:e,end:r,column:t}}function vn(n,e,r,t){let o=[];for(let i of n.kinds)for(let a of i.edges)for(let l of a.to){let d=n.info(l);if(!d||d.kind===i.kind)continue;let c=0;e.includes(i)&&(c+=4),e.includes(d)&&(c+=4),(Q.test(d.kind)||Q.test(d.noun))&&(c+=3),t&&(a.words.includes(t)||d.noun===L(t))&&(c+=5),a.words.split(" ").some(u=>u.length>2&&r.includes(` ${u}`))&&(c+=2),o.push({rows:i,across:d,link:a,score:c})}let s=o.sort((i,a)=>a.score-i.score)[0];return s||b(e[0]?`${e[0].plural} are joined to nothing else, so there is no who-covers-what to draw`:"nothing here is joined to anything else, so there is no who-covers-what to draw")}function dn(n,e,r,t,o){let s=z(t);switch(n){case"columns":{if(s){let i=I(e,s);if(!i||i.type!=="enum"){let a=sn(e,s,r);if(a){let l=r.info(a.to[0]);return{lens:"coverage",kind:e.kind,across:l.kind,link:a.name}}}}return{lens:"columns",kind:e.kind,column:Dn(e,s).name}}case"calendar":{let i=nn(e,t),a=M(t);return{lens:"calendar",kind:e.kind,start:i.start.name,...i.end?{end:i.end.name}:{},...i.done?{done:i.done.name}:{},...a?{range:a}:{}}}case"timeline":{let i=an(e);if(i&&!/\bdates?\b|\bdue\b|\bdeadlines?\b|\bmonths?\b|\byears?\b/.test(t))return{lens:"timeline",kind:e.kind,start:i.start.name,end:i.end.name,column:i.column.name};let a=nn(e,t);return{lens:"calendar",kind:e.kind,start:a.start.name,...a.end?{end:a.end.name}:{},...a.done?{done:a.done.name}:{},range:M(t)??"quarter"}}case"coverage":{let i=vn(r,o,t,s);return{lens:"coverage",kind:i.rows.kind,across:i.across.kind,link:i.link.name}}case"board":{let i=$(e,e.roles.x)??e.fields.find(c=>c.name==="x"),a=$(e,e.roles.y)??e.fields.find(c=>c.name==="y");if(!K(i)||!K(a))return b(`${e.plural} have no x and y to be laid out by`);let d=r.kinds.flatMap(c=>c.edges.filter(u=>u.to.includes(e.kind)&&c.kind!==e.kind))[0]??e.edges[0];return d?{lens:"board",kind:e.kind,x:i.name,y:a.name,fill:d.name,...d.from!==e.kind?{fillFrom:"occupant"}:{}}:b(`nothing is joined to ${e.plural} to fill them`)}case"plan":{let i=$(e,e.roles.outline)??e.fields.find(a=>a.name==="outline");return i?{lens:"plan",kind:e.kind,outline:i.name}:b(`${e.plural} have no outline to draw a plan from`)}case"blocks":{let i={lens:"blocks",kind:e.kind,as:/\bcards?\b/.test(t)?"card":"row"},a=/ group(?:ed)? by ([\p{L}\p{N} -]+?)(?= (?:and|only|sorted|with)|\s*$)/u.exec(t)?.[1]??(s&&!/ sort(?:ed)? by /.test(t)?s:void 0);if(a){let c=I(e,a);if(!c||c.type!=="enum")return b(c?`${e.plural}' ${c.words} is not a choice, so they cannot be grouped by it`:`${e.plural} have nothing called ${a} to group by`);i.group=c.name}let l=/ sort(?:ed)? by ([\p{L}\p{N} -]+?)(?= (?:and|only|grouped|with)|\s*$)/u.exec(t)?.[1];if(l){let c=I(e,l);if(!c)return b(`${e.plural} have nothing called ${l} to sort by`);i.sort={by:c.name,.../\b(newest|latest|desc|descending|most)\b/.test(t)?{direction:"desc"}:{}}}let d=q(e,t);return d.length>0&&(i.where=d),i}}}function q(n,e){let r=[],t=on(e);if(t){let o=n.fields.filter(R),s=$(n,n.roles.start),i=o.find(l=>A(e,l.words))??(R(s)?s:void 0)??o[0];(!i||!R(i))&&b(`no date field on ${n.plural}`);let a=n.fields.find(l=>l.type==="boolean"&&/^(done|finished|complete|completed|closed)$/.test(l.name));r.push({expr:t.cond(i.name,/\boverdue\b|\blate\b|\bpast due\b/.test(e)?a?.name:void 0),says:t.says(i)})}if(/\bonly\b|\bjust\b|\bthat are\b|\bwhich are\b/.test(e)){for(let o of n.fields){if(o.type!=="enum")continue;let s=o.options?.find(i=>A(e,i.toLowerCase())||A(e,p(i)));s&&r.push({expr:`${o.name} == '${s.replace(/'/g,"")}'`,says:`that are ${p(s)}`})}if(/\bnot done\b|\bundone\b|\bunfinished\b|\bopen ones\b|\bstill to do\b/.test(e)){let o=n.fields.find(s=>s.type==="boolean"&&/^(done|finished|complete|completed)$/.test(s.name));o&&r.push({expr:`not ${o.name}`,says:`not ${o.words}`})}}return r}var B={columns:"A board",calendar:"A calendar",timeline:"A timeline",coverage:"A grid",board:"A layout",plan:"A plan",blocks:"A list",reach:"A picture"};function Rn(n,e){let r=e.info(n.kind),t=o=>o?$(r,o)?.words??p(o):"";switch(n.lens){case"columns":return{title:`${k(r.plural)} by ${t(n.column)}`,detail:`of ${r.plural} by ${t(n.column)}`};case"calendar":{let o=n.range??"month";if(o==="agenda")return{title:`${k(r.plural)} in date order`,detail:`of ${r.plural} in order of ${t(n.start)}`};let s=o==="years"?"year":o;return{title:`${k(r.plural)} by ${s}`,detail:`of ${r.plural} by ${t(n.start)}, a ${s} at a time`}}case"timeline":return{title:`${k(r.plural)} over the ${t(n.column)}`,detail:`of ${r.plural} from ${t(n.start)} to ${t(n.end)}, by ${t(n.column)}`};case"coverage":{let o=e.info(n.across);return{title:`${k(r.plural)} by ${o.noun}`,detail:`of which ${o.noun} covers which ${r.noun}`}}case"board":return{title:`${k(r.plural)} where they stand`,detail:`of ${r.plural} where they stand`};case"plan":return{title:`${k(r.plural)} on a plan`,detail:`of ${r.plural}`};default:{let o=[n.where?.map(s=>s.says).join(" and "),n.group?`by ${t(n.group)}`:void 0,n.sort?`in order of ${t(n.sort.by)}`:void 0].filter(s=>!!s);return{title:[k(r.plural),...o].join(" "),detail:[`of ${r.plural}`,...o].join(" ")}}}}function An(n,e){let r={title:e,on:n.kind};switch(n.lens){case"columns":return{name:"columns",...r,bindings:{[n.kind]:{column:n.column}}};case"calendar":return{name:"calendar",...r,bindings:{[n.kind]:{start:n.start,...n.end?{end:n.end}:{},...n.done?{done:n.done}:{}}},...n.range?{options:{range:n.range}}:{}};case"timeline":return{name:"timeline",...r,bindings:{[n.kind]:{start:n.start,end:n.end,column:n.column}}};case"coverage":return{name:"coverage",...r,bindings:{rows:{kind:n.kind},columns:{kind:n.across},link:{edge:n.link}}};case"board":return{name:"board",...r,bindings:{slots:{kind:n.kind},x:{field:n.x,on:"slots"},y:{field:n.y,on:"slots"},fill:{edge:n.fill}},...n.fillFrom?{options:{fillFrom:n.fillFrom}}:{}};case"plan":return{name:"plan",...r,bindings:{regions:{kind:n.kind},outline:{field:n.outline,on:"regions"}}};default:{let t=n.where?.length?` where ${n.where.map(s=>n.where.length>1?`(${s.expr})`:s.expr).join(" and ")}`:"",o={list:`all('${n.kind}')${t}`,as:n.as??"row"};return n.group&&(o.group=n.group),n.sort&&(o.sort=n.sort.direction?{by:n.sort.by,direction:n.sort.direction}:n.sort.by),o.empty="Nothing here yet.",{name:"blocks",...r,options:{blocks:[o]}}}}}function F(n,e){let{app:r}=e,t=s=>s.toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,""),o=new Set(["home","overview",...Z(r,e.views?{views:e.views}:{}).map(s=>s.slug),...(r.lenses??[]).flatMap(s=>s.title?[t(s.title)]:[])]);if(!o.has(t(n)))return n;for(let s=2;;s++)if(!o.has(t(`${n} ${s}`)))return`${n} ${s}`}var en={title:[],headline:[],text:["tone"],figure:["as","currency","label"],list:["sort","limit","group","empty","as"],progress:["label"],group:["direction"],when:["show"],divider:[]};function Ln(n,e){if(!Array.isArray(e)||e.length===0)return"it has no blocks to draw";if(e.length>40)return"it has more blocks than a place draws";let r=(i,a)=>{if(typeof i!="string"||i.trim()==="")return`its ${a} says nothing`;try{return _(i)}catch(l){return`its ${a} does not read: ${l instanceof Error?l.message.replace(/ \(at character.*$/,""):String(l)}`}},t=i=>{if(i.t==="where")return t(i.set);if(i.t==="call"&&i.fn==="all"){let a=i.args[0];return a?.t==="lit"&&typeof a.value=="string"?n.info(a.value)??null:void 0}},o=(i,a)=>{switch(i.t){case"lit":return;case"ident":return a&&!a.fields.some(l=>l.name===i.name)&&!a.edges.some(l=>l.name===i.name)?`${a.plural} have nothing called ${i.name}`:void 0;case"member":return o(i.object,a);case"list":return i.items.map(l=>o(l,a)).find(Boolean);case"unary":return o(i.operand,a);case"binary":return o(i.left,a)??o(i.right,a);case"where":{let l=t(i.set);return l===null?"Nothing by that name here":o(i.set,a)??o(i.filter,l??void 0)}case"call":return i.fn==="all"?t(i)===null?"Nothing by that name here":void 0:i.args.map(l=>o(l,a)).find(Boolean)}},s=(i,a)=>{if(a>4)return"its blocks nest deeper than a place draws";for(let l of i){if(!w(l))return"a block is not an object";let d=Object.keys(en).find(g=>g in l);if(!d)return`"${Object.keys(l)[0]??""}" is not a block a place draws`;let c=Object.keys(l).find(g=>g!==d&&g!=="key"&&!en[d].includes(g));if(c)return`a ${d} block takes no "${c}"`;let u=l[d];if(d==="list"||d==="figure"||d==="when"){if(d==="figure"&&u===!0)continue;let g=r(u,d);if(typeof g=="string")return g;let m=o(g,void 0);if(m)return m;if(d==="list"){let f=t(g);if(f==null)return f===null?"Nothing by that name here":"its list does not say which records it lists, like all('task')";for(let y of["group","sort"]){let h=l[y],S=typeof h=="string"?h:w(h)&&typeof h.by=="string"?h.by:void 0;if(h===void 0)continue;let D=S?f.fields.find(un=>un.name===S):void 0;if(!D)return`${f.plural} have nothing called ${String(S??h)} to ${y} by`;if(y==="group"&&D.type!=="enum")return`${f.plural}' ${D.words} is not a choice, so they cannot be grouped by it`}}if(d==="when"){let f=l.show;if(!Array.isArray(f))return"a when block shows a list of blocks";let y=s(f,a+1);if(y)return y}}else if(d==="group"){if(!Array.isArray(u))return"a group block holds a list of blocks";let g=s(u,a+1);if(g)return g}else{if(d!=="divider"&&typeof u!="string")return`a ${d} block says words`;if(typeof u=="string")for(let g of u.matchAll(/\{([^{}]*)\}/g)){let m=g[1].split(/\|(?![|])/)[0],f=r(m,`${d}'s braces`);if(typeof f=="string")return f;let y=o(f,void 0);if(y)return y}}}};return s(e,1)}function N(n,e,r){let t=E(n.schema,r),o=f=>({ok:!1,failed:`Couldn't draw that: ${f.replace(/\.$/,"")}.`});if(!P(e.name)||e.name==="reach")return o(`"${String(e.name)}" is not a picture the seat can draw; it draws ${H.filter(f=>f!=="reach").join(", ")}`);if(typeof e.title!="string"||e.title.trim().length===0||e.title.length>80)return o("it needs a title of a few words");if(typeof e.on!="string"||!t.tryDefinition(e.on))return o("Nothing by that name here");let s=T[e.name],i=e.bindings??{};if(s.binds==="fields")for(let[f,y]of Object.entries(i)){if(!t.tryDefinition(f))return o("Nothing by that name here");let h=Object.keys(t.tryDefinition(f).fields?.shape??{});for(let[S,D]of Object.entries(y??{}))if(typeof D!="string"||!h.includes(D))return o(`${p(f)} has no field "${String(D)}" for its ${S}`);for(let S of s.requiredRoles)if(!(S in(y??{})))return o(`a ${e.name} needs ${p(f)}'s ${S}`)}else if(s.binds==="entities")for(let f of s.requiredRoles){let y=i[f];if(!y)return o(`a ${e.name} needs its ${f}`);if(typeof y.kind=="string"&&!t.tryDefinition(y.kind))return o("Nothing by that name here")}let a={...n,schema:t,lenses:[...n.lenses??[],e]},l=a.lenses.length-1,d=V(a),c=`lenses.${l}`,u=d.findings.find(f=>f.path===c||f.path.startsWith(`${c}.`));if(u)return o(u.message.replace(/^"[^"]*" /,"it "));let g=d.undrawn.find(f=>f.index===l);if(g)return o(g.why);let m=d.drawn.find(f=>f.index===l);if(!m)return o("its bindings name something the app does not have");if(m.as==="overview")return o(`"${e.title}" is the scene's own address; give it another title`);if(e.name==="blocks"){let f=Ln(x(t),e.options?.blocks);if(f)return o(f)}return{ok:!0,drawn:m}}function G(n){return{op:"add-lens",title:n.title,lens:n.name,on:n.on,...n.bindings?{bindings:n.bindings}:{},...n.options?{options:n.options}:{}}}function In(n){return{op:"remove-lens",title:n.title,on:n.on}}var w=n=>typeof n=="object"&&n!==null&&!Array.isArray(n);function ln(n){let e=w(n)?n:{},r=String(e.lens??e.name??""),t=e.bindings,o=typeof e.on=="string"?e.on:w(t)&&T[r]?.binds==="fields"?Object.keys(t)[0]??"":"";return{name:r,title:typeof e.title=="string"?e.title.trim():"",on:o,...w(t)?{bindings:t}:{},...w(e.options)?{options:e.options}:{}}}function En(n){let e=o=>w(n.bindings?.[o])?n.bindings[o]:{},r=o=>typeof o=="string"?o:void 0,t=e(n.on);switch(n.name){case"columns":return r(t.column)?{lens:"columns",kind:n.on,column:t.column}:void 0;case"calendar":{let o=r(n.options?.range);return r(t.start)?{lens:"calendar",kind:n.on,start:t.start,...r(t.end)?{end:t.end}:{},...r(t.done)?{done:t.done}:{},...o?{range:o}:{}}:void 0}case"timeline":return r(t.start)&&r(t.end)&&r(t.column)?{lens:"timeline",kind:n.on,start:t.start,end:t.end,column:t.column}:void 0;case"coverage":{let o=w(n.bindings?.columns)?r(n.bindings.columns.kind):void 0,s=w(n.bindings?.link)?r(n.bindings.link.edge):void 0;return o&&s?{lens:"coverage",kind:n.on,across:o,link:s}:void 0}case"blocks":{let o=n.options?.blocks;if(!Array.isArray(o)||o.length!==1||!w(o[0]))return;let s=o[0],i=new RegExp(`^all\\('${n.on}'\\)(?: where (.+))?$`).exec(String(s.list??""));if(!i)return;let a=s.sort;return{lens:"blocks",kind:n.on,as:s.as==="card"?"card":"row",...typeof s.group=="string"?{group:s.group}:{},...typeof a=="string"?{sort:{by:a}}:w(a)&&typeof a.by=="string"?{sort:{by:a.by,...a.direction==="desc"?{direction:"desc"}:{}}}:{},...i[1]?{where:[{expr:i[1],says:"as asked"}]}:{}}}default:return}}function W(n,e,r,t,o){let s=x(E(n.schema,t)).info(e.on),i=En(e);return{title:e.title,said:`${B[e.name]??"A picture"} of ${s?.plural??p(e.on)}.`,kind:e.on,lens:e,drawn:r,edit:G(e),by:o,asks:[],...i?{recipe:i}:{}}}function tn(n){return{title:n.title,said:n.said,lens:{title:n.lens.title,lens:n.lens.name,on:n.lens.on,...n.lens.bindings?{bindings:n.lens.bindings}:{},...n.lens.options?{options:n.lens.options}:{}},edit:n.edit,by:n.by,check:"It draws, and graview check would take it."}}function C(n,e,r,t,o){let s=Rn(n,e),i=n.title??o??F(s.title,r),a=An(n,i),l=N(r.app,a,r.sight);return l.ok?{title:i,said:`${B[n.lens]} ${s.detail}.`,kind:n.kind,lens:a,drawn:l.drawn,edit:G(a),by:"template",asks:t,recipe:n}:{failed:l.failed,...r.lastGood?{lastGood:r.lastGood}:{}}}function Hn(n,e){let r=x(E(e.app.schema,e.sight)),t=r.info(n.kind);if(!t)return{failed:"Couldn't draw that: Nothing by that name here."};let o=n.lens==="blocks"&&!n.group&&!n.sort&&!n.where?.length&&n.title===void 0;return C(o?{...n,title:F(`Every ${t.noun}`,e)}:n,r,e,[])}function xn(n,e,r,t){if(r.length>0)return r;let o=i=>{switch(n){case"columns":return i.fields.some(a=>a.type==="enum");case"calendar":return i.fields.some(R);case"timeline":return an(i)!==void 0||i.fields.some(R);case"coverage":return i.edges.some(a=>a.to.some(l=>l!==i.kind));case"board":return i.fields.some(a=>a.name==="x")&&i.fields.some(a=>a.name==="y");case"plan":return i.fields.some(a=>a.name==="outline")||i.roles.outline!==void 0;default:return!0}};return[...e.kinds.filter(o)].sort((i,a)=>Number(a.fields.some(l=>A(t,l.words)))-Number(i.fields.some(l=>A(t,l.words))))}function On(n,e){let r=x(E(e.app.schema,e.sight)),t=rn(n),o=Sn(t);if(o.length===0)return;let s=yn(t,r),i;for(let a of o){let l=a==="coverage"?[s[0]??r.kinds[0]].filter(d=>!!d):xn(a,r,s,t);for(let d of l)try{let c=dn(a,d,r,t,s),u=C(c,r,e,[n]);if(!O(u))return u;i??=u.failed}catch(c){if(!(c instanceof j))throw c;i??=`Couldn't draw that: ${c.message}.`}l.length===0&&s.length===0&&(i??=`Couldn't draw that: nothing here has what ${B[a].toLowerCase()} needs.`)}return{failed:i??"Couldn't draw that: Nothing by that name here.",...e.lastGood?{lastGood:e.lastGood}:{}}}async function jn(n,e){let r=e.lastGood?{lastGood:e.lastGood}:{};if(n.trim().length===0)return{failed:"Say what you would like to see, like \u201Ca board of tasks by status\u201D.",...r};let t=On(n,e);if(t&&!O(t))return t;if(!e.complete)return t??{failed:"Couldn't draw that: drawing freely needs AI, which isn't on here. Ask for a board, a calendar, a timeline, a list or who covers what.",...r};let o=await cn(n,e,void 0);return O(o)&&t?t:o}async function Nn(n,e,r){let t={lastGood:n},o={...r,lastGood:n},s=x(E(r.app.schema,r.sight)),i=rn(e),a=s.info(n.kind),l=[...n.asks,e];if(!a)return{failed:"Couldn't change that: Nothing by that name here.",...t};let d=n.recipe,c=/^ (?:call|name|title) (?:it|this)? ?(.+?) $/.exec(i)??/ (?:call|name) it (.+?) $/.exec(i);try{if(c){let m=e.replace(/^.*?\b(?:call|name|title)\b\s*(?:it|this)?\s*/i,"").replace(/^["“']|["”']$/g,"").trim();if(m.length===0)return{failed:"Couldn't change that: say what to call it.",...t};let f={...n.lens,title:F(m,r)},y=N(r.app,f,r.sight);return y.ok?{...n,title:f.title,lens:f,drawn:y.drawn,edit:G(f),asks:l,...d?{recipe:{...d,title:f.title}}:{}}:{failed:y.failed,...t}}let g=/ as (?:a |an )?(board|kanban|calendar|timeline|list|table|cards|rows|grid|plan|layout)\b/.exec(i);if(g){let m=g[1]==="board"||g[1]==="kanban"?"columns":g[1]==="calendar"?"calendar":g[1]==="timeline"?"timeline":g[1]==="grid"?"coverage":g[1]==="plan"?"plan":g[1]==="layout"?"board":"blocks",f=dn(m,a,s,i,[a]),y=g[1]==="cards"?"card":g[1]==="rows"?"row":void 0,h=m==="blocks"&&d?.lens==="blocks"?{...d,...y?{as:y}:{}}:m==="blocks"&&d?.lens==="columns"?{...f,group:d.column,...y?{as:y}:{}}:f;return C(v(h),s,o,l)}if(d){let m=Kn(d,a,s,i);if(m)return C(m,s,o,l)}}catch(g){if(!(g instanceof j))throw g;return{failed:`Couldn't change that: ${g.message}.`,...t}}if(!r.complete)return{failed:"Couldn't change that: changing it freely needs AI, which isn't on here. Try \u201Cgroup by status\u201D, \u201Conly this month\u201D or \u201Cas a calendar\u201D.",...t};let u=await cn(e,o,n);return O(u)?u:{...u,asks:l}}var v=n=>{let{title:e,...r}=n;return r};function Kn(n,e,r,t){let o=/ (?:group(?:ed)?|split|organi[sz]ed?|put them|columns) by ([\p{L}\p{N} -]+?)(?= (?:and|only|with)|\s*$)/u.exec(t)?.[1]??(/^ by /.test(t)?z(t):void 0);if(o){let d=I(e,o);if(d?.type==="enum")return n.lens==="blocks"?{...v(n),group:d.name}:{lens:"columns",kind:n.kind,column:d.name};let c=sn(e,o,r);return c?{lens:"coverage",kind:n.kind,across:c.to[0],link:c.name}:b(d?`${e.plural}' ${d.words} is not a choice, so they cannot be grouped by it`:`${e.plural} have nothing called ${o} to group by`)}let s=/ (?:sort(?:ed)?|order(?:ed)?) by ([\p{L}\p{N} -]+?)(?= (?:and|only|with)|\s*$)/u.exec(t)?.[1];if(s){let d=I(e,s);return d?{...n.lens==="blocks"?v(n):{lens:"blocks",kind:n.kind,as:"row",...n.lens==="columns"?{group:n.column}:{}},sort:{by:d.name,.../\b(newest|latest|desc|descending|most)\b/.test(t)?{direction:"desc"}:{}}}:b(`${e.plural} have nothing called ${s} to sort by`)}if(/\b(?:all of them|everything|show all|clear the filter|no filter|without the filter)\b/.test(t)){if(n.lens!=="blocks"||!n.where)return b("it already shows all of them");let{where:d,...c}=v(n);return c}let i=on(t);if(i&&n.lens==="calendar"&&i.range)return{...v(n),range:i.range};if(i&&n.lens==="calendar"&&!i.range)return{lens:"blocks",kind:n.kind,as:"row",sort:{by:n.start},where:q(e,t)};let a=q(e,t);if(a.length>0){let d=n.lens==="blocks"?v(n):{lens:"blocks",kind:n.kind,as:"row",...n.lens==="columns"?{group:n.column}:{}};return{...d,where:[...d.where??[],...a]}}let l=n.lens==="calendar"?M(t):void 0;if(l)return{...v(n),range:l}}function Cn(n){return n.kinds.map(e=>{let r=e.fields.map(s=>`${s.name} (${s.type??"value"}${s.options?`: ${s.options.join(" | ")}`:""})`).join(", "),t=e.edges.map(s=>`${s.name} \u2192 ${s.to.join(" | ")}`).join(", "),o=Object.entries(e.roles).map(([s,i])=>`${s}=${i}`).join(", ");return`- ${e.kind} ("${e.plural}"): ${r}${t?`; relations: ${t}`:""}${o?`; roles: ${o}`:""}`}).join(`
1
+ import{a as k}from"./chunk.G4JJXA63.js";import{a as Z}from"./chunk.67U6M7OV.js";import{a as Y}from"./chunk.6C2MHWSX.js";import{a as X}from"./chunk.TY4GQJKC.js";import{c as _}from"./chunk.PI44XMY2.js";import{Kd as T,Md as H,Nd as P,Od as V,rb as J,sb as U}from"./chunk.VSCIXAHN.js";var O=n=>"failed"in n;function fn(n,e){let r=n.schema.kinds,t=n.policy?.sees;if(!t?.length||U(e))return{kinds:r};let o=J(e).roles??[],s=new Set(t.filter(i=>i.roles==="*"||o.some(a=>i.roles.includes(a))).flatMap(i=>i.kinds));return{kinds:r.filter(i=>s.has(i))}}function E(n,e){if(!e)return n;let r=new Set(e.kinds.filter(s=>n.tryDefinition(s)!==void 0));if(r.size===n.kinds.length)return n;let t=new Map,o=s=>{if(r.has(s)){if(!t.has(s)){let i=n.tryDefinition(s),a=Object.fromEntries(Object.entries(i?.edges??{}).flatMap(([l,d])=>{if(d.to==="*")return[[l,d]];let c=d.to.filter(u=>r.has(u));return c.length>0?[[l,{...d,to:c}]]:[]}));t.set(s,{...i,edges:a})}return t.get(s)}};return{...n,definitions:n.definitions.filter(s=>r.has(s.kind)),kinds:n.kinds.filter(s=>r.has(s)),tryDefinition:o,definition:s=>{let i=o(s);if(!i)throw new Error(`Unknown node kind "${s}"`);return i}}}var gn=n=>n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),p=n=>gn(n).replace(/[-_]+/g," ").trim();function x(n){let e=[];for(let t of n.kinds){let o=n.tryDefinition(t);if(!o)continue;let s=o.display?.labels??{},i=Object.entries(o.fields?.shape??{}).filter(([d])=>d!=="id"&&d!=="kind").map(([d,c])=>{let u=X(c);return{name:d,type:u?.type,...u?.options?{options:u.options}:{},words:(s[d]??p(d)).toLowerCase()}}),a=Object.entries(o.edges??{}).map(([d,c])=>({name:d,from:t,to:c.to==="*"?n.kinds.filter(u=>u!==t):c.to,words:p(d)})),l=(o.plural??`${p(t)}s`).toLowerCase();e.push({kind:t,plural:l,noun:(o.noun??p(t)).toLowerCase(),fields:i,roles:o.fieldRoles??{},edges:a})}let r=new Map(e.map(t=>[t.kind,t]));return{schema:n,kinds:e,info:t=>r.get(t)}}var $=(n,e)=>e===void 0?void 0:n.fields.find(r=>r.name===e),R=n=>n?.type==="date"||n?.type==="datetime",K=n=>n?.type==="number"||n?.type==="integer"||n?.type==="duration",rn=n=>` ${n.toLowerCase().replace(/[“”"’‘]/g,"'").replace(/[^\p{L}\p{N}' -]+/gu," ").replace(/\s+/g," ").trim()} `,A=(n,e)=>n.includes(` ${e} `),L=n=>n.endsWith("ies")?`${n.slice(0,-3)}y`:n.endsWith("ses")?n.slice(0,-2):n.endsWith("s")?n.slice(0,-1):n;function yn(n,e){let r=[];for(let t of e.kinds){let o=new Set([t.plural,t.noun,`${t.noun}s`,p(t.kind),`${p(t.kind)}s`]),s=-1;for(let i of o){let a=n.indexOf(` ${i} `);a>=0&&(s<0||a<s)&&(s=a)}s>=0&&r.push({info:t,at:s})}return r.sort((t,o)=>t.at-o.at).map(t=>t.info)}function I(n,e,r){let t=e.trim().toLowerCase();if(t.length===0)return;let o=n.fields.filter(s=>!r||r(s));return o.find(s=>s.words===t||p(s.name)===t||s.name.toLowerCase()===t)??o.find(s=>s.words===L(t)||p(s.name)===L(t))??o.find(s=>t.split(" ").some(i=>i.length>2&&(s.words.split(" ").includes(i)||s.words.split(" ").includes(L(i)))))}function sn(n,e,r){let t=e.trim().toLowerCase();if(t.length!==0)return n.edges.find(o=>o.words===t||o.name.toLowerCase()===t)??n.edges.find(o=>o.to.some(s=>{let i=r.info(s);return i!==void 0&&(i.noun===L(t)||i.plural===t||p(s)===L(t))}))??n.edges.find(o=>t.split(" ").some(s=>s.length>2&&o.words.split(" ").includes(s)))}function z(n){return/ (?:grouped |group |split |sorted |organi[sz]ed )?by ([\p{L}\p{N}' -]+?)(?= (?:and|with|for|in|on|only|where|from|this|that|as|sorted|grouped) |\s*$)/u.exec(n)?.[1]?.trim()}var mn=/\bwho\b.*\b(covers?|cover|tends?|owns?|handles?|does|works? on|looks? after|is on|is assigned|staffs?|runs?)\b|\bcoverage\b|\bmatrix\b|\bwho covers\b/,pn=/\bcalendar\b|\bmonth\b|\bagenda\b|\bschedule\b|\bdue\b|\bdeadlines?\b|\bdates?\b|\bwhen\b/,bn=/\btimeline\b|\bover time\b|\bgantt\b|\bspans?\b|\bweek\b/,hn=/\bboard\b|\bkanban\b|\bcolumns?\b|\bpipeline\b|\bstages?\b|\bstatus\b/,wn=/\blaid out\b|\blayout\b|\bseating\b|\bwhere (?:they|it|each) (?:sits?|lies?|stands?)\b|\bfloor\b/,kn=/\bplan\b|\bmap\b|\bregions?\b/,$n=/\blist\b|\btable\b|\bgroup(?:ed)? by\b|\bsort(?:ed)? by\b|\bonly\b|\bjust the\b/;function Sn(n){let e=[];return/\blist\b|\btable\b/.test(n)&&e.push("blocks"),mn.test(n)&&e.push("coverage"),wn.test(n)&&e.push("board"),(/\bfloor plan\b/.test(n)||kn.test(n))&&e.push("plan"),bn.test(n)&&e.push("timeline"),pn.test(n)&&e.push("calendar"),hn.test(n)&&e.push("columns"),$n.test(n)&&!e.includes("blocks")&&e.push("blocks"),e.length===0&&z(n)&&e.push("columns"),e}var on=n=>{let e=r=>r?` and not ${r}`:"";if(/\boverdue\b|\blate\b|\bpast due\b/.test(n))return{cond:(r,t)=>`days(today(), ${r}) < 0${e(t)}`,says:r=>`overdue by ${r.words}`};if(/\btoday\b/.test(n))return{range:"day",cond:r=>`days(today(), ${r}) == 0`,says:r=>`with ${r.words} today`};if(/\bthis week\b|\bnext 7 days\b|\bnext week\b/.test(n))return{range:"week",cond:r=>`days(today(), ${r}) >= 0 and days(today(), ${r}) <= 6`,says:r=>`with ${r.words} in the next week`};if(/\bthis month\b|\bnext 30 days\b|\bnext month\b/.test(n))return{range:"month",cond:r=>`days(today(), ${r}) >= 0 and days(today(), ${r}) <= 30`,says:r=>`with ${r.words} in the next month`};if(/\blast month\b|\bpast month\b/.test(n))return{range:"month",cond:r=>`days(today(), ${r}) >= -30 and days(today(), ${r}) <= 0`,says:r=>`with ${r.words} in the last month`};if(/\bthis year\b/.test(n))return{range:"year",cond:r=>`days(today(), ${r}) >= 0 and days(today(), ${r}) <= 365`,says:r=>`with ${r.words} in the next year`};if(/\bquarter\b/.test(n))return{range:"quarter",cond:r=>`days(today(), ${r}) >= 0 and days(today(), ${r}) <= 91`,says:r=>`with ${r.words} in the next quarter`}},M=n=>{if(/\bagenda\b|\bin order\b/.test(n))return"agenda";if(/\btoday\b|\bday\b/.test(n))return"day";if(/\bweek\b/.test(n))return"week";if(/\bquarter\b/.test(n))return"quarter";if(/\byears\b/.test(n))return"years";if(/\byear\b/.test(n))return"year";if(/\bmonth\b/.test(n))return"month"},Q=/^(user|person|people|member|staff|gardener|volunteer|owner|agent|employee|worker|team|player|customer|client|contact|party|attendee|guest)s?$/,j=class extends Error{},b=n=>{throw new j(n)};function Dn(n,e){let r=n.fields.filter(s=>s.type==="enum");if(e){let s=I(n,e);if(s&&s.type==="enum")return s;s&&b(`${n.plural}' ${s.words} is not a choice, so it has no columns`)}let t=$(n,n.roles.status??n.roles.column);if(t?.type==="enum")return t;let o=r.find(s=>/^(status|stage|state|phase)$/.test(s.name));return o||(r[0]?r[0]:b(`${n.plural} have no choice field to put in columns`))}function nn(n,e){let r=n.fields.filter(R),t=l=>{let d=$(n,n.roles[l]);return R(d)?d:void 0},s=r.find(l=>A(e,l.words)||A(e,p(l.name)))??t("start")??r.find(l=>/^(due|date|on|at|start|starts|begins|from|sown|when)/i.test(l.name))??r[0];if(!s)return b(`no date field on ${n.plural}`);let i=t("end")??r.find(l=>l!==s&&/^(end|ends|until|to|finish|finished|harvested|due|closes|through)/i.test(l.name)),a=n.fields.find(l=>l.type==="boolean"&&/^(done|finished|complete|completed|closed)$/.test(l.name));return{start:s,...i&&i!==s?{end:i}:{},...a?{done:a}:{}}}function an(n){let e=$(n,n.roles.start),r=$(n,n.roles.end),t=$(n,n.roles.column??n.roles.day??n.roles.columns);if(K(e)&&K(r)&&t?.type==="enum")return{start:e,end:r,column:t}}function vn(n,e,r,t){let o=[];for(let i of n.kinds)for(let a of i.edges)for(let l of a.to){let d=n.info(l);if(!d||d.kind===i.kind)continue;let c=0;e.includes(i)&&(c+=4),e.includes(d)&&(c+=4),(Q.test(d.kind)||Q.test(d.noun))&&(c+=3),t&&(a.words.includes(t)||d.noun===L(t))&&(c+=5),a.words.split(" ").some(u=>u.length>2&&r.includes(` ${u}`))&&(c+=2),o.push({rows:i,across:d,link:a,score:c})}let s=o.sort((i,a)=>a.score-i.score)[0];return s||b(e[0]?`${e[0].plural} are joined to nothing else, so there is no who-covers-what to draw`:"nothing here is joined to anything else, so there is no who-covers-what to draw")}function dn(n,e,r,t,o){let s=z(t);switch(n){case"columns":{if(s){let i=I(e,s);if(!i||i.type!=="enum"){let a=sn(e,s,r);if(a){let l=r.info(a.to[0]);return{lens:"coverage",kind:e.kind,across:l.kind,link:a.name}}}}return{lens:"columns",kind:e.kind,column:Dn(e,s).name}}case"calendar":{let i=nn(e,t),a=M(t);return{lens:"calendar",kind:e.kind,start:i.start.name,...i.end?{end:i.end.name}:{},...i.done?{done:i.done.name}:{},...a?{range:a}:{}}}case"timeline":{let i=an(e);if(i&&!/\bdates?\b|\bdue\b|\bdeadlines?\b|\bmonths?\b|\byears?\b/.test(t))return{lens:"timeline",kind:e.kind,start:i.start.name,end:i.end.name,column:i.column.name};let a=nn(e,t);return{lens:"calendar",kind:e.kind,start:a.start.name,...a.end?{end:a.end.name}:{},...a.done?{done:a.done.name}:{},range:M(t)??"quarter"}}case"coverage":{let i=vn(r,o,t,s);return{lens:"coverage",kind:i.rows.kind,across:i.across.kind,link:i.link.name}}case"board":{let i=$(e,e.roles.x)??e.fields.find(c=>c.name==="x"),a=$(e,e.roles.y)??e.fields.find(c=>c.name==="y");if(!K(i)||!K(a))return b(`${e.plural} have no x and y to be laid out by`);let d=r.kinds.flatMap(c=>c.edges.filter(u=>u.to.includes(e.kind)&&c.kind!==e.kind))[0]??e.edges[0];return d?{lens:"board",kind:e.kind,x:i.name,y:a.name,fill:d.name,...d.from!==e.kind?{fillFrom:"occupant"}:{}}:b(`nothing is joined to ${e.plural} to fill them`)}case"plan":{let i=$(e,e.roles.outline)??e.fields.find(a=>a.name==="outline");return i?{lens:"plan",kind:e.kind,outline:i.name}:b(`${e.plural} have no outline to draw a plan from`)}case"blocks":{let i={lens:"blocks",kind:e.kind,as:/\bcards?\b/.test(t)?"card":"row"},a=/ group(?:ed)? by ([\p{L}\p{N} -]+?)(?= (?:and|only|sorted|with)|\s*$)/u.exec(t)?.[1]??(s&&!/ sort(?:ed)? by /.test(t)?s:void 0);if(a){let c=I(e,a);if(!c||c.type!=="enum")return b(c?`${e.plural}' ${c.words} is not a choice, so they cannot be grouped by it`:`${e.plural} have nothing called ${a} to group by`);i.group=c.name}let l=/ sort(?:ed)? by ([\p{L}\p{N} -]+?)(?= (?:and|only|grouped|with)|\s*$)/u.exec(t)?.[1];if(l){let c=I(e,l);if(!c)return b(`${e.plural} have nothing called ${l} to sort by`);i.sort={by:c.name,.../\b(newest|latest|desc|descending|most)\b/.test(t)?{direction:"desc"}:{}}}let d=q(e,t);return d.length>0&&(i.where=d),i}}}function q(n,e){let r=[],t=on(e);if(t){let o=n.fields.filter(R),s=$(n,n.roles.start),i=o.find(l=>A(e,l.words))??(R(s)?s:void 0)??o[0];(!i||!R(i))&&b(`no date field on ${n.plural}`);let a=n.fields.find(l=>l.type==="boolean"&&/^(done|finished|complete|completed|closed)$/.test(l.name));r.push({expr:t.cond(i.name,/\boverdue\b|\blate\b|\bpast due\b/.test(e)?a?.name:void 0),says:t.says(i)})}if(/\bonly\b|\bjust\b|\bthat are\b|\bwhich are\b/.test(e)){for(let o of n.fields){if(o.type!=="enum")continue;let s=o.options?.find(i=>A(e,i.toLowerCase())||A(e,p(i)));s&&r.push({expr:`${o.name} == '${s.replace(/'/g,"")}'`,says:`that are ${p(s)}`})}if(/\bnot done\b|\bundone\b|\bunfinished\b|\bopen ones\b|\bstill to do\b/.test(e)){let o=n.fields.find(s=>s.type==="boolean"&&/^(done|finished|complete|completed)$/.test(s.name));o&&r.push({expr:`not ${o.name}`,says:`not ${o.words}`})}}return r}var B={columns:"A board",calendar:"A calendar",timeline:"A timeline",coverage:"A grid",board:"A layout",plan:"A plan",blocks:"A list",reach:"A picture"};function Rn(n,e){let r=e.info(n.kind),t=o=>o?$(r,o)?.words??p(o):"";switch(n.lens){case"columns":return{title:`${k(r.plural)} by ${t(n.column)}`,detail:`of ${r.plural} by ${t(n.column)}`};case"calendar":{let o=n.range??"month";if(o==="agenda")return{title:`${k(r.plural)} in date order`,detail:`of ${r.plural} in order of ${t(n.start)}`};let s=o==="years"?"year":o;return{title:`${k(r.plural)} by ${s}`,detail:`of ${r.plural} by ${t(n.start)}, a ${s} at a time`}}case"timeline":return{title:`${k(r.plural)} over the ${t(n.column)}`,detail:`of ${r.plural} from ${t(n.start)} to ${t(n.end)}, by ${t(n.column)}`};case"coverage":{let o=e.info(n.across);return{title:`${k(r.plural)} by ${o.noun}`,detail:`of which ${o.noun} covers which ${r.noun}`}}case"board":return{title:`${k(r.plural)} where they stand`,detail:`of ${r.plural} where they stand`};case"plan":return{title:`${k(r.plural)} on a plan`,detail:`of ${r.plural}`};default:{let o=[n.where?.map(s=>s.says).join(" and "),n.group?`by ${t(n.group)}`:void 0,n.sort?`in order of ${t(n.sort.by)}`:void 0].filter(s=>!!s);return{title:[k(r.plural),...o].join(" "),detail:[`of ${r.plural}`,...o].join(" ")}}}}function An(n,e){let r={title:e,on:n.kind};switch(n.lens){case"columns":return{name:"columns",...r,bindings:{[n.kind]:{column:n.column}}};case"calendar":return{name:"calendar",...r,bindings:{[n.kind]:{start:n.start,...n.end?{end:n.end}:{},...n.done?{done:n.done}:{}}},...n.range?{options:{range:n.range}}:{}};case"timeline":return{name:"timeline",...r,bindings:{[n.kind]:{start:n.start,end:n.end,column:n.column}}};case"coverage":return{name:"coverage",...r,bindings:{rows:{kind:n.kind},columns:{kind:n.across},link:{edge:n.link}}};case"board":return{name:"board",...r,bindings:{slots:{kind:n.kind},x:{field:n.x,on:"slots"},y:{field:n.y,on:"slots"},fill:{edge:n.fill}},...n.fillFrom?{options:{fillFrom:n.fillFrom}}:{}};case"plan":return{name:"plan",...r,bindings:{regions:{kind:n.kind},outline:{field:n.outline,on:"regions"}}};default:{let t=n.where?.length?` where ${n.where.map(s=>n.where.length>1?`(${s.expr})`:s.expr).join(" and ")}`:"",o={list:`all('${n.kind}')${t}`,as:n.as??"row"};return n.group&&(o.group=n.group),n.sort&&(o.sort=n.sort.direction?{by:n.sort.by,direction:n.sort.direction}:n.sort.by),o.empty="Nothing here yet.",{name:"blocks",...r,options:{blocks:[o]}}}}}function F(n,e){let{app:r}=e,t=s=>s.toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,""),o=new Set(["home","overview",...Z(r,e.views?{views:e.views}:{}).map(s=>s.slug),...(r.lenses??[]).flatMap(s=>s.title?[t(s.title)]:[])]);if(!o.has(t(n)))return n;for(let s=2;;s++)if(!o.has(t(`${n} ${s}`)))return`${n} ${s}`}var en={title:[],headline:[],text:["tone"],figure:["as","currency","label"],list:["sort","limit","group","empty","as"],progress:["label"],group:["direction"],when:["show"],divider:[]};function Ln(n,e){if(!Array.isArray(e)||e.length===0)return"it has no blocks to draw";if(e.length>40)return"it has more blocks than a place draws";let r=(i,a)=>{if(typeof i!="string"||i.trim()==="")return`its ${a} says nothing`;try{return _(i)}catch(l){return`its ${a} does not read: ${l instanceof Error?l.message.replace(/ \(at character.*$/,""):String(l)}`}},t=i=>{if(i.t==="where")return t(i.set);if(i.t==="call"&&i.fn==="all"){let a=i.args[0];return a?.t==="lit"&&typeof a.value=="string"?n.info(a.value)??null:void 0}},o=(i,a)=>{switch(i.t){case"lit":return;case"ident":return a&&!a.fields.some(l=>l.name===i.name)&&!a.edges.some(l=>l.name===i.name)?`${a.plural} have nothing called ${i.name}`:void 0;case"member":return o(i.object,a);case"list":return i.items.map(l=>o(l,a)).find(Boolean);case"unary":return o(i.operand,a);case"binary":return o(i.left,a)??o(i.right,a);case"where":{let l=t(i.set);return l===null?"Nothing by that name here":o(i.set,a)??o(i.filter,l??void 0)}case"call":return i.fn==="all"?t(i)===null?"Nothing by that name here":void 0:i.args.map(l=>o(l,a)).find(Boolean)}},s=(i,a)=>{if(a>4)return"its blocks nest deeper than a place draws";for(let l of i){if(!w(l))return"a block is not an object";let d=Object.keys(en).find(g=>g in l);if(!d)return`"${Object.keys(l)[0]??""}" is not a block a place draws`;let c=Object.keys(l).find(g=>g!==d&&g!=="key"&&!en[d].includes(g));if(c)return`a ${d} block takes no "${c}"`;let u=l[d];if(d==="list"||d==="figure"||d==="when"){if(d==="figure"&&u===!0)continue;let g=r(u,d);if(typeof g=="string")return g;let m=o(g,void 0);if(m)return m;if(d==="list"){let f=t(g);if(f==null)return f===null?"Nothing by that name here":"its list does not say which records it lists, like all('task')";for(let y of["group","sort"]){let h=l[y],S=typeof h=="string"?h:w(h)&&typeof h.by=="string"?h.by:void 0;if(h===void 0)continue;let D=S?f.fields.find(un=>un.name===S):void 0;if(!D)return`${f.plural} have nothing called ${String(S??h)} to ${y} by`;if(y==="group"&&D.type!=="enum")return`${f.plural}' ${D.words} is not a choice, so they cannot be grouped by it`}}if(d==="when"){let f=l.show;if(!Array.isArray(f))return"a when block shows a list of blocks";let y=s(f,a+1);if(y)return y}}else if(d==="group"){if(!Array.isArray(u))return"a group block holds a list of blocks";let g=s(u,a+1);if(g)return g}else{if(d!=="divider"&&typeof u!="string")return`a ${d} block says words`;if(typeof u=="string")for(let g of u.matchAll(/\{([^{}]*)\}/g)){let m=g[1].split(/\|(?![|])/)[0],f=r(m,`${d}'s braces`);if(typeof f=="string")return f;let y=o(f,void 0);if(y)return y}}}};return s(e,1)}function N(n,e,r){let t=E(n.schema,r),o=f=>({ok:!1,failed:`Couldn't draw that: ${f.replace(/\.$/,"")}.`});if(!P(e.name)||e.name==="reach")return o(`"${String(e.name)}" is not a picture the seat can draw; it draws ${H.filter(f=>f!=="reach").join(", ")}`);if(typeof e.title!="string"||e.title.trim().length===0||e.title.length>80)return o("it needs a title of a few words");if(typeof e.on!="string"||!t.tryDefinition(e.on))return o("Nothing by that name here");let s=T[e.name],i=e.bindings??{};if(s.binds==="fields")for(let[f,y]of Object.entries(i)){if(!t.tryDefinition(f))return o("Nothing by that name here");let h=Object.keys(t.tryDefinition(f).fields?.shape??{});for(let[S,D]of Object.entries(y??{}))if(typeof D!="string"||!h.includes(D))return o(`${p(f)} has no field "${String(D)}" for its ${S}`);for(let S of s.requiredRoles)if(!(S in(y??{})))return o(`a ${e.name} needs ${p(f)}'s ${S}`)}else if(s.binds==="entities")for(let f of s.requiredRoles){let y=i[f];if(!y)return o(`a ${e.name} needs its ${f}`);if(typeof y.kind=="string"&&!t.tryDefinition(y.kind))return o("Nothing by that name here")}let a={...n,schema:t,lenses:[...n.lenses??[],e]},l=a.lenses.length-1,d=V(a),c=`lenses.${l}`,u=d.findings.find(f=>f.path===c||f.path.startsWith(`${c}.`));if(u)return o(u.message.replace(/^"[^"]*" /,"it "));let g=d.undrawn.find(f=>f.index===l);if(g)return o(g.why);let m=d.drawn.find(f=>f.index===l);if(!m)return o("its bindings name something the app does not have");if(m.as==="overview")return o(`"${e.title}" is the scene's own address; give it another title`);if(e.name==="blocks"){let f=Ln(x(t),e.options?.blocks);if(f)return o(f)}return{ok:!0,drawn:m}}function G(n){return{op:"add-lens",title:n.title,lens:n.name,on:n.on,...n.bindings?{bindings:n.bindings}:{},...n.options?{options:n.options}:{}}}function In(n){return{op:"remove-lens",title:n.title,on:n.on}}var w=n=>typeof n=="object"&&n!==null&&!Array.isArray(n);function ln(n){let e=w(n)?n:{},r=String(e.lens??e.name??""),t=e.bindings,o=typeof e.on=="string"?e.on:w(t)&&T[r]?.binds==="fields"?Object.keys(t)[0]??"":"";return{name:r,title:typeof e.title=="string"?e.title.trim():"",on:o,...w(t)?{bindings:t}:{},...w(e.options)?{options:e.options}:{}}}function En(n){let e=o=>w(n.bindings?.[o])?n.bindings[o]:{},r=o=>typeof o=="string"?o:void 0,t=e(n.on);switch(n.name){case"columns":return r(t.column)?{lens:"columns",kind:n.on,column:t.column}:void 0;case"calendar":{let o=r(n.options?.range);return r(t.start)?{lens:"calendar",kind:n.on,start:t.start,...r(t.end)?{end:t.end}:{},...r(t.done)?{done:t.done}:{},...o?{range:o}:{}}:void 0}case"timeline":return r(t.start)&&r(t.end)&&r(t.column)?{lens:"timeline",kind:n.on,start:t.start,end:t.end,column:t.column}:void 0;case"coverage":{let o=w(n.bindings?.columns)?r(n.bindings.columns.kind):void 0,s=w(n.bindings?.link)?r(n.bindings.link.edge):void 0;return o&&s?{lens:"coverage",kind:n.on,across:o,link:s}:void 0}case"blocks":{let o=n.options?.blocks;if(!Array.isArray(o)||o.length!==1||!w(o[0]))return;let s=o[0],i=new RegExp(`^all\\('${n.on}'\\)(?: where (.+))?$`).exec(String(s.list??""));if(!i)return;let a=s.sort;return{lens:"blocks",kind:n.on,as:s.as==="card"?"card":"row",...typeof s.group=="string"?{group:s.group}:{},...typeof a=="string"?{sort:{by:a}}:w(a)&&typeof a.by=="string"?{sort:{by:a.by,...a.direction==="desc"?{direction:"desc"}:{}}}:{},...i[1]?{where:[{expr:i[1],says:"as asked"}]}:{}}}default:return}}function W(n,e,r,t,o){let s=x(E(n.schema,t)).info(e.on),i=En(e);return{title:e.title,said:`${B[e.name]??"A picture"} of ${s?.plural??p(e.on)}.`,kind:e.on,lens:e,drawn:r,edit:G(e),by:o,asks:[],...i?{recipe:i}:{}}}function tn(n){return{title:n.title,said:n.said,lens:{title:n.lens.title,lens:n.lens.name,on:n.lens.on,...n.lens.bindings?{bindings:n.lens.bindings}:{},...n.lens.options?{options:n.lens.options}:{}},edit:n.edit,by:n.by,check:"It draws, and graview check would take it."}}function C(n,e,r,t,o){let s=Rn(n,e),i=n.title??o??F(s.title,r),a=An(n,i),l=N(r.app,a,r.sight);return l.ok?{title:i,said:`${B[n.lens]} ${s.detail}.`,kind:n.kind,lens:a,drawn:l.drawn,edit:G(a),by:"template",asks:t,recipe:n}:{failed:l.failed,...r.lastGood?{lastGood:r.lastGood}:{}}}function Hn(n,e){let r=x(E(e.app.schema,e.sight)),t=r.info(n.kind);if(!t)return{failed:"Couldn't draw that: Nothing by that name here."};let o=n.lens==="blocks"&&!n.group&&!n.sort&&!n.where?.length&&n.title===void 0;return C(o?{...n,title:F(`Every ${t.noun}`,e)}:n,r,e,[])}function xn(n,e,r,t){if(r.length>0)return r;let o=i=>{switch(n){case"columns":return i.fields.some(a=>a.type==="enum");case"calendar":return i.fields.some(R);case"timeline":return an(i)!==void 0||i.fields.some(R);case"coverage":return i.edges.some(a=>a.to.some(l=>l!==i.kind));case"board":return i.fields.some(a=>a.name==="x")&&i.fields.some(a=>a.name==="y");case"plan":return i.fields.some(a=>a.name==="outline")||i.roles.outline!==void 0;default:return!0}};return[...e.kinds.filter(o)].sort((i,a)=>Number(a.fields.some(l=>A(t,l.words)))-Number(i.fields.some(l=>A(t,l.words))))}function On(n,e){let r=x(E(e.app.schema,e.sight)),t=rn(n),o=Sn(t);if(o.length===0)return;let s=yn(t,r),i;for(let a of o){let l=a==="coverage"?[s[0]??r.kinds[0]].filter(d=>!!d):xn(a,r,s,t);for(let d of l)try{let c=dn(a,d,r,t,s),u=C(c,r,e,[n]);if(!O(u))return u;i??=u.failed}catch(c){if(!(c instanceof j))throw c;i??=`Couldn't draw that: ${c.message}.`}l.length===0&&s.length===0&&(i??=`Couldn't draw that: nothing here has what ${B[a].toLowerCase()} needs.`)}return{failed:i??"Couldn't draw that: Nothing by that name here.",...e.lastGood?{lastGood:e.lastGood}:{}}}async function jn(n,e){let r=e.lastGood?{lastGood:e.lastGood}:{};if(n.trim().length===0)return{failed:"Say what you would like to see, like \u201Ca board of tasks by status\u201D.",...r};let t=On(n,e);if(t&&!O(t))return t;if(!e.complete)return t??{failed:"Couldn't draw that: drawing freely needs AI, which isn't on here. Ask for a board, a calendar, a timeline, a list or who covers what.",...r};let o=await cn(n,e,void 0);return O(o)&&t?t:o}async function Nn(n,e,r){let t={lastGood:n},o={...r,lastGood:n},s=x(E(r.app.schema,r.sight)),i=rn(e),a=s.info(n.kind),l=[...n.asks,e];if(!a)return{failed:"Couldn't change that: Nothing by that name here.",...t};let d=n.recipe,c=/^ (?:call|name|title) (?:it|this)? ?(.+?) $/.exec(i)??/ (?:call|name) it (.+?) $/.exec(i);try{if(c){let m=e.replace(/^.*?\b(?:call|name|title)\b\s*(?:it|this)?\s*/i,"").replace(/^["“']|["”']$/g,"").trim();if(m.length===0)return{failed:"Couldn't change that: say what to call it.",...t};let f={...n.lens,title:F(m,r)},y=N(r.app,f,r.sight);return y.ok?{...n,title:f.title,lens:f,drawn:y.drawn,edit:G(f),asks:l,...d?{recipe:{...d,title:f.title}}:{}}:{failed:y.failed,...t}}let g=/ as (?:a |an )?(board|kanban|calendar|timeline|list|table|cards|rows|grid|plan|layout)\b/.exec(i);if(g){let m=g[1]==="board"||g[1]==="kanban"?"columns":g[1]==="calendar"?"calendar":g[1]==="timeline"?"timeline":g[1]==="grid"?"coverage":g[1]==="plan"?"plan":g[1]==="layout"?"board":"blocks",f=dn(m,a,s,i,[a]),y=g[1]==="cards"?"card":g[1]==="rows"?"row":void 0,h=m==="blocks"&&d?.lens==="blocks"?{...d,...y?{as:y}:{}}:m==="blocks"&&d?.lens==="columns"?{...f,group:d.column,...y?{as:y}:{}}:f;return C(v(h),s,o,l)}if(d){let m=Kn(d,a,s,i);if(m)return C(m,s,o,l)}}catch(g){if(!(g instanceof j))throw g;return{failed:`Couldn't change that: ${g.message}.`,...t}}if(!r.complete)return{failed:"Couldn't change that: changing it freely needs AI, which isn't on here. Try \u201Cgroup by status\u201D, \u201Conly this month\u201D or \u201Cas a calendar\u201D.",...t};let u=await cn(e,o,n);return O(u)?u:{...u,asks:l}}var v=n=>{let{title:e,...r}=n;return r};function Kn(n,e,r,t){let o=/ (?:group(?:ed)?|split|organi[sz]ed?|put them|columns) by ([\p{L}\p{N} -]+?)(?= (?:and|only|with)|\s*$)/u.exec(t)?.[1]??(/^ by /.test(t)?z(t):void 0);if(o){let d=I(e,o);if(d?.type==="enum")return n.lens==="blocks"?{...v(n),group:d.name}:{lens:"columns",kind:n.kind,column:d.name};let c=sn(e,o,r);return c?{lens:"coverage",kind:n.kind,across:c.to[0],link:c.name}:b(d?`${e.plural}' ${d.words} is not a choice, so they cannot be grouped by it`:`${e.plural} have nothing called ${o} to group by`)}let s=/ (?:sort(?:ed)?|order(?:ed)?) by ([\p{L}\p{N} -]+?)(?= (?:and|only|with)|\s*$)/u.exec(t)?.[1];if(s){let d=I(e,s);return d?{...n.lens==="blocks"?v(n):{lens:"blocks",kind:n.kind,as:"row",...n.lens==="columns"?{group:n.column}:{}},sort:{by:d.name,.../\b(newest|latest|desc|descending|most)\b/.test(t)?{direction:"desc"}:{}}}:b(`${e.plural} have nothing called ${s} to sort by`)}if(/\b(?:all of them|everything|show all|clear the filter|no filter|without the filter)\b/.test(t)){if(n.lens!=="blocks"||!n.where)return b("it already shows all of them");let{where:d,...c}=v(n);return c}let i=on(t);if(i&&n.lens==="calendar"&&i.range)return{...v(n),range:i.range};if(i&&n.lens==="calendar"&&!i.range)return{lens:"blocks",kind:n.kind,as:"row",sort:{by:n.start},where:q(e,t)};let a=q(e,t);if(a.length>0){let d=n.lens==="blocks"?v(n):{lens:"blocks",kind:n.kind,as:"row",...n.lens==="columns"?{group:n.column}:{}};return{...d,where:[...d.where??[],...a]}}let l=n.lens==="calendar"?M(t):void 0;if(l)return{...v(n),range:l}}function Cn(n){return n.kinds.map(e=>{let r=e.fields.map(s=>`${s.name} (${s.type??"value"}${s.options?`: ${s.options.join(" | ")}`:""})`).join(", "),t=e.edges.map(s=>`${s.name} \u2192 ${s.to.join(" | ")}`).join(", "),o=Object.entries(e.roles).map(([s,i])=>`${s}=${i}`).join(", ");return`- ${e.kind} ("${e.plural}"): ${r}${t?`; relations: ${t}`:""}${o?`; roles: ${o}`:""}`}).join(`
2
2
  `)}var Fn=['columns \u2014 a board, records in columns by one choice field: {"lens": "columns", "on": K, "bindings": {K: {"column": "<enum field>"}}}','calendar \u2014 records on a calendar by a date: {"lens": "calendar", "on": K, "bindings": {K: {"start": "<date field>", "end"?: "<date field>", "done"?: "<boolean field>"}}, "options": {"range"?: "day" | "week" | "month" | "quarter" | "year" | "agenda"}}','timeline \u2014 minutes of a day in columns: {"lens": "timeline", "on": K, "bindings": {K: {"start": "<number field>", "end": "<number field>", "column": "<enum field>"}}}','coverage \u2014 who covers what, a grid of two kinds joined by a relation: {"lens": "coverage", "on": K, "bindings": {"rows": {"kind": K}, "columns": {"kind": J}, "link": {"edge": "<relation of K to J>"}}}',`blocks \u2014 anything else, as blocks: {"lens": "blocks", "on": K, "options": {"blocks": [{"headline": "words"}, {"list": "all('K') where <condition>", "group"?: "<enum field>", "sort"?: "<field>" | {"by": "<field>", "direction": "desc"}, "as"?: "row" | "card", "empty"?: "words"}, {"figure": "count(all('K'))", "label": "words"}]}}. Conditions read a record's own fields: status == 'open', not done, days(today(), due) <= 7.`].join(`
3
3
  `);function Gn(n,e,r){return["You draw a view of an app's data as JSON \u2014 never code. The app's kinds, their fields (with types) and relations:",Cn(e),"","The lenses you may use (prefer the first four; use blocks only when none of them fits):",Fn,"",r?`The view on screen now:
4
4
  ${JSON.stringify(r.lens)}
@@ -1,4 +1,4 @@
1
- import{a as L,c as O,d as W,f as I}from"./chunk.S5MGE2U5.js";import{a as ae,b as te}from"./chunk.XOZU4OFA.js";import{b as Z,c as ee,d as ne}from"./chunk.BB33TI4S.js";import{b as J,c as Q,d as N,j as U,k as X}from"./chunk.3YZHZGTM.js";import{b as V,k as Y,l as _}from"./chunk.EQTSV7BK.js";import{G as de,T as B}from"./chunk.HT2BEOEV.js";import{Eb as K,da as E,ga as z,id as $,oa as G}from"./chunk.7BBGRTXM.js";import{b as T}from"./chunk.AJZBJBMO.js";var y=T(de(),1),a=T(B(),1),se=`
1
+ import{a as L,c as O,d as W,f as I}from"./chunk.2K4TT2BV.js";import{a as ae,b as te}from"./chunk.XOZU4OFA.js";import{b as Z,c as ee,d as ne}from"./chunk.GLWSVSQL.js";import{b as J,c as Q,d as N,j as U,k as X}from"./chunk.MSWWWLEA.js";import{b as V,k as Y,l as _}from"./chunk.UITT6JWW.js";import{G as de,T as B}from"./chunk.4MP72LPR.js";import{Eb as K,da as E,ga as z,md as $,oa as G}from"./chunk.VSCIXAHN.js";import{b as T}from"./chunk.AJZBJBMO.js";var y=T(de(),1),a=T(B(),1),se=`
2
2
  form:where([data-graview-part="form"]) {
3
3
  /* A grid item of the section above it and a grid container for the
4
4
  fields below: both halves are allowed to be narrower than what is in