graview 0.1.69 → 0.1.71

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 (247) hide show
  1. package/dist/preview/chunk.23DATB5Y.js +1 -0
  2. package/dist/preview/chunk.2INDKSJI.js +1 -0
  3. package/dist/preview/chunk.3CLTABGP.js +1 -0
  4. package/dist/preview/chunk.3RRK6UTN.js +8 -0
  5. package/dist/preview/chunk.45HUV56Z.js +1 -0
  6. package/dist/preview/chunk.4HU2ILFY.js +1 -0
  7. package/dist/preview/{chunk.3VNOTHA5.js → chunk.4LWWXIM4.js} +1 -1
  8. package/dist/preview/chunk.4O64QV2Y.js +1 -0
  9. package/dist/preview/{chunk.PJL3I2IW.js → chunk.4QMAYVPU.js} +1 -1
  10. package/dist/preview/chunk.4UDST6IF.js +1 -0
  11. package/dist/preview/{chunk.6BNSDPZE.js → chunk.4YZ2A6SJ.js} +3 -3
  12. package/dist/preview/{chunk.523EFGHU.js → chunk.4ZEHLUXV.js} +1 -1
  13. package/dist/preview/{chunk.F4CDJBDS.js → chunk.5EQRIZ6I.js} +1 -1
  14. package/dist/preview/chunk.5OS4SYHE.js +1 -0
  15. package/dist/preview/{chunk.BO32A3W5.js → chunk.5PQV7GFE.js} +1 -1
  16. package/dist/preview/{chunk.PZ3KM3TY.js → chunk.5WCSQFS5.js} +1 -1
  17. package/dist/preview/{chunk.HU3KEWFO.js → chunk.64K5ELSQ.js} +1 -1
  18. package/dist/preview/{chunk.MKN7ADJB.js → chunk.67S2UWBT.js} +1 -1
  19. package/dist/preview/chunk.6A3KTD66.js +1 -0
  20. package/dist/preview/chunk.6BBUTKFC.js +23 -0
  21. package/dist/preview/chunk.6IMRCKB4.js +1 -0
  22. package/dist/preview/chunk.6L6RUOSF.js +5 -0
  23. package/dist/preview/{chunk.MH3AQO2R.js → chunk.6TBQV3NO.js} +1 -1
  24. package/dist/preview/chunk.6ZRVVRDQ.js +1 -0
  25. package/dist/preview/{chunk.YZKHTBTC.js → chunk.7FI75ZVE.js} +1 -1
  26. package/dist/preview/{chunk.IO5VFTXC.js → chunk.7KX36ENH.js} +1 -1
  27. package/dist/preview/chunk.7LPHWJB4.js +3 -0
  28. package/dist/preview/chunk.7MDGPTYF.js +1 -0
  29. package/dist/preview/{chunk.I4H2GS4O.js → chunk.7PWLRRUS.js} +2 -2
  30. package/dist/preview/{chunk.7T2P42VW.js → chunk.7TACFS7Q.js} +1 -1
  31. package/dist/preview/{chunk.KLEKC4ZX.js → chunk.7THS3DLZ.js} +1 -1
  32. package/dist/preview/{chunk.CSVDBDRZ.js → chunk.7XGU6KVF.js} +2 -2
  33. package/dist/preview/chunk.7ZLCA3WK.js +1 -0
  34. package/dist/preview/{chunk.RRCPEHM4.js → chunk.AIFT2HNP.js} +1 -1
  35. package/dist/preview/{chunk.LMZ2WMGH.js → chunk.ARGEGV5T.js} +1 -1
  36. package/dist/preview/{chunk.4FJ4OPSJ.js → chunk.BSWR5SGX.js} +1 -1
  37. package/dist/preview/{chunk.RNAL35ID.js → chunk.BWMPC7LK.js} +1 -1
  38. package/dist/preview/{chunk.KW7PHJYX.js → chunk.CEJIH3CN.js} +1 -1
  39. package/dist/preview/chunk.CEOQY5KS.js +5 -0
  40. package/dist/preview/{chunk.G43YUGNW.js → chunk.CGRX6SDE.js} +1 -1
  41. package/dist/preview/chunk.CPK6CYKN.js +111 -0
  42. package/dist/preview/{chunk.AZRICZKT.js → chunk.CVN2XFMF.js} +1 -1
  43. package/dist/preview/chunk.D4F6QX5L.js +1 -0
  44. package/dist/preview/{chunk.JPAE6K4E.js → chunk.D6ODKMOV.js} +1 -1
  45. package/dist/preview/{chunk.CCCONK73.js → chunk.DDSAFU3B.js} +1 -1
  46. package/dist/preview/{chunk.AHYMIVBX.js → chunk.DG3YNOH3.js} +1 -1
  47. package/dist/preview/chunk.DGYWNM5U.js +1 -0
  48. package/dist/preview/{chunk.ML5EHDZG.js → chunk.DHO3QZYK.js} +1 -1
  49. package/dist/preview/{chunk.EL7XXGQY.js → chunk.DJGZOPAS.js} +1 -1
  50. package/dist/preview/chunk.DOJCYXIJ.js +1 -0
  51. package/dist/preview/{chunk.CKSRW3LA.js → chunk.DX7RGK5G.js} +1 -1
  52. package/dist/preview/{chunk.QK7EUIPL.js → chunk.EA2KYBBR.js} +1 -1
  53. package/dist/preview/chunk.EEGVI266.js +1 -0
  54. package/dist/preview/{chunk.I7OFRF6N.js → chunk.EHLV3LND.js} +2 -2
  55. package/dist/preview/{chunk.QEBD7SC4.js → chunk.EJC7ACZT.js} +4 -2
  56. package/dist/preview/{chunk.QRNKGPAD.js → chunk.EJIQDMLU.js} +1 -1
  57. package/dist/preview/chunk.EOSN5DWW.js +1 -0
  58. package/dist/preview/{chunk.4RPKCW4J.js → chunk.EPSYX2SF.js} +1 -1
  59. package/dist/preview/chunk.EUXAIG73.js +1 -0
  60. package/dist/preview/chunk.EZQK23AB.js +1 -0
  61. package/dist/preview/{chunk.KKFKSJUN.js → chunk.F5O3HR7X.js} +1 -1
  62. package/dist/preview/chunk.F6MY6WJ4.js +1 -0
  63. package/dist/preview/{chunk.GTF6EMVE.js → chunk.F7KVEWFH.js} +1 -1
  64. package/dist/preview/{chunk.EEUCRZA3.js → chunk.FIUPDGUZ.js} +1 -1
  65. package/dist/preview/chunk.FNSVGSZI.js +1 -0
  66. package/dist/preview/chunk.FOHZPYUV.js +1 -0
  67. package/dist/preview/chunk.FW6M6GIU.js +32 -0
  68. package/dist/preview/{chunk.VXPEXUQF.js → chunk.G5AF5IXL.js} +1 -1
  69. package/dist/preview/chunk.G767NLBH.js +1 -0
  70. package/dist/preview/chunk.GFBE4VNT.js +1 -0
  71. package/dist/preview/{chunk.CDSHUWSK.js → chunk.GFOZVQBQ.js} +1 -1
  72. package/dist/preview/chunk.GKYJQE5A.js +1 -0
  73. package/dist/preview/chunk.GOVRX2YX.js +4 -0
  74. package/dist/preview/{chunk.T3PELB6I.js → chunk.H33XWGAY.js} +1 -1
  75. package/dist/preview/{chunk.2AL26ZPJ.js → chunk.H4BPTMED.js} +1 -1
  76. package/dist/preview/chunk.HLKDYI6J.js +1 -0
  77. package/dist/preview/{chunk.VEQIH7HR.js → chunk.HPFEYMGP.js} +1 -1
  78. package/dist/preview/chunk.HT35PAHI.js +21 -0
  79. package/dist/preview/{chunk.VR553M6J.js → chunk.HXRHEPPJ.js} +1 -1
  80. package/dist/preview/chunk.IPKODEOZ.js +1 -0
  81. package/dist/preview/{chunk.EP7YT7LT.js → chunk.IXYG65TM.js} +1 -1
  82. package/dist/preview/chunk.IZDB777E.js +1 -0
  83. package/dist/preview/{chunk.VBBH5R5T.js → chunk.JAPTTM6Y.js} +1 -1
  84. package/dist/preview/chunk.JCKIJSW7.js +25 -0
  85. package/dist/preview/{chunk.4R7H3GIL.js → chunk.JLNTE5CH.js} +2 -2
  86. package/dist/preview/chunk.JNK5WBSU.js +1 -0
  87. package/dist/preview/chunk.JREA2XDG.js +1 -0
  88. package/dist/preview/{chunk.WV6SP6IJ.js → chunk.KBJ3UUER.js} +1 -1
  89. package/dist/preview/{chunk.VBHV4TLG.js → chunk.KHRS2SKB.js} +1 -1
  90. package/dist/preview/{chunk.ISZFRLNJ.js → chunk.KJPLX72N.js} +1 -1
  91. package/dist/preview/chunk.KZUHXOZU.js +21 -0
  92. package/dist/preview/{chunk.6ZFYFT5A.js → chunk.L3MLGFIS.js} +1 -1
  93. package/dist/preview/{chunk.KEGL6NBD.js → chunk.L6P55HFW.js} +1 -1
  94. package/dist/preview/{chunk.N7A3T5QU.js → chunk.LDWWUKKX.js} +1 -1
  95. package/dist/preview/{chunk.CA2SYEYE.js → chunk.LHCGC3K6.js} +1 -1
  96. package/dist/preview/{chunk.BQORHDAH.js → chunk.LNKY6MT4.js} +1 -1
  97. package/dist/preview/chunk.LQ5J6YQW.js +1 -0
  98. package/dist/preview/{chunk.47VEV4BX.js → chunk.MEAUTBVM.js} +1 -1
  99. package/dist/preview/chunk.MEBKTW7H.js +17 -0
  100. package/dist/preview/{chunk.WQ7K5O2I.js → chunk.MFMC35ET.js} +1 -1
  101. package/dist/preview/chunk.MJ4T6YXI.js +1 -0
  102. package/dist/preview/chunk.MKJV3BM5.js +240 -0
  103. package/dist/preview/chunk.ML4X7VVK.js +1 -0
  104. package/dist/preview/chunk.MM7MLBGB.js +1 -0
  105. package/dist/preview/{chunk.5MOXQUZH.js → chunk.MQNW3O67.js} +1 -1
  106. package/dist/preview/{chunk.J2N7EKMX.js → chunk.MT252WP4.js} +1 -1
  107. package/dist/preview/chunk.MWWNKM3I.js +1 -0
  108. package/dist/preview/chunk.N3MXLORL.js +3 -0
  109. package/dist/preview/chunk.NH3VXTGX.js +1 -0
  110. package/dist/preview/{chunk.B422DSYN.js → chunk.NI4OPHTL.js} +1 -1
  111. package/dist/preview/chunk.NNGG7RCO.js +1 -0
  112. package/dist/preview/{chunk.LKM2R5UF.js → chunk.NXHEOHRR.js} +1 -1
  113. package/dist/preview/{chunk.TQQDUJLX.js → chunk.O5RPSUXV.js} +1 -1
  114. package/dist/preview/{chunk.FE3SINPK.js → chunk.OKHXXIMN.js} +1 -1
  115. package/dist/preview/chunk.ONAH6MC4.js +1 -0
  116. package/dist/preview/chunk.OOQG2AEF.js +1 -0
  117. package/dist/preview/{chunk.ZQYHNFRZ.js → chunk.OPMGQS5J.js} +1 -1
  118. package/dist/preview/{chunk.UHJSZ2XZ.js → chunk.OUF2QFZL.js} +1 -1
  119. package/dist/preview/{chunk.CUEIGKFG.js → chunk.OVSKPBPS.js} +1 -1
  120. package/dist/preview/chunk.OYMN3IFX.js +1 -0
  121. package/dist/preview/{chunk.QNC2OKLF.js → chunk.P43LPXXJ.js} +1 -1
  122. package/dist/preview/chunk.PGT4ZQDG.js +4 -0
  123. package/dist/preview/{chunk.WFJCC6G3.js → chunk.PQTXM4VY.js} +1 -1
  124. package/dist/preview/{chunk.KHKCTVHD.js → chunk.Q6GEPVQ7.js} +1 -1
  125. package/dist/preview/chunk.QDDDKEBH.js +1 -0
  126. package/dist/preview/{chunk.26RYER7Y.js → chunk.QJJWAYHB.js} +1 -1
  127. package/dist/preview/chunk.QK4QZVQG.js +1 -0
  128. package/dist/preview/{chunk.CLIC2QBA.js → chunk.QKRQPUCE.js} +1 -1
  129. package/dist/preview/{chunk.DU76ASS4.js → chunk.QNWGDG2Z.js} +2 -2
  130. package/dist/preview/{chunk.447RWLS7.js → chunk.QVBP4UZG.js} +2 -2
  131. package/dist/preview/chunk.RDUGUC7R.js +1 -0
  132. package/dist/preview/{chunk.EK3JXEZL.js → chunk.RHIP2UYE.js} +1 -1
  133. package/dist/preview/chunk.RJ7VSWTA.js +87 -0
  134. package/dist/preview/{chunk.JHAMSDAI.js → chunk.RO3D2RNP.js} +1 -1
  135. package/dist/preview/{chunk.C6CT6F4C.js → chunk.S2BMI23H.js} +1 -1
  136. package/dist/preview/{chunk.ZRBGYXAO.js → chunk.SGYZM6ZU.js} +1 -1
  137. package/dist/preview/{chunk.UPOYRCKI.js → chunk.SPJ34VHA.js} +1 -1
  138. package/dist/preview/{chunk.UAEOCWSG.js → chunk.T6KOL7TW.js} +1 -1
  139. package/dist/preview/{chunk.AUNQNTKY.js → chunk.T6UJEXFL.js} +3 -2
  140. package/dist/preview/chunk.TBEKEHFS.js +1 -0
  141. package/dist/preview/chunk.TO3ZKCA2.js +1 -0
  142. package/dist/preview/{chunk.FIY4RUK5.js → chunk.TQ3MNB6K.js} +1 -1
  143. package/dist/preview/{chunk.GG47EIKO.js → chunk.TRP66PHK.js} +1 -1
  144. package/dist/preview/{chunk.LGNGFG5V.js → chunk.TSZ2S3VG.js} +1 -1
  145. package/dist/preview/chunk.TTM5GQ2U.js +1 -0
  146. package/dist/preview/chunk.TUBY6SV3.js +1 -0
  147. package/dist/preview/{chunk.ZE5RSKXF.js → chunk.U5KJQFAP.js} +1 -1
  148. package/dist/preview/chunk.U6V4KZF5.js +1 -0
  149. package/dist/preview/chunk.UJ7RTNT4.js +1 -0
  150. package/dist/preview/{chunk.HCX6KPRF.js → chunk.UQZ2P6KD.js} +1 -1
  151. package/dist/preview/{chunk.CLZYNFFH.js → chunk.UZKBFI52.js} +1 -1
  152. package/dist/preview/{chunk.66TRDXYR.js → chunk.V5JB5UJS.js} +2 -2
  153. package/dist/preview/{chunk.3TKIZGC7.js → chunk.VDFQFLTU.js} +1 -1
  154. package/dist/preview/{chunk.IY3DV52G.js → chunk.VGYG2IBZ.js} +1 -1
  155. package/dist/preview/chunk.VICBF3MQ.js +2 -0
  156. package/dist/preview/{chunk.EQZPEOIW.js → chunk.VL3YDD7D.js} +1 -1
  157. package/dist/preview/{chunk.IYHY4VEC.js → chunk.VPFUOTY7.js} +1 -1
  158. package/dist/preview/chunk.VUDNQOOX.js +1 -0
  159. package/dist/preview/{chunk.P26ATAAI.js → chunk.VVIQSFM4.js} +1 -1
  160. package/dist/preview/{chunk.DO3FQM6R.js → chunk.W332P5T3.js} +6 -6
  161. package/dist/preview/{chunk.POKGLN4T.js → chunk.W3TJF4EH.js} +1 -1
  162. package/dist/preview/{chunk.D5JZQZ74.js → chunk.W5O5F4FT.js} +1 -1
  163. package/dist/preview/chunk.W6L2VAJG.js +2 -0
  164. package/dist/preview/{chunk.O7NYSO6F.js → chunk.WGH2P2YL.js} +1 -1
  165. package/dist/preview/{chunk.OD5QZHRC.js → chunk.WS5ORRGS.js} +1 -1
  166. package/dist/preview/{chunk.VQDL4EEP.js → chunk.WU6D3SPL.js} +1 -1
  167. package/dist/preview/{chunk.MV27WMNW.js → chunk.X2UYEA7H.js} +1 -1
  168. package/dist/preview/chunk.X45EITTK.js +18 -0
  169. package/dist/preview/{chunk.TAJBXG5U.js → chunk.X7U3JMBR.js} +1 -1
  170. package/dist/preview/chunk.XSM4OTF4.js +1 -0
  171. package/dist/preview/{chunk.DRAPVGQZ.js → chunk.XTHSPLZZ.js} +1 -1
  172. package/dist/preview/{chunk.VQOYFBEV.js → chunk.Y5WQD6KV.js} +1 -1
  173. package/dist/preview/chunk.YXVUJ3NB.js +1 -0
  174. package/dist/preview/{chunk.NRECR3NQ.js → chunk.Z22C2JJ4.js} +1 -1
  175. package/dist/preview/{chunk.TQRC5VAM.js → chunk.Z2BCOZDZ.js} +1 -1
  176. package/dist/preview/{chunk.S2NQRD6W.js → chunk.Z3TK2LJM.js} +1 -1
  177. package/dist/preview/chunk.ZGLOXN7O.js +1 -0
  178. package/dist/preview/{chunk.R7POSVUK.js → chunk.ZLQIGZXO.js} +2 -2
  179. package/dist/preview/{chunk.YJ4PFOPC.js → chunk.ZONRIOIA.js} +1 -1
  180. package/dist/preview/{chunk.QVCKTDG3.js → chunk.ZY3NAJDM.js} +1 -1
  181. package/dist/preview/index.html +55 -55
  182. package/dist/preview/page.js +2 -2
  183. package/package.json +7 -7
  184. package/dist/preview/chunk.2WFOKJB4.js +0 -1
  185. package/dist/preview/chunk.32SHA3EY.js +0 -1
  186. package/dist/preview/chunk.3D37E2G5.js +0 -1
  187. package/dist/preview/chunk.3PT3BU6K.js +0 -1
  188. package/dist/preview/chunk.3XTIYX6M.js +0 -1
  189. package/dist/preview/chunk.4O7WYLCK.js +0 -1
  190. package/dist/preview/chunk.5DU6FA5R.js +0 -1
  191. package/dist/preview/chunk.5TWRTGP6.js +0 -1
  192. package/dist/preview/chunk.6BR2SUAE.js +0 -1
  193. package/dist/preview/chunk.6TDVNWFU.js +0 -17
  194. package/dist/preview/chunk.6XBQDXT6.js +0 -3
  195. package/dist/preview/chunk.7L3I776Z.js +0 -1
  196. package/dist/preview/chunk.7OLKVOS6.js +0 -1
  197. package/dist/preview/chunk.AG7WJYM5.js +0 -3
  198. package/dist/preview/chunk.AMAOZVEO.js +0 -1
  199. package/dist/preview/chunk.AMV2ILR6.js +0 -1
  200. package/dist/preview/chunk.B5EFNTDA.js +0 -1
  201. package/dist/preview/chunk.BBLIT7S7.js +0 -1
  202. package/dist/preview/chunk.BSQI3KM2.js +0 -1
  203. package/dist/preview/chunk.CYEPHT7V.js +0 -1
  204. package/dist/preview/chunk.D3SWJ7OS.js +0 -1
  205. package/dist/preview/chunk.DHPXRDT5.js +0 -5
  206. package/dist/preview/chunk.DKUEZPGR.js +0 -1
  207. package/dist/preview/chunk.FWXW4T4I.js +0 -25
  208. package/dist/preview/chunk.GF5CZPZ7.js +0 -1
  209. package/dist/preview/chunk.GPBHUIZQ.js +0 -2
  210. package/dist/preview/chunk.GVFGS2HY.js +0 -1
  211. package/dist/preview/chunk.HGH27XZG.js +0 -23
  212. package/dist/preview/chunk.HMJXB6KC.js +0 -5
  213. package/dist/preview/chunk.HTEQCRVP.js +0 -1
  214. package/dist/preview/chunk.I7KN732Z.js +0 -2
  215. package/dist/preview/chunk.IAVIYJTL.js +0 -1
  216. package/dist/preview/chunk.IPKESOIU.js +0 -21
  217. package/dist/preview/chunk.IRNEWNUB.js +0 -1
  218. package/dist/preview/chunk.J7O23NKZ.js +0 -22
  219. package/dist/preview/chunk.JDUA5PH2.js +0 -1
  220. package/dist/preview/chunk.JN3WZGJY.js +0 -1
  221. package/dist/preview/chunk.JQEXH23N.js +0 -1
  222. package/dist/preview/chunk.KVQYOFDV.js +0 -1
  223. package/dist/preview/chunk.LAVLPYSC.js +0 -1
  224. package/dist/preview/chunk.MATUPDZ3.js +0 -1
  225. package/dist/preview/chunk.MD3N26BC.js +0 -23
  226. package/dist/preview/chunk.MHHNO3O2.js +0 -1
  227. package/dist/preview/chunk.MUWI54IP.js +0 -1
  228. package/dist/preview/chunk.NLZHNPDU.js +0 -93
  229. package/dist/preview/chunk.NSAGOOJW.js +0 -1
  230. package/dist/preview/chunk.NYLKG25K.js +0 -4
  231. package/dist/preview/chunk.OWO3OV62.js +0 -1
  232. package/dist/preview/chunk.ROYCJXPE.js +0 -1
  233. package/dist/preview/chunk.RZ73YG5K.js +0 -1
  234. package/dist/preview/chunk.SAWASNDO.js +0 -1
  235. package/dist/preview/chunk.SCVKHGO3.js +0 -1
  236. package/dist/preview/chunk.SM37MNS2.js +0 -1
  237. package/dist/preview/chunk.T2BZBR7S.js +0 -50
  238. package/dist/preview/chunk.TLPCYKLW.js +0 -3
  239. package/dist/preview/chunk.U563J5IM.js +0 -1
  240. package/dist/preview/chunk.U6QXLNHF.js +0 -15
  241. package/dist/preview/chunk.VBYJBW32.js +0 -1
  242. package/dist/preview/chunk.VHLL6VC6.js +0 -1
  243. package/dist/preview/chunk.W3WXI5B3.js +0 -1
  244. package/dist/preview/chunk.W43XWQRC.js +0 -1
  245. package/dist/preview/chunk.WJHLE73Y.js +0 -111
  246. package/dist/preview/chunk.ZT3ZG52B.js +0 -1
  247. package/dist/preview/chunk.ZU3RPI34.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 Ft,b as _t,c as Kt,d as Gn}from"./chunk.I7OFRF6N.js";import{a as qt}from"./chunk.4RPKCW4J.js";import{a as Hn,b as It,c as Vn,d as Bt,e as Wt,f as Ht}from"./chunk.4R7H3GIL.js";import{a as Vt,b as tn,c as Gt,d as jt}from"./chunk.CCCONK73.js";import{c as Ut,g as Yt,h as Qt,i as Jt}from"./chunk.IRNEWNUB.js";import{e as Tt}from"./chunk.PJL3I2IW.js";import{m as zt}from"./chunk.LMZ2WMGH.js";import{a as Nt,b as Dt}from"./chunk.OD5QZHRC.js";import{f as Lt,h as Pt}from"./chunk.YJ4PFOPC.js";import{e as Mt}from"./chunk.LKM2R5UF.js";import{b as $t,c as me,d as ke,e as ze}from"./chunk.MUWI54IP.js";import{e as At,l as Rt}from"./chunk.B422DSYN.js";import{l as Et,m as Wn}from"./chunk.SCVKHGO3.js";import{g as In,h as Bn}from"./chunk.J2N7EKMX.js";import{d as Ot}from"./chunk.P26ATAAI.js";import{k as Fe,m as Ct}from"./chunk.NLZHNPDU.js";import{G as Ee,Qa as kt,Ra as nn,W as te,Z as bt,ea as oe,fa as xt,ga as St,l as en}from"./chunk.FWXW4T4I.js";import{$ as ct,$a as pt,Bb as Dn,G as st,Gd as zn,I as lt,Rc as be,Xa as mt,Z as cn,_ as dt,aa as Tn,ab as ft,ba as ut,bb as ht,ca as Xe,fe as vt,ka as Ge,la as xe,ld as Ze,md as wt,na as qe,oa as un,pa as gn,ra as Nn,rc as yt,sd as Te,ta as gt,ua as mn}from"./chunk.DHPXRDT5.js";import{b as q}from"./chunk.AJZBJBMO.js";var Qr=q(Ee(),1);var jn=q(te(),1);function Ie(e,t,n){let r=e.nodes?.length??0;if(e.total===void 0||e.total<=r)return n;let a=e.nodes?.[0]?.kind,i=a?un(t,a).toLowerCase():"more";return(0,jn.jsxs)("div",{style:{display:"grid",gridTemplateRows:"minmax(0, 1fr) auto",height:"100%",minHeight:0},children:[n,(0,jn.jsxs)("p",{"data-testid":"lens-more",style:{margin:"4px 0 0",fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:["+",e.total-r," more ",i]})]})}var ar=q(Ee(),1);var rn=q(Ee(),1);var Xt=e=>`place:${e}`;function Zt(e,t){(0,rn.useEffect)(()=>{if(e===void 0)return;let n=globalThis[Symbol.for("graview.shown-lists")]??=new Map;return n.set(e,()=>t),()=>void n.delete(e)})}var er=e=>(__graviewPreload(import.meta.url,["./chunk.AJZBJBMO.js"]),import("./chunk.6YGRRXJB.js")).then(t=>t.saveShownList(e.read()));function nr(e,t,n){let r={off:e,about:t,read:n,menu:(a,i,s)=>[...e?[]:[{id:"export-csv",label:"Export CSV",run:()=>void er(r)}],...a&&i?[{id:e?"export-on":"export-off",label:e?"Turn on export":"Turn off export",run:()=>void (__graviewPreload(import.meta.url,["./chunk.AJZBJBMO.js"]),import("./chunk.6YGRRXJB.js")).then(p=>p.switchExport(r,i,e,s))}]:[]]};return r}function tr({said:e}){return(0,rn.createElement)("button",{type:"button",className:"graview-arrange-open","data-testid":"arrange-export","aria-label":"Export CSV",title:"Export CSV",onClick:()=>void er(e)},(0,rn.createElement)("span",{"aria-hidden":"true"},"\u2193"),"CSV")}var rr=q(Ee(),1),pn=(0,rr.createContext)(null);var qn=q(te(),1),Xr=(e,t)=>{if(e===!1||t===!1)return!1;let n=e===void 0||e===!0?{}:e,r=t===void 0||t===!0?{}:t;return{sort:n.sort!==!1&&r.sort!==!1,filter:n.filter!==!1&&r.filter!==!1,group:n.group!==!1&&r.group!==!1}},Zr=["sort","filter","group","q","archived"];function Ne(e,t={}){let{store:n,onExport:r}=oe(),a=(0,ar.useContext)(pn),{view:i,go:s}=nn(),c=Zr.some(E=>i.within?.[E]!==void 0)?Nt(i):t.arrangedBy??{},b=e.nodes??[],u=t.kind??b[0]?.kind??e.node?.kind,w=c.archived!==void 0&&c.archived!==!1&&u!==void 0&&!t.subject?n.graph.nodesOfKind(u,{archived:c.archived}):b,h=t.subject??(t.only?w.filter(t.only):w),o=t.subject?[]:t.only?w.filter(E=>!t.only(E)):[],l=t.kind??h[0]?.kind,C=Xr(t.allow,t.lensAllows),g=l?Mt(n.schema,String(l)):void 0,S=g?Lt(c,g).arrangement:{},A=Pt(h,C===!1?{}:S,{schema:n.schema,graph:n.graph,flagged:new Set(e.flagged??[]),...t.search?{searchIn:t.search}:{}}),L=e.retired!==void 0&&e.retired>0&&(b[0]?.kind??l)===l?e.retired:0,T=e.fidelity==="full"&&e.budget===void 0,v=l!==void 0&&T&&t.exportable!==!1,O=nr(a?.export===!1,{lens:a?.title??"",...a?.on!==void 0?{on:a.on}:{}},()=>({title:a?.title??gn(n.schema,String(l)),schema:n.schema,graph:n.graph,kind:String(l),groups:A.groups,grouped:A.grouped,onExport:r,words:{labelOf:xe,readableFields:Ot,withComputed:Rt}}));Zt(a&&v?Xt(a.as):void 0,O);let m=l&&C!==!1&&T&&(h.length>1||L>0)?(0,qn.jsx)(zt,{schema:n.schema,graph:n.graph,kind:String(l),arrangement:S,allow:C,query:t.query!==!1,...t.filters?{filters:t.filters,chips:{nodes:h,flagged:new Set(e.flagged??[])}}:{},onChange:E=>s(Dt(i,E)),kept:{shown:A.nodes.length,of:h.length},...L>0?{past:{count:L,widen:()=>s(Tt(i,!0))}}:{},...v&&!O.off?{end:(0,qn.jsx)(tr,{said:O})}:{}}):null;return{nodes:[...o,...A.nodes],arranged:A,arrangement:S,bar:m}}function _e(e,t,n){let r=new Set((n??[]).map(i=>i.kind)),a=new Set((n??[]).map(i=>i.id));return e.allNodes().filter(i=>r.has(i.kind)?a.has(i.id):Ge(t.tryDefinition(i.kind),i))}var Be=q(Ee(),1);var j=q(te(),1),ea=["slots","x","y","fill"],fn=class extends Error{constructor(n,r){super(`${n}
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 Ft,b as _t,c as Kt,d as Gn}from"./chunk.EHLV3LND.js";import{a as qt}from"./chunk.EPSYX2SF.js";import{a as Hn,b as It,c as Vn,d as Bt,e as Wt,f as Ht}from"./chunk.JLNTE5CH.js";import{a as Vt,b as tn,c as Gt,d as jt}from"./chunk.DDSAFU3B.js";import{c as Ut,g as Yt,h as Qt,i as Jt}from"./chunk.EOSN5DWW.js";import{e as Tt}from"./chunk.4QMAYVPU.js";import{m as zt}from"./chunk.ARGEGV5T.js";import{a as Nt,b as Dt}from"./chunk.WS5ORRGS.js";import{f as Lt,h as Pt}from"./chunk.ZONRIOIA.js";import{e as Mt}from"./chunk.NXHEOHRR.js";import{b as Ot,c as me,d as ke,e as ze}from"./chunk.NH3VXTGX.js";import{e as At,l as Rt}from"./chunk.NI4OPHTL.js";import{l as Et,m as Wn}from"./chunk.3CLTABGP.js";import{g as In,h as Bn}from"./chunk.MT252WP4.js";import{d as $t}from"./chunk.VVIQSFM4.js";import{k as Fe,m as Ct}from"./chunk.RJ7VSWTA.js";import{$ as bt,G as Ee,Ta as kt,Ua as nn,Y as te,ga as oe,ha as xt,ia as St,l as en}from"./chunk.JCKIJSW7.js";import{$ as ct,Bc as yt,G as st,I as lt,Md as zn,Xc as be,Ya as mt,Z as cn,_ as dt,aa as Tn,ab as pt,ba as ut,bb as ft,ca as Xe,cb as ht,la as Ge,lb as Dn,le as vt,ma as xe,oa as qe,pa as un,qa as gn,rd as Ze,sa as Nn,sd as wt,ua as gt,va as mn,yd as Te}from"./chunk.6L6RUOSF.js";import{b as q}from"./chunk.AJZBJBMO.js";var Qr=q(Ee(),1);var jn=q(te(),1);function Ie(e,t,n){let r=e.nodes?.length??0;if(e.total===void 0||e.total<=r)return n;let a=e.nodes?.[0]?.kind,i=a?un(t,a).toLowerCase():"more";return(0,jn.jsxs)("div",{style:{display:"grid",gridTemplateRows:"minmax(0, 1fr) auto",height:"100%",minHeight:0},children:[n,(0,jn.jsxs)("p",{"data-testid":"lens-more",style:{margin:"4px 0 0",fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:["+",e.total-r," more ",i]})]})}var ar=q(Ee(),1);var rn=q(Ee(),1);var Xt=e=>`place:${e}`;function Zt(e,t){(0,rn.useEffect)(()=>{if(e===void 0)return;let n=globalThis[Symbol.for("graview.shown-lists")]??=new Map;return n.set(e,()=>t),()=>void n.delete(e)})}var er=e=>(__graviewPreload(import.meta.url,["./chunk.AJZBJBMO.js"]),import("./chunk.6YGRRXJB.js")).then(t=>t.saveShownList(e.read()));function nr(e,t,n){let r={off:e,about:t,read:n,menu:(a,i,s)=>[...e?[]:[{id:"export-csv",label:"Export CSV",run:()=>void er(r)}],...a&&i?[{id:e?"export-on":"export-off",label:e?"Turn on export":"Turn off export",run:()=>void (__graviewPreload(import.meta.url,["./chunk.AJZBJBMO.js"]),import("./chunk.6YGRRXJB.js")).then(p=>p.switchExport(r,i,e,s))}]:[]]};return r}function tr({said:e}){return(0,rn.createElement)("button",{type:"button",className:"graview-arrange-open","data-testid":"arrange-export","aria-label":"Export CSV",title:"Export CSV",onClick:()=>void er(e)},(0,rn.createElement)("span",{"aria-hidden":"true"},"\u2193"),"CSV")}var rr=q(Ee(),1),pn=(0,rr.createContext)(null);var qn=q(te(),1),Xr=(e,t)=>{if(e===!1||t===!1)return!1;let n=e===void 0||e===!0?{}:e,r=t===void 0||t===!0?{}:t;return{sort:n.sort!==!1&&r.sort!==!1,filter:n.filter!==!1&&r.filter!==!1,group:n.group!==!1&&r.group!==!1}},Zr=["sort","filter","group","q","archived"];function Ne(e,t={}){let{store:n,onExport:r}=oe(),a=(0,ar.useContext)(pn),{view:i,go:s}=nn(),c=Zr.some(E=>i.within?.[E]!==void 0)?Nt(i):t.arrangedBy??{},b=e.nodes??[],u=t.kind??b[0]?.kind??e.node?.kind,w=c.archived!==void 0&&c.archived!==!1&&u!==void 0&&!t.subject?n.graph.nodesOfKind(u,{archived:c.archived}):b,h=t.subject??(t.only?w.filter(t.only):w),o=t.subject?[]:t.only?w.filter(E=>!t.only(E)):[],l=t.kind??h[0]?.kind,C=Xr(t.allow,t.lensAllows),g=l?Mt(n.schema,String(l)):void 0,S=g?Lt(c,g).arrangement:{},A=Pt(h,C===!1?{}:S,{schema:n.schema,graph:n.graph,flagged:new Set(e.flagged??[]),...t.search?{searchIn:t.search}:{}}),L=e.retired!==void 0&&e.retired>0&&(b[0]?.kind??l)===l?e.retired:0,T=e.fidelity==="full"&&e.budget===void 0,v=l!==void 0&&T&&t.exportable!==!1,O=nr(a?.export===!1,{lens:a?.title??"",...a?.on!==void 0?{on:a.on}:{}},()=>({title:a?.title??gn(n.schema,String(l)),schema:n.schema,graph:n.graph,kind:String(l),groups:A.groups,grouped:A.grouped,onExport:r,words:{labelOf:xe,readableFields:$t,withComputed:Rt}}));Zt(a&&v?Xt(a.as):void 0,O);let m=l&&C!==!1&&T&&(h.length>1||L>0)?(0,qn.jsx)(zt,{schema:n.schema,graph:n.graph,kind:String(l),arrangement:S,allow:C,query:t.query!==!1,...t.filters?{filters:t.filters,chips:{nodes:h,flagged:new Set(e.flagged??[])}}:{},onChange:E=>s(Dt(i,E)),kept:{shown:A.nodes.length,of:h.length},...L>0?{past:{count:L,widen:()=>s(Tt(i,!0))}}:{},...v&&!O.off?{end:(0,qn.jsx)(tr,{said:O})}:{}}):null;return{nodes:[...o,...A.nodes],arranged:A,arrangement:S,bar:m}}function _e(e,t,n){let r=new Set((n??[]).map(i=>i.kind)),a=new Set((n??[]).map(i=>i.id));return e.allNodes().filter(i=>r.has(i.kind)?a.has(i.id):Ge(t.tryDefinition(i.kind),i))}var Be=q(Ee(),1);var j=q(te(),1),ea=["slots","x","y","fill"],fn=class extends Error{constructor(n,r){super(`${n}
2
2
  ${r}`);this.hint=r;this.name="BoardBindingError"}},ir=e=>Math.max(0,Math.min(1,e));function Fn(e,t,n,r){let a=l=>l,i=l=>r?xe(r.tryDefinition(l.kind),l):String(a(l).label??l.id);if(r&&r.tryDefinition(n.slots)===void 0)throw new fn(`No kind is declared for "${n.slots}".`,'Check the lens bindings: { slots: "<kind>", x: "<field>", y: "<field>", fill: "<edge kind>" }');let s=e.filter(l=>l.kind===n.slots);if(!r&&s.length===0)throw new fn(`Nothing to arrange: no "${n.slots}" nodes.`,'Check the lens bindings: { slots: "<kind>", x: "<field>", y: "<field>", fill: "<edge kind>" }');let p=t.filter(l=>l.kind===n.fill),c=new Map(e.map(l=>[l.id,l])),b=new Map(e.map((l,C)=>[l.id,C])),u=s.map(l=>{let C=a(l),g=n.fillFrom==="occupant",S=p.filter(A=>(g?A.to:A.from)===l.id).map(A=>c.get(g?A.from:A.to)).filter(A=>A!==void 0).sort((A,L)=>(b.get(A.id)??0)-(b.get(L.id)??0)).map(A=>({id:A.id,label:i(A)}));return{id:l.id,code:String(C[n.slotCode??""]??"").trim()||i(l),label:i(l),x:ir(Number(C[n.x]??.5)),y:ir(Number(C[n.y]??.5)),occupants:S}}).sort((l,C)=>l.y-C.y||l.x-C.x),w=new Set(u.flatMap(l=>l.occupants.map(C=>C.id))),h=new Set([...w].map(l=>c.get(l)?.kind).filter(l=>l!==void 0)),o=e.filter(l=>h.has(l.kind)&&!w.has(l.id)).map(l=>({id:l.id,label:i(l)})).sort((l,C)=>l.label<C.label?-1:l.label>C.label?1:0);return{slots:u,empty:u.filter(l=>l.occupants.length===0).map(l=>l.id),spare:o}}function na({nodes:e,occupants:t,label:n,fidelity:r,mode:a,options:i,schema:s,implicated:p=[],flagged:c=[]}){let{store:b}=oe(),u=_e(b.graph,b.schema,e),w=t?[...u.filter(d=>d.kind===i.slots),...t.map(d=>b.graph.getNode(d)).filter(d=>d!==void 0)]:u,h=Fn(w,b.graph.allEdges(),i,s),o=new Set(p),l=new Set(c),C=kt(),g=new Map;for(let d of C)for(let y of d.nodeIds)g.set(y,[...g.get(y)??[],d.message]);let S=d=>d?g.get(d)??[]:[];if(r==="glyph")return(0,j.jsx)(ke,{label:`${n??"Board"} \xB7 ${h.slots.length-h.empty.length}/${h.slots.length}`,hue:be("board")});if(r==="summary"){let d=h.slots.filter(y=>h.empty.includes(y.id));return(0,j.jsx)(me,{title:n??"Board",meta:`${h.slots.length-h.empty.length}/${h.slots.length}`,tone:d.length>0?"warning":"muted",fit:!0,children:d.length>0?(0,j.jsx)(ze,{pick:!0,max:5,items:d.map(y=>({id:y.id,label:y.code}))}):(0,j.jsx)("span",{style:{fontSize:"0.8125rem",color:"var(--graview-ink-faint)"},children:"Every slot filled."})})}let A=i.aspect??.68,L=(0,Be.useRef)(null),[T,v]=(0,Be.useState)(!1),[O,m]=(0,Be.useState)(null),E=160,[D,G]=(0,Be.useState)(!1);(0,Be.useEffect)(()=>{let d=L.current;if(!d||typeof ResizeObserver>"u")return;let y=new ResizeObserver(x=>{let R=x[0]?.contentRect;if(!R)return;let f=R.height<E;G(f),v(!f&&A<1&&R.width/R.height>1.3),m(f?null:R.height)});return y.observe(d),()=>y.disconnect()},[A]);let k=(d,y)=>T?{x:1-y,y:d}:{x:d,y},_=(()=>{let d=new Map,y=(x,R,f)=>{let $=d.get(f)??{ids:[],codes:[]};$.ids.includes(x)||($.ids.push(x),$.codes.includes(R)||$.codes.push(R)),d.set(f,$)};for(let x of h.slots){for(let R of S(x.id))y(x.id,x.code,R);for(let R of x.occupants)for(let f of S(R.id))y(R.id,R.label,f)}return[...d.entries()].map(([x,R])=>({id:R.ids[0],code:R.codes.join(", "),text:x}))})(),W=a==="fullscreen",le=_.length===0?null:(0,j.jsxs)("ul",{"data-graview-primitive":"board-key",style:{margin:"2px 0 0",padding:0,listStyle:"none",display:"grid",gap:3,flex:"0 0 auto"},children:[_.slice(0,W?6:2).map(d=>(0,j.jsxs)("li",{"data-graview-pick":d.id,"data-graview-emphasis":o.size===0?"plain":o.has(d.id)?"lit":"dimmed",title:d.text,style:{display:W?"grid":"flex",gap:W?1:7,alignItems:W?"start":"baseline",fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)",minHeight:24,width:"fit-content",maxWidth:"100%",padding:W?"2px 0":"3px 6px",marginLeft:W?0:-6,borderRadius:7,cursor:"pointer"},children:[(0,j.jsxs)("span",{style:{flex:"0 0 auto",fontWeight:600,color:"var(--graview-warn)",letterSpacing:"0.02em"},children:["\u26A0 ",d.code]}),(0,j.jsx)("span",{style:{minWidth:0,...W?{}:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},children:d.text})]},d.id)),_.length>(W?6:2)?(0,j.jsxs)("li",{style:{fontSize:"0.8125rem",color:"var(--graview-ink-faint)"},children:["+",_.length-(W?6:2)," more"]}):null]}),ee=i.arrange==="shelf",ie=h.slots.every(d=>d.code.length<=3&&!/\s/.test(d.code)),N=(d,y)=>{let x=d.occupants.length===0,R=o.size>0&&!o.has(d.id)&&!d.occupants.some(Q=>o.has(Q.id)),f=l.has(d.id),$=d.occupants.some(Q=>l.has(Q.id)),P=f,ne=[...S(d.id),...d.occupants.flatMap(Q=>S(Q.id))],H=d.occupants.length===1?d.occupants[0]:null,K=i.pickTarget==="slot"?d.id:H?H.id:d.id,J=Q=>H?{}:{"data-graview-pick":Q.id,"data-graview-emphasis":o.size===0?"plain":R?"dimmed":"lit"},Y=Q=>l.has(Q.id)?"var(--graview-warn)":"var(--graview-ink-muted)",ue=i.emptyLabel??"empty";return(0,j.jsxs)("div",{"data-graview-pick":K,"data-graview-slot":d.id,"data-graview-mark":ie?"disc":"token","data-graview-flagged":f&&$?"both":f?"slot":$?"occupant":void 0,"data-graview-emphasis":o.size===0?"plain":R?"dimmed":"lit",title:[x?`${d.label} \u2014 nobody in it`:`${d.occupants.map(Q=>Q.label).join(", ")} at ${d.label}`,...ne].join(`
3
3
  `),style:{...y,display:"grid",justifyItems:ie?"center":"start",gap:3,opacity:R?.5:1,transition:"opacity 160ms ease"},children:[ie?(0,j.jsxs)("span",{style:{position:"relative",width:34,height:34,borderRadius:999,display:"grid",placeItems:"center",fontSize:"0.75rem",letterSpacing:"0.02em",border:x?"1.5px dashed var(--graview-warn)":`1px solid ${P?"var(--graview-warn)":"var(--graview-edge-bright)"}`,background:x?"transparent":P?"var(--graview-panel-warning)":"var(--graview-panel)",color:x||P?"var(--graview-warn)":"var(--graview-ink)",boxShadow:x?void 0:"var(--graview-lift-low)"},children:[d.code,f&&!x?(0,j.jsx)("span",{"aria-hidden":"true",style:{position:"absolute",top:-3,right:-3,fontSize:"0.6875rem",lineHeight:1,color:"var(--graview-warn)"},children:"\u26A0"}):null]}):(0,j.jsxs)("span",{style:{display:"grid",gap:1,minWidth:0,maxWidth:180,padding:"5px 10px 6px",borderRadius:8,border:x?"1.5px dashed var(--graview-warn)":`1px solid ${P?"var(--graview-warn)":"var(--graview-edge-bright)"}`,background:x?"transparent":P?"var(--graview-panel-warning)":"var(--graview-panel)",boxShadow:x?void 0:"var(--graview-lift-low)"},children:[(0,j.jsxs)("span",{style:{fontSize:"0.8125rem",fontWeight:550,lineHeight:1.25,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",color:x||P?"var(--graview-warn)":"var(--graview-ink)"},children:[d.code,f&&!x?" \u26A0":null]}),x?(0,j.jsx)("span",{style:{fontSize:"0.75rem",lineHeight:1.3,color:"var(--graview-warn)"},children:ue}):(0,j.jsx)("span",{style:{display:"flex",flexWrap:"wrap",gap:"0 8px",fontSize:"0.75rem",lineHeight:1.3},children:d.occupants.map(Q=>(0,j.jsxs)("span",{...J(Q),style:{whiteSpace:"nowrap",color:Y(Q)},children:[Q.label,l.has(Q.id)?" \u26A0":""]},Q.id))})]}),ie?x?(0,j.jsx)("span",{style:{fontSize:"0.75rem",whiteSpace:"nowrap",color:"var(--graview-warn)"},children:ue}):d.occupants.map(Q=>(0,j.jsxs)("span",{...J(Q),style:{fontSize:"0.75rem",whiteSpace:"nowrap",color:Y(Q)},children:[Q.label,l.has(Q.id)?" \u26A0":""]},Q.id)):null]},d.id)},U=i.zones??[],de=U.map((d,y)=>({label:d.label,slots:h.slots.filter(x=>x.y>=d.from&&(x.y<d.to||y===U.length-1&&x.y<=d.to))})),B=new Set(de.flatMap(d=>d.slots.map(y=>y.id))),we=h.slots.filter(d=>!B.has(d.id));(we.length>0||de.length===0)&&de.push({label:"",slots:we});let M={boxSizing:"border-box",borderRadius:12,border:"1px solid var(--graview-edge)",background:"linear-gradient(var(--graview-panel-muted), var(--graview-panel-muted)), var(--graview-panel)",overflow:"hidden"};return(0,j.jsxs)(me,{title:n??"Board",meta:h.slots.length===0?void 0:h.empty.length===0?`all ${h.slots.length} filled`:`${h.empty.length} unfilled`,...W?{style:{flex:"1 1 auto",minHeight:0,height:"100%"}}:{},children:[(0,j.jsxs)("div",{ref:L,style:{display:"flex",gap:28,alignItems:"stretch",justifyContent:"center",flex:"1 1 auto",minHeight:0},children:[W&&le?(0,j.jsxs)("div",{style:{width:260,flex:"0 0 auto",alignSelf:"center",display:"grid",gap:8},children:[(0,j.jsx)("span",{style:{fontSize:"0.75rem",letterSpacing:"0.14em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},children:"What is marked"}),le]}):null,ee?(0,j.jsx)("div",{"data-graview-primitive":"board","data-graview-arrange":"shelf",style:{...M,overflow:"auto",flex:"1 1 auto",minWidth:0,alignSelf:"stretch",display:"grid",alignContent:"start"},children:de.map((d,y)=>(0,j.jsxs)("section",{"data-graview-zone":d.label||void 0,style:{display:"grid",gap:8,padding:"10px 14px 14px",...y>0?{borderTop:"1px dashed var(--graview-edge)"}:{}},children:[d.label?(0,j.jsx)("span",{style:{fontSize:"0.6875rem",letterSpacing:"0.14em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},children:d.label}):null,d.slots.length>0?(0,j.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:"10px 12px",alignItems:"flex-start"},children:d.slots.map(x=>N(x,{}))}):(0,j.jsx)("span",{style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:"nothing here"})]},d.label||`band-${y}`))}):(0,j.jsxs)("div",{style:{display:"flex",gap:5,alignItems:"stretch",minWidth:0,...D?{flex:"1 1 auto",alignSelf:"flex-start"}:{}},children:[!T&&U.length>0?(0,j.jsx)("div",{"aria-hidden":"true",style:{position:"relative",width:15,flex:"0 0 auto",alignSelf:"stretch"},children:U.map(d=>(0,j.jsx)("span",{title:d.label,style:{position:"absolute",top:`${d.from*100}%`,height:`${(d.to-d.from)*100}%`,right:0,writingMode:"vertical-rl",transform:"rotate(180deg)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"0.6875rem",letterSpacing:"0.14em",textTransform:"uppercase",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",color:"var(--graview-ink-faint)"},children:d.label},d.label))}):null,(0,j.jsxs)("div",{"data-graview-primitive":"board","data-graview-arrange":"exact",style:{...M,position:"relative",aspectRatio:`${T?1/A:A}`,...D?{width:"100%",height:"auto",flex:"1 1 auto",minWidth:0,alignSelf:"flex-start"}:{height:"100%",flex:"0 1 auto",...O!==null?{width:Math.round(O*(T?1/A:A))}:{}},maxWidth:"100%"},children:[U.map(d=>(0,j.jsx)("div",{"aria-hidden":"true",style:{position:"absolute",...T?{top:0,bottom:0,left:`${(1-d.to)*100}%`,width:`${(d.to-d.from)*100}%`,borderLeft:"1px dashed var(--graview-edge)"}:{left:0,right:0,top:`${d.from*100}%`,height:`${(d.to-d.from)*100}%`,borderBottom:"1px dashed var(--graview-edge)"}}},d.label)),T?U.map(d=>(0,j.jsx)("span",{"aria-hidden":"true",title:d.label,style:{position:"absolute",bottom:3,left:`${(1-d.to)*100}%`,width:`${(d.to-d.from)*100}%`,textAlign:"center",fontSize:"0.6875rem",letterSpacing:"0.14em",textTransform:"uppercase",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",color:"var(--graview-ink-faint)"},children:d.label},`label-${d.label}`)):null,h.slots.map(d=>N(d,{position:"absolute",left:`${k(d.x,d.y).x*100}%`,top:`${k(d.x,d.y).y*100}%`,transform:"translate(-50%, -50%)",width:"max-content",maxWidth:"100%"}))]})]}),h.spare.length>0?(0,j.jsxs)("div",{style:{display:"grid",gap:6,alignContent:"start",minWidth:0},children:[(0,j.jsx)("span",{style:{fontSize:"0.75rem",letterSpacing:"0.14em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},children:"Not in"}),(0,j.jsx)(ze,{pick:!0,max:10,items:h.spare.map(d=>({...d,emphasis:o.size===0?"plain":o.has(d.id)?"lit":"dimmed"}))})]}):null]}),W?null:le]})}function or(e){function t(n){let{store:r}=oe(),a=Fn(_e(r.graph,r.schema,n.nodes),r.graph.allEdges(),e,r.schema),s=[...a.slots.flatMap(u=>u.occupants.map(w=>w.id)),...a.spare.map(u=>u.id)].map(u=>r.graph.getNode(u)).filter(u=>u!==void 0),{arranged:p,bar:c}=Ne(n,{...e.arranging!==void 0?{allow:e.arranging}:{},lensAllows:{group:!1},...e.arrangedBy?{arrangedBy:e.arrangedBy}:{},subject:s}),b=(0,j.jsx)(na,{schema:r.schema,...n,options:e,...e.arranging===!1?{}:{occupants:p.nodes.map(u=>u.id)}});return Ie(n,r.schema,c?(0,j.jsxs)("div",{style:{display:"grid",gap:6,height:"100%",minHeight:0,gridTemplateRows:"auto 1fr"},children:[c,b]}):b)}return{name:"board",requiredRoles:[...ea],options:e,View:t,build(n,r,a){return Fn(n,r,e,a)}}}var Cn=q(Ee(),1);var sr=864e5;function ta(e){if(typeof e!="string")return null;if(In(e))return Bn(e)?.day??null;let t=/^(\d{4}-\d{2}-\d{2})/.exec(e);return t?t[1]:null}function _n(e){if(typeof e=="string"&&st.test(e))return e.length===4?null:lt(e)??null;let t=ta(e);return t===null?null:{from:t,to:t}}var lr=e=>typeof e=="string"&&/^\d{4}$/.test(e);function yn(e){if(typeof e!="string")return null;if(In(e))return Bn(e)?.minutes??null;let t=/^\d{4}-\d{2}-\d{2}[T ](\d{2}):(\d{2})/.exec(e);return t?Number(t[1])*60+Number(t[2]):null}var hn=e=>Date.UTC(Number(e.slice(0,4)),Number(e.slice(5,7))-1,Number(e.slice(8,10))),wn=e=>new Date(e).toISOString().slice(0,10);function Ae(e,t){return wn(hn(e)+t*sr)}function je(e,t){let n=Number(e.slice(0,4)),r=Number(e.slice(5,7))-1+t,a=Number(e.slice(8,10)),i=new Date(Date.UTC(n,r+1,0)).getUTCDate();return wn(Date.UTC(n,r,Math.min(a,i)))}var Kn=e=>new Date(hn(e)).getUTCDay();function Ke(e,t=1){let n=(Kn(e)-t+7)%7;return Ae(e,-n)}var Un=e=>`${e.slice(0,7)}-01`;function ye(e,t){return Math.round((hn(t)-hn(e))/sr)}function Ue(e,t){return Array.from({length:t},(n,r)=>Ae(e,r))}var dr=e=>ut(e,"short"),De=e=>dt(e,{weekday:"short"}),Yn=e=>Xe(e);function We(e,t){let n=t?.fieldRoles?.when;return e&&!e.start&&n?{...e,start:n}:e}function cr(e,t){return t===void 0?!1:typeof t=="string"?e[t]===!0:t.is.includes(e[t.field])}var vn=["start"],ra=["day","week","month","quarter","year","agenda"];function bn(e){return e.horizon?["day","week","month","quarter","year","years","agenda"]:ra}function ur(e,t){return e==="years"?t?.title??"Years":`The ${e}`}function gr(){let e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}var Qn=class extends Error{constructor(n,r){super(`The calendar lens has no binding for ${r.map(a=>`"${a}"`).join(", ")} on "${n}". Bind them in the lens declaration: bindings: { ${n}: { start: "<field>" } }.`);this.kind=n;this.missing=r;this.name="CalendarBindingError"}};function xn(e,t,n){let r=We(t[e.kind],n?.tryDefinition(e.kind));if(!r)return null;let a=e,i=n?.tryDefinition(e.kind)?.fields.shape,s=vn.filter(h=>{let o=r[h];return o?i?!(o in i):!(o in a):!0});if(s.length>0)throw new Qn(e.kind,s);let p=_n(a[r.start]);if(p===null)return null;let c=p.from,b=(r.end?_n(a[r.end])?.to:null)??p.to,u=yn(a[r.start]),w=r.label?a[r.label]:void 0;return{id:e.id,kind:e.kind,label:typeof w=="string"&&w.length>0?w:xe(n?.tryDefinition(e.kind),e),from:c,to:ye(c,b)<0?c:b,at:r.allDay&&a[r.allDay]===!0?null:u,allDay:r.allDay&&a[r.allDay]===!0||u===null,done:cr(a,r.done)}}function mr(e,t,n,r){let a=xn(e,t,n);if(!a)return[];let i=We(t[e.kind],n?.tryDefinition(e.kind)).start,s=e,p=s[i],c=s[mt(i)];if(typeof p!="string"||!pt(c))return[a];let b=ye(a.from,a.to);return("next"in r?[ht(p,c,r.next)]:ft(p,c,{from:Ae(r.from,-b),to:r.to,limit:400})).map(w=>({...a,from:w.slice(0,10),to:Ae(w.slice(0,10),b),repeats:!0}))}function Sn(e,t){return e.filter(n=>ye(n.from,t)>=0&&ye(t,n.to)>=0).sort((n,r)=>n.allDay!==r.allDay?n.allDay?-1:1:n.at!==r.at?(n.at??0)-(r.at??0):n.label.localeCompare(r.label))}function pr(e,t,n){let r=yt(e.schema,e.allMutations()).get(t)?.get(n)??[],a=new Map(e.allMutations().map(s=>[s.name,s]));for(let s of r){let p=a.get(s),c=p?.subject;if(!p||!c)continue;let b=p.input?.shape??{};if(n in b)return{name:p.name,arg:c.arg}}let i=e.allMutations().find(s=>s.derived?.act==="edit"&&s.derived.kind===t);return i?.subject?{name:i.name,arg:i.subject.arg}:null}var fr=(e,t)=>({from:Un(e),to:hr(e),label:Tn(e,{short:!0,year:t})});function hr(e){return wn(Date.UTC(Number(e.slice(0,4)),Number(e.slice(5,7)),0))}function aa(e){let t=Math.floor((Number(e.slice(5,7))-1)/3);return`${e.slice(0,4)}-${String(t*3+1).padStart(2,"0")}-01`}function yr(e,t,n={}){let r=n.weekStartsOn??1,a=(c,b)=>({from:c,to:c,label:String(Number(c.slice(8,10))),...b?{outside:!0}:{}});if(e==="day")return{title:De(t),grain:"day",columns:1,cells:[a(t)]};if(e==="week"){let c=Ke(t,r);return{title:`${De(c)} \u2013 ${De(Ae(c,6))}`,grain:"day",columns:7,cells:Ue(c,7).map(b=>a(b))}}if(e==="agenda")return{title:`From ${De(t)}`,grain:"day",columns:1,cells:Ue(t,42).map(c=>a(c))};if(e==="quarter"){let c=aa(t),b=hr(je(c,2)),u=[];for(let w=Ke(c,r);ye(w,b)>=0;w=Ae(w,7))u.push({from:w,to:Ae(w,6),label:ct(w),...ye(w,c)>0&&ye(Ae(w,6),c)>0?{outside:!0}:{}});return{title:`Q${Math.floor((Number(t.slice(5,7))-1)/3)+1} ${t.slice(0,4)}`,grain:"week",columns:4,cells:u}}if(e==="year"){let c=t.slice(0,4);return{title:c,grain:"month",columns:4,cells:Array.from({length:12},(b,u)=>fr(`${c}-${String(u+1).padStart(2,"0")}-01`,!1))}}if(e==="years"){let c=Number(t.slice(0,4)),b=c+Math.max(1,n.horizon?.years??1)-1,u=n.horizon?.from!==void 0||n.horizon?.to!==void 0,w=u?n.horizon?.from??c:Math.min(c,n.fit?.first??c),o=(u?Math.max(w,n.horizon?.to??w+Math.max(1,n.horizon?.years??1)-1):Math.max(b,n.fit?.last??b))-w+1,l=Array.from({length:o},(C,g)=>String(w+g));return o>ia?{title:`${n.horizon?.title??"Years"} \xB7 ${l[0]}\u2013${l[l.length-1]}`,grain:"year",columns:5,years:l,cells:l.map(C=>({from:`${C}-01-01`,to:`${C}-12-31`,label:C}))}:{title:`${n.horizon?.title??"Years"} \xB7 ${l[0]}\u2013${l[l.length-1]}`,grain:"month",columns:4,years:l,cells:l.flatMap(C=>Array.from({length:12},(g,S)=>fr(`${C}-${String(S+1).padStart(2,"0")}-01`,!0)))}}let i=Un(t),s=Ke(i,r),p=t.slice(0,7);return{title:Tn(t),grain:"day",columns:7,cells:Ue(s,42).map(c=>a(c,c.slice(0,7)!==p))}}function wr(e,t,n){return e.filter(r=>ye(r.from,n)>=0&&ye(t,r.to)>=0).sort((r,a)=>r.allDay!==a.allDay?r.allDay?-1:1:r.from!==a.from?r.from.localeCompare(a.from):r.at!==a.at?(r.at??0)-(a.at??0):r.label.localeCompare(a.label))}var ia=10;function vr(e){return e==="year"?"year":e==="month"?"month":e==="week"?"week":"day"}var br=q(Ee(),1);var ae=q(te(),1);function Jn({label:e,glyph:t,onPress:n}){return(0,ae.jsx)("button",{type:"button","aria-label":e,title:e,onClick:n,style:Ye,children:t})}var Ye={minHeight:24,minWidth:24,padding:"2px 9px",borderRadius:6,fontSize:"0.8125rem",borderWidth:1,borderStyle:"solid",borderColor:"transparent",color:"var(--graview-ink-muted)",background:"transparent"},xr={day:12,week:4,month:3,year:5};function Sr({span:e,weekStartsOn:t,entries:n,today:r,perCell:a,emphasisOf:i,broken:s,hue:p,onOpen:c,onMove:b}){let u=(0,br.useRef)(null),w=Fe(u),h=w===null?e.columns:Math.max(1,Math.floor(w/44)),o=h<e.columns,l=o?h:e.columns,C=!o&&e.grain==="day"&&e.columns===7?Ue(Ke(e.cells[0]?.from??r,t),7):e.grain==="day"&&e.columns===1?e.cells.map(g=>g.from):null;return o&&e.grain==="day"&&e.columns>1?(0,ae.jsx)("div",{ref:u,"data-calendar-shape":"agenda",style:{display:"grid",minHeight:0,flex:1},children:(0,ae.jsx)(kn,{days:e.cells.map(g=>g.from),entries:n,today:r,emphasisOf:i,broken:s,hue:p,onMove:(g,S)=>b(g,{from:S,to:S,label:S},"day")})}):(0,ae.jsxs)("div",{ref:u,"data-calendar-shape":o?"wrapped":"grid",style:{display:"grid",gap:4,gridTemplateRows:C?"auto 1fr":"1fr",minHeight:0,flex:1},children:[C?(0,ae.jsx)("div",{style:{display:"grid",gridTemplateColumns:`repeat(${l}, minmax(0, 1fr))`,gap:4},children:C.map(g=>(0,ae.jsx)("span",{style:{fontSize:"0.75rem",letterSpacing:"0.16em",textTransform:"uppercase",color:"var(--graview-ink-muted)",textAlign:"center"},children:e.columns===7?dr(Kn(g)):De(g)},g))}):null,(0,ae.jsx)("div",{tabIndex:0,"aria-label":`The days of ${e.title}`,style:{display:"grid",gridTemplateColumns:`repeat(${l}, minmax(0, 1fr))`,gridAutoRows:"max-content",gap:4,minHeight:0,overflow:"auto"},children:e.cells.map((g,S)=>{let A=wr(n,g.from,g.to),L=A.slice(0,a),T=A.slice(a),v=T.filter(m=>s.has(m.id)).length,O=ye(g.from,r)>=0&&ye(r,g.to)>=0;return(0,ae.jsxs)("div",{"data-calendar-day":e.grain==="day"?g.from:void 0,"data-calendar-cell":g.from,"data-calendar-grain":e.grain,"data-calendar-count":A.length,"data-calendar-outside":g.outside||void 0,onDragOver:m=>{m.dataTransfer.types.includes("text/graview-node")&&(m.preventDefault(),m.dataTransfer.dropEffect="move")},onDrop:m=>{let E=m.dataTransfer.getData("text/graview-node");E&&(m.preventDefault(),m.stopPropagation(),b(E,g,e.grain))},style:{minHeight:62,display:"flex",flexDirection:"column",gap:2,padding:4,borderRadius:7,border:"1px solid var(--graview-edge)",background:O?"var(--graview-panel)":g.outside?"var(--graview-panel-muted)":"transparent"},children:[(0,ae.jsxs)("span",{style:{display:"flex",alignItems:"baseline",gap:4},children:[(0,ae.jsx)("span",{style:{fontSize:"0.75rem",fontVariantNumeric:"tabular-nums",color:O?"var(--graview-accent)":"var(--graview-ink-faint)"},children:g.label}),e.grain!=="day"&&A.length>0?(0,ae.jsx)("span",{style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)",marginLeft:"auto"},children:A.length}):null]}),L.map(m=>(0,ae.jsx)(kr,{entry:m,cell:g,rowStart:S%l===0,emphasis:i(m.id),flagged:s.has(m.id),hue:p(m)},`${m.id}:${m.from}:${g.from}`)),T.length>0?(0,ae.jsxs)("button",{type:"button","data-testid":`calendar-more-${g.from}`,onClick:()=>c(g),title:`Open ${g.label}`,style:{minHeight:24,padding:"1px 5px",fontSize:"0.75rem",borderRadius:5,border:"1px dashed var(--graview-edge)",background:"transparent",color:v>0?"var(--graview-warn)":"var(--graview-ink-muted)",textAlign:"left"},children:["+",T.length," more",v>0?` \xB7 ${v} flagged`:""]}):null]},g.from)})})]})}function kn({days:e,entries:t,today:n,emphasisOf:r,broken:a,hue:i,onMove:s}){let p=e.map(c=>({day:c,here:Sn(t,c)})).filter(({here:c})=>c.length>0);return p.length===0?(0,ae.jsx)("p",{"data-testid":"calendar-empty",style:{margin:0,fontSize:"0.875rem",color:"var(--graview-ink-muted)"},children:"Nothing is scheduled in the next six weeks."}):(0,ae.jsx)("ol",{tabIndex:0,"aria-label":"What is scheduled",style:{margin:0,padding:0,listStyle:"none",display:"grid",alignContent:"start",gap:10,overflow:"auto",minHeight:0},children:p.map(({day:c,here:b})=>(0,ae.jsxs)("li",{"data-calendar-day":c,onDragOver:u=>{u.dataTransfer.types.includes("text/graview-node")&&(u.preventDefault(),u.dataTransfer.dropEffect="move")},onDrop:u=>{let w=u.dataTransfer.getData("text/graview-node");w&&(u.preventDefault(),u.stopPropagation(),s(w,c))},style:{display:"grid",gap:4},children:[(0,ae.jsxs)("span",{style:{fontSize:"0.75rem",letterSpacing:"0.16em",textTransform:"uppercase",color:c===n?"var(--graview-accent)":"var(--graview-ink-muted)"},children:[De(c),c===n?" \xB7 today":""]}),b.map(u=>(0,ae.jsx)(kr,{entry:u,cell:{from:c,to:c,label:c},emphasis:r(u.id),flagged:a.has(u.id),hue:i(u)},`${u.id}:${u.from}:${c}`))]},c))})}function kr({entry:e,cell:t,emphasis:n,flagged:r,hue:a,rowStart:i=!1}){let s=ye(t.from,e.from)>=0,p=ye(e.to,t.to)>=0,c=!(s&&p),b=e.at!==null&&s&&e.from===t.from?`${Yn(e.at)} ${e.label}`:e.label;return(0,ae.jsx)("span",{"data-graview-pick":e.id,"data-calendar-entry":e.id,"data-calendar-repeat":e.repeats?e.from:void 0,draggable:!e.repeats,onDragStart:u=>{u.dataTransfer.setData("text/graview-node",e.id),u.dataTransfer.effectAllowed="move"},"data-graview-emphasis":n,"data-calendar-part":c?s?"opens":p?"closes":"through":void 0,"data-calendar-in":t.from,title:c?`${e.label} \xB7 ${e.from} \u2013 ${e.to}`:`${e.label}${e.at===null?" \xB7 all day":` \xB7 ${Yn(e.at)}`}${e.repeats?" \xB7 repeats":""}`,style:{display:"block",minHeight:24,boxSizing:"border-box",padding:"3px 6px",fontSize:"0.75rem",lineHeight:1.35,borderRadius:c?s?"5px 0 0 5px":p?"0 5px 5px 0":0:5,whiteSpace:"normal",overflowWrap:"anywhere",hyphens:"auto",textDecoration:e.done?"line-through":"none",opacity:n==="dimmed"?.35:e.done?.6:1,background:`color-mix(in oklab, hsl(${Math.round(a)} 70% 55%) ${n==="lit"?38:20}%, transparent)`,color:"var(--graview-ink)",...n==="lit"?{outline:"1px solid var(--graview-accent)"}:{},...r?{borderLeft:"3px solid var(--graview-warn)",paddingLeft:4}:{}},children:s||i?e.repeats?(0,ae.jsxs)(ae.Fragment,{children:[(0,ae.jsx)("span",{"aria-hidden":"true",children:"\u21BB "}),b]}):b:" "})}var Z=q(te(),1);function oa(e){let t=1/0,n=-1/0;for(let r of e)r&&(t=Math.min(t,Number(r.from.slice(0,4))),n=Math.max(n,Number(r.to.slice(0,4))));return Number.isFinite(t)&&Number.isFinite(n)?{first:t,last:n}:void 0}function Cr(e){let t=n=>function(a){let{store:i}=oe(),{view:s}=nn(),p=n?{...e,range:n}:e,c=s.within?.range??p.range??"month",b=Object.keys(e.bindings),{nodes:u,arranged:w,arrangement:h,bar:o}=Ne(a,{...e.arranging!==void 0?{allow:e.arranging}:{},lensAllows:{sort:!1,group:c==="agenda"},...e.arrangedBy?{arrangedBy:e.arrangedBy}:{},...e.search?{search:e.search}:{},...e.filters?{filters:e.filters}:{},...b[0]?{kind:(a.nodes??[]).find(A=>b.includes(String(A.kind)))?.kind??b[0]}:{}}),l=c==="agenda"&&w.grouped&&h.group?w.groups.map(A=>({label:A.label,ids:new Set(A.nodes.map(L=>L.id))})):void 0,C=new Set((a.nodes??[]).map(A=>String(A.kind))),g=b.filter(A=>!C.has(A)&&i.schema.tryDefinition(A)!==void 0).flatMap(A=>{let L=i.schema.tryDefinition(A);return i.graph.nodesOfKind(A).filter(T=>s.past===!0||Ge(L,T))}),S=g.length===0?u:[...u,...a.budget!==void 0?g.slice(0,a.budget):g];return Ie(a,i.schema,(0,Z.jsx)(sa,{schema:i.schema,...a,nodes:S,options:{...p,today:p.today??i.today()??gr()},...o?{bar:o}:{},...l?{groups:l}:{}}))};return{name:"calendar",requiredRoles:[...vn],bindings:e.bindings,options:e,View:t(),at:n=>t(n),ranges:()=>bn(e).map(n=>({range:n,title:ur(n,e.horizon)})),place:(n,r)=>n.map(a=>xn(a,e.bindings,r)).filter(a=>a!==null)}}function sa({nodes:e,label:t,fidelity:n,mode:r,options:a,schema:i,selectedIds:s=[],implicated:p=[],flagged:c=[],bar:b,groups:u}){let{view:w,go:h}=nn(),{store:o,principal:l}=oe(),C=w.within?.at??a.today,g=w.within?.range??a.range??"month",S=a.weekStartsOn??1,A=new Set([...p,...s]),L=M=>A.size===0?"plain":A.has(M)?"lit":"dimmed",T=new Set(c),v=g==="years"&&w.within?.at===void 0?oa((e??[]).map(M=>xn(M,a.bindings,i))):void 0,O=yr(g,C,{weekStartsOn:S,...a.horizon?{horizon:a.horizon}:{},...v?{fit:v}:{}}),E=n==="glyph"||n==="summary"?{next:a.today}:{from:O.cells[0]?.from??C,to:O.cells[O.cells.length-1]?.to??C},D=(e??[]).flatMap(M=>mr(M,a.bindings,i,E)),G=a.hueOf??(M=>be(M.kind)),k=(e??[]).filter(M=>{let d=We(a.bindings[M.kind],i?.tryDefinition(M.kind));return d!==void 0&&lr(M[d.start])}).length;if(n==="glyph")return(0,Z.jsx)(ke,{label:`${t??"Calendar"} \xB7 ${D.length}`,hue:be("calendar")});if(n==="summary"){let M=Sn(D,a.today);return(0,Z.jsx)(me,{title:t??"Calendar",meta:`${D.length} dated`,tone:"muted",children:(0,Z.jsx)(ze,{max:6,items:M.length>0?M.map(d=>({id:d.id,label:d.label,hue:G(d)})):D.filter(d=>ye(a.today,d.from)>=0).sort((d,y)=>d.from.localeCompare(y.from)).slice(0,6).map(d=>({id:d.id,label:`${d.from.slice(5)} ${d.label}`,hue:G(d)}))})})}let _=r==="fullscreen",[W,le]=(0,Cn.useState)(null),ee=(M,d,y)=>{let x=o.graph.getNode(M);if(!x)return;let R=We(a.bindings[x.kind],o.schema.tryDefinition(x.kind));if(!R)return;let f=pr(o,x.kind,R.start);if(!f){le({text:`Nothing declared writes the ${Nn(o.schema.definitions.find(Y=>Y.kind===x.kind),R.start).toLowerCase()}, so this cannot be moved from here.`,tone:"refused"});return}let $=d.from,P=x[R.start],H=yn(P)===null?$:`${$}${String(P).slice(10)}`,K={name:f.name,args:{[f.arg]:M,[R.start]:H}},J=o.permits(K,l);if(!J.ok){le({text:J.refusal.message,tone:"refused"});return}try{o.apply(K,{author:l}),le(y==="day"?null:{text:`Moved to ${De($)} \u2014 a ${y} is coarser than the ${Nn(o.schema.definitions.find(Y=>Y.kind===x.kind),R.start).toLowerCase()} holds, so it takes the first day of the cell. Undo puts it back.`,tone:"rounded"})}catch(Y){le({text:Y instanceof Error?Y.message:String(Y),tone:"refused"})}},ie=M=>{let d=g==="years"?je(`${O.years?.[0]??C.slice(0,4)}${C.slice(4)}`,M*12*Math.max(1,O.years?.length??a.horizon?.years??1)):g==="year"?je(C,M*12):g==="quarter"?je(C,M*3):g==="month"?je(C,M):g==="week"?Ae(C,M*7):Ae(C,M);h(en(w,"at",d))},N=(M,d)=>{let y=en(w,"range",M);d!==void 0&&(y=en(y,"at",d)),h(y)},U=(0,Cn.useRef)(null),de=Fe(U),B=de!==null&&de<420,we=M=>M==="years"?a.horizon?.title??"years":M.charAt(0).toUpperCase()+M.slice(1);return(0,Z.jsx)(me,{title:t??"Calendar",meta:O.title,style:{gap:10,..._?{flex:"1 1 auto",minHeight:0,height:"100%"}:{}},children:(0,Z.jsxs)("div",{ref:U,"data-testid":"calendar","data-calendar-range":g,"data-calendar-at":C,style:{display:"flex",flexDirection:"column",height:"100%",minHeight:0,gap:8},children:[(0,Z.jsxs)("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:6},children:[(0,Z.jsxs)("nav",{"aria-label":"When",style:{display:"flex",gap:4},children:[(0,Z.jsx)(Jn,{label:"Previous",glyph:"\u2039",onPress:()=>ie(-1)}),(0,Z.jsx)("button",{type:"button","data-testid":"calendar-today",onClick:()=>h(en(w,"at",a.today)),style:Ye,children:"Today"}),(0,Z.jsx)(Jn,{label:"Next",glyph:"\u203A",onPress:()=>ie(1)})]}),B?(0,Z.jsx)("select",{"aria-label":"Range","data-testid":"calendar-ranges",value:g,onChange:M=>N(M.target.value),style:{...Ye,borderRadius:999,borderColor:"var(--graview-edge)",background:void 0,backgroundColor:"transparent",marginLeft:"auto",maxWidth:"50%",paddingRight:24,appearance:"none",WebkitAppearance:"none",backgroundImage:"linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%)",backgroundPosition:"calc(100% - 13px) 55%, calc(100% - 9px) 55%",backgroundSize:"4px 4px, 4px 4px",backgroundRepeat:"no-repeat"},children:bn(a).map(M=>(0,Z.jsx)("option",{value:M,children:we(M)},M))}):(0,Z.jsx)("div",{role:"group","aria-label":"Range","data-testid":"calendar-ranges",style:{display:"flex",flexWrap:"wrap",gap:4,marginLeft:"auto"},children:bn(a).map(M=>(0,Z.jsx)("button",{type:"button","aria-pressed":M===g,"data-testid":`calendar-range-${M}`,onClick:()=>N(M),style:{...Ye,borderRadius:999,borderColor:"var(--graview-edge)",...M==="years"?{}:{textTransform:"capitalize"},...M===g?{borderColor:"var(--graview-accent)",color:"var(--graview-accent)",background:"var(--graview-panel)"}:{}},children:M==="years"?a.horizon?.title??"years":M},M))})]}),k>0?(0,Z.jsx)("p",{"data-testid":"calendar-year-only",style:{margin:0,fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:k===1?"1 knows only its year, so it is not placed.":`${k} know only their year, so they are not placed.`}):null,W?(0,Z.jsx)("p",{"data-testid":W.tone==="refused"?"calendar-refused":"calendar-rounded",role:"status",style:{margin:0,fontSize:"0.8125rem",color:W.tone==="refused"?"var(--graview-warn)":"var(--graview-ink-muted)"},children:W.text}):null,O.years?(0,Z.jsx)("nav",{"aria-label":"Years","data-testid":"calendar-years",style:{display:"flex",flexWrap:"wrap",gap:4},children:O.years.map(M=>(0,Z.jsx)("button",{type:"button","data-testid":`calendar-year-${M}`,onClick:()=>N("year",`${M}-01-01`),style:Ye,children:M},M))}):null,b,g==="agenda"&&u?(0,Z.jsx)("div",{"data-testid":"calendar-groups",style:{display:"grid",gap:10,minHeight:0,overflow:"auto"},children:u.map(M=>(0,Z.jsxs)("section",{"data-testid":"calendar-group",style:{display:"grid",gap:4},children:[(0,Z.jsxs)("h3",{style:{margin:0,fontSize:"0.8125rem",letterSpacing:"0.08em",textTransform:"uppercase",color:"var(--graview-ink-muted)"},children:[M.label," ",(0,Z.jsx)("span",{style:{fontWeight:400},children:M.ids.size})]}),(0,Z.jsx)(kn,{days:O.cells.map(d=>d.from),entries:D.filter(d=>M.ids.has(d.id)),today:a.today,emphasisOf:L,broken:T,hue:G,onMove:(d,y)=>ee(d,{from:y,to:y,label:y},"day")})]},M.label))}):g==="agenda"?(0,Z.jsx)(kn,{days:O.cells.map(M=>M.from),entries:D,today:a.today,emphasisOf:L,broken:T,hue:G,onMove:(M,d)=>ee(M,{from:d,to:d,label:d},"day")}):(0,Z.jsx)(Sr,{span:O,weekStartsOn:S,entries:D,today:a.today,perCell:a.perCell??xr[O.grain],emphasisOf:L,broken:T,hue:G,onOpen:M=>N(vr(O.grain),M.from),onMove:ee})]})})}var re=q(Ee(),1);var Qe=q(Ee(),1),Re=q(te(),1),$n={padding:"5px 10px",fontSize:"0.875rem",borderRadius:8,width:"100%",textAlign:"left",borderWidth:1,borderStyle:"solid",borderColor:"transparent",background:"none",boxShadow:"none"};function $r({choices:e,close:t}){let[n,r]=(0,Qe.useState)(!1),a=(0,Qe.useRef)(null);return(0,Qe.useLayoutEffect)(()=>{n&&a.current?.querySelector("button:not([disabled])")?.focus()},[n]),(0,Re.jsxs)("div",{children:[(0,Re.jsxs)("button",{type:"button","data-menu-item":"move-to","aria-expanded":n,onClick:()=>r(i=>!i),style:$n,children:["Move to ",(0,Re.jsx)("span",{"aria-hidden":"true",children:"\u203A"})]}),n?(0,Re.jsx)("ul",{ref:a,"aria-label":"Move to","data-testid":"move-to",style:{margin:"2px 0 0 12px",padding:0,listStyle:"none",display:"flex",flexDirection:"column",gap:2},children:e.map(i=>i.run?(0,Re.jsx)("li",{children:(0,Re.jsx)("button",{type:"button","data-move-to":i.to,onClick:()=>{t(),i.run()},style:$n,children:i.label})},i.to):(0,Re.jsxs)("li",{style:{display:"grid",gap:2},children:[(0,Re.jsx)("button",{type:"button",disabled:!0,"data-move-to":i.to,"data-withheld":"",style:{...$n,borderStyle:"dashed"},children:(0,Re.jsx)("s",{children:i.label})}),(0,Re.jsx)("span",{"data-testid":"move-to-why",style:{fontSize:"0.8125rem",lineHeight:1.4,color:"var(--graview-ink-muted)",padding:"0 10px"},children:i.why})]},i.to))}):null]})}function Or({choose:e,close:t}){return(0,Re.jsx)("button",{type:"button","data-menu-item":"choose-several",onClick:()=>{t(),e()},style:$n,children:"Choose several"})}var z=q(te(),1),la=`
4
4
  .graview-columns { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-start; }
@@ -27,6 +27,6 @@ var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=gl
27
27
  .graview-columns-card .graview-choose-at { position: absolute; top: 6px; right: 6px; z-index: ${Te.raised}; display: flex; }
28
28
  [data-graview-choosable] { outline: none; }
29
29
  @media (pointer: coarse) { [data-graview-choosable]:not([data-graview-choosing]) .graview-columns-card .graview-choose-at { display: none; } }
30
- `;function Ar(e){function t(n){let{store:r}=oe();St();let a=Object.keys(e.bindings).filter(v=>r.schema.tryDefinition(v)!==void 0),i=n.nodes??[],s=new Set(i.map(v=>String(v.kind))),p=v=>r.graph.nodesOfKind(v).filter(O=>Ge(r.schema.tryDefinition(v),O)),c=n.total!==void 0&&n.total>i.length,b=a[0],u=b===void 0?[]:s.has(b)?i.filter(v=>v.kind===b):p(b),{arranged:w,arrangement:h,bar:o}=Ne(n,{lensAllows:{group:!1},subject:u,...b===void 0?{}:{kind:b},query:e.search!==void 0||u.length>vt,...e.search?{search:e.search}:{},...e.filters?{filters:e.filters}:{}}),l=o?new Map(w.nodes.map((v,O)=>[v.id,O])):void 0,C=(v,O)=>{if(!l||v!==b)return O;let m=O.filter(E=>l.has(E.id));return h.sort===void 0?m:[...m].sort((E,D)=>l.get(E.id)-l.get(D.id))},g=a.map(v=>{let O=e.bindings[v].column,m=Vt(r.schema,v,O),E=(N,U)=>U==="label"?xe(r.schema.tryDefinition(N.kind),N):N[U],D=C(v,Ze(s.has(v)?i.filter(N=>N.kind===v):p(v).slice(0,n.budget??1/0),e.sort,E)),G=p(v),k=s.has(v)&&!c?D:C(v,G),_=new Set(e.hidden??[]),W=r.schema.tryDefinition(v),le=!!h.query||(h.filter?.length??0)>0,ee=new Set([...G,...s.has(v)?i.filter(N=>N.kind===v):[]].map(N=>N.id)),ie=W?.lifecycle&&n.budget===void 0&&n.fidelity==="full"&&!le?r.graph.nodesOfKind(v).filter(N=>!ee.has(N.id)&&!Ge(W,N)):[];return{kind:v,field:O,all:m,born:new Map(G.map((N,U)=>[N.id,U])),columns:m.filter(N=>N.value===null||!_.has(N.value)).map(N=>({column:N,cards:D.filter(U=>tn(U,O,m)===N.value),count:k.filter(U=>tn(U,O,m)===N.value).length,past:ie.filter(U=>tn(U,O,m)===N.value)})).filter(N=>N.column.value!==null||N.count>0||N.past.length>0)}}),S=g.reduce((v,O)=>v+O.columns.reduce((m,E)=>m+E.count,0),0),A=n.label??"Board";if(n.fidelity==="glyph")return(0,z.jsx)(ke,{label:`${A} \xB7 ${S}`,hue:be("columns")});if(n.fidelity==="summary")return(0,z.jsx)(me,{title:A,meta:b?qe(r.schema,b,S):String(S),tone:"muted",children:(0,z.jsx)("p",{style:{margin:0,fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},"data-testid":"columns-summary",children:g.flatMap(v=>v.columns.map(O=>`${O.column.label} ${O.count}`)).join(" \xB7 ")})});let L=(0,z.jsx)(da,{boards:g,title:A,options:e}),T=o?(0,z.jsxs)("div",{style:{display:"grid",gap:6},children:[o,L]}):L;return Ie(n,r.schema,n.mode==="fullscreen"?(0,z.jsx)("div",{style:{padding:"14px 16px"},children:T}):(0,z.jsx)(me,{title:A,meta:b?qe(r.schema,b,S):void 0,children:T}))}return{name:"columns",requiredRoles:["column"],bindings:e.bindings,View:t}}function da({boards:e,title:t,options:n}){let{store:r,principal:a}=oe(),i=(0,re.useRef)(null),[s,p]=(0,re.useState)(null),[c,b]=(0,re.useState)(null),[u,w]=(0,re.useState)(null),[h,o]=(0,re.useState)(null),[l,C]=(0,re.useState)(""),[g,S]=(0,re.useState)(()=>new Set),[A,L]=(0,re.useState)(()=>new Set(n.collapsed??[])),[T,v]=(0,re.useState)(()=>new Set),[O,m]=(0,re.useState)(null),E=(0,re.useId)();(0,re.useLayoutEffect)(()=>{if(!O)return;i.current?.querySelector(O)?.focus(),m(null)});let D=y=>{let x=r.graph.getNode(y);return x?xe(r.schema.tryDefinition(x.kind),x):y},G=(0,re.useMemo)(()=>e.flatMap(y=>y.columns.flatMap(x=>x.cards.map(R=>R.id))),[e]),k=Ft(G),_=(0,re.useMemo)(()=>r.permittedMutations(a).some(y=>{let x=y.subject?.kinds;return x!==void 0&&(x==="*"||e.some(R=>x.includes(R.kind)))}),[r,a,e]),W=y=>{k.choose(y),requestAnimationFrame(()=>{((y[0]===void 0?null:i.current?.querySelector(`[data-graview-choose-box="${an(y[0])}"]`))??i.current)?.focus({preventScroll:!0})})},le=(y,x)=>Gt(r,a,y,x.field,x.columns.map(R=>R.column)),ee=y=>n.move?`[data-columns-move="${an(y)}"] > button`:`[data-graview-listed="${an(y)}"] .graview-spec-item-link`,ie=(y,x,R,f)=>{try{let $=r.apply(x.call,{author:a});p({text:`Moved \u201C${D(y)}\u201D to ${R}.`,tone:"moved",batch:$.batch,id:y}),f==="keyboard"&&m(ee(y)),f==="carry"&&m(`[data-graview-listed="${an(y)}"] .graview-spec-item-link`),f==="menu"&&ca(()=>i.current?.querySelector(`[data-graview-listed="${an(y)}"] .graview-spec-item-link`)??null)}catch($){p({text:$ instanceof Error?$.message:String($),tone:"refused"})}},N=()=>{if(s?.batch)try{r.undo(s.batch,{author:a}),p({text:`\u201C${D(s.id??"")}\u201D is back where it was.`,tone:"moved"}),s.id&&m(ee(s.id))}catch(y){p({text:y instanceof Error?y.message:String(y),tone:"refused"})}},U=(0,re.useRef)({move:ie,boards:e,choosing:k,choosable:_});U.current={move:ie,boards:e,choosing:k,choosable:_},(0,re.useEffect)(()=>{let x=[...new Set(e.map(R=>R.kind))].map(R=>qt({store:r,kind:R,root:()=>i.current,section:(f,$)=>{let P=U.current.boards.find(ue=>ue.kind===R),ne=r.graph.getNode(f);if(!P||!ne)return null;let H=jt(r,$,ne,P.field,P.all).map(ue=>({to:ue.to,label:ue.label,...ue.why!==void 0?{why:ue.why}:{},...ue.move?{run:()=>U.current.move(f,ue.move,ue.label,"menu")}:{}})),{choosing:K,choosable:J}=U.current,Y=J&&K.chosen.length===0&&typeof matchMedia=="function"&&matchMedia("(pointer: coarse)").matches?()=>K.toggle(f):void 0;return H.length===0&&!Y?null:{id:"move-to",at:"start",render:ue=>(0,z.jsxs)(z.Fragment,{children:[H.length>0?(0,z.jsx)($r,{choices:H,close:ue}):null,Y?(0,z.jsx)(Or,{choose:Y,close:ue}):null]})}}}));return()=>x.forEach(R=>R())},[r,e]);let de=(y,x)=>y.all.find(R=>R.value===x)?.label??y.columns.find(R=>R.column.value===x)?.column.label??String(x),B=(y,x,R)=>y.columns.find(f=>f.column.value===x)?.cards.filter(f=>f.id!==R)??[],we=(y,x,R,f)=>{let $=B(y,x,f).length+1;return`${de(y,x)}, ${Math.min(R,$-1)+1} of ${$}.`},M=(y,x,R,f)=>{let $=D(x.id),P=()=>{y.preventDefault(),y.stopPropagation()};if(h?.id!==x.id){if(y.key!==" "||f.length===0||!(y.target instanceof HTMLElement)||!y.target.classList.contains("graview-spec-item-link"))return;P();let H=tn(x,R.field,R.all),K=Math.max(0,R.columns.find(J=>J.column.value===H)?.cards.findIndex(J=>J.id===x.id)??0);o({id:x.id,from:H,to:H,at:K}),C(`${$}, picked up. ${we(R,H,K,x.id)} Arrow keys move it, Space drops it, Escape puts it back.`);return}let ne=R.columns.map(H=>H.column.value).filter(H=>H===h.from||f.some(K=>K.to===H));if(y.key==="ArrowLeft"||y.key==="ArrowRight"){P();let H=ne[ne.indexOf(h.to)+(y.key==="ArrowLeft"?-1:1)];if(H===void 0)return C(`No column further ${y.key==="ArrowLeft"?"left":"right"} takes ${$}. ${we(R,h.to,h.at,x.id)}`);let K=Math.min(h.at,B(R,H,x.id).length);return o({...h,to:H,at:K}),C(we(R,H,K,x.id))}if(y.key==="ArrowUp"||y.key==="ArrowDown"){P();let H=Math.max(0,Math.min(B(R,h.to,x.id).length,h.at+(y.key==="ArrowUp"?-1:1)));return o({...h,at:H}),C(we(R,h.to,H,x.id))}if(y.key===" "||y.key==="Enter"){P(),o(null);let H=h.to===h.from?void 0:f.find(K=>K.to===h.to);return H?(C(`${$}, dropped in ${de(R,h.to)}.`),ie(x.id,H,de(R,h.to),"carry")):C(`${$}, dropped back in ${de(R,h.from)}.`)}if(y.key==="Escape")return P(),o(null),C(`${$}, put back in ${de(R,h.from)}.`)},d=y=>{if(h?.id!==y)return;let x=e.find(R=>R.kind===r.graph.getNode(y)?.kind);o(null),x&&C(`${D(y)}, put back in ${de(x,h.from)}.`)};return(0,z.jsxs)("div",{"data-testid":"columns-lens",..._?{...k.listProps,tabIndex:-1,role:"group","aria-label":k.chosen.length>0?`${t}, ${k.chosen.length} chosen`:t,"data-graview-choosable":""}:{},ref:y=>{i.current=y,k.list.current=y},children:[(0,z.jsx)("style",{children:la}),_?(0,z.jsx)("style",{children:_t}):null,(0,z.jsxs)("p",{className:"graview-columns-said",role:"status","data-tone":s?.tone,"data-testid":"columns-said",style:s?void 0:{position:"absolute",width:1,height:1,overflow:"hidden",clipPath:"inset(50%)"},children:[s?(0,z.jsx)("span",{children:s.text}):null,s?.batch?(0,z.jsx)("button",{type:"button","data-testid":"columns-undo",onClick:N,children:"Undo"}):null]}),(0,z.jsx)("p",{"aria-live":"assertive","data-testid":"columns-announce",style:Ct,children:l}),(0,z.jsx)("span",{id:E,hidden:!0,children:"Space picks it up; the arrow keys carry it between and along the columns; Space drops it and Escape puts it back. Its menu moves it too."}),e.map(y=>(0,z.jsx)("section",{"data-columns-kind":y.kind,"data-columns-field":y.field,"aria-label":`${gn(r.schema,y.kind)} by ${y.field}`,children:(0,z.jsx)("div",{className:"graview-columns",children:y.columns.map(({column:x,cards:R,count:f,past:$})=>{let P=x.value??"",ne=`${y.kind}\0${P}`,H=$.length>0&&T.has(ne),K=H?[...R,...$]:R,J=H?f+$.length:f,Y=$.length>0&&!H?$.length:0,ue=c!==null&&x.value!==null&&c.to.includes(x.value)||h!==null&&h.to!==h.from&&h.to===x.value&&y.columns.some(V=>V.cards.some(ge=>ge.id===h.id)),Q=x.value!==null&&(n.collapsed??[]).includes(x.value),Ve=Q&&A.has(P),pe=n.cap!==void 0&&!g.has(P)&&K.length>n.cap,X=pe?new Set([...K].sort((V,ge)=>(y.born.get(ge.id)??0)-(y.born.get(V.id)??0)).slice(0,n.cap).map(V=>V.id)):null,he=X?K.filter(V=>X.has(V.id)||V.id===h?.id):K,Ce=h!==null&&h.to===x.value&&h.to!==h.from&&y.columns.some(V=>V.cards.some(ge=>ge.id===h.id)),$e=(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)("span",{children:x.label}),(0,z.jsx)("span",{className:"graview-columns-count","data-testid":"columns-count",children:J})]});return(0,z.jsxs)("section",{className:"graview-columns-column","data-graview-column":P,...x.value!==null?{"data-column":`${y.field}:${x.value}`,"data-column-kind":y.kind,"data-column-label":x.label}:{},"data-droppable":ue||void 0,"data-over":ue&&(u===P||Ce)||void 0,"aria-label":`${t} \xB7 ${x.label}, ${J}${Y>0?`, ${cn(Y)} past`:""}`,"data-graview-named-by-lens":"",onDragOver:V=>{ue&&(V.preventDefault(),V.dataTransfer.dropEffect="move",w(P))},onDragLeave:()=>w(V=>V===P?null:V),onDrop:V=>{let ge=V.dataTransfer.getData("text/graview-node"),Se=r.graph.getNode(ge);if(w(null),b(null),!Se||x.value===null)return;let ce=le(Se,y).find(ve=>ve.to===x.value);ce&&(V.preventDefault(),V.stopPropagation(),ie(ge,ce,x.label,"drag"))},children:[(0,z.jsx)("h3",{className:"graview-columns-heading",children:Q?(0,z.jsx)("button",{type:"button",className:"graview-columns-toggle","aria-expanded":!Ve,"data-testid":"columns-toggle",onClick:()=>L(V=>V.has(P)?new Set([...V].filter(ge=>ge!==P)):new Set([...V,P])),children:$e}):$e}),Ve?null:he.length===0&&!Ce?Y>0?null:(0,z.jsx)("p",{className:"graview-columns-empty",children:"Nothing here."}):(0,z.jsx)("ul",{className:"graview-columns-cards",children:(0,z.jsx)(Ut.Provider,{value:x.value===null?null:{field:y.field,values:[x.value,x.label]},children:(()=>{let V=he.map(Se=>{let ce=le(Se,y);return(0,z.jsx)(ua,{card:Se,moves:ce,button:n.move===!0,carried:h?.id===Se.id,...ce.length>0?{describedBy:E}:{},..._?{choosing:k}:{},labelOf:ve=>de(y,ve),onMove:(ve,Oe)=>ie(Se.id,ve,Oe,"keyboard"),onDrag:ve=>b(ve?{id:Se.id,to:ce.map(Oe=>Oe.to)}:null),onCarryKey:ve=>M(ve,Se,y,ce),onLeave:()=>d(Se.id)},Se.id)});if(!Ce)return V;let ge=(0,z.jsx)("li",{className:"graview-columns-slot","data-testid":"columns-slot","aria-hidden":"true",children:D(h.id)},"graview-carried-slot");return[...V.slice(0,h.at),ge,...V.slice(h.at)]})()})}),!Ve&&Y>0?(0,z.jsxs)("button",{type:"button",className:"graview-columns-rest","data-testid":"columns-past",title:`${cn(Y)} more behind the horizon \u2014 press to show them here`,onClick:()=>v(V=>new Set([...V,ne])),children:["+",cn(Y)," past"]}):null,!Ve&&pe?(0,z.jsxs)("button",{type:"button",className:"graview-columns-rest","data-testid":"columns-rest",onClick:()=>S(V=>new Set([...V,P])),children:["Show ",K.length-he.length," more"]}):null]},P)})})},y.kind)),_?(0,z.jsx)(Kt,{store:r,chosen:k.chosen,principal:a,anchor:()=>i.current?.closest('[data-testid="kind-stop"], [data-embed-content]')??null,of:G.length,onChooseAll:()=>k.choose(G),onClear:k.clear,onActed:W}):null]})}var an=e=>typeof globalThis.CSS?.escape=="function"?globalThis.CSS.escape(e):e.replace(/["\\]/g,"\\$&");function ca(e){let t=0,n=()=>{let r=e(),a=typeof document>"u"?null:document.activeElement;r&&a!==r&&(a===null||a===document.body||a.closest("[data-graview-menu-home], [data-graview-page-title], h1, main")!==null||!a.isConnected)&&r.focus({preventScroll:!0}),++t<6&&requestAnimationFrame(n)};requestAnimationFrame(n)}function ua({card:e,moves:t,button:n,carried:r,describedBy:a,labelOf:i,onMove:s,onDrag:p,onCarryKey:c,onLeave:b,choosing:u}){let{store:w,views:h}=oe(),[o,l]=(0,re.useState)(!1),C=(0,re.useRef)(null),g=(0,re.useRef)(null),S=xe(w.schema.tryDefinition(e.kind),e),A=h.lookup(e.kind,{cardinality:"one",fidelity:"summary"});(0,re.useLayoutEffect)(()=>{o&&C.current?.querySelector("button")?.focus()},[o]);let L=()=>{l(!1),g.current?.focus()},T=v=>{let O=[...C.current?.querySelectorAll("button")??[]],m=O.indexOf(document.activeElement);v.key==="Escape"?(v.preventDefault(),v.stopPropagation(),L()):(v.key==="ArrowDown"||v.key==="ArrowUp")&&(v.preventDefault(),v.stopPropagation(),O[(m+(v.key==="ArrowDown"?1:O.length-1))%O.length]?.focus())};return(0,z.jsxs)("li",{className:"graview-spec-item graview-columns-card","data-graview-listed":e.id,"data-as":"card","data-carried":r||void 0,...u&&u.chosen.length>0?{"data-graview-choose":e.id}:{},draggable:t.length>0||void 0,onKeyDown:c,onKeyUp:v=>{v.key===" "&&v.target instanceof HTMLElement&&v.target.classList.contains("graview-spec-item-link")&&v.preventDefault()},onBlur:v=>{r&&!v.currentTarget.contains(v.relatedTarget)&&b()},onDragStart:v=>{t.length!==0&&(v.dataTransfer.setData("text/graview-node",e.id),v.dataTransfer.effectAllowed="move",p(!0))},onDragEnd:()=>p(!1),children:[(0,z.jsx)(Qt,{node:e,label:S,...a?{describedBy:a}:{}}),A?(0,z.jsx)(bt,{mode:"scene",children:(0,z.jsx)($t.Provider,{value:S,children:(0,z.jsx)(A,{node:e,cardinality:"one",fidelity:"summary",mode:"scene",selected:!1})})}):(0,z.jsx)("span",{className:"graview-spec-item-name","aria-hidden":"true",children:S}),u?(0,z.jsx)("span",{className:"graview-choose-at",children:(0,z.jsx)("input",{...u.boxProps(e.id,S),onPointerEnter:Gn,onFocus:Gn})}):null,n&&t.length>0?(0,z.jsxs)("div",{className:"graview-columns-move","data-columns-move":e.id,"data-open":o||void 0,onBlur:v=>{v.currentTarget.contains(v.relatedTarget)||l(!1)},children:[(0,z.jsx)("button",{ref:g,type:"button","aria-haspopup":"menu","aria-expanded":o,"aria-label":`Move \u201C${S}\u201D to another column`,"data-testid":"columns-move",onClick:()=>l(v=>!v),children:"Move\u2026"}),o?(0,z.jsx)("div",{ref:C,role:"menu","aria-label":`Move \u201C${S}\u201D to`,className:"graview-columns-menu",onKeyDown:T,onMouseDown:v=>v.preventDefault(),children:t.map(v=>(0,z.jsx)("button",{type:"button",role:"menuitem","data-columns-to":v.to,title:v.title,onClick:()=>{l(!1),s(v,i(v.to))},children:i(v.to)},v.to))}):null]}):null]})}var Me=q(Ee(),1);var F=q(te(),1),ga=["rows","columns","link"],on=class extends Error{constructor(n,r){super(`${n}
30
+ `;function Ar(e){function t(n){let{store:r}=oe();St();let a=Object.keys(e.bindings).filter(v=>r.schema.tryDefinition(v)!==void 0),i=n.nodes??[],s=new Set(i.map(v=>String(v.kind))),p=v=>r.graph.nodesOfKind(v).filter(O=>Ge(r.schema.tryDefinition(v),O)),c=n.total!==void 0&&n.total>i.length,b=a[0],u=b===void 0?[]:s.has(b)?i.filter(v=>v.kind===b):p(b),{arranged:w,arrangement:h,bar:o}=Ne(n,{lensAllows:{group:!1},subject:u,...b===void 0?{}:{kind:b},query:e.search!==void 0||u.length>vt,...e.search?{search:e.search}:{},...e.filters?{filters:e.filters}:{}}),l=o?new Map(w.nodes.map((v,O)=>[v.id,O])):void 0,C=(v,O)=>{if(!l||v!==b)return O;let m=O.filter(E=>l.has(E.id));return h.sort===void 0?m:[...m].sort((E,D)=>l.get(E.id)-l.get(D.id))},g=a.map(v=>{let O=e.bindings[v].column,m=Vt(r.schema,v,O),E=(N,U)=>U==="label"?xe(r.schema.tryDefinition(N.kind),N):N[U],D=C(v,Ze(s.has(v)?i.filter(N=>N.kind===v):p(v).slice(0,n.budget??1/0),e.sort,E)),G=p(v),k=s.has(v)&&!c?D:C(v,G),_=new Set(e.hidden??[]),W=r.schema.tryDefinition(v),le=!!h.query||(h.filter?.length??0)>0,ee=new Set([...G,...s.has(v)?i.filter(N=>N.kind===v):[]].map(N=>N.id)),ie=W?.lifecycle&&n.budget===void 0&&n.fidelity==="full"&&!le?r.graph.nodesOfKind(v).filter(N=>!ee.has(N.id)&&!Ge(W,N)):[];return{kind:v,field:O,all:m,born:new Map(G.map((N,U)=>[N.id,U])),columns:m.filter(N=>N.value===null||!_.has(N.value)).map(N=>({column:N,cards:D.filter(U=>tn(U,O,m)===N.value),count:k.filter(U=>tn(U,O,m)===N.value).length,past:ie.filter(U=>tn(U,O,m)===N.value)})).filter(N=>N.column.value!==null||N.count>0||N.past.length>0)}}),S=g.reduce((v,O)=>v+O.columns.reduce((m,E)=>m+E.count,0),0),A=n.label??"Board";if(n.fidelity==="glyph")return(0,z.jsx)(ke,{label:`${A} \xB7 ${S}`,hue:be("columns")});if(n.fidelity==="summary")return(0,z.jsx)(me,{title:A,meta:b?qe(r.schema,b,S):String(S),tone:"muted",children:(0,z.jsx)("p",{style:{margin:0,fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},"data-testid":"columns-summary",children:g.flatMap(v=>v.columns.map(O=>`${O.column.label} ${O.count}`)).join(" \xB7 ")})});let L=(0,z.jsx)(da,{boards:g,title:A,options:e}),T=o?(0,z.jsxs)("div",{style:{display:"grid",gap:6},children:[o,L]}):L;return Ie(n,r.schema,n.mode==="fullscreen"?(0,z.jsx)("div",{style:{padding:"14px 16px"},children:T}):(0,z.jsx)(me,{title:A,meta:b?qe(r.schema,b,S):void 0,children:T}))}return{name:"columns",requiredRoles:["column"],bindings:e.bindings,View:t}}function da({boards:e,title:t,options:n}){let{store:r,principal:a}=oe(),i=(0,re.useRef)(null),[s,p]=(0,re.useState)(null),[c,b]=(0,re.useState)(null),[u,w]=(0,re.useState)(null),[h,o]=(0,re.useState)(null),[l,C]=(0,re.useState)(""),[g,S]=(0,re.useState)(()=>new Set),[A,L]=(0,re.useState)(()=>new Set(n.collapsed??[])),[T,v]=(0,re.useState)(()=>new Set),[O,m]=(0,re.useState)(null),E=(0,re.useId)();(0,re.useLayoutEffect)(()=>{if(!O)return;i.current?.querySelector(O)?.focus(),m(null)});let D=y=>{let x=r.graph.getNode(y);return x?xe(r.schema.tryDefinition(x.kind),x):y},G=(0,re.useMemo)(()=>e.flatMap(y=>y.columns.flatMap(x=>x.cards.map(R=>R.id))),[e]),k=Ft(G),_=(0,re.useMemo)(()=>r.permittedMutations(a).some(y=>{let x=y.subject?.kinds;return x!==void 0&&(x==="*"||e.some(R=>x.includes(R.kind)))}),[r,a,e]),W=y=>{k.choose(y),requestAnimationFrame(()=>{((y[0]===void 0?null:i.current?.querySelector(`[data-graview-choose-box="${an(y[0])}"]`))??i.current)?.focus({preventScroll:!0})})},le=(y,x)=>Gt(r,a,y,x.field,x.columns.map(R=>R.column)),ee=y=>n.move?`[data-columns-move="${an(y)}"] > button`:`[data-graview-listed="${an(y)}"] .graview-spec-item-link`,ie=(y,x,R,f)=>{try{let $=r.apply(x.call,{author:a});p({text:`Moved \u201C${D(y)}\u201D to ${R}.`,tone:"moved",batch:$.batch,id:y}),f==="keyboard"&&m(ee(y)),f==="carry"&&m(`[data-graview-listed="${an(y)}"] .graview-spec-item-link`),f==="menu"&&ca(()=>i.current?.querySelector(`[data-graview-listed="${an(y)}"] .graview-spec-item-link`)??null)}catch($){p({text:$ instanceof Error?$.message:String($),tone:"refused"})}},N=()=>{if(s?.batch)try{r.undo(s.batch,{author:a}),p({text:`\u201C${D(s.id??"")}\u201D is back where it was.`,tone:"moved"}),s.id&&m(ee(s.id))}catch(y){p({text:y instanceof Error?y.message:String(y),tone:"refused"})}},U=(0,re.useRef)({move:ie,boards:e,choosing:k,choosable:_});U.current={move:ie,boards:e,choosing:k,choosable:_},(0,re.useEffect)(()=>{let x=[...new Set(e.map(R=>R.kind))].map(R=>qt({store:r,kind:R,root:()=>i.current,section:(f,$)=>{let P=U.current.boards.find(ue=>ue.kind===R),ne=r.graph.getNode(f);if(!P||!ne)return null;let H=jt(r,$,ne,P.field,P.all).map(ue=>({to:ue.to,label:ue.label,...ue.why!==void 0?{why:ue.why}:{},...ue.move?{run:()=>U.current.move(f,ue.move,ue.label,"menu")}:{}})),{choosing:K,choosable:J}=U.current,Y=J&&K.chosen.length===0&&typeof matchMedia=="function"&&matchMedia("(pointer: coarse)").matches?()=>K.toggle(f):void 0;return H.length===0&&!Y?null:{id:"move-to",at:"start",render:ue=>(0,z.jsxs)(z.Fragment,{children:[H.length>0?(0,z.jsx)($r,{choices:H,close:ue}):null,Y?(0,z.jsx)(Or,{choose:Y,close:ue}):null]})}}}));return()=>x.forEach(R=>R())},[r,e]);let de=(y,x)=>y.all.find(R=>R.value===x)?.label??y.columns.find(R=>R.column.value===x)?.column.label??String(x),B=(y,x,R)=>y.columns.find(f=>f.column.value===x)?.cards.filter(f=>f.id!==R)??[],we=(y,x,R,f)=>{let $=B(y,x,f).length+1;return`${de(y,x)}, ${Math.min(R,$-1)+1} of ${$}.`},M=(y,x,R,f)=>{let $=D(x.id),P=()=>{y.preventDefault(),y.stopPropagation()};if(h?.id!==x.id){if(y.key!==" "||f.length===0||!(y.target instanceof HTMLElement)||!y.target.classList.contains("graview-spec-item-link"))return;P();let H=tn(x,R.field,R.all),K=Math.max(0,R.columns.find(J=>J.column.value===H)?.cards.findIndex(J=>J.id===x.id)??0);o({id:x.id,from:H,to:H,at:K}),C(`${$}, picked up. ${we(R,H,K,x.id)} Arrow keys move it, Space drops it, Escape puts it back.`);return}let ne=R.columns.map(H=>H.column.value).filter(H=>H===h.from||f.some(K=>K.to===H));if(y.key==="ArrowLeft"||y.key==="ArrowRight"){P();let H=ne[ne.indexOf(h.to)+(y.key==="ArrowLeft"?-1:1)];if(H===void 0)return C(`No column further ${y.key==="ArrowLeft"?"left":"right"} takes ${$}. ${we(R,h.to,h.at,x.id)}`);let K=Math.min(h.at,B(R,H,x.id).length);return o({...h,to:H,at:K}),C(we(R,H,K,x.id))}if(y.key==="ArrowUp"||y.key==="ArrowDown"){P();let H=Math.max(0,Math.min(B(R,h.to,x.id).length,h.at+(y.key==="ArrowUp"?-1:1)));return o({...h,at:H}),C(we(R,h.to,H,x.id))}if(y.key===" "||y.key==="Enter"){P(),o(null);let H=h.to===h.from?void 0:f.find(K=>K.to===h.to);return H?(C(`${$}, dropped in ${de(R,h.to)}.`),ie(x.id,H,de(R,h.to),"carry")):C(`${$}, dropped back in ${de(R,h.from)}.`)}if(y.key==="Escape")return P(),o(null),C(`${$}, put back in ${de(R,h.from)}.`)},d=y=>{if(h?.id!==y)return;let x=e.find(R=>R.kind===r.graph.getNode(y)?.kind);o(null),x&&C(`${D(y)}, put back in ${de(x,h.from)}.`)};return(0,z.jsxs)("div",{"data-testid":"columns-lens",..._?{...k.listProps,tabIndex:-1,role:"group","aria-label":k.chosen.length>0?`${t}, ${k.chosen.length} chosen`:t,"data-graview-choosable":""}:{},ref:y=>{i.current=y,k.list.current=y},children:[(0,z.jsx)("style",{children:la}),_?(0,z.jsx)("style",{children:_t}):null,(0,z.jsxs)("p",{className:"graview-columns-said",role:"status","data-tone":s?.tone,"data-testid":"columns-said",style:s?void 0:{position:"absolute",width:1,height:1,overflow:"hidden",clipPath:"inset(50%)"},children:[s?(0,z.jsx)("span",{children:s.text}):null,s?.batch?(0,z.jsx)("button",{type:"button","data-testid":"columns-undo",onClick:N,children:"Undo"}):null]}),(0,z.jsx)("p",{"aria-live":"assertive","data-testid":"columns-announce",style:Ct,children:l}),(0,z.jsx)("span",{id:E,hidden:!0,children:"Space picks it up; the arrow keys carry it between and along the columns; Space drops it and Escape puts it back. Its menu moves it too."}),e.map(y=>(0,z.jsx)("section",{"data-columns-kind":y.kind,"data-columns-field":y.field,"aria-label":`${gn(r.schema,y.kind)} by ${y.field}`,children:(0,z.jsx)("div",{className:"graview-columns",children:y.columns.map(({column:x,cards:R,count:f,past:$})=>{let P=x.value??"",ne=`${y.kind}\0${P}`,H=$.length>0&&T.has(ne),K=H?[...R,...$]:R,J=H?f+$.length:f,Y=$.length>0&&!H?$.length:0,ue=c!==null&&x.value!==null&&c.to.includes(x.value)||h!==null&&h.to!==h.from&&h.to===x.value&&y.columns.some(V=>V.cards.some(ge=>ge.id===h.id)),Q=x.value!==null&&(n.collapsed??[]).includes(x.value),Ve=Q&&A.has(P),pe=n.cap!==void 0&&!g.has(P)&&K.length>n.cap,X=pe?new Set([...K].sort((V,ge)=>(y.born.get(ge.id)??0)-(y.born.get(V.id)??0)).slice(0,n.cap).map(V=>V.id)):null,he=X?K.filter(V=>X.has(V.id)||V.id===h?.id):K,Ce=h!==null&&h.to===x.value&&h.to!==h.from&&y.columns.some(V=>V.cards.some(ge=>ge.id===h.id)),$e=(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)("span",{children:x.label}),(0,z.jsx)("span",{className:"graview-columns-count","data-testid":"columns-count",children:J})]});return(0,z.jsxs)("section",{className:"graview-columns-column","data-graview-column":P,...x.value!==null?{"data-column":`${y.field}:${x.value}`,"data-column-kind":y.kind,"data-column-label":x.label}:{},"data-droppable":ue||void 0,"data-over":ue&&(u===P||Ce)||void 0,"aria-label":`${t} \xB7 ${x.label}, ${J}${Y>0?`, ${cn(Y)} past`:""}`,"data-graview-named-by-lens":"",onDragOver:V=>{ue&&(V.preventDefault(),V.dataTransfer.dropEffect="move",w(P))},onDragLeave:()=>w(V=>V===P?null:V),onDrop:V=>{let ge=V.dataTransfer.getData("text/graview-node"),Se=r.graph.getNode(ge);if(w(null),b(null),!Se||x.value===null)return;let ce=le(Se,y).find(ve=>ve.to===x.value);ce&&(V.preventDefault(),V.stopPropagation(),ie(ge,ce,x.label,"drag"))},children:[(0,z.jsx)("h3",{className:"graview-columns-heading",children:Q?(0,z.jsx)("button",{type:"button",className:"graview-columns-toggle","aria-expanded":!Ve,"data-testid":"columns-toggle",onClick:()=>L(V=>V.has(P)?new Set([...V].filter(ge=>ge!==P)):new Set([...V,P])),children:$e}):$e}),Ve?null:he.length===0&&!Ce?Y>0?null:(0,z.jsx)("p",{className:"graview-columns-empty",children:"Nothing here."}):(0,z.jsx)("ul",{className:"graview-columns-cards",children:(0,z.jsx)(Ut.Provider,{value:x.value===null?null:{field:y.field,values:[x.value,x.label]},children:(()=>{let V=he.map(Se=>{let ce=le(Se,y);return(0,z.jsx)(ua,{card:Se,moves:ce,button:n.move===!0,carried:h?.id===Se.id,...ce.length>0?{describedBy:E}:{},..._?{choosing:k}:{},labelOf:ve=>de(y,ve),onMove:(ve,Oe)=>ie(Se.id,ve,Oe,"keyboard"),onDrag:ve=>b(ve?{id:Se.id,to:ce.map(Oe=>Oe.to)}:null),onCarryKey:ve=>M(ve,Se,y,ce),onLeave:()=>d(Se.id)},Se.id)});if(!Ce)return V;let ge=(0,z.jsx)("li",{className:"graview-columns-slot","data-testid":"columns-slot","aria-hidden":"true",children:D(h.id)},"graview-carried-slot");return[...V.slice(0,h.at),ge,...V.slice(h.at)]})()})}),!Ve&&Y>0?(0,z.jsxs)("button",{type:"button",className:"graview-columns-rest","data-testid":"columns-past",title:`${cn(Y)} more behind the horizon \u2014 press to show them here`,onClick:()=>v(V=>new Set([...V,ne])),children:["+",cn(Y)," past"]}):null,!Ve&&pe?(0,z.jsxs)("button",{type:"button",className:"graview-columns-rest","data-testid":"columns-rest",onClick:()=>S(V=>new Set([...V,P])),children:["Show ",K.length-he.length," more"]}):null]},P)})})},y.kind)),_?(0,z.jsx)(Kt,{store:r,chosen:k.chosen,principal:a,anchor:()=>i.current?.closest('[data-testid="kind-stop"], [data-embed-content]')??null,of:G.length,onChooseAll:()=>k.choose(G),onClear:k.clear,onActed:W}):null]})}var an=e=>typeof globalThis.CSS?.escape=="function"?globalThis.CSS.escape(e):e.replace(/["\\]/g,"\\$&");function ca(e){let t=0,n=()=>{let r=e(),a=typeof document>"u"?null:document.activeElement;r&&a!==r&&(a===null||a===document.body||a.closest("[data-graview-menu-home], [data-graview-page-title], h1, main")!==null||!a.isConnected)&&r.focus({preventScroll:!0}),++t<6&&requestAnimationFrame(n)};requestAnimationFrame(n)}function ua({card:e,moves:t,button:n,carried:r,describedBy:a,labelOf:i,onMove:s,onDrag:p,onCarryKey:c,onLeave:b,choosing:u}){let{store:w,views:h}=oe(),[o,l]=(0,re.useState)(!1),C=(0,re.useRef)(null),g=(0,re.useRef)(null),S=xe(w.schema.tryDefinition(e.kind),e),A=h.lookup(e.kind,{cardinality:"one",fidelity:"summary"});(0,re.useLayoutEffect)(()=>{o&&C.current?.querySelector("button")?.focus()},[o]);let L=()=>{l(!1),g.current?.focus()},T=v=>{let O=[...C.current?.querySelectorAll("button")??[]],m=O.indexOf(document.activeElement);v.key==="Escape"?(v.preventDefault(),v.stopPropagation(),L()):(v.key==="ArrowDown"||v.key==="ArrowUp")&&(v.preventDefault(),v.stopPropagation(),O[(m+(v.key==="ArrowDown"?1:O.length-1))%O.length]?.focus())};return(0,z.jsxs)("li",{className:"graview-spec-item graview-columns-card","data-graview-listed":e.id,"data-as":"card","data-carried":r||void 0,...u&&u.chosen.length>0?{"data-graview-choose":e.id}:{},draggable:t.length>0||void 0,onKeyDown:c,onKeyUp:v=>{v.key===" "&&v.target instanceof HTMLElement&&v.target.classList.contains("graview-spec-item-link")&&v.preventDefault()},onBlur:v=>{r&&!v.currentTarget.contains(v.relatedTarget)&&b()},onDragStart:v=>{t.length!==0&&(v.dataTransfer.setData("text/graview-node",e.id),v.dataTransfer.effectAllowed="move",p(!0))},onDragEnd:()=>p(!1),children:[(0,z.jsx)(Qt,{node:e,label:S,...a?{describedBy:a}:{}}),A?(0,z.jsx)(bt,{mode:"scene",children:(0,z.jsx)(Ot.Provider,{value:S,children:(0,z.jsx)(A,{node:e,cardinality:"one",fidelity:"summary",mode:"scene",selected:!1})})}):(0,z.jsx)("span",{className:"graview-spec-item-name","aria-hidden":"true",children:S}),u?(0,z.jsx)("span",{className:"graview-choose-at",children:(0,z.jsx)("input",{...u.boxProps(e.id,S),onPointerEnter:Gn,onFocus:Gn})}):null,n&&t.length>0?(0,z.jsxs)("div",{className:"graview-columns-move","data-columns-move":e.id,"data-open":o||void 0,onBlur:v=>{v.currentTarget.contains(v.relatedTarget)||l(!1)},children:[(0,z.jsx)("button",{ref:g,type:"button","aria-haspopup":"menu","aria-expanded":o,"aria-label":`Move \u201C${S}\u201D to another column`,"data-testid":"columns-move",onClick:()=>l(v=>!v),children:"Move\u2026"}),o?(0,z.jsx)("div",{ref:C,role:"menu","aria-label":`Move \u201C${S}\u201D to`,className:"graview-columns-menu",onKeyDown:T,onMouseDown:v=>v.preventDefault(),children:t.map(v=>(0,z.jsx)("button",{type:"button",role:"menuitem","data-columns-to":v.to,title:v.title,onClick:()=>{l(!1),s(v,i(v.to))},children:i(v.to)},v.to))}):null]}):null]})}var Me=q(Ee(),1);var F=q(te(),1),ga=["rows","columns","link"],on=class extends Error{constructor(n,r){super(`${n}
31
31
  ${r}`);this.hint=r;this.name="CoverageBindingError"}},Xn=(e,t)=>t&&e[t]!==void 0?String(e[t]):"",ma=40,pa=24;function fa(e,t={}){let n=t.rows??ma,r=t.columns??pa;if(e.rows.length<=n&&e.columns.length<=r)return e;let a=new Map;for(let u of e.cells)a.set(u.rowId,(a.get(u.rowId)??0)+1),a.set(`col:${u.columnId}`,(a.get(`col:${u.columnId}`)??0)+1);let i=(u,w,h)=>{if(u.length<=w)return u;let o=new Set(u.map((l,C)=>({item:l,index:C,count:a.get(h(l))??0})).sort((l,C)=>C.count-l.count||l.index-C.index).slice(0,w).map(l=>l.item.id));return u.filter(l=>o.has(l.id))},s=i(e.rows,n,u=>u.id),p=i(e.columns,r,u=>`col:${u.id}`),c=new Set(s.map(u=>u.id)),b=new Set(p.map(u=>u.id));return{...e,rows:s,columns:p,cells:e.cells.filter(u=>c.has(u.rowId)&&b.has(u.columnId)),of:{rows:e.rows.length,columns:e.columns.length}}}function Pr(e,t,n,r){let a=m=>m,i=m=>r?xe(r.tryDefinition(m.kind),m):String(a(m).label??m.id),s=r?[n.rows,n.columns].filter(m=>r.tryDefinition(m)===void 0):[];if(s.length>0)throw new on(`No kind is declared for ${s.map(m=>`"${m}"`).join(" or ")}.`,'Check the lens bindings: { rows: "<kind>", columns: "<kind>", link: "<edge kind>" }');if(r&&typeof n.link!="string"){let m=zn(r,n.columns,n.link.path);if(!m.ok||!m.reached.has(n.rows)){let E=zn(r,n.columns,[...n.link.path].reverse());throw new on(E.ok&&E.reached.has(n.rows)?`The path runs from the ${n.rows} to the ${n.columns}; it is walked from the columns.`:`The path [${n.link.path.join(", ")}] cannot get from a ${n.columns} to a ${n.rows}.`,`Name it column end first: link: { path: [${[...n.link.path].reverse().map(D=>JSON.stringify(D)).join(", ")}] }`)}}let p=e.filter(m=>m.kind===n.rows),c=e.filter(m=>m.kind===n.columns);if(!r&&p.length===0&&c.length===0)throw new on(`Nothing to lay out: no "${n.rows}" and no "${n.columns}" nodes.`,'Check the lens bindings: { rows: "<kind>", columns: "<kind>", link: "<edge kind>" }');let b=n.groupOrder??[],u=m=>{let E=b.indexOf(m);return E===-1?b.length:E},w=n.badge?t.filter(m=>m.kind===n.badge.edge):[],h=new Set(p.map(m=>m.id)),o=new Set(c.map(m=>m.id)),l=[];if(typeof n.link=="string"){let m=n.link,E=t.filter(W=>W.kind===m),D=W=>r?.tryDefinition?.(W)?.edges?.[m]?.to,G=(D(n.columns)??[]).some(W=>W===n.rows||W==="*"),k=(D(n.rows)??[]).some(W=>W===n.columns||W==="*"),_=G||!k;for(let W of E){let le=_?W.to:W.from,ee=_?W.from:W.to;h.has(le)&&o.has(ee)&&l.push({rowId:le,columnId:ee})}}else{let m=new Map;for(let D of new Set(n.link.path))m.set(D,new Map);for(let D of t){let G=m.get(D.kind);if(!G)continue;let k=G.get(D.from);k?k.push(D.to):G.set(D.from,[D.to]);let _=G.get(D.to);_?_.push(D.from):G.set(D.to,[D.from])}let E=new Set;for(let D of c){let G=[{id:D.id,via:[]}];for(let k of n.link.path){let _=[],W=new Set,le=m.get(k);for(let ee of G)for(let ie of le.get(ee.id)??[])W.has(`${ee.id}|${ie}`)||(W.add(`${ee.id}|${ie}`),_.push({id:ie,via:[...ee.via,ee.id]}));G=_}for(let k of G){if(!h.has(k.id))continue;let _=`${k.id}|${D.id}`;E.has(_)||(E.add(_),l.push({rowId:k.id,columnId:D.id,via:k.via.slice(1)}))}}}let C=new Set(n.requiredGroups??[]),g=n.requiredVia?new Set(t.filter(m=>m.kind===n.requiredVia.edge).map(m=>m.to)):null,S=new Set(l.map(m=>m.rowId)),A=new Set(l.map(m=>m.columnId)),L=new Set(w.map(m=>m.to)),T=(m,E)=>E==="label"?i(m):a(m)[E],v=Ze(p,n.sort,T).map(m=>{let E=a(m),D=Xn(E,n.rowGroup);return{id:m.id,ref:Xn(E,n.rowRef),label:i(m),group:D,required:g?g.has(m.id):C.size===0||C.has(D),covered:S.has(m.id),badged:L.has(m.id)}}).sort((m,E)=>u(m.group)-u(E.group)||(n.sort!==void 0?0:m.ref<E.ref?-1:m.ref>E.ref?1:0)),O=Ze(c,n.columnSort,T).map(m=>({id:m.id,label:i(m),used:A.has(m.id),group:Xn(a(m),n.columnGroup)})).sort((m,E)=>m.group<E.group?-1:m.group>E.group?1:n.columnSort!==void 0?0:m.id<E.id?-1:m.id>E.id?1:0).map(({group:m,...E})=>E);return{rows:v,columns:O,cells:l,gaps:v.filter(m=>m.required&&!m.covered).map(m=>m.id),unasked:O.filter(m=>!m.used).map(m=>m.id)}}var Rr=316,Zn=58,et=176,ha=Math.sin(Zn*Math.PI/180),ya=Math.cos(Zn*Math.PI/180),wa=e=>{let t=e.reduce((r,a)=>Math.max(r,a.length),0),n=Math.min(et,Math.max(46,t*5.4+12));return Math.ceil(n*ha)+8},Er=Math.ceil(et*ya),Mr=(e,t)=>un(e,t).toLowerCase(),Tr=(e,t)=>mn(e.tryDefinition(t),t);function va(e,t,n){return t.rows===t.columns?`${e} with none across`:`${qe(n,t.rows,e)} with no ${Tr(n,t.columns)}`}function ba(e,t,n){return t.rows===t.columns?`${e} with none down`:`${qe(n,t.columns,e)} on no ${Tr(n,t.rows)}`}function xa({nodes:e,label:t,fidelity:n,mode:r,options:a,schema:i,implicated:s=[],flagged:p=[],budget:c,rowsKept:b}){let{store:u}=oe(),w=Aa(),h=(0,Me.useRef)(null),o=Fe(h),[l,C]=(0,Me.useState)(null),g=Pr(_e(u.graph,u.schema,e).filter(k=>k.kind===a.rows||k.kind===a.columns).filter(k=>b===void 0||a.rows===a.columns||k.kind!==a.rows||b.has(k.id)),u.graph.allEdges(),a,i),S=n==="full"?fa(g,c!==void 0?{rows:c,columns:c}:{}):g,A=typeof a.link=="string"?a.link:void 0,L=b!==void 0&&g.cells.length===0&&g.columns.length>0&&(A===void 0||u.graph.allEdges().some(k=>k.kind===A))?void 0:wt(u.schema,a,{rows:g.rows.length,columns:g.columns.length,cells:g.cells.length});if(n==="glyph")return(0,F.jsx)(ke,{label:`${t??"Coverage"} \xB7 ${L?"nothing linked":S.gaps.length===0?"complete":`${S.gaps.length} missing`}`,hue:be("coverage")});if(L)return(0,F.jsx)(me,{title:t??"Coverage",tone:"muted",fit:!0,...r==="fullscreen"?{style:{flex:"1 1 auto",minHeight:0,height:"100%"}}:{},children:(0,F.jsx)("p",{"data-coverage-unlinked":"",style:{margin:0,color:"var(--graview-ink-muted)"},children:L})});if(n==="summary"){let k=S.rows.filter(_=>S.gaps.includes(_.id));return(0,F.jsxs)(me,{title:t??"Coverage",meta:`${S.rows.length-S.gaps.length}/${S.rows.length}`,tone:S.gaps.length>0?"warning":"muted",fit:!0,children:[(0,F.jsx)(Oa,{grid:S}),k.length>0?(0,F.jsx)(ze,{pick:!0,max:4,items:k.map(_=>({id:_.id,label:_.ref||_.label}))}):null]})}let T=new Set(s),v=new Set(p),O=l!==null&&l.every(k=>T.has(k))?l:null,m=r==="fullscreen",E=wa(S.columns.map(k=>k.label)),D=o===null?Rr:Math.max(96,Math.min(Rr,Math.round(o*.36))),G=o!==null&&(o<420||D+S.columns.length*28+Er>o);return(0,F.jsx)(me,{title:t??"Coverage",...m?{style:{flex:"1 1 auto",minHeight:0,height:"100%"}}:{},meta:S.rows.length===0||S.columns.length===0?void 0:S.gaps.length===0&&S.unasked.length===0?"complete":[S.gaps.length>0?va(S.gaps.length,a,u.schema):"",S.unasked.length>0?ba(S.unasked.length,a,u.schema):""].filter(Boolean).join(" \xB7 "),selected:!1,fit:!0,children:(0,F.jsxs)("div",{ref:h,"data-coverage-shape":G?"stacked":"matrix",onClick:k=>C(Lr(k.target)),onKeyDown:k=>{(k.key==="Enter"||k.key===" ")&&C(Lr(k.target))},style:{position:"relative",display:"flex",flexDirection:"column",flex:"1 1 auto",minHeight:0,paddingRight:G?0:Er},children:[G?null:(0,F.jsxs)("div",{style:{display:"flex",alignItems:"flex-end",flex:"0 0 auto",position:"sticky",top:0,zIndex:Te.over,background:"var(--graview-panel)",paddingTop:6},children:[(0,F.jsx)("div",{ref:w.corner,style:{width:D,flex:"0 0 auto",alignSelf:"stretch",position:"sticky",left:0,zIndex:Te.raised,background:"var(--graview-panel)"}}),(0,F.jsx)("div",{ref:w.heads,style:{display:"flex",flex:1,minWidth:0,height:E},children:S.columns.map(k=>(0,F.jsx)("div",{"data-graview-pick":k.id,"data-graview-emphasis":T.size===0?"plain":T.has(k.id)?"lit":"dimmed",title:k.label,"data-graview-column":k.id,style:{flex:1,minWidth:28,boxSizing:"border-box",borderLeft:"1px solid transparent",pointerEvents:"none",position:"relative",display:"flex",alignItems:"flex-end",justifyContent:"center"},children:(0,F.jsxs)("span",{style:{position:"absolute",bottom:3,padding:"3px 0",pointerEvents:"auto",cursor:"pointer",left:"50%",visibility:w.hidden.has(k.id)?"hidden":"visible",transformOrigin:"left bottom",transform:`rotate(-${Zn}deg)`,whiteSpace:"nowrap",maxWidth:et,overflow:"hidden",textOverflow:"ellipsis",fontSize:"0.75rem",letterSpacing:"0.005em",color:k.used?T.size>0&&!T.has(k.id)?"var(--graview-ink-faint)":"var(--graview-ink)":"var(--graview-warn)"},children:[k.used?"":"\u26A0 ",k.label]})},k.id))})]}),S.of?(0,F.jsxs)("p",{"data-testid":"coverage-more",style:{margin:"4px 0 6px",fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:[[S.of.rows>S.rows.length?`the ${S.rows.length} most connected of ${S.of.rows} ${Mr(u.schema,a.rows)}`:null,S.of.columns>S.columns.length?`${S.columns.length} of ${S.of.columns} ${Mr(u.schema,a.columns)} across`:null].filter(Boolean).join(" \xB7 ").replace(/^./,k=>k.toUpperCase())," ","\u2014 what is missing is still counted over all of them."]}):null,(0,F.jsx)("div",{children:S.rows.map((k,_)=>{let W=S.rows[_-1],le=W===void 0||W.group!==k.group,ee=k.required&&!k.covered,ie=T.size>0&&!T.has(k.id);return(0,F.jsxs)("div",{children:[le&&k.group?(0,F.jsx)("div",{style:{fontSize:"0.6875rem",letterSpacing:"0.16em",textTransform:"uppercase",color:"var(--graview-ink-faint)",padding:"9px 0 3px"},children:(0,F.jsx)("span",{style:{position:"sticky",left:0,display:"inline-block",paddingRight:8,background:"var(--graview-panel)"},children:k.group})}):null,(0,F.jsxs)("div",{style:{display:"flex",flexDirection:G?"column":"row",alignItems:"stretch",borderTop:"1px solid var(--graview-edge)",opacity:ie?.72:1},children:[(0,F.jsxs)("div",{"data-graview-pick":k.id,"data-graview-emphasis":T.size===0?"plain":ie?"dimmed":"lit",title:k.label,style:{width:G?"auto":D,flex:"0 0 auto",position:G?"static":"sticky",left:0,zIndex:Te.raised,background:"var(--graview-panel)",display:"flex",alignItems:"center",gap:7,padding:"6px 10px 6px 0",boxSizing:"border-box",fontSize:"0.8125rem",minWidth:0,color:ee||v.has(k.id)?"var(--graview-warn)":"var(--graview-ink)"},children:[k.ref?(0,F.jsx)("span",{style:{flex:"0 0 auto",fontVariantNumeric:"tabular-nums",color:"var(--graview-ink-faint)"},children:k.ref}):null,(0,F.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:k.label}),a.badge?(0,F.jsx)("span",{title:k.badged?a.badge.title:a.badge.missingTitle,style:{marginLeft:"auto",flex:"0 0 auto",fontSize:"0.75rem",color:k.badged?"var(--graview-ink-faint)":"var(--graview-warn)"},children:k.badged?a.badge.symbol:"\u25CB"}):null]}),(0,F.jsx)("div",{style:{display:"flex",flex:1,minWidth:0,...G?{flexWrap:"wrap",gap:6,padding:"0 0 8px"}:{}},children:S.columns.map(N=>{let U=S.cells.find(B=>B.rowId===k.id&&B.columnId===N.id),de=U!==void 0;return(0,F.jsxs)("div",{"data-graview-mark":"",...de?{"data-graview-pick":N.id,"data-graview-emphasis":T.size===0?"plain":T.has(N.id)&&T.has(k.id)?"lit":"dimmed","data-graview-joins":JSON.stringify(Sa(U))}:{},title:de?`${N.label} answers ${k.ref||k.label}`:`${N.label} does not answer ${k.ref||k.label}`,style:G?{flex:"0 0 auto",minHeight:24,boxSizing:"border-box",display:"inline-flex",alignItems:"center",gap:6,padding:"2px 9px 2px 7px",borderRadius:6,border:"1px solid var(--graview-edge)",fontSize:"0.75rem",color:de?"var(--graview-ink)":"var(--graview-ink-faint)"}:{flex:1,minWidth:28,boxSizing:"border-box",display:"flex",alignItems:"center",justifyContent:"center",borderLeft:"1px solid var(--graview-edge)"},children:[(0,F.jsx)("span",{style:$a(de,ee,T.has(N.id)&&T.has(k.id),T.size>0)}),G?(0,F.jsx)("span",{children:N.label}):null]},N.id)})})]})]},k.id)})}),O?(0,F.jsx)(Ca,{box:h,joins:O,shape:`${G?"stacked":"matrix"} ${o??""}`}):null]})})}var Sa=e=>[e.rowId,e.columnId,...e.via??[]];function Lr(e){let t=e?.closest?.("[data-graview-joins]")?.getAttribute("data-graview-joins");if(!t)return null;try{let n=JSON.parse(t);return Array.isArray(n)&&n.every(r=>typeof r=="string")?n:null}catch{return null}}var On=(e,t,n)=>Math.min(n,Math.max(t,e));function ka(e){let t=e.getBoundingClientRect(),n=typeof document.createRange=="function"?document.createRange():null;n?.selectNodeContents(e);let r=typeof n?.getBoundingClientRect=="function"?n.getBoundingClientRect():null;return r&&r.width>0&&r.height>0?r:t}function Ca({box:e,joins:t,shape:n}){let[r,a]=(0,Me.useState)([]),i=JSON.stringify(t);return(0,Me.useLayoutEffect)(()=>{let s=e.current;if(!s||typeof window>"u")return;let p=()=>{let u=s.getBoundingClientRect(),w=s.offsetWidth>0&&u.width>0?u.width/s.offsetWidth:1,h=[...s.querySelectorAll("[data-graview-joins]")].find(C=>C.getAttribute("data-graview-joins")===i);if(!h){a([]);return}let o=h.getBoundingClientRect(),l=[];for(let C of JSON.parse(i)){let g=[...s.querySelectorAll("[data-graview-pick]")].find(O=>O.getAttribute("data-graview-pick")===C&&!O.closest("[data-graview-mark]"));if(!g)continue;let S=ka(g),A=On(o.left+o.width/2,S.left,S.right),L=On(o.top+o.height/2,S.top,S.bottom),T=On(A,o.left,o.right),v=On(L,o.top,o.bottom);l.push({id:C,x1:(T-u.left)/w,y1:(v-u.top)/w,x2:(A-u.left)/w,y2:(L-u.top)/w})}a(l)};p();let c=0,b=()=>{c===0&&(c=requestAnimationFrame(()=>{c=0,p()}))};return document.addEventListener("scroll",b,{capture:!0,passive:!0}),window.addEventListener("resize",b,{passive:!0}),()=>{document.removeEventListener("scroll",b,{capture:!0}),window.removeEventListener("resize",b),c!==0&&cancelAnimationFrame(c)}},[e,i,n]),(0,F.jsx)("svg",{"aria-hidden":"true","data-coverage-join":i,style:{position:"absolute",left:0,top:0,width:"100%",height:"100%",overflow:"visible",pointerEvents:"none",zIndex:Te.over},children:r.map(s=>(0,F.jsxs)("g",{"data-coverage-join-to":s.id,children:[(0,F.jsx)("line",{x1:s.x1,y1:s.y1,x2:s.x2,y2:s.y2,stroke:"var(--graview-accent)",strokeWidth:1.6,strokeLinecap:"round"}),(0,F.jsx)("circle",{cx:s.x2,cy:s.y2,r:2.6,fill:"var(--graview-accent)"})]},s.id))})}function $a(e,t,n,r){return e?{width:13,height:13,borderRadius:4,background:n||!r?"var(--graview-accent)":"var(--graview-accent-dim)",boxShadow:n&&r?"0 0 12px -2px var(--graview-accent)":void 0}:{width:5,height:5,borderRadius:1,background:t?"var(--graview-warn)":"var(--graview-edge)",opacity:t?.5:1}}function Oa({grid:e}){let t=e.rows.filter(a=>a.required),n=t.filter(a=>a.covered).length,r=t.length===0?1:n/t.length;return(0,F.jsx)("div",{role:"img","aria-label":`${n} of ${t.length} covered`,style:{height:6,borderRadius:999,overflow:"hidden",background:"var(--graview-edge)"},children:(0,F.jsx)("div",{style:{width:`${Math.round(r*100)}%`,height:"100%",background:r===1?"var(--graview-accent)":"var(--graview-warn)"}})})}function Nr(e){function t(n){let{store:r}=oe(),a=_e(r.graph,r.schema,n.nodes).filter(c=>c.kind===e.rows),{arranged:i,bar:s}=Ne(n,{lensAllows:{sort:!1,group:!1},subject:a,kind:e.rows,...e.search?{search:e.search}:{},...e.filters?{filters:e.filters}:{}}),p=(0,F.jsx)(xa,{schema:r.schema,...n,options:e,...s?{rowsKept:new Set(i.nodes.map(c=>c.id))}:{}});return s?(0,F.jsxs)("div",{style:{display:"grid",gap:6,height:"100%",minHeight:0,gridTemplateRows:"auto 1fr"},children:[s,p]}):p}return{name:"coverage",requiredRoles:[...ga],options:e,View:t,build(n,r,a){return Pr(n,r,e,a)}}}function Aa(){let e=(0,Me.useRef)(null),t=(0,Me.useRef)(null),[n,r]=(0,Me.useState)(new Set);return(0,Me.useEffect)(()=>{let a=t.current;if(!a||typeof window>"u")return;let i=a.parentElement;for(;i&&!/(auto|scroll)/.test(getComputedStyle(i).overflowX);)i=i.parentElement;if(!i)return;let s=0,p=()=>{s=0;let b=e.current?.getBoundingClientRect().right??0,u=new Set;for(let w of a.querySelectorAll("[data-graview-column]")){let h=w.getBoundingClientRect();h.left+h.width/2<b&&u.add(w.dataset.graviewColumn)}r(w=>w.size===u.size&&[...u].every(h=>w.has(h))?w:u)},c=()=>{s===0&&(s=requestAnimationFrame(p))};return p(),i.addEventListener("scroll",c,{passive:!0}),()=>{i.removeEventListener("scroll",c),s!==0&&cancelAnimationFrame(s)}},[]),{corner:e,heads:t,hidden:n}}var zr=["regions","outline"],Je=class extends Error{constructor(n,r){super(`${n}
32
32
  ${r}`);this.hint=r;this.name="PlanBindingError"}},An='Check the lens bindings: { regions: "<kind>", outline: "<field>", markers?: "<kind>", at?: "<field>", within?: "<edge>" }',Dr=e=>typeof e=="object"&&e!==null&&typeof e.x=="number"&&typeof e.y=="number";function Rn(e,t,n,r){let a=g=>g,i=g=>r?xe(r.tryDefinition(g.kind),g):String(a(g).label??g.id);if(r&&r.tryDefinition(n.regions)===void 0)throw new Je(`No kind is declared for "${n.regions}".`,An);if(n.markers&&r&&r.tryDefinition(n.markers)===void 0)throw new Je(`No kind is declared for "${n.markers}".`,An);let s=e.filter(g=>g.kind===n.regions);if(!r&&s.length===0)throw new Je(`Nothing to draw: no "${n.regions}" nodes.`,An);let c=r?.tryDefinition(n.regions)?.fields?.shape;if(c!==void 0&&!(n.outline in c))throw new Je(`"${n.regions}" has no field called "${n.outline}".`,An);let b=(()=>{let g=new Map;if(n.nests)for(let S of t)S.kind===n.nests&&g.set(S.from,S.to);return S=>{let A=0,L=g.get(S),T=new Set([S]);for(;L!==void 0&&!T.has(L)&&A<s.length;)T.add(L),A+=1,L=g.get(L);return A}})(),u=n.markers?e.filter(g=>g.kind===n.markers):[],w=new Map;if(n.within)for(let g of t)g.kind===n.within&&w.set(g.from,g.to);let h=[],o=new Map;for(let g of u){let S=n.at===void 0?void 0:a(g)[n.at],A=w.get(g.id);if(!Dr(S)||A===void 0){h.push({id:g.id,label:i(g)});continue}let L=n.markerKind===void 0?void 0:a(g)[n.markerKind],T=o.get(A)??[];T.push({id:g.id,label:i(g),at:S,...typeof L=="string"?{what:L}:{}}),o.set(A,T)}let l=[],C=[];for(let g of s){let S=a(g)[n.outline];if(!Array.isArray(S)||S.length<3||!S.every(Dr)){l.push({id:g.id,label:i(g)});continue}let A=n.regionKind===void 0?void 0:a(g)[n.regionKind];C.push({id:g.id,label:i(g),outline:S,center:Bt(S),depth:b(g.id),markers:o.get(g.id)??[],...typeof A=="string"?{what:A}:{}})}return C.sort((g,S)=>g.depth-S.depth),{regions:C,undrawn:l,strays:h}}var He=q(Ee(),1);var I=q(te(),1);function Ir({map:e,options:t,implicated:n,flagged:r}){return(0,I.jsxs)("ul",{style:{margin:0,padding:0,listStyle:"none",display:"grid",gap:".25rem"},children:[e.regions.map(a=>{let i=En(a.id,n,r);return(0,I.jsxs)("li",{"data-graview-pick":a.id,...i?{"data-graview-emphasis":i}:{},style:{display:"flex",flexWrap:"wrap",gap:".5rem",justifyContent:"space-between",minWidth:0,padding:".25rem .4rem",borderRadius:".35rem",background:i==="flagged"?tt(a.what,i,t.hues):void 0},children:[(0,I.jsx)("span",{style:{minWidth:0,overflowWrap:"anywhere"},children:a.label}),(0,I.jsxs)("span",{style:{opacity:.7,whiteSpace:"nowrap"},children:[a.what?`${a.what} \xB7 `:"",a.markers.length]})]},a.id)}),e.undrawn.map(a=>(0,I.jsxs)("li",{"data-graview-pick":a.id,style:{display:"flex",gap:".5rem",opacity:.7,padding:".25rem .4rem"},children:[(0,I.jsx)("span",{style:{minWidth:0,overflowWrap:"anywhere"},children:a.label}),(0,I.jsx)("span",{style:{whiteSpace:"nowrap"},children:t.undrawnLabel??"not drawn"})]},a.id))]})}var nt=1e3,Br=.022,sn={minHeight:"1.9rem",padding:".25rem .65rem",borderRadius:".35rem",border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",color:"var(--graview-ink)",font:"inherit",fontSize:"0.9375rem",cursor:"pointer"},En=(e,t,n)=>{if(n?.includes(e))return"flagged";if(t?.includes(e))return"implicated"},Mn=(e,t)=>(e===void 0?void 0:t?.[e])??be(e??"region"),tt=(e,t,n)=>t==="flagged"?"color-mix(in oklab, var(--graview-warn) 26%, var(--graview-panel))":`color-mix(in oklab, hsl(${Mn(e,n)} 52% 48%) 24%, var(--graview-panel))`,Wr=(e,t,n)=>t==="flagged"?"var(--graview-warn)":`color-mix(in oklab, hsl(${Mn(e,n)} 48% 42%) 78%, var(--graview-ink))`;function Ra(e){let t=e.currentTarget.getBoundingClientRect(),n=r=>Math.round(Math.max(0,Math.min(1,r))*1e3)/1e3;return{x:n(t.width===0?0:(e.clientX-t.left)/t.width),y:n(t.height===0?0:(e.clientY-t.top)/t.height)}}function Hr({schema:e,options:t,nodes:n,label:r,fidelity:a,selected:i,implicated:s,flagged:p}){let{store:c}=oe(),b=c.graph.allEdges(),u=c.graph.allNodes(),w=n===void 0?void 0:new Set(n.map(f=>f.id)),h=w===void 0?u:u.filter(f=>f.kind!==t.regions||w.has(f.id)),o=Rn(h,b,t,e),l=o.regions.length,C=o.regions.reduce((f,$)=>f+$.markers.length,0);if(a==="glyph")return(0,I.jsx)(ke,{label:`${r??"Ground"} \xB7 ${l}`,...o.undrawn.length>0?{meta:`+${o.undrawn.length} undrawn`}:{},selected:i});if(a==="summary")return(0,I.jsx)(me,{title:r??"The plan",subtitle:`${l} drawn \xB7 ${C} standing in them`,children:(0,I.jsx)(Ir,{map:o,options:t,...s?{implicated:s}:{},...p?{flagged:p}:{}})});let g=(0,He.useMemo)(()=>{let f=1/0,$=1/0,P=-1/0,ne=-1/0,H=J=>{J.x<f&&(f=J.x),J.x>P&&(P=J.x),J.y<$&&($=J.y),J.y>ne&&(ne=J.y)};for(let J of o.regions){for(let Y of J.outline)H(Y);for(let Y of J.markers)H(Y.at)}if(!Number.isFinite(f)||P-f<=0||ne-$<=0)return{x0:0,y0:0,x1:1,y1:1};let K=Math.max(P-f,ne-$)*.04;return{x0:f-K,y0:$-K,x1:P+K,y1:ne+K}},[o.regions]),S=(g.x1-g.x0)/(g.y1-g.y0),A=t.aspect??Math.min(3.2,Math.max(.55,S)),L=Math.round(nt/(g.x1-g.x0)),T=Math.round(L*(g.x1-g.x0)),v=Math.round(T/A),O={x:g.x0*L,y:g.y0*L-(v-L*(g.y1-g.y0))/2,w:T,h:v},m=L,E=O.w,D=(s?.length??0)>0||(p?.length??0)>0,G=(0,He.useRef)(null),{touchable:k,legible:_}=Et(G,{units:O.w,target:E*Br*2}),W=Wn("--graview-font-display","serif"),le=Wn("--graview-font-body","sans-serif"),{named:ee,placed:ie,tagged:N}=(0,He.useMemo)(()=>{let f=[],$=E*.012,P=nt*.004,ne=(pe,X)=>!f.some(he=>he!==X&&Ht({x0:pe.x0-P,y0:pe.y0-P,x1:pe.x1+P,y1:pe.y1+P},he)),H=[...o.regions].sort((pe,X)=>Vn(X.outline)-Vn(pe.outline)),K=new Map,J=new Map;for(let pe of H){let X=It(pe.outline),he=Math.max(0,(X.bottom-X.top)*m*.55),Ce=null;for(let $e of[.12,.26,.42,.6,.78]){let V=X.top+$e*(X.bottom-X.top),ge=Hn(pe.outline,V),Se=Math.max(0,(ge.x1-ge.x0)*L-$*2),ce=Wt(pe.label,{room:Se,height:he,size:E*.023,floor:E*.015,measure:W});if(ce===null)continue;let ve=Math.max(...ce.lines.map(Jr=>W(Jr,ce.fontSize))),Oe=ce.lines.length*ce.fontSize*1.15,at=X.top*m+$+Oe/2,it=X.bottom*m-$-Oe/2,dn=it<at?(X.top+X.bottom)*m/2:Math.min(Math.max(V*m,at),it),Ln=Hn(pe.outline,dn/m),Pn=Ln.x0*L+$;if(ve>(Ln.x1-Ln.x0)*L-$*2)continue;let ot={x0:Pn,y0:dn-Oe/2,x1:Pn+ve,y1:dn+Oe/2};if(ne(ot)){f.push(ot),Ce={fitted:ce,x:Pn,y:dn};break}}K.set(pe.id,Ce?.fitted??null),Ce!==null&&J.set(pe.id,{x:Ce.x,y:Ce.y})}let Y=E*.018,ue=new Map,Q=E*.011+E*.004,Ve=new Map;for(let pe of o.regions)for(let X of pe.markers){let he={x0:X.at.x*L-Q,y0:X.at.y*m-Q,x1:X.at.x*L+Q,y1:X.at.y*m+Q};Ve.set(X.id,he),f.push(he)}for(let pe of k?o.regions:[])for(let X of pe.markers){let he=E*.018,Ce=le(X.label,Y),$e=X.at.x*L,V=X.at.y*m,ge=Y*1.15,Se=[{x:$e+he,y:V,anchor:"start"},{x:$e-he,y:V,anchor:"end"},{x:$e+he*.7,y:V-ge,anchor:"start"},{x:$e-he*.7,y:V-ge,anchor:"end"},{x:$e+he*.7,y:V+ge,anchor:"start"},{x:$e-he*.7,y:V+ge,anchor:"end"},{x:$e,y:V-ge*1.1,anchor:"start"},{x:$e,y:V+ge*1.1,anchor:"start"}];for(let ce of Se){let ve=ce.anchor==="start"?ce.x:ce.x-Ce,Oe={x0:ve,y0:ce.y-Y*.62,x1:ve+Ce,y1:ce.y+Y*.62};if(!(ve<O.x+4||ve+Ce>O.x+O.w-4)&&!(Oe.y0<O.y+2||Oe.y1>O.y+O.h-2)&&ne(Oe,Ve.get(X.id))){f.push(Oe),ue.set(X.id,{at:{x:ce.x,y:ce.y},anchor:ce.anchor,size:Y});break}}}return{named:K,placed:J,tagged:ue}},[o.regions,nt,m,k,W,le]),U=(0,He.useMemo)(()=>{let f=[];for(let $ of o.regions)(ee.get($.id)?.whole??!1)===!1&&f.push({id:$.id,label:$.label,what:$.what,round:!1});for(let $ of o.regions)for(let P of $.markers)(!k||!N.has(P.id))&&f.push({id:P.id,label:P.label,what:P.what,round:!0});return f},[o.regions,ee,N,k]),{principal:de}=oe(),[B,we]=(0,He.useState)(null),M=t.draw!==void 0,d=t.place!==void 0,y=f=>{if(B===null)return;f.stopPropagation();let $=Ra(f);if(B.kind==="marker"){c.apply({name:t.place.act,args:{[t.place.id]:B.id,[t.place.at]:$}},{author:de,intent:`Placed ${B.label} on the map`}),we(null);return}we({...B,corners:[...B.corners,$]})},x=()=>{B===null||B.kind!=="region"||B.corners.length<3||(c.apply({name:t.draw.act,args:{[t.draw.id]:B.id,[t.draw.outline]:B.corners}},{author:de,intent:`Drew ${B.label} on the map \u2014 ${B.corners.length} corners`}),we(null))},R=B===null?o.regions.length===0?"Nothing drawn yet. Choose an area below, then click its corners here.":null:B.kind==="marker"?`Click where ${B.label} stands.`:B.corners.length<3?`Click the corners of ${B.label} \u2014 ${3-B.corners.length} more to make an area.`:`${B.corners.length} corners. Keep clicking, or press Done.`;return _?(0,I.jsxs)(me,{title:r??"The plan",subtitle:`${l} drawn \xB7 ${C} standing in them`,...o.undrawn.length>0?{meta:`${o.undrawn.length} ${t.undrawnLabel??"not drawn yet"}`}:{},selected:i,fit:!0,children:[(0,I.jsx)("div",{style:{position:"relative",width:"100%",aspectRatio:`${O.w} / ${O.h}`,overflow:"hidden"},children:(0,I.jsxs)("svg",{ref:G,viewBox:`${O.x} ${O.y} ${O.w} ${O.h}`,width:"100%",height:"100%",preserveAspectRatio:"xMidYMid meet",role:B!==null?"application":k?"group":"img","aria-label":B===null?`${r??"The plan"}: ${l} drawn, ${C} standing in them`:R??"Drawing",onClick:y,"data-testid":"plan-canvas",style:{display:"block",position:"absolute",inset:0,cursor:B===null?void 0:"crosshair",border:"1px dashed color-mix(in oklab, var(--graview-edge) 80%, transparent)",borderRadius:".4rem",backgroundImage:"linear-gradient(color-mix(in oklab, var(--graview-edge) 35%, transparent) 1px, transparent 1px),linear-gradient(90deg, color-mix(in oklab, var(--graview-edge) 35%, transparent) 1px, transparent 1px)",backgroundSize:"10% 10%"},children:[(0,I.jsx)("text",{x:O.x+O.w-E*.028,y:O.y+E*.034,fontSize:E*.022,textAnchor:"middle",fill:"var(--graview-ink)",opacity:.55,children:"N"}),R!==null&&o.regions.length===0?(0,I.jsx)("text",{x:O.x+O.w/2,y:O.y+O.h/2,textAnchor:"middle",dominantBaseline:"middle",fontSize:E*.026,fill:"var(--graview-ink)",opacity:.7,style:{pointerEvents:"none",fontFamily:"var(--graview-font-body)"},children:R}):null,B!==null&&B.kind==="region"&&B.corners.length>0?(0,I.jsxs)("g",{style:{pointerEvents:"none"},children:[(0,I.jsx)("polyline",{points:B.corners.map(f=>`${f.x*L},${f.y*m}`).join(" "),fill:B.corners.length>=3?"color-mix(in oklab, var(--graview-accent) 22%, transparent)":"none",stroke:"var(--graview-accent)",strokeWidth:3,strokeDasharray:"8 6"}),B.corners.map((f,$)=>(0,I.jsx)("circle",{cx:f.x*L,cy:f.y*m,r:E*.008,fill:"var(--graview-accent)"},$))]}):null,o.regions.map(f=>{let $=En(f.id,s,p),P=D&&$===void 0?.34:1,ne=f.outline.map(H=>`${H.x*L},${H.y*m}`).join(" ");return(0,I.jsx)("g",{"data-graview-pick":f.id,...$?{"data-graview-emphasis":$}:{},role:"button","aria-label":`${f.label}${f.what?`, ${f.what}`:""}, ${f.markers.length} standing in it`,style:{opacity:P,cursor:"pointer"},children:(0,I.jsx)("polygon",{points:ne,fill:tt(f.what,$,t.hues),stroke:Wr(f.what,$,t.hues),strokeWidth:$==="flagged"?5:2.5,strokeLinejoin:"round"})},f.id)}),o.regions.flatMap(f=>f.markers.map($=>{let P=En($.id,s,p),ne=D&&P===void 0?.34:1;return(0,I.jsxs)("g",{...k?{"data-graview-pick":$.id,role:"button","aria-label":`${$.label}${$.what?`, ${$.what}`:""}, in ${f.label}`}:{"aria-hidden":!0},...P?{"data-graview-emphasis":P}:{},style:{opacity:ne,cursor:k?"pointer":"default"},children:[k?(0,I.jsx)("circle",{cx:$.at.x*L,cy:$.at.y*m,r:E*Br,fill:"transparent"}):null,(0,I.jsx)("circle",{cx:$.at.x*L,cy:$.at.y*m,r:E*.011,fill:P==="flagged"?"var(--graview-warn)":`hsl(${Mn($.what,t.hues)} 55% 45%)`,stroke:"var(--graview-panel)",strokeWidth:E*.004}),N.has($.id)?(0,I.jsx)("text",{x:N.get($.id).at.x,y:N.get($.id).at.y,textAnchor:N.get($.id).anchor,dominantBaseline:"middle",fontSize:N.get($.id).size,fill:"var(--graview-ink)",stroke:"var(--graview-panel)",strokeWidth:Math.max(2,N.get($.id).size*.3),paintOrder:"stroke","data-testid":`marker-label-${$.id}`,style:{pointerEvents:"none",fontFamily:"var(--graview-font-body)"},children:$.label}):null]},$.id)})),o.regions.map(f=>{let $=ee.get(f.id),P=ie.get(f.id);if(!$||P===void 0)return null;let ne=En(f.id,s,p);return(0,I.jsx)("text",{x:P.x,y:P.y-($.lines.length-1)*$.fontSize*1.15/2,textAnchor:"start",dominantBaseline:"middle",fontSize:$.fontSize,fill:"var(--graview-ink)",opacity:D&&ne===void 0?.34:1,stroke:"var(--graview-panel)",strokeWidth:Math.max(2,$.fontSize*.26),paintOrder:"stroke","data-testid":`region-label-${f.id}`,style:{pointerEvents:"none",fontFamily:"var(--graview-font-display)"},children:$.lines.map((H,K)=>(0,I.jsx)("tspan",{x:P.x,dy:K===0?0:$.fontSize*1.15,children:H},H+String(K)))},`label-${f.id}`)})]})}),U.length>0?(0,I.jsx)("ul",{"data-testid":"map-key",style:{margin:".5rem 0 0",padding:0,listStyle:"none",display:"flex",flexWrap:"wrap",gap:".2rem .75rem",fontSize:"0.875rem"},children:U.map(f=>(0,I.jsxs)("li",{"data-graview-pick":f.id,style:{display:"flex",alignItems:"center",gap:".35rem",minWidth:0,minHeight:"max(1.5rem, 24px)",padding:"0 .15rem",cursor:"pointer"},children:[(0,I.jsx)("span",{"aria-hidden":"true",style:{width:f.round?".55rem":".7rem",height:f.round?".55rem":".7rem",flex:"0 0 auto",borderRadius:f.round?"50%":".15rem",background:f.round?`hsl(${Mn(f.what,t.hues)} 55% 45%)`:tt(f.what,void 0,t.hues),border:f.round?void 0:`1px solid ${Wr(f.what,void 0,t.hues)}`}}),(0,I.jsx)("span",{style:{minWidth:0,overflowWrap:"anywhere"},children:f.label})]},f.id))}):null,B!==null?(0,I.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:".5rem",marginTop:".5rem",alignItems:"center"},children:[o.regions.length>0&&R!==null?(0,I.jsx)("span",{style:{fontSize:"0.9375rem",opacity:.8,flexBasis:"100%"},"aria-live":"polite",children:R}):null,B.kind==="region"?(0,I.jsxs)("button",{type:"button",onClick:x,disabled:B.corners.length<3,"data-testid":"draw-done",style:{...sn,background:"var(--graview-accent)",color:"var(--graview-accent-ink)",borderColor:"transparent"},children:["Done \u2014 keep ",B.label]}):null,B.kind==="region"&&B.corners.length>0?(0,I.jsx)("button",{type:"button",onClick:()=>we({...B,corners:B.corners.slice(0,-1)}),style:sn,children:"Undo a corner"}):null,(0,I.jsx)("button",{type:"button",onClick:()=>we(null),style:sn,"data-testid":"draw-cancel",children:"Stop"})]}):(0,I.jsxs)(I.Fragment,{children:[M&&o.undrawn.length>0?(0,I.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:".4rem",marginTop:".5rem",alignItems:"center"},children:[(0,I.jsxs)("span",{style:{fontSize:"0.875rem",opacity:.75},children:[t.undrawnLabel??"Not drawn yet",":"]}),o.undrawn.map(f=>(0,I.jsxs)("button",{type:"button",style:sn,onClick:()=>we({kind:"region",id:f.id,label:f.label,corners:[]}),"data-testid":`draw-${f.id}`,children:["Draw ",f.label]},f.id))]}):null,d&&o.strays.length>0?(0,I.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:".4rem",marginTop:".5rem",alignItems:"center"},children:[(0,I.jsxs)("span",{style:{fontSize:"0.875rem",opacity:.75},children:[t.strayLabel??"Not placed",":"]}),o.strays.map(f=>(0,I.jsxs)("button",{type:"button",style:sn,onClick:()=>we({kind:"marker",id:f.id,label:f.label}),"data-testid":`place-${f.id}`,children:["Place ",f.label]},f.id))]}):null,t.help!==void 0&&(o.undrawn.length>0||o.strays.length>0)?(0,I.jsx)("p",{style:{margin:".5rem 0 0",fontSize:"0.875rem"},children:(0,I.jsx)("a",{href:t.help.href,"data-testid":"map-help",children:t.help.label})}):null,!M&&(o.undrawn.length>0||o.strays.length>0)?(0,I.jsxs)("p",{style:{margin:".5rem 0 0",fontSize:"0.875rem",opacity:.75},children:[o.undrawn.map(f=>f.label).join(", "),o.undrawn.length>0?` \u2014 ${t.undrawnLabel??"not drawn yet"}. `:"",o.strays.map(f=>f.label).join(", "),o.strays.length>0?` \u2014 ${t.strayLabel??"not placed"}.`:""]}):null]})]}):(0,I.jsx)(me,{title:r??"The plan",subtitle:`${l} drawn \xB7 ${C} standing in them`,selected:i,children:(0,I.jsx)(Ir,{map:o,options:t,...s?{implicated:s}:{},...p?{flagged:p}:{}})})}var Gr=q(te(),1);function Vr(e){function t(n){let{store:r}=oe();return(0,Gr.jsx)(Hr,{schema:r.schema,...n,options:e})}return{name:"plan",requiredRoles:[...zr],options:e,View:t,build(n,r,a){return Rn(n,r,e,a)}}}var fe=q(te(),1);function Ea(e,t,n){let r=t.flatMap(i=>(i.subject&&i.subject.kinds!=="*"?i.subject.kinds:[null]).map(p=>({name:i.name,title:i.title??i.name,kind:p}))),a=[];for(let i of n){let s={kind:"human",id:"themselves",roles:[i]};for(let p of r){let c=p.kind??void 0,b=Dn(e,s,p.name,c).ok,u=!b&&Dn(e,s,p.name,c,void 0,"themselves").ok;a.push({role:i,act:p.name,kind:p.kind,may:b?"yes":u?"self":"no"})}}return{roles:n,acts:r,cells:a}}function Ma({label:e,fidelity:t,mode:n}){let{store:r}=oe(),a=r.policy,i=a?.roles??[],s=r.allMutations().filter(w=>!w.derived).map(w=>({name:w.name,...w.title?{title:w.title}:{},...w.subject?{subject:w.subject}:{}})),p=Ea(a,s,i),c=e??"Who may do what";if(!a||i.length===0)return(0,fe.jsxs)("div",{"data-testid":"reach-lens",style:{padding:14,color:"var(--graview-ink-muted)",fontSize:"0.875rem"},children:[c,": this installation has no policy, so everyone may do everything."]});if(t==="glyph")return(0,fe.jsx)(ke,{label:`${c} \xB7 ${i.length} ${i.length===1?"role":"roles"}`,hue:be("role")});let b=n==="fullscreen",u=w=>w==="yes"?"\u25CF":w==="self"?"\u25D0":"\xB7";return(0,fe.jsxs)("div",{"data-testid":"reach-lens",style:{display:"grid",gap:10,padding:b?0:14,borderRadius:"var(--graview-radius, 12px)",background:b?"transparent":"var(--graview-panel)",border:b?"none":"1px solid var(--graview-edge)",color:"var(--graview-ink)",minWidth:0},children:[(0,fe.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:10},children:[(0,fe.jsx)("span",{style:{fontFamily:"var(--graview-font-display)",fontSize:"1.125rem",fontWeight:600},children:c}),(0,fe.jsx)("span",{style:{marginLeft:"auto",fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:"\u25CF may \xB7 \u25D0 on their own record \xB7 read from the policy"})]}),(0,fe.jsx)("div",{"data-scroller":!0,style:{overflowX:"auto"},children:(0,fe.jsxs)("table",{style:{borderCollapse:"collapse",fontSize:"0.875rem",minWidth:"100%"},children:[(0,fe.jsx)("thead",{children:(0,fe.jsxs)("tr",{children:[(0,fe.jsx)("th",{scope:"col",style:{textAlign:"left",padding:"4px 10px 6px 0",fontWeight:500,color:"var(--graview-ink-faint)",fontSize:"0.75rem",letterSpacing:"0.12em",textTransform:"uppercase"},children:"Role"}),p.acts.map(w=>(0,fe.jsxs)("th",{scope:"col",title:w.kind?`${w.title}, on ${gt(mn(r.schema.tryDefinition(w.kind),w.kind))}`:w.title,style:{textAlign:"left",padding:"4px 10px 6px",fontWeight:500,whiteSpace:"nowrap",color:"var(--graview-ink-muted)",fontSize:"0.8125rem"},children:[w.title,w.kind?(0,fe.jsxs)("span",{style:{color:"var(--graview-ink-faint)"},children:[" \xB7 ",w.kind]}):null]},`${w.name}|${w.kind??""}`))]})}),(0,fe.jsx)("tbody",{children:p.roles.map(w=>(0,fe.jsxs)("tr",{children:[(0,fe.jsx)("th",{scope:"row",style:{textAlign:"left",padding:"6px 10px 6px 0",fontWeight:600,whiteSpace:"nowrap",borderTop:"1px solid var(--graview-edge)"},children:w}),p.acts.map(h=>{let o=p.cells.find(l=>l.role===w&&l.act===h.name&&l.kind===h.kind);return(0,fe.jsx)("td",{"data-graview-reach":o.may,title:`${w} ${o.may==="yes"?"may":o.may==="self"?"may, on their own record,":"may not"} ${h.title.toLowerCase()}`,style:{padding:"6px 10px",textAlign:"center",borderTop:"1px solid var(--graview-edge)",color:o.may==="no"?"var(--graview-ink-faint)":"var(--graview-accent)",fontSize:o.may==="no"?"0.875rem":"0.8125rem"},children:u(o.may)},`${h.name}|${h.kind??""}`)})]},w))})]})})]})}var jr={name:"reach",requiredRoles:[],View:Ma};var Le=q(Ee(),1);var se=q(te(),1),Fr=["start","end"];function La(e,t,{pad:n=45,minimum:r=480}={}){if(e.length===0)return{start:0,end:t};let a=Math.min(...e.map(b=>b.start)),i=Math.max(...e.map(b=>b.end)),s=Math.max(0,a-n),p=Math.min(t,i+n),c=r-(p-s);return c>0&&(s=Math.max(0,s-c/2),p=Math.min(t,s+r)),{start:Math.floor(s),end:Math.ceil(p)}}function Pa(e){let t=[...e].sort((i,s)=>i.start-s.start||i.end-s.end||i.id.localeCompare(s.id)),n=[],r=t.map(i=>{let s=n.findIndex(p=>p<=i.start);return s===-1?(s=n.length,n.push(i.end)):n[s]=i.end,{...i,lane:s,lanes:1}}),a=Math.max(1,n.length);return r.map(i=>({...i,lanes:a}))}var rt=class extends Error{constructor(t,n){super(`The timeline lens needs ${n.join(" and ")} for "${t}". Add them to the lens bindings: { ${t}: { ${n.map(r=>`${r}: "<field name>"`).join(", ")} } }.`),this.name="TimelineBindingError"}};function _r(e,t,n){let r=We(t[e.kind],n?.tryDefinition(e.kind));if(!r)return null;let a=e,i=n?.tryDefinition(e.kind)?.fields.shape,s=Fr.filter(u=>{let w=r[u];return w?i?!(w in i):!(w in a):!0});if(s.length>0)throw new rt(e.kind,s);let p=Number(a[r.start]??Number.NaN),c=Number(a[r.end]??p);if(!Number.isFinite(p))return null;let b=[];if(r.columns){let u=a[r.columns];Array.isArray(u)&&b.push(...u.map(String))}if(r.column){let u=a[r.column];u!=null&&b.push(String(u))}return{id:e.id,kind:e.kind,label:xe(n?.tryDefinition(e.kind),e),columnIds:b,start:p,end:Number.isFinite(c)?Math.max(c,p):p}}function Ta(e,t){let n=Math.round(t),r=a=>`linear-gradient(hsl(${n} 55% var(--graview-tint-lightness) / ${a}), hsl(${n} 55% var(--graview-tint-lightness) / ${a})), var(--graview-panel)`;return e==="lit"?{border:"1px solid var(--graview-accent)",background:r("calc(var(--graview-tint-alpha) * 1.15)"),color:"var(--graview-ink)",boxShadow:"0 0 16px -4px var(--graview-accent)"}:e==="dimmed"?{border:"1px solid var(--graview-edge)",background:r("calc(var(--graview-tint-alpha) * 0.25)"),color:"var(--graview-ink-muted)"}:{border:`1px solid hsl(${n} 50% var(--graview-tint-lightness) / 0.42)`,background:r("var(--graview-tint-alpha)"),color:"var(--graview-ink)"}}var Na=.045,ln=52,Kr=4,Da=44,za=240;function Ia({nodes:e,label:t,fidelity:n,mode:r,options:a,schema:i,selectedIds:s=[],implicated:p=[],flagged:c=[]}){let b=new Set([...p,...s]),u=v=>b.size===0?"plain":b.has(v)?"lit":"dimmed",w=new Set(c),h=(e??[]).map(v=>_r(v,a.bindings,i)).filter(v=>v!==null),o=a.hueOf??(v=>be(v.kind));if(n==="glyph")return(0,se.jsx)(ke,{label:`${t??"Timeline"} \xB7 ${h.length}`,hue:be("timeline")});if(n==="summary")return(0,se.jsx)(me,{title:t??"Timeline",meta:`${h.length} items`,tone:"muted",children:(0,se.jsx)(ze,{max:a.columns.length,items:a.columns.map(v=>({id:v.id,label:`${v.label} ${h.filter(O=>O.columnIds.includes(v.id)).length}`,hue:be(v.id)}))})});let l=a.format??String,C=La(h,a.extent,{...a.minWindow===void 0?{}:{minimum:a.minWindow}}),g=C.end-C.start,S=v=>(v-C.start)/g*100,A=a.tick??Math.max(60,Math.round(g/8/60)*60),L=[];for(let v=Math.ceil(C.start/A)*A;v<=C.end;v+=A)L.push(v);let T=r==="fullscreen";return(0,se.jsx)(me,{title:t??"Timeline",meta:`${l(C.start)} \u2013 ${l(C.end)}`,style:{gap:12,...T?{flex:"1 1 auto",minHeight:0,height:"100%"}:{}},children:(0,se.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",minHeight:0},children:[(0,se.jsx)(Ha,{columns:a.columns}),(0,se.jsxs)("div",{"data-graview-timeline-grid":"",style:{position:"relative",flex:1,minHeight:Math.max(za,Math.ceil(g/A)*Da)},children:[L.map((v,O)=>(0,se.jsx)("div",{style:{position:"absolute",left:ln-8,right:0,top:O===L.length-1?"calc(100% - 1px)":`${S(v)}%`,height:1,background:"var(--graview-edge)"},children:(0,se.jsx)("span",{style:{position:"absolute",left:-(ln-8),...O===L.length-1?{bottom:2}:{top:-7},width:ln-16,textAlign:"right",fontSize:"0.75rem",letterSpacing:"0.06em",color:"var(--graview-ink-faint)"},children:l(v)})},v)),(0,se.jsx)("div",{style:{position:"absolute",inset:0,left:ln,display:"flex",gap:Kr},children:a.columns.map(v=>(0,se.jsx)(Va,{spans:h.filter(O=>O.columnIds.includes(v.id)),window:C,format:l,hue:o,emphasisOf:u,brokenIds:w},v.id))})]})]})})}function Ba(){let e=(0,Le.useRef)(null),[t,n]=(0,Le.useState)(new Set);return(0,Le.useLayoutEffect)(()=>{let r=e.current;if(!r)return;let a=[...r.querySelectorAll("[data-graview-span-name]")].filter(i=>i.scrollWidth>i.clientWidth+.5).map(i=>i.getAttribute("data-graview-span-name")).filter(i=>!t.has(i));a.length>0&&n(new Set([...t,...a]))}),(0,Le.useLayoutEffect)(()=>{let r=e.current;if(!r||typeof ResizeObserver>"u")return;let a=Math.round(r.clientWidth),i=new ResizeObserver(()=>{let s=Math.round(r.clientWidth);s!==a&&(a=s,n(new Set))});return i.observe(r),()=>i.disconnect()},[]),{column:e,oneLine:t}}var Wa=(e,t)=>t===0?e:e.slice(0,t),qr=[0,3,1];function Ha({columns:e}){let t=(0,Le.useRef)(null),[n,r]=(0,Le.useState)(0);(0,Le.useLayoutEffect)(()=>{let i=t.current;if(!i)return;[...i.children].some(p=>p.scrollWidth>p.clientWidth+.5)&&n<qr.length-1&&r(n+1)}),(0,Le.useLayoutEffect)(()=>{let i=t.current;if(!i||typeof ResizeObserver>"u")return;let s=i.clientWidth,p=new ResizeObserver(()=>{i.clientWidth!==s&&(s=i.clientWidth,r(0))});return p.observe(i),()=>p.disconnect()},[]);let a=qr[n];return(0,se.jsx)("div",{ref:t,style:{display:"flex",gap:Kr,paddingLeft:ln,paddingBottom:10},children:e.map(i=>{let s=Wa(i.label,a);return(0,se.jsx)("div",{"data-graview-day-head":i.id,title:s===i.label?void 0:i.label,...s===i.label?{}:{"aria-label":i.label},style:{flex:1,minWidth:0,overflow:"hidden",whiteSpace:"nowrap",fontSize:"0.75rem",letterSpacing:a===1?0:"0.18em",textTransform:"uppercase",textAlign:"center",color:"var(--graview-ink-muted)"},children:s},i.id)})})}function Va({spans:e,window:t,format:n,hue:r,emphasisOf:a,brokenIds:i}){let s=t.end-t.start,p=o=>(o-t.start)/s*100,c=o=>(o.end-o.start)/s<Na,b=Pa(e.filter(o=>!c(o))),u=[...e.filter(c)].sort((o,l)=>o.start-l.start),w=Math.max(1,...b.map(o=>o.lanes)),h=Ba();return(0,se.jsxs)("div",{ref:h.column,"data-graview-day-column":"",style:{position:"relative",flex:1,minWidth:0},children:[b.map(o=>{let l=100/w,C=Math.max(1.6,p(o.end)-p(o.start));return(0,se.jsx)("div",{"data-graview-span":o.id,"data-graview-pick":o.id,"data-graview-emphasis":a(o.id),"data-graview-flagged":i.has(o.id)?"":void 0,title:`${o.label} \xB7 ${n(o.start)}\u2013${n(o.end)}`,style:{position:"absolute",top:`${p(o.start)}%`,height:`${C}%`,left:`${o.lane*l}%`,width:`${l}%`,padding:"0 2px 2px 0",boxSizing:"border-box"},children:(0,se.jsx)("div",{"data-graview-span-name":o.id,style:{height:"100%",minHeight:15,borderRadius:6,padding:"3px 6px",fontSize:"0.75rem",lineHeight:1.25,overflow:"hidden",overflowWrap:"normal",wordBreak:"normal",...h.oneLine.has(o.id)?{display:"block",whiteSpace:"nowrap",textOverflow:"ellipsis"}:{display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical"},...Ta(a(o.id),r(o)),...i.has(o.id)?{borderLeft:"3px solid var(--graview-warn)",paddingLeft:4}:{}},children:C>=3.4?o.label:null})},o.id)}),u.map(o=>{let l=a(o.id);return(0,se.jsxs)("div",{"data-graview-span":o.id,"data-graview-pick":o.id,"data-graview-emphasis":l,"data-graview-moment":"",title:`${o.label} \xB7 ${n(o.start)}`,style:{position:"absolute",top:`${p(o.start)}%`,right:0,maxWidth:"100%",boxSizing:"border-box",transform:"translateY(-50%)",display:"flex",alignItems:"center",justifyContent:"flex-end",gap:5,minHeight:24,padding:"0 4px 0 8px",borderRadius:999,background:"linear-gradient(90deg, transparent, var(--graview-ground) 35%)"},children:[(0,se.jsx)("span",{style:{fontSize:"0.6875rem",letterSpacing:"0.04em",whiteSpace:"nowrap",color:l==="lit"?"var(--graview-accent)":"var(--graview-ink-faint)"},children:n(o.start)}),(0,se.jsx)("span",{style:{fontSize:"0.75rem",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:l==="dimmed"?"var(--graview-ink-faint)":"var(--graview-ink)"},children:o.label}),(0,se.jsx)("span",{style:{width:7,height:7,borderRadius:999,flex:"0 0 auto",background:i.has(o.id)?"var(--graview-warn)":l==="dimmed"?"var(--graview-edge)":`hsl(${Math.round(r(o))} 60% var(--graview-tint-lightness))`,boxShadow:i.has(o.id)?"0 0 0 3px var(--graview-warn)":l==="lit"?"0 0 0 3px var(--graview-accent-dim)":l==="dimmed"?void 0:`0 0 8px hsl(${Math.round(r(o))} 60% var(--graview-tint-lightness) / 0.45)`}})]},o.id)})]})}function Ur(e){function t(n){let{store:r}=oe(),a=Object.keys(e.bindings),{nodes:i,bar:s}=Ne(n,{...e.arranging!==void 0?{allow:e.arranging}:{},lensAllows:{group:!1},...e.arrangedBy?{arrangedBy:e.arrangedBy}:{},...a[0]?{kind:(n.nodes??[]).find(c=>a.includes(String(c.kind)))?.kind??a[0]}:{}}),p=(0,se.jsx)(Ia,{schema:r.schema,...n,nodes:i,options:e});return Ie(n,r.schema,s?(0,se.jsxs)("div",{style:{display:"grid",gap:6,height:"100%",minHeight:0,gridTemplateRows:"auto 1fr"},children:[s,p]}):p)}return{name:"timeline",requiredRoles:[...Fr],bindings:e.bindings,options:e,View:t,place(n,r){return n.map(a=>_r(a,e.bindings,r)).filter(a=>a!==null)}}}var Pe=q(te(),1),Yr=new WeakMap;function Ga(e){return e===1440?t=>Xe(Math.floor(t/60)*60+Math.round(t%60)):e===24?t=>Xe(Math.floor(t)*60):t=>String(t)}function ja(e){let t=e.options;switch(e.lens){case"timeline":{let n=typeof t.extent=="number"?t.extent:1440;return Ur({...t,extent:n,format:Ga(n)}).View}case"calendar":return Cr({...t,...typeof t.today=="string"?{today:t.today}:{}}).View;case"coverage":return Nr(t).View;case"board":return or(t).View;case"plan":return Vr(t).View;case"reach":return jr.View;case"columns":return Ar(t).View;case"blocks":return qa(At(Array.isArray(t.blocks)?t.blocks:[]),e.as)}}function qa(e,t){return n=>{let r=(0,Pe.jsx)(Jt,{blocks:e,slot:"place",view:t,heading:n.mode==="fullscreen"?2:3});return n.fidelity==="glyph"?(0,Pe.jsx)("span",{className:"graview-spec-title",children:n.label}):n.mode!=="fullscreen"?(0,Pe.jsx)(me,{title:n.label??"",children:r}):(0,Pe.jsx)(Fa,{children:r})}}function Fa({children:e}){return(0,Qr.useContext)(Yt)?(0,Pe.jsx)(Pe.Fragment,{children:e}):(0,Pe.jsx)("div",{style:{padding:"12px 16px"},children:e})}function rs(e){let t=Yr.get(e);if(!t){let n=ja(e),r={title:e.title,as:e.as,...e.kinds[0]!==void 0?{on:e.kinds[0]}:{}},a={...r,export:!1},i=s=>{let p=xt()?.app?.lenses?.find(c=>c.title===e.title&&c.name===e.lens);return(0,Pe.jsx)(pn.Provider,{value:p?.export===!1?a:r,children:(0,Pe.jsx)(n,{...s,label:e.title})})};Yr.set(e,t=i)}return t}export{Ga as a,rs as b};
@@ -1 +1 @@
1
- import{c as M}from"./chunk.SAWASNDO.js";import{ga as b}from"./chunk.DHPXRDT5.js";var k=["owners","status","schedule","budget","places","sources","stock","votes","private","history","publishing","roster","routines","comparison"],y={owners:"people who own things",status:"a status that moves",schedule:"dates it is due by, or a schedule",budget:"money against a budget",places:"places",sources:"sources behind claims",stock:"counts in stock",votes:"votes or picks",private:"private to its owner",history:"a history, a record book",publishing:"content to publish",roster:"a roster of people",routines:"repeating routines",comparison:"a comparison to pick one from"},J={owners:"a person kind (or the people the app has), an owner link, Give it to someone, a rule that every one has somebody on it, and Who has what",status:"a status with named steps (or the one the app has), an act for each step, and a board",schedule:"a due date, Set the date, the on-time rule, and a calendar",budget:"a cost beside the money the app keeps, a budget on the kind it is grouped under, Set the budget, and the over-budget rule",places:"a place kind, a link to one, and a map of where things are",sources:"a source kind, a link from each claim to its source, and the rule that a claim names one",stock:"what is on hand and the reorder level, Count the stock, and the running-low rule",votes:"a vote on each, Vote for it, and a tally",private:"a sight that keeps each person's own records to them",history:"the record book: an era or season each belongs to, and a timeline",publishing:"a published status, Publish it, and what the public sees",roster:"a person kind with the fields a roster keeps, and the list of who is here",routines:"how often each repeats and when it was last done, Mark it done, and the overdue rule",comparison:"a side-by-side of the candidates, one chosen, and Choose it"},U=new Set(["person","people","member","user","player","guest","candidate","participant","traveler","volunteer","interviewer","interviewee","contact","trade","staff","student","employee","teammate","crew","attendee","friend","customer","client","driver","speaker","host","teacher","parent","kid","child","coach","patient","tenant","resident","neighbor","applicant","recruit","contributor","assignee","worker","collaborator","runner"]),K=new Set(["place","venue","location","room","site","building","store","warehouse","city","country","region","address","hall","stadium","office","shelf"]),z=new Set(["source","reference","citation","evidence"]),H=new Set(["season","era","period","epoch","edition","generation","age","campaign","tournament"]),ae=/owner|owned|assign|^lead$|responsible|^by$|^by-|done-?by|interviewer|reviewer|maker|author|keeper|givenby|^for-?person$/i,oe=/due|deadline|until|needed|needby|target|expires|^ends?(on|at)?$|^by$/i,de=/^(date|day|when|at|start|starts|startsat|startson|startdate|scheduled|scheduledfor|scheduledon|happens|happenson|held|heldon|from|time|exchangedate|.*date|.*day)$/i,le=/released|fixed|published|applied|checked|created|added|done|last|first|updated|seen|born|birth|founded|finished|completed|closed/i,X=/status|stage|state|phase|progress/i,W=/budget|limit|cap$|allowance/i,ce=/budget|cost|price|quote|amount|salary|fee|spend|total|paid|owed/i,pe=/^(place|location|venue|address|where|city|town)$/i,B=/reorder|onhand|instock|^stock|quantity|^qty/i,he=/^votes?$|votecount|upvotes|^score$|^points$/i,fe=/^(votes?|votesfor|votedby|voters|picks?|chooses|choices|favorites|likes)$/i,ue=/often|frequency|cadence|^every$|repeat|interval/i,ge=/^last/i,Q=/^(published|live|public)$/i,ye=/count\(.*\bwhere\b.*\)\s*<=\s*1\b/,u=e=>e.toLowerCase(),w=(e,t)=>u(e.kinds[t]?.noun??b(t)),$=(e,t)=>u(e.kinds[t]?.plural??`${w(e,t)}s`),me=e=>e.charAt(0).toUpperCase()+e.slice(1),p=(e,t)=>me($(e,t)),we=e=>/^[aeiou]/i.test(e)?"an":"a",x=(e,t="and")=>e.length<2?e.join(""):`${e.slice(0,-1).join(", ")} ${t} ${e[e.length-1]}`,N=e=>new Set((e??"").split(/[^A-Za-z0-9_-]+/).filter(Boolean)),v=e=>Object.entries(e.kinds),m=(e,t)=>Object.entries(e.acts??{}).filter(([,s])=>[s.on??[]].flat().includes(t)),_=e=>Array.isArray(e.lenses)?e.lenses:[],I=e=>typeof e.title=="string"?e.title:void 0,A=e=>e.bindings&&typeof e.bindings=="object"?e.bindings:{},R=(e,t)=>Array.isArray(t)&&t.length===1&&typeof t[0]=="string"&&e.kinds[t[0]]?t[0]:void 0;function V(e,t){let s=e.kinds[t];if(!s)return!1;let r=n=>u(n).replace(/ll/g,"l");return s.people===!0||U.has(r(t))||U.has(r(w(e,t)))}var Y=(e,t)=>K.has(u(t))||K.has(w(e,t)),ke=(e,t)=>z.has(u(t))||z.has(w(e,t)),be=(e,t)=>H.has(u(t))||H.has(w(e,t)),$e=(e,t)=>(t.type==="number"||t.type==="integer")&&(t.format==="money"||ce.test(e)),j=e=>e.type==="date"||e.type==="datetime";function P(e,t,s,r,n){return _(e).filter(d=>d.name===t&&A(d)[s]?.[r]===n).map(I).filter(d=>d!==void 0)}function D(e,t,s,r){return _(e).filter(n=>n.name==="coverage"&&A(n)[s]?.kind===t&&(r===void 0||A(n).link?.edge===r)).map(I).filter(n=>n!==void 0)}function f(e,t,s){let r=new Set(t);return Object.entries(e.rules??{}).filter(([,n])=>(s===void 0||n.over==="graph"||s.includes(n.over))&&[...N(`${n.when??""} ${n.require??""} ${n.says??""}`)].some(d=>r.has(d))).map(([n])=>n)}var G=class{kinds=new Set;fields=new Set;relations=new Set;rules=new Set;lenses=new Set;acts=new Set;said;add=(t,...s)=>{for(let r of s)this[t].add(r)};say=t=>{this.said??=t};any=()=>this.kinds.size+this.fields.size+this.relations.size+this.rules.size+this.lenses.size+this.acts.size>0;asTrait=t=>({trait:t,words:y[t],said:this.said??y[t],kinds:[...this.kinds],fields:[...this.fields],relations:[...this.relations],rules:[...this.rules],lenses:[...this.lenses],acts:[...this.acts]})};function ve(e){let t;for(let[s,r]of v(e)){let n=Object.keys(r.fields).length+Object.keys(r.edges??{}).length;(!t||n>t.fields)&&(t={kind:s,fields:n})}return t?.kind}function g(e){let t=ve(e);return v(e).sort(([s],[r])=>+(r===t)-+(s===t))}function Z(e,t){let s=e.kinds[t];if(!s)return[];let r=[];for(let[n,d]of Object.entries(s.fields)){if(d.type!=="enum"||!Array.isArray(d.options)||d.options.length<2)continue;let i=m(e,t).filter(([,a])=>typeof a.sets?.[n]=="string"&&d.options.includes(a.sets[n])).map(([a])=>a);((X.test(n)||s.lifecycle?.field===n)&&i.length>=1||i.length>=2)&&r.push({field:n,options:d.options,steps:i})}return r}var ee={owners(e,t){for(let[s,r]of g(e))for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);d.cardinality!=="one"||!i||!V(e,i)||!ae.test(n)||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n],[s,i])),t.add("lenses",...D(e,s,"rows",n)),t.add("acts",...m(e,s).filter(([,o])=>o.connects===n||o.severs===n).map(([o])=>o)),t.say(`Each ${w(e,s)} has one of the ${$(e,i)} on it (${n}).`))}},status(e,t){for(let[s]of g(e))for(let{field:r,options:n,steps:d}of Z(e,s))t.add("kinds",s),t.add("fields",`${s}.${r}`),t.add("acts",...d),t.add("rules",...f(e,[r],[s])),t.add("lenses",...P(e,"columns",s,"column",r)),t.say(`${p(e,s)} move through ${x(n.map(u))}.`)},schedule(e,t){for(let[s,r]of g(e))for(let[n,d]of Object.entries(r.fields)){if(!j(d)||le.test(n))continue;let i=P(e,"calendar",s,"start",n),o=oe.test(n);if(!o&&!de.test(n)&&i.length===0)continue;t.add("kinds",s),t.add("fields",`${s}.${n}`),t.add("lenses",...i),t.add("rules",...f(e,[n],[s])),t.add("acts",...m(e,s).filter(([,l])=>(l.writes??[]).includes(n)||l.sets?.[n]!==void 0).map(([l])=>l));let a=/date|day|when|time/i.test(n)?u(b(n)):`date (${n})`;t.say(o?`${p(e,s)} are due by a date (${n}).`:`${p(e,s)} have ${we(a)} ${a}${i.length>0?", on a calendar":""}.`)}},budget(e,t){let s=v(e).flatMap(([o,a])=>Object.entries(a.fields).filter(([l,h])=>(h.type==="number"||h.type==="integer")&&W.test(l)).map(([l])=>({kind:o,name:l})));if(s.length===0)return;let r=g(e).flatMap(([o,a])=>Object.entries(a.fields).filter(([l,h])=>$e(l,h)&&!W.test(l)).map(([l])=>({kind:o,name:l})));if(r.length===0)return;let n=[...s,...r].map(o=>o.name);for(let o of[...s,...r])t.add("kinds",o.kind),t.add("fields",`${o.kind}.${o.name}`),t.add("acts",...m(e,o.kind).filter(([,a])=>(a.writes??[]).includes(o.name)||a.sets?.[o.name]!==void 0).map(([a])=>a));t.add("rules",...f(e,n).filter(o=>s.some(a=>N(e.rules[o].require??"").has(a.name))));let d=r[0],i=s.find(o=>o.kind===d.kind)??s[0];t.say(`${p(e,d.kind)}' ${u(b(d.name))} against ${i.kind===d.kind?"each one's":`each ${w(e,i.kind)}'s`} ${u(b(i.name))}.`)},places(e,t){for(let[s,r]of g(e)){Y(e,s)&&(t.add("kinds",s),t.add("lenses",...D(e,s,"columns")));for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);!i||!Y(e,i)||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n],[s,i])),t.say(`${p(e,s)} are at ${$(e,i)} (${n}).`))}for(let[n,d]of Object.entries(r.fields))d.type!=="place"&&!(d.type==="string"&&pe.test(n))||(t.add("kinds",s),t.add("fields",`${s}.${n}`),t.say(`${p(e,s)} say where (${n}).`))}t.any()&&!t.said&&t.say(`${x([...t.kinds].map(s=>p(e,s)))} are places.`)},sources(e,t){for(let[s,r]of g(e)){for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);!i||!ke(e,i)&&!/^cite/i.test(n)||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n,i],[s,i])),t.add("acts",...m(e,s).filter(([,o])=>o.connects===n||o.severs===n).map(([o])=>o)),t.say(`${p(e,s)} cite ${$(e,i)} (${n}).`))}for(let[n,d]of Object.entries(r.fields))d.type!=="url"||!/^source/i.test(n)||(t.add("kinds",s),t.add("fields",`${s}.${n}`),t.add("rules",...f(e,[n],[s])),t.say(`${p(e,s)} link to their source (${n}).`))}},stock(e,t){for(let[s,r]of g(e)){let n=Object.entries(r.fields).filter(([a,l])=>(l.type==="number"||l.type==="integer")&&B.test(a)).map(([a])=>a),d=Object.keys(r.computed??{}).filter(a=>B.test(a)),i=n.some(a=>/reorder/i.test(a)),o=v(e).some(([,a])=>Object.entries(a.fields).some(([l,h])=>/^(change|delta|moved)$/i.test(l)&&(h.type==="number"||h.type==="integer")));!i&&!(d.length+n.length>0&&o)||(t.add("kinds",s),t.add("fields",...n.map(a=>`${s}.${a}`),...d.map(a=>`${s}.${a}`)),t.add("rules",...f(e,[...n,...d],[s])),t.add("acts",...m(e,s).filter(([,a])=>n.some(l=>(a.writes??[]).includes(l)||a.sets?.[l]!==void 0)).map(([a])=>a)),t.say(`${p(e,s)} have a count in stock${i?" and a reorder point":""}.`))}},votes(e,t){for(let[s,r]of g(e)){for(let[n,d]of Object.entries(r.fields)){if(d.type!=="number"&&d.type!=="integer"||!he.test(n))continue;let i=m(e,s).filter(([,o])=>o.sets?.[n]!==void 0).map(([o])=>o);i.length!==0&&(t.add("kinds",s),t.add("fields",`${s}.${n}`),t.add("acts",...i),t.add("rules",...f(e,[n],[s])),t.say(`${p(e,s)} collect votes (${n}).`))}for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);!i||!fe.test(n)||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n],[s,i])),t.add("acts",...m(e,s).filter(([,o])=>o.connects===n||o.severs===n).map(([o])=>o)),t.say(`${p(e,s)} pick ${$(e,i)} (${n}).`))}}},private(e,t){let s=[];for(let r of e.policy?.sees??[])if(!(!r.own&&!r.via)){for(let n of r.kinds)if(e.kinds[n]&&(t.add("kinds",n),s.includes(n)||s.push(n),r.via))for(let[d,i]of v(e))i.edges?.[r.via]&&t.add("relations",`${d}.${r.via}`)}s.length>0&&t.say(`${x(s.map(r=>p(e,r)))} are seen only by whose they are.`)},history(e,t){for(let[s,r]of g(e))for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);d.cardinality!=="one"||!i||!be(e,i)||!Object.entries(r.fields).some(([a,l])=>j(l)||/year|result|outcome|score|finish/i.test(a))||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n,i],[s,i])),t.add("lenses",...D(e,s,"rows",n),..._(e).filter(a=>a.name==="timeline"&&A(a)[s]!==void 0).map(I).filter(a=>a!==void 0)),t.say(`${p(e,s)} grouped into ${$(e,i)}, a record book.`))}},publishing(e,t){for(let[s,r]of g(e)){let n=Object.entries(r.fields).filter(([,i])=>i.type==="text").map(([i])=>i);if(n.length===0)continue;let d=Z(e,s).map(i=>i.field);for(let[i,o]of Object.entries(r.fields)){if(o.type!=="enum"||!(X.test(i)||d.includes(i))||!(o.options??[]).some(l=>Q.test(l)))continue;let a=(o.options??[]).find(l=>Q.test(l));t.add("kinds",s),t.add("fields",`${s}.${i}`,...n.map(l=>`${s}.${l}`)),t.add("acts",...m(e,s).filter(([,l])=>l.sets?.[i]===a).map(([l])=>l)),t.add("rules",...f(e,[i,...n],[s]).filter(l=>N(`${e.rules[l].when??""} ${e.rules[l].require??""}`).has(a)||n.some(h=>N(e.rules[l].require??"").has(h)))),t.say(`${p(e,s)} go from ${u(o.options[0])} to ${u(a)}, with their words.`)}}},roster(e,t){for(let[s,r]of g(e)){if(!V(e,s))continue;let n=Object.keys(r.fields);n.length<2||(t.add("kinds",s),t.add("fields",...n.map(d=>`${s}.${d}`)),t.add("lenses",...D(e,s,"columns"),...D(e,s,"rows")),t.say(`${p(e,s)}, with ${x(n.slice(1).map(d=>u(b(d))))}.`))}},routines(e,t){for(let[s,r]of g(e)){let n=Object.entries(r.fields).filter(([,a])=>j(a)&&a.repeats===!0).map(([a])=>a),d=Object.entries(r.fields).filter(([a,l])=>(l.type==="enum"||l.type==="string"||l.type==="integer"||l.type==="number")&&ue.test(a)).map(([a])=>a),i=Object.entries(r.fields).filter(([a,l])=>j(l)&&ge.test(a)).map(([a])=>a);if(n.length===0&&!(d.length>0&&i.length>0))continue;let o=[...n,...d,...i];t.add("kinds",s),t.add("fields",...o.map(a=>`${s}.${a}`)),t.add("rules",...f(e,o,[s])),t.add("lenses",...o.flatMap(a=>P(e,"calendar",s,"start",a))),t.add("acts",...m(e,s).filter(([,a])=>o.some(l=>(a.writes??[]).includes(l)||a.sets?.[l]!==void 0)).map(([a])=>a)),t.say(n.length>0?`${p(e,s)} repeat (${n[0]}).`:`${p(e,s)} come round again, each with when it was last done.`)}},comparison(e,t){for(let[s,r]of Object.entries(e.rules??{})){if(!r.require||!ye.test(r.require))continue;let n=r.over==="graph"?void 0:r.over,d=/in\('([^']+)'\)/.exec(r.require)?.[1],i=/all\('([^']+)'/.exec(r.require)?.[1],o=n?d?v(e).find(([,l])=>l.edges?.[d])?.[0]:void 0:i&&e.kinds[i]?i:void 0;if(!o&&!n)continue;let a=/==\s*'([^']+)'/.exec(r.require)?.[1];t.add("kinds",...o?[o]:[],...n?[n]:[]),t.add("rules",s),o&&a&&t.add("acts",...m(e,o).filter(([,l])=>Object.values(l.sets??{}).includes(a)).map(([l])=>l)),t.say(o&&n?`${p(e,o)} compared within each ${w(e,n)}, one ${a??"chosen"}.`:o?`${p(e,o)} compared, one ${a??"chosen"}.`:`One ${a??"chosen"} per ${w(e,n)}.`)}}};function E(e){let t=[];for(let s of k){let r=new G;ee[s](e,r),r.any()&&t.push(r.asTrait(s))}return t}function L(e,t){let s=new G;return ee[t](e,s),s.any()}var Oe=e=>Math.round(Math.max(0,Math.min(1,e))*100)/100;function q(e){return e?.type==="noul"&&Number.isFinite(e.noul)?Oe(e.noul):void 0}var Re={add:.7,drop:.7},Fe="propose_change";function Me(e){return M(e)}var De=e=>e.toLowerCase(),Te=e=>e.charAt(0).toUpperCase()+e.slice(1),O=(e,t="and")=>e.length<2?e.join(""):`${e.slice(0,-1).join(", ")} ${t} ${e[e.length-1]}`,Se=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[-_]+/g," ").toLowerCase(),T=(e,t)=>{let s=e.kinds[t];return De(s?.plural??(s?.noun?`${s.noun}s`:`${Se(t)}s`))},xe=e=>k.includes(e),se=(e,t)=>k.indexOf(e)-k.indexOf(t);function je(e){let t=E(e),s=new Set(t.map(r=>r.trait));return{name:e.name,keeps:Object.keys(e.kinds).map(r=>T(e,r)),"made of":t.map(r=>r.said),lacks:k.filter(r=>!s.has(r)).map(r=>y[r])}}function Ne(e,t){let s=new Set(E(t).map(n=>n.trait)),r={};for(let n of k)s.has(n)||(r[`need:${n}`]={type:"noul",instructions:`Does what they asked for need ${y[n]}, which ${t.name} has no part for yet?`,criteria:{true:`It needs ${y[n]}: they asked for it, or what they asked for cannot be kept without it.`,false:"Not asked for, and not needed to keep what they asked for."}});for(let n of Object.keys(t.kinds)){let d=T(t,n);r[`drop:kind:${n}`]={type:"noul",instructions:`Did they ask ${t.name} to stop keeping ${d}?`,criteria:{true:`They said the ${d} go: to drop them, remove them or stop tracking them.`,false:`${Te(d)} stay: nothing they said asks for them to go.`}}}for(let n of k)s.has(n)&&(r[`drop:trait:${n}`]={type:"noul",instructions:`Did they ask ${t.name} to stop having ${y[n]}?`,criteria:{true:`They said it goes: to drop or stop ${y[n]}.`,false:"It stays: nothing they said asks for it to go."}});return{state:{said:e,app:je(t)},questions:r}}var te=/^drop:(kind|trait):(.+)$/s;function Ae(e,t={}){let s={...Re,...t},r=Object.keys(e);if(r.length===0)throw new Error("readReshape was handed no answers.");let n=r.filter(o=>!/^need:/.test(o)&&!te.test(o));if(n.length>0)throw new Error(`readReshape does not know the question ${n.map(o=>`"${o}"`).join(", ")}: it reads need:<trait>, drop:kind:<name> and drop:trait:<name>.`);let d={},i={};for(let[o,a]of Object.entries(e)){let l=te.exec(o);if(l){i[`${l[1]}:${l[2]}`]=q(a)??0;continue}let h=o.slice(5);xe(h)&&(d[h]=q(a)??0)}return{add:Object.keys(d).filter(o=>d[o]>=s.add).sort(se),drop:Object.entries(i).filter(([,o])=>o>=s.drop).map(([o])=>o.slice(o.indexOf(":")+1)),needs:d,drops:i}}function Ge(e){let{said:t,document:s}=e,r=[...new Set(e.add)].sort(se),n=[...new Set(e.drop)],d=E(s),i=r.filter(c=>!L(s,c)).map(c=>({what:"trait",name:c,words:y[c],brings:J[c]})),o=r.filter(c=>L(s,c)),a=Object.keys(s.kinds).filter(c=>n.includes(c)),l=d.filter(c=>n.includes(c.trait)&&!Object.hasOwn(s.kinds,c.trait)),h=[...a.map(c=>({what:"kind",name:c,words:T(s,c)})),...l.map(c=>({what:"trait",name:c.trait,words:y[c.trait]}))],C=Object.keys(s.kinds).filter(c=>!a.includes(c)).map(c=>({what:"kind",name:c,words:T(s,c)})),ne=[...a.map(c=>`All ${T(s,c)} records go, with their links.`),...l.flatMap(c=>{let F=[...c.fields,...c.relations];return F.length>0?[`What carries ${y[c.trait]} goes: ${O(F)}, with its values and links.`]:[]})],S=[];i.length>0&&S.push(`adds ${O(i.map(c=>c.words))}`),h.length>0&&S.push(`drops ${O(h.map(c=>c.words))}`),C.length>0&&S.push(`keeps ${O(C.map(c=>c.words))}`);let re=i.length+h.length===0?`Nothing in ${s.name} changes for that.`:`This ${O(S)}.`,ie=o.length>0?` ${s.name} already has ${O(o.map(c=>y[c]))}.`:"";return{said:t,add:i.map(c=>c.name),drop:h.map(c=>c.name),card:{said:`${re}${ie}`,adds:i,keeps:C,drops:h,breaking:ne}}}async function Ue(e){let{state:t,questions:s}=Ne(e.said,e.document),{answers:r,usage:n}=await e.decide(t,s),d=Ae(r,e.thresholds??{}),i=d.add.length+d.drop.length===0?null:Ge({said:e.said,document:e.document,add:d.add,drop:d.drop});return{proposal:i&&i.add.length+i.drop.length===0?null:i,reading:d,answers:r,usage:n}}export{Fe as a,Me as b,Ne as c,Ae as d,Ge as e,Ue as f};
1
+ import{c as M}from"./chunk.OYMN3IFX.js";import{ha as b}from"./chunk.6L6RUOSF.js";var k=["owners","status","schedule","budget","places","sources","stock","votes","private","history","publishing","roster","routines","comparison"],y={owners:"people who own things",status:"a status that moves",schedule:"dates it is due by, or a schedule",budget:"money against a budget",places:"places",sources:"sources behind claims",stock:"counts in stock",votes:"votes or picks",private:"private to its owner",history:"a history, a record book",publishing:"content to publish",roster:"a roster of people",routines:"repeating routines",comparison:"a comparison to pick one from"},J={owners:"a person kind (or the people the app has), an owner link, Give it to someone, a rule that every one has somebody on it, and Who has what",status:"a status with named steps (or the one the app has), an act for each step, and a board",schedule:"a due date, Set the date, the on-time rule, and a calendar",budget:"a cost beside the money the app keeps, a budget on the kind it is grouped under, Set the budget, and the over-budget rule",places:"a place kind, a link to one, and a map of where things are",sources:"a source kind, a link from each claim to its source, and the rule that a claim names one",stock:"what is on hand and the reorder level, Count the stock, and the running-low rule",votes:"a vote on each, Vote for it, and a tally",private:"a sight that keeps each person's own records to them",history:"the record book: an era or season each belongs to, and a timeline",publishing:"a published status, Publish it, and what the public sees",roster:"a person kind with the fields a roster keeps, and the list of who is here",routines:"how often each repeats and when it was last done, Mark it done, and the overdue rule",comparison:"a side-by-side of the candidates, one chosen, and Choose it"},U=new Set(["person","people","member","user","player","guest","candidate","participant","traveler","volunteer","interviewer","interviewee","contact","trade","staff","student","employee","teammate","crew","attendee","friend","customer","client","driver","speaker","host","teacher","parent","kid","child","coach","patient","tenant","resident","neighbor","applicant","recruit","contributor","assignee","worker","collaborator","runner"]),K=new Set(["place","venue","location","room","site","building","store","warehouse","city","country","region","address","hall","stadium","office","shelf"]),z=new Set(["source","reference","citation","evidence"]),H=new Set(["season","era","period","epoch","edition","generation","age","campaign","tournament"]),ae=/owner|owned|assign|^lead$|responsible|^by$|^by-|done-?by|interviewer|reviewer|maker|author|keeper|givenby|^for-?person$/i,oe=/due|deadline|until|needed|needby|target|expires|^ends?(on|at)?$|^by$/i,de=/^(date|day|when|at|start|starts|startsat|startson|startdate|scheduled|scheduledfor|scheduledon|happens|happenson|held|heldon|from|time|exchangedate|.*date|.*day)$/i,le=/released|fixed|published|applied|checked|created|added|done|last|first|updated|seen|born|birth|founded|finished|completed|closed/i,X=/status|stage|state|phase|progress/i,W=/budget|limit|cap$|allowance/i,ce=/budget|cost|price|quote|amount|salary|fee|spend|total|paid|owed/i,pe=/^(place|location|venue|address|where|city|town)$/i,B=/reorder|onhand|instock|^stock|quantity|^qty/i,he=/^votes?$|votecount|upvotes|^score$|^points$/i,fe=/^(votes?|votesfor|votedby|voters|picks?|chooses|choices|favorites|likes)$/i,ue=/often|frequency|cadence|^every$|repeat|interval/i,ge=/^last/i,Q=/^(published|live|public)$/i,ye=/count\(.*\bwhere\b.*\)\s*<=\s*1\b/,u=e=>e.toLowerCase(),w=(e,t)=>u(e.kinds[t]?.noun??b(t)),$=(e,t)=>u(e.kinds[t]?.plural??`${w(e,t)}s`),me=e=>e.charAt(0).toUpperCase()+e.slice(1),p=(e,t)=>me($(e,t)),we=e=>/^[aeiou]/i.test(e)?"an":"a",x=(e,t="and")=>e.length<2?e.join(""):`${e.slice(0,-1).join(", ")} ${t} ${e[e.length-1]}`,N=e=>new Set((e??"").split(/[^A-Za-z0-9_-]+/).filter(Boolean)),v=e=>Object.entries(e.kinds),m=(e,t)=>Object.entries(e.acts??{}).filter(([,s])=>[s.on??[]].flat().includes(t)),_=e=>Array.isArray(e.lenses)?e.lenses:[],I=e=>typeof e.title=="string"?e.title:void 0,A=e=>e.bindings&&typeof e.bindings=="object"?e.bindings:{},R=(e,t)=>Array.isArray(t)&&t.length===1&&typeof t[0]=="string"&&e.kinds[t[0]]?t[0]:void 0;function V(e,t){let s=e.kinds[t];if(!s)return!1;let r=n=>u(n).replace(/ll/g,"l");return s.people===!0||U.has(r(t))||U.has(r(w(e,t)))}var Y=(e,t)=>K.has(u(t))||K.has(w(e,t)),ke=(e,t)=>z.has(u(t))||z.has(w(e,t)),be=(e,t)=>H.has(u(t))||H.has(w(e,t)),$e=(e,t)=>(t.type==="number"||t.type==="integer")&&(t.format==="money"||ce.test(e)),j=e=>e.type==="date"||e.type==="datetime";function P(e,t,s,r,n){return _(e).filter(d=>d.name===t&&A(d)[s]?.[r]===n).map(I).filter(d=>d!==void 0)}function D(e,t,s,r){return _(e).filter(n=>n.name==="coverage"&&A(n)[s]?.kind===t&&(r===void 0||A(n).link?.edge===r)).map(I).filter(n=>n!==void 0)}function f(e,t,s){let r=new Set(t);return Object.entries(e.rules??{}).filter(([,n])=>(s===void 0||n.over==="graph"||s.includes(n.over))&&[...N(`${n.when??""} ${n.require??""} ${n.says??""}`)].some(d=>r.has(d))).map(([n])=>n)}var G=class{kinds=new Set;fields=new Set;relations=new Set;rules=new Set;lenses=new Set;acts=new Set;said;add=(t,...s)=>{for(let r of s)this[t].add(r)};say=t=>{this.said??=t};any=()=>this.kinds.size+this.fields.size+this.relations.size+this.rules.size+this.lenses.size+this.acts.size>0;asTrait=t=>({trait:t,words:y[t],said:this.said??y[t],kinds:[...this.kinds],fields:[...this.fields],relations:[...this.relations],rules:[...this.rules],lenses:[...this.lenses],acts:[...this.acts]})};function ve(e){let t;for(let[s,r]of v(e)){let n=Object.keys(r.fields).length+Object.keys(r.edges??{}).length;(!t||n>t.fields)&&(t={kind:s,fields:n})}return t?.kind}function g(e){let t=ve(e);return v(e).sort(([s],[r])=>+(r===t)-+(s===t))}function Z(e,t){let s=e.kinds[t];if(!s)return[];let r=[];for(let[n,d]of Object.entries(s.fields)){if(d.type!=="enum"||!Array.isArray(d.options)||d.options.length<2)continue;let i=m(e,t).filter(([,a])=>typeof a.sets?.[n]=="string"&&d.options.includes(a.sets[n])).map(([a])=>a);((X.test(n)||s.lifecycle?.field===n)&&i.length>=1||i.length>=2)&&r.push({field:n,options:d.options,steps:i})}return r}var ee={owners(e,t){for(let[s,r]of g(e))for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);d.cardinality!=="one"||!i||!V(e,i)||!ae.test(n)||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n],[s,i])),t.add("lenses",...D(e,s,"rows",n)),t.add("acts",...m(e,s).filter(([,o])=>o.connects===n||o.severs===n).map(([o])=>o)),t.say(`Each ${w(e,s)} has one of the ${$(e,i)} on it (${n}).`))}},status(e,t){for(let[s]of g(e))for(let{field:r,options:n,steps:d}of Z(e,s))t.add("kinds",s),t.add("fields",`${s}.${r}`),t.add("acts",...d),t.add("rules",...f(e,[r],[s])),t.add("lenses",...P(e,"columns",s,"column",r)),t.say(`${p(e,s)} move through ${x(n.map(u))}.`)},schedule(e,t){for(let[s,r]of g(e))for(let[n,d]of Object.entries(r.fields)){if(!j(d)||le.test(n))continue;let i=P(e,"calendar",s,"start",n),o=oe.test(n);if(!o&&!de.test(n)&&i.length===0)continue;t.add("kinds",s),t.add("fields",`${s}.${n}`),t.add("lenses",...i),t.add("rules",...f(e,[n],[s])),t.add("acts",...m(e,s).filter(([,l])=>(l.writes??[]).includes(n)||l.sets?.[n]!==void 0).map(([l])=>l));let a=/date|day|when|time/i.test(n)?u(b(n)):`date (${n})`;t.say(o?`${p(e,s)} are due by a date (${n}).`:`${p(e,s)} have ${we(a)} ${a}${i.length>0?", on a calendar":""}.`)}},budget(e,t){let s=v(e).flatMap(([o,a])=>Object.entries(a.fields).filter(([l,h])=>(h.type==="number"||h.type==="integer")&&W.test(l)).map(([l])=>({kind:o,name:l})));if(s.length===0)return;let r=g(e).flatMap(([o,a])=>Object.entries(a.fields).filter(([l,h])=>$e(l,h)&&!W.test(l)).map(([l])=>({kind:o,name:l})));if(r.length===0)return;let n=[...s,...r].map(o=>o.name);for(let o of[...s,...r])t.add("kinds",o.kind),t.add("fields",`${o.kind}.${o.name}`),t.add("acts",...m(e,o.kind).filter(([,a])=>(a.writes??[]).includes(o.name)||a.sets?.[o.name]!==void 0).map(([a])=>a));t.add("rules",...f(e,n).filter(o=>s.some(a=>N(e.rules[o].require??"").has(a.name))));let d=r[0],i=s.find(o=>o.kind===d.kind)??s[0];t.say(`${p(e,d.kind)}' ${u(b(d.name))} against ${i.kind===d.kind?"each one's":`each ${w(e,i.kind)}'s`} ${u(b(i.name))}.`)},places(e,t){for(let[s,r]of g(e)){Y(e,s)&&(t.add("kinds",s),t.add("lenses",...D(e,s,"columns")));for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);!i||!Y(e,i)||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n],[s,i])),t.say(`${p(e,s)} are at ${$(e,i)} (${n}).`))}for(let[n,d]of Object.entries(r.fields))d.type!=="place"&&!(d.type==="string"&&pe.test(n))||(t.add("kinds",s),t.add("fields",`${s}.${n}`),t.say(`${p(e,s)} say where (${n}).`))}t.any()&&!t.said&&t.say(`${x([...t.kinds].map(s=>p(e,s)))} are places.`)},sources(e,t){for(let[s,r]of g(e)){for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);!i||!ke(e,i)&&!/^cite/i.test(n)||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n,i],[s,i])),t.add("acts",...m(e,s).filter(([,o])=>o.connects===n||o.severs===n).map(([o])=>o)),t.say(`${p(e,s)} cite ${$(e,i)} (${n}).`))}for(let[n,d]of Object.entries(r.fields))d.type!=="url"||!/^source/i.test(n)||(t.add("kinds",s),t.add("fields",`${s}.${n}`),t.add("rules",...f(e,[n],[s])),t.say(`${p(e,s)} link to their source (${n}).`))}},stock(e,t){for(let[s,r]of g(e)){let n=Object.entries(r.fields).filter(([a,l])=>(l.type==="number"||l.type==="integer")&&B.test(a)).map(([a])=>a),d=Object.keys(r.computed??{}).filter(a=>B.test(a)),i=n.some(a=>/reorder/i.test(a)),o=v(e).some(([,a])=>Object.entries(a.fields).some(([l,h])=>/^(change|delta|moved)$/i.test(l)&&(h.type==="number"||h.type==="integer")));!i&&!(d.length+n.length>0&&o)||(t.add("kinds",s),t.add("fields",...n.map(a=>`${s}.${a}`),...d.map(a=>`${s}.${a}`)),t.add("rules",...f(e,[...n,...d],[s])),t.add("acts",...m(e,s).filter(([,a])=>n.some(l=>(a.writes??[]).includes(l)||a.sets?.[l]!==void 0)).map(([a])=>a)),t.say(`${p(e,s)} have a count in stock${i?" and a reorder point":""}.`))}},votes(e,t){for(let[s,r]of g(e)){for(let[n,d]of Object.entries(r.fields)){if(d.type!=="number"&&d.type!=="integer"||!he.test(n))continue;let i=m(e,s).filter(([,o])=>o.sets?.[n]!==void 0).map(([o])=>o);i.length!==0&&(t.add("kinds",s),t.add("fields",`${s}.${n}`),t.add("acts",...i),t.add("rules",...f(e,[n],[s])),t.say(`${p(e,s)} collect votes (${n}).`))}for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);!i||!fe.test(n)||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n],[s,i])),t.add("acts",...m(e,s).filter(([,o])=>o.connects===n||o.severs===n).map(([o])=>o)),t.say(`${p(e,s)} pick ${$(e,i)} (${n}).`))}}},private(e,t){let s=[];for(let r of e.policy?.sees??[])if(!(!r.own&&!r.via)){for(let n of r.kinds)if(e.kinds[n]&&(t.add("kinds",n),s.includes(n)||s.push(n),r.via))for(let[d,i]of v(e))i.edges?.[r.via]&&t.add("relations",`${d}.${r.via}`)}s.length>0&&t.say(`${x(s.map(r=>p(e,r)))} are seen only by whose they are.`)},history(e,t){for(let[s,r]of g(e))for(let[n,d]of Object.entries(r.edges??{})){let i=R(e,d.to);d.cardinality!=="one"||!i||!be(e,i)||!Object.entries(r.fields).some(([a,l])=>j(l)||/year|result|outcome|score|finish/i.test(a))||(t.add("kinds",s,i),t.add("relations",`${s}.${n}`),t.add("rules",...f(e,[n,i],[s,i])),t.add("lenses",...D(e,s,"rows",n),..._(e).filter(a=>a.name==="timeline"&&A(a)[s]!==void 0).map(I).filter(a=>a!==void 0)),t.say(`${p(e,s)} grouped into ${$(e,i)}, a record book.`))}},publishing(e,t){for(let[s,r]of g(e)){let n=Object.entries(r.fields).filter(([,i])=>i.type==="text").map(([i])=>i);if(n.length===0)continue;let d=Z(e,s).map(i=>i.field);for(let[i,o]of Object.entries(r.fields)){if(o.type!=="enum"||!(X.test(i)||d.includes(i))||!(o.options??[]).some(l=>Q.test(l)))continue;let a=(o.options??[]).find(l=>Q.test(l));t.add("kinds",s),t.add("fields",`${s}.${i}`,...n.map(l=>`${s}.${l}`)),t.add("acts",...m(e,s).filter(([,l])=>l.sets?.[i]===a).map(([l])=>l)),t.add("rules",...f(e,[i,...n],[s]).filter(l=>N(`${e.rules[l].when??""} ${e.rules[l].require??""}`).has(a)||n.some(h=>N(e.rules[l].require??"").has(h)))),t.say(`${p(e,s)} go from ${u(o.options[0])} to ${u(a)}, with their words.`)}}},roster(e,t){for(let[s,r]of g(e)){if(!V(e,s))continue;let n=Object.keys(r.fields);n.length<2||(t.add("kinds",s),t.add("fields",...n.map(d=>`${s}.${d}`)),t.add("lenses",...D(e,s,"columns"),...D(e,s,"rows")),t.say(`${p(e,s)}, with ${x(n.slice(1).map(d=>u(b(d))))}.`))}},routines(e,t){for(let[s,r]of g(e)){let n=Object.entries(r.fields).filter(([,a])=>j(a)&&a.repeats===!0).map(([a])=>a),d=Object.entries(r.fields).filter(([a,l])=>(l.type==="enum"||l.type==="string"||l.type==="integer"||l.type==="number")&&ue.test(a)).map(([a])=>a),i=Object.entries(r.fields).filter(([a,l])=>j(l)&&ge.test(a)).map(([a])=>a);if(n.length===0&&!(d.length>0&&i.length>0))continue;let o=[...n,...d,...i];t.add("kinds",s),t.add("fields",...o.map(a=>`${s}.${a}`)),t.add("rules",...f(e,o,[s])),t.add("lenses",...o.flatMap(a=>P(e,"calendar",s,"start",a))),t.add("acts",...m(e,s).filter(([,a])=>o.some(l=>(a.writes??[]).includes(l)||a.sets?.[l]!==void 0)).map(([a])=>a)),t.say(n.length>0?`${p(e,s)} repeat (${n[0]}).`:`${p(e,s)} come round again, each with when it was last done.`)}},comparison(e,t){for(let[s,r]of Object.entries(e.rules??{})){if(!r.require||!ye.test(r.require))continue;let n=r.over==="graph"?void 0:r.over,d=/in\('([^']+)'\)/.exec(r.require)?.[1],i=/all\('([^']+)'/.exec(r.require)?.[1],o=n?d?v(e).find(([,l])=>l.edges?.[d])?.[0]:void 0:i&&e.kinds[i]?i:void 0;if(!o&&!n)continue;let a=/==\s*'([^']+)'/.exec(r.require)?.[1];t.add("kinds",...o?[o]:[],...n?[n]:[]),t.add("rules",s),o&&a&&t.add("acts",...m(e,o).filter(([,l])=>Object.values(l.sets??{}).includes(a)).map(([l])=>l)),t.say(o&&n?`${p(e,o)} compared within each ${w(e,n)}, one ${a??"chosen"}.`:o?`${p(e,o)} compared, one ${a??"chosen"}.`:`One ${a??"chosen"} per ${w(e,n)}.`)}}};function E(e){let t=[];for(let s of k){let r=new G;ee[s](e,r),r.any()&&t.push(r.asTrait(s))}return t}function L(e,t){let s=new G;return ee[t](e,s),s.any()}var Oe=e=>Math.round(Math.max(0,Math.min(1,e))*100)/100;function q(e){return e?.type==="noul"&&Number.isFinite(e.noul)?Oe(e.noul):void 0}var Re={add:.7,drop:.7},Fe="propose_change";function Me(e){return M(e)}var De=e=>e.toLowerCase(),Te=e=>e.charAt(0).toUpperCase()+e.slice(1),O=(e,t="and")=>e.length<2?e.join(""):`${e.slice(0,-1).join(", ")} ${t} ${e[e.length-1]}`,Se=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[-_]+/g," ").toLowerCase(),T=(e,t)=>{let s=e.kinds[t];return De(s?.plural??(s?.noun?`${s.noun}s`:`${Se(t)}s`))},xe=e=>k.includes(e),se=(e,t)=>k.indexOf(e)-k.indexOf(t);function je(e){let t=E(e),s=new Set(t.map(r=>r.trait));return{name:e.name,keeps:Object.keys(e.kinds).map(r=>T(e,r)),"made of":t.map(r=>r.said),lacks:k.filter(r=>!s.has(r)).map(r=>y[r])}}function Ne(e,t){let s=new Set(E(t).map(n=>n.trait)),r={};for(let n of k)s.has(n)||(r[`need:${n}`]={type:"noul",instructions:`Does what they asked for need ${y[n]}, which ${t.name} has no part for yet?`,criteria:{true:`It needs ${y[n]}: they asked for it, or what they asked for cannot be kept without it.`,false:"Not asked for, and not needed to keep what they asked for."}});for(let n of Object.keys(t.kinds)){let d=T(t,n);r[`drop:kind:${n}`]={type:"noul",instructions:`Did they ask ${t.name} to stop keeping ${d}?`,criteria:{true:`They said the ${d} go: to drop them, remove them or stop tracking them.`,false:`${Te(d)} stay: nothing they said asks for them to go.`}}}for(let n of k)s.has(n)&&(r[`drop:trait:${n}`]={type:"noul",instructions:`Did they ask ${t.name} to stop having ${y[n]}?`,criteria:{true:`They said it goes: to drop or stop ${y[n]}.`,false:"It stays: nothing they said asks for it to go."}});return{state:{said:e,app:je(t)},questions:r}}var te=/^drop:(kind|trait):(.+)$/s;function Ae(e,t={}){let s={...Re,...t},r=Object.keys(e);if(r.length===0)throw new Error("readReshape was handed no answers.");let n=r.filter(o=>!/^need:/.test(o)&&!te.test(o));if(n.length>0)throw new Error(`readReshape does not know the question ${n.map(o=>`"${o}"`).join(", ")}: it reads need:<trait>, drop:kind:<name> and drop:trait:<name>.`);let d={},i={};for(let[o,a]of Object.entries(e)){let l=te.exec(o);if(l){i[`${l[1]}:${l[2]}`]=q(a)??0;continue}let h=o.slice(5);xe(h)&&(d[h]=q(a)??0)}return{add:Object.keys(d).filter(o=>d[o]>=s.add).sort(se),drop:Object.entries(i).filter(([,o])=>o>=s.drop).map(([o])=>o.slice(o.indexOf(":")+1)),needs:d,drops:i}}function Ge(e){let{said:t,document:s}=e,r=[...new Set(e.add)].sort(se),n=[...new Set(e.drop)],d=E(s),i=r.filter(c=>!L(s,c)).map(c=>({what:"trait",name:c,words:y[c],brings:J[c]})),o=r.filter(c=>L(s,c)),a=Object.keys(s.kinds).filter(c=>n.includes(c)),l=d.filter(c=>n.includes(c.trait)&&!Object.hasOwn(s.kinds,c.trait)),h=[...a.map(c=>({what:"kind",name:c,words:T(s,c)})),...l.map(c=>({what:"trait",name:c.trait,words:y[c.trait]}))],C=Object.keys(s.kinds).filter(c=>!a.includes(c)).map(c=>({what:"kind",name:c,words:T(s,c)})),ne=[...a.map(c=>`All ${T(s,c)} records go, with their links.`),...l.flatMap(c=>{let F=[...c.fields,...c.relations];return F.length>0?[`What carries ${y[c.trait]} goes: ${O(F)}, with its values and links.`]:[]})],S=[];i.length>0&&S.push(`adds ${O(i.map(c=>c.words))}`),h.length>0&&S.push(`drops ${O(h.map(c=>c.words))}`),C.length>0&&S.push(`keeps ${O(C.map(c=>c.words))}`);let re=i.length+h.length===0?`Nothing in ${s.name} changes for that.`:`This ${O(S)}.`,ie=o.length>0?` ${s.name} already has ${O(o.map(c=>y[c]))}.`:"";return{said:t,add:i.map(c=>c.name),drop:h.map(c=>c.name),card:{said:`${re}${ie}`,adds:i,keeps:C,drops:h,breaking:ne}}}async function Ue(e){let{state:t,questions:s}=Ne(e.said,e.document),{answers:r,usage:n}=await e.decide(t,s),d=Ae(r,e.thresholds??{}),i=d.add.length+d.drop.length===0?null:Ge({said:e.said,document:e.document,add:d.add,drop:d.drop});return{proposal:i&&i.add.length+i.drop.length===0?null:i,reading:d,answers:r,usage:n}}export{Fe as a,Me as b,Ne as c,Ae as d,Ge as e,Ue as f};
@@ -1 +1 @@
1
- import{C as o}from"./chunk.DHPXRDT5.js";var r=Symbol.for("@graview/core:markdown");function t(e){let n=o(e);return!!n&&(n[r]===1||t(n.innerType))}export{t as a};
1
+ import{C as o}from"./chunk.6L6RUOSF.js";var r=Symbol.for("@graview/core:markdown");function t(e){let n=o(e);return!!n&&(n[r]===1||t(n.innerType))}export{t as a};
@@ -0,0 +1,2 @@
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 Ve,b as Yt}from"./chunk.KHRS2SKB.js";import"./chunk.T6PU3NKP.js";import"./chunk.U6V4KZF5.js";import"./chunk.6ZRVVRDQ.js";import{j as Ut,k as Gt,l as Qt}from"./chunk.JLNTE5CH.js";import"./chunk.DDSAFU3B.js";import"./chunk.4QMAYVPU.js";import"./chunk.ZONRIOIA.js";import"./chunk.NXHEOHRR.js";import"./chunk.HJCQ6I3S.js";import"./chunk.DJGZOPAS.js";import"./chunk.GFOZVQBQ.js";import{a as Wt}from"./chunk.5OS4SYHE.js";import"./chunk.G767NLBH.js";import{a as qt,b as O}from"./chunk.MEAUTBVM.js";import{a as Ye,b as jt}from"./chunk.OKHXXIMN.js";import"./chunk.NH3VXTGX.js";import"./chunk.6IMRCKB4.js";import"./chunk.RDUGUC7R.js";import"./chunk.TBY5IR7C.js";import"./chunk.PQTXM4VY.js";import"./chunk.BIDL7GQD.js";import"./chunk.7KX36ENH.js";import"./chunk.QDDDKEBH.js";import{b as Kt,c as Bt}from"./chunk.QKRQPUCE.js";import"./chunk.SPJ34VHA.js";import"./chunk.XOZU4OFA.js";import"./chunk.KBJ3UUER.js";import"./chunk.Q5WEOX3Q.js";import"./chunk.4O64QV2Y.js";import"./chunk.OYMN3IFX.js";import"./chunk.YFVJUHAK.js";import"./chunk.UQZ2P6KD.js";import"./chunk.NI4OPHTL.js";import"./chunk.U5KJQFAP.js";import"./chunk.FOHZPYUV.js";import"./chunk.IXYG65TM.js";import"./chunk.W6L2VAJG.js";import"./chunk.N3MXLORL.js";import{v as Ft}from"./chunk.3CLTABGP.js";import"./chunk.RD2FSSLV.js";import"./chunk.CVN2XFMF.js";import"./chunk.6TBQV3NO.js";import"./chunk.MT252WP4.js";import{l as _t}from"./chunk.VVIQSFM4.js";import{b as zt}from"./chunk.TQ3MNB6K.js";import"./chunk.VGYG2IBZ.js";import{a as Be,c as Ue,e as Ge,f as Nt,m as Qe}from"./chunk.RJ7VSWTA.js";import"./chunk.P43LPXXJ.js";import{$a as Pt,G as Se,Sa as Ke,Xa as Dt,Y as Ot,ga as xe,h as Lt,u as It}from"./chunk.JCKIJSW7.js";import"./chunk.SDO3U72B.js";import{Qb as Et,Tc as $t,Zb as Rt,qa as At,td as Ht,ua as ve,va as ke,zd as Ct}from"./chunk.6L6RUOSF.js";import"./chunk.FQLNBIQ5.js";import{b as ee}from"./chunk.AJZBJBMO.js";var s=ee(Se(),1);function Vt(a){return a.toLowerCase().normalize("NFKD").replace(/[̀-ͯ]/g,"").split(/[^\p{L}\p{N}]+/u).filter(Boolean)}function Jt(a,r){let n=Vt(r);if(n.length===0)return!0;let l=Vt(a);return n.every(b=>l.some(m=>m.startsWith(b)))}var te=ee(Se(),1),Je=250,Xe=.2,In=a=>a===void 0||a.off?void 0:a.fast??(a.decide?{model:a.name??"decide",decide:a.decide}:void 0);function Xt(a,r,n){let[l,b]=(0,te.useState)(null),m=(0,te.useRef)(n);m.current=n;let y=n.map(c=>`${c.key}\0${c.label}`).join(""),u=In(a);return(0,te.useEffect)(()=>{let c=r.trim();if(!u||c===""||m.current.length===0)return;let g=!0,x=new Map(m.current.map((w,f)=>[`r${f+1}`,w])),v=setTimeout(()=>{u.decide({typed:c},{row:{type:"choice",instructions:`Which of these menu rows does somebody typing \u201C${c}\u201D mean?`,criteria:{...Object.fromEntries([...x].map(([w,f])=>[w,f.label])),none:"None of these rows"}}}).then(w=>{a?.meter?.({tier:"fast",model:u.model,inputTokens:w.usage.inputTokens,outputTokens:w.usage.outputTokens,interaction:"menu"});let f=w.answers.row;if(!g||f?.type!=="choice")return;let k=new Map;for(let[G,ne]of Object.entries(f.probabilities)){let B=x.get(G);B&&k.set(B.key,ne)}if(f.choice==="none")return b({words:c,chances:new Map});let S=x.get(f.choice);S&&!k.has(S.key)&&k.set(S.key,f.confidence),b({words:c,chances:k})}).catch(()=>{})},Je);return()=>{g=!1,clearTimeout(v)}},[r,y,u===void 0]),l!==null&&l.words===r.trim()?l.chances:null}var N=ee(Se(),1),en=2,Zt,On=()=>Zt??=(__graviewPreload(import.meta.url,["./chunk.QNWGDG2Z.js","./chunk.BJUUSIQY.js","./chunk.U5KJQFAP.js","./chunk.VGYG2IBZ.js","./chunk.RJ7VSWTA.js","./chunk.P43LPXXJ.js","./chunk.JCKIJSW7.js","./chunk.SDO3U72B.js","./chunk.6L6RUOSF.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.CEJIH3CN.js")).catch(a=>(Zt=void 0,Promise.reject(a)));function tn(a,r,n,l,b,m,y=4){let u=a&&!a.off?a.told:void 0,c=l.trim()!=="",[g,x]=(0,N.useState)(null);(0,N.useEffect)(()=>x(null),[m]);let[v,w]=(0,N.useState)(!1);return(0,N.useEffect)(()=>{if(!u||m===null||m===void 0)return;let f=globalThis;if(!f.requestIdleCallback)return;let k=f.requestIdleCallback(()=>w(!0),{timeout:3e3});return()=>f.cancelIdleCallback?.(k)},[u,m]),(0,N.useEffect)(()=>{if(!u||g||!(c||v))return;let f=!0;return On().then(async k=>{let S=await k.readToldHere(u,r,n);f&&x({tellings:S,module:k})}).catch(()=>{}),()=>{f=!1}},[u,c,v,g,r,n]),(0,N.useMemo)(()=>g?c?g.module.toldSuggestionsFrom(g.tellings,r,n,l,b,y):g.module.toldForHere(g.tellings,r,n,b,3):[],[g,c,l,r,n,b,y])}var K=ee(Se(),1),nn=a=>a.replace(/\s*…\s*$/u,"").replace(/\s+/g," ").trim().toLowerCase();function rn(a,r,n={},l){if(!r)return[];let b=[],m=[];for(let y of a){if(y.destructive||y.setsAside||y.ties)continue;let u=y.open.filter(f=>!f.optional);if(u.length===0&&y.open.length===0&&l){let f=y.label.replace(/\b(it|this one|this)\b/u,`\u201C${l}\u201D`);m.push({key:`act:${y.id}`,label:f!==y.label?f:`${y.label} \u201C${l}\u201D`,mode:"chat",source:"act"});continue}let c=u[0];if(u.length!==1||c?.shape?.type!=="choice"||!c.shape.options||c.shape.options.length<2)continue;let g=c.shape.options,x=g.indexOf(String(r[c.name]??"")),v=x>=0?g[x+1]:void 0;if(v===void 0)continue;let w=n[c.name]?.[v]??v.replace(/[-_]+/g," ").replace(/^./u,f=>f.toUpperCase());b.push({key:`act:${y.id}:${v}`,label:`${y.label.replace(/\s*…\s*$/u,"")} to ${w}`,mode:"chat",source:"act"})}return[...b,...m]}function an(a,r){let n=new Set(r.map(nn));return a.filter(l=>!n.has(nn(l.label)))}var Dn=3,Pn=a=>a===void 0||a.off||a.suggestOnOpen===!1?void 0:a.fast??(a.decide?{model:a.name??"decide",decide:a.decide}:void 0),Ze=new WeakMap,on=(a,r)=>a?Ze.get(a)?.get(r):void 0;function Nn(a){let r=u=>a.filter(c=>c.source===u),[n,l,b]=[r("nudge"),r("told"),r("act")],m=[],y=Math.max(n.length,l.length,b.length);for(let u=0;u<y;u++)for(let c of[n,l,b])c[u]&&m.push(c[u]);return m}function ln(a,r,n,l){let b=Pn(a),m=r.map(v=>`${v.key}\0${v.label}`).join(""),[y,u]=(0,K.useState)(null),c=on(n.depends,m)??y;(0,K.useEffect)(()=>{if(on(n.depends,m)||(u(null),!b||r.length===0||n.opened===null||n.opened===void 0))return;let v=!0,w=new Map(r.map((k,S)=>[`s${S+1}`,k])),f={pick:{type:"choice",instructions:`Somebody right-clicked \u201C${n.name}\u201D in an app. Which of these would they most likely want to do next?`,criteria:Object.fromEntries([...w].map(([k,S])=>[k,S.label]))}};if(n.better)for(let[k,S]of w)f[`about_${k}`]={type:"choice",instructions:`Is \u201C${S.label}\u201D about how \u201C${n.name}\u201D looks or is laid out, or about the records in it?`,criteria:{look:"How it looks or is laid out: style, size, what each row or card shows, its order or grouping",records:"The records themselves: changing, finishing, adding, assigning or asking about them"}};return b.decide({on:n.name},f).then(k=>{if(a?.meter?.({tier:"fast",model:b.model,inputTokens:k.usage.inputTokens,outputTokens:k.usage.outputTokens,interaction:"menu"}),!v)return;let S=k.answers.pick,G=R=>S?.type==="choice"?S.probabilities[R]??(S.choice===R?S.confidence:0):0,ne=[...w.keys()].sort((R,oe)=>G(oe)-G(R)).map(R=>w.get(R).key),B=new Map;for(let[R,oe]of w){let Q=k.answers[`about_${R}`];Q?.type==="choice"&&B.set(oe.key,Q.choice==="look"?"better":"chat")}let p={said:m,order:ne,modes:B};if(n.depends){let R=Ze.get(n.depends)??new Map;R.set(m,p),Ze.set(n.depends,R)}u(p)}).catch(()=>{}),()=>{v=!1}},[m,n.opened,n.depends,b===void 0]);let g=(0,K.useMemo)(()=>(c&&c.said===m?c.order.map(w=>r.find(f=>f.key===w)).filter(Boolean):Nn(r)).slice(0,Dn).map(w=>({...w,mode:c?.modes.get(w.key)??w.mode})),[c,m,r]),x=(0,K.useRef)(g);return l||(x.current=g),l?x.current:g}var i=ee(Ot(),1);function mo(a,r,n){let l=r.on??r.about[r.about.length-1];Ut(a,r.about,{...n,pins:Ve(),...l===void 0?{}:{focus:l}})}function fo({placement:a="float",chosen:r=!0}={}){let{menuAt:n}=xe();return a==="menu"&&n===null?r?(0,i.jsx)(Wn,{}):null:(0,i.jsx)(_n,{placement:a})}function Wn(){let{store:a,setMenuAt:r,view:n}=xe(),{selection:l}=Ke(),b=(0,s.useRef)(null),[m,y]=(0,s.useState)(null),[u,c]=(0,s.useState)(null);(0,s.useLayoutEffect)(()=>{let x=b.current?.offsetParent??b.current?.parentElement;if(!x)return;let v=x.getBoundingClientRect(),w=Math.round(v.width);w!==m&&y(w);let f=[...x.querySelectorAll('[data-testid="lines-key"][data-graview-up-row], [data-testid="overview"]')].map(S=>S.getBoundingClientRect()).filter(S=>S.width>0&&S.top-v.top<40),k=f.length>0?Math.round(v.right-Math.min(...f.map(S=>S.left))+8):null;k!==u&&c(k)});let g=l.length===1&&!n.overview?a.graph.getNode(l[0]):void 0;return!g||m===null||m>=un?(0,i.jsx)("span",{ref:b,hidden:!0}):(0,i.jsx)("button",{type:"button",ref:b,"data-testid":"chosen-acts","aria-label":`What can be done with ${O(a,g.id)}`,"aria-haspopup":"menu",onClick:x=>{let v=x.currentTarget.getBoundingClientRect();r({x:Math.round(v.right),y:Math.round(v.bottom+4),on:g.id})},style:{position:"absolute",...u!==null?{right:u,top:14,minHeight:38}:{right:"calc(14px + var(--graview-dock, 0px))",top:98},zIndex:"var(--graview-layer-overview, 10)",...u===null?{minHeight:30}:{},padding:"0 12px",borderRadius:8,fontSize:"0.8125rem",background:"var(--graview-float)",boxShadow:"var(--graview-lift-low)"},children:"Acts\u2026"})}function zn(a,r,n){let l=u=>ke(a.schema.tryDefinition(u),u),b=u=>At(a.schema,u).toLowerCase(),m=r.filter(u=>a.allMutations().some(c=>{let g=c.subject;return g?.kinds==="*"||(g?.kinds??[]).includes(u)})),y=n.length!==1||n.some(u=>u.startsWith("aggregate:"));return m.length>0&&y?r.length===1?`Nothing here is done to all the ${b(r[0])} at once. Right-click one ${l(r[0])} to see what you can do with it.`:"Nothing here is done to all of these at once. Right-click one of them to see what you can do with it.":m.length>0?`There is nothing you can do with ${r.length===1?ve(l(r[0])):"these"} here right now.`:r.length===1?`There is nothing to do with ${ve(l(r[0]))} in this app yet.`:"There is nothing to do with these in this app yet."}var un=564;function _n({placement:a}){let{store:r,menuAt:n,setMenuAt:l,view:b,signIn:m,aiDesk:y,ai:u,principal:c}=xe(),g=(0,s.useRef)(null),x=(0,s.useRef)(null),v=(0,s.useRef)(null),w=(0,s.useRef)(null);n?.returnTo&&(w.current=n.returnTo);let f=e=>{let t=e.closest("[data-graview-asking]")?.getAttribute("data-graview-asking"),o=e.getAttribute("data-pin-for"),d=t??e.getAttribute("data-affordance")??(o===null?null:`pin:${o}`)??e.getAttribute("data-menu-item");x.current=d===null?null:{key:d,element:e}};(0,s.useEffect)(()=>{let e=g.current,t=x.current;if(t===null||document.activeElement!==document.body||t.element.isConnected)return;let o=t.key;if(!e){x.current=null;let M=w.current;w.current=null,(M?.isConnected?M:v.current)?.focus();return}((o.startsWith("pin:")?e.querySelector(`[data-pin-for="${CSS.escape(o.slice(4))}"]`):null)??e.querySelector(`[data-affordance="${CSS.escape(o)}"]:not([disabled])`)??e).focus()});let[k,S]=(0,s.useState)(null);(0,s.useLayoutEffect)(()=>{let e=g.current?.offsetParent??g.current?.parentElement;if(e instanceof HTMLElement&&(v.current=e),!e)return;let t=e.getBoundingClientRect();S(o=>o&&o.left===t.left&&o.top===t.top&&o.width===t.width&&o.height===t.height?o:{left:t.left,top:t.top,width:t.width,height:t.height})});let{selection:G,set:ne,clear:B}=Ke(),p=n?.about??G,[R,oe]=(0,s.useState)(()=>Ve()),Q=n?.on??p[p.length-1],Ae=n?.about,gn=(0,s.useMemo)(()=>({pins:R,...Q===void 0?{}:{focus:Q},...Ae?{about:Ae}:{}}),[R,Q,Ae]),pn=(0,s.useMemo)(()=>new Set(r.allMutations().filter(e=>e.pinned).map(e=>e.name)),[r]),{affordances:T,withheld:de,observations:Ee}=Gt(gn),re=$t(de,m),D=re?Gn:de,hn=n===null?null:{face:n.face??"scene",on:n.on,about:p,field:n.field,place:n.place,href:n.href,act:n.act,column:n.column,...n.section?{section:n.section}:{},...n.page?{page:n.page}:{},element:n.returnTo},P=Ft(hn),tt=Ee.some(e=>e.id.startsWith("schema:waits:")),{apply:mn,preview:fn}=Qt(),[ie,Y]=(0,s.useState)(null),[Re,yn]=(0,s.useState)(null),[nt,$e]=(0,s.useState)(!1),[ot,rt]=(0,s.useState)(!1),[ue,ce]=(0,s.useState)(""),bn=jt({letters:n===null}),[H,ge]=(0,s.useState)(""),it=(0,s.useRef)(null);(0,s.useEffect)(()=>ge(""),[n]);let V=Nt(y),U=tn(V?u:void 0,r,c,n===null?"":H,n?.on,n),wn=(0,s.useMemo)(()=>n===null?[]:[...P.start.flatMap(e=>(e.items??[]).map(t=>({key:`item:${t.id}`,label:t.label}))),...T.map(e=>({key:`act:${e.id}`,label:e.label})),...P.end.flatMap(e=>(e.items??[]).map(t=>({key:`item:${t.id}`,label:t.label}))),...U.map(e=>({key:e.key,label:e.label}))],[n,P,T,U]),at=Xt(u,n===null?"":H,wn),[ae,lt]=(0,s.useState)(!1),He=(0,s.useRef)({words:"",rank:null});ae||(He.current={words:H.trim(),rank:at});let W=ae?He.current.words===H.trim()?He.current.rank:null:at,L=(0,s.useMemo)(()=>[...P.start,...P.end].find(e=>e.mode)?.mode,[P]),$=n===null?[]:[...V?["chat"]:[],...L?["better"]:[]],[vn,st]=(0,s.useState)(null),[Ce,kn]=(0,s.useState)(null);(0,s.useEffect)(()=>st(null),[n,H]),(0,s.useEffect)(()=>{let e=H.trim();if(!L||!V||e==="")return;let t=!0,o=setTimeout(()=>void L.claims(e).then(d=>t&&kn({words:e,mode:d?"better":"chat"}),()=>{}),Je);return()=>{t=!1,clearTimeout(o)}},[H,L,V]);let pe=$.length===0?null:vn??($.length===1?$[0]:Ce&&Ce.words===H.trim()?Ce.mode:"chat"),Sn=(0,s.useMemo)(()=>{if(n===null||$.length===0)return[];let e=(L?.nudges?.()??[]).map((C,q)=>({key:`nudge:${q}`,label:C,mode:"better",source:"nudge"})),t=U.slice(0,2).map(C=>({key:C.key,label:C.label,mode:"chat",source:"told"})),o=n.on??(p.length===1?p[0]:void 0),d=o!==void 0?r.graph.getNode(o):void 0,M=rn(T,d,d?Ht(r.schema,[d.kind])[d.kind]:void 0,d?O(r,d.id):void 0).slice(0,2);return an(V?[...e,...t,...M]:e,[...T,...de].map(C=>C.label))},[n,$.length,L,U,T,de,V,r,p]),xn=(0,s.useMemo)(()=>(n?.on!==void 0?r.graph.getNode(n.on):void 0)??jn(r),[n,r,T]),Le=ln(u,Sn,{name:n?.title??(p.length===1?O(r,p[0]):"this"),opened:n,better:L!==void 0,depends:xn},ae),[dt,Ie]=(0,s.useState)(null),Oe=(0,s.useRef)([]),he=(e,t)=>{try{return fn(e,t),mn(e,t),Ie(null),l(null),Oe.current=[],!0}catch(o){return Ie(_t(r.schema,r.allMutations(),o)),Oe.current=o instanceof Rt?o.issues.map(d=>String(d.path[0]??"")).filter(Boolean):[],!1}},me=[...new Set(p.flatMap(e=>{let t=r.graph.getNode(e);return t?[t.kind]:[]}))],fe=me.length>0?me:[...new Set(p.flatMap(e=>It(e)))],A=p.length===1?Lt(p[0]):null,De=A?{from:r.graph.getNode(A.from),to:r.graph.getNode(A.to)}:null,ut=A?Bt(r,A):void 0,ct=ut?.provisional?ut:void 0,gt=A?(()=>{let e=r.schema.tryDefinition(r.graph.getNode(A.from)?.kind??"")?.edges?.[A.kind],t=r.graph.getNode(A.to);return e?.inverse&&t?`From ${O(r,t.id)}: ${e.inverse}`:null})():null;(0,s.useEffect)(()=>{Y(null),$e(!1),rt(!1),Ie(null),ce("")},[p,n?.about]);let pt=(0,s.useRef)(null);(0,s.useEffect)(()=>{let e=n?.begin;if(!e||pt.current===n)return;let t=T.find(d=>d.mutation===e.act);if(!t)return;pt.current=n;let o={...e.given};yn({id:t.id,given:o}),t.open.every(d=>d.name in o)?he({...t,args:{...t.args,...o},open:[]}):Y(t.id)},[n,T]);let h=n!==null,Mn=a==="menu"&&!h,J=(0,s.useRef)(n);J.current=n;let ht=Pt("acts",{open:h&&a==="menu",onOpenChange:e=>{e||l(null)},at:()=>J.current?{x:J.current.x,y:J.current.y}:null,returnTo:()=>{let e=J.current?.returnTo;if(e?.isConnected)return e;let t=J.current?.on;return t?document.querySelector(`[data-graview-view="${CSS.escape(t)}"]`):null},align:"start"}),mt=(k?.width??Number.POSITIVE_INFINITY)<un;if((0,s.useLayoutEffect)(()=>{let e=g.current?.offsetParent;if(!e||!mt||h)return;let t=g.current?.getBoundingClientRect().height??0,o=`${Math.round(t)+20}px`;if(e.style.paddingBottom===o)return;let d=e.style.paddingBottom;return e.style.paddingBottom=o,()=>{e.style.paddingBottom=d}}),p.length===0&&!h)return null;let ft=n?.title!==void 0||p.length>0&&!(p.length===1&&p[0]===b.focusId),le=h?4:Math.max(1,Math.min(9,T.length)),z=[...T.filter(e=>e.provider==="invariant"&&!e.destructive),...T.filter(e=>e.pinned&&e.provider!=="invariant"&&!e.destructive),...T.filter(e=>!e.ties&&!e.destructive&&!e.pinned&&e.provider!=="invariant"),...T.filter(e=>e.ties&&!e.destructive&&!e.pinned&&e.provider!=="invariant"),...T.filter(e=>e.destructive)],yt=z.length>le&&!h,bt=ue.trim().toLowerCase(),_=yt&&bt.length>0?z.filter(e=>`${e.label} ${e.why}`.toLowerCase().includes(bt)):null,E=h?H.trim():"",Pe=(e,t)=>E===""||Jt(t,E)||(W?.get(e)??0)>=Xe,F=(_??(nt||h?z:z.slice(0,le))).filter(e=>Pe(`act:${e.id}`,e.label)),wt=_||E?0:z.length-F.length,ye=E?D.filter(e=>Pe(`act:${e.id}`,e.label)):D,vt=e=>E===""?e:e.flatMap(t=>{let o=(t.items??[]).filter(d=>Pe(`item:${d.id}`,d.label));return o.length>0?[{id:t.id,...t.heading?{heading:t.heading}:{},items:o}]:[]}),j=h&&!nt&&E==="",Ne=vt(P.start).filter(e=>(e.items?.length??0)>0||e.render),be=vt(P.end).filter(e=>(e.items?.length??0)>0||e.render),kt=new Set(j?F.slice(le).map(e=>e.id):[]),We=j&&z.length>=le,Tn=j&&(z.length>le||We&&D.length>0||Ee.length>0||P.end.some(e=>(e.items?.length??0)>0||e.render)),An=n?.title??(p.length===1?O(r,p[0]):p.length>1?`${p.length} selected`:"this"),St=h&&E!==""&&$.length>0,ze=h&&E!==""?(W===null?U:[...U].sort((e,t)=>(W.get(t.key)??0)-(W.get(e.key)??0))).slice(0,en):[],En=[...Ne.flatMap(e=>(e.items??[]).map(t=>`item:${t.id}`)),...F.filter(e=>!e.destructive).map(e=>`act:${e.id}`),...be.flatMap(e=>(e.items??[]).map(t=>`item:${t.id}`)),...ze.map(e=>e.key)],Rn=W===null?void 0:[...En].sort((e,t)=>(W.get(t)??0)-(W.get(e)??0)).find(e=>(W.get(e)??0)>=Xe),I=E===""?null:Rn??Ne.flatMap(e=>(e.items??[]).map(t=>`item:${t.id}`))[0]??F.filter(e=>!e.destructive).map(e=>`act:${e.id}`)[0]??be.flatMap(e=>(e.items??[]).map(t=>`item:${t.id}`))[0]??(St&&pe?"mode":null),$n=(e=E)=>{if(!n)return;let t=n.returnTo??null,o=Be(g.current);l(null),Ge(y,{pointed:{on:n.on,about:p,field:n.field,place:n.place},...e?{asked:e}:{},returnTo:t,...o?{from:o}:{}})},_e=(e,t=E)=>{if(n){if(e==="chat")return $n(t);l(null),L?.open(t||void 0)}},Hn=e=>{let t=e.source==="told"?U.find(o=>o.key===e.key):void 0;if(t&&e.mode==="chat")return xt(t);_e(e.mode==="better"&&L?"better":"chat",e.label)},xt=e=>{if(!n)return;let t=n.returnTo??null,o=Be(g.current);l(null),Ge(y,{pointed:{on:n.on,about:p,field:n.field,place:n.place},asked:e.label,suggested:e.telling.id,returnTo:t,...o?{from:o}:{}})},Fe=()=>[...g.current?.querySelectorAll("[data-affordance]:not([disabled]), [data-menu-item]:not([data-menu-mode])")??[]].filter(e=>e.closest("[data-graview-asking], [hidden]")===null),je=()=>g.current?.querySelector("[data-menu-lit]")??null,Cn=e=>{let t=e.target,o=it.current;if(!o||t===o||e.metaKey||e.ctrlKey||e.altKey||t.closest("[data-graview-asking]")||Fn(t))return;let d=e.key.length===1&&e.key!==" ";if(d||e.key==="Backspace"&&H!==""){e.preventDefault(),e.stopPropagation(),d&&H===""&&y&&Ue(y),ge(M=>d?M+e.key:M.slice(0,-1)),o.focus({preventScroll:!0});return}e.key==="ArrowUp"&&Fe()[0]===t&&(e.preventDefault(),e.stopPropagation(),o.focus({preventScroll:!0}))},we=[];for(let e of F){let t=!h&&e.provider==="invariant",o=!h&&!t&&e.pinned!==void 0&&!e.destructive,d=!h&&!t&&!o&&e.ties===!0&&!e.destructive,M=t?e.why:o?"pinned":d?"its ties":null,C=t?"violation":o||d?"ties":null,q=we[we.length-1];q&&q.heading===M?q.items.push(e):we.push({heading:M,tone:C,items:[e]})}let X=T.find(e=>e.id===ie),qe=X&&Re?.id===X.id?{...X,args:{...X.args,...Re.given},open:X.open.filter(e=>!(e.name in Re.given))}:X,se=p.length===1?O(r,p[0]):null,Mt=e=>{if(!se)return e;let t=e.startsWith(`"${se}"`)?e.slice(se.length+2):e.startsWith(se)?e.slice(se.length):null;if(t===null)return e;let o=t.trimStart();return o.length===0?e:o[0].toUpperCase()+o.slice(1)},Ln=new Set(h?[]:F.filter(e=>e.provider==="invariant").map(e=>e.why)),Z=Ee.filter(e=>!Ln.has(e.text)).map(e=>({...e,text:Mt(e.text)}));return Mn?null:(0,i.jsxs)("section",{...h?ht.pane:{},ref:e=>{g.current=e,h&&ht.pane.ref(e)},"aria-label":"Inspector","data-graview-offstage":"","data-testid":h?"context-menu":"inspector-strip",tabIndex:-1,onFocus:e=>f(e.target),onBlur:e=>{e.relatedTarget!==null&&(x.current=null)},onMouseDown:e=>e.stopPropagation(),onKeyDownCapture:h?e=>Cn(e):void 0,onPointerMove:h?e=>{let t=e.target.closest?.("[data-menu-item], [data-affordance]")!=null;t!==ae&&lt(t)}:void 0,onPointerLeave:h&&ae?()=>lt(!1):void 0,style:{...h?Dt:{position:"absolute",zIndex:Ct("rail")},boxSizing:"border-box",display:"flex",flexDirection:"column",gap:7,padding:"9px 12px",borderRadius:"var(--graview-radius, 12px)",border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)",...h?{width:300,maxHeight:"min(52cqh, 420px)",overflow:"auto"}:mt?{left:10,right:10,width:"auto",bottom:10,maxHeight:"min(42cqh, 300px)",overflow:"auto"}:{left:14,top:b.overview?"min(296px, 38cqh)":44,width:236,maxHeight:b.overview?"calc(100cqh - min(296px, 38cqh) - 20px)":"calc(68cqh - 94px)",overflow:"auto"}},children:[(0,i.jsx)("h2",{style:{...Qe,margin:0},children:"Inspector"}),(0,i.jsxs)("div",{style:{display:ft||!h?"flex":"none",alignItems:"baseline",flexWrap:"wrap",gap:"2px 8px",minWidth:0,paddingRight:h?0:24},children:[ft?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("strong",{style:{fontSize:"0.9375rem",whiteSpace:"nowrap"},children:n?.title??(p.length===1?O(r,p[0]):`${p.length} selected`)}),me.length>0||A?(0,i.jsx)("span",{style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)",whiteSpace:"nowrap"},children:A?"relation":me.map(e=>ke(r.schema.tryDefinition(e),e)).join(" \xB7 ")}):null,p.length===1&&!A&&n?.face!=="pages"?(0,i.jsx)("span",{style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)",whiteSpace:"nowrap"},children:b.expanded.includes(p[0])?"\xB7 double-click closes":"\xB7 double-click opens"}):null]}):null,(0,i.jsx)("span",{style:{flex:"1 1 auto"}})]}),h?null:(0,i.jsx)("button",{type:"button",onClick:()=>{l(null),B()},"aria-label":"Clear selection",title:"Clear selection",style:{position:"absolute",top:6,right:6,flex:"0 0 auto",width:24,height:24,display:"grid",placeItems:"center",padding:0,fontSize:"0.875rem",lineHeight:1,borderRadius:7},children:"\xD7"}),h?(0,i.jsx)("input",{ref:it,type:"text","data-testid":"menu-type",...qn()?{}:{"data-graview-not-first":""},value:H,onChange:e=>{H===""&&e.target.value!==""&&y&&Ue(y),ge(e.target.value)},onKeyDown:e=>{if(e.key==="Enter"){e.preventDefault();let t=je();t?.focus({preventScroll:!0}),t?.click()}else e.key==="ArrowDown"?(e.preventDefault(),(je()??Fe()[0])?.focus()):e.key==="ArrowUp"?(e.preventDefault(),Fe().at(-1)?.focus()):e.key==="Enter"&&!je()&&pe?(e.preventDefault(),_e(pe)):e.key==="Escape"&&H!==""&&(e.preventDefault(),e.stopPropagation(),ge(""))},placeholder:$.length>0?"Tell Graview what you want\u2026":"Type to filter\u2026","aria-label":$.length>0?`Tell Graview what you want with ${An}, or filter what can be done here`:"Filter what can be done here",autoComplete:"off",autoCorrect:"off",spellCheck:!1,enterKeyHint:"go",style:{boxSizing:"border-box",width:"100%",font:"inherit",fontSize:"max(1rem, 16px)",padding:"5px 9px",borderRadius:8,border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",color:"var(--graview-ink)"}}):null,h&&$.length>0?(0,i.jsx)("div",{role:"group","aria-label":$.length>1?"Chat or Better UI":"Chat","data-testid":"menu-modes",style:{display:"flex",gap:6},children:$.map(e=>{let t=pe===e,o=e==="chat"?"Chat":L?.label??"Better UI",d=e==="chat"?"\u{1F4AC}":L?.mark??"\u2728";return(0,i.jsxs)("button",{type:"button","data-menu-mode":e,...e==="chat"?{"data-menu-item":"ask-typed"}:{},"data-menu-lit":I==="mode"&&t||void 0,"aria-pressed":t,"aria-label":E?`${o}: ${E}`:o,onClick:()=>_e(e),onKeyDown:M=>{if(M.key!=="ArrowLeft"&&M.key!=="ArrowRight")return;M.preventDefault(),M.stopPropagation();let C=$[($.indexOf(e)+(M.key==="ArrowRight"?1:$.length-1))%$.length];st(C),g.current?.querySelector(`[data-menu-mode="${C}"]`)?.focus()},style:t?Kn:Bn,children:[(0,i.jsx)("span",{"aria-hidden":"true",children:d})," ",o,I==="mode"&&t?Te:null]},e)})}):null,h&&E===""&&Le.length>0?(0,i.jsxs)("div",{"data-menu-section":"suggested",role:"group","aria-label":"Suggested",style:{display:"grid",gap:2,borderTop:"1px solid var(--graview-edge)",paddingTop:5,minHeight:Le.length*31+22},children:[(0,i.jsx)("span",{"aria-hidden":"true",style:Un,children:"Suggested"}),Le.map((e,t)=>(0,i.jsxs)("button",{type:"button","data-menu-item":`suggested-${t}`,"data-suggested-mode":e.mode,onClick:()=>Hn(e),style:{...Me,display:"flex",gap:8,alignItems:"baseline",minWidth:0},children:[(0,i.jsx)("span",{"aria-hidden":"true",style:{color:"var(--graview-accent)"},children:"\u2726"}),(0,i.jsx)("span",{title:e.label,style:{flex:"1 1 auto",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.label}),(0,i.jsxs)("span",{title:e.mode==="better"?"Better UI":"Chat",style:{fontSize:"0.8125rem"},children:[(0,i.jsx)("span",{"aria-hidden":"true",children:e.mode==="better"?"\u2728":"\u{1F4AC}"}),(0,i.jsx)("span",{style:Qe,children:e.mode==="better"?" (Better UI)":" (Chat)"})]})]},e.key))]}):null,A&&De?(0,i.jsxs)("div",{style:{display:"grid",gap:6},children:[gt?(0,i.jsx)("p",{"data-testid":"edge-said",style:{margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)"},children:gt}):null,ct?(0,i.jsx)("p",{"data-testid":"edge-provisional",style:{margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)"},children:Kt(ct)}):null,(0,i.jsx)("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},children:[["from",De.from],["to",De.to]].map(([e,t],o)=>(0,i.jsxs)(s.Fragment,{children:[o===1?(0,i.jsx)("span",{"aria-hidden":"true",style:{color:"var(--graview-ink-faint)"},children:"\u2192"}):null,t?(0,i.jsx)("button",{type:"button","data-testid":`edge-${e}`,onClick:()=>ne([t.id]),title:`Select ${O(r,t.id)}`,style:{fontSize:"0.8125rem",padding:"3px 9px",borderRadius:6},children:O(r,t.id)}):(0,i.jsx)("span",{style:{fontSize:"0.8125rem",color:"var(--graview-ink-faint)"},children:"gone"})]},e))})]}):null,!A&&p.length===1&&Et(r,p[0])?(0,i.jsx)("p",{"data-testid":"left-alone",style:{margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)"},children:"Left alone: nothing automated changes it."}):null,Z.length>0?(0,i.jsx)("div",{"data-testid":"observations",title:Z.map(e=>e.text).join(`
2
+ `),hidden:j,style:{display:j?"none":"grid",gap:3},children:Z.slice(0,2).map(e=>(0,i.jsxs)("p",{style:{margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)"},children:[e.text,e===Z[1]&&Z.length>2?(0,i.jsxs)("span",{style:{color:"var(--graview-ink-faint)"},children:[" +",Z.length-2]}):null]},e.id))}):null,h?Ne.map(e=>(0,i.jsx)(dn,{section:e,lit:I,close:()=>l(null)},e.id)):null,dt?(0,i.jsx)("p",{"data-testid":"refused",style:{margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-warn)"},children:dt}):null,yt?(0,i.jsx)("input",{"data-testid":"action-filter",value:ue,onChange:e=>ce(e.target.value),placeholder:`Filter ${z.length} actions\u2026`,"aria-label":"Filter actions",onKeyDown:e=>{if(e.key==="Escape"){e.stopPropagation(),ue.length>0?ce(""):e.currentTarget.blur();return}if(e.key==="Enter"&&_?.length===1){let t=_[0];if(t.destructive)return;t.open.length>0?Y(t.id):he(t)&&ce("")}},style:{font:"inherit",fontSize:"0.875rem",padding:"5px 9px",borderRadius:8,border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",color:"var(--graview-ink)"}}):null,_!==null&&_.length===0?(0,i.jsxs)("p",{"data-testid":"no-matches",style:{margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)"},children:["Nothing offered here matches \u201C",ue.trim(),"\u201D."]}):null,E!==""&&F.length===0||re&&T.length===0||T.length===0&&!tt&&p.length===0?null:T.length===0&&!tt?(0,i.jsx)("p",{"data-testid":"no-affordances",style:{margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)"},children:D.length>0?`Nothing you may do with ${A?"this relation":fe.length===1?ve(ke(r.schema.tryDefinition(fe[0]),fe[0])):"this mix of kinds"} \u2014 ${D.length} action${D.length===1?"":"s"} withheld.`:A?`There is nothing to do with this line here: nothing in this app makes or breaks \u201C${zt(r.schema,r.graph.getNode(A.from)?.kind??"",A.kind,"out")}\u201D.`:zn(r,fe,p)}):(0,i.jsxs)("ol",{...bn,"data-testid":"affordances",style:{margin:0,padding:0,listStyle:"none",display:"flex",flexDirection:"column",flexWrap:"nowrap",gap:2},children:[we.map((e,t)=>(0,i.jsxs)(s.Fragment,{children:[e.heading?(0,i.jsxs)("li",{"data-graview-heading":e.tone,style:{fontSize:"0.75rem",lineHeight:1.4,color:e.tone==="violation"?"var(--graview-warn)":"var(--graview-ink-faint)",...e.tone!=="violation"?{letterSpacing:"0.12em",textTransform:"uppercase",fontSize:"0.75rem"}:{},padding:"2px 2px 1px",marginTop:t>0?6:0},children:[e.tone==="violation"?"\u26A0 ":"",e.tone==="violation"?Mt(e.heading):e.heading]}):t>0?(0,i.jsx)("li",{"aria-hidden":"true",style:{borderTop:"1px solid var(--graview-edge)",margin:"6px 0 3px"}}):null,e.items.map(o=>(0,i.jsxs)("li",{hidden:kt.has(o.id),style:{display:kt.has(o.id)?"none":"flex",gap:2,alignItems:"stretch"},onKeyDown:d=>{if(d.metaKey||d.ctrlKey||d.altKey)return;let M=d.currentTarget.querySelector("[data-affordance]"),C=d.currentTarget.querySelector("[data-pin-for]"),q=d.target===C,Tt=d.key==="ArrowRight"&&!q?C:q&&["ArrowLeft","ArrowUp","ArrowDown"].includes(d.key)?M:null;Tt&&(d.preventDefault(),d.stopPropagation(),Tt.focus())},children:[(0,i.jsxs)("button",{type:"button",[Ye]:"","data-affordance":o.id,"data-rank":o.rank,"data-graview-destructive":o.destructive||void 0,"data-menu-lit":I===`act:${o.id}`||void 0,"aria-pressed":ie===o.id,title:o.why,style:{padding:"5px 10px",fontSize:"0.875rem",borderRadius:8,width:"100%",textAlign:"left",borderWidth:1,borderStyle:"solid",borderColor:ie===o.id?"var(--graview-accent)":h?"transparent":"var(--graview-edge)",background:h?"none":"var(--graview-panel)",boxShadow:"none",...o.destructive?{color:"var(--graview-warn)"}:{},...ie===o.id?{color:"var(--graview-accent)"}:{},...I===`act:${o.id}`?et:{}},onClick:()=>{if(o.open.length>0){Y(ie===o.id?null:o.id);return}he(o)},children:[o.label,o.open.length>0?(0,i.jsx)("span",{style:{color:"var(--graview-ink-faint)"},children:" \u2026"}):null,I===`act:${o.id}`?Te:null,_?.length===1&&_[0]?.id===o.id&&!o.destructive?(0,i.jsx)("span",{"aria-hidden":"true",title:"Enter runs it",style:{float:"right",color:"var(--graview-ink-faint)",fontSize:"0.75rem"},children:"\u21B5"}):null]}),(0,i.jsx)("button",{type:"button","data-testid":"pin-toggle",tabIndex:-1,"data-pin-for":o.mutation,"aria-pressed":o.pinned!==void 0,"aria-label":o.pinned!==void 0?`Unpin ${o.label}`:`Pin ${o.label}`,title:o.pinned==="declared"?"Pinned by the app \u2014 unpin it for yourself":o.pinned==="user"?"Unpin":"Pin to the top",onClick:()=>oe(Yt(R,o.mutation,pn.has(o.mutation))),style:{flex:"0 0 auto",width:24,minHeight:24,display:"grid",placeItems:"center",padding:0,fontSize:"0.75rem",border:"1px solid transparent",background:"none",boxShadow:"none",borderRadius:7,color:o.pinned==="user"?"var(--graview-accent)":o.pinned==="declared"?"var(--graview-ink-muted)":"var(--graview-ink-faint)"},children:o.pinned!==void 0?"\u2605":"\u2606"})]},o.id))]},`${e.heading??"plain"}-${t}`)),wt>0&&!h?(0,i.jsx)("li",{children:(0,i.jsxs)("button",{type:"button",[Ye]:"",onClick:()=>$e(!0),title:`Show all ${T.length} actions`,style:{padding:"4px 10px",fontSize:"0.875rem",borderRadius:8},children:["Show ",wt," more"]})}):null]}),re?(0,i.jsx)("button",{type:"button","data-testid":"sign-in",onClick:()=>{l(null),re.run()},style:Wt,children:re.label}):null,ye.length>0?(0,i.jsxs)("ul",{hidden:We,"data-testid":"withheld",style:{margin:0,padding:0,listStyle:"none",display:We?"none":"flex",flexDirection:"column",flexWrap:"nowrap",gap:2},children:[ye.slice(0,h||ot?ye.length:3).map(e=>(0,i.jsxs)("li",{style:{display:"grid",gap:2},children:[(0,i.jsx)("button",{type:"button",disabled:!0,"data-affordance":e.id,"data-rank":e.rank,"data-withheld":e.refusal.wouldNeed.join(",")||"nobody",style:{padding:"4px 10px",fontSize:"0.875rem",borderRadius:8,borderStyle:"dashed",width:"100%",textAlign:"left",background:"none"},children:(0,i.jsx)("s",{children:e.label})}),(0,i.jsx)("span",{"data-testid":"withheld-why",style:{fontSize:"0.8125rem",lineHeight:1.4,color:"var(--graview-ink-muted)",padding:"0 10px"},children:e.refusal.message})]},e.id)),!h&&!ot&&D.length>3?(0,i.jsx)("li",{children:(0,i.jsxs)("button",{type:"button","data-testid":"withheld-more",onClick:()=>rt(!0),title:`Show all ${D.length} actions this seat may not take`,style:{padding:"4px 10px",fontSize:"0.875rem",borderRadius:8},children:["Show ",D.length-3," more withheld"]})}):null]}):null,Tn?(0,i.jsx)("button",{type:"button","data-menu-item":"more",onClick:e=>{let o=[...e.currentTarget.parentElement?.querySelectorAll("li[hidden], [data-menu-more][hidden]")??[]];$e(!0),requestAnimationFrame(()=>{for(let d of o){let M=d.querySelector("button:not([disabled]), a[href], input");if(M&&M.getClientRects().length>0)return M.focus()}})},style:{...Me,color:"var(--graview-ink-muted)"},children:"More\u2026"}):null,h&&be.length>0?(0,i.jsx)("div",{"data-menu-more":"",hidden:j,style:{display:j?"none":"contents"},children:be.filter(e=>!j||!e.render).map(e=>(0,i.jsx)(dn,{section:e,lit:I,close:()=>l(null)},e.id))}):null,ze.length>0?(0,i.jsx)("div",{"data-menu-section":"told",role:"group","aria-label":"Suggested",style:{display:"grid",gap:2,borderTop:"1px solid var(--graview-edge)",paddingTop:5},children:ze.map(e=>(0,i.jsxs)("button",{type:"button","data-menu-item":e.key,"data-told-suggestion":e.telling.id,"data-menu-lit":I===e.key||void 0,onClick:()=>xt(e),style:{...Me,...I===e.key?et:{}},children:[e.label,I===e.key?Te:null]},e.key))}):null,h&&E!==""&&!St&&I===null&&F.length===0&&ye.length===0?(0,i.jsxs)("p",{"data-testid":"menu-no-match",style:{margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)"},children:["Nothing here matches \u201C",E,"\u201D."]}):null,qe?(0,i.jsx)(qt,{affordance:qe,onApply:e=>{if(he(qe,e))Y(null);else return Oe.current},onCancel:()=>Y(null)}):null]})}function Fn(a){return a.isContentEditable||a instanceof HTMLTextAreaElement||a instanceof HTMLSelectElement?!0:a instanceof HTMLInputElement&&!["button","submit","reset","checkbox","radio","image","file","color","range"].includes(a.type)}var Me={padding:"5px 10px",fontSize:"0.875rem",borderRadius:8,width:"100%",textAlign:"left",borderWidth:1,borderStyle:"solid",borderColor:"transparent",background:"none",boxShadow:"none"},et={background:"var(--graview-panel-muted)"},sn=new WeakMap;function jn(a){let r=a.log.all().length,n=sn.get(a);if(n&&n.length===r)return n.stamp;let l={length:r};return sn.set(a,{length:r,stamp:l}),l}var qn=()=>typeof matchMedia=="function"&&matchMedia("(pointer: fine)").matches,cn={display:"inline-flex",alignItems:"center",gap:5,minHeight:30,padding:"0 11px",fontSize:"0.8125rem",borderRadius:999,cursor:"pointer",borderWidth:1,borderStyle:"solid",boxShadow:"none"},Kn={...cn,borderColor:"var(--graview-accent)",background:"color-mix(in srgb, var(--graview-accent) 14%, transparent)",color:"var(--graview-ink)",fontWeight:600},Bn={...cn,borderColor:"var(--graview-edge)",background:"none",color:"var(--graview-ink-muted)"},Un={fontSize:"0.6875rem",letterSpacing:"0.12em",textTransform:"uppercase",color:"var(--graview-ink-faint)",padding:"0 10px"},Te=(0,i.jsx)("span",{"aria-hidden":"true",title:"Enter runs it",style:{float:"right",color:"var(--graview-ink-faint)",fontSize:"0.75rem"},children:"\u21B5"}),Gn=[];function dn({section:a,lit:r=null,close:n}){return(0,i.jsxs)("div",{"data-menu-section":a.id,...a.heading?{role:"group","aria-label":a.heading}:{},style:{display:"grid",gap:2,borderTop:"1px solid var(--graview-edge)",paddingTop:5},children:[a.heading?(0,i.jsx)("p",{"aria-hidden":"true",style:{margin:0,padding:"2px 2px 1px",fontSize:"0.75rem",lineHeight:1.4,letterSpacing:"0.12em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},children:a.heading}):null,a.items&&a.items.length>0?(0,i.jsx)("ul",{style:{margin:0,padding:0,listStyle:"none",display:"flex",flexDirection:"column",gap:2},children:a.items.map(l=>(0,i.jsx)("li",{children:(0,i.jsxs)("button",{type:"button","data-menu-item":l.id,"data-menu-lit":r===`item:${l.id}`||void 0,onClick:()=>{n(),l.run()},style:{...Me,...r===`item:${l.id}`?et:{}},children:[l.label,l.hint?(0,i.jsxs)("span",{style:{color:"var(--graview-ink-faint)"},children:[" \xB7 ",l.hint]}):null,r===`item:${l.id}`?Te:null]})},l.id))}):null,a.render?.(n)]})}export{fo as InspectorPane,mo as prepareActs};
@@ -1 +1 @@
1
- import{c as m}from"./chunk.I7KN732Z.js";import{ga as c,la as u,ma as p,oa as f,ta as h,ua as l}from"./chunk.DHPXRDT5.js";function M(t,e){let n=t.schema.kinds,r="kind"in e?e.kind:void 0;if(r!==void 0&&!n.includes(r))return`There is no kind "${r}" in this app. Its kinds are: ${n.join(", ")}.`;if(e.on==="act"&&e.act!==void 0&&t.allMutations&&!t.allMutations().some(i=>i.name===e.act))return`There is no act "${e.act}" in this app.`;let o="record"in e?e.record:void 0;if(o!==void 0&&t.graph&&!t.graph.getNode(o))return`No record "${o}" is here to be told about.`;if(o!==void 0&&r!==void 0&&t.graph&&t.graph.getNode(o)?.kind!==r)return`\u201C${o}\u201D is not ${h(r)}.`;if(e.on==="changed"&&e.kind===void 0&&e.record===void 0)return"Say which kind, or which record, to be told about.";if(e.on==="reaches"){if(e.condition.trim()==="")return"Say what it should reach: a condition like done == true.";try{m(e.condition)}catch(i){return`The condition does not read: ${i instanceof Error?i.message:String(i)}.`}}}function d(t,e){let n=t.graph?.getNode(e);return n?u(t.schema.tryDefinition(n.kind),n):e}function g(t,e){let n=t.allMutations?.().find(r=>r.name===e);return n?p(n):c(e)}function v(t,e){let{when:n}=e,r=e.alsoMine?"anyone":"someone else",o=s=>l(t.schema.tryDefinition(s),s),i=s=>{let a=o(s);return`${/^[aeiou]/i.test(a)?"an":"a"} ${a}`};switch(n.on){case"act":{let s=n.act!==void 0?`\u201C${g(t,n.act)}\u201D`:"an act";return`When ${r} runs ${s}${n.record!==void 0?` on \u201C${d(t,n.record)}\u201D`:""}`}case"created":return`When ${r} adds ${i(n.kind)}`;case"changed":return n.record!==void 0?`When ${r} changes \u201C${d(t,n.record)}\u201D`:`When ${r} changes any of the ${f(t.schema,n.kind)}`;case"reaches":return`When ${n.record!==void 0?`\u201C${d(t,n.record)}\u201D`:i(n.kind)} reaches ${n.condition}${e.alsoMine?"":" (by someone else)"}`}}export{M as a,v as b};
1
+ import{c as m}from"./chunk.W6L2VAJG.js";import{ha as c,ma as u,na as p,pa as f,ua as h,va as l}from"./chunk.6L6RUOSF.js";function M(t,e){let n=t.schema.kinds,r="kind"in e?e.kind:void 0;if(r!==void 0&&!n.includes(r))return`There is no kind "${r}" in this app. Its kinds are: ${n.join(", ")}.`;if(e.on==="act"&&e.act!==void 0&&t.allMutations&&!t.allMutations().some(i=>i.name===e.act))return`There is no act "${e.act}" in this app.`;let o="record"in e?e.record:void 0;if(o!==void 0&&t.graph&&!t.graph.getNode(o))return`No record "${o}" is here to be told about.`;if(o!==void 0&&r!==void 0&&t.graph&&t.graph.getNode(o)?.kind!==r)return`\u201C${o}\u201D is not ${h(r)}.`;if(e.on==="changed"&&e.kind===void 0&&e.record===void 0)return"Say which kind, or which record, to be told about.";if(e.on==="reaches"){if(e.condition.trim()==="")return"Say what it should reach: a condition like done == true.";try{m(e.condition)}catch(i){return`The condition does not read: ${i instanceof Error?i.message:String(i)}.`}}}function d(t,e){let n=t.graph?.getNode(e);return n?u(t.schema.tryDefinition(n.kind),n):e}function g(t,e){let n=t.allMutations?.().find(r=>r.name===e);return n?p(n):c(e)}function v(t,e){let{when:n}=e,r=e.alsoMine?"anyone":"someone else",o=s=>l(t.schema.tryDefinition(s),s),i=s=>{let a=o(s);return`${/^[aeiou]/i.test(a)?"an":"a"} ${a}`};switch(n.on){case"act":{let s=n.act!==void 0?`\u201C${g(t,n.act)}\u201D`:"an act";return`When ${r} runs ${s}${n.record!==void 0?` on \u201C${d(t,n.record)}\u201D`:""}`}case"created":return`When ${r} adds ${i(n.kind)}`;case"changed":return n.record!==void 0?`When ${r} changes \u201C${d(t,n.record)}\u201D`:`When ${r} changes any of the ${f(t.schema,n.kind)}`;case"reaches":return`When ${n.record!==void 0?`\u201C${d(t,n.record)}\u201D`:i(n.kind)} reaches ${n.condition}${e.alsoMine?"":" (by someone else)"}`}}export{M as a,v as b};