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
@@ -0,0 +1,4 @@
1
+ var j={nav:"div",header:"div",footer:"div",aside:"div",search:"div",output:"span"},L=["all","display","position","top","right","bottom","left","inset","inset-block","inset-inline","inset-block-start","inset-block-end","inset-inline-start","inset-inline-end","width","height","min-width","min-height","max-width","max-height","inline-size","block-size","min-inline-size","min-block-size","max-inline-size","max-block-size","margin","margin-top","margin-right","margin-bottom","margin-left","margin-block","margin-inline","margin-block-start","margin-block-end","margin-inline-start","margin-inline-end","padding","padding-top","padding-right","padding-bottom","padding-left","padding-block","padding-inline","padding-block-start","padding-block-end","padding-inline-start","padding-inline-end","box-sizing","overflow","overflow-x","overflow-y","overflow-wrap","float","clear","z-index","aspect-ratio","object-fit","object-position","vertical-align","isolation","contain","container","container-type","container-name","content-visibility","flex","flex-direction","flex-wrap","flex-flow","flex-grow","flex-shrink","flex-basis","order","grid","grid-template","grid-template-columns","grid-template-rows","grid-template-areas","grid-auto-columns","grid-auto-rows","grid-auto-flow","grid-area","grid-column","grid-row","grid-column-start","grid-column-end","grid-row-start","grid-row-end","gap","row-gap","column-gap","align-items","align-content","align-self","justify-items","justify-content","justify-self","place-items","place-content","place-self","columns","column-count","column-width","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-fill","break-inside","break-before","break-after","page-break-inside","page-break-before","page-break-after","orphans","widows","box-decoration-break","-webkit-box-decoration-break","color","background","background-color","background-image","background-position","background-position-x","background-position-y","background-size","background-repeat","background-origin","background-clip","background-attachment","background-blend-mode","border","border-top","border-right","border-bottom","border-left","border-block","border-inline","border-block-start","border-block-end","border-inline-start","border-inline-end","border-width","border-style","border-color","border-top-width","border-right-width","border-bottom-width","border-left-width","border-top-style","border-right-style","border-bottom-style","border-left-style","border-top-color","border-right-color","border-bottom-color","border-left-color","border-radius","border-top-left-radius","border-top-right-radius","border-bottom-right-radius","border-bottom-left-radius","border-start-start-radius","border-start-end-radius","border-end-start-radius","border-end-end-radius","border-collapse","border-spacing","outline","outline-width","outline-style","outline-color","outline-offset","box-shadow","opacity","visibility","mix-blend-mode","filter","backdrop-filter","clip-path","accent-color","caret-color","color-scheme","appearance","-webkit-appearance","mask-image","mask-size","mask-position","mask-repeat","mask-origin","mask-clip","mask-composite","mask-mode","mask-type","-webkit-mask","-webkit-mask-image","-webkit-mask-size","-webkit-mask-position","-webkit-mask-repeat","-webkit-mask-origin","-webkit-mask-clip","-webkit-mask-composite","font","font-family","font-size","font-weight","font-style","font-stretch","font-variant","font-variant-numeric","font-variant-caps","font-variant-ligatures","font-feature-settings","font-variation-settings","font-kerning","font-optical-sizing","font-size-adjust","font-synthesis","line-height","letter-spacing","word-spacing","text-align","text-align-last","text-indent","text-transform","text-decoration","text-decoration-line","text-decoration-color","text-decoration-style","text-decoration-thickness","text-underline-offset","text-underline-position","text-shadow","text-overflow","text-wrap","text-wrap-mode","text-wrap-style","white-space","white-space-collapse","word-break","line-break","hyphens","tab-size","direction","unicode-bidi","writing-mode","text-orientation","text-rendering","-webkit-font-smoothing","-webkit-line-clamp","-webkit-box-orient","line-clamp","-webkit-text-fill-color","-webkit-background-clip","-webkit-text-stroke","-webkit-text-stroke-width","-webkit-text-stroke-color","list-style","list-style-type","list-style-position","content","quotes","counter-reset","counter-increment","counter-set","table-layout","caption-side","empty-cells","transform","transform-origin","transform-box","transform-style","translate","rotate","scale","perspective","perspective-origin","backface-visibility","transition","transition-property","transition-duration","transition-timing-function","transition-delay","transition-behavior","animation","animation-name","animation-duration","animation-timing-function","animation-delay","animation-iteration-count","animation-direction","animation-fill-mode","animation-play-state","animation-composition","will-change","animation-timeline","animation-range","animation-range-start","animation-range-end","scroll-timeline","scroll-timeline-name","scroll-timeline-axis","view-timeline","view-timeline-name","view-timeline-axis","view-timeline-inset","timeline-scope","cursor","pointer-events","user-select","-webkit-user-select","touch-action","resize","scroll-behavior","overscroll-behavior","overscroll-behavior-x","overscroll-behavior-y","scroll-snap-type","scroll-snap-align","scroll-snap-stop","scroll-margin","scroll-padding","scroll-margin-top","scroll-margin-right","scroll-margin-bottom","scroll-margin-left","scroll-margin-block","scroll-margin-block-start","scroll-margin-block-end","scroll-margin-inline","scroll-margin-inline-start","scroll-margin-inline-end","scroll-padding-top","scroll-padding-right","scroll-padding-bottom","scroll-padding-left","scroll-padding-block","scroll-padding-block-start","scroll-padding-block-end","scroll-padding-inline","scroll-padding-inline-start","scroll-padding-inline-end","scrollbar-width","scrollbar-color","scrollbar-gutter","fill","fill-opacity","fill-rule","stroke","stroke-width","stroke-linecap","stroke-linejoin","stroke-dasharray","stroke-dashoffset","stroke-opacity","stroke-miterlimit","stop-color","stop-opacity","clip-rule","marker","marker-start","marker-mid","marker-end","paint-order","vector-effect","shape-rendering","text-anchor","dominant-baseline","alignment-baseline","r","cx","cy","rx","ry","x","y","d","mask","flood-color","flood-opacity","lighting-color","color-interpolation-filters"],W=["var","env","calc","min","max","clamp","round","mod","rem","abs","sign","sin","cos","tan","asin","acos","atan","atan2","pow","sqrt","hypot","log","exp","rgb","rgba","hsl","hsla","hwb","lab","lch","oklab","oklch","color","color-mix","light-dark","linear-gradient","radial-gradient","conic-gradient","repeating-linear-gradient","repeating-radial-gradient","repeating-conic-gradient","translate","translatex","translatey","translatez","translate3d","rotate","rotatex","rotatey","rotatez","rotate3d","scale","scalex","scaley","scalez","scale3d","skew","skewx","skewy","matrix","matrix3d","perspective","cubic-bezier","steps","linear","repeat","minmax","fit-content","blur","brightness","contrast","drop-shadow","grayscale","hue-rotate","invert","saturate","sepia","opacity","circle","ellipse","inset","polygon","path","xywh","rect","counter","counters","scroll","view"],M=["fill","stroke","clip-path","mask","marker","marker-start","marker-mid","marker-end","filter"],U=["media","supports","container","keyframes"],K={position:["static","relative","absolute","sticky"],all:[],appearance:["auto","none","menulist-button","textfield"],"-webkit-appearance":["auto","none","menulist-button","textfield"]},X=["host","host-context","slotted","part","backdrop","picker","view-transition","view-transition-group","view-transition-image-pair","view-transition-old","view-transition-new"],Y=["-webkit-details-marker"],S=64e3;var p=e=>e>=48&&e<=57,Z=e=>p(e)||e>=65&&e<=70||e>=97&&e<=102,D=e=>e>=65&&e<=90||e>=97&&e<=122,F=e=>e>=128,v=e=>D(e)||F(e)||e===95,H=e=>v(e)||p(e)||e===45,G=e=>e===10,h=e=>e===10||e===9||e===32,fe=e=>e>=0&&e<=8||e===11||e>=14&&e<=31||e===127,g=-1;function me(e){let r=[];for(let t=0;t<e.length;t+=1){let n=e.codePointAt(t);n>65535&&(t+=1),n===13?(e.charCodeAt(t+1)===10&&(t+=1),n=10):n===12?n=10:(n===0||n>=55296&&n<=57343)&&(n=65533),r.push(n)}return r}function ee(e){let r=me(e),t=0,n=(s=0)=>t+s<r.length?r[t+s]:g,o=[],i=(s,l)=>s===92&&l!==10&&l!==g,a=(s,l,m)=>s===45?v(l)||l===45||i(l,m):v(s)?!0:i(s,l),u=(s,l,m)=>s===43||s===45?p(l)||l===46&&p(m):p(s===46?l:s),c=()=>{let s=n();if(t+=1,s===g)return 65533;if(Z(s)){let l=String.fromCodePoint(s);for(;l.length<6&&Z(n());)l+=String.fromCodePoint(n()),t+=1;h(n())&&(t+=1);let m=parseInt(l,16);return m===0||m>=55296&&m<=57343||m>1114111?65533:m}return s},d=()=>{let s="";for(;;){let l=n();if(H(l))s+=String.fromCodePoint(l),t+=1;else if(i(l,n(1)))t+=1,s+=String.fromCodePoint(c());else return s}},f=()=>{let s="";for((n()===43||n()===45)&&(s+=String.fromCodePoint(r[t++]));p(n());)s+=String.fromCodePoint(r[t++]);if(n()===46&&p(n(1)))for(s+=String.fromCodePoint(r[t++],r[t++]);p(n());)s+=String.fromCodePoint(r[t++]);if((n()===69||n()===101)&&(p(n(1))||(n(1)===43||n(1)===45)&&p(n(2))))for(s+=String.fromCodePoint(r[t++]),p(n())||(s+=String.fromCodePoint(r[t++]));p(n());)s+=String.fromCodePoint(r[t++]);return s},x=()=>{let s=f();return a(n(),n(1),n(2))?{type:"dimension",repr:s,unit:d()}:n()===37?(t+=1,{type:"percentage",repr:s}):{type:"number",repr:s}},b=()=>{for(;;){let s=n();if(t+=1,s===41||s===g)return;i(s,n())&&c()}},de=()=>{let s="";for(;h(n());)t+=1;for(;;){let l=n();if(t+=1,l===41)return{type:"url",value:s};if(l===g)return{type:"url",value:s};if(h(l)){for(;h(n());)t+=1;return n()===41||n()===g?(n()===41&&(t+=1),{type:"url",value:s}):(b(),{type:"bad-url"})}if(l===34||l===39||l===40||fe(l))return b(),{type:"bad-url"};if(l===92){if(i(l,n()))s+=String.fromCodePoint(c());else return b(),{type:"bad-url"};continue}s+=String.fromCodePoint(l)}},O=()=>{let s=d();if(s.toLowerCase()==="url"&&n()===40){for(t+=1;h(n())&&h(n(1));)t+=1;let l=h(n())?n(1):n();return l===34||l===39?{type:"function",value:s}:de()}return n()===40?(t+=1,{type:"function",value:s}):{type:"ident",value:s}},pe=s=>{let l="";for(;;){let m=n();if(t+=1,m===s||m===g)return{type:"string",value:l};if(G(m))return t-=1,{type:"bad-string"};if(m===92){if(n()===g)continue;if(G(n())){t+=1;continue}l+=String.fromCodePoint(c());continue}l+=String.fromCodePoint(m)}};for(;;){for(;n()===47&&n(1)===42;){for(t+=2;n()!==g&&!(n()===42&&n(1)===47);)t+=1;n()!==g&&(t+=2)}let s=n();if(s===g)return o;if(h(s)){for(;h(n());)t+=1;o.push({type:"whitespace"});continue}switch(t+=1,s){case 34:case 39:o.push(pe(s));continue;case 35:if(H(n())||i(n(),n(1))){let l=a(n(),n(1),n(2));o.push({type:"hash",value:d(),id:l})}else o.push({type:"delim",value:"#"});continue;case 40:o.push({type:"("});continue;case 41:o.push({type:")"});continue;case 43:case 46:u(s,n(),n(1))?(t-=1,o.push(x())):o.push({type:"delim",value:String.fromCodePoint(s)});continue;case 44:o.push({type:","});continue;case 45:u(s,n(),n(1))?(t-=1,o.push(x())):n()===45&&n(1)===62?(t+=2,o.push({type:"CDC"})):a(s,n(),n(1))?(t-=1,o.push(O())):o.push({type:"delim",value:"-"});continue;case 58:o.push({type:":"});continue;case 59:o.push({type:";"});continue;case 60:n()===33&&n(1)===45&&n(2)===45?(t+=3,o.push({type:"CDO"})):o.push({type:"delim",value:"<"});continue;case 64:a(n(),n(1),n(2))?o.push({type:"at-keyword",value:d()}):o.push({type:"delim",value:"@"});continue;case 91:o.push({type:"["});continue;case 92:i(s,n())?(t-=1,o.push(O())):o.push({type:"delim",value:"\\"});continue;case 93:o.push({type:"]"});continue;case 123:o.push({type:"{"});continue;case 125:o.push({type:"}"});continue;default:p(s)?(t-=1,o.push(x())):v(s)?(t-=1,o.push(O())):o.push({type:"delim",value:String.fromCodePoint(s)})}}}var ne={"{":"}","[":"]","(":")"},te=32,P=class{constructor(r){this.tokens=r}i=0;peek(){return this.tokens[this.i]}next(){return this.tokens[this.i++]}};function re(e,r){let t=e.next();return t.type==="{"||t.type==="["||t.type==="("?{type:"block",open:t.type,value:q(e,ne[t.type],r+1)}:t.type==="function"?{type:"func",name:t.value,value:q(e,")",r+1)}:t}function q(e,r,t){let n=[];for(;;){let o=e.peek();if(!o)return n;if(o.type===r)return e.next(),n;if(t>te){e.next(),n.push({type:"bad-string"});continue}n.push(re(e,t))}}function w(e,r){let t=[],n=0;for(;n<e.length;){let o=e[n];if(o.type==="whitespace"||r&&(o.type==="CDO"||o.type==="CDC")){n+=1;continue}if(o.type==="at-keyword"){let u=[];n+=1;let c;for(;n<e.length;){let d=e[n];if(n+=1,d.type===";")break;if(d.type==="block"&&d.open==="{"){c=d.value;break}u.push(d)}t.push({type:"at-rule",name:o.value,prelude:u,...c?{block:c}:{}});continue}let i=[],a;for(;n<e.length;){let u=e[n];if(n+=1,u.type==="block"&&u.open==="{"){a=u.value;break}i.push(u)}a&&t.push({type:"qualified",prelude:i,block:a})}return t}function A(e){let r=[],t=0;for(;t<e.length;){let n=e[t];if(n.type==="whitespace"||n.type===";"){t+=1;continue}if(n.type==="at-keyword"){let i=(()=>{for(let a=t+1;a<e.length;a+=1){let u=e[a];if(u.type===";"||u.type==="block"&&u.open==="{")return a+1}return e.length})();r.push(...w(e.slice(t,i),!1)),t=i;continue}if(n.type==="ident"){let i=t+1;for(;e[i]?.type==="whitespace";)i+=1;if(e[i]?.type===":"){let a=i+1;for(;a<e.length&&e[a].type!==";";)a+=1;let u=oe(n.value,e.slice(i+1,a));if(u.value.some(c=>c.type==="block"&&c.open==="{")){let c=e.findIndex((d,f)=>f>t&&d.type==="block"&&d.open==="{");r.push(...w(e.slice(t,c+1),!1)),t=c+1;continue}r.push(u),t=a+1;continue}}let o=t;for(;o<e.length&&!(e[o].type==="block"&&e[o].open==="{")&&e[o].type!==";";)o+=1;o<e.length&&e[o].type==="block"&&r.push(...w(e.slice(t,o+1),!1)),t=o+1}return r}function oe(e,r){let t=[...r];for(;t[0]?.type==="whitespace";)t.shift();for(;t.at(-1)?.type==="whitespace";)t.pop();let n=!1,i=t.length-1;if(t[i]?.type==="ident"&&t[i].value.toLowerCase()==="important"){for(i-=1;t[i]?.type==="whitespace";)i-=1;let a=t[i];if(a?.type==="delim"&&a.value==="!")for(n=!0,t.length=i;t.at(-1)?.type==="whitespace";)t.pop()}return{type:"declaration",name:e,value:t,important:n}}function N(e){let r=new P(ee(e)),t=[];for(;r.peek();)t.push(re(r,0));return t}function C(e){let r="",t=[...e].map(n=>n.codePointAt(0));return t.forEach((n,o)=>{n===0?r+="\uFFFD":n>=1&&n<=31||n===127||o===0&&p(n)||o===1&&p(n)&&t[0]===45?r+=`\\${n.toString(16)} `:o===0&&n===45&&t.length===1?r+="\\-":F(n)||n===45||n===95||p(n)||D(n)?r+=String.fromCodePoint(n):r+=`\\${String.fromCodePoint(n)}`}),r}function E(e){let r="";for(let t of e){let n=t.codePointAt(0);F(n)||n===45||n===95||p(n)||D(n)?r+=t:n>=1&&n<=31||n===127?r+=`\\${n.toString(16)} `:r+=`\\${t}`}return r}function R(e){let r='"';for(let t of e){let n=t.codePointAt(0);n===0?r+="\uFFFD":n>=1&&n<=31||n===127||n===60||n===62?r+=`\\${n.toString(16)} `:n===34||n===92?r+=`\\${t}`:r+=t}return`${r}"`}function ye(e){let r=E(e);return/^[eE]([0-9]|[+-][0-9])/.test(e)?`\\${e.codePointAt(0).toString(16)} ${E(e.slice(1))}`:r}var B=e=>{switch(e.type){case"ident":case"url":case"bad-url":case"number":case"percentage":case"dimension":case"CDC":case"hash":case"at-keyword":return e.type;case"func":case"function":return"function";case"block":return e.open==="("?"(":"other";case"(":return"(";case"delim":return`delim${e.value}`;default:return"other"}};function ge(e,r){let t=["ident","function","url","bad-url","delim-","number","percentage","dimension","CDC"];return e==="ident"?[...t,"("].includes(r):e==="at-keyword"||e==="hash"||e==="dimension"||e==="delim#"||e==="delim-"?t.includes(r):e==="number"?["ident","function","url","bad-url","number","percentage","dimension","delim%"].includes(r):e==="delim@"?["ident","function","url","bad-url","delim-","CDC"].includes(r):e==="delim."||e==="delim+"?["number","percentage","dimension"].includes(r):e==="delim/"?r==="delim*":!1}function be(e){switch(e.type){case"whitespace":return" ";case"ident":return C(e.value);case"at-keyword":return`@${C(e.value)}`;case"hash":return`#${E(e.value)}`;case"string":return R(e.value);case"url":return`url(${R(e.value)})`;case"delim":return e.value==="\\"?`\\
2
+ `:e.value;case"CDO":return"<!--";case"CDC":return"-->";case"number":return e.repr;case"percentage":return`${e.repr}%`;case"dimension":return`${e.repr}${ye(e.unit)}`;case"func":return`${C(e.name)}(${k(e.value)})`;case"block":return`${e.open}${k(e.value)}${ne[e.open]}`;case":":case";":case",":case"[":case"]":case"(":case")":case"{":case"}":return e.type;default:return""}}function k(e){let r="",t;for(let n of e)n.type==="whitespace"&&t?.type==="whitespace"||(t&&ge(B(t),B(n))&&(r+="/**/"),r+=be(n),t=n);return r}var he=new Set(L),ie=new Set(W),J=new Set(M),ke=new Set(U),xe=new Set(X),we=new Set(Y),Q=/^#[A-Za-z_][A-Za-z0-9_.:-]*$/,y=e=>e.replace(/[A-Z]/g,r=>r.toLowerCase()),Ce=e=>y(e);function $(e,r,t){let n=[];for(let o of r){if(o.type==="bad-url"||o.type==="bad-string"){t({reason:"unreadable",...e?{name:e}:{}});return}if(o.type==="url"){if(e&&J.has(e)&&Q.test(o.value)){n.push({type:"func",name:"url",value:[{type:"string",value:o.value}]});continue}t({reason:"url",...e?{name:e}:{}});return}if(o.type==="func"){let i=y(o.name);if(i==="url"||i==="src"){let u=o.value.filter(d=>d.type!=="whitespace"),c=u[0];if(i==="url"&&u.length===1&&c?.type==="string"&&e&&J.has(e)&&Q.test(c.value)){n.push({type:"func",name:"url",value:[{type:"string",value:c.value}]});continue}t({reason:"url",...e?{name:e}:{}});return}if(!ie.has(i)){t({reason:"function",name:i});return}let a=$(e,o.value,t);if(!a)return;i==="var"?n.push({type:"whitespace"},{type:"func",name:i,value:a},{type:"whitespace"}):n.push({type:"func",name:i,value:a});continue}if(o.type==="block"){if(o.open==="{"||o.open==="("&&n.at(-1)?.type==="ident"){t({reason:"unreadable",...e?{name:e}:{}});return}let i=$(e,o.value,t);if(!i)return;n.push({type:"block",open:o.open,value:i});continue}if(o.type==="at-keyword"||o.type==="CDO"||o.type==="CDC"||o.type==="{"||o.type==="}"||o.type===";"||o.type===")"||o.type==="]"||o.type==="delim"&&o.value==="\\"){t({reason:"unreadable",...e?{name:e}:{}});return}n.push(o)}return n}var Se=/^(animation|transition|scroll-behavior|outline)/,ve="--graview-ring-color",Ee="--graview-focus-color",Re=e=>{let r=e.filter(n=>n.type!=="whitespace"),t=r[0];return r.length!==1||!t?!1:t.type==="hash"?/^(?:[0-9a-f]{3}|[0-9a-f]{6})$/i.test(t.value):t.type==="ident"&&!["transparent","currentcolor"].includes(y(t.value))},_e=new Set(["url","src","image-set","-webkit-image-set"]),ae=e=>{for(let r of e){if(r.type==="func"&&_e.has(y(r.name)))return y(r.name);if(r.type==="func"||r.type==="block"){let t=ae(r.value);if(t)return t}}};function T(e,r,t=!1){let n=e.name.startsWith("--"),o=n?e.name:Ce(e.name);if(o===ve||!n&&!he.has(o)){r({reason:"property",name:o});return}if(o===Ee&&!Re(e.value)){r({reason:"value",name:o});return}let i=K[o];if(i){let c=e.value.filter(x=>x.type!=="whitespace"),d=c[0],f=c.length===1&&d?.type==="ident"?y(d.value):void 0;if(!f||![...i,"inherit","initial","unset","revert"].includes(f)){r({reason:"value",name:o});return}return`${o}: ${f}${e.important&&!(t&&o==="all")?" !important":""}`}let a=$(n?void 0:o,e.value,r);if(!a)return;let u=k(a).trim();return`${n?`--${E(e.name.slice(2))}`:o}: ${u}${e.important&&!(t&&Se.test(o))?" !important":""}`}var I=e=>e.some(r=>r.type==="}"||r.type===";"||r.type===")"||r.type==="]"||r.type==="at-keyword"||r.type==="CDO"||r.type==="CDC"||r.type==="delim"&&r.value==="\\"||(r.type==="func"||r.type==="block")&&I(r.value));function se(e,r){if(I(e))return r({reason:"unreadable",name:"selector"}),!1;let t=ae(e);if(t)return r({reason:"url",name:t}),!1;let n=o=>{for(let i=0;i<o.length;i+=1){let a=o[i];if(i>0&&o[i-1].type===":"&&(a.type==="ident"||a.type==="func")){let c=y(a.type==="ident"?a.value:a.name);if(xe.has(c)||(c.startsWith("-webkit-")||c.startsWith("-moz-"))&&!we.has(c))return r({reason:"selector",name:c}),!1}if(a.type==="url"||a.type==="bad-url"||a.type==="bad-string"||a.type==="at-keyword"||a.type==="CDO"||a.type==="CDC"||a.type==="block"&&a.open==="{")return r({reason:"unreadable",name:"selector"}),!1;if(a.type==="func"&&!n(a.value)||a.type==="block"&&!n(a.value))return!1}return!0};return n(e)}function z(e,r,t){let n=[];for(let o of A(e))if(o.type==="declaration"){let i=T(o,r);i&&n.push(`${i};`)}else{let i=_(o,r,t+1,"style");i&&n.push(i)}return n.join(" ")}function Te(e,r,t){if(I(e)){t({reason:"unreadable",name:`@${r}`});return}let n=o=>o.every(i=>{if(i.type==="url"||i.type==="bad-url"||i.type==="bad-string"||i.type==="block"&&i.open==="{")return t({reason:i.type==="url"?"url":"unreadable",name:`@${r}`}),!1;if(i.type==="func"){let a=y(i.name);return r==="supports"&&a==="selector"?se(i.value,t):ie.has(a)?n(i.value):(t({reason:"function",name:a}),!1)}if(i.type==="block"){if(r==="supports"){let a=A(i.value);if(a.length===1&&a[0].type==="declaration")return T(a[0],t)!==void 0}return n(i.value)}return!0});return n(e)?k(e).trim():void 0}function V(e){return e.map((r,t)=>{let n=e[t-1],o=n?.type===":"||n?.type==="delim"&&(n.value==="."||n.value==="|");return r.type==="ident"&&!o&&Object.prototype.hasOwnProperty.call(j,y(r.value))?{type:"block",open:"[",value:[{type:"ident",value:"data-graview-as"},{type:"delim",value:"="},{type:"string",value:y(r.value)}]}:r.type==="func"?{type:"func",name:r.name,value:V(r.value)}:r.type==="block"&&r.open==="("?{type:"block",open:"(",value:V(r.value)}:r})}function _(e,r,t,n){if(t>te){r({reason:"unreadable",name:"nesting"});return}if(e.type==="qualified"){if(n==="keyframes"){if(!e.prelude.every(f=>f.type==="whitespace"||f.type===","||f.type==="percentage"||f.type==="ident"&&["from","to"].includes(y(f.value)))){r({reason:"unreadable",name:"keyframe"});return}return`${k(e.prelude).trim()} { ${z(e.block,r,t)} }`}if(!se(e.prelude,r))return;let c=k(V(e.prelude)).trim();if(c===""){r({reason:"unreadable",name:"selector"});return}return`${c} { ${z(e.block,r,t)} }`}let o=y(e.name),i=o==="-webkit-keyframes"?"keyframes":o;if(!ke.has(i)||n==="keyframes"){r({reason:"at-rule",name:`@${o}`});return}if(!e.block){r({reason:"unreadable",name:`@${o}`});return}if(i==="keyframes"){if(n!=="sheet"){r({reason:"at-rule",name:"@keyframes"});return}let c=e.prelude.filter(b=>b.type!=="whitespace"),d=c[0];if(c.length!==1||!d||d.type!=="ident"&&d.type!=="string"){r({reason:"unreadable",name:"@keyframes"});return}let f=w(e.block,!1).map(b=>_(b,r,t+1,"keyframes")).filter(b=>b!==void 0);return`@keyframes ${d.type==="ident"?C(d.value):R(d.value)} { ${f.join(" ")} }`}let a=Te(e.prelude,i,r);if(a===void 0)return;let u=n==="style"?z(e.block,r,t):w(e.block,!1).map(c=>_(c,r,t+1,"sheet")).filter(c=>c!==void 0).join(" ");return`@${i} ${a} { ${u} }`}function le(e,r=S){let t=[];if(e.length>r)return{css:"",refused:[{reason:"size"}]};let n=i=>void t.push(i);return{css:w(N(e),!0).map(i=>_(i,n,0,"sheet")).filter(i=>i!==void 0).join(`
3
+ `),refused:t}}function Oe(e,r=S){let t=[],n=[],o=0;for(let i of e){if(o+i.length>r){n.push({reason:"size"});continue}o+=i.length;let a=le(i,r);a.css&&t.push(a.css),n.push(...a.refused)}return{css:t.join(`
4
+ `),refused:n}}function ze(e,r=S){let t=[];if(e.length>r)return{css:"",refused:[{reason:"size"}]};let n=i=>void t.push(i),o=[];for(let i of A(N(e))){if(i.type!=="declaration"){n({reason:"unreadable",name:"a rule in a style attribute"});continue}let a=T(i,n,!0);a&&o.push(a)}return{css:o.join("; "),refused:t}}function Pe(e,r){let t,n=T(oe(e,N(r)),o=>t??=o);return n===void 0||t?{refused:t??{reason:"unreadable",name:e}}:{value:n.slice(n.indexOf(":")+1).trim()}}var ce=["montserrat","serif","sans-serif","monospace","cursive","fantasy","system-ui","math","emoji","-apple-system","blinkmacsystemfont","georgia","times new roman","times","iowan old style","palatino","palatino linotype","charter","cambria","baskerville","optima","helvetica","helvetica neue","arial","verdana","segoe ui","roboto","avenir","avenir next","gill sans","menlo","monaco","consolas","sf mono","sfmono-regular","courier new"],$e=/^\/graview\/assets\/[0-9a-f]{64}\.(?:woff2|woff|ttf|otf)$/,Ve=/^https:\/\/([a-z0-9.-]+(?::\d+)?)\/[A-Za-z0-9._~!$&*+,;=:@%/-]*\.(?:woff2|woff|ttf|otf)(?:\?[A-Za-z0-9._~!$&*+,;=:@%/?-]*)?$/i,De=new Set(["serif","sans-serif","monospace","cursive","fantasy","system-ui","math","emoji","fangsong","inherit","initial","unset","revert","default"]);function ue(e){if($e.test(e))return{asset:e};let r=Ve.exec(e);return r?{https:e,origin:`https://${r[1].toLowerCase()}`}:void 0}var Fe=e=>{let r=n=>Number.isInteger(n)&&n>=1&&n<=1e3;if(typeof e=="number")return r(e);if(typeof e!="string")return!1;let t=e.trim().split(/\s+/).map(Number);return t.length>=1&&t.length<=2&&t.every(r)&&(t.length===1||t[0]<=t[1])};function Ae(e){return[e?.body,e?.display,e?.mono].flatMap(r=>typeof r=="string"?r.split(",").map(t=>t.trim().replace(/^["']|["']$/g,"").trim().replace(/\s+/g," ")).filter(t=>t!==""):[])}function Ne(e,r=[]){if(typeof e!="object"||e===null||Array.isArray(e))return'a face is { "family": <its name>, "src": <its file> }';let{family:t,src:n,weight:o,style:i}=e;if(typeof t!="string"||t.length>60||!/^[A-Za-z0-9][A-Za-z0-9-]*(?: [A-Za-z0-9-]+)*$/.test(t))return"its family is words of letters, digits and hyphens with single spaces between them, at most 60 characters";if(De.has(t.toLowerCase()))return`"${t}" is a name CSS keeps for itself`;let a=t.toLowerCase();return ce.includes(a)||a.startsWith("ui-")||r.some(u=>u.toLowerCase()===a)?`"${t}" would replace a face the page already draws in: call it something of its own`:typeof n!="string"||!ue(n)?`its src is a file the app holds (/graview/assets/<sha256>.woff2) or an https: address of a WOFF2, WOFF, TTF or OTF file, not ${JSON.stringify(n)}`:o!==void 0&&!Fe(o)?'its weight is a whole number from 1 to 1000, or a range of two ("300 700")':i!==void 0&&i!=="normal"&&i!=="italic"?'its style is "normal" or "italic"':null}export{ee as a,le as b,Oe as c,ze as d,Pe as e,ue as f,Ae as g,Ne as h};
@@ -1 +1 @@
1
- import{fc as w,sc as S}from"./chunk.DHPXRDT5.js";function v(s){return[...s.mutations??[],...S(s.schema,s.mutations??[])]}function B(s){let i=[...s.schema.kinds],a=v(s),d=new Map,c=new Map;for(let e of a){c.set(e.name,e.creates??[]);let n=w(e.input).filter(t=>!t.optional&&!t.kinds.includes("*")).flatMap(t=>t.kinds);d.set(e.name,[...new Set(n)])}let g=new Map;for(let e of i)g.set(e,[]);for(let e of a)for(let n of c.get(e.name)??[])g.get(n)?.push(e.name);let p=new Map,l=new Set;for(let e=0;;e+=1){let n=[];for(let t of a)if((d.get(t.name)??[]).every(o=>l.has(o)))for(let o of c.get(t.name)??[])l.has(o)||n.push(o);if(n.length===0)break;for(let t of n)l.add(t),p.set(t,e)}let h=e=>{let n=g.get(e)??[];if(n.length===0)return[];let t=n.map(r=>d.get(r)??[]).sort((r,o)=>r.length-o.length)[0];return[...new Set(t)].filter(r=>r!==e)},y=new Map,u=e=>{let n=y.get(e);if(n)return n;let t=new Set;y.set(e,t);for(let r of h(e)){t.add(r);for(let o of u(r))t.add(o)}return t.delete(e),t},f=new Map(i.map(e=>[e,0]));for(let e of i)for(let n of u(e))f.set(n,(f.get(n)??0)+1);let m=i.map(e=>({kind:e,madeBy:[...g.get(e)??[]].sort(),needs:[...h(e)].sort(),depth:p.get(e)??null})).sort((e,n)=>(e.depth??Number.MAX_SAFE_INTEGER)-(n.depth??Number.MAX_SAFE_INTEGER)||(f.get(n.kind)??0)-(f.get(e.kind)??0)||e.kind.localeCompare(n.kind)),k=m.filter(e=>e.depth===0).map(e=>e.kind),A=[...new Set(a.filter(e=>(d.get(e.name)??[]).length===0).filter(e=>(c.get(e.name)??[]).length>0).map(e=>e.name))].sort(),M=m.filter(e=>e.depth===null).map(e=>({kind:e.kind,why:e.madeBy.length===0?"no act declares that it creates this kind":`every act that makes it needs ${e.needs.map(n=>`"${n}"`).join(", ")}, which nothing can make first`}));return{order:m,roots:k,doors:A,unreachable:M}}export{B as a};
1
+ import{Cc as S,pc as w}from"./chunk.6L6RUOSF.js";function v(s){return[...s.mutations??[],...S(s.schema,s.mutations??[])]}function B(s){let i=[...s.schema.kinds],a=v(s),d=new Map,c=new Map;for(let e of a){c.set(e.name,e.creates??[]);let n=w(e.input).filter(t=>!t.optional&&!t.kinds.includes("*")).flatMap(t=>t.kinds);d.set(e.name,[...new Set(n)])}let g=new Map;for(let e of i)g.set(e,[]);for(let e of a)for(let n of c.get(e.name)??[])g.get(n)?.push(e.name);let p=new Map,l=new Set;for(let e=0;;e+=1){let n=[];for(let t of a)if((d.get(t.name)??[]).every(o=>l.has(o)))for(let o of c.get(t.name)??[])l.has(o)||n.push(o);if(n.length===0)break;for(let t of n)l.add(t),p.set(t,e)}let h=e=>{let n=g.get(e)??[];if(n.length===0)return[];let t=n.map(r=>d.get(r)??[]).sort((r,o)=>r.length-o.length)[0];return[...new Set(t)].filter(r=>r!==e)},y=new Map,u=e=>{let n=y.get(e);if(n)return n;let t=new Set;y.set(e,t);for(let r of h(e)){t.add(r);for(let o of u(r))t.add(o)}return t.delete(e),t},f=new Map(i.map(e=>[e,0]));for(let e of i)for(let n of u(e))f.set(n,(f.get(n)??0)+1);let m=i.map(e=>({kind:e,madeBy:[...g.get(e)??[]].sort(),needs:[...h(e)].sort(),depth:p.get(e)??null})).sort((e,n)=>(e.depth??Number.MAX_SAFE_INTEGER)-(n.depth??Number.MAX_SAFE_INTEGER)||(f.get(n.kind)??0)-(f.get(e.kind)??0)||e.kind.localeCompare(n.kind)),k=m.filter(e=>e.depth===0).map(e=>e.kind),A=[...new Set(a.filter(e=>(d.get(e.name)??[]).length===0).filter(e=>(c.get(e.name)??[]).length>0).map(e=>e.name))].sort(),M=m.filter(e=>e.depth===null).map(e=>({kind:e.kind,why:e.madeBy.length===0?"no act declares that it creates this kind":`every act that makes it needs ${e.needs.map(n=>`"${n}"`).join(", ")}, which nothing can make first`}));return{order:m,roots:k,doors:A,unreachable:M}}export{B as a};
@@ -1,4 +1,4 @@
1
- import{c as O}from"./chunk.J2N7EKMX.js";import{_ as N}from"./chunk.DHPXRDT5.js";var H=/^h([1-6])$/,D={section:null,article:null,form:null,region:null,nav:"navigation",navigation:"navigation",main:"main content",header:"header",banner:"header",footer:"footer",contentinfo:"footer",aside:"aside",complementary:"aside",search:"search"},G=e=>typeof e=="object"&&e!==null&&typeof e.getAttribute=="function"&&(e.nodeType===void 0||e.nodeType===1),$=e=>(e??"").replace(/\s+/g," ").trim();function*x(e){yield e;for(let r of Array.from(e.childNodes))G(r)&&(yield*x(r))}var P=e=>(e.getAttribute("data-graview-as")??e.localName??"").toLowerCase();function C(e){let r=H.exec(P(e));return r?Number(r[1]):e.getAttribute("role")==="heading"?Number(e.getAttribute("aria-level")??2):void 0}function R(e){let r=[...x(e)],i=new Map;for(let n of r){let d=n.getAttribute("id");d&&i.set(d,n)}let t=[],g=new Set,a=(n,d)=>{let s=n.toLowerCase();!n||g.has(s)||(g.add(s),t.push({name:n.length>80?`${n.slice(0,79)}\u2026`:n,as:d}))};for(let n of r){if(n.getAttribute("aria-hidden")==="true"||n.getAttribute("hidden")!==null)continue;if(C(n)!==void 0){a($(n.textContent),"heading");continue}let s=P(n),f=(n.getAttribute("role")??"").toLowerCase(),l=f in D?f:s in D?s:void 0;if(!l)continue;let m=(n.getAttribute("aria-labelledby")??"").split(/\s+/).flatMap(u=>i.get(u)?[$(i.get(u).textContent)]:[]).join(" "),c=[...x(n)].find(u=>u!==n&&C(u)!==void 0),o=$(n.getAttribute("aria-label"))||m||(c?$(c.textContent):"")||D[l]||"";a(o,l==="region"?"section":l)}return t}var v="\0";function _(e){let r=[],i=e.length,t=0,g="",a=l=>l.replace(/\\(u\{[0-9a-fA-F]+\}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{2}|.)/gs,(m,c)=>c==="n"?`
1
+ import{c as O}from"./chunk.MT252WP4.js";import{_ as N}from"./chunk.6L6RUOSF.js";var H=/^h([1-6])$/,D={section:null,article:null,form:null,region:null,nav:"navigation",navigation:"navigation",main:"main content",header:"header",banner:"header",footer:"footer",contentinfo:"footer",aside:"aside",complementary:"aside",search:"search"},G=e=>typeof e=="object"&&e!==null&&typeof e.getAttribute=="function"&&(e.nodeType===void 0||e.nodeType===1),$=e=>(e??"").replace(/\s+/g," ").trim();function*x(e){yield e;for(let r of Array.from(e.childNodes))G(r)&&(yield*x(r))}var P=e=>(e.getAttribute("data-graview-as")??e.localName??"").toLowerCase();function C(e){let r=H.exec(P(e));return r?Number(r[1]):e.getAttribute("role")==="heading"?Number(e.getAttribute("aria-level")??2):void 0}function R(e){let r=[...x(e)],i=new Map;for(let n of r){let d=n.getAttribute("id");d&&i.set(d,n)}let t=[],g=new Set,a=(n,d)=>{let s=n.toLowerCase();!n||g.has(s)||(g.add(s),t.push({name:n.length>80?`${n.slice(0,79)}\u2026`:n,as:d}))};for(let n of r){if(n.getAttribute("aria-hidden")==="true"||n.getAttribute("hidden")!==null)continue;if(C(n)!==void 0){a($(n.textContent),"heading");continue}let s=P(n),f=(n.getAttribute("role")??"").toLowerCase(),l=f in D?f:s in D?s:void 0;if(!l)continue;let m=(n.getAttribute("aria-labelledby")??"").split(/\s+/).flatMap(u=>i.get(u)?[$(i.get(u).textContent)]:[]).join(" "),c=[...x(n)].find(u=>u!==n&&C(u)!==void 0),o=$(n.getAttribute("aria-label"))||m||(c?$(c.textContent):"")||D[l]||"";a(o,l==="region"?"section":l)}return t}var v="\0";function _(e){let r=[],i=e.length,t=0,g="",a=l=>l.replace(/\\(u\{[0-9a-fA-F]+\}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{2}|.)/gs,(m,c)=>c==="n"?`
2
2
  `:c==="t"?" ":c[0]==="u"||c[0]==="x"?String.fromCodePoint(parseInt(c.replace(/[ux{}]/g,""),16)):c),n=l=>{let m=++t;for(;t<i&&e[t]!==l&&e[t]!==`
3
3
  `;)t+=e[t]==="\\"?2:1;let c=e.slice(m,t);return t++,a(c)},d=()=>{t++;let l=!1;for(;t<i&&e[t]!==`
4
4
  `;){let m=e[t];if(m==="\\")t+=2;else if(m==="[")l=!0,t++;else if(m==="]")l=!1,t++;else{if(m==="/"&&!l)break;t++}}for(t++;t<i&&/[a-z]/i.test(e[t]);)t++},s=()=>{t++;let l="";for(;t<i;){let m=e[t];if(m==="\\")l+=a(e.slice(t,t+2)),t+=2;else{if(m==="`")return t++,l;m==="$"&&e[t+1]==="{"?(t+=2,f(!0),l+=v):(l+=m,t++)}}return l};function f(l){let m=0;for(;t<i;){let c=e[t];if(c==="/"&&e[t+1]==="/"){let o=e.indexOf(`
@@ -0,0 +1 @@
1
+ import{b as un,c as fn}from"./chunk.QKRQPUCE.js";import{j as x}from"./chunk.VVIQSFM4.js";import{b as Z}from"./chunk.TQ3MNB6K.js";import{Lc as U,Nd as cn,Qb as Q,ha as H,hb as on,ma as T,na as K,oa as en,oc as rn,pa as tn,pc as E,rb as V,ta as sn,ua as J,va as G,xc as an,yc as dn}from"./chunk.6L6RUOSF.js";function ln(){return{name:"insight",derive({store:e,nodes:a,kindSelection:t}){let f=[],v=l=>T(e.schema.tryDefinition(l.kind),l);for(let l of a){if([...e.schema.edgeKinds].reduce((d,w)=>d+e.graph.out(l.id,w).length+e.graph.in(l.id,w).length,0)===0){f.push({id:`insight:island:${l.id}`,text:`${v(l)} is connected to nothing yet`,nodeIds:[l.id]});continue}for(let d of e.schema.edgeKinds){let w=e.graph.in(l.id,d).length;if(w<3)continue;let c=[...e.graph.allEdges()].filter(o=>o.kind===d),n=c.length;n>=4&&w/n>.6&&f.push({id:`insight:load:${l.id}:${d}`,text:`${v(l)} ${bn(e,c,d,w)}`,nodeIds:[l.id]})}}for(let l of t){if(e.graph.nodesOfKind(l).length>0)continue;let A=e.schema.definitions.filter(d=>d.kind!==l).filter(d=>Object.values(d.edges).some(w=>w.to!=="*"&&w.to.includes(l))).map(d=>d.plural??`${d.kind}s`);A.length>0&&f.push({id:`insight:gap:${l}`,text:`Nothing here yet, though ${A.join(" and ")} expect to connect to these`,nodeIds:[]})}return{observations:f}}}}function bn(e,a,t,f){let v=new Set(a.map(c=>e.graph.getNode(c.from)?.kind).filter(c=>c!==void 0)),l=v.size===1?[...v][0]:void 0,A=a.length,d=Z(e.schema,l??[...v][0]??"",t,"in"),w=c=>l?en(e.schema,l,c):String(c);return f===A?`${d}: all ${w(f)}`:`${d}: ${f} of the ${w(A)}`}function hn(e){let a=new Map;if(e.length===0)return a;let t=e.slice(-512),f=new Set;for(let l of t)l.undoes&&f.add(l.undoes);let v=e[e.length-1].seq;for(let l of t){if(!l.mutation||f.has(l.id))continue;let A=Math.pow(.5,(v-l.seq)/64);a.set(l.mutation.name,(a.get(l.mutation.name)??0)+A)}return a}function gn(e){return 8*(e/(e+1))}var Sn=100;function pn(){return{name:"invariant",derive({store:e,selection:a,nodes:t,violations:f}){let v=c=>T(e.schema.tryDefinition(c.kind),c),l=new Set(a),A=f.filter(c=>c.nodeIds.some(n=>l.has(n))||c.subjectId!==void 0&&l.has(c.subjectId)),d=[],w=[];A.forEach((c,n)=>{w.push({id:`violation:${c.invariant}:${n}`,text:c.message,nodeIds:c.nodeIds}),c.repairs.forEach((o,h)=>{d.push({id:`invariant:${c.invariant}:${n}:${h}`,label:o.label,provider:"invariant",mutation:o.mutation,args:o.args??{},open:(o.missing??[]).map(m=>{let r=e.allMutations().find(g=>g.name===o.mutation);if(!r)return{name:m};let s=E(r.input).find(g=>g.name===m),k=s?s.kinds.includes("*")?e.graph.allNodes().map(g=>g.id):s.kinds.flatMap(g=>e.graph.nodesOfKind(g).map($=>$.id)):void 0;return{name:m,shape:x(r.input,m),...s?{kinds:s.kinds}:{},...k?{candidates:k}:{}}}),score:Sn-h-(o.missing?.length??0),why:c.message,nodeIds:c.nodeIds,...c.subjectId===void 0?{}:{subjectId:c.subjectId}})})});for(let c of t){let n=e.allInvariants().filter(o=>{if(o.scope==="graph")return!1;let h=o.scope;return h.kind!==c.kind?!1:h.match?h.match(c):!0});n.length!==0&&(A.some(o=>o.subjectId===c.id||o.nodeIds.includes(c.id))||w.push({id:`holds:${c.id}`,text:`${v(c)} holds \u2014 nothing currently breaks ${n.length===1?"it":`any of its ${n.length} rules`}`,nodeIds:[c.id]}))}return{affordances:d,observations:w}}}}var X=40;function mn(){return{name:"schema",derive({store:e,selection:a,nodes:t,kindSelection:f,edgeSelection:v,principal:l}){let A=(n,o)=>l!==void 0&&!e.permits({name:n,args:o},l).ok,d=[];if(t.length===0&&v.length>0){for(let n of v){let o=e.graph.getNode(n.from),h=e.graph.getNode(n.to);if(!o||!h)continue;let m=fn(e,n);m?.provisional&&d.push({id:`schema:edge:${U}:${n.kind}:${n.from}:${n.to}`,label:"Keep this link",provider:"schema",mutation:U,args:{kind:n.kind,from:n.from,to:n.to},open:[],score:64,why:un(m),nodeIds:[n.from,n.to]});for(let r of e.allMutations()){let s=(r.connects??[]).includes(n.kind),k=(r.severs??[]).includes(n.kind);if(!s&&!k||r.derived?.relation!==void 0&&r.derived.kind!==o.kind)continue;let g={},$=[],j=E(r.input);for(let p of j){let S=p.kinds.includes("*")||p.kinds.includes(o.kind),P=p.kinds.includes("*")||p.kinds.includes(h.kind),y=S&&!j.some(I=>I!==p&&(I.kinds.includes(o.kind)||I.kinds.includes("*")));S&&!P?g[p.name]=n.from:P&&!S?g[p.name]=n.to:S&&P&&y?g[p.name]=n.from:$.push({name:p.name,kinds:p.kinds,candidates:[n.from,n.to],shape:x(r.input,p.name)})}for(let p of q(r.input,""))p in g||$.some(S=>S.name===p)||$.push({name:p,shape:x(r.input,p)});$.every(p=>p.optional===!0?!0:p.kinds!==void 0?(p.candidates?.length??0)>0:(p.candidates?.length??0)>0||p.shape!==void 0&&p.shape.type!=="unknown")&&(s&&!k&&$.length===0||d.push({id:`schema:edge:${r.name}:${n.kind}:${n.from}:${n.to}`,label:K(r),provider:"schema",mutation:r.name,args:g,open:$,...r.destructive?{destructive:!0}:{},score:(k?62:58)-$.length,why:`this line is "${Z(e.schema,e.graph.getNode(n.from)?.kind??"",n.kind,"out")}"`,nodeIds:[n.from,n.to]}))}}return{affordances:d}}if(t.length===0&&f.length>0){let n=new Set(f),o=[];for(let h of e.allMutations()){if(!(h.creates??[]).some(s=>n.has(s)))continue;let m=[];for(let s of E(h.input)){let k=s.kinds.includes("*")?e.graph.allNodes().map(g=>g.id):s.kinds.flatMap(g=>e.graph.nodesOfKind(g).map($=>$.id));m.push({name:s.name,kinds:s.kinds,candidates:k,shape:x(h.input,s.name),...s.optional?{optional:!0}:{}})}for(let s of q(h.input,""))m.some(k=>k.name===s)||m.push({name:s,shape:x(h.input,s)});if(!m.every(s=>s.optional===!0?!0:s.kinds!==void 0?(s.candidates?.length??0)>0:(s.candidates?.length??0)>0||s.shape!==void 0&&s.shape.type!=="unknown")&&!A(h.name,{})){let s=m.filter(k=>k.optional!==!0&&k.kinds!==void 0&&!k.kinds.includes("*")&&(k.candidates?.length??0)===0);if(s.length>0){let k=[...new Set(s.flatMap(g=>g.kinds??[]))].map(g=>J(G(e.schema.tryDefinition(g),g)));o.push({id:`schema:waits:${h.name}`,text:`"${h.title??h.name}" cannot begin until there is ${k.length===1?k[0]:`${k.slice(0,-1).join(", ")} and ${k[k.length-1]}`}.`,nodeIds:[]})}continue}d.push({id:`schema:add:${h.name}`,label:K(h),provider:"schema",mutation:h.name,args:{},open:m,score:X-m.length,why:`this makes ${(h.creates??[]).filter(s=>n.has(s)).map(s=>J(G(e.schema.tryDefinition(s),s))).join(", ")}`,nodeIds:[]})}return{affordances:d,observations:o}}if(t.length===0)return{};let w=new Set(t.map(n=>n.kind)),c=(n,o,h)=>{let m=[];for(let r of e.graph.allEdges()){if(!o.includes(r.kind))continue;let s=r.from===n?r.to:r.to===n?r.from:null;if(!s)continue;let k=e.graph.getNode(s);k&&(!h.includes("*")&&!h.includes(k.kind)||m.includes(s)||m.push(s))}return m};for(let n of e.allMutations()){let o=n.subject;if(!o||!(o.kinds==="*"?!0:[...w].every(u=>o.kinds.includes(u))))continue;let m=n.derived?.act;if((m==="archive"||m==="merge")&&t.some(u=>V(u))||m==="unarchive"&&!t.some(u=>V(u))||m==="leave-alone"&&t.every(u=>Q(e,u.id))||m==="allow-tidying"&&!t.some(u=>Q(e,u.id)))continue;let r=t.length===1?t[0].id:null,s=n.severs??[],k=n.connects??[];if(r&&s.length>0&&k.length===0&&c(r,s,["*"]).length===0)continue;let g=[];for(let u of E(n.input)){if(u.name===o.arg)continue;let p=u.kinds.includes("*")?e.graph.allNodes().map(S=>S.id):u.kinds.flatMap(S=>e.graph.nodesOfKind(S).map(P=>P.id));if(r&&k.length>0){let S=new Set(c(r,k,u.kinds));p=p.filter(P=>!S.has(P))}else r&&s.length>0&&(p=c(r,s,u.kinds));g.push({name:u.name,kinds:u.kinds,candidates:p.filter(S=>!a.includes(S)),shape:x(n.input,u.name),...u.optional?{optional:!0}:{}})}for(let u of q(n.input,o.arg))g.some(p=>p.name===u)||g.push({name:u,shape:x(n.input,u)});if(g.length===0&&r){let u=wn(n.input,o.arg);if(u.length>0&&!An(e,n.name,{[o.arg]:r}))for(let p of u){let S=E(n.input).find(P=>P.name===p);g.push({name:p,optional:!0,...S?{kinds:S.kinds}:{},shape:x(n.input,p)})}}if(!g.every(u=>u.optional===!0?!0:u.kinds!==void 0?(u.candidates?.length??0)>0:(u.candidates?.length??0)>0||u.shape!==void 0&&u.shape.type!=="unknown")&&!A(n.name,r?{[o.arg]:r}:{}))continue;let j=t.map(u=>({[o.arg]:u.id}));g.length===0&&!j.some(u=>e.wouldChange({name:n.name,args:u}))||d.push({id:`schema:${n.name}`,label:t.length>1?`${K(n)} (${t.length})`:K(n),provider:"schema",mutation:n.name,args:j[0]??{},open:g,...n.destructive?{destructive:!0}:{},...n.derived?.act==="archive"||n.derived?.act==="merge"||n.derived?.act==="leave-alone"||n.derived?.act==="allow-tidying"?{setsAside:!0}:{},...s.length>0||k.length>0?{ties:!0}:{},...t.length>1?{batch:j}:{},score:X-g.length,why:t.length>1?`all ${t.length} selected nodes are ${[...w].map(u=>tn(e.schema,u).toLowerCase()).join(" or ")}`:`this is ${J(G(e.schema.tryDefinition(t[0].kind),t[0].kind))}`,nodeIds:t.map(u=>u.id)})}if(t.length===1){let n=t[0];for(let o of e.allMutations()){let h=o.subject,m=o.severs??[],r=o.connects??[];if(!h||m.length===0&&r.length===0)continue;let s=h.kinds==="*"?"*":h.kinds;if(s==="*"||s.includes(n.kind))continue;let k=E(o.input),g=k.find(y=>y.name!==h.arg&&(y.kinds.includes("*")||y.kinds.includes(n.kind)));if(!g)continue;let $=s,j=$.includes("*")?e.graph.allNodes().map(y=>y.id):$.flatMap(y=>e.graph.nodesOfKind(y).map(I=>I.id)),u=new Set(c(n.id,r.length>0?r:m,$)),p=r.length>0?j.filter(y=>!u.has(y)):j.filter(y=>u.has(y));if(p.length===0)continue;let S=[{name:h.arg,kinds:$,candidates:p,shape:x(o.input,h.arg)}];for(let y of k){if(y.name===g.name||y.name===h.arg)continue;let I=y.kinds.includes("*")?e.graph.allNodes().map(L=>L.id):y.kinds.flatMap(L=>e.graph.nodesOfKind(L).map(O=>O.id));S.push({name:y.name,kinds:y.kinds,candidates:I,shape:x(o.input,y.name),...y.optional?{optional:!0}:{}})}for(let y of q(o.input,g.name))y===h.arg||S.some(I=>I.name===y)||S.push({name:y,shape:x(o.input,y)});S.every(y=>y.optional===!0?!0:y.kinds!==void 0?(y.candidates?.length??0)>0:(y.candidates?.length??0)>0||y.shape!==void 0&&y.shape.type!=="unknown")&&d.push({id:`schema:tie:${o.name}:${n.id}`,label:o.fromTheOtherEnd??K(o),provider:"schema",mutation:o.name,args:{[g.name]:n.id},open:S,ties:!0,...o.destructive?{destructive:!0}:{},score:X-S.length+2,why:`${m.length>0?"this one is on":"this one could join"} ${S[0].candidates.length===1?"it":"one of these"}`,nodeIds:[n.id]})}}return{affordances:d}}}}function wn(e,a){let t=e.shape;return t?Object.entries(t).filter(([f,v])=>f!==a&&v.safeParse(void 0).success).map(([f])=>f):[]}function An(e,a,t){try{return e.preview({name:a,args:t}),!0}catch{return!1}}function q(e,a){let t=e.shape;return t?Object.entries(t).filter(([f,v])=>f!==a&&!v.safeParse(void 0).success).map(([f])=>f):[]}var $n=70,On=80,In=new Set(["id","kind"]);function kn(){return{name:"structure",derive({store:e,nodes:a}){let t=d=>T(e.schema.tryDefinition(d.kind),d);if(a.length<2)return{};let f=[],v=[],l=a.map(d=>d.id);for(let d of e.schema.edgeKinds){let w=Pn(a.map(n=>new Set([...e.graph.out(n.id,d).map(o=>o.id),...e.graph.in(n.id,d).map(o=>o.id)])));for(let n of w){let o=e.graph.getNode(n);o&&f.push({id:`shared:${d}:${n}`,text:`all ${a.length} share "${t(o)}" (${H(d).toLowerCase()})`,nodeIds:[...l,n]})}let c=new Map;for(let n of a)for(let o of[...e.graph.out(n.id,d),...e.graph.in(n.id,d)])c.set(o.id,(c.get(o.id)??0)+1);for(let[n,o]of c){if(o!==a.length-1||a.length<3||l.includes(n))continue;let h=e.graph.getNode(n);if(!h)continue;let m=a.find(r=>![...e.graph.out(r.id,d),...e.graph.in(r.id,d)].some(s=>s.id===n));if(m&&(f.push({id:`near-shared:${d}:${n}`,text:`all but "${t(m)}" share "${t(h)}" (${H(d).toLowerCase()})`,nodeIds:[...l,n]}),!(!e.schema.edgeAllowed(d,m.kind,h.kind)&&!e.schema.edgeAllowed(d,h.kind,m.kind))))for(let r of e.allMutations()){let s=r.subject;if(!s||s.kinds!=="*"&&!s.kinds.includes(m.kind)||(r.connects!==void 0||r.severs!==void 0)&&!(r.connects??[]).includes(d))continue;let g=jn(r.input,h.kind);g&&v.push({id:`structure:join:${r.name}:${m.id}:${n}`,label:`${K(r)}: bring "${t(m)}" in line with the others`,provider:"structure",mutation:r.name,args:{[s.arg]:m.id,[g]:n},open:[],score:$n,why:`every other selected node is connected to "${t(h)}"`,nodeIds:[m.id,n]})}}}let A=new Map;for(let d of a)A.set(d.kind,[...A.get(d.kind)??[],d]);for(let[d,w]of A){if(w.length<2)continue;let c=w,n=w.map(r=>r.id),o=A.size>1?`${d}:`:"",h=new Set;for(let r of c)for(let s of Object.keys(r))In.has(s)||h.add(s);let m=r=>e.schema.definitions.find(s=>s.kind===r);for(let r of[...h].sort()){let s=m(c[0].kind),k=sn(s,r),g=s?.display?.format?.[r],$=O=>{if(!g)return O;try{return String(g(JSON.parse(O)))}catch{return O}},j=c.map(O=>O[r]),u=new Map;if(j.forEach((O,R)=>{let D=JSON.stringify(O??null),M=u.get(D);M?M.push(c[R]):u.set(D,[c[R]])}),u.size===1){let O=[...u.keys()][0];if(O==="null")continue;f.push({id:`agree:${o}${r}`,text:`all ${c.length} share the ${k} ${$(O)}`,nodeIds:n});continue}if(c.length<3||u.size!==2)continue;let p=[...u.entries()].sort((O,R)=>R[1].length-O[1].length),[S,P]=p[0],[,y]=p[1];if(y.length!==1||S==="null")continue;let I=y[0],L=JSON.parse(S);f.push({id:`odd-one-out:${o}${r}`,text:`${P.length} share the ${k} ${$(S)}; "${t(I)}" does not`,nodeIds:n});for(let O of e.allMutations()){let R=O.subject;if(!R||R.kinds!=="*"&&!R.kinds.includes(I.kind))continue;let D=yn(O.input);if(!D||!(r in D))continue;let M={[R.arg]:I.id,[r]:L},C=!0;for(let[W,z]of Object.entries(D)){if(W in M||z.safeParse(void 0).success)continue;let B=I[W];if(B===void 0){C=!1;break}M[W]=B}!C||!O.input.safeParse(M).success||v.push({id:`structure:align:${O.name}:${r}:${I.id}`,label:`Align the ${k} of "${t(I)}" with the other ${P.length}`,provider:"structure",mutation:O.name,args:M,open:[],score:On,why:`${P.length} of ${c.length} share the ${k} ${$(S)}`,nodeIds:n})}}}return{affordances:v,observations:f}}}}function Pn(e){if(e.length===0)return[];let[a,...t]=e;return[...a].filter(f=>t.every(v=>v.has(f))).sort()}function yn(e){return e.shape??null}function jn(e,a){let t=yn(e);if(!t)return null;for(let[f]of Object.entries(t)){let v=rn(t[f]);if(v&&(v.includes("*")||v.includes(a)))return f}return null}function Nn(){return[pn(),kn(),mn(),ln()]}function Yn(e,a,t={}){let f=vn(),v=t.providers??Nn(),l=a.map(i=>e.graph.getNode(i)).filter(i=>i!==void 0),A={store:e,selection:a,nodes:l,kindSelection:t.kindSelection??[],edgeSelection:t.edgeSelection??[],violations:e.violations(t.context),context:t.context??{},principal:t.principal??{kind:"human"}},d=[],w=[];for(let i of v){let b=i.derive(A);d.push(...b.affordances??[]),w.push(...b.observations??[])}let c=new Map(e.allMutations().map(i=>[i.name,i]));d.forEach((i,b)=>{let N=i.open.length>1?c.get(i.mutation):void 0;N&&(d[b]={...i,open:dn(i.open,an(e.schema,N))})});let n=new Set(e.allMutations().filter(i=>i.pinned).map(i=>i.name)),o=new Set(t.pins?.pinned??[]),h=new Set(t.pins?.unpinned??[]),m=i=>o.has(i.mutation)?"user":n.has(i.mutation)&&!h.has(i.mutation)?"declared":void 0,r=i=>{let b=m(i);return b?{...i,pinned:b}:i},s=new Map;for(let[i,b]of hn(e.log.all()))s.set(i,gn(b));let k=i=>i.pinned==="user"?0:i.pinned==="declared"?1:2,g=i=>i.score+(s.get(i.mutation)??0),$=new Map(e.allMutations().map(i=>[i.name,i])),j=new Map,u=i=>{let b=$.get(i.mutation);if(!b)return[];let N=j.get(i.mutation);N||(N=E(b.input).map(F=>F.name),j.set(i.mutation,N));let _=[];for(let F of i.batch??[i.args])for(let Y of N){let nn=F[Y]??i.args[Y];typeof nn=="string"&&_.push(nn)}return _},p=t.focus,S=4,P=i=>i.open.length>0?1:0,y=i=>{if(p===void 0)return S;let b=u(i);return b.length>0?b.includes(p)?I(i,0):S:i.nodeIds.includes(p)||i.subjectId===p?I(i,1):S},I=(i,b)=>i.provider==="invariant"?b:2+P(i),L=i=>i.setsAside?1:0,O=xn(d).map(r),R=new Map(O.map((i,b)=>[i,b])),D=O.sort((i,b)=>{let N=Number(i.destructive??!1)-Number(b.destructive??!1);if(N!==0)return N;let _=L(i)-L(b);if(_!==0)return _;let F=y(i)-y(b);return F!==0?F:y(i)<2?R.get(i)-R.get(b):+(b.provider==="invariant")-+(i.provider==="invariant")||k(i)-k(b)||g(b)-g(i)||i.id.localeCompare(b.id)}),M=t.principal??{kind:"human"},C=[],W=[];for(let i of D){let b=e.permits({name:i.mutation,args:{...i.args,...i.batch?.[0]??{}}},M);if(b.ok)C.push(i);else{let N=Mn(e,i,M);if(N==="done")continue;N?C.push(N):W.push({...i,refusal:b.refusal})}}let z=C.map((i,b)=>({...i,rank:b})),B=W.map((i,b)=>({...i,rank:C.length+b}));return{affordances:t.limit===void 0?z:z.slice(0,t.limit),withheld:B,observations:Rn(w),ms:vn()-f}}function xn(e){let a=new Map;for(let t of e){let f=[t.mutation,JSON.stringify(t.args),JSON.stringify(t.batch??null)].join("|"),v=a.get(f);(!v||t.score>v.score)&&a.set(f,t)}return[...a.values()]}function Rn(e){let a=new Map;for(let t of e)a.set(t.text,t);return[...a.values()]}function vn(){return typeof performance<"u"?performance.now():Date.now()}function ne(e,a,t={},f={}){let v=(a.batch??[a.args]).map(A=>({name:a.mutation,args:{...a.args,...A,...t}})),l=e.allMutations().find(A=>A.name===a.mutation);return e.applyAll(v,{...l?.describe?{}:{intent:a.label},...f.author?{author:f.author}:{}})}function ee(e,a,t={},f={}){try{return e.preview({name:a.mutation,args:{...a.args,...t}})}catch(v){throw f.pressed&&cn(v,f.pressed.author?.id),v}}function Mn(e,a,t){let f=e.allMutations().find(n=>n.name===a.mutation)?.subject,v=f!==void 0&&a.args[f.arg]===void 0,l=v?a.open.find(n=>n.name===f.arg):a.open.find(n=>n.name!==f?.arg&&n.candidates);if(!l?.candidates)return;let A=n=>e.permits({name:a.mutation,args:{...a.args,...a.batch?.[0]??{},[l.name]:n}},t).ok,d=l.candidates.filter(A),w=on(t),c=w===void 0?void 0:e.graph.getNode(w);if(d.length===0){let n=v?f.kinds:"*";return c!==void 0&&(n==="*"||n.includes(c.kind))&&A(c.id)?"done":void 0}return d.length===1&&d[0]===w?{...a,args:{...a.args,[l.name]:w},open:a.open.filter(n=>n!==l)}:{...a,open:a.open.map(n=>n===l?{...n,candidates:d}:n)}}export{Yn as a,ne as b,ee as c};
@@ -1 +1 @@
1
- var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{a as y}from"./chunk.5MOXQUZH.js";import{m as g}from"./chunk.NLZHNPDU.js";import{G as R,La as m,W as c}from"./chunk.FWXW4T4I.js";import{a as f}from"./chunk.SDO3U72B.js";import{ua as p}from"./chunk.DHPXRDT5.js";import{b as u}from"./chunk.AJZBJBMO.js";var o=u(R(),1);var r=u(c(),1),S,h=()=>S??=m(f(()=>(__graviewPreload(import.meta.url,["./chunk.HCX6KPRF.js","./chunk.EP7YT7LT.js","./chunk.I7KN732Z.js","./chunk.TLPCYKLW.js","./chunk.DHPXRDT5.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.AHYMIVBX.js"))));function L(e){let[n,t]=(0,o.useState)(()=>h().current);return(0,o.useEffect)(()=>{if(!e||n)return;let i=!0;return h().load().then(a=>i&&t(a),()=>{}),()=>{i=!1}},[e,n]),n}function D(e,n){let t=L(n.length>0);return(0,o.useMemo)(()=>t?t.withLines(e,n):n,[t,e,n])}function I(e,n){let t=L(n.some(i=>i.shape));return(0,o.useMemo)(()=>{let i=new Map;if(!t)return i;for(let a of n){let l=t.ruleLine(a,e);l&&i.set(a.name,l)}return i},[t,e,n])}function M(e){let n=e.line;if(!(!n||e.message.endsWith(` \u2014 ${n.text}`)||e.message===b(e)))return e.message}function b(e){let n=e.line;return n?n.record!==void 0?`${n.record} \u2014 ${n.text}`:n.text:e.message}var P={name:{},op:{color:"var(--graview-ink-muted)",fontWeight:500},value:{fontWeight:600,fontVariantNumeric:"tabular-nums"},word:{color:"var(--graview-ink-muted)"},open:{color:"var(--graview-ink-faint)"},close:{color:"var(--graview-ink-faint)"}};function w({parts:e}){return(0,r.jsx)(r.Fragment,{children:e.map((n,t)=>(0,r.jsxs)("span",{children:[n.space?" ":"",(0,r.jsx)("span",{"data-graview-rule-part":n.as,style:P[n.as],children:n.text})]},t))})}function x(e,n){let t=p(e?.tryDefinition(n),n);return t.charAt(0).toUpperCase()+t.slice(1)}function C({line:e,schema:n,brand:t,lead:i=e.record===void 0?"kind":"record",stacked:a=!1,style:l}){let d=e.kind,s=i==="kind"?d?x(n,d):void 0:i==="record"?e.record:void 0,k=i==="kind"&&s?`${s}: ${e.said}`:i==="record"&&s?`${s} \u2014 ${e.said}`:e.said;return(0,r.jsxs)("span",{"data-graview-rule-line":"",style:{overflowWrap:"anywhere",...l},children:[(0,r.jsx)("span",{style:g,children:k}),(0,r.jsxs)("span",{"aria-hidden":"true",children:[i!=="none"&&d?(0,r.jsx)("span",{style:{display:"inline-flex",verticalAlign:"-0.1em",marginRight:"0.4em"},children:(0,r.jsx)(y,{kind:d,...n?{schema:n}:{},...t?{brand:t}:{},size:13})}):null,s?(0,r.jsxs)("span",{"data-graview-rule-head":"",style:{fontWeight:600,marginRight:i==="record"||a?0:"0.6em"},children:[s,i==="record"&&!a?(0,r.jsx)("span",{style:{color:"var(--graview-ink-faint)",fontWeight:400},children:" \u2014 "}):null]}):null,a&&s?(0,r.jsx)("br",{}):null,(0,r.jsx)(w,{parts:e.parts}),e.when&&e.when.length>0?(0,r.jsxs)("span",{"data-graview-rule-when":"",style:{color:"var(--graview-ink-faint)"},children:[", when ",(0,r.jsx)(w,{parts:e.when})]}):null]})]})}function z(e){return e.line?e.label&&e.label.trim().length>0?e.label:void 0:e.label&&e.label!==e.message&&!e.message.startsWith(e.label)?e.label:void 0}export{D as a,I as b,M as c,C as d,z as e};
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 y}from"./chunk.MQNW3O67.js";import{m as g}from"./chunk.RJ7VSWTA.js";import{G as R,Oa as m,Y as c}from"./chunk.JCKIJSW7.js";import{a as f}from"./chunk.SDO3U72B.js";import{va as p}from"./chunk.6L6RUOSF.js";import{b as u}from"./chunk.AJZBJBMO.js";var o=u(R(),1);var r=u(c(),1),S,h=()=>S??=m(f(()=>(__graviewPreload(import.meta.url,["./chunk.UQZ2P6KD.js","./chunk.IXYG65TM.js","./chunk.W6L2VAJG.js","./chunk.N3MXLORL.js","./chunk.6L6RUOSF.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.DG3YNOH3.js"))));function L(e){let[n,t]=(0,o.useState)(()=>h().current);return(0,o.useEffect)(()=>{if(!e||n)return;let i=!0;return h().load().then(a=>i&&t(a),()=>{}),()=>{i=!1}},[e,n]),n}function D(e,n){let t=L(n.length>0);return(0,o.useMemo)(()=>t?t.withLines(e,n):n,[t,e,n])}function I(e,n){let t=L(n.some(i=>i.shape));return(0,o.useMemo)(()=>{let i=new Map;if(!t)return i;for(let a of n){let l=t.ruleLine(a,e);l&&i.set(a.name,l)}return i},[t,e,n])}function M(e){let n=e.line;if(!(!n||e.message.endsWith(` \u2014 ${n.text}`)||e.message===b(e)))return e.message}function b(e){let n=e.line;return n?n.record!==void 0?`${n.record} \u2014 ${n.text}`:n.text:e.message}var P={name:{},op:{color:"var(--graview-ink-muted)",fontWeight:500},value:{fontWeight:600,fontVariantNumeric:"tabular-nums"},word:{color:"var(--graview-ink-muted)"},open:{color:"var(--graview-ink-faint)"},close:{color:"var(--graview-ink-faint)"}};function w({parts:e}){return(0,r.jsx)(r.Fragment,{children:e.map((n,t)=>(0,r.jsxs)("span",{children:[n.space?" ":"",(0,r.jsx)("span",{"data-graview-rule-part":n.as,style:P[n.as],children:n.text})]},t))})}function x(e,n){let t=p(e?.tryDefinition(n),n);return t.charAt(0).toUpperCase()+t.slice(1)}function C({line:e,schema:n,brand:t,lead:i=e.record===void 0?"kind":"record",stacked:a=!1,style:l}){let d=e.kind,s=i==="kind"?d?x(n,d):void 0:i==="record"?e.record:void 0,k=i==="kind"&&s?`${s}: ${e.said}`:i==="record"&&s?`${s} \u2014 ${e.said}`:e.said;return(0,r.jsxs)("span",{"data-graview-rule-line":"",style:{overflowWrap:"anywhere",...l},children:[(0,r.jsx)("span",{style:g,children:k}),(0,r.jsxs)("span",{"aria-hidden":"true",children:[i!=="none"&&d?(0,r.jsx)("span",{style:{display:"inline-flex",verticalAlign:"-0.1em",marginRight:"0.4em"},children:(0,r.jsx)(y,{kind:d,...n?{schema:n}:{},...t?{brand:t}:{},size:13})}):null,s?(0,r.jsxs)("span",{"data-graview-rule-head":"",style:{fontWeight:600,marginRight:i==="record"||a?0:"0.6em"},children:[s,i==="record"&&!a?(0,r.jsx)("span",{style:{color:"var(--graview-ink-faint)",fontWeight:400},children:" \u2014 "}):null]}):null,a&&s?(0,r.jsx)("br",{}):null,(0,r.jsx)(w,{parts:e.parts}),e.when&&e.when.length>0?(0,r.jsxs)("span",{"data-graview-rule-when":"",style:{color:"var(--graview-ink-faint)"},children:[", when ",(0,r.jsx)(w,{parts:e.when})]}):null]})]})}function z(e){return e.line?e.label&&e.label.trim().length>0?e.label:void 0:e.label&&e.label!==e.message&&!e.message.startsWith(e.label)?e.label:void 0}export{D as a,I as b,M as c,C as d,z as e};
@@ -0,0 +1 @@
1
+ import{a as Se,b as ve}from"./chunk.25VJPUDH.js";import{b as ue,c as pe,d as K,e as ye,f as j,g as me,h as fe,i as he,j as be,k as we,l as E}from"./chunk.G767NLBH.js";import{a as $e}from"./chunk.RO3D2RNP.js";import{b as ke}from"./chunk.MEAUTBVM.js";import"./chunk.OKHXXIMN.js";import"./chunk.NH3VXTGX.js";import"./chunk.6IMRCKB4.js";import"./chunk.RDUGUC7R.js";import"./chunk.6TBQV3NO.js";import"./chunk.MT252WP4.js";import{l as ge}from"./chunk.VVIQSFM4.js";import"./chunk.TQ3MNB6K.js";import"./chunk.VGYG2IBZ.js";import{m as G}from"./chunk.RJ7VSWTA.js";import"./chunk.P43LPXXJ.js";import{G as le,Y as I,ga as M,ia as _,qa as ce}from"./chunk.JCKIJSW7.js";import"./chunk.SDO3U72B.js";import{Nc as F,fb as re,ia as ne,ma as B,oa as oe,pa as se,pb as ae,pc as de,ta as ie}from"./chunk.6L6RUOSF.js";import"./chunk.FQLNBIQ5.js";import{b as z}from"./chunk.AJZBJBMO.js";function xe(e){let n=e.basis.trim(),d=/^[^:]{1,40}: (?:\d(?:\.\d+)?|none|no)\b/i.test(n)?/\(([^()]+)\)\s*$/.exec(n)?.[1]??"":n;if(!d||/^[\d.\s%]+$/.test(d))return"No reason was kept.";let o=d.charAt(0).toUpperCase()+d.slice(1);return/[.!?]$/.test(o)?o:`${o}.`}var ze=new Set(["in","into","on","onto","under","at","within","inside","near","beside","behind","over","after","before"]),Ee=new Set(["for","to","on","in","with","by","from","of","after","before","into","about","under"]),He=e=>/ies$/.test(e)?e.replace(/ies$/,"y"):/(ch|sh|x|ss|o)es$/.test(e)?e.replace(/es$/,""):e.replace(/s$/,""),Pe=e=>/^[A-Z][a-z]/.test(e)?e.charAt(0).toLowerCase()+e.slice(1):e;function Q(e,n){let l=e.schema,d=c=>typeof c=="string"?e.graph.getNode(c):void 0,o=(c,S=!1)=>({record:c.id,label:B(l.tryDefinition(c.kind),c),...S?{quoted:!0}:{}}),i=(c,S,h,A,T)=>({parts:c,text:c.map(v=>typeof v=="string"?v:v.quoted?`\u201C${v.label}\u201D`:v.label).join(""),group:S,many:h,...A&&T?{subject:{record:A.id,label:B(l.tryDefinition(A.kind),A)},alone:T}:{alone:c}}),r=i([n.intent],`intent:${n.intent}`,c=>`${c} suggestions`);if(n.calls.length!==1)return r;let a=n.calls[0],f=a.args,p=e.allMutations().find(c=>c.name===a.name),b=p?.subject?.arg,s=b?d(f[b]):void 0;if(!p||!s)return r;let g=c=>oe(l,s.kind,c),u=c=>`${a.name}:${c}`,w=()=>{let c=de(p.input).filter(S=>S.name!==b&&f[S.name]!==void 0);return c.length===1?d(f[c[0].name]):void 0},W=d(f.into);if(a.name===`merge-${s.kind}`&&W)return i(["Merge ",o(s,!0)," into ",o(W),"?"],u("merge"),c=>`${g(c)} to merge`,s,["Merge into ",o(W),"?"]);if(a.name===`archive-${s.kind}`)return i(["Set ",o(s,!0)," aside?"],u("archive"),c=>`${g(c)} to set aside`,s,["Set aside?"]);let x=w(),N=p.connects?.find(c=>l.tryDefinition(s.kind)?.edges?.[c]!==void 0);if(x&&N){let c=l.tryDefinition(s.kind).edges[N],S=ie(l.tryDefinition(s.kind),N).split(" "),[h,A]=S,T=Pe(se(l,x.kind));if(h&&ze.has(h))return i(["Put ",o(s,!0),` ${h} `,o(x),"?"],u(`put:${h}`),$=>`${g($)} to put ${h} ${T}`,s,[`Put ${h} `,o(x),"?"]);if(h&&A&&Ee.has(A)&&/[^s]s$/.test(h)){let $=[He(h),...S.slice(1)].join(" ");return i(["Should ",o(s,!0),` ${$} `,o(x),"?"],u("verb"),P=>`${g(P)} to link`,s,[`${$.charAt(0).toUpperCase()}${$.slice(1)} `,o(x),"?"])}let v=S.join(" ");return c.cardinality==="one"?i(["Make ",o(x),` the ${v} of `,o(s,!0),"?"],u("one"),$=>`${g($)} to give ${/^[aeiou]/i.test(v)?"an":"a"} ${v}`,s,["Make ",o(x),` the ${v}?`]):i(["Add ",o(x),` to the ${v} of `,o(s,!0),"?"],u("many"),$=>`${g($)} to link`,s,["Add ",o(x),` to the ${v}?`])}let k=Object.entries(f).filter(([c,S])=>c!==b&&typeof S=="string"&&!d(S));if(n.lineage?.actor==="categorize"&&k.length===1){let c=ne(String(k[0][1]));return i(["Mark ",o(s,!0),` as ${c}?`],u("mark"),S=>`${g(S)} to mark`,s,[`Mark as ${c}?`])}return r}function We(e,n){let l=n.map(i=>({one:i,sentence:Q(e,i)})),d=new Map;for(let{sentence:i}of l)i.subject&&d.set(i.subject.record,(d.get(i.subject.record)??0)+1);let o=new Map;for(let{one:i,sentence:r}of l){let a=r.subject!==void 0&&d.get(r.subject.record)>1,f=a?`record:${r.subject.record}`:i.calls.length===1?r.group:`one:${o.size}`,p=o.get(f);p?p.suggestions.push(i):o.set(f,{sentence:r,byRecord:a,suggestions:[i]})}return[...o.values()].map(({sentence:i,byRecord:r,suggestions:a})=>r?{record:i.subject,suggestions:a}:a.length>1?{words:i.many(a.length),suggestions:a}:{suggestions:a})}var y=z(le(),1);var Te=z(le(),1),R=z(I(),1),Ae={minWidth:0,overflowWrap:"anywhere"};function Re({suggestion:e,decides:n,heard:l}){let{store:d,principal:o}=M(),[i,r]=(0,Te.useState)(null),a=e.items;if(a.length<2)return null;let f=(p,b)=>{r(null);try{j(d,e.id,{author:o,items:[p]}),l("Accepted that change; the rest still wait."),requestAnimationFrame(()=>{let s=document.querySelector(`[data-suggestion="${CSS.escape(e.id)}"]`);(s?.querySelectorAll('[data-testid="suggestion-item-accept"]')[b]??s?.querySelectorAll('[data-testid="suggestion-item-accept"]')[b-1]??s?.querySelector('[data-testid="suggestion-accept"]'))?.focus()})}catch(s){r(s instanceof Error?s.message:String(s))}};return(0,R.jsxs)("details",{"data-testid":"suggestion-items",style:{minWidth:0},children:[(0,R.jsx)("summary",{style:{cursor:"pointer",fontSize:"0.75rem",color:"var(--graview-ink-muted)"},children:`Show the ${a.length} changes`}),(0,R.jsx)("ol",{style:{margin:"6px 0 0",padding:0,listStyle:"none",display:"grid",gap:4,minWidth:0},children:a.map((p,b)=>(0,R.jsxs)("li",{"data-testid":"suggestion-item","data-item":p.at,style:{display:"flex",alignItems:"baseline",gap:6,minWidth:0,fontSize:"0.75rem"},children:[(0,R.jsx)("span",{style:{...Ae,flex:"1 1 auto"},children:p.intent}),n?(0,R.jsx)("button",{type:"button","data-testid":"suggestion-item-accept","aria-label":`Accept: ${p.intent}`,onClick:()=>f(p.at,b),style:{minHeight:24,padding:"1px 8px",fontSize:"0.75rem",flex:"0 0 auto"},children:"Accept"}):null]},p.at))}),i?(0,R.jsx)("span",{"data-testid":"suggestion-item-refused",role:"alert",style:{...Ae,display:"block",fontSize:"0.75rem",color:"var(--graview-warn)"},children:i}):null]})}var t=z(I(),1);function Ie(e,n,l=0){let d=[e>0?`${e===1?"one suggestion":`${e} suggestions`} waiting`:"",e>0&&l>0?`${l===1?"a reader agrees":`${l} readers agree`} with one that waits`:"",n>0?`tidied ${n===1?"one thing":`${n} things`} while you were away`:""].filter(Boolean);return d.length>0?d.join(" \xB7 ").replace(/^./,o=>o.toUpperCase()):void 0}function J(){let{store:e,principal:n,dismissals:l,app:d}=M(),o=_(),i=(0,y.useMemo)(()=>ve(l,d?.name??"app",n),[l,d?.name,n]),[r,a]=(0,y.useReducer)(g=>g+1,0);(0,y.useEffect)(()=>i.onChange?.(a),[i]),(0,y.useEffect)(()=>e.subscribe((g,u)=>u.some(w=>w.vote!==void 0)&&a()),[e]);let f=(0,y.useMemo)(()=>ue(e,n,{dismissed:i.list()}),[e,n,o,i,r]),p=(0,y.useCallback)(g=>K(e,g,n)||e.permits({name:F,args:{suggestion:g.id,vote:"for"}},n).ok,[e,n]),b=(0,y.useMemo)(()=>f.filter(p),[f,p]),s=(0,y.useMemo)(()=>f.filter(g=>!p(g)),[f,p]);return{waiting:b,toldOf:s,notNow:i}}function st({onCount:e}){let{waiting:n}=J();return(0,y.useEffect)(()=>e(n.length),[e,n.length]),null}function it({close:e,done:n}){let{waiting:l,notNow:d}=J();return(0,t.jsx)(Ce,{waiting:l,notNow:d,close:e,done:n})}function Ce({waiting:e,notNow:n,close:l,done:d}){let{store:o}=M(),[i,r]=(0,y.useState)(""),a=ce(),f=s=>o.graph.has(s)?g=>{l(),a.record(g)}:null,p=s=>{r(s),requestAnimationFrame(()=>{let g=document.querySelector('[data-testid="inbox"] [data-testid="suggestion"]'),u=g?.querySelector('[data-testid="suggestion-accept"], [data-testid="suggestion-sign-in"], [data-testid="suggestion-not-now"]')??g?.querySelector("button")??document.querySelector('[data-testid="inbox-needs-you"] [data-testid="inbox-problem-words"]:is(button), [data-testid="inbox-needs-you"] [data-testid="inbox-notification"]:is(a, button)');u?u.focus():d()})},b=(0,t.jsx)("span",{role:"status","data-testid":"suggestion-heard",style:G,children:i});return e.length===0?b:(0,t.jsxs)("div",{"data-testid":"suggested",style:{display:"flex",flexDirection:"column",gap:9,minWidth:0},children:[[e.filter(E),e.filter(s=>!E(s))].map((s,g)=>s.length===0?null:(0,t.jsxs)("div",{style:{display:"grid",gap:6,minWidth:0},children:[e.some(E)?(0,t.jsx)("h4",{style:{margin:0,fontSize:"0.75rem",fontWeight:600,color:"var(--graview-ink-muted)"},children:g===0?"Proposed":"Suggested by the app"}):null,(0,t.jsx)("ol",{"data-testid":g===0?"proposals":"suggestions",style:O,children:We(o,s).map(u=>u.record?(0,t.jsx)(Ge,{record:u.record,level:e.some(E)?5:4,go:f(u.record.record),children:w=>u.suggestions.map(W=>(0,t.jsx)(Z,{suggestion:W,notNow:n,settled:p,heard:r,goes:f,under:w},W.id))},u.suggestions[0].id):u.words?(0,t.jsxs)("li",{"data-testid":"suggestion-group",style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:6,minWidth:0},children:[(0,t.jsx)("span",{style:{...C,fontSize:"0.75rem",fontWeight:600,color:"var(--graview-ink-muted)"},children:u.words}),(0,t.jsx)("ol",{style:O,children:u.suggestions.map(w=>(0,t.jsx)(Z,{suggestion:w,notNow:n,settled:p,heard:r,goes:f},w.id))})]},u.suggestions[0].id):u.suggestions.map(w=>(0,t.jsx)(Z,{suggestion:w,notNow:n,settled:p,heard:r,goes:f},w.id)))})]},g)),b]})}function rt({alone:e,close:n,done:l}){let{store:d,whileAway:o,principal:i}=M(),{waiting:r,toldOf:a,notNow:f}=J();_();let[p,b]=(0,y.useState)(null),s=o?.tidied??0,g=o?Ie(r.length,s,o.agreed):void 0,u=pe(d,i).filter(w=>d.mayUndo(w.batch,i).ok);return(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:8,minWidth:0},children:[g?(0,t.jsxs)("p",{"data-testid":"while-away",style:{margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)"},children:[g,"."]}):null,a.length>0?(0,t.jsx)(Ce,{waiting:a,notNow:f,close:n,done:l}):null,u.length>0?(0,t.jsx)("ul",{"data-testid":"suggestions-stopped","aria-label":"What is not suggested any more",style:{...O,gap:6},children:u.map(w=>(0,t.jsxs)("li",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",columnGap:10,rowGap:4,minWidth:0,color:"var(--graview-ink-muted)"},children:[(0,t.jsx)("span",{style:{...C,flex:"1 1 14em"},children:w.words}),(0,t.jsx)("button",{type:"button","data-testid":"suggestion-suggest-again",onClick:()=>{b(null);try{d.undo(w.batch,{author:i})}catch(W){b(ge(d.schema,d.allMutations(),W))}requestAnimationFrame(()=>document.querySelector('[data-testid="inbox"] [aria-selected="true"]')?.focus())},style:H,children:"Suggest again"})]},w.batch))}):null,p?(0,t.jsx)("span",{role:"alert",style:{...C,fontSize:"0.75rem",color:"var(--graview-warn)"},children:p}):null,e&&!g&&u.length===0&&a.length===0?(0,t.jsx)("p",{"data-testid":"inbox-updates-empty",style:{margin:0,fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:"No updates."}):null]})}function Ge({record:e,level:n,go:l,children:d}){let o=(0,y.useId)();return(0,t.jsxs)("li",{"data-testid":"suggestion-record-group","data-record":e.record,style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:4,minWidth:0},children:[(0,t.jsx)("span",{id:o,role:"heading","aria-level":n,"data-testid":"suggestion-record-heading",style:{...C,display:"block",fontSize:"0.8125rem",lineHeight:1.45},children:(0,t.jsx)(Ne,{part:e,go:l})}),(0,t.jsx)("ol",{"aria-labelledby":o,style:{...O,gap:6,paddingInlineStart:12},children:d(o)})]})}var C={minWidth:0,overflowWrap:"anywhere"},O={margin:0,padding:0,listStyle:"none",display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:10,fontSize:"0.8125rem",minWidth:0},H={minHeight:24,padding:"1px 10px",fontSize:"0.75rem"},q={...H,border:"1px solid transparent",background:"transparent",boxShadow:"none",color:"var(--graview-ink-muted)"};function Ne({part:e,go:n}){let l={display:"inline-block",maxWidth:"min(24ch, 100%)",minHeight:24,lineHeight:"24px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",verticalAlign:"bottom"},d=n?(0,t.jsx)("button",{type:"button","data-testid":"suggestion-record","data-record":e.record,title:`Go to ${e.label}`,onClick:()=>n(e.record),className:"graview-activity-record",style:{all:"unset",...l,cursor:"pointer",fontWeight:600,color:"var(--graview-ink)",textDecoration:"underline",textDecorationColor:"color-mix(in srgb, var(--graview-ink) 35%, transparent)",textUnderlineOffset:2},children:e.label}):(0,t.jsx)("span",{title:e.label,style:{...l,fontWeight:600},children:e.label});return e.quoted?(0,t.jsxs)(t.Fragment,{children:["\u201C",d,"\u201D"]}):d}var je={accept:"Accepted.",decline:"Declined: it will not be suggested again.",stop:"This kind of thing will not be suggested again. You can undo that in Activity.",later:"Hidden from you until tomorrow.",withdraw:"Withdrawn."},L={recorded:"Your vote was recorded.",withdrawn:"Your vote was withdrawn."},qe=(e,n)=>n.startsWith(`${e}: `)?n.slice(e.length+2):n,Le=e=>{let n=`${e.for} for, ${e.against} against`,l=Oe(e.advisory);return l?`${n} \xB7 ${l}`:n};function Oe(e){if(!e)return"";let n=e.for===0?"":e.for===1?"a visitor agrees":`${e.for} visitors agree`,l=e.against===0?"":e.against===1?`${n?"one":"a visitor"} disagrees`:`${e.against}${n?"":" visitors"} disagree`;return[n,l].filter(Boolean).join(", ")}function Z({suggestion:e,notNow:n,settled:l,heard:d,goes:o,under:i}){let{store:r,principal:a,seats:f,people:p,signIn:b}=M(),[s,g]=(0,y.useState)(null),[u,w]=(0,y.useState)(null),W=(0,y.useId)(),x=(0,y.useId)(),N=ae(e.author,{graph:r.graph,schema:r.schema,seats:f,people:p}),k=(0,y.useMemo)(()=>K(r,e,a),[r,e,a]),c=(0,y.useMemo)(()=>k&&he(r,e,a),[k,r,e,a]),S=(0,y.useMemo)(()=>k||r.permits({name:F,args:{suggestion:e.id,vote:"for"}},a).ok,[k,r,e.id,a]),{tally:h}=e,A=E(e),T=A&&a!==void 0&&!k&&re(a).id===e.lineage.proposedBy,v=async m=>{g(null);try{if(m==="withdraw")we(r,e.id,{author:a});else if(m==="stop")be(r,e.id,{author:a});else if(m==="accept"||m==="decline"){if((m==="accept"?j(r,e.id,{author:a}):me(r,e.id,{author:a})).voted!==void 0){w(L.recorded),d(L.recorded);return}}else if(m==="unvote"){ye(r,e.id,null,{author:a}),w(L.withdrawn),d(L.withdrawn);return}else await n.dismiss({suggestion:e.id,at:new Date().toISOString(),until:Se()});l(je[m])}catch(D){g(D instanceof Error?D.message:String(D))}},$=e.items.length>1,P=(0,y.useMemo)(()=>Q(r,e),[r,e]),U=(0,y.useId)(),Me=i?P.alone:P.parts,X=i?`${i} ${U}`:U,V=new Set(P.parts.flatMap(m=>typeof m=="string"?[]:[m.record])),Y=e.lineage&&!(A&&e.lineage.basis.startsWith("Proposed by "))?xe(e.lineage):void 0,[ee,De]=(0,y.useState)(!1),te=(0,y.useId)();return(0,t.jsxs)("li",{"data-testid":"suggestion","data-suggestion":e.id,style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:4,lineHeight:1.45,minWidth:0},children:[(0,t.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",columnGap:10,rowGap:4,minWidth:0},children:[(0,t.jsxs)("span",{id:U,"data-graview-suggestion-words":"",style:{...C,flex:"1 1 14em"},children:[A?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("span",{"data-testid":"proposed-by",style:{color:"var(--graview-ink-muted)"},children:["Proposed by ",(0,t.jsx)("strong",{style:{fontWeight:600,color:"var(--graview-ink)"},children:T?"you":N}),":"]})," "]}):$?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("strong",{style:{fontWeight:600},children:N})," ",(0,t.jsx)("span",{style:{color:"var(--graview-ink-muted)"},children:"suggests"})," "]}):null,$?qe(N,e.headline??e.intent):Me.map((m,D)=>typeof m=="string"?m:(0,t.jsx)(Ne,{part:m,go:o(m.record)},D))]}),(0,t.jsxs)("span",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:4,marginInlineStart:"auto",minWidth:0},children:[Y?(0,t.jsx)("button",{type:"button","data-testid":"suggestion-why","aria-expanded":ee,"aria-controls":te,onClick:()=>De(m=>!m),style:{...q,padding:"1px 6px"},children:"Why?"}):null,T?(0,t.jsx)("button",{type:"button","data-testid":"proposal-withdraw",onClick:()=>void v("withdraw"),style:H,children:"Withdraw"}):S?(0,t.jsx)("button",{type:"button","data-testid":"suggestion-accept",onClick:()=>void v("accept"),...k?{"aria-describedby":X}:{"aria-pressed":h.mine==="for","aria-describedby":x},style:H,children:k&&$?"Accept all":"Yes"}):b?(0,t.jsx)("button",{type:"button","data-testid":"suggestion-sign-in",onClick:()=>b.run(),style:H,children:"Sign in to vote"}):null,S&&!T?(0,t.jsx)("button",{type:"button","data-testid":"suggestion-decline",onClick:()=>void v("decline"),...k?{"aria-describedby":X}:{"aria-pressed":h.mine==="against","aria-describedby":x},style:H,children:"No"}):null,c?(0,t.jsx)("button",{type:"button","data-testid":"suggestion-stop-kind",onClick:()=>void v("stop"),title:`Stops suggesting ${fe(r,e)}. You can undo it.`,style:q,children:"Don't suggest this kind of thing"}):null,!k&&S&&!T&&h.mine!==void 0?(0,t.jsx)("button",{type:"button","data-testid":"suggestion-withdraw-vote",onClick:()=>void v("unvote"),style:q,children:"Withdraw vote"}):null,(0,t.jsx)("button",{type:"button","data-testid":"suggestion-not-now",onClick:()=>void v("later"),title:"Hide it from you until tomorrow. It still waits for everyone else.","aria-describedby":W,style:q,children:"Later"})]})]}),(0,t.jsx)("span",{id:W,style:G,children:"Hides it from you until tomorrow; it still waits for everyone else."}),!k&&S&&!T?(0,t.jsx)("span",{id:x,style:G,children:"Counts as your vote; somebody who may make it decides."}):null,Y?(0,t.jsx)("span",{id:te,"data-graview-lineage":"",hidden:!ee,style:{...C,fontSize:"0.75rem",color:"var(--graview-ink-muted)"},children:Y}):null,$?(0,t.jsx)(Re,{suggestion:e,decides:k,heard:d}):null,e.about.some(m=>!V.has(m))&&($||V.size===0)?(0,t.jsx)("div",{"data-graview-suggestion-records":"",style:{display:"flex",flexWrap:"wrap",gap:4,minWidth:0},children:e.about.filter(m=>!V.has(m)).slice(0,4).map(m=>(0,t.jsx)($e,{id:m,label:ke(r,m),go:o(m),testId:"suggestion-record"},m))}):null,k&&h.for+h.against+(h.advisory?h.advisory.for+h.advisory.against:0)>0?(0,t.jsx)("span",{"data-testid":"suggestion-tally",style:{...C,fontSize:"0.75rem",color:"var(--graview-ink-muted)"},children:Le(h)}):null,u?(0,t.jsx)("span",{"data-testid":"suggestion-voted",role:"status",style:{...C,fontSize:"0.75rem",color:"var(--graview-ink-muted)"},children:u}):null,s?(0,t.jsx)("span",{"data-testid":"suggestion-refused",role:"alert",style:{...C,fontSize:"0.75rem",color:"var(--graview-warn)"},children:s}):null]})}export{st as SuggestedCount,it as SuggestedList,rt as SuggestedUpdates,Oe as advisoryWords,Ie as awayWords,Le as tallyWords};
@@ -1 +1 @@
1
- import{db as g}from"./chunk.DHPXRDT5.js";function y(e){return[e.basis,...e.confidence!==void 0?[`${Math.round(e.confidence*100)}% sure`]:[],...e.model?[e.model]:[]].join(" \xB7 ")}var u=e=>`Not yet kept by a person. ${e.by.name??e.by.id??"Something"} made it${e.lineage?`: ${y(e.lineage)}`:""}.`,p=e=>`${e.kind}\0${e.from}\0${e.to}`;function k(e,o){let r=new Map;for(let n of e){if(n.undoes!==void 0||o.has(n.id)||n.withheld)continue;let l=g(n.author),s=l==="human"||l==="visitor",c=new Map;for(let t of n.primitives){if(t.op!=="add-edge"&&t.op!=="remove-edge")continue;let i=p(t.edge),a=r.get(i)??c.get(i);if(r.delete(i),t.op==="remove-edge")a&&c.set(i,a);else if(a&&(s||!n.lineage))r.set(i,s?{...a,provisional:!1,keptBy:n.id}:a);else{let d=n.lineage;r.set(i,{edge:t.edge,made:n.id,by:n.author,...d?{lineage:d}:{},provisional:!s&&(d?.confidence??1)<1})}}}return r}var f=new WeakMap;function v({log:e}){let o=e.all(),r=`${e.horizon}:${o.length}:${o.at(-1)?.id}`,n=f.get(e);return n?.at!==r&&f.set(e,n={at:r,links:k(o,e.undoneIds())}),n.links}var L=(e,o)=>v(e).get(p(o));var m=e=>[...v(e).values()].filter(o=>o.provisional);export{y as a,u as b,L as c,m as d};
1
+ import{eb as g}from"./chunk.6L6RUOSF.js";function y(e){return[e.basis,...e.confidence!==void 0?[`${Math.round(e.confidence*100)}% sure`]:[],...e.model?[e.model]:[]].join(" \xB7 ")}var u=e=>`Not yet kept by a person. ${e.by.name??e.by.id??"Something"} made it${e.lineage?`: ${y(e.lineage)}`:""}.`,p=e=>`${e.kind}\0${e.from}\0${e.to}`;function k(e,o){let r=new Map;for(let n of e){if(n.undoes!==void 0||o.has(n.id)||n.withheld)continue;let l=g(n.author),s=l==="human"||l==="visitor",c=new Map;for(let t of n.primitives){if(t.op!=="add-edge"&&t.op!=="remove-edge")continue;let i=p(t.edge),a=r.get(i)??c.get(i);if(r.delete(i),t.op==="remove-edge")a&&c.set(i,a);else if(a&&(s||!n.lineage))r.set(i,s?{...a,provisional:!1,keptBy:n.id}:a);else{let d=n.lineage;r.set(i,{edge:t.edge,made:n.id,by:n.author,...d?{lineage:d}:{},provisional:!s&&(d?.confidence??1)<1})}}}return r}var f=new WeakMap;function v({log:e}){let o=e.all(),r=`${e.horizon}:${o.length}:${o.at(-1)?.id}`,n=f.get(e);return n?.at!==r&&f.set(e,n={at:r,links:k(o,e.undoneIds())}),n.links}var L=(e,o)=>v(e).get(p(o));var m=e=>[...v(e).values()].filter(o=>o.provisional);export{y as a,u as b,L as c,m as d};
@@ -1,2 +1,2 @@
1
- import{a as Ae}from"./chunk.BJUUSIQY.js";import{a as X}from"./chunk.ZE5RSKXF.js";import{Dd as $e,Jb as be,fc as we,ga as B,la as he,oa as W,pc as Q,ra as ke,rc as Se,ua as _}from"./chunk.DHPXRDT5.js";import{j as H}from"./chunk.FQLNBIQ5.js";var M=e=>e.trim().toLowerCase(),U=e=>e.charAt(0).toUpperCase()+e.slice(1),le=e=>/^(?:[aeio]|u(?![sn]i|se|ser))/i.test(e),ee=e=>`${le(e)?"an":"a"} ${e}`,xe=e=>M(e).replace(/[^a-z0-9]+([a-z0-9])/g,(n,r)=>r.toUpperCase()).replace(/[^A-Za-z0-9]/g,""),se=e=>M(e).replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),ae=new Set(["person","people","someone","somebody","user","users","member","members"]);function de(e,n){let r=M(n);return Object.entries(e.kinds).find(([f,d])=>[f,d.noun,d.plural].some(c=>c!==void 0&&M(c)===r))?.[0]}function K(e,n){if(!e(n))return n;for(let r=2;;r++)if(!e(`${n}${r}`))return`${n}${r}`}function Fe(e,n){let r=e.acts??{},f=m=>m in r;if("link"in n){let m=de(e,n.link.on);if(!m)return{refused:`This app has no ${n.link.on} to give it to.`};let k=e.kinds[m],C=M(k.noun??m),v=M(n.link.called)||"linked to",u=de(e,n.link.to)??(ae.has(M(n.link.to))?(Object.entries(e.kinds).find(([,T])=>T.people)??Object.entries(e.kinds).find(([T,P])=>[T,P.noun,P.plural].some(t=>t!==void 0&&ae.has(M(t)))))?.[0]:void 0),A=[],j=[],$,F=u===void 0;if(!u){let T=M(n.link.to)||"person",P=ae.has(T),t=P?"person":T.replace(/s$/,""),a=P?"people":`${t}s`;u=K(b=>b in e.kinds,se(t)),A.push({op:"add-kind",kind:u,noun:t,plural:a,fields:{name:{type:"string",required:!0}},label:"{name}"}),$=K(f,`add-${u}`),j.push(`Add ${ee(U(a))} list.`)}let i=u in e.kinds?e.kinds[u]:A[0],y=M(i.noun??u),S=K(T=>T in(k.edges??{})||T in(k.fields??{}),xe(v)||"linkedTo");A.push({op:"add-relation",kind:m,relation:S,to:[u],cardinality:"one",description:U(v)});let R=K(f,`set-${se(v)}`);return A.push({op:"add-act",act:R,title:`Set \u201C${U(v)}\u201D`,on:m,connects:S,description:`Say who ${ee(C)} is ${v}.`}),j.push(`Give each ${C} ${le(v)?"an":"a"} \u201C${U(v)}\u201D field that points to ${ee(y)}.`),{edits:A,steps:j,on:m,relation:S,to:u,made:F,act:R,arg:"to",...$?{makes:$}:{},called:v}}let d=de(e,n.field.on);if(!d)return{refused:`This app has no ${n.field.on} to give it to.`};let c=e.kinds[d],g=M(c.noun??d),p=M(n.field.called)||"note",l=n.field.type??"string",s=K(m=>m in(c.fields??{})||m in(c.edges??{}),xe(p)||"note"),o=K(f,`set-${se(p)}`);return{edits:[{op:"add-field",kind:d,field:s,spec:{type:l}},{op:"add-act",act:o,title:`Set \u201C${U(p)}\u201D`,on:d,args:{value:{type:l,required:!0}},sets:{[s]:"$value"},description:`Say ${ee(g)}'s ${p}.`}],steps:[`Give each ${g} ${le(p)?"an":"a"} \u201C${U(p)}\u201D field.`],on:d,field:s,act:o,arg:"value",called:p}}var Re=["search-miss","unanswered","refused","tool-invalid"];var qe=new RegExp("[\\u0000-\\u001f\\u007f-\\u009f\\u200b-\\u200f\\u2028-\\u202e\\u2066-\\u2069]","g");var G=e=>e.onBehalfOf?G(e.onBehalfOf):e.id!==void 0?`${e.kind}:${e.id}`:`${e.kind}:?`,ce=e=>e.toLowerCase().replace(/\s+/g," ").replace(/^[\s\p{P}]+|[\s\p{P}]+$/gu,"");var Ce=new Set("a an and are at be by can do does for from has have how i in is it me my of on or our the their there this to was we what when where which who why will with you your".split(" "));function J(e,n,r,f,d){let c=new Map;for(let g of e){let p=n(g);if(p===void 0)continue;let l=c.get(p)??{first:g,people:new Set,times:0,last:g};l.people.add(G(g.by)),l.times+=1,l.last=g,c.set(p,l)}return[...c.entries()].filter(([,g])=>g.people.size>=f).sort(([g,p],[l,s])=>s.people.size-p.people.size||s.times-p.times||g.localeCompare(l)).slice(0,d).map(([g,p])=>({...r(p.last,g),people:p.people.size,times:p.times}))}function je(e,n={}){let r=Math.max(1,n.minPeople??2),f=n.most??12,d=n.reader?G(n.reader):void 0,c=e.filter(s=>!$e(s.by)&&(d===void 0||G(s.by)!==d)),g=Object.fromEntries(Re.map(s=>{let o=c.filter(m=>m.type===s);return[s,{events:o.length,people:new Set(o.map(m=>G(m.by))).size}]})),p=[],l=new Map;for(let s of c){let o=s.type==="search-miss"?s.words:s.type==="unanswered"?s.question:void 0;if(o!==void 0)for(let m of new Set(ce(o).split(/[^\p{L}\p{N}]+/u))){if(m.length<3||Ce.has(m))continue;let k={...s,id:`${s.id}:${m}`};p.push(k),l.set(k,m)}}return{events:c.length,people:new Set(c.map(s=>G(s.by))).size,byType:g,searches:J(c,s=>s.type==="search-miss"&&ce(s.words)||void 0,(s,o)=>({words:o}),r,f),questions:J(c,s=>s.type==="unanswered"&&ce(s.question)||void 0,(s,o)=>({question:o,...s.lacks?{lacks:s.lacks}:{}}),r,f),words:J(p,s=>l.get(s),(s,o)=>({word:o}),r,f),refusals:J(c,s=>s.type==="refused"?`${s.act}|${s.code}`:void 0,s=>({act:s.act,code:s.code}),r,f),tools:J(c,s=>s.type==="tool-invalid"?`${s.tool}|${s.act??""}`:void 0,s=>{let o=s;return{tool:o.tool,...o.act?{act:o.act}:{},...o.then?{then:o.then}:{}}},1,f)}}var ve=e=>e.length>3&&e.endsWith("s")&&!e.endsWith("ss")?e.slice(0,-1):e;function Ee(e){let n=new Set,r=f=>{for(let d of f.toLowerCase().split(/[^\p{L}\p{N}]+/u))d.length>0&&n.add(ve(d))};for(let f of e.kinds){let d=e.tryDefinition(f);r(f),r(_(d,f)),r(W(e,f));for(let c of[...d?.aliases??[],...Object.values(d?.fieldAliases??{}).flat()])r(c);for(let c of Object.keys(d?.fields?.shape??{}))r(c),r(B(c))}return n}function Oe(e,n,r={}){let f=je(e,{most:8,...r}),d=Ee(n),c=f.searches.filter(o=>!o.words.split(/[^\p{L}\p{N}]+/u).some(m=>m.length>0&&d.has(ve(m)))).map(o=>({words:o.words,people:o.people})),g=f.questions.map(o=>({question:o.question,people:o.people,...o.lacks?{lacks:o.lacks}:{}})),p=f.tools.map(o=>({tool:o.tool,...o.act?{act:o.act}:{},...o.then?{then:o.then}:{},times:o.times})),l=o=>`${o} ${o===1?"person":"people"}`;return{said:[...c.length>0?[`Searched for, found nothing, and nothing here is called it: ${c.map(o=>`\u201C${o.words}\u201D (${l(o.people)})`).join(", ")}.`]:[],...g.length>0?[`Asked and not answered: ${g.map(o=>`\u201C${o.question}\u201D (${l(o.people)}${o.lacks?`; ${o.lacks.replace(/[.!]$/,"")}`:""})`).join(", ")}.`]:[],...p.length>0?[`Tool calls refused as invalid: ${p.map(o=>`${o.tool}${o.act?` (${o.act})`:""} ${o.times===1?"once":`${o.times} times`}${o.then?`, then worked as ${o.then}`:""}`).join("; ")}.`]:[]].join(`
2
- `),unknownWords:c,questions:g,toolMistakes:p}}var Te=e=>/^(?:aggregate|kind):([^,]+)$/.exec(e)?.[1];function Ze(e,n){let r=e.about??[];if(e.field!==void 0&&e.on!==void 0&&n(e.on))return{on:"field",id:e.on,field:e.field};let f=r.filter(n);if(f.length>1)return{on:"selection",ids:f};if(e.on!==void 0&&n(e.on))return{on:"record",id:e.on};if(f.length===1)return{on:"record",id:f[0]};let d=[e.on,...r].map(c=>c===void 0?void 0:Te(c)).find(c=>c!==void 0);return e.place!==void 0?{on:"lens",place:e.place,...d?{kind:d}:{}}:d!==void 0?{on:"list",kind:d}:{on:"place",place:"home"}}var ne=e=>e.on==="record"||e.on==="field"?[e.id]:e.on==="selection"?e.ids:e.on==="act"&&e.id!==void 0?[e.id]:[],te=(e,n)=>e.tryDefinition(n)?.fields?.shape??{},Y=(e,n)=>e.tryDefinition(n)?.edges??{},ie=(e,n)=>new Set(e.tryDefinition(n)?.display?.hide??[]),N=(e,n)=>he(e.tryDefinition(n.kind),n),fe=(e,n,r)=>ke(e.tryDefinition(n),r)||B(r),ye=e=>typeof e=="boolean"?e?"yes":"no":String(e);function oe(e,n){let r=e.kindsKeptFrom(n);return new Set(e.schema.kinds.filter(f=>!r.has(f)))}function pe(e,n,r,f){if(!e.permits(n,r).ok)return!1;if(!f)return!0;try{return e.previewAll([n],{author:r}).ops.length>0}catch{return!1}}function Qe(e,n,r){let f=e,{principal:d}=r,c=r.each??8,g=H(f)?.store??f,p=g.seenBy(d),l=g.schema,s=oe(g,d),o=t=>{let a=p.graph.getNode(t);return a&&s.has(a.kind)?a:void 0},m=g.allMutations(),k=new Map(m.map(t=>[t.name,t])),C=[],v=new Set,u=t=>{v.has(t.id)||(v.add(t.id),C.push(t))},A=t=>t.slice(0,c),j=ne(n).filter(t=>o(t)!==void 0);if(ne(n).length>0&&j.length===0)return{target:n,candidates:[]};let $=j.length===1?o(j[0]):void 0,F=$?.kind??(n.on==="list"?n.kind:n.on==="lens"?n.kind??r.places?.find(t=>t.as===n.place)?.kind:void 0)??(n.on==="selection"?o(j[0])?.kind:void 0);if(F!==void 0&&!s.has(F))return{target:n,candidates:[]};let i=(t,a)=>`act:${t}${Object.keys(a).length>0?`:${Object.values(a).map(b=>String(b)).join(",")}`:""}`,y=(t,a,b,O,h)=>{t.destructive||Object.values(a).some(I=>typeof I=="string"&&g.graph.has(I)&&o(I)===void 0)||pe(g,{name:t.name,args:{...a}},d,O.length===0)&&u({type:"act",id:i(t.name,a),label:b,description:h??t.description??b,mutation:t.name,args:a,asks:O})};if(n.on!=="place"||r.acts)if(r.acts)for(let t of r.acts){let a=k.get(t.mutation);!a||t.destructive||n.on==="act"&&t.mutation!==n.act||y(a,t.args,t.label,(t.open??[]).filter(b=>!b.optional).map(b=>b.name),t.why)}else{let t=$?[$]:[];for(let a of m){if(n.on==="act"&&a.name!==n.act)continue;let b=a.input.shape??{},O=h=>Object.entries(b).filter(([I,w])=>I!==h&&w.safeParse?.(void 0).success===!1).map(([I])=>I);if(a.subject)for(let h of t)Q(l,a).includes(h.kind)&&y(a,{[a.subject.arg]:h.id},`${a.title??B(a.name)}: ${N(l,h)}`,O(a.subject.arg));else F!==void 0&&(a.creates??[]).includes(F)&&y(a,{},a.title??B(a.name),O(void 0))}}let S=C.filter(t=>t.type==="act");C.splice(0,C.length,...A(S));let R=(t,a)=>{let b=Se(l,m).get(t.kind),O=te(l,t.kind),h=ie(l,t.kind),I=[];for(let[w,D]of Object.entries(O)){if(a!==void 0?w!==a:h.has(w)||t[w]!==void 0)continue;let z=X(D),q=z?.type==="enum"&&!z.multiple?z.options??[]:z?.type==="boolean"?[!0,!1]:[];if(q.length===0)continue;let L=(b?.get(w)??[]).map(E=>k.get(E)).find(E=>E?.subject!==void 0&&pe(g,{name:E.name,args:{[E.subject.arg]:t.id,[w]:q.find(re=>re!==t[w])??q[0]}},d,!0));if(L?.subject)for(let E of q)t[w]!==E&&I.push({type:"fill",id:`fill:${t.id}:${w}:${ye(E)}`,label:`${fe(l,t.kind,w)}: ${ye(E)}`,description:`Set ${fe(l,t.kind,w).toLowerCase()} of ${N(l,t)} to ${ye(E)}`,record:t.id,field:w,value:E,call:{name:L.name,args:{[L.subject.arg]:t.id,[w]:E}}})}for(let[w,D]of Object.entries(Y(l,t.kind))){if(a!==void 0&&w!==a)continue;let z=D.to==="*"?[...s]:D.to.filter(x=>s.has(x)),q=new Set(p.graph.out(t.id,w).map(x=>x.id)),L=m.find(x=>(x.connects??[]).includes(w)&&x.subject!==void 0&&Q(l,x).includes(t.kind));if(!L?.subject)continue;let E=we(L.input).find(x=>x.name!==L.subject.arg);if(!E)continue;let re=z.flatMap(x=>E.kinds.length===0||E.kinds.includes(x)?p.graph.nodesOfKind(x):[]).filter(x=>x.id!==t.id&&!q.has(x.id)&&o(x.id)!==void 0);for(let x of A(re)){let me={name:L.name,args:{[L.subject.arg]:t.id,[E.name]:x.id}};pe(g,me,d,!0)&&I.push({type:"fill",id:`fill:${t.id}:${w}:${x.id}`,label:`${B(w)}: ${N(l,x)}`,description:`Link ${N(l,t)} to ${N(l,x)}${D.description?` as ${D.description}`:""}`,record:t.id,field:w,value:x.id,call:me})}}return I};if(n.on==="field"&&$)for(let t of R($,n.field))u(t);else if($&&n.on==="record")for(let t of A(R($)))u(t);let T=t=>{let a=W(l,t).toLowerCase(),b=[{type:"panel",id:`panel:${t}:list`,label:`A list of ${a}`,description:`Every ${_(l.tryDefinition(t),t).toLowerCase()} this viewer may see, as a list`,panel:{lens:"blocks",kind:t}}],O=ie(l,t);for(let[h,I]of Object.entries(te(l,t))){if(O.has(h))continue;let w=X(I),D=fe(l,t,h).toLowerCase();if(w?.type==="enum")b.push({type:"panel",id:`panel:${t}:group:${h}`,label:`${V(a)} by ${D}`,description:`A list of ${a} grouped by ${D}`,panel:{lens:"blocks",kind:t,group:h}}),b.push({type:"panel",id:`panel:${t}:columns:${h}`,label:`Columns of ${a} by ${D}`,description:`${V(a)} in a column for each ${D}`,panel:{lens:"columns",kind:t,column:h}});else if(w?.type==="number"||w?.type==="integer"||w?.type==="date"||w?.type==="datetime"){let z=w.type==="date"||w.type==="datetime";b.push({type:"panel",id:`panel:${t}:sort:${h}`,label:`${V(a)} by ${D}`,description:`A list of ${a}, the ${z?"latest":"highest"} ${D} first`,panel:{lens:"blocks",kind:t,sort:{by:h,direction:"desc"}}}),z&&b.push({type:"panel",id:`panel:${t}:calendar:${h}`,label:`A calendar of ${a}`,description:`${V(a)} on a calendar by ${D}`,panel:{lens:"calendar",kind:t,start:h}})}}return b},P=n.on==="place"?[...s]:F!==void 0?[F]:[];for(let t of P)for(let a of A(T(t)))u(a);for(let t of A((r.places??[]).filter(a=>a.kind===void 0?n.on==="place":s.has(a.kind)&&(n.on==="place"||a.kind===F))))n.on==="lens"&&t.as===n.place||u({type:"place",id:`place:${t.as}`,label:t.title,description:`Go to ${t.title}`,place:t.as});if($){let t=[];for(let[a,b]of Object.entries(Y(l,$.kind)))for(let O of p.graph.out($.id,a))o(O.id)&&t.push({type:"record",id:`record:${O.id}`,label:N(l,O),description:`${V(b.description??B(a))}: ${N(l,O)}`,record:O.id,relation:a});for(let a of l.kinds)for(let[b,O]of Object.entries(Y(l,a)))if(!(O.to!=="*"&&!O.to.includes($.kind)))for(let h of p.graph.in($.id,b))h.kind===a&&o(h.id)&&t.push({type:"record",id:`record:${h.id}`,label:N(l,h),description:`${V(O.inverse??B(b))}: ${N(l,h)}`,record:h.id,relation:b});for(let a of A(t))u(a)}else if(n.on==="list"||n.on==="lens")for(let t of A(F!==void 0?p.graph.nodesOfKind(F):[]))o(t.id)&&u({type:"record",id:`record:${t.id}`,label:N(l,t),description:`Open ${N(l,t)}`,record:t.id});else if(n.on==="selection")for(let t of j){let a=o(t);u({type:"record",id:`record:${t}`,label:N(l,a),description:`Open ${N(l,a)}`,record:t})}return{target:n,candidates:C}}var V=e=>e&&`${e[0].toUpperCase()}${e.slice(1)}`,Pe={columns:["board","kanban","column","lane","pipeline","stage","funnel"],board:["board","map","floor","layout","seat","slot"],calendar:["calendar","schedule","date","due","month","week","agenda","deadline","day"],timeline:["timeline","gantt","schedule","roadmap","span"],coverage:["coverage","matrix","grid","gap"],plan:["plan","floor","map","region","area"],blocks:["list","table","summary","overview","dashboard","card"]},De=new Set(["a","an","the","of","for","my","our","me","us","to","with","and","in","on","by","that","which","i","we","want","need","show","open","go","draw","make","new","view","views","panel","panels","page","lens","please","all","every","some","see","can","could","would","like","one","what","is","are","do","does","here","there","how","it","this","these","those"]),Z=e=>e.length>3&&e.endsWith("ies")?`${e.slice(0,-3)}y`:e.length>3&&e.endsWith("s")&&!e.endsWith("ss")?e.slice(0,-1):e,ue=e=>e.toLowerCase().normalize("NFKD").replace(/[̀-ͯ]/g,"").split(/[^a-z0-9]+/).filter(Boolean);function Xe(e,n,r){let f=e,d=H(f)?.store??f,c=d.schema,g=oe(d,r.principal),p=d.seenBy(r.principal),l=ne(n),s=new Set;for(let i of l){let y=p.graph.getNode(i)?.kind;y!==void 0&&g.has(y)&&s.add(y)}if(l.length>0&&s.size===0)return[];if(n.on==="list"&&s.add(n.kind),n.on==="lens"){let i=n.kind??r.places.find(y=>y.as===n.place)?.kind;i!==void 0&&s.add(i)}let o=new Map;for(let i of c.kinds){if(!g.has(i))continue;let y=c.tryDefinition(i);for(let S of[i,_(y,i),W(c,i)])for(let R of ue(S))o.set(Z(R),i)}let m=ue(r.said??"").filter(i=>!De.has(i)),k=new Set,C=[];for(let i of m){let y=o.get(Z(i));y!==void 0?k.add(y):C.push(Z(i))}let v=k.size>0?k:s;if((r.said??"").trim()!==""&&m.length===0)return[];if(v.size===0&&m.length===0)return[];let u=[];r.places.forEach((i,y)=>{if(i.hidden||n.on==="lens"&&i.as===n.place)return;let S=i.over??(i.kind!==void 0?[i.kind]:[]);if(S.length>0&&!S.some(P=>g.has(P)))return;let R=S.some(P=>v.has(P)),T=!R&&(i.reads??[]).some(P=>v.has(P));v.size>0&&!R&&!T||u.push({place:i,own:R,reads:T,at:y})});let A=i=>new Set(ue(i.title).map(Z)),j=new Set(C.filter(i=>u.some(({place:y})=>A(y).has(i)))),$=[];for(let{place:i,own:y,reads:S,at:R}of u){let T=A(i),P=new Set((Pe[i.lens??""]??[]).map(Z)),t=C.filter(h=>T.has(h)||P.has(h)&&!j.has(h)).length,a=C.length-t;if(C.length>0&&t===0)continue;let b=!S&&a===0?"full":"partial",O=(y?4:S?2:1)+t*2-a+(b==="full"?1:0);$.push({view:{place:i.as,title:i.title,...i.kind!==void 0?{kind:i.kind}:{},fit:b},score:O,at:R})}return $.filter((i,y)=>!$.slice(0,y).some(S=>S.view.place===i.view.place&&S.view.title===i.view.title)).sort((i,y)=>y.score-i.score||i.at-y.at).slice(0,r.most??3).map(i=>i.view)}var ge=new WeakMap;function Ne(e){let n=2166136261;for(let r=0;r<e.length;r++)n^=e.charCodeAt(r),n=Math.imul(n,16777619)>>>0;return n.toString(36)}function Ie(e,n){let r=e,f=H(r)?.store??r,d=f.schema,c=oe(f,n),p=f.allMutations().filter(u=>!u.destructive&&f.permits({name:u.name,args:{}},n).ok!==!1),l=`${[...c].join(",")}|${p.map(u=>u.name).join(",")}`,s=ge.get(d)?.get(l);if(s)return s;let o=[...c].map(u=>{let A=ie(d,u),j={};for(let[y,S]of Object.entries(te(d,u))){if(A.has(y))continue;let R=X(S);R&&(j[y]=R.type==="enum"?`enum:${(R.options??[]).join("|")}`:R.type)}let $={};for(let[y,S]of Object.entries(Y(d,u)))$[y]=S.to==="*"?[...c]:S.to.filter(R=>c.has(R));let F=d.tryDefinition(u),i=Object.entries(F?.fieldAliases??{}).filter(([y,S])=>y in j&&S.length>0);return{kind:u,noun:_(d.tryDefinition(u),u),plural:W(d,u),fields:j,relations:$,...F?.aliases&&F.aliases.length>0?{aliases:F.aliases}:{},...i.length>0?{fieldAliases:Object.fromEntries(i)}:{}}}),m=p.map(u=>({name:u.name,title:u.title??B(u.name),...u.subject?{on:Q(d,u).filter(A=>c.has(A))}:{}})),k={kinds:o,acts:m},C={version:Ne(JSON.stringify(k)),...k},v=ge.get(d)??new Map;return v.set(l,C),ge.set(d,v),C}var Me=e=>e.name??e.id??e.kind;function en(e,n,r){let f=e,{principal:d}=r,c=H(f)?.store??f,g=c.seenBy(d),p=c.schema,l=oe(c,d),s=i=>{let y=g.graph.getNode(i);return y&&l.has(y.kind)?y:void 0},o=i=>({id:i.id,kind:i.kind,label:N(p,i)}),m=ne(n),k=m.length===1?s(m[0]):void 0,C=k?Object.fromEntries(Object.keys(te(p,k.kind)).filter(i=>!ie(p,k.kind).has(i)&&k[i]!==void 0&&i!=="label").map(i=>[i,k[i]])):{},v={on:n.on,...k?{record:{...o(k),fields:C}}:{},...n.on==="field"&&k?{field:n.field}:{},...n.on==="list"&&l.has(n.kind)?{kind:n.kind}:{},...n.on==="lens"?{place:n.place,...n.kind&&l.has(n.kind)?{kind:n.kind}:{}}:{},...n.on==="place"?{place:n.place}:{},...n.on==="act"?{act:n.act}:{}},u=[...new Set([...n.on==="selection"?n.ids:[],...r.selection??[]])].flatMap(i=>{let y=s(i);return y?[o(y)]:[]}),A=[];if(k){for(let i of Object.keys(Y(p,k.kind)))for(let y of g.graph.out(k.id,i))s(y.id)&&A.push({...o(y),relation:i,direction:"out"});for(let i of p.kinds)for(let y of Object.keys(Y(p,i)))for(let S of g.graph.in(k.id,y))S.kind===i&&s(S.id)&&A.push({...o(S),relation:y,direction:"in"})}let j=g.batches().filter(i=>!i.ops.every(be)).slice(-(r.recent??6)).reverse().map(i=>({intent:i.intent,at:i.at,by:Me(i.author)})),$=(r.purpose?.jobs??[]).filter(i=>Ae(i,d.roles)&&l.has(i.kind)).map(i=>({name:i.name,ask:i.ask,kind:i.kind})),F=r.purpose&&(r.purpose.for!==void 0||$.length>0)?{...r.purpose.for!==void 0?{for:r.purpose.for}:{},jobs:$}:void 0;return{...r.place!==void 0?{place:r.place}:{},target:v,selection:u,neighbors:A.slice(0,24),recent:j,schema:Ie(c,d),...F?{purpose:F}:{},...r.friction?{friction:Oe(r.friction,p,{reader:d})}:{}}}export{Fe as a,Ze as b,ne as c,Qe as d,Xe as e,en as f};
1
+ import{a as Ae}from"./chunk.BJUUSIQY.js";import{a as X}from"./chunk.U5KJQFAP.js";import{Bc as Se,Jd as $e,Tb as be,ha as B,ma as he,pa as W,pc as we,sa as ke,va as _,zc as Q}from"./chunk.6L6RUOSF.js";import{j as H}from"./chunk.FQLNBIQ5.js";var M=e=>e.trim().toLowerCase(),U=e=>e.charAt(0).toUpperCase()+e.slice(1),le=e=>/^(?:[aeio]|u(?![sn]i|se|ser))/i.test(e),ee=e=>`${le(e)?"an":"a"} ${e}`,xe=e=>M(e).replace(/[^a-z0-9]+([a-z0-9])/g,(n,r)=>r.toUpperCase()).replace(/[^A-Za-z0-9]/g,""),se=e=>M(e).replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),ae=new Set(["person","people","someone","somebody","user","users","member","members"]);function de(e,n){let r=M(n);return Object.entries(e.kinds).find(([f,d])=>[f,d.noun,d.plural].some(c=>c!==void 0&&M(c)===r))?.[0]}function K(e,n){if(!e(n))return n;for(let r=2;;r++)if(!e(`${n}${r}`))return`${n}${r}`}function Fe(e,n){let r=e.acts??{},f=m=>m in r;if("link"in n){let m=de(e,n.link.on);if(!m)return{refused:`This app has no ${n.link.on} to give it to.`};let k=e.kinds[m],C=M(k.noun??m),v=M(n.link.called)||"linked to",u=de(e,n.link.to)??(ae.has(M(n.link.to))?(Object.entries(e.kinds).find(([,T])=>T.people)??Object.entries(e.kinds).find(([T,P])=>[T,P.noun,P.plural].some(t=>t!==void 0&&ae.has(M(t)))))?.[0]:void 0),A=[],j=[],$,F=u===void 0;if(!u){let T=M(n.link.to)||"person",P=ae.has(T),t=P?"person":T.replace(/s$/,""),a=P?"people":`${t}s`;u=K(b=>b in e.kinds,se(t)),A.push({op:"add-kind",kind:u,noun:t,plural:a,fields:{name:{type:"string",required:!0}},label:"{name}"}),$=K(f,`add-${u}`),j.push(`Add ${ee(U(a))} list.`)}let i=u in e.kinds?e.kinds[u]:A[0],y=M(i.noun??u),S=K(T=>T in(k.edges??{})||T in(k.fields??{}),xe(v)||"linkedTo");A.push({op:"add-relation",kind:m,relation:S,to:[u],cardinality:"one",description:U(v)});let R=K(f,`set-${se(v)}`);return A.push({op:"add-act",act:R,title:`Set \u201C${U(v)}\u201D`,on:m,connects:S,description:`Say who ${ee(C)} is ${v}.`}),j.push(`Give each ${C} ${le(v)?"an":"a"} \u201C${U(v)}\u201D field that points to ${ee(y)}.`),{edits:A,steps:j,on:m,relation:S,to:u,made:F,act:R,arg:"to",...$?{makes:$}:{},called:v}}let d=de(e,n.field.on);if(!d)return{refused:`This app has no ${n.field.on} to give it to.`};let c=e.kinds[d],g=M(c.noun??d),p=M(n.field.called)||"note",l=n.field.type??"string",s=K(m=>m in(c.fields??{})||m in(c.edges??{}),xe(p)||"note"),o=K(f,`set-${se(p)}`);return{edits:[{op:"add-field",kind:d,field:s,spec:{type:l}},{op:"add-act",act:o,title:`Set \u201C${U(p)}\u201D`,on:d,args:{value:{type:l,required:!0}},sets:{[s]:"$value"},description:`Say ${ee(g)}'s ${p}.`}],steps:[`Give each ${g} ${le(p)?"an":"a"} \u201C${U(p)}\u201D field.`],on:d,field:s,act:o,arg:"value",called:p}}var Re=["search-miss","unanswered","refused","tool-invalid"];var qe=new RegExp("[\\u0000-\\u001f\\u007f-\\u009f\\u200b-\\u200f\\u2028-\\u202e\\u2066-\\u2069]","g");var G=e=>e.onBehalfOf?G(e.onBehalfOf):e.id!==void 0?`${e.kind}:${e.id}`:`${e.kind}:?`,ce=e=>e.toLowerCase().replace(/\s+/g," ").replace(/^[\s\p{P}]+|[\s\p{P}]+$/gu,"");var Ce=new Set("a an and are at be by can do does for from has have how i in is it me my of on or our the their there this to was we what when where which who why will with you your".split(" "));function J(e,n,r,f,d){let c=new Map;for(let g of e){let p=n(g);if(p===void 0)continue;let l=c.get(p)??{first:g,people:new Set,times:0,last:g};l.people.add(G(g.by)),l.times+=1,l.last=g,c.set(p,l)}return[...c.entries()].filter(([,g])=>g.people.size>=f).sort(([g,p],[l,s])=>s.people.size-p.people.size||s.times-p.times||g.localeCompare(l)).slice(0,d).map(([g,p])=>({...r(p.last,g),people:p.people.size,times:p.times}))}function je(e,n={}){let r=Math.max(1,n.minPeople??2),f=n.most??12,d=n.reader?G(n.reader):void 0,c=e.filter(s=>!$e(s.by)&&(d===void 0||G(s.by)!==d)),g=Object.fromEntries(Re.map(s=>{let o=c.filter(m=>m.type===s);return[s,{events:o.length,people:new Set(o.map(m=>G(m.by))).size}]})),p=[],l=new Map;for(let s of c){let o=s.type==="search-miss"?s.words:s.type==="unanswered"?s.question:void 0;if(o!==void 0)for(let m of new Set(ce(o).split(/[^\p{L}\p{N}]+/u))){if(m.length<3||Ce.has(m))continue;let k={...s,id:`${s.id}:${m}`};p.push(k),l.set(k,m)}}return{events:c.length,people:new Set(c.map(s=>G(s.by))).size,byType:g,searches:J(c,s=>s.type==="search-miss"&&ce(s.words)||void 0,(s,o)=>({words:o}),r,f),questions:J(c,s=>s.type==="unanswered"&&ce(s.question)||void 0,(s,o)=>({question:o,...s.lacks?{lacks:s.lacks}:{}}),r,f),words:J(p,s=>l.get(s),(s,o)=>({word:o}),r,f),refusals:J(c,s=>s.type==="refused"?`${s.act}|${s.code}`:void 0,s=>({act:s.act,code:s.code}),r,f),tools:J(c,s=>s.type==="tool-invalid"?`${s.tool}|${s.act??""}`:void 0,s=>{let o=s;return{tool:o.tool,...o.act?{act:o.act}:{},...o.then?{then:o.then}:{}}},1,f)}}var ve=e=>e.length>3&&e.endsWith("s")&&!e.endsWith("ss")?e.slice(0,-1):e;function Ee(e){let n=new Set,r=f=>{for(let d of f.toLowerCase().split(/[^\p{L}\p{N}]+/u))d.length>0&&n.add(ve(d))};for(let f of e.kinds){let d=e.tryDefinition(f);r(f),r(_(d,f)),r(W(e,f));for(let c of[...d?.aliases??[],...Object.values(d?.fieldAliases??{}).flat()])r(c);for(let c of Object.keys(d?.fields?.shape??{}))r(c),r(B(c))}return n}function Oe(e,n,r={}){let f=je(e,{most:8,...r}),d=Ee(n),c=f.searches.filter(o=>!o.words.split(/[^\p{L}\p{N}]+/u).some(m=>m.length>0&&d.has(ve(m)))).map(o=>({words:o.words,people:o.people})),g=f.questions.map(o=>({question:o.question,people:o.people,...o.lacks?{lacks:o.lacks}:{}})),p=f.tools.map(o=>({tool:o.tool,...o.act?{act:o.act}:{},...o.then?{then:o.then}:{},times:o.times})),l=o=>`${o} ${o===1?"person":"people"}`;return{said:[...c.length>0?[`Searched for, found nothing, and nothing here is called it: ${c.map(o=>`\u201C${o.words}\u201D (${l(o.people)})`).join(", ")}.`]:[],...g.length>0?[`Asked and not answered: ${g.map(o=>`\u201C${o.question}\u201D (${l(o.people)}${o.lacks?`; ${o.lacks.replace(/[.!]$/,"")}`:""})`).join(", ")}.`]:[],...p.length>0?[`Tool calls refused as invalid: ${p.map(o=>`${o.tool}${o.act?` (${o.act})`:""} ${o.times===1?"once":`${o.times} times`}${o.then?`, then worked as ${o.then}`:""}`).join("; ")}.`]:[]].join(`
2
+ `),unknownWords:c,questions:g,toolMistakes:p}}var Te=e=>/^(?:aggregate|kind):([^,]+)$/.exec(e)?.[1];function Ze(e,n){let r=e.about??[];if(e.field!==void 0&&e.on!==void 0&&n(e.on))return{on:"field",id:e.on,field:e.field};let f=r.filter(n);if(f.length>1)return{on:"selection",ids:f};if(e.on!==void 0&&n(e.on))return{on:"record",id:e.on};if(f.length===1)return{on:"record",id:f[0]};let d=[e.on,...r].map(c=>c===void 0?void 0:Te(c)).find(c=>c!==void 0);return e.place!==void 0?{on:"lens",place:e.place,...d?{kind:d}:{}}:d!==void 0?{on:"list",kind:d}:{on:"place",place:"home"}}var ne=e=>e.on==="record"||e.on==="field"?[e.id]:e.on==="selection"?e.ids:e.on==="act"&&e.id!==void 0?[e.id]:[],te=(e,n)=>e.tryDefinition(n)?.fields?.shape??{},Y=(e,n)=>e.tryDefinition(n)?.edges??{},ie=(e,n)=>new Set(e.tryDefinition(n)?.display?.hide??[]),N=(e,n)=>he(e.tryDefinition(n.kind),n),fe=(e,n,r)=>ke(e.tryDefinition(n),r)||B(r),ye=e=>typeof e=="boolean"?e?"yes":"no":String(e);function oe(e,n){let r=e.kindsKeptFrom(n);return new Set(e.schema.kinds.filter(f=>!r.has(f)))}function pe(e,n,r,f){if(!e.permits(n,r).ok)return!1;if(!f)return!0;try{return e.previewAll([n],{author:r}).ops.length>0}catch{return!1}}function Qe(e,n,r){let f=e,{principal:d}=r,c=r.each??8,g=H(f)?.store??f,p=g.seenBy(d),l=g.schema,s=oe(g,d),o=t=>{let a=p.graph.getNode(t);return a&&s.has(a.kind)?a:void 0},m=g.allMutations(),k=new Map(m.map(t=>[t.name,t])),C=[],v=new Set,u=t=>{v.has(t.id)||(v.add(t.id),C.push(t))},A=t=>t.slice(0,c),j=ne(n).filter(t=>o(t)!==void 0);if(ne(n).length>0&&j.length===0)return{target:n,candidates:[]};let $=j.length===1?o(j[0]):void 0,F=$?.kind??(n.on==="list"?n.kind:n.on==="lens"?n.kind??r.places?.find(t=>t.as===n.place)?.kind:void 0)??(n.on==="selection"?o(j[0])?.kind:void 0);if(F!==void 0&&!s.has(F))return{target:n,candidates:[]};let i=(t,a)=>`act:${t}${Object.keys(a).length>0?`:${Object.values(a).map(b=>String(b)).join(",")}`:""}`,y=(t,a,b,O,h)=>{t.destructive||Object.values(a).some(I=>typeof I=="string"&&g.graph.has(I)&&o(I)===void 0)||pe(g,{name:t.name,args:{...a}},d,O.length===0)&&u({type:"act",id:i(t.name,a),label:b,description:h??t.description??b,mutation:t.name,args:a,asks:O})};if(n.on!=="place"||r.acts)if(r.acts)for(let t of r.acts){let a=k.get(t.mutation);!a||t.destructive||n.on==="act"&&t.mutation!==n.act||y(a,t.args,t.label,(t.open??[]).filter(b=>!b.optional).map(b=>b.name),t.why)}else{let t=$?[$]:[];for(let a of m){if(n.on==="act"&&a.name!==n.act)continue;let b=a.input.shape??{},O=h=>Object.entries(b).filter(([I,w])=>I!==h&&w.safeParse?.(void 0).success===!1).map(([I])=>I);if(a.subject)for(let h of t)Q(l,a).includes(h.kind)&&y(a,{[a.subject.arg]:h.id},`${a.title??B(a.name)}: ${N(l,h)}`,O(a.subject.arg));else F!==void 0&&(a.creates??[]).includes(F)&&y(a,{},a.title??B(a.name),O(void 0))}}let S=C.filter(t=>t.type==="act");C.splice(0,C.length,...A(S));let R=(t,a)=>{let b=Se(l,m).get(t.kind),O=te(l,t.kind),h=ie(l,t.kind),I=[];for(let[w,D]of Object.entries(O)){if(a!==void 0?w!==a:h.has(w)||t[w]!==void 0)continue;let z=X(D),q=z?.type==="enum"&&!z.multiple?z.options??[]:z?.type==="boolean"?[!0,!1]:[];if(q.length===0)continue;let L=(b?.get(w)??[]).map(E=>k.get(E)).find(E=>E?.subject!==void 0&&pe(g,{name:E.name,args:{[E.subject.arg]:t.id,[w]:q.find(re=>re!==t[w])??q[0]}},d,!0));if(L?.subject)for(let E of q)t[w]!==E&&I.push({type:"fill",id:`fill:${t.id}:${w}:${ye(E)}`,label:`${fe(l,t.kind,w)}: ${ye(E)}`,description:`Set ${fe(l,t.kind,w).toLowerCase()} of ${N(l,t)} to ${ye(E)}`,record:t.id,field:w,value:E,call:{name:L.name,args:{[L.subject.arg]:t.id,[w]:E}}})}for(let[w,D]of Object.entries(Y(l,t.kind))){if(a!==void 0&&w!==a)continue;let z=D.to==="*"?[...s]:D.to.filter(x=>s.has(x)),q=new Set(p.graph.out(t.id,w).map(x=>x.id)),L=m.find(x=>(x.connects??[]).includes(w)&&x.subject!==void 0&&Q(l,x).includes(t.kind));if(!L?.subject)continue;let E=we(L.input).find(x=>x.name!==L.subject.arg);if(!E)continue;let re=z.flatMap(x=>E.kinds.length===0||E.kinds.includes(x)?p.graph.nodesOfKind(x):[]).filter(x=>x.id!==t.id&&!q.has(x.id)&&o(x.id)!==void 0);for(let x of A(re)){let me={name:L.name,args:{[L.subject.arg]:t.id,[E.name]:x.id}};pe(g,me,d,!0)&&I.push({type:"fill",id:`fill:${t.id}:${w}:${x.id}`,label:`${B(w)}: ${N(l,x)}`,description:`Link ${N(l,t)} to ${N(l,x)}${D.description?` as ${D.description}`:""}`,record:t.id,field:w,value:x.id,call:me})}}return I};if(n.on==="field"&&$)for(let t of R($,n.field))u(t);else if($&&n.on==="record")for(let t of A(R($)))u(t);let T=t=>{let a=W(l,t).toLowerCase(),b=[{type:"panel",id:`panel:${t}:list`,label:`A list of ${a}`,description:`Every ${_(l.tryDefinition(t),t).toLowerCase()} this viewer may see, as a list`,panel:{lens:"blocks",kind:t}}],O=ie(l,t);for(let[h,I]of Object.entries(te(l,t))){if(O.has(h))continue;let w=X(I),D=fe(l,t,h).toLowerCase();if(w?.type==="enum")b.push({type:"panel",id:`panel:${t}:group:${h}`,label:`${V(a)} by ${D}`,description:`A list of ${a} grouped by ${D}`,panel:{lens:"blocks",kind:t,group:h}}),b.push({type:"panel",id:`panel:${t}:columns:${h}`,label:`Columns of ${a} by ${D}`,description:`${V(a)} in a column for each ${D}`,panel:{lens:"columns",kind:t,column:h}});else if(w?.type==="number"||w?.type==="integer"||w?.type==="date"||w?.type==="datetime"){let z=w.type==="date"||w.type==="datetime";b.push({type:"panel",id:`panel:${t}:sort:${h}`,label:`${V(a)} by ${D}`,description:`A list of ${a}, the ${z?"latest":"highest"} ${D} first`,panel:{lens:"blocks",kind:t,sort:{by:h,direction:"desc"}}}),z&&b.push({type:"panel",id:`panel:${t}:calendar:${h}`,label:`A calendar of ${a}`,description:`${V(a)} on a calendar by ${D}`,panel:{lens:"calendar",kind:t,start:h}})}}return b},P=n.on==="place"?[...s]:F!==void 0?[F]:[];for(let t of P)for(let a of A(T(t)))u(a);for(let t of A((r.places??[]).filter(a=>!a.hidden&&(a.kind===void 0?n.on==="place":s.has(a.kind)&&(n.on==="place"||a.kind===F)))))n.on==="lens"&&t.as===n.place||u({type:"place",id:`place:${t.as}`,label:t.title,description:`Go to ${t.title}`,place:t.as});if($){let t=[];for(let[a,b]of Object.entries(Y(l,$.kind)))for(let O of p.graph.out($.id,a))o(O.id)&&t.push({type:"record",id:`record:${O.id}`,label:N(l,O),description:`${V(b.description??B(a))}: ${N(l,O)}`,record:O.id,relation:a});for(let a of l.kinds)for(let[b,O]of Object.entries(Y(l,a)))if(!(O.to!=="*"&&!O.to.includes($.kind)))for(let h of p.graph.in($.id,b))h.kind===a&&o(h.id)&&t.push({type:"record",id:`record:${h.id}`,label:N(l,h),description:`${V(O.inverse??B(b))}: ${N(l,h)}`,record:h.id,relation:b});for(let a of A(t))u(a)}else if(n.on==="list"||n.on==="lens")for(let t of A(F!==void 0?p.graph.nodesOfKind(F):[]))o(t.id)&&u({type:"record",id:`record:${t.id}`,label:N(l,t),description:`Open ${N(l,t)}`,record:t.id});else if(n.on==="selection")for(let t of j){let a=o(t);u({type:"record",id:`record:${t}`,label:N(l,a),description:`Open ${N(l,a)}`,record:t})}return{target:n,candidates:C}}var V=e=>e&&`${e[0].toUpperCase()}${e.slice(1)}`,Pe={columns:["board","kanban","column","lane","pipeline","stage","funnel"],board:["board","map","floor","layout","seat","slot"],calendar:["calendar","schedule","date","due","month","week","agenda","deadline","day"],timeline:["timeline","gantt","schedule","roadmap","span"],coverage:["coverage","matrix","grid","gap"],plan:["plan","floor","map","region","area"],blocks:["list","table","summary","overview","dashboard","card"]},De=new Set(["a","an","the","of","for","my","our","me","us","to","with","and","in","on","by","that","which","i","we","want","need","show","open","go","draw","make","new","view","views","panel","panels","page","lens","please","all","every","some","see","can","could","would","like","one","what","is","are","do","does","here","there","how","it","this","these","those"]),Z=e=>e.length>3&&e.endsWith("ies")?`${e.slice(0,-3)}y`:e.length>3&&e.endsWith("s")&&!e.endsWith("ss")?e.slice(0,-1):e,ue=e=>e.toLowerCase().normalize("NFKD").replace(/[̀-ͯ]/g,"").split(/[^a-z0-9]+/).filter(Boolean);function Xe(e,n,r){let f=e,d=H(f)?.store??f,c=d.schema,g=oe(d,r.principal),p=d.seenBy(r.principal),l=ne(n),s=new Set;for(let i of l){let y=p.graph.getNode(i)?.kind;y!==void 0&&g.has(y)&&s.add(y)}if(l.length>0&&s.size===0)return[];if(n.on==="list"&&s.add(n.kind),n.on==="lens"){let i=n.kind??r.places.find(y=>y.as===n.place)?.kind;i!==void 0&&s.add(i)}let o=new Map;for(let i of c.kinds){if(!g.has(i))continue;let y=c.tryDefinition(i);for(let S of[i,_(y,i),W(c,i)])for(let R of ue(S))o.set(Z(R),i)}let m=ue(r.said??"").filter(i=>!De.has(i)),k=new Set,C=[];for(let i of m){let y=o.get(Z(i));y!==void 0?k.add(y):C.push(Z(i))}let v=k.size>0?k:s;if((r.said??"").trim()!==""&&m.length===0)return[];if(v.size===0&&m.length===0)return[];let u=[];r.places.forEach((i,y)=>{if(i.hidden||n.on==="lens"&&i.as===n.place)return;let S=i.over??(i.kind!==void 0?[i.kind]:[]);if(S.length>0&&!S.some(P=>g.has(P)))return;let R=S.some(P=>v.has(P)),T=!R&&(i.reads??[]).some(P=>v.has(P));v.size>0&&!R&&!T||u.push({place:i,own:R,reads:T,at:y})});let A=i=>new Set(ue(i.title).map(Z)),j=new Set(C.filter(i=>u.some(({place:y})=>A(y).has(i)))),$=[];for(let{place:i,own:y,reads:S,at:R}of u){let T=A(i),P=new Set((Pe[i.lens??""]??[]).map(Z)),t=C.filter(h=>T.has(h)||P.has(h)&&!j.has(h)).length,a=C.length-t;if(C.length>0&&t===0)continue;let b=!S&&a===0?"full":"partial",O=(y?4:S?2:1)+t*2-a+(b==="full"?1:0);$.push({view:{place:i.as,title:i.title,...i.kind!==void 0?{kind:i.kind}:{},fit:b},score:O,at:R})}return $.filter((i,y)=>!$.slice(0,y).some(S=>S.view.place===i.view.place&&S.view.title===i.view.title)).sort((i,y)=>y.score-i.score||i.at-y.at).slice(0,r.most??3).map(i=>i.view)}var ge=new WeakMap;function Ne(e){let n=2166136261;for(let r=0;r<e.length;r++)n^=e.charCodeAt(r),n=Math.imul(n,16777619)>>>0;return n.toString(36)}function Ie(e,n){let r=e,f=H(r)?.store??r,d=f.schema,c=oe(f,n),p=f.allMutations().filter(u=>!u.destructive&&f.permits({name:u.name,args:{}},n).ok!==!1),l=`${[...c].join(",")}|${p.map(u=>u.name).join(",")}`,s=ge.get(d)?.get(l);if(s)return s;let o=[...c].map(u=>{let A=ie(d,u),j={};for(let[y,S]of Object.entries(te(d,u))){if(A.has(y))continue;let R=X(S);R&&(j[y]=R.type==="enum"?`enum:${(R.options??[]).join("|")}`:R.type)}let $={};for(let[y,S]of Object.entries(Y(d,u)))$[y]=S.to==="*"?[...c]:S.to.filter(R=>c.has(R));let F=d.tryDefinition(u),i=Object.entries(F?.fieldAliases??{}).filter(([y,S])=>y in j&&S.length>0);return{kind:u,noun:_(d.tryDefinition(u),u),plural:W(d,u),fields:j,relations:$,...F?.aliases&&F.aliases.length>0?{aliases:F.aliases}:{},...i.length>0?{fieldAliases:Object.fromEntries(i)}:{}}}),m=p.map(u=>({name:u.name,title:u.title??B(u.name),...u.subject?{on:Q(d,u).filter(A=>c.has(A))}:{}})),k={kinds:o,acts:m},C={version:Ne(JSON.stringify(k)),...k},v=ge.get(d)??new Map;return v.set(l,C),ge.set(d,v),C}var Me=e=>e.name??e.id??e.kind;function en(e,n,r){let f=e,{principal:d}=r,c=H(f)?.store??f,g=c.seenBy(d),p=c.schema,l=oe(c,d),s=i=>{let y=g.graph.getNode(i);return y&&l.has(y.kind)?y:void 0},o=i=>({id:i.id,kind:i.kind,label:N(p,i)}),m=ne(n),k=m.length===1?s(m[0]):void 0,C=k?Object.fromEntries(Object.keys(te(p,k.kind)).filter(i=>!ie(p,k.kind).has(i)&&k[i]!==void 0&&i!=="label").map(i=>[i,k[i]])):{},v={on:n.on,...k?{record:{...o(k),fields:C}}:{},...n.on==="field"&&k?{field:n.field}:{},...n.on==="list"&&l.has(n.kind)?{kind:n.kind}:{},...n.on==="lens"?{place:n.place,...n.kind&&l.has(n.kind)?{kind:n.kind}:{}}:{},...n.on==="place"?{place:n.place}:{},...n.on==="act"?{act:n.act}:{}},u=[...new Set([...n.on==="selection"?n.ids:[],...r.selection??[]])].flatMap(i=>{let y=s(i);return y?[o(y)]:[]}),A=[];if(k){for(let i of Object.keys(Y(p,k.kind)))for(let y of g.graph.out(k.id,i))s(y.id)&&A.push({...o(y),relation:i,direction:"out"});for(let i of p.kinds)for(let y of Object.keys(Y(p,i)))for(let S of g.graph.in(k.id,y))S.kind===i&&s(S.id)&&A.push({...o(S),relation:y,direction:"in"})}let j=g.batches().filter(i=>!i.ops.every(be)).slice(-(r.recent??6)).reverse().map(i=>({intent:i.intent,at:i.at,by:Me(i.author)})),$=(r.purpose?.jobs??[]).filter(i=>Ae(i,d.roles)&&l.has(i.kind)).map(i=>({name:i.name,ask:i.ask,kind:i.kind})),F=r.purpose&&(r.purpose.for!==void 0||$.length>0)?{...r.purpose.for!==void 0?{for:r.purpose.for}:{},jobs:$}:void 0;return{...r.place!==void 0?{place:r.place}:{},target:v,selection:u,neighbors:A.slice(0,24),recent:j,schema:Ie(c,d),...F?{purpose:F}:{},...r.friction?{friction:Oe(r.friction,p,{reader:d})}:{}}}export{Fe as a,Ze as b,ne as c,Qe as d,Xe as e,en as f};
@@ -1,2 +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 Q,b as Ge,c as Ve,f as ue,i as Ke}from"./chunk.AG7WJYM5.js";import"./chunk.KHKCTVHD.js";import{b as je,c as qe,d as Me,f as se,g as Be,h as ie,i as de,j as Fe,k as ce,m as Ne,n as Ie,o as Le,p as He,q as le}from"./chunk.DO3FQM6R.js";import"./chunk.NYLKG25K.js";import{a as Ee}from"./chunk.TBY5IR7C.js";import{d as De}from"./chunk.VR553M6J.js";import"./chunk.DU76ASS4.js";import"./chunk.BJUUSIQY.js";import"./chunk.UPOYRCKI.js";import"./chunk.XOZU4OFA.js";import"./chunk.WV6SP6IJ.js";import"./chunk.ZE5RSKXF.js";import"./chunk.MIE4TJRW.js";import{x as xe}from"./chunk.SCVKHGO3.js";import"./chunk.RD2FSSLV.js";import"./chunk.AZRICZKT.js";import"./chunk.MH3AQO2R.js";import"./chunk.J2N7EKMX.js";import"./chunk.P26ATAAI.js";import"./chunk.FIY4RUK5.js";import"./chunk.IY3DV52G.js";import"./chunk.NLZHNPDU.js";import"./chunk.QNC2OKLF.js";import{G as it,W as Ce,ea as $e}from"./chunk.FWXW4T4I.js";import"./chunk.SDO3U72B.js";import{la as Re}from"./chunk.DHPXRDT5.js";import"./chunk.FQLNBIQ5.js";import{b as ae}from"./chunk.AJZBJBMO.js";var g=ae(it(),1);var N=ae(Ce(),1),T=n=>(n??"").replace(/\s+/g," ").trim(),fe=()=>new Promise(n=>requestAnimationFrame(()=>n())),dt=n=>new Promise(r=>setTimeout(r,n));function ct(n){let r=n.cloneNode(!0);for(let o of r.querySelectorAll("span"))o.remove();return T(r.textContent).replace(/^[▸▾]\s*/,"")}function _e(n){if(!n||!n.isConnected)return"";let r=n.innerText??n.textContent??"";return`${n.querySelectorAll("*").length}|${T(r)}`}function lt(n,r=80){if(!n)return"";let o=[],i=new Set,d="li, tr, article, [data-graview-listed], [data-graview-record], [data-graview-field]";for(let c of n.querySelectorAll(`h1, h2, h3, h4, ${d}`)){if(o.length>=r)break;if([...i].some(u=>u.contains(c))||c.closest("[data-graview-popover], [hidden], nav, [aria-hidden='true']"))continue;let l=/^h([1-4])$/i.exec(c.localName),s=(l?ct(c):T(c.innerText??c.textContent)).slice(0,140);if(s)if(l)o.push(`${"#".repeat(Number(l[1]))} ${s}`);else{let u=c.getAttribute("data-graview-field");o.push(u?`${u}: ${s}`:`- ${s}`),i.add(c)}}return o.join(`
2
- `)}function ut(n,r){let{store:o}=n,i=c=>Object.fromEntries(Object.entries(c).filter(([,l])=>l!==void 0&&typeof l!="object").map(([l,s])=>[l,typeof s=="string"?s.slice(0,80):s]));return{kinds:(r.kind?[r.kind]:o.schema.kinds.slice(0,6)).map(c=>{let l=o.graph.nodesOfKind(c),s=o.schema.tryDefinition(c);return{kind:c,count:l.length,fields:Object.keys(s?.fields?.shape??{}),relations:Object.keys(s?.edges??{}),some:(r.record?l.filter(u=>u.id===r.record):l.slice(0,3)).map(i)}})}}function ft(n,r){let o=n.store.schema,i=new Set,d=new Set;for(let c of o.definitions)for(let[l,s]of Object.entries(c.edges??{})){let u=Array.isArray(s?.to)?s.to:[];if(r.kind===void 0||c.kind===r.kind||u.includes(r.kind)){d.add(l);for(let P of[c.kind,...u])P!==r.kind&&o.tryDefinition(P)&&i.add(P)}}if(r.kind===void 0)for(let c of o.kinds)i.add(c);return{kinds:[...i],edges:[...d]}}var Ue={manifest:"The view could not start: what it reads is not this app's.",source:"The script is too long: make it shorter.",start:"The script did not start: it must be one plain script, with no syntax errors, that calls graview.onProps and graview.render.",error:"The script threw while drawing: read only what props gives (props.nodes for a list, props.node for one record), guard each value that may be missing, and call no function that does not exist."};async function We(n,r,o=15e3){let i=Date.now()+o;for(;Date.now()<i;){for(let c of document.querySelectorAll("[data-worker-view-place]")){let l=xe(c),s=l?.name===n?l.drawing().root:void 0;if(l&&c.isConnected&&s?.isConnected&&s.childElementCount>0&&(r===void 0||await l.source()===r))return{element:c,handle:l}}let d=document.querySelector(`[data-worker-view-fell-back="${CSS.escape(n)}"]`);if(d)return{failed:Ue[d.getAttribute("data-worker-view-failed")??""]??Ue.error};await dt(80)}return{failed:"The view did not draw in time: keep it simple and quick to draw."}}var pe=new Map,pt=(n,r)=>{let o=pe.get(n);return o||pe.set(n,o={phase:r(),steps:[],before:!1,putBack:null,began:!1,original:null,markup:null,talk:[],events:[],since:Date.now(),stop:null,covering:!1,pointed:null,about:null,kept:null,pressed:null,version:0,heard:new Set}),o};function he(n,r){return r.record?[n.graph.getNode(r.record)].filter(o=>o!==void 0):r.kind?n.graph.nodesOfKind(r.kind):n.schema.kinds.flatMap(o=>n.graph.nodesOfKind(o))}var Y=(n,r)=>r?Re(n.schema.tryDefinition(r.kind),r):"";function gt(n,r,o){let i=T(o).toLowerCase();return he(n,r).map(d=>Y(n,d)).filter(d=>d.length>1&&i.includes(T(d).toLowerCase())).slice(0,40)}function ze(n,r){let o=r.kind?[r.kind]:n.schema.kinds,i=[...new Set(o.flatMap(c=>Object.keys(n.schema.tryDefinition(c)?.fields?.shape??{})))],d={};for(let c of he(n,r).slice(0,400))for(let l of i){let s=c[l];if(s==null||typeof s=="object")continue;let u=d[l]??=[];u.length<60&&!u.includes(s)&&u.push(s)}return{fields:i,values:d}}function $t({ask:n,close:r}){let o=$e(),{ai:i,aiDesk:d,aiHere:c,session:l,principal:s,keptViews:u,store:D,onProposeChange:P,composeChange:w,onDraftChange:O,app:q}=o,a=n.part,e=(0,g.useMemo)(()=>pt(n.at,()=>n.mode==="highlight"?{at:"highlighting"}:{at:"open"}),[n]),H=(0,g.useCallback)(t=>(e.heard.add(t),()=>void e.heard.delete(t)),[e]),S=(0,g.useSyncExternalStore)(H,()=>e.phase,()=>e.phase),Ye=(0,g.useSyncExternalStore)(H,()=>e.version,()=>e.version),A=(0,g.useCallback)(()=>{e.version+=1,e.heard.forEach(t=>t())},[e]),k=(0,g.useCallback)(t=>{e.phase=t,A()},[e,A]),C=(0,g.useCallback)(async()=>{let t=e.putBack;e.putBack=null,t&&await t()},[e]),Z=(0,g.useCallback)(()=>{e.stop?.abort(),e.stop=null,C(),pe.delete(n.at),r()},[C,n.at,r,e]),b=(0,g.useCallback)(()=>a.main?.isConnected?a.main:yt(),[a]),G={name:a.name,slot:a.slot,...a.kind?{kind:a.kind}:{},...a.group?{group:a.group}:{}},me=a.place??(a.kind?`${a.kind}-${a.slot}`:"home"),Ze=n.fromScene?`From the scene: Better UI changes how \u201C${a.name}\u201D looks on its page here, for everyone in this app.`:`This changes how ${a.name} looks for everyone in this app.`,M=(0,g.useCallback)((t,f,p,h={})=>({id:De(),at:new Date().toISOString(),by:s,target:{on:"place",place:me},targetLabel:a.name,ask:{kind:"section",said:t},offered:[],outcome:f,stages:p.map(m=>({stage:m.stage,ms:m.ms,model:m.model})),usage:p.flatMap(m=>m.usage?[{tier:m.stage==="light"?"fast":"thinking",model:m.model,inputTokens:m.usage.inputTokens,outputTokens:m.usage.outputTokens}]:[]),...h}),[s,me,a.name]),we=P!==void 0&&w!==void 0&&Ee(D,s),B=(0,g.useMemo)(()=>kt(o,a),[o,a]),$=Le(G,ft(o,a),B.map(t=>t.act)),ke=$!==void 0&&typeof u?.fork=="function"&&typeof u.draftFork=="function"&&u.current().may.views===!0,ye=a.slot==="record"?{page:"record",kind:a.kind}:a.slot==="home"?{page:"home"}:{page:"list",kind:a.kind??""},V=(0,g.useCallback)(t=>({manifest:$,source:t,from:ye,said:""}),[$,ye]),ve=S.at==="working";(0,g.useEffect)(()=>{if(!ve)return;let t=a.record??(a.kind?`kind:${a.kind}`:null);return c({participant:`agent:graview-for-${s.id??"anyone"}:${l}`,kind:"agent",name:"Graview",...s.id?{onBehalfOf:s.id}:{},over:t,robot:{at:t,mode:"thinking"}}),()=>c(null)},[ve]);let x=(0,g.useCallback)(()=>{if(e.original)return e.original;let t=b(),f=t?.innerText??"";return e.original=Q(X(t),gt(o.store,a,f||(t?.textContent??""))),e.original},[e,b,o,a]),I=(0,g.useCallback)(()=>Q(X(b()),x().records.map(t=>t.label)),[b,x]),K=(0,g.useCallback)(async t=>{if(await C(),t.kind==="spec"){let f=await O(Je(t.edits,t.said,i.name));e.putBack=f.undo}else u.draftFork(V(t.source)),e.putBack=()=>u.draftFork(null)},[C,O,e,u,V,i.name]),L=(0,g.useCallback)(async()=>{let t=e.steps.at(-1);e.before=!1,t?await K(t):await C()},[e,K,C]),v=(0,g.useCallback)((t,f)=>{e.talk.push({who:t,said:f}),A()},[e,A]),F=(0,g.useCallback)(t=>{e.events.at(-1)?.kind==="streaming"&&e.events.pop(),e.events.push(t),A()},[e,A]),U=()=>e.talk.filter(t=>t.who==="person").map(t=>t.said).join(" "),be=(0,g.useCallback)(async t=>{if(!we||!O)return!1;let p=(await (__graviewPreload(import.meta.url,["./chunk.3TKIZGC7.js","./chunk.TBY5IR7C.js","./chunk.BIDL7GQD.js","./chunk.Q5WEOX3Q.js","./chunk.MATUPDZ3.js","./chunk.SAWASNDO.js","./chunk.DKUEZPGR.js","./chunk.EP7YT7LT.js","./chunk.I7KN732Z.js","./chunk.TLPCYKLW.js","./chunk.DHPXRDT5.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.VBYJBW32.js"))).documentOfApp(q??{});if(!p)return!1;let h=e.steps.at(-1);if(h&&h.kind!=="spec")return!1;let m=h?.edits??[],y=m.length>0?w({document:p,edits:m}):void 0,j=y?.ok?y.document:p;if(!(t.mode==="just"?{can:!0}:await Ne(i,t.words,G)).can)return!1;F({kind:"look",text:`Looking at how ${a.name} is set up`});let E=[],ne=await Ie({ai:i,document:j,part:G,mode:t.mode==="choose"?"just":t.mode,...t.words?{words:t.words}:{},...t.pointed?{highlighted:[t.pointed.name,...t.pointed.lines]}:{},shows:lt(b(),30),judge:async W=>{let _=w({document:p,edits:[...m,...W]});return _.ok?(E=_.said,[]):[_.refused]}});if(!ne.ok)return!1;let at=[...m,...ne.edits],Oe=M(`Make \u201C${a.name}\u201D better: ${t.words}`,"offered",ne.stages),oe=_e(b()),re={kind:"spec",edits:at,said:E[E.length-1]??E[0]??`${a.name} changed.`,entry:Oe};e.covering=!0,A();try{await K(re);let W=oe;for(let st=Date.now()+1500;Date.now()<st&&W===oe;)await fe(),W=_e(b());let _=W===oe?["nothing changed"]:se(x(),I(),{...ze(o.store,a),asked:U()});if(_.length>0)return await L(),d.record({...Oe,outcome:"failed",failed:_.join(" ")}),!1}catch{return await L(),!1}finally{e.covering=!1,A()}return e.steps.push(re),e.before=!1,F({kind:"passed",text:"Changed its settings \u2014 it's on the page"}),v("graview",`Done: ${re.said.replace(/\.$/,"")}.`),!0},[i,d,q,w,M,e,o,b,O,x,I,a,G,K,L,we,F,v,A]),Se=(0,g.useCallback)(async t=>{if(!$||!u?.draftFork)return{findings:["This page cannot be drawn anew here."],drew:void 0};let f=x();e.covering=!0,A();try{u.draftFork(V(t)),e.putBack=()=>u.draftFork(null);let p=await We($.name,t),h;if("failed"in p)h=[p.failed];else{let y=[...await p.handle.check(t),...p.handle.refused().filter(j=>!/^Refused a rule of the stylesheet\b/.test(j))];if(y.length>0)h=y;else{await fe(),await fe();let j=p.element.closest("[data-graview-page-main], main")??X(b());h=se(f,Q(j,f.records.map(E=>E.label)),{...ze(o.store,a),asked:U()});let R=p.handle.presses?await p.handle.presses(t).catch(()=>{}):void 0;R&&(e.pressed=R,h=[...h,...ie(R,Xe(f,ge(o,a,f)),B.filter(E=>E.toggle).map(E=>E.act),z(a))])}}let m=le(I());if(h.length===0){let y=M(`Draw \u201C${a.name}\u201D anew: ${U()}`,"offered",[]);e.steps.push({kind:"view",source:t,said:Be(a.name,f,I())??`${a.name} has a new design. Compare Before and After.`,entry:y}),e.before=!1}else await L();return{findings:h,drew:m}}finally{e.covering=!1,A()}},[$,u,x,e,A,V,I,o,a,M,L]),Pe=(0,g.useCallback)(async(t=[])=>{if(!$||!ke){v("graview","Its settings can't do that, and a new design can't be drawn for it here.");return}let f=new AbortController;e.stop=f,e.markup??=Qe(b());let p=e.steps.length,h=[...e.steps].reverse().find(y=>y.kind==="view"),m=await He({ai:i,part:G,manifest:$,talk:e.talk,keep:ht(x(),b(),a.name,o,a),...e.markup?{markup:e.markup}:{},...h?{current:h.source}:e.kept?{current:e.kept}:{},host:{look:()=>le(I()),read:()=>ut(o,a),draft:Se},onEvent:y=>F(y),...e.about?{about:e.about}:{},acts:B,...t.length>0?{pressed:t}:{},noun:z(a),signal:f.signal});if(e.stop===f){if(e.stop=null,e.events.at(-1)?.kind==="streaming"&&e.events.pop(),d.record(M(`Draw \u201C${a.name}\u201D anew: ${U()}`,e.steps.length>p?"offered":"failed",m.stages,e.steps.length>p?{}:{failed:m.last?.findings.join(" ")??m.said})),m.passed){let y=e.pressed?de(e.pressed,B,z(a)):void 0,j=Fe.test(m.said)?void 0:m.said;v("graview",[j??(y?void 0:"Here it is on the page."),y].filter(Boolean).join(" "))}else v("graview",m.said);m.ended==="stuck"&&k({at:"stuck",...m.keepable&&m.last?{source:m.last.source}:{}})}},[i,d,B,I,M,ke,e,o,Se,b,$,x,a,G,v,k,F]),Ae=(0,g.useCallback)(async()=>{let f=[...e.steps].reverse().find(R=>R.kind==="view")?.source??e.kept;if(!f||!$)return[];F({kind:"look",text:"Pressing every control on the page"});let p=await We($.name);if("failed"in p||!p.handle.presses)return[];let h=await p.handle.presses(f).catch(()=>{});if(!h)return[];e.pressed=h;let m=x(),y=ie(h,Xe(m,ge(o,a,m)),B.filter(R=>R.toggle).map(R=>R.act),z(a)),j=y.length>0?y:h.controls.slice(0,8).map(R=>`${R.control}: ${R.says}`);return F(y.length>0?{kind:"check",text:`Check: ${y.length} ${y.length===1?"control doesn't":"controls don't"} work \u2014 fixing`}:{kind:"passed",text:"Check: every control works"}),v("graview",y.length>0?`I pressed every control: ${y.join(" ")}`:`I pressed every control. ${de(h,B,z(a))??"Each one did what it says."}`),j},[B,e,o,$,x,a,v,F]),J=(0,g.useCallback)(async(t,f="describe")=>{if(e.phase.at==="working")return;let p=e.pointed;e.pointed=null;let h={mode:f,words:t,...p?{pointed:p}:{}};e.about=p??e.about,v("person",t),e.events=[],e.since=Date.now(),k({at:"working"}),x(),e.markup??=Qe(b());let m=ce.test(t)?await Ae().catch(()=>[]):[];!ce.test(t)&&await be(h).catch(()=>!1)||await Pe(m),e.phase.at==="working"&&k(e.steps.length>0?{at:"draft"}:{at:"open"})},[Pe,be,e,b,x,Ae,v,k]),ee=(0,g.useCallback)(()=>{if(e.phase.at!=="working")return;let t=e.stop;e.stop=null,t?.abort(),e.covering=!1,e.steps=e.steps.filter(f=>f.entry.at<new Date(e.since).toISOString()),L(),v("graview","Stopped. The page is as it was."),k(e.steps.length>0?{at:"draft"}:{at:"open"})},[e,v,k,L]),et=(0,g.useCallback)(async t=>{let f=e.steps.at(-1);!f||t===e.before||(e.before=t,A(),t?await C():await K(f))},[e,C,K,A]),te=(0,g.useCallback)(async()=>{let t=e.steps.at(-1);if(!(!t||e.phase.at!=="draft")){k({at:"keeping"});try{let f,p;if(t.kind==="spec"){await C();let h=await P(Je(t.edits,t.said,i.name));if(h==="declined")return v("graview","It wasn't kept."),k({at:"draft"});typeof h=="object"&&([f,p]=[h.undo,h.note])}else{let h=await u.fork(V(t.source));e.putBack=null,u.draftFork?.(null),e.kept=t.source,h&&([f,p]=[h.undo,h.note])}d.record({...t.entry,outcome:"accepted"}),e.steps=[],e.before=!1,k({at:"kept",...f?{undo:f}:{},...p?{note:p}:{}})}catch{v("graview","It couldn't be kept."),k({at:"draft"})}}},[e,k,C,P,i.name,u,V,d,v]),tt=(0,g.useCallback)(async t=>{if(e.phase.at!=="stuck")return;let f={kind:"view",source:t,said:`${a.name} kept as it was last drafted.`,entry:M(`Draw \u201C${a.name}\u201D anew: ${U()}`,"offered",[])};e.steps.push(f),e.phase={at:"draft"},await te(),e.steps.at(-1)===f&&(e.steps.pop(),k(e.steps.length>0?{at:"draft"}:{at:"open"}))},[e,a.name,M,te,k]),nt=(0,g.useCallback)(()=>{v("graview","Stopped. The page is as it was."),k(e.steps.length>0?{at:"draft"}:{at:"open"})},[e,v,k]),ot=(0,g.useCallback)(()=>{let t=e.steps.at(-1);t&&d.record({...t.entry,outcome:"dismissed"}),e.steps=[],e.before=!1,C(),v("graview","Put back as it was."),k({at:"open"})},[e,d,C,v,k]),rt=(0,g.useCallback)(async()=>{if(!(e.phase.at!=="kept"||!e.phase.undo))try{await e.phase.undo(),e.kept=null,v("graview","Undone. The page is as it was."),k({at:"undone"})}catch{v("graview","It couldn't be put back.")}},[e,v,k]);if((0,g.useEffect)(()=>{e.began||!(n.mode==="just"||n.mode==="describe"&&n.words)||(e.began=!0,J(n.mode==="just"?"Make it easier to read at a glance":n.words,n.mode))},[e,n.mode,n.words,J]),(0,g.useEffect)(()=>{let t=f=>{if(f.key!=="Escape"||e.phase.at==="highlighting")return;if(f.preventDefault(),e.phase.at==="working")return ee();Z();let p=n.returnTo?.isConnected?n.returnTo:document.querySelector("[data-graview-page-title], main h1");p&&!p.hasAttribute("tabindex")&&!p.matches("a[href], button, input, select, textarea")&&p.setAttribute("tabindex","-1"),p?.focus?.()};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e,Z,ee,n.returnTo]),S.at==="highlighting")return(0,N.jsx)(Ke,{box:b(),root:b(),whole:a.elements,wholeSaid:"The whole page",cancel:()=>k({at:"open"}),chose:t=>{e.pointed={name:Me(t)??je(t.map(ue)),lines:qe(t.map(ue))},k({at:"open"})}});let Te=e.steps.at(-1);return(0,N.jsxs)(N.Fragment,{children:[e.covering?(0,N.jsx)(Ge,{over:b(),name:a.name,said:`Graview is drafting \u201C${a.name}\u201D\u2026`}):null,(0,N.jsx)(Ve,{name:a.name,scope:Ze,phase:S.at,talk:e.talk,steps:e.events,since:e.since,working:S.at==="working"||S.at==="keeping",...Te&&S.at==="draft"?{draft:{said:Te.said,before:e.before}}:{},...S.at==="kept"?{kept:{...S.note?{note:S.note}:{},...S.undo?{undo:()=>void rt()}:{}}}:{},...S.at==="stuck"?{stuck:{...S.source!==void 0?{keepAnyway:()=>void tt(S.source)}:{},stop:nt}}:{},about:(e.pointed??e.about)?.name??a.name,ask:t=>void J(t),just:()=>void J("Make it easier to read at a glance","just"),point:()=>k({at:"highlighting"}),stop:ee,compare:t=>void et(t),keep:()=>void te(),discard:ot,close:Z})]})}function Je(n,r,o){return{said:r,add:[],drop:[],card:{said:r,adds:[],keeps:[],drops:[],breaking:[]},edits:n,via:`ai:${o??"model"}`}}function ht(n,r,o,i,d){let c=X(r),l=d.slot==="home"?[...r?.querySelectorAll("h1")??[]].find(w=>c!==r&&!c?.contains(w)):void 0,s=T(l?.textContent)||T(c?.querySelector("[data-graview-page-title]")?.textContent)||(d.slot==="home"?"":T(c?.querySelector("h1")?.textContent))||(d.record?T(Y(i.store,i.store.graph.getNode(d.record))):"")||o,u=ge(i,d,n),D=Object.fromEntries(n.records.flatMap(w=>w.facts?.length||w.under&&w.under!==s?[[w.label,{...u[w.label]?{id:u[w.label]}:{},...w.facts?.length?{shows:w.facts}:{},...w.under&&w.under!==s?{under:w.under}:{}}]]:[])),P=wt(i,n,u,s);return{title:s,headings:n.headings.filter(w=>w!==s),records:n.records.map(w=>w.label),...Object.keys(D).length>0?{says:D}:{},...P?{grouping:P}:{}}}function mt(n,r,o){let i=he(n,r),d={};for(let c of o.records){let l=i.find(s=>T(Y(n,s))===T(c.label));l&&(d[c.label]=l.id)}return d}var ge=(n,r,o)=>mt(n.store,r,o);function wt(n,r,o,i){let{store:d}=n,c=r.records.filter(O=>O.under&&O.under!==i&&o[O.label]);if(c.length<2)return;let l=d.graph.allEdges(),s=new Map;for(let O of c){let q=o[O.label];for(let a of l){let e=a.from===q?a.to:a.to===q?a.from:void 0,H=e!==void 0?d.graph.getNode(e):void 0;if(!H||T(Y(d,H))!==T(O.under))continue;let S=`${a.kind}\0${H.kind}\0${a.from===q?"from":"to"}`;s.set(S,(s.get(S)??0)+1)}}let u=[...s].sort((O,q)=>q[1]-O[1])[0];if(!u||u[1]<c.length/2)return;let[D,P,w]=u[0].split("\0");return{edge:D,kind:P,record:w}}var X=n=>n?.querySelector("main")??n;function Qe(n){if(!n?.isConnected)return null;let r=(n.querySelector("main")??n).cloneNode(!0);for(let i of r.querySelectorAll("[data-graview-listed], [data-graview-record]")){let d=i.querySelector("a[href]");d&&d.setAttribute("data-record",i.getAttribute("data-graview-listed")??i.getAttribute("data-graview-record")??"")}for(let i of r.querySelectorAll("a[aria-label]"))T(i.textContent)||(i.textContent=i.getAttribute("aria-label"));for(let i of r.querySelectorAll("script, style, svg, button, input, select, textarea, [hidden], [aria-hidden='true'], [data-graview-popover]"))i.remove();for(let i of[r,...r.querySelectorAll("*")])for(let d of[...i.getAttributeNames()])d==="data-record"&&i.localName==="a"||i.removeAttribute(d);let o=r.outerHTML.replace(/\s+/g," ").replace(/<(div|span)>\s*<\/\1>/g,"").trim();return o.length>6e3?o.slice(0,6e3):o}var z=n=>n.slot==="list"||n.slot==="group"?n.name.toLowerCase():n.slot==="record"?"parts":"records";function Xe(n,r){return n.records.flatMap(o=>r[o.label]?[{label:o.label,id:r[o.label],...o.presses?{presses:!0}:{},...o.opens?{opens:!0}:{}}]:[])}function kt(n,r){let{store:o}=n,i=r.kind?[r.kind]:o.schema.kinds,d=l=>o.schema.tryDefinition(l)?.fields?.shape??{},c=l=>{let s=l?._zod?.def;for(let u=0;u<6&&s&&s.type!=="boolean"&&s.innerType!==void 0;u++)s=s.innerType._zod?.def;return s?.type==="boolean"};return o.allMutations().flatMap(l=>{let s=l.subject;if(!s||l.creates?.length)return[];let u=i.find(w=>s.kinds==="*"||s.kinds.includes(w));if(!u)return[];let D=l.writes??[],P=D.length===1&&c(d(u)[D[0]])?D[0]:void 0;return[{act:l.name,title:String(l.title??l.name),record:s.arg,...P?{toggle:P}:{}}]}).slice(0,24)}function yt(){return document.querySelector("[data-graview-page-main], main")??document.querySelector("[data-graview-face]")}export{$t as PageCard,_e as drawnSignature,ze as fieldsShownOf,gt as labelsShown,Qe as markupOf,lt as outlineOf,mt as recordIdsOf};
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,d as ue,g as Ke}from"./chunk.JNK5WBSU.js";import"./chunk.Q6GEPVQ7.js";import{c as Q,d as Ge}from"./chunk.7LPHWJB4.js";import{b as je,c as qe,d as Me}from"./chunk.DOJCYXIJ.js";import{b as se,c as Be,d as ie,e as de,f as Fe,g as ce,i as Ne,j as Ie,k as Le,l as He,m as le}from"./chunk.W332P5T3.js";import"./chunk.PGT4ZQDG.js";import{a as Ee}from"./chunk.TBY5IR7C.js";import{d as De}from"./chunk.HXRHEPPJ.js";import"./chunk.QNWGDG2Z.js";import"./chunk.BJUUSIQY.js";import"./chunk.SPJ34VHA.js";import"./chunk.XOZU4OFA.js";import"./chunk.KBJ3UUER.js";import"./chunk.U5KJQFAP.js";import"./chunk.MIE4TJRW.js";import{x as $e}from"./chunk.3CLTABGP.js";import"./chunk.RD2FSSLV.js";import"./chunk.CVN2XFMF.js";import"./chunk.6TBQV3NO.js";import"./chunk.MT252WP4.js";import"./chunk.VVIQSFM4.js";import"./chunk.TQ3MNB6K.js";import"./chunk.VGYG2IBZ.js";import"./chunk.RJ7VSWTA.js";import"./chunk.P43LPXXJ.js";import{G as it,Y as xe,ga as Ce}from"./chunk.JCKIJSW7.js";import"./chunk.SDO3U72B.js";import{ma as Re}from"./chunk.6L6RUOSF.js";import"./chunk.FQLNBIQ5.js";import{b as ae}from"./chunk.AJZBJBMO.js";var g=ae(it(),1);var N=ae(xe(),1),T=n=>(n??"").replace(/\s+/g," ").trim(),fe=()=>new Promise(n=>requestAnimationFrame(()=>n())),dt=n=>new Promise(r=>setTimeout(r,n));function ct(n){let r=n.cloneNode(!0);for(let o of r.querySelectorAll("span"))o.remove();return T(r.textContent).replace(/^[▸▾]\s*/,"")}function _e(n){if(!n||!n.isConnected)return"";let r=n.innerText??n.textContent??"";return`${n.querySelectorAll("*").length}|${T(r)}`}function lt(n,r=80){if(!n)return"";let o=[],i=new Set,d="li, tr, article, [data-graview-listed], [data-graview-record], [data-graview-field]";for(let c of n.querySelectorAll(`h1, h2, h3, h4, ${d}`)){if(o.length>=r)break;if([...i].some(u=>u.contains(c))||c.closest("[data-graview-popover], [hidden], nav, [aria-hidden='true']"))continue;let l=/^h([1-4])$/i.exec(c.localName),s=(l?ct(c):T(c.innerText??c.textContent)).slice(0,140);if(s)if(l)o.push(`${"#".repeat(Number(l[1]))} ${s}`);else{let u=c.getAttribute("data-graview-field");o.push(u?`${u}: ${s}`:`- ${s}`),i.add(c)}}return o.join(`
2
+ `)}function ut(n,r){let{store:o}=n,i=c=>Object.fromEntries(Object.entries(c).filter(([,l])=>l!==void 0&&typeof l!="object").map(([l,s])=>[l,typeof s=="string"?s.slice(0,80):s]));return{kinds:(r.kind?[r.kind]:o.schema.kinds.slice(0,6)).map(c=>{let l=o.graph.nodesOfKind(c),s=o.schema.tryDefinition(c);return{kind:c,count:l.length,fields:Object.keys(s?.fields?.shape??{}),relations:Object.keys(s?.edges??{}),some:(r.record?l.filter(u=>u.id===r.record):l.slice(0,3)).map(i)}})}}function ft(n,r){let o=n.store.schema,i=new Set,d=new Set;for(let c of o.definitions)for(let[l,s]of Object.entries(c.edges??{})){let u=Array.isArray(s?.to)?s.to:[];if(r.kind===void 0||c.kind===r.kind||u.includes(r.kind)){d.add(l);for(let P of[c.kind,...u])P!==r.kind&&o.tryDefinition(P)&&i.add(P)}}if(r.kind===void 0)for(let c of o.kinds)i.add(c);return{kinds:[...i],edges:[...d]}}var Ue={manifest:"The view could not start: what it reads is not this app's.",source:"The script is too long: make it shorter.",start:"The script did not start: it must be one plain script, with no syntax errors, that calls graview.onProps and graview.render.",error:"The script threw while drawing: read only what props gives (props.nodes for a list, props.node for one record), guard each value that may be missing, and call no function that does not exist."};async function We(n,r,o=15e3){let i=Date.now()+o;for(;Date.now()<i;){for(let c of document.querySelectorAll("[data-worker-view-place]")){let l=$e(c),s=l?.name===n?l.drawing().root:void 0;if(l&&c.isConnected&&s?.isConnected&&s.childElementCount>0&&(r===void 0||await l.source()===r))return{element:c,handle:l}}let d=document.querySelector(`[data-worker-view-fell-back="${CSS.escape(n)}"]`);if(d)return{failed:Ue[d.getAttribute("data-worker-view-failed")??""]??Ue.error};await dt(80)}return{failed:"The view did not draw in time: keep it simple and quick to draw."}}var pe=new Map,pt=(n,r)=>{let o=pe.get(n);return o||pe.set(n,o={phase:r(),steps:[],before:!1,putBack:null,began:!1,original:null,markup:null,talk:[],events:[],since:Date.now(),stop:null,covering:!1,pointed:null,about:null,kept:null,pressed:null,version:0,heard:new Set}),o};function he(n,r){return r.record?[n.graph.getNode(r.record)].filter(o=>o!==void 0):r.kind?n.graph.nodesOfKind(r.kind):n.schema.kinds.flatMap(o=>n.graph.nodesOfKind(o))}var Y=(n,r)=>r?Re(n.schema.tryDefinition(r.kind),r):"";function gt(n,r,o){let i=T(o).toLowerCase();return he(n,r).map(d=>Y(n,d)).filter(d=>d.length>1&&i.includes(T(d).toLowerCase())).slice(0,40)}function ze(n,r){let o=r.kind?[r.kind]:n.schema.kinds,i=[...new Set(o.flatMap(c=>Object.keys(n.schema.tryDefinition(c)?.fields?.shape??{})))],d={};for(let c of he(n,r).slice(0,400))for(let l of i){let s=c[l];if(s==null||typeof s=="object")continue;let u=d[l]??=[];u.length<60&&!u.includes(s)&&u.push(s)}return{fields:i,values:d}}function Ct({ask:n,close:r}){let o=Ce(),{ai:i,aiDesk:d,aiHere:c,session:l,principal:s,keptViews:u,store:D,onProposeChange:P,composeChange:w,onDraftChange:O,app:q}=o,a=n.part,e=(0,g.useMemo)(()=>pt(n.at,()=>n.mode==="highlight"?{at:"highlighting"}:{at:"open"}),[n]),H=(0,g.useCallback)(t=>(e.heard.add(t),()=>void e.heard.delete(t)),[e]),S=(0,g.useSyncExternalStore)(H,()=>e.phase,()=>e.phase),Ye=(0,g.useSyncExternalStore)(H,()=>e.version,()=>e.version),A=(0,g.useCallback)(()=>{e.version+=1,e.heard.forEach(t=>t())},[e]),k=(0,g.useCallback)(t=>{e.phase=t,A()},[e,A]),x=(0,g.useCallback)(async()=>{let t=e.putBack;e.putBack=null,t&&await t()},[e]),Z=(0,g.useCallback)(()=>{e.stop?.abort(),e.stop=null,x(),pe.delete(n.at),r()},[x,n.at,r,e]),b=(0,g.useCallback)(()=>a.main?.isConnected?a.main:yt(),[a]),G={name:a.name,slot:a.slot,...a.kind?{kind:a.kind}:{},...a.group?{group:a.group}:{}},me=a.place??(a.kind?`${a.kind}-${a.slot}`:"home"),Ze=n.fromScene?`From the scene: Better UI changes how \u201C${a.name}\u201D looks on its page here, for everyone in this app.`:`This changes how ${a.name} looks for everyone in this app.`,M=(0,g.useCallback)((t,f,p,h={})=>({id:De(),at:new Date().toISOString(),by:s,target:{on:"place",place:me},targetLabel:a.name,ask:{kind:"section",said:t},offered:[],outcome:f,stages:p.map(m=>({stage:m.stage,ms:m.ms,model:m.model})),usage:p.flatMap(m=>m.usage?[{tier:m.stage==="light"?"fast":"thinking",model:m.model,inputTokens:m.usage.inputTokens,outputTokens:m.usage.outputTokens}]:[]),...h}),[s,me,a.name]),we=P!==void 0&&w!==void 0&&Ee(D,s),B=(0,g.useMemo)(()=>kt(o,a),[o,a]),C=Le(G,ft(o,a),B.map(t=>t.act)),ke=C!==void 0&&typeof u?.fork=="function"&&typeof u.draftFork=="function"&&u.current().may.views===!0,ye=a.slot==="record"?{page:"record",kind:a.kind}:a.slot==="home"?{page:"home"}:{page:"list",kind:a.kind??""},V=(0,g.useCallback)(t=>({manifest:C,source:t,from:ye,said:""}),[C,ye]),ve=S.at==="working";(0,g.useEffect)(()=>{if(!ve)return;let t=a.record??(a.kind?`kind:${a.kind}`:null);return c({participant:`agent:graview-for-${s.id??"anyone"}:${l}`,kind:"agent",name:"Graview",...s.id?{onBehalfOf:s.id}:{},over:t,robot:{at:t,mode:"thinking"}}),()=>c(null)},[ve]);let $=(0,g.useCallback)(()=>{if(e.original)return e.original;let t=b(),f=t?.innerText??"";return e.original=Q(X(t),gt(o.store,a,f||(t?.textContent??""))),e.original},[e,b,o,a]),I=(0,g.useCallback)(()=>Q(X(b()),$().records.map(t=>t.label)),[b,$]),K=(0,g.useCallback)(async t=>{if(await x(),t.kind==="spec"){let f=await O(Je(t.edits,t.said,i.name));e.putBack=f.undo}else u.draftFork(V(t.source)),e.putBack=()=>u.draftFork(null)},[x,O,e,u,V,i.name]),L=(0,g.useCallback)(async()=>{let t=e.steps.at(-1);e.before=!1,t?await K(t):await x()},[e,K,x]),v=(0,g.useCallback)((t,f)=>{e.talk.push({who:t,said:f}),A()},[e,A]),F=(0,g.useCallback)(t=>{e.events.at(-1)?.kind==="streaming"&&e.events.pop(),e.events.push(t),A()},[e,A]),U=()=>e.talk.filter(t=>t.who==="person").map(t=>t.said).join(" "),be=(0,g.useCallback)(async t=>{if(!we||!O)return!1;let p=(await (__graviewPreload(import.meta.url,["./chunk.VDFQFLTU.js","./chunk.TBY5IR7C.js","./chunk.BIDL7GQD.js","./chunk.Q5WEOX3Q.js","./chunk.4O64QV2Y.js","./chunk.OYMN3IFX.js","./chunk.FOHZPYUV.js","./chunk.IXYG65TM.js","./chunk.W6L2VAJG.js","./chunk.N3MXLORL.js","./chunk.6L6RUOSF.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.F6MY6WJ4.js"))).documentOfApp(q??{});if(!p)return!1;let h=e.steps.at(-1);if(h&&h.kind!=="spec")return!1;let m=h?.edits??[],y=m.length>0?w({document:p,edits:m}):void 0,j=y?.ok?y.document:p;if(!(t.mode==="just"?{can:!0}:await Ne(i,t.words,G)).can)return!1;F({kind:"look",text:`Looking at how ${a.name} is set up`});let E=[],ne=await Ie({ai:i,document:j,part:G,mode:t.mode==="choose"?"just":t.mode,...t.words?{words:t.words}:{},...t.pointed?{highlighted:[t.pointed.name,...t.pointed.lines]}:{},shows:lt(b(),30),judge:async W=>{let _=w({document:p,edits:[...m,...W]});return _.ok?(E=_.said,[]):[_.refused]}});if(!ne.ok)return!1;let at=[...m,...ne.edits],Oe=M(`Make \u201C${a.name}\u201D better: ${t.words}`,"offered",ne.stages),oe=_e(b()),re={kind:"spec",edits:at,said:E[E.length-1]??E[0]??`${a.name} changed.`,entry:Oe};e.covering=!0,A();try{await K(re);let W=oe;for(let st=Date.now()+1500;Date.now()<st&&W===oe;)await fe(),W=_e(b());let _=W===oe?["nothing changed"]:se($(),I(),{...ze(o.store,a),asked:U()});if(_.length>0)return await L(),d.record({...Oe,outcome:"failed",failed:_.join(" ")}),!1}catch{return await L(),!1}finally{e.covering=!1,A()}return e.steps.push(re),e.before=!1,F({kind:"passed",text:"Changed its settings \u2014 it's on the page"}),v("graview",`Done: ${re.said.replace(/\.$/,"")}.`),!0},[i,d,q,w,M,e,o,b,O,$,I,a,G,K,L,we,F,v,A]),Se=(0,g.useCallback)(async t=>{if(!C||!u?.draftFork)return{findings:["This page cannot be drawn anew here."],drew:void 0};let f=$();e.covering=!0,A();try{u.draftFork(V(t)),e.putBack=()=>u.draftFork(null);let p=await We(C.name,t),h;if("failed"in p)h=[p.failed];else{let y=[...await p.handle.check(t),...p.handle.refused().filter(j=>!/^Refused a rule of the stylesheet\b/.test(j))];if(y.length>0)h=y;else{await fe(),await fe();let j=p.element.closest("[data-graview-page-main], main")??X(b());h=se(f,Q(j,f.records.map(E=>E.label)),{...ze(o.store,a),asked:U()});let R=p.handle.presses?await p.handle.presses(t).catch(()=>{}):void 0;R&&(e.pressed=R,h=[...h,...ie(R,Xe(f,ge(o,a,f)),B.filter(E=>E.toggle).map(E=>E.act),z(a))])}}let m=le(I());if(h.length===0){let y=M(`Draw \u201C${a.name}\u201D anew: ${U()}`,"offered",[]);e.steps.push({kind:"view",source:t,said:Be(a.name,f,I())??`${a.name} has a new design. Compare Before and After.`,entry:y}),e.before=!1}else await L();return{findings:h,drew:m}}finally{e.covering=!1,A()}},[C,u,$,e,A,V,I,o,a,M,L]),Pe=(0,g.useCallback)(async(t=[])=>{if(!C||!ke){v("graview","Its settings can't do that, and a new design can't be drawn for it here.");return}let f=new AbortController;e.stop=f,e.markup??=Qe(b());let p=e.steps.length,h=[...e.steps].reverse().find(y=>y.kind==="view"),m=await He({ai:i,part:G,manifest:C,talk:e.talk,keep:ht($(),b(),a.name,o,a),...e.markup?{markup:e.markup}:{},...h?{current:h.source}:e.kept?{current:e.kept}:{},host:{look:()=>le(I()),read:()=>ut(o,a),draft:Se},onEvent:y=>F(y),...e.about?{about:e.about}:{},acts:B,...t.length>0?{pressed:t}:{},noun:z(a),signal:f.signal});if(e.stop===f){if(e.stop=null,e.events.at(-1)?.kind==="streaming"&&e.events.pop(),d.record(M(`Draw \u201C${a.name}\u201D anew: ${U()}`,e.steps.length>p?"offered":"failed",m.stages,e.steps.length>p?{}:{failed:m.last?.findings.join(" ")??m.said})),m.passed){let y=e.pressed?de(e.pressed,B,z(a)):void 0,j=Fe.test(m.said)?void 0:m.said;v("graview",[j??(y?void 0:"Here it is on the page."),y].filter(Boolean).join(" "))}else v("graview",m.said);m.ended==="stuck"&&k({at:"stuck",...m.keepable&&m.last?{source:m.last.source}:{}})}},[i,d,B,I,M,ke,e,o,Se,b,C,$,a,G,v,k,F]),Ae=(0,g.useCallback)(async()=>{let f=[...e.steps].reverse().find(R=>R.kind==="view")?.source??e.kept;if(!f||!C)return[];F({kind:"look",text:"Pressing every control on the page"});let p=await We(C.name);if("failed"in p||!p.handle.presses)return[];let h=await p.handle.presses(f).catch(()=>{});if(!h)return[];e.pressed=h;let m=$(),y=ie(h,Xe(m,ge(o,a,m)),B.filter(R=>R.toggle).map(R=>R.act),z(a)),j=y.length>0?y:h.controls.slice(0,8).map(R=>`${R.control}: ${R.says}`);return F(y.length>0?{kind:"check",text:`Check: ${y.length} ${y.length===1?"control doesn't":"controls don't"} work \u2014 fixing`}:{kind:"passed",text:"Check: every control works"}),v("graview",y.length>0?`I pressed every control: ${y.join(" ")}`:`I pressed every control. ${de(h,B,z(a))??"Each one did what it says."}`),j},[B,e,o,C,$,a,v,F]),J=(0,g.useCallback)(async(t,f="describe")=>{if(e.phase.at==="working")return;let p=e.pointed;e.pointed=null;let h={mode:f,words:t,...p?{pointed:p}:{}};e.about=p??e.about,v("person",t),e.events=[],e.since=Date.now(),k({at:"working"}),$(),e.markup??=Qe(b());let m=ce.test(t)?await Ae().catch(()=>[]):[];!ce.test(t)&&await be(h).catch(()=>!1)||await Pe(m),e.phase.at==="working"&&k(e.steps.length>0?{at:"draft"}:{at:"open"})},[Pe,be,e,b,$,Ae,v,k]),ee=(0,g.useCallback)(()=>{if(e.phase.at!=="working")return;let t=e.stop;e.stop=null,t?.abort(),e.covering=!1,e.steps=e.steps.filter(f=>f.entry.at<new Date(e.since).toISOString()),L(),v("graview","Stopped. The page is as it was."),k(e.steps.length>0?{at:"draft"}:{at:"open"})},[e,v,k,L]),et=(0,g.useCallback)(async t=>{let f=e.steps.at(-1);!f||t===e.before||(e.before=t,A(),t?await x():await K(f))},[e,x,K,A]),te=(0,g.useCallback)(async()=>{let t=e.steps.at(-1);if(!(!t||e.phase.at!=="draft")){k({at:"keeping"});try{let f,p;if(t.kind==="spec"){await x();let h=await P(Je(t.edits,t.said,i.name));if(h==="declined")return v("graview","It wasn't kept."),k({at:"draft"});typeof h=="object"&&([f,p]=[h.undo,h.note])}else{let h=await u.fork(V(t.source));e.putBack=null,u.draftFork?.(null),e.kept=t.source,h&&([f,p]=[h.undo,h.note])}d.record({...t.entry,outcome:"accepted"}),e.steps=[],e.before=!1,k({at:"kept",...f?{undo:f}:{},...p?{note:p}:{}})}catch{v("graview","It couldn't be kept."),k({at:"draft"})}}},[e,k,x,P,i.name,u,V,d,v]),tt=(0,g.useCallback)(async t=>{if(e.phase.at!=="stuck")return;let f={kind:"view",source:t,said:`${a.name} kept as it was last drafted.`,entry:M(`Draw \u201C${a.name}\u201D anew: ${U()}`,"offered",[])};e.steps.push(f),e.phase={at:"draft"},await te(),e.steps.at(-1)===f&&(e.steps.pop(),k(e.steps.length>0?{at:"draft"}:{at:"open"}))},[e,a.name,M,te,k]),nt=(0,g.useCallback)(()=>{v("graview","Stopped. The page is as it was."),k(e.steps.length>0?{at:"draft"}:{at:"open"})},[e,v,k]),ot=(0,g.useCallback)(()=>{let t=e.steps.at(-1);t&&d.record({...t.entry,outcome:"dismissed"}),e.steps=[],e.before=!1,x(),v("graview","Put back as it was."),k({at:"open"})},[e,d,x,v,k]),rt=(0,g.useCallback)(async()=>{if(!(e.phase.at!=="kept"||!e.phase.undo))try{await e.phase.undo(),e.kept=null,v("graview","Undone. The page is as it was."),k({at:"undone"})}catch{v("graview","It couldn't be put back.")}},[e,v,k]);if((0,g.useEffect)(()=>{e.began||!(n.mode==="just"||n.mode==="describe"&&n.words)||(e.began=!0,J(n.mode==="just"?"Make it easier to read at a glance":n.words,n.mode))},[e,n.mode,n.words,J]),(0,g.useEffect)(()=>{let t=f=>{if(f.key!=="Escape"||e.phase.at==="highlighting")return;if(f.preventDefault(),e.phase.at==="working")return ee();Z();let p=n.returnTo?.isConnected?n.returnTo:document.querySelector("[data-graview-page-title], main h1");p&&!p.hasAttribute("tabindex")&&!p.matches("a[href], button, input, select, textarea")&&p.setAttribute("tabindex","-1"),p?.focus?.()};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e,Z,ee,n.returnTo]),S.at==="highlighting")return(0,N.jsx)(Ke,{box:b(),root:b(),whole:a.elements,wholeSaid:"The whole page",cancel:()=>k({at:"open"}),chose:t=>{e.pointed={name:Me(t)??je(t.map(ue)),lines:qe(t.map(ue))},k({at:"open"})}});let Te=e.steps.at(-1);return(0,N.jsxs)(N.Fragment,{children:[e.covering?(0,N.jsx)(Ge,{over:b(),name:a.name,said:`Graview is drafting \u201C${a.name}\u201D\u2026`}):null,(0,N.jsx)(Ve,{name:a.name,scope:Ze,phase:S.at,talk:e.talk,steps:e.events,since:e.since,working:S.at==="working"||S.at==="keeping",...Te&&S.at==="draft"?{draft:{said:Te.said,before:e.before}}:{},...S.at==="kept"?{kept:{...S.note?{note:S.note}:{},...S.undo?{undo:()=>void rt()}:{}}}:{},...S.at==="stuck"?{stuck:{...S.source!==void 0?{keepAnyway:()=>void tt(S.source)}:{},stop:nt}}:{},about:(e.pointed??e.about)?.name??a.name,ask:t=>void J(t),just:()=>void J("Make it easier to read at a glance","just"),point:()=>k({at:"highlighting"}),stop:ee,compare:t=>void et(t),keep:()=>void te(),discard:ot,close:Z})]})}function Je(n,r,o){return{said:r,add:[],drop:[],card:{said:r,adds:[],keeps:[],drops:[],breaking:[]},edits:n,via:`ai:${o??"model"}`}}function ht(n,r,o,i,d){let c=X(r),l=d.slot==="home"?[...r?.querySelectorAll("h1")??[]].find(w=>c!==r&&!c?.contains(w)):void 0,s=T(l?.textContent)||T(c?.querySelector("[data-graview-page-title]")?.textContent)||(d.slot==="home"?"":T(c?.querySelector("h1")?.textContent))||(d.record?T(Y(i.store,i.store.graph.getNode(d.record))):"")||o,u=ge(i,d,n),D=Object.fromEntries(n.records.flatMap(w=>w.facts?.length||w.under&&w.under!==s?[[w.label,{...u[w.label]?{id:u[w.label]}:{},...w.facts?.length?{shows:w.facts}:{},...w.under&&w.under!==s?{under:w.under}:{}}]]:[])),P=wt(i,n,u,s);return{title:s,headings:n.headings.filter(w=>w!==s),records:n.records.map(w=>w.label),...Object.keys(D).length>0?{says:D}:{},...P?{grouping:P}:{}}}function mt(n,r,o){let i=he(n,r),d={};for(let c of o.records){let l=i.find(s=>T(Y(n,s))===T(c.label));l&&(d[c.label]=l.id)}return d}var ge=(n,r,o)=>mt(n.store,r,o);function wt(n,r,o,i){let{store:d}=n,c=r.records.filter(O=>O.under&&O.under!==i&&o[O.label]);if(c.length<2)return;let l=d.graph.allEdges(),s=new Map;for(let O of c){let q=o[O.label];for(let a of l){let e=a.from===q?a.to:a.to===q?a.from:void 0,H=e!==void 0?d.graph.getNode(e):void 0;if(!H||T(Y(d,H))!==T(O.under))continue;let S=`${a.kind}\0${H.kind}\0${a.from===q?"from":"to"}`;s.set(S,(s.get(S)??0)+1)}}let u=[...s].sort((O,q)=>q[1]-O[1])[0];if(!u||u[1]<c.length/2)return;let[D,P,w]=u[0].split("\0");return{edge:D,kind:P,record:w}}var X=n=>n?.querySelector("main")??n;function Qe(n){if(!n?.isConnected)return null;let r=(n.querySelector("main")??n).cloneNode(!0);for(let i of r.querySelectorAll("[data-graview-listed], [data-graview-record]")){let d=i.querySelector("a[href]");d&&d.setAttribute("data-record",i.getAttribute("data-graview-listed")??i.getAttribute("data-graview-record")??"")}for(let i of r.querySelectorAll("a[aria-label]"))T(i.textContent)||(i.textContent=i.getAttribute("aria-label"));for(let i of r.querySelectorAll("script, style, svg, button, input, select, textarea, [hidden], [aria-hidden='true'], [data-graview-popover]"))i.remove();for(let i of[r,...r.querySelectorAll("*")])for(let d of[...i.getAttributeNames()])d==="data-record"&&i.localName==="a"||i.removeAttribute(d);let o=r.outerHTML.replace(/\s+/g," ").replace(/<(div|span)>\s*<\/\1>/g,"").trim();return o.length>6e3?o.slice(0,6e3):o}var z=n=>n.slot==="list"||n.slot==="group"?n.name.toLowerCase():n.slot==="record"?"parts":"records";function Xe(n,r){return n.records.flatMap(o=>r[o.label]?[{label:o.label,id:r[o.label],...o.presses?{presses:!0}:{},...o.opens?{opens:!0}:{}}]:[])}function kt(n,r){let{store:o}=n,i=r.kind?[r.kind]:o.schema.kinds,d=l=>o.schema.tryDefinition(l)?.fields?.shape??{},c=l=>{let s=l?._zod?.def;for(let u=0;u<6&&s&&s.type!=="boolean"&&s.innerType!==void 0;u++)s=s.innerType._zod?.def;return s?.type==="boolean"};return o.allMutations().flatMap(l=>{let s=l.subject;if(!s||l.creates?.length)return[];let u=i.find(w=>s.kinds==="*"||s.kinds.includes(w));if(!u)return[];let D=l.writes??[],P=D.length===1&&c(d(u)[D[0]])?D[0]:void 0;return[{act:l.name,title:String(l.title??l.name),record:s.arg,...P?{toggle:P}:{}}]}).slice(0,24)}function yt(){return document.querySelector("[data-graview-page-main], main")??document.querySelector("[data-graview-face]")}export{Ct as PageCard,_e as drawnSignature,ze as fieldsShownOf,gt as labelsShown,Qe as markupOf,lt as outlineOf,mt as recordIdsOf};
@@ -0,0 +1 @@
1
+ import{$ as v,Jb as w,L as p,Mb as B,Ob as O,R as m,U as b,Y as h,sa as k}from"./chunk.6L6RUOSF.js";function $(e,t){return e.ops.length>0&&e.ops.every(n=>n.suggests!==void 0||n.undoes!==void 0&&t(n.undoes)?.suggests!==void 0&&!O(n,t(n.undoes)))}var l=e=>[...e].length;function A(e){let t,n=0,o=0;for(let i of e.ops){let d=i.mutation?.name===w&&i.withheld!==!0&&i.undoes===void 0?i.mutation.args:void 0;if(typeof d?.node!="string"||typeof d.field!="string"||t&&(t.node!==d.node||t.field!==d.field))return;t={node:d.node,field:d.field};for(let r of i.primitives)r.op==="splice-text"?(n+=l(r.inserted),o+=l(r.removed)):r.op==="patch-node"&&typeof r.after[d.field]=="string"&&(n+=l(r.after[d.field]))}return t&&{...t,inserted:n,removed:o}}function W(e,t,n){let o=n.getNode(e.node)?.kind,i=[...e.inserted>0||e.removed===0?[`+${e.inserted}`]:[],...e.removed>0?[`\u2212${e.removed}`]:[]];return`Wrote in ${k(o?t.tryDefinition(o):void 0,e.field)} (${i.join(" ")})`}var c=e=>JSON.stringify([e.kind,e.id??"",e.name??"",...e.profile?[e.profile.id]:[]]),R=e=>e.ops.find(t=>t.lineage?.run!==void 0)?.lineage?.run;function P(e,t=()=>{}){let n=[];for(let o of e){if($(o,t))continue;if(!B(o.author)){let s=A(o),a=n.at(-1),f=s&&a&&"batch"in a&&c(a.batch.author)===c(o.author)&&a.typed?.node===s.node&&a.typed.field===s.field?a.typed:void 0;f?n[n.length-1]={batch:o,typed:{...f,batches:[...f.batches,o],inserted:f.inserted+s.inserted,removed:f.removed+s.removed}}:n.push(s?{batch:o,typed:{batches:[o],...s}}:{batch:o});continue}let i=R(o),d=c(o.author),r=i!==void 0?n.findIndex(s=>"digest"in s&&s.digest.run===i&&c(s.digest.author)===d):n.length-1,u=n[r],g=u!==void 0&&"digest"in u&&c(u.digest.author)===d&&u.digest.run===i?u.digest:void 0,y=[...g?.batches??[],o];g&&n.splice(r,1),n.push({digest:{author:o.author,batches:y,things:T(y),at:o.at,...i!==void 0?{run:i}:{}}})}return n}var T=e=>e.reduce((t,n)=>t+(n.undone?0:n.ops.length),0),x=e=>{let t=Date.parse(e);if(Number.isNaN(t))return!1;let{minutes:n}=b(t,m());return n<6*60||n>=21*60};function j(e,t=h(new Date().toISOString())??p()){let n=h(e.at)??e.at.slice(0,10),i=e.run!==void 0&&n===t&&[e.at,...(e.batches??[]).map(r=>r.at)].every(x)?"overnight":n===t?"today":`on ${v(n)}`,d=e.things===1?"one thing":`${e.things} things`;return e.author?.id?.startsWith("workflow:")&&e.author.name?`${e.author.name}: ${d} ${i}`:`Tidied ${d} ${i}`}export{W as a,P as b,j as c};
@@ -1 +1 @@
1
- import{d as K}from"./chunk.ZQYHNFRZ.js";import{Fb as h,Gb as v,Hc as $,Ic as N,Nb as V,h as P,k as R,pc as Y,q as I,qb as G,qc as X,tc as B,ua as q,x as _}from"./chunk.DHPXRDT5.js";import{a as T,c as C,h as L}from"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";var te=Symbol.for("@graview/core:markdown"),ne=500;function ie(e){let n=e;for(let i=0;i<6;i++){let t=N(n);if(!t)return!1;if(t[$]!==void 0)return t[$]===1;if(t[te]===1)return!0;if(t.type==="string")return(t.checks??[]).some(s=>{let f=N(s);return f?.check==="max_length"&&(f.maximum??0)>ne});if(t.innerType===void 0)return!1;n=t.innerType}return!1}function O(e,n,i){if(n===void 0||i==="id"||i==="kind")return!1;let t=e.tryDefinition(n)?.fields?.shape;return!!t&&Object.prototype.hasOwnProperty.call(t,i)&&ie(t[i])}var re=e=>e>=55296&&e<=56319,oe=e=>e>=56320&&e<=57343;function S(e,n){let i=Math.min(e.length,n.length),t=0;for(;t<i&&e.charCodeAt(t)===n.charCodeAt(t);)t++;t>0&&re(e.charCodeAt(t-1))&&t--;let s=0;for(;s<i-t&&e.charCodeAt(e.length-1-s)===n.charCodeAt(n.length-1-s);)s++;return s>0&&oe(e.charCodeAt(e.length-s))&&s--,{at:t,removed:e.slice(t,e.length-s),inserted:n.slice(t,n.length-s)}}var w=e=>e.at+e.removed.length;function H(e){let n=S(e.removed,e.inserted);return{...n,at:e.at+n.at}}function U(e,n,i){if(w(e)<n.at)return e;if(e.at>w(n))return{...e,at:e.at+n.inserted.length-n.removed.length};let t=Math.min(e.at,n.at),s=w(e)-w(n),f=e.removed.slice(0,n.at-t)+n.inserted+(s>0?e.removed.slice(e.removed.length-s):""),r=n.at<e.at||n.at===e.at&&i;return H({at:t,removed:f,inserted:r?n.inserted+e.inserted:e.inserted+n.inserted})}function b(e,n){return[U(e,n,!1),U(n,e,!0)]}function D(e,n){let i=e.at+e.inserted.length;if(w(n)<e.at||n.at>i)return;let t=Math.min(e.at,n.at),s=w(n)-i,f=n.removed.slice(0,e.at-t),r=s>0?n.removed.slice(n.removed.length-s):"",l=T(f+e.inserted+r,{...n,at:n.at-t});return H({at:t,removed:f+e.removed+r,inserted:l})}function M(e,n,i){switch(e.op){case"patch-node":return e.id===n&&Object.prototype.hasOwnProperty.call(e.after,i);case"add-node":case"remove-node":return e.node.id===n;default:return!1}}function j(e,n,i){if(e.op!=="patch-node"||e.id!==n||!Object.prototype.hasOwnProperty.call(e.after,i))return;let t=e.before[i],s=e.after[i];return typeof s=="string"&&(t===void 0||t===""||C(t))?{at:0,removed:"",inserted:s}:void 0}var J=(e,n,i)=>e.flatMap(t=>t.op==="splice-text"&&t.id===n&&t.field===i?[t]:[]);function E(e,n,i,t,s,f){if(typeof f!="string"||s<n-1)return;let r=[];for(let o of e)if(!(o.seq<=s))for(let p of o.primitives){let a=j(p,i,t);if(a){r.push(a);continue}if(M(p,i,t))return;p.op==="splice-text"&&p.id===i&&p.field===t&&r.push(p)}let l=f;try{for(let o=r.length-1;o>=0;o--){let p=r[o];l=T(l,{at:p.at,removed:p.inserted,inserted:p.removed})}}catch{return}return{then:l,since:r}}function A(e,n){let i=e;for(let t of n)i=b(t,i)[1];return{at:i.at,removed:i.removed,inserted:i.inserted}}function Q(e,n,i){let t=i?A(S(i.then,n),i.since):S(e,n);return t.removed===""&&t.inserted===""?void 0:t}function Z(e){let n=e.schema,i=t=>{throw new V(t,"invalid")};return{name:h,title:"Type text",input:I({node:P(),field:P(),at:R(),remove:R(),insert:P(),rev:_(R())}),subject:{kinds:"*",arg:"node"},writes:[],describe:(t,s)=>{let{node:f,field:r,insert:l,remove:o}=t;return K({node:f,field:r,inserted:[...String(l??"")].length,removed:Number(o)||0},n,s)},apply(t,s){let{node:f,field:r,at:l,remove:o,insert:p,rev:a}=s;(![l,o,a??0].every(k=>Number.isInteger(k)&&k>=-1)||l<0||o<0)&&i("at and remove are whole numbers, none below 0, and rev a revision");let d=t.graph.getNode(f);if(!d)throw new G(f,"\u201CType text\u201D names a record that is not there.");if(O(n,d.kind,r)||i(`${q(n.tryDefinition(d.kind),d.kind)}'s "${r}" is not text typed together: write it whole, as its edit does`),o===0&&p==="")return;let c=d[r];if(typeof c!="string"||c===""){t.patchNode(f,{[r]:p});return}let g=e.graph.getNode(f)?.[r],m=a===void 0?{then:c,since:[]}:E(e.log.all(),e.log.horizon,f,r,Math.max(a,-1),g);m||i(`${r} was written whole since revision ${a}: read it again and type over what it holds now`);let{then:u,since:y}=m;l+o>u.length&&i(`${r} held ${u.length} characters at revision ${a??"now"}, so there is nothing at ${l}${o>0?`\u2013${l+o}`:""} to type over`);let x=A({at:l,removed:u.slice(l,l+o),inserted:p},y);x.removed===""&&x.inserted===""||t.emit({op:"splice-text",id:f,field:r,...x})}}}function ee(e,n,i,t,s=()=>!0){let f=i===void 0?void 0:e.tryDefinition(i);if(!f||typeof t!="string")return[];let r=new Set;for(let l of n)if(!(l.name===h||!Y(e,l).includes(i)||!X(l,f).includes(t))&&s(l)){r.add(l.name);for(let o of B(e,n,l)??[])r.add(o)}return[...r]}function se(e,n,i){if(!n.some(r=>r.op==="patch-node"))return[...n];let t=new Set,s=new Set,f=[];for(let r of n){if(r.op==="add-node"&&t.add(r.node.id),r.op!=="patch-node"||t.has(r.id)){r.op==="splice-text"&&s.add(`${r.id}\0${r.field}`),f.push(r);continue}let l=e.graph.getNode(r.id),o={},p={},a=[];for(let[d,c]of Object.entries(r.after)){let g=l?.[d],m=`${r.id}\0${d}`;if(typeof c=="string"&&typeof g=="string"&&g!==""&&!s.has(m)&&O(e.schema,l?.kind,d)){let u=i?.find(x=>x.node===r.id&&x.field===d),y=Q(g,c,u?E(e.log.all(),e.log.horizon,r.id,d,u.rev,g):void 0);if(y){a.push({op:"splice-text",id:r.id,field:d,...y}),s.add(m);continue}}o[d]=r.before[d],p[d]=c,s.add(m)}Object.keys(p).length>0&&f.push(a.length>0?{op:"patch-node",id:r.id,before:o,after:p}:r),f.push(...a)}return f}function de(e,n){let i=[];return[...n].sort((t,s)=>s.seq-t.seq).map(t=>{let s=L(t);if(!s.some(o=>o.op==="splice-text"))return i.push(...s),{op:t,primitives:s};let f=e.filter(o=>o.seq>t.seq).flatMap(o=>o.primitives),r=t.primitives.length,l=[];return s.forEach((o,p)=>{if(o.op!=="splice-text")return void l.push(o);let a=A(o,J([...t.primitives.slice(r-p),...f,...i,...l],o.id,o.field));(a.removed!==""||a.inserted!=="")&&l.push({op:"splice-text",id:o.id,field:o.field,...a})}),i.push(...l),{op:t,primitives:l}})}function ae(e,n){let i=(t,s)=>e.some(f=>M(f,t,s));return n.undoes!==void 0&&n.primitives.length===0&&e.some(t=>t.op==="splice-text")||n.primitives.length>0&&n.primitives.every(t=>t.op==="splice-text"&&!i(t.id,t.field))?!0:e.flatMap(t=>t.op==="splice-text"&&n.primitives.some(s=>M(s,t.id,t.field))?[t.id]:[])}function le(e,n,i){let t=new Map,s=[],f=new Set;for(let a of e){let d=a.primitives[0],c=a.mutation?.args,g=a.mutation?.name!==h||a.primitives.length!==1||!d?void 0:d.op==="splice-text"?d:j(d,String(c?.node),String(c?.field));g?s.push({batch:a.batch,node:String(c?.node),field:String(c?.field),splice:g}):f.add(a.batch)}if(s.length===0)return t;let r=a=>`${a.node}\0${a.field}`,l=new Set,o=new Set(e.map(a=>a.batch).filter(a=>!i.includes(a))),p=s;for(let a of n){if(o.has(a.batch)){p=p.filter(d=>d.batch!==a.batch);continue}for(let d of a.primitives){if(d.op==="add-edge"||d.op==="remove-edge")continue;let c=d.op==="add-node"||d.op==="remove-node"?d.node.id:d.id;for(let g of new Set(p.filter(m=>m.node===c).map(m=>m.field))){let m=d.op==="splice-text"?d.field===g?d:void 0:j(d,c,g);for(let u of p)u.node!==c||u.field!==g||(m?[m,u.splice]=b(m,u.splice):M(d,u.node,u.field)&&l.add(r(u)))}}}p.forEach((a,d)=>{if(!o.has(a.batch))return;let c={at:a.splice.at,removed:a.splice.inserted,inserted:a.splice.removed};for(let g of p.slice(d+1))r(g)===r(a)&&([c,g.splice]=b(c,g.splice))});for(let a of i){let d=p.filter(c=>c.batch===a);d.length===0||f.has(a)||d.some(c=>l.has(r(c)))||t.set(a,d.map(c=>({name:h,args:{node:c.node,field:c.field,at:c.splice.at,remove:c.splice.removed.length,insert:c.splice.inserted}})))}return t}v.typeText=Z;v.via=ee;v.collaborative=O;v.asSplices=se;v.undone=de;v.aside=ae;v.carried=le;function Ye(e){let{store:n,author:i,pending:t,provisional:s,asked:f}=e,r=new Map,l=(o,p)=>{r.get(o)?.(p),r.delete(o)};return{store:n,apply:(o,p)=>e.appliedAll(o,{...i?{author:i}:{},...p!==void 0?{batch:p}:{}}),hold(o){t.push(o),s.add(o),e.answers.set(o,new Promise(p=>r.set(o,p)))},ask:(o,p)=>void f.set(o,{calls:p}),send(o,p){f.set(o,{calls:p});let a=e.sent(o,p),d=()=>l(o,a);return a.then(c=>{Array.isArray(c?.ops)&&c.ops.length===0&&e.letGo.add(o),d()},d),a},drop(o){e.letGo.add(o),e.settle(o),f.delete(o),e.land([],[o]),l(o)},seen:e.seen,gone:e.gone,ahead(o,p,a){let d=t.indexOf(o),c=n.log.all(),g=m=>c.some(u=>u.batch===m&&u.primitives.some(y=>y.op==="splice-text"&&y.id===p&&y.field===a||y.op==="patch-node"&&y.id===p&&a in y.after));return t.slice(0,Math.max(0,d)).flatMap(m=>{let u=e.answers.get(m);return u&&g(m)?[{batch:m,answer:u}]:[]})}}}var ce=400,pe=/[\s.,;:!?)\]}]$/u,W=e=>typeof e=="string"?e:"";function z(e,n,i,t){let s=e.log.all(),f=s.findIndex(o=>o.batch===n);if(f<0)return;let r=W(e.graph.getNode(i)?.[t]),l;for(let o=s.length-1;o>=f;o--){let p=s[o];p.batch===n&&l===void 0&&(l=r);for(let a=p.primitives.length-1;a>=0;a--){let d=p.primitives[a];d.op==="splice-text"&&d.id===i&&d.field===t?r=T(r,{at:d.at,removed:d.inserted,inserted:d.removed}):d.op==="patch-node"&&d.id===i&&t in d.after&&(r=C(d.before[t])?"":W(d.before[t]))}}if(!(l===void 0||l===r))return S(r,l)}function Xe(e,n,i){let t,s=[],f,r,l=!1,o=new Set,p=c=>({name:h,args:{node:e,field:n,at:c.at,remove:c.removed.length,insert:c.inserted,rev:i.seen()}}),a=()=>{r&&clearTimeout(r),r=void 0,t!==void 0&&s.push(t),t=void 0,d()},d=()=>{if(f!==void 0||l||i.gone())return;let c=s.shift();if(c===void 0)return;let g=i.ahead(c,e,n).filter(u=>!o.has(u.batch));if(g.length>0){s.unshift(c),l=!0,Promise.allSettled(g.map(u=>u.answer)).then(()=>{for(let u of g)o.add(u.batch);l=!1,d()});return}let m=z(i.store,c,e,n);if(!m)return i.drop(c),d();f=c,i.send(c,[p(m)]).finally(()=>{f=void 0,d()})};return{splice(c,g,m){if(i.gone())return;let u=W(i.store.graph.getNode(e)?.[n]),y={at:c,removed:u.slice(c,c+g),inserted:m};if(t!==void 0){let F=z(i.store,t,e,n);(!F||!D(F,y))&&a()}let x=i.apply([{name:h,args:{node:e,field:n,at:c,remove:g,insert:m}}],t);if(x.ops.length===0)return;t===void 0&&(t=x.batch,i.hold(t));let k=z(i.store,t,e,n);if(k&&i.ask(t,[p(k)]),pe.test(m))return a();r&&clearTimeout(r),r=setTimeout(a,ce),r.unref?.()},flush:a,waiting:()=>s.length+(t!==void 0?1:0)+(f!==void 0?1:0)}}function Be(e,n){let i=n.find(l=>l.name===h)?.args;if(typeof i?.node!="string"||typeof i.field!="string")return;let{node:t,field:s}=i,f=()=>e.graph.getNode(t)?.[s],r=f();return{node:t,field:s,yours:r,over:l=>{let o=f();return{name:h,args:{node:t,field:s,at:0,remove:typeof o=="string"?o.length:0,insert:typeof r=="string"?r:"",rev:l}}}}}export{ce as TYPING_IDLE_MS,z as runSplice,Xe as typingOf,Ye as wireOf,Be as yoursOf};
1
+ import{d as K}from"./chunk.OPMGQS5J.js";import{Ac as X,Bb as G,Dc as B,Jb as h,Kb as v,Rc as $,Sc as N,Xb as V,h as P,k as R,q as I,va as q,x as _,zc as Y}from"./chunk.6L6RUOSF.js";import{a as T,c as C,h as L}from"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";var te=Symbol.for("@graview/core:markdown"),ne=500;function ie(e){let n=e;for(let i=0;i<6;i++){let t=N(n);if(!t)return!1;if(t[$]!==void 0)return t[$]===1;if(t[te]===1)return!0;if(t.type==="string")return(t.checks??[]).some(s=>{let f=N(s);return f?.check==="max_length"&&(f.maximum??0)>ne});if(t.innerType===void 0)return!1;n=t.innerType}return!1}function O(e,n,i){if(n===void 0||i==="id"||i==="kind")return!1;let t=e.tryDefinition(n)?.fields?.shape;return!!t&&Object.prototype.hasOwnProperty.call(t,i)&&ie(t[i])}var re=e=>e>=55296&&e<=56319,oe=e=>e>=56320&&e<=57343;function S(e,n){let i=Math.min(e.length,n.length),t=0;for(;t<i&&e.charCodeAt(t)===n.charCodeAt(t);)t++;t>0&&re(e.charCodeAt(t-1))&&t--;let s=0;for(;s<i-t&&e.charCodeAt(e.length-1-s)===n.charCodeAt(n.length-1-s);)s++;return s>0&&oe(e.charCodeAt(e.length-s))&&s--,{at:t,removed:e.slice(t,e.length-s),inserted:n.slice(t,n.length-s)}}var w=e=>e.at+e.removed.length;function H(e){let n=S(e.removed,e.inserted);return{...n,at:e.at+n.at}}function U(e,n,i){if(w(e)<n.at)return e;if(e.at>w(n))return{...e,at:e.at+n.inserted.length-n.removed.length};let t=Math.min(e.at,n.at),s=w(e)-w(n),f=e.removed.slice(0,n.at-t)+n.inserted+(s>0?e.removed.slice(e.removed.length-s):""),r=n.at<e.at||n.at===e.at&&i;return H({at:t,removed:f,inserted:r?n.inserted+e.inserted:e.inserted+n.inserted})}function b(e,n){return[U(e,n,!1),U(n,e,!0)]}function D(e,n){let i=e.at+e.inserted.length;if(w(n)<e.at||n.at>i)return;let t=Math.min(e.at,n.at),s=w(n)-i,f=n.removed.slice(0,e.at-t),r=s>0?n.removed.slice(n.removed.length-s):"",l=T(f+e.inserted+r,{...n,at:n.at-t});return H({at:t,removed:f+e.removed+r,inserted:l})}function M(e,n,i){switch(e.op){case"patch-node":return e.id===n&&Object.prototype.hasOwnProperty.call(e.after,i);case"add-node":case"remove-node":return e.node.id===n;default:return!1}}function j(e,n,i){if(e.op!=="patch-node"||e.id!==n||!Object.prototype.hasOwnProperty.call(e.after,i))return;let t=e.before[i],s=e.after[i];return typeof s=="string"&&(t===void 0||t===""||C(t))?{at:0,removed:"",inserted:s}:void 0}var J=(e,n,i)=>e.flatMap(t=>t.op==="splice-text"&&t.id===n&&t.field===i?[t]:[]);function E(e,n,i,t,s,f){if(typeof f!="string"||s<n-1)return;let r=[];for(let o of e)if(!(o.seq<=s))for(let p of o.primitives){let a=j(p,i,t);if(a){r.push(a);continue}if(M(p,i,t))return;p.op==="splice-text"&&p.id===i&&p.field===t&&r.push(p)}let l=f;try{for(let o=r.length-1;o>=0;o--){let p=r[o];l=T(l,{at:p.at,removed:p.inserted,inserted:p.removed})}}catch{return}return{then:l,since:r}}function A(e,n){let i=e;for(let t of n)i=b(t,i)[1];return{at:i.at,removed:i.removed,inserted:i.inserted}}function Q(e,n,i){let t=i?A(S(i.then,n),i.since):S(e,n);return t.removed===""&&t.inserted===""?void 0:t}function Z(e){let n=e.schema,i=t=>{throw new V(t,"invalid")};return{name:h,title:"Type text",input:I({node:P(),field:P(),at:R(),remove:R(),insert:P(),rev:_(R())}),subject:{kinds:"*",arg:"node"},writes:[],describe:(t,s)=>{let{node:f,field:r,insert:l,remove:o}=t;return K({node:f,field:r,inserted:[...String(l??"")].length,removed:Number(o)||0},n,s)},apply(t,s){let{node:f,field:r,at:l,remove:o,insert:p,rev:a}=s;(![l,o,a??0].every(k=>Number.isInteger(k)&&k>=-1)||l<0||o<0)&&i("at and remove are whole numbers, none below 0, and rev a revision");let d=t.graph.getNode(f);if(!d)throw new G(f,"\u201CType text\u201D names a record that is not there.");if(O(n,d.kind,r)||i(`${q(n.tryDefinition(d.kind),d.kind)}'s "${r}" is not text typed together: write it whole, as its edit does`),o===0&&p==="")return;let c=d[r];if(typeof c!="string"||c===""){t.patchNode(f,{[r]:p});return}let g=e.graph.getNode(f)?.[r],m=a===void 0?{then:c,since:[]}:E(e.log.all(),e.log.horizon,f,r,Math.max(a,-1),g);m||i(`${r} was written whole since revision ${a}: read it again and type over what it holds now`);let{then:u,since:y}=m;l+o>u.length&&i(`${r} held ${u.length} characters at revision ${a??"now"}, so there is nothing at ${l}${o>0?`\u2013${l+o}`:""} to type over`);let x=A({at:l,removed:u.slice(l,l+o),inserted:p},y);x.removed===""&&x.inserted===""||t.emit({op:"splice-text",id:f,field:r,...x})}}}function ee(e,n,i,t,s=()=>!0){let f=i===void 0?void 0:e.tryDefinition(i);if(!f||typeof t!="string")return[];let r=new Set;for(let l of n)if(!(l.name===h||!Y(e,l).includes(i)||!X(l,f).includes(t))&&s(l)){r.add(l.name);for(let o of B(e,n,l)??[])r.add(o)}return[...r]}function se(e,n,i){if(!n.some(r=>r.op==="patch-node"))return[...n];let t=new Set,s=new Set,f=[];for(let r of n){if(r.op==="add-node"&&t.add(r.node.id),r.op!=="patch-node"||t.has(r.id)){r.op==="splice-text"&&s.add(`${r.id}\0${r.field}`),f.push(r);continue}let l=e.graph.getNode(r.id),o={},p={},a=[];for(let[d,c]of Object.entries(r.after)){let g=l?.[d],m=`${r.id}\0${d}`;if(typeof c=="string"&&typeof g=="string"&&g!==""&&!s.has(m)&&O(e.schema,l?.kind,d)){let u=i?.find(x=>x.node===r.id&&x.field===d),y=Q(g,c,u?E(e.log.all(),e.log.horizon,r.id,d,u.rev,g):void 0);if(y){a.push({op:"splice-text",id:r.id,field:d,...y}),s.add(m);continue}}o[d]=r.before[d],p[d]=c,s.add(m)}Object.keys(p).length>0&&f.push(a.length>0?{op:"patch-node",id:r.id,before:o,after:p}:r),f.push(...a)}return f}function de(e,n){let i=[];return[...n].sort((t,s)=>s.seq-t.seq).map(t=>{let s=L(t);if(!s.some(o=>o.op==="splice-text"))return i.push(...s),{op:t,primitives:s};let f=e.filter(o=>o.seq>t.seq).flatMap(o=>o.primitives),r=t.primitives.length,l=[];return s.forEach((o,p)=>{if(o.op!=="splice-text")return void l.push(o);let a=A(o,J([...t.primitives.slice(r-p),...f,...i,...l],o.id,o.field));(a.removed!==""||a.inserted!=="")&&l.push({op:"splice-text",id:o.id,field:o.field,...a})}),i.push(...l),{op:t,primitives:l}})}function ae(e,n){let i=(t,s)=>e.some(f=>M(f,t,s));return n.undoes!==void 0&&n.primitives.length===0&&e.some(t=>t.op==="splice-text")||n.primitives.length>0&&n.primitives.every(t=>t.op==="splice-text"&&!i(t.id,t.field))?!0:e.flatMap(t=>t.op==="splice-text"&&n.primitives.some(s=>M(s,t.id,t.field))?[t.id]:[])}function le(e,n,i){let t=new Map,s=[],f=new Set;for(let a of e){let d=a.primitives[0],c=a.mutation?.args,g=a.mutation?.name!==h||a.primitives.length!==1||!d?void 0:d.op==="splice-text"?d:j(d,String(c?.node),String(c?.field));g?s.push({batch:a.batch,node:String(c?.node),field:String(c?.field),splice:g}):f.add(a.batch)}if(s.length===0)return t;let r=a=>`${a.node}\0${a.field}`,l=new Set,o=new Set(e.map(a=>a.batch).filter(a=>!i.includes(a))),p=s;for(let a of n){if(o.has(a.batch)){p=p.filter(d=>d.batch!==a.batch);continue}for(let d of a.primitives){if(d.op==="add-edge"||d.op==="remove-edge")continue;let c=d.op==="add-node"||d.op==="remove-node"?d.node.id:d.id;for(let g of new Set(p.filter(m=>m.node===c).map(m=>m.field))){let m=d.op==="splice-text"?d.field===g?d:void 0:j(d,c,g);for(let u of p)u.node!==c||u.field!==g||(m?[m,u.splice]=b(m,u.splice):M(d,u.node,u.field)&&l.add(r(u)))}}}p.forEach((a,d)=>{if(!o.has(a.batch))return;let c={at:a.splice.at,removed:a.splice.inserted,inserted:a.splice.removed};for(let g of p.slice(d+1))r(g)===r(a)&&([c,g.splice]=b(c,g.splice))});for(let a of i){let d=p.filter(c=>c.batch===a);d.length===0||f.has(a)||d.some(c=>l.has(r(c)))||t.set(a,d.map(c=>({name:h,args:{node:c.node,field:c.field,at:c.splice.at,remove:c.splice.removed.length,insert:c.splice.inserted}})))}return t}v.typeText=Z;v.via=ee;v.collaborative=O;v.asSplices=se;v.undone=de;v.aside=ae;v.carried=le;function Ye(e){let{store:n,author:i,pending:t,provisional:s,asked:f}=e,r=new Map,l=(o,p)=>{r.get(o)?.(p),r.delete(o)};return{store:n,apply:(o,p)=>e.appliedAll(o,{...i?{author:i}:{},...p!==void 0?{batch:p}:{}}),hold(o){t.push(o),s.add(o),e.answers.set(o,new Promise(p=>r.set(o,p)))},ask:(o,p)=>void f.set(o,{calls:p}),send(o,p){f.set(o,{calls:p});let a=e.sent(o,p),d=()=>l(o,a);return a.then(c=>{Array.isArray(c?.ops)&&c.ops.length===0&&e.letGo.add(o),d()},d),a},drop(o){e.letGo.add(o),e.settle(o),f.delete(o),e.land([],[o]),l(o)},seen:e.seen,gone:e.gone,ahead(o,p,a){let d=t.indexOf(o),c=n.log.all(),g=m=>c.some(u=>u.batch===m&&u.primitives.some(y=>y.op==="splice-text"&&y.id===p&&y.field===a||y.op==="patch-node"&&y.id===p&&a in y.after));return t.slice(0,Math.max(0,d)).flatMap(m=>{let u=e.answers.get(m);return u&&g(m)?[{batch:m,answer:u}]:[]})}}}var ce=400,pe=/[\s.,;:!?)\]}]$/u,W=e=>typeof e=="string"?e:"";function z(e,n,i,t){let s=e.log.all(),f=s.findIndex(o=>o.batch===n);if(f<0)return;let r=W(e.graph.getNode(i)?.[t]),l;for(let o=s.length-1;o>=f;o--){let p=s[o];p.batch===n&&l===void 0&&(l=r);for(let a=p.primitives.length-1;a>=0;a--){let d=p.primitives[a];d.op==="splice-text"&&d.id===i&&d.field===t?r=T(r,{at:d.at,removed:d.inserted,inserted:d.removed}):d.op==="patch-node"&&d.id===i&&t in d.after&&(r=C(d.before[t])?"":W(d.before[t]))}}if(!(l===void 0||l===r))return S(r,l)}function Xe(e,n,i){let t,s=[],f,r,l=!1,o=new Set,p=c=>({name:h,args:{node:e,field:n,at:c.at,remove:c.removed.length,insert:c.inserted,rev:i.seen()}}),a=()=>{r&&clearTimeout(r),r=void 0,t!==void 0&&s.push(t),t=void 0,d()},d=()=>{if(f!==void 0||l||i.gone())return;let c=s.shift();if(c===void 0)return;let g=i.ahead(c,e,n).filter(u=>!o.has(u.batch));if(g.length>0){s.unshift(c),l=!0,Promise.allSettled(g.map(u=>u.answer)).then(()=>{for(let u of g)o.add(u.batch);l=!1,d()});return}let m=z(i.store,c,e,n);if(!m)return i.drop(c),d();f=c,i.send(c,[p(m)]).finally(()=>{f=void 0,d()})};return{splice(c,g,m){if(i.gone())return;let u=W(i.store.graph.getNode(e)?.[n]),y={at:c,removed:u.slice(c,c+g),inserted:m};if(t!==void 0){let F=z(i.store,t,e,n);(!F||!D(F,y))&&a()}let x=i.apply([{name:h,args:{node:e,field:n,at:c,remove:g,insert:m}}],t);if(x.ops.length===0)return;t===void 0&&(t=x.batch,i.hold(t));let k=z(i.store,t,e,n);if(k&&i.ask(t,[p(k)]),pe.test(m))return a();r&&clearTimeout(r),r=setTimeout(a,ce),r.unref?.()},flush:a,waiting:()=>s.length+(t!==void 0?1:0)+(f!==void 0?1:0)}}function Be(e,n){let i=n.find(l=>l.name===h)?.args;if(typeof i?.node!="string"||typeof i.field!="string")return;let{node:t,field:s}=i,f=()=>e.graph.getNode(t)?.[s],r=f();return{node:t,field:s,yours:r,over:l=>{let o=f();return{name:h,args:{node:t,field:s,at:0,remove:typeof o=="string"?o.length:0,insert:typeof r=="string"?r:"",rev:l}}}}}export{ce as TYPING_IDLE_MS,z as runSplice,Xe as typingOf,Ye as wireOf,Be as yoursOf};