graview 0.1.65 → 0.1.66

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 (261) hide show
  1. package/dist/index.js +4 -4
  2. package/dist/index.js.map +1 -1
  3. package/dist/preview/{chunk.6RZHKQP3.js → chunk.2KFZHUAC.js} +1 -1
  4. package/dist/preview/chunk.2MHNPBHC.js +1 -0
  5. package/dist/preview/{chunk.2PK335JQ.js → chunk.2VR7YEJ6.js} +1 -1
  6. package/dist/preview/chunk.32SHA3EY.js +1 -0
  7. package/dist/preview/chunk.3L4JMM3P.js +1 -0
  8. package/dist/preview/chunk.3PBTN7RO.js +1 -0
  9. package/dist/preview/chunk.45JP6VGJ.js +5 -0
  10. package/dist/preview/{chunk.INTJD5WG.js → chunk.4AC2QM7T.js} +1 -1
  11. package/dist/preview/chunk.4FCFNAA4.js +1 -0
  12. package/dist/preview/chunk.4FDVINRJ.js +1 -0
  13. package/dist/preview/chunk.4JULYKGD.js +1 -0
  14. package/dist/preview/chunk.4U4D7WOI.js +1 -0
  15. package/dist/preview/chunk.4WGYUYWU.js +2 -0
  16. package/dist/preview/chunk.5B5SRTUK.js +1 -0
  17. package/dist/preview/chunk.5BX66FBP.js +1 -0
  18. package/dist/preview/chunk.5CXIEYHY.js +2 -0
  19. package/dist/preview/chunk.5EMIWORS.js +1 -0
  20. package/dist/preview/{chunk.KIQXTQDU.js → chunk.5FNFRVTL.js} +1 -1
  21. package/dist/preview/chunk.5LJVOLKR.js +1 -0
  22. package/dist/preview/{chunk.GPCKOYSF.js → chunk.6EHHMWPP.js} +1 -1
  23. package/dist/preview/chunk.6EVMXBNB.js +1 -0
  24. package/dist/preview/chunk.6FQW6FNL.js +1 -0
  25. package/dist/preview/chunk.6HY6ZGEE.js +5 -0
  26. package/dist/preview/{chunk.DICM56FT.js → chunk.6LXIEM6B.js} +1 -1
  27. package/dist/preview/chunk.6MQ5NT7S.js +1 -0
  28. package/dist/preview/chunk.6P6NGZ6D.js +1 -0
  29. package/dist/preview/{chunk.F2TWV4TX.js → chunk.6TLXFMX2.js} +1 -1
  30. package/dist/preview/chunk.72XP2ARZ.js +1 -0
  31. package/dist/preview/{chunk.QSDBF7VL.js → chunk.72ZCLEQC.js} +1 -1
  32. package/dist/preview/{chunk.LY5CY7GE.js → chunk.7BIPZTJB.js} +1 -1
  33. package/dist/preview/chunk.7VADSNPZ.js +1 -0
  34. package/dist/preview/{chunk.IR4OW67N.js → chunk.7VP6Y6D2.js} +1 -1
  35. package/dist/preview/{chunk.C437FVD7.js → chunk.7ZKBYXUM.js} +1 -1
  36. package/dist/preview/chunk.AK7NGFEX.js +6 -0
  37. package/dist/preview/{chunk.FHHVW2WB.js → chunk.ANS2IEEV.js} +1 -1
  38. package/dist/preview/{chunk.LKK5YF2H.js → chunk.B6JRTW3A.js} +1 -1
  39. package/dist/preview/chunk.BCQWAFGD.js +1 -0
  40. package/dist/preview/{chunk.SOMRYDDH.js → chunk.BFAFCVL4.js} +1 -1
  41. package/dist/preview/chunk.BGAC3B7X.js +1 -0
  42. package/dist/preview/chunk.BMENTGDC.js +21 -0
  43. package/dist/preview/chunk.BOCVLC7X.js +1 -0
  44. package/dist/preview/{chunk.IMKD6QQG.js → chunk.BUVTUAB5.js} +1 -1
  45. package/dist/preview/chunk.BXBEGMPO.js +22 -0
  46. package/dist/preview/{chunk.ZYNC73DJ.js → chunk.BZ7QWHAE.js} +1 -1
  47. package/dist/preview/{chunk.AB4RZSYW.js → chunk.C2C3AXGI.js} +16 -16
  48. package/dist/preview/chunk.CBXS23YH.js +23 -0
  49. package/dist/preview/chunk.CEQQIW7Z.js +1 -0
  50. package/dist/preview/chunk.CEVGND3Y.js +6 -0
  51. package/dist/preview/{chunk.ZDUTEM3Z.js → chunk.CTASTRQN.js} +1 -1
  52. package/dist/preview/chunk.CU2WCYMK.js +1 -0
  53. package/dist/preview/{chunk.SPCAMQJE.js → chunk.CVPMSPCH.js} +1 -1
  54. package/dist/preview/chunk.DEHIR4EG.js +1 -0
  55. package/dist/preview/chunk.DPJNGFEZ.js +4 -0
  56. package/dist/preview/chunk.DQFHIJFN.js +1 -0
  57. package/dist/preview/chunk.DSYP43NN.js +1 -0
  58. package/dist/preview/chunk.DTCAUPLC.js +1 -0
  59. package/dist/preview/{chunk.7Q43N5JS.js → chunk.DZFM6GSY.js} +1 -1
  60. package/dist/preview/chunk.E3UL4MCD.js +35 -0
  61. package/dist/preview/chunk.E4VRRWFP.js +1 -0
  62. package/dist/preview/{chunk.6YDC6IDA.js → chunk.E7EWNWAN.js} +1 -1
  63. package/dist/preview/chunk.EG7OOJH5.js +1 -0
  64. package/dist/preview/{chunk.J6KNEI5R.js → chunk.EMFOMSMI.js} +1 -1
  65. package/dist/preview/{chunk.5THLLSS4.js → chunk.EQ4OODGO.js} +1 -1
  66. package/dist/preview/{chunk.P6TZGR3A.js → chunk.ES63XSIM.js} +1 -1
  67. package/dist/preview/chunk.EUAO4QNV.js +1 -0
  68. package/dist/preview/{chunk.O2W5JTWA.js → chunk.EXYCN4WI.js} +1 -1
  69. package/dist/preview/chunk.F4VB6Q2W.js +1 -0
  70. package/dist/preview/chunk.F7672TKJ.js +1 -0
  71. package/dist/preview/chunk.FA42HCPW.js +1 -0
  72. package/dist/preview/{chunk.L6FGKJ5H.js → chunk.FBILPNGH.js} +1 -1
  73. package/dist/preview/chunk.FBJAQPZ6.js +1 -0
  74. package/dist/preview/{chunk.FDWRH5P2.js → chunk.FDZE5LTJ.js} +2 -2
  75. package/dist/preview/{chunk.FOSY7MZF.js → chunk.FFOD5B4B.js} +1 -1
  76. package/dist/preview/{chunk.XSWR5LI4.js → chunk.FIFUMX5X.js} +1 -1
  77. package/dist/preview/{chunk.RFVOXX3P.js → chunk.FK722SHI.js} +1 -1
  78. package/dist/preview/chunk.FV72U33M.js +1 -0
  79. package/dist/preview/chunk.FXT5CN32.js +19 -0
  80. package/dist/preview/chunk.GAFMWOME.js +1 -0
  81. package/dist/preview/{chunk.PTQPS2FJ.js → chunk.GEFXU4VO.js} +1 -1
  82. package/dist/preview/chunk.GG47EIKO.js +1 -0
  83. package/dist/preview/{chunk.5M34BJIQ.js → chunk.GME63ZHI.js} +1 -1
  84. package/dist/preview/{chunk.IJ3YDBWI.js → chunk.GNEOSHQ6.js} +1 -1
  85. package/dist/preview/{chunk.N2FNHRI2.js → chunk.HOCD7KIR.js} +1 -1
  86. package/dist/preview/chunk.HSSIMVVM.js +1 -0
  87. package/dist/preview/{chunk.S2DOVJRL.js → chunk.I2737CPF.js} +1 -1
  88. package/dist/preview/chunk.I4Z7HVRT.js +1 -0
  89. package/dist/preview/{chunk.F5VEHAP2.js → chunk.IAEHUSQQ.js} +1 -1
  90. package/dist/preview/{chunk.7E4CSXBT.js → chunk.IGK7EZCX.js} +1 -1
  91. package/dist/preview/chunk.INHS3KTK.js +1 -0
  92. package/dist/preview/{chunk.LGRQDILY.js → chunk.IWYMKGZZ.js} +1 -1
  93. package/dist/preview/{chunk.3RFAUIGT.js → chunk.J2MM6BUW.js} +1 -1
  94. package/dist/preview/{chunk.7IGD2K4M.js → chunk.J7W2OFHY.js} +1 -1
  95. package/dist/preview/chunk.JMXXA4YG.js +1 -0
  96. package/dist/preview/chunk.JMYUQNXN.js +6 -0
  97. package/dist/preview/chunk.JO2X52D4.js +1 -0
  98. package/dist/preview/{chunk.2QQ37RCZ.js → chunk.JXNVNFV4.js} +1 -1
  99. package/dist/preview/chunk.K6DFXDPZ.js +1 -0
  100. package/dist/preview/{chunk.NSO6RUKW.js → chunk.KACSYPEV.js} +1 -1
  101. package/dist/preview/{chunk.ZMWAZACO.js → chunk.KBPJ7X7W.js} +1 -1
  102. package/dist/preview/chunk.KF27ME27.js +1 -0
  103. package/dist/preview/{chunk.35E75QJ7.js → chunk.KSIEO5W7.js} +1 -1
  104. package/dist/preview/chunk.L25DCT5S.js +1 -0
  105. package/dist/preview/{chunk.3KUYB5ZT.js → chunk.LETAQTLJ.js} +1 -1
  106. package/dist/preview/{chunk.44ZHHPPJ.js → chunk.LGRVEHXT.js} +2 -2
  107. package/dist/preview/chunk.LINSO5PN.js +1 -0
  108. package/dist/preview/{chunk.LVD3V77M.js → chunk.LLIURXFP.js} +1 -1
  109. package/dist/preview/{chunk.3IZEZPJB.js → chunk.LSN2IPAI.js} +1 -1
  110. package/dist/preview/chunk.M2JCFNHJ.js +1 -0
  111. package/dist/preview/{chunk.B3WVCSW5.js → chunk.M5FP4Y4Q.js} +1 -1
  112. package/dist/preview/{chunk.CPYBJNHP.js → chunk.M6ZN2KUO.js} +1 -1
  113. package/dist/preview/chunk.MODLZJD4.js +25 -0
  114. package/dist/preview/chunk.MWGZKZD6.js +1 -0
  115. package/dist/preview/{chunk.64FCAUAJ.js → chunk.NJRLJEJY.js} +1 -1
  116. package/dist/preview/chunk.NYLKG25K.js +4 -0
  117. package/dist/preview/{chunk.CD6YWH6T.js → chunk.OEIWIZCP.js} +1 -1
  118. package/dist/preview/{chunk.ZJFXM3LE.js → chunk.OJY7VJ7D.js} +1 -1
  119. package/dist/preview/chunk.OMT4QUZY.js +23 -0
  120. package/dist/preview/{chunk.R2TSTDS3.js → chunk.ONYBW45K.js} +1 -1
  121. package/dist/preview/chunk.OO2OP76C.js +1 -0
  122. package/dist/preview/{chunk.G3Q5IMM3.js → chunk.OOSIKCOS.js} +1 -1
  123. package/dist/preview/{chunk.7VQ3C7F4.js → chunk.OPTYYIGC.js} +1 -1
  124. package/dist/preview/{chunk.TUCSUZNO.js → chunk.OTV5XTBB.js} +1 -1
  125. package/dist/preview/{chunk.74B6KQF4.js → chunk.OWFS2YDQ.js} +1 -1
  126. package/dist/preview/{chunk.CXDGE5ZS.js → chunk.OWO3OV62.js} +1 -1
  127. package/dist/preview/{chunk.BUQKRXI6.js → chunk.PAGEGBUD.js} +1 -1
  128. package/dist/preview/{chunk.CGQ6KXVK.js → chunk.PDDIQ6PK.js} +1 -1
  129. package/dist/preview/{chunk.T3KNLP7C.js → chunk.PFQBCHQA.js} +1 -1
  130. package/dist/preview/{chunk.MH46V556.js → chunk.PPSYUOH7.js} +1 -1
  131. package/dist/preview/{chunk.HJS3LTSR.js → chunk.PSQYDCVM.js} +1 -1
  132. package/dist/preview/chunk.QDVGHI7R.js +1 -0
  133. package/dist/preview/chunk.QFHWG4LN.js +1 -0
  134. package/dist/preview/chunk.QGIM2WAY.js +1 -0
  135. package/dist/preview/chunk.QHMHUL6B.js +3 -0
  136. package/dist/preview/chunk.QOS5T46W.js +1 -0
  137. package/dist/preview/{chunk.KHAVEYT7.js → chunk.QPF4KSAW.js} +1 -1
  138. package/dist/preview/chunk.QQAZQDRW.js +1 -0
  139. package/dist/preview/chunk.QU52E5RG.js +3 -0
  140. package/dist/preview/{chunk.CS72MISN.js → chunk.QWNSHISU.js} +1 -1
  141. package/dist/preview/chunk.RSMCTI2N.js +1 -0
  142. package/dist/preview/chunk.RWIN3POV.js +1 -0
  143. package/dist/preview/chunk.SSF47GUY.js +1 -0
  144. package/dist/preview/chunk.T6DPWW2K.js +3 -0
  145. package/dist/preview/chunk.TA36WBHK.js +1 -0
  146. package/dist/preview/chunk.TGEL6EUA.js +1 -0
  147. package/dist/preview/chunk.TTGKX7LT.js +1 -0
  148. package/dist/preview/chunk.TXHYGFIZ.js +1 -0
  149. package/dist/preview/chunk.U3ED7W2U.js +1 -0
  150. package/dist/preview/chunk.U3HERHAI.js +88 -0
  151. package/dist/preview/chunk.U6QXLNHF.js +15 -0
  152. package/dist/preview/{chunk.FXG5AJF6.js → chunk.U6TEW6YD.js} +1 -1
  153. package/dist/preview/chunk.UJPX3BUV.js +1 -0
  154. package/dist/preview/chunk.V5I4GZEY.js +1 -0
  155. package/dist/preview/{chunk.XTTESA7X.js → chunk.V7W5AQKL.js} +1 -1
  156. package/dist/preview/{chunk.IFBGYFS4.js → chunk.VGHO3VCB.js} +1 -1
  157. package/dist/preview/{chunk.2TZSLREX.js → chunk.VKZIEZ5C.js} +2 -2
  158. package/dist/preview/chunk.VT2YGDK2.js +1 -0
  159. package/dist/preview/{chunk.ZTN7BS5O.js → chunk.W4YDPHCQ.js} +1 -1
  160. package/dist/preview/{chunk.NKYYDFIX.js → chunk.W53YNBSM.js} +1 -1
  161. package/dist/preview/chunk.WAB3L3ZI.js +1 -0
  162. package/dist/preview/chunk.WSDJPXJD.js +1 -0
  163. package/dist/preview/chunk.WSO7JOW5.js +1 -0
  164. package/dist/preview/{chunk.BU5PVRX7.js → chunk.WVLEGCRI.js} +1 -1
  165. package/dist/preview/chunk.XK65Y2KX.js +1 -0
  166. package/dist/preview/chunk.XMQG2PSM.js +50 -0
  167. package/dist/preview/{chunk.QO5RXOCS.js → chunk.XOE4KNP2.js} +2 -2
  168. package/dist/preview/chunk.YIPXZUTT.js +2 -0
  169. package/dist/preview/chunk.YNEHJWJV.js +2 -0
  170. package/dist/preview/{chunk.S3EEY7T3.js → chunk.YXEO3Y65.js} +1 -1
  171. package/dist/preview/chunk.Z274CL7J.js +1 -0
  172. package/dist/preview/{chunk.NBVPWLRY.js → chunk.Z7Y3R3YR.js} +1 -1
  173. package/dist/preview/{chunk.DJMSXXP4.js → chunk.ZBVYD4OX.js} +1 -1
  174. package/dist/preview/{chunk.4O3C2LJF.js → chunk.ZD7T234N.js} +1 -1
  175. package/dist/preview/{chunk.TY74U3EI.js → chunk.ZQR2SN65.js} +1 -1
  176. package/dist/preview/chunk.ZR2TP3BF.js +111 -0
  177. package/dist/preview/chunk.ZRBGYXAO.js +6 -0
  178. package/dist/preview/index.html +56 -54
  179. package/dist/preview/page.js +2 -2
  180. package/dist/preview/splash.js +17 -14
  181. package/package.json +6 -6
  182. package/dist/preview/chunk.2P34ML3O.js +0 -111
  183. package/dist/preview/chunk.2UW5CRHF.js +0 -1
  184. package/dist/preview/chunk.2YMO7ZVX.js +0 -1
  185. package/dist/preview/chunk.33ULA3CG.js +0 -1
  186. package/dist/preview/chunk.3CJLAJXP.js +0 -25
  187. package/dist/preview/chunk.3IJSB5ET.js +0 -1
  188. package/dist/preview/chunk.3KO35VN4.js +0 -1
  189. package/dist/preview/chunk.3L37FY3G.js +0 -4
  190. package/dist/preview/chunk.3WP66LB5.js +0 -1
  191. package/dist/preview/chunk.4GJ7F4SP.js +0 -35
  192. package/dist/preview/chunk.4IJTPV5X.js +0 -1
  193. package/dist/preview/chunk.4JFBLVXJ.js +0 -1
  194. package/dist/preview/chunk.4PCVQEVI.js +0 -1
  195. package/dist/preview/chunk.5FQSYMAE.js +0 -1
  196. package/dist/preview/chunk.5NCLZ4NZ.js +0 -1
  197. package/dist/preview/chunk.5YNLFOBJ.js +0 -5
  198. package/dist/preview/chunk.77XQEDT5.js +0 -1
  199. package/dist/preview/chunk.7HPQI5SY.js +0 -1
  200. package/dist/preview/chunk.A4VA3DU5.js +0 -1
  201. package/dist/preview/chunk.ABSY3UZF.js +0 -1
  202. package/dist/preview/chunk.ARHAD5IS.js +0 -1
  203. package/dist/preview/chunk.BOC2EOGB.js +0 -9
  204. package/dist/preview/chunk.BR6TINGU.js +0 -1
  205. package/dist/preview/chunk.CDEAAWPS.js +0 -1
  206. package/dist/preview/chunk.CXJJB3MK.js +0 -1
  207. package/dist/preview/chunk.CXLQPE4J.js +0 -1
  208. package/dist/preview/chunk.DA4RSHLW.js +0 -1
  209. package/dist/preview/chunk.DJPNVXBQ.js +0 -6
  210. package/dist/preview/chunk.DJVHKBEI.js +0 -1
  211. package/dist/preview/chunk.DVSTLVIH.js +0 -15
  212. package/dist/preview/chunk.E5WJSTOV.js +0 -1
  213. package/dist/preview/chunk.FEGSYSA7.js +0 -1
  214. package/dist/preview/chunk.HJUXC5GM.js +0 -1
  215. package/dist/preview/chunk.HNMSYQRA.js +0 -1
  216. package/dist/preview/chunk.HWLRKOI3.js +0 -1
  217. package/dist/preview/chunk.IHUMKFYH.js +0 -10
  218. package/dist/preview/chunk.IQ54QTA5.js +0 -1
  219. package/dist/preview/chunk.IQC3GOXO.js +0 -1
  220. package/dist/preview/chunk.ISN2QTVL.js +0 -2
  221. package/dist/preview/chunk.J24YPQ5I.js +0 -5
  222. package/dist/preview/chunk.J545NAMY.js +0 -1
  223. package/dist/preview/chunk.K2HDEL7I.js +0 -1
  224. package/dist/preview/chunk.K3JARAWU.js +0 -1
  225. package/dist/preview/chunk.KROR65KD.js +0 -2
  226. package/dist/preview/chunk.KV7GZBJ6.js +0 -50
  227. package/dist/preview/chunk.L7NJLZWV.js +0 -1
  228. package/dist/preview/chunk.LON75VHP.js +0 -1
  229. package/dist/preview/chunk.LQWVJQ5X.js +0 -18
  230. package/dist/preview/chunk.M5W2RHC6.js +0 -1
  231. package/dist/preview/chunk.M6BTLH24.js +0 -1
  232. package/dist/preview/chunk.MAGKI4PD.js +0 -1
  233. package/dist/preview/chunk.MD36ZSM5.js +0 -74
  234. package/dist/preview/chunk.MFZJVHWP.js +0 -1
  235. package/dist/preview/chunk.MHTA4HYB.js +0 -19
  236. package/dist/preview/chunk.N2YM247R.js +0 -1
  237. package/dist/preview/chunk.N35SJWAM.js +0 -1
  238. package/dist/preview/chunk.NJSK3UO2.js +0 -6
  239. package/dist/preview/chunk.OHMHPTEW.js +0 -1
  240. package/dist/preview/chunk.PV2I4UPH.js +0 -1
  241. package/dist/preview/chunk.QFQSSZN7.js +0 -1
  242. package/dist/preview/chunk.RSS6OHXG.js +0 -1
  243. package/dist/preview/chunk.SBCAYTMT.js +0 -1
  244. package/dist/preview/chunk.SMTGRCMG.js +0 -3
  245. package/dist/preview/chunk.TCZIZ2PU.js +0 -1
  246. package/dist/preview/chunk.U74PTRHJ.js +0 -1
  247. package/dist/preview/chunk.UAORKZLO.js +0 -1
  248. package/dist/preview/chunk.UDVTPI2W.js +0 -1
  249. package/dist/preview/chunk.UETLP5KC.js +0 -1
  250. package/dist/preview/chunk.UHI3X2YD.js +0 -1
  251. package/dist/preview/chunk.UL62ELNR.js +0 -1
  252. package/dist/preview/chunk.VRYSZYAD.js +0 -1
  253. package/dist/preview/chunk.VUZFLDOX.js +0 -1
  254. package/dist/preview/chunk.X2NGFOAF.js +0 -1
  255. package/dist/preview/chunk.XE762VL2.js +0 -2
  256. package/dist/preview/chunk.Y2RZ5B4U.js +0 -1
  257. package/dist/preview/chunk.YKMBXMZE.js +0 -1
  258. package/dist/preview/chunk.Z34KASY7.js +0 -1
  259. package/dist/preview/chunk.ZMGKWMID.js +0 -1
  260. package/dist/preview/chunk.ZT5YQSSP.js +0 -21
  261. package/dist/preview/chunk.ZZM75ZTN.js +0 -4
@@ -1 +0,0 @@
1
- import{b as P,c as m,d as k}from"./chunk.CGQ6KXVK.js";import"./chunk.3WP66LB5.js";import"./chunk.A4VA3DU5.js";import{b as v,c as w,d as S,e as x,f as M}from"./chunk.B3WVCSW5.js";import"./chunk.J24YPQ5I.js";import"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";var O=new Set(["input","select","textarea"]),g=r=>r.namespaceURI==="http://www.w3.org/1999/xhtml"&&O.has(r.localName),N=r=>r.localName==="select"||r.type==="checkbox"||r.type==="radio",E=r=>r.type==="checkbox"||r.type==="radio"?!r.checked:r.localName!=="select"&&r.value==="";function h(r){return r.type==="checkbox"||r.type==="radio"?`checked:${r.checked}`:r.localName==="select"&&r.multiple?`selected:${[...r.selectedOptions].map(n=>n.value).join("\0")}`:`value:${r.value}`}function F(r=n=>n.isTrusted){let n=new WeakMap,d=new WeakSet,o=new WeakMap,i={heard(e,t){if(!(!g(t)||!r(e))&&(e.type==="input"||e.type==="change"&&N(t))&&((N(t)||E(t))&&d.delete(t),E(t)&&o.delete(t),n.set(t,h(t)),t.type==="radio"&&t.name)){let c=t.getRootNode();for(let u of c.querySelectorAll?.('input[type="radio"]')??[])u.name===t.name&&n.set(u,h(u))}},filled(e){n.delete(e),o.delete(e),g(e)&&!E(e)?d.add(e):d.delete(e)},press(e,t,c){if(!r(e))return;let u=t.closest("[data-act]");if(!u||!w(u))return;let l=e.type==="keydown"?e.key:void 0;if(!(e.type!=="click"&&!((l==="Enter"||l===" ")&&t===u&&!v(u))))return i.collect(u,c)},collect(e,t){if(!e.hasAttribute("data-act")||!t.contains(e))return;let c=e.closest("[data-record]"),u=e.closest("fieldset, [role='group']")??t,l=[];for(let a of u.querySelectorAll("input[name], select[name], textarea[name]")){let s=a,f=!d.has(s)&&n.get(s)===h(s);if(s.type==="radio"){if(!s.checked)continue;l.push({name:s.name,value:s.value,typed:f,empty:!1,chosen:!0});continue}if(s.localName==="select"){l.push({name:s.name,value:s.value,typed:f,empty:s.value===""&&!f,chosen:!0});continue}if(s.type==="checkbox"){l.push({name:s.name,value:s.checked,typed:f,empty:!s.checked&&!d.has(s)&&!f});continue}let R=(s.type==="number"||s.type==="range")&&s.value!==""&&Number.isFinite(s.valueAsNumber)?s.valueAsNumber:s.value,A=f?o.get(s):void 0;l.push({name:s.name,value:R,typed:f,empty:s.value===""&&!f,...A?{from:A}:{}})}return{as:e.getAttribute("data-act")??"",...c&&t.contains(c)?{record:c.getAttribute("data-record")}:{},fields:l}},prefilled(e,t){d.delete(e),o.set(e,t),n.set(e,h(e))}};return i}var b=new WeakMap,L=(r,n)=>{n.tab&&r.removeAttribute("tabindex"),n.role&&r.getAttribute("role")==="button"&&r.removeAttribute("role"),r.removeAttribute("data-graview-press"),b.delete(r)};function W(r){for(let n of r.querySelectorAll("[data-act], [data-graview-press], [role], [aria-pressed], [aria-expanded]")){let d=b.get(n),o=w(n)&&!v(n)&&!g(n),i=!o&&S(n,d?.role?null:n.getAttribute("role"));if(d&&(d.bound!==o||!(o||i))&&L(n,d),(o||i)&&!b.has(n)){let e=!x(n),t=o&&M(n);e&&n.setAttribute("tabindex","0"),t&&n.setAttribute("role","button"),n.setAttribute("data-graview-press",""),b.set(n,{tab:e,role:t,bound:o})}}}var y=new WeakSet;function V(r){for(let n of r.querySelectorAll("svg")){let d=n.hasAttribute("role")||n.hasAttribute("aria-label")||n.hasAttribute("aria-labelledby")||[...n.children].some(e=>e.localName==="title"),o=n.hasAttribute("tabindex")||n.hasAttribute("data-graview-link")||n.hasAttribute("data-graview-press")||n.querySelector("[tabindex], [data-graview-link], [data-graview-press], a")!==null,i=!d&&!o;i&&!y.has(n)&&!n.hasAttribute("aria-hidden")?(n.setAttribute("aria-hidden","true"),y.add(n)):!i&&y.has(n)&&(n.removeAttribute("aria-hidden"),y.delete(n))}}var j=1e3;function I(r){let n=r.getAttribute("data-debounce")?.trim(),d=n?Number(n):Number.NaN;return Number.isFinite(d)?Math.min(1e4,Math.max(250,Math.round(d))):j}function B(r){let n=r.trusted??(e=>e.isTrusted),d=r.timers??{set:(e,t)=>setTimeout(e,t),clear:e=>clearTimeout(e)},o=new Map,i=(e,t)=>{let c=o.get(e);c&&d.clear(c.handle),o.delete(e);let u=r.reader.collect(e,t);u&&r.save(u,e)};return{heard(e,t,c){if(!g(t)||!n(e)||!t.hasAttribute("data-act"))return;let u=t.getAttribute("data-save");if(e.type==="input"&&u==="input"){let l=o.get(t);l&&d.clear(l.handle),o.set(t,{root:c,handle:d.set(()=>i(t,c),I(t))})}else e.type==="change"&&(u==="change"||u==="input"&&o.has(t))&&i(t,c)},flush(){for(let[e,{root:t}]of[...o])i(e,t)},get waiting(){return o.size}}}var H=new Set(["text","search","email","url","tel","number"]);function D(r,n,d,o){for(let i of r.querySelectorAll("input[data-prefill], textarea[data-prefill]")){let e=i;if(d.has(e))continue;let t=e.getAttribute("data-prefill")??"";if(t===""||e.getAttribute("name")!==t||e.localName==="input"&&!H.has(e.type))continue;if(e.value!==""){d.add(e);continue}let u=[...(e.closest("fieldset, [role='group']")??r).querySelectorAll("[data-act]")],l=e.closest("[data-record]"),a=new Set(u.map(p=>p.closest("[data-record]")?.getAttribute("data-record")).filter(p=>typeof p=="string")),s=l&&r.contains(l)?l.getAttribute("data-record"):a.size===1?[...a][0]:void 0;if(!s)continue;let f=o({record:s,field:t,acts:u.map(p=>p.getAttribute("data-act")??"")});if(f!==void 0){if(e.value=f,d.add(e),e.value!==f){e.value="";continue}n.prefilled(e,{record:s,field:t,value:f})}}}function _(r,n,d,o){let i=k(n,o.as);if(!i)return m("undeclared",`This view may not ask for \u201C${o.as}\u201D: its manifest does not name it.`);let e=r.allMutations().find(a=>a.name===i.act);if(!e)return m("unknown-act","There is no act by that name here.");let t={};if(o.record!==void 0){let a=i.record??e.subject?.arg;if(!a)return m("unbound",`\u201C${o.as}\u201D is not done to a record.`);if(!d.has(o.record))return m("unbound","That press is bound to a record this view was not shown.");t[a]=o.record}for(let[a,s]of Object.entries(i.constants??{})){if(a in t)return m("malformed",`\u201C${a}\u201D is both the bound record and a constant.`);t[a]=s}let c=e.input?.shape??{},u=new Set(Object.keys(c)),l=new Set;for(let a of o.fields)if(!(!u.has(a.name)||a.name in t)){if(l.has(a.name))return m("malformed",`Two fields here are called \u201C${a.name}\u201D.`);if(l.add(a.name),a.typed&&a.chosen){let s=P(c[a.name])?.find(f=>String(f)===String(a.value));if(s!==void 0)t[a.name]=s;else if(typeof a.value=="string"&&d.has(a.value))t[a.name]=a.value;else return m("untyped",`\u201C${a.name}\u201D was a choice among the view's own words, not one this app declares, so it was not sent.`)}else{if(a.typed&&a.from&&!(o.record===a.from.record&&a.name===a.from.field&&T(r,i,a.from.record,a.from.field)))return m("untyped",`\u201C${a.name}\u201D was filled in from a record for an act that writes it back there, not for this one, so it was not sent.`);if(a.typed&&a.from&&String(a.value)===a.from.value)t[a.name]=r.graph.getNode(a.from.record)?.[a.name]??a.value;else if(a.typed)t[a.name]=a.value;else if(!a.empty)return m("untyped",`\u201C${a.name}\u201D was filled in by the view, not typed by you, so it was not sent.`)}}return{ok:!0,name:i.act,args:t}}function T(r,n,d,o){let i=r.allMutations().find(u=>u.name===n.act),e=i?.subject;if(!i||!e||(n.record??e.arg)!==e.arg||o===e.arg||Object.hasOwn(n.constants??{},o)||!Object.hasOwn(i.input.shape??{},o)||Object.keys(i.writesOther??{}).length>0)return!1;let t=r.graph.getNode(d)?.kind,c=t===void 0?void 0:r.schema.tryDefinition(t);return!c||e.kinds!=="*"&&!e.kinds.includes(t)||!Object.hasOwn(c.fields.shape??{},o)?!1:i.writes?.includes(o)??!1}function C(r,n,d,o,i){if(!o.has(i.record))return;let e=r.seenBy(n).graph.getNode(i.record);if(!e||!i.acts.some(u=>{let l=k(d,u);if(!l||!T(r,l,i.record,i.field))return!1;let a=r.allMutations().find(s=>s.name===l.act).subject;return r.permits({name:l.act,args:{[a.arg]:i.record}},n).ok}))return;let c=e[i.field];return typeof c=="string"?c:typeof c=="number"&&Number.isFinite(c)?String(c):void 0}export{j as SAVE_DEBOUNCE_MS,F as createPressReader,B as createSaver,D as fillPrefills,_ as judgePress,W as markPresses,C as prefillOf,V as quietPictures,I as saveDebounceOf,T as writesBack};
@@ -1 +0,0 @@
1
- import{E as x,P as $,R as N,S as O,U as W,V as I,Z as p}from"./chunk.J24YPQ5I.js";var h=864e5,z=/^(\d{4})-(\d{2})-(\d{2})/,y=e=>String(e).padStart(2,"0"),D=e=>new Date(e).toISOString().slice(0,10),f=e=>Date.UTC(+e.slice(0,4),+e.slice(5,7)-1,+e.slice(8,10)),b=(e,t)=>D(f(e)+t*h),F=e=>new Date(f(e)).getUTCDay();function m(e,t,r){if(!(t>=1&&t<=12&&r>=1&&r<=31))return;let i=`${String(e).padStart(4,"0")}-${y(t)}-${y(r)}`;return D(f(i))===i?i:void 0}function E(e=new Date){let t=N();return t?W(e.getTime(),t):{day:`${e.getFullYear()}-${y(e.getMonth()+1)}-${y(e.getDate())}`,minutes:e.getHours()*60+e.getMinutes()}}var w=e=>/T\d\d:\d\d(:[\d.]+)?(Z|[+-]\d\d:?\d\d)$/.test(e);function g(e){if(typeof e!="string")return;if(w(e)){let i=new Date(e);return Number.isNaN(i.getTime())?void 0:E(i)}let t=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2}))?/.exec(e);if(!t||!m(Number(t[1]),Number(t[2]),Number(t[3])))return;let r=e.slice(0,10);return t[4]===void 0?{day:r}:{day:r,minutes:Number(t[4])*60+Number(t[5])}}function A(e,t){if(!t.time)return e.day;let r=e.minutes??9*60;if(!t.instant)return`${e.day}T${y(Math.floor(r/60))}:${y(r%60)}`;let i=N(),[,n,o,d]=z.exec(e.day);return(i?new Date(I(e.day,r,i)):new Date(Number(n),Number(o)-1,Number(d),Math.floor(r/60),r%60)).toISOString().replace(/\.\d{3}Z$/,"Z")}function C(e,t=new Date){let r=O(),i=r;try{i=new Intl.DateTimeFormat(e??x,{timeZoneName:"short",timeZone:r}).formatToParts(t).find(n=>n.type==="timeZoneName")?.value??r}catch{i=r}return{zone:r,short:i}}function H(e,t,r,i){let n=g(t);if(!n)return r;let o=e===void 0?void 0:g(e),d=r===void 0?void 0:g(r),s=u=>f(u.day)+(u.minutes??0)*6e4,a=(u,l)=>{let c=s(u)+l;return{day:D(c),...i.time?{minutes:Math.round(c%h/6e4)}:{}}};return o&&d?A(a(d,s(n)-s(o)),i):d&&s(d)>=s(n)?r:i.time?A(a(n,36e5),i):r}var Y=/^(start|starts|startsAt|startsOn|startAt|begins|from|opens|checkIn)$/i,B=/^(end|ends|endsAt|endsOn|endAt|until|to|finish|finishes|closes|through|checkOut)$/i;function Z(e,t={}){let r=(t.start&&e.includes(t.start)?t.start:void 0)??e.find(n=>Y.test(n)),i=(t.end&&e.includes(t.end)?t.end:void 0)??e.find(n=>n!==r&&B.test(n));return r&&i?{start:r,end:i}:void 0}var k=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],K=["sun","mon","tue","wed","thu","fri","sat"],S="(jan(?:uary)?|feb(?:ruary)?|mar(?:ch)?|apr(?:il)?|may|june?|july?|aug(?:ust)?|sept?(?:ember)?|oct(?:ober)?|nov(?:ember)?|dec(?:ember)?)",R="(sun(?:day)?|mon(?:day)?|tue(?:s|sday)?|wed(?:nesday)?|thu(?:r|rs|rsday)?|fri(?:day)?|sat(?:urday)?)",_=e=>k.indexOf(e.slice(0,3))+1,M=e=>e===void 0?void 0:e.length===2?2e3+Number(e):Number(e);function U(e){try{let t=new Intl.DateTimeFormat(e,{month:"numeric",day:"numeric"}).formatToParts(0).map(r=>r.type);return t.indexOf("month")<t.indexOf("day")}catch{return!0}}function v(e){let t=(n,o)=>({minutes:o,rest:`${e.slice(0,n.index)} ${e.slice(n.index+n[0].length)}`}),r=/\b(noon|midday)\b/.exec(e);if(r)return t(r,12*60);if(r=/\bmidnight\b/.exec(e),r)return t(r,0);if(r=/\b(\d{1,2})(?::(\d{2}))?\s*([ap])\.?m?\.?(?=\s|$)/.exec(e),r){let n=Number(r[1]),o=Number(r[2]??0);return n<1||n>12||o>59?{rest:e,bad:!0}:t(r,(n%12+(r[3]==="p"?12:0))*60+o)}if(r=/\b(\d{1,2}):(\d{2})\b/.exec(e),r){let n=Number(r[1]),o=Number(r[2]);return n>23||o>59?{rest:e,bad:!0}:t(r,n*60+o)}if(r=/\bat\s+(\d{1,2})\b/.exec(e),r){let n=Number(r[1]);return n>23?{rest:e,bad:!0}:t(r,(n>=1&&n<=7?n+12:n)*60)}let i=/\b(morning|afternoon|evening|tonight)\b/.exec(e);return i?{minutes:{morning:9,afternoon:15,evening:18,tonight:20}[i[1]]*60,rest:i[1]==="tonight"?`${e.slice(0,i.index)} today ${e.slice(i.index+i[0].length)}`:`${e.slice(0,i.index)} ${e.slice(i.index+i[0].length)}`}:{rest:e}}function G(e,t,r){let i=e.replace(/\b(on|at|the|of|this)\b/g," ").replace(/\s+/g," ").trim();if(i==="")return null;if(i==="today"||i==="now")return t;if(i==="tomorrow"||i==="tmrw"||i==="tmr")return b(t,1);if(i==="yesterday")return b(t,-1);if(i==="next week")return b(t,7);let n=/^in (\d{1,3}) (day|days|week|weeks)$/.exec(i);if(n)return b(t,Number(n[1])*(n[2].startsWith("week")?7:1));if(n=new RegExp(`^(next )?${R}$`).exec(i),n){let u=(K.indexOf(n[2].slice(0,3))-F(t)+7)%7;return b(t,n[1]&&u===0?7:u)}if(n=/^(\d{4})-(\d{1,2})-(\d{1,2})$/.exec(i),n)return m(Number(n[1]),Number(n[2]),Number(n[3]));let o=i.replace(new RegExp(`^${R} `),"");n=new RegExp(`^(\\d{1,2})(?:st|nd|rd|th)? ${S}(?: (\\d{4}))?$`).exec(o);let d=n?{date:n[1],month:n[2],year:n[3]}:void 0;n=new RegExp(`^${S} (\\d{1,2})(?:st|nd|rd|th)?(?: (\\d{4}))?$`).exec(o);let s=d??(n?{date:n[2],month:n[1],year:n[3]}:void 0);if(s)return j(t,M(s.year),_(s.month),Number(s.date));if(n=/^(\d{1,2})[/.-](\d{1,2})(?:[/.-](\d{2}|\d{4}))?$/.exec(o),n){let[a,u]=[Number(n[1]),Number(n[2])],[l,c]=U(r)?[a,u]:[u,a];return j(t,M(n[3]),l,c)}}function j(e,t,r,i){if(t!==void 0)return m(t,r,i);let n=Number(e.slice(0,4)),o=m(n,r,i);return o===void 0?m(n+1,r,i):f(e)-f(o)>183*h?m(n+1,r,i):o}function X(e){if(typeof e=="number")return Number.isInteger(e)&&e>=1e3&&e<=9999?String(e):void 0;let t=String(e).trim().toLowerCase().replace(/,/g," ").replace(/\s+/g," ");if(/^\d{4}$/.test(t))return Number(t)>=1e3?t:void 0;let r=(n,o)=>o>=1&&o<=12&&Number(n)>=1e3?`${n}-${String(o).padStart(2,"0")}`:void 0,i=/^(\d{4})[-/](\d{1,2})$/.exec(t);if(i)return r(i[1],Number(i[2]));if(i=/^(\d{1,2})\/(\d{4})$/.exec(t),i)return r(i[2],Number(i[1]));if(i=new RegExp(`^${S}\\.? (\\d{4})$`).exec(t),i)return r(i[2],_(i[1]))}function q(e,t){let r=e.trim();if(w(r)){let s=g(r);if(s)return t.time?s:{day:s.day}}let i=e.toLowerCase().replace(/,/g," ").replace(/(\d{4}-\d{2}-\d{2})t(\d\d:\d\d)(:\d\d(\.\d+)?)?/,"$1 $2").replace(/\s+/g," ").trim();if(i==="")return;let n=v(i);if(n.bad)return;let o=G(n.rest,t.today,t.locale??x);if(o===void 0||o===null&&n.minutes===void 0)return;let d=o??t.base?.day??t.today;return t.time?{day:d,minutes:n.minutes??t.base?.minutes??9*60}:{day:d}}function J(e){if(e===void 0||e==="web"||e.startsWith("ai:")||e.startsWith("app:"))return;if(e==="api")return"via the API";if(e==="cli")return"via the command line";let[t,...r]=e.split(":"),i=r.join(":");return(t==="mcp"||t==="view")&&i?`via ${i}`:t==="mcp"?"via an agent's tools":`via ${e}`}var L=e=>{if(!e.currency)return{before:!0};try{let t=$(e.locale),r=new Intl.NumberFormat(t,{style:"currency",currency:e.currency}).formatToParts(1),i=r.findIndex(d=>d.type==="currency"),n=r.findIndex(d=>d.type==="integer"),o;try{o=new Intl.DisplayNames([t],{type:"currency"}).of(e.currency)}catch{}return{...i>=0?{symbol:r[i].value}:{},before:i<n,...o?{name:o}:{}}}catch{return{symbol:e.currency,before:!0}}};function Q(e){let t=e.locale;if(e.format==="money"){let{symbol:r,before:i,name:n}=L(e),o=p(1250,t,{minimumFractionDigits:2,maximumFractionDigits:2});return{...r?i?{prefix:r}:{suffix:r}:{},placeholder:o,hint:n?`in ${n}`:e.currency?`in ${e.currency}`:"an amount of money"}}return e.format==="percent"?{suffix:"%",placeholder:p(15,t),hint:"as a percent"}:{...e.unit?{suffix:e.unit}:{},placeholder:"",hint:e.unit?`in ${e.unit}`:"a number"}}function V(e,t){return e===void 0||!Number.isFinite(e)?"":t.format==="money"?p(e,t.locale,Number.isInteger(e)?{maximumFractionDigits:0}:{minimumFractionDigits:2,maximumFractionDigits:2}):t.format==="percent"?p(e*100,t.locale,{maximumFractionDigits:4}):p(e,t.locale,{maximumFractionDigits:6})}function ee(e){try{let t=new Intl.NumberFormat($(e)).formatToParts(12345.6);return{group:t.find(r=>r.type==="group")?.value??",",decimal:t.find(r=>r.type==="decimal")?.value??"."}}catch{return{group:",",decimal:"."}}}function ne(e,t){let{group:r,decimal:i}=ee(t),n=e.replace(/[\s  ']/g,"").replace(/[−–]/g,"-");if(i!=="."&&!n.includes(i)&&/^-?\d+\.\d{1,2}$/.test(n))return Number(n);if(r&&(n=n.split(r).join("")),i!=="."&&(n=n.replace(i,".")),!/^-?(\d+\.?\d*|\.\d+)$/.test(n))return;let o=Number(n);return Number.isFinite(o)?o:void 0}function te(e,t){let r=e.trim();if(r==="")return;let i=t?.format==="money"&&t.currency?L(t).symbol:void 0,n=r;i&&(n=n.split(i).join("")),t?.currency&&(n=n.replace(new RegExp(t.currency,"gi"),"")),n=n.replace(/^[$€£¥₹]|[$€£¥₹]$/g,""),/%\s*$/.test(n)&&(n=n.replace(/%\s*$/,"")),t?.unit&&t.format!=="money"&&(n=n.replace(new RegExp(`\\s*${t.unit.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*$`),""));let d=ne(n,t?.locale);if(d!==void 0)return t?.format==="percent"?d/100:d}var T=/^[0-9a-f]{32}$/,P=e=>e.replace(/-/g,"").toLowerCase();function re(e,t,r){if(!(!e||typeof e!="object"))for(let[i,n]of Object.entries(e)){if(!n||typeof n!="object")continue;if(n.system==="google-calendar"&&n.kind===t)return{connection:i,system:"google-calendar",words:"Google Calendar"};if(n.system!=="notion")continue;let d=(Array.isArray(n.sources)?n.sources:[{kind:n.kind,source:n.source}]).find(c=>c&&c.kind===t);if(!d)continue;let s=typeof d.source=="string"&&!T.test(P(d.source))?d.source:void 0,a=r.startsWith(`${t}:${i}-`)?r.slice(`${t}:${i}-`.length):void 0,u=typeof n.database=="string"?P(n.database):void 0,l=a&&T.test(a)?a:u&&T.test(u)?u:void 0;return{connection:i,system:"notion",words:s?`Notion \xB7 ${s}`:"Notion",...l?{href:`https://www.notion.so/${l}`}:{}}}}export{J as a,Q as b,V as c,te as d,E as e,w as f,g,A as h,C as i,H as j,Z as k,X as l,q as m,re as n};
@@ -1,6 +0,0 @@
1
- import{h as z,i as D,j as H}from"./chunk.5YNLFOBJ.js";import{a as P,b as A,c as p,d as W}from"./chunk.Q355UPFG.js";import"./chunk.HNMSYQRA.js";import"./chunk.44ZHHPPJ.js";import"./chunk.ZDUTEM3Z.js";import"./chunk.ARHAD5IS.js";import"./chunk.R2TSTDS3.js";import"./chunk.QSDBF7VL.js";import"./chunk.2PK335JQ.js";import"./chunk.MHTA4HYB.js";import"./chunk.BU5PVRX7.js";import"./chunk.3KUYB5ZT.js";import"./chunk.IMKD6QQG.js";import{a as C,b as O}from"./chunk.MB7LKKUD.js";import"./chunk.FXG5AJF6.js";import"./chunk.RFVOXX3P.js";import"./chunk.NKYYDFIX.js";import"./chunk.IR4OW67N.js";import"./chunk.6RZHKQP3.js";import"./chunk.N35SJWAM.js";import"./chunk.L7NJLZWV.js";import"./chunk.QO5RXOCS.js";import"./chunk.MIE4TJRW.js";import"./chunk.CXJJB3MK.js";import"./chunk.OJGHDWI6.js";import"./chunk.74B6KQF4.js";import"./chunk.WVUJXDXZ.js";import"./chunk.S2DOVJRL.js";import"./chunk.64FCAUAJ.js";import"./chunk.DA4RSHLW.js";import"./chunk.FOSY7MZF.js";import"./chunk.NBVPWLRY.js";import"./chunk.S3EEY7T3.js";import"./chunk.SPCAMQJE.js";import"./chunk.TUCSUZNO.js";import"./chunk.ZMWAZACO.js";import"./chunk.CD6YWH6T.js";import"./chunk.MD36ZSM5.js";import"./chunk.L6FGKJ5H.js";import{G as B,Ua as k,V as L}from"./chunk.3CJLAJXP.js";import"./chunk.SDO3U72B.js";import{sd as R}from"./chunk.J24YPQ5I.js";import"./chunk.FQLNBIQ5.js";import{b as E}from"./chunk.AJZBJBMO.js";var r=E(B(),1);var s=E(L(),1);function M(c){let e=document.activeElement;if(e!==null&&e!==document.body&&e!==document.documentElement&&e.isConnected)return;let n=c??document,o=n.querySelector("main")??n.querySelector("[data-graview-page]")??null,t=n.querySelector("[data-graview-page-title]")??o?.querySelector("h1, h2")??o;t instanceof HTMLElement&&(t.hasAttribute("tabindex")||t.setAttribute("tabindex","-1"),t.focus({preventScroll:!0}))}var I=1500;function N(c,e,n){let{store:o,principal:t}=c,l=z(o),g=(0,r.useMemo)(()=>P(o,t),[o,t,l]),w=(0,r.useRef)(n),[b,d]=(0,r.useState)(),[y,u]=(0,r.useState)("");(0,r.useEffect)(()=>{let a=A(o,t,w.current);w.current=o.batches().length,a&&(d({batch:a.batch,at:e,when:Date.now()}),u(""))},[o,t,l]),(0,r.useEffect)(()=>{d(a=>!a||a.at===e?a:Date.now()-a.when<I?{...a,at:e}:void 0)},[e]);let[x,i]=(0,r.useState)(null),v=(0,r.useCallback)(()=>{d(void 0),i(null)},[]),f=(0,r.useCallback)(()=>{i(null);try{let a=W(o,t);a&&u(`Took back \u201C${a.intent}\u201D`)}catch(a){i(a instanceof Error?a.message:String(a))}},[o,t]),S=g&&b?.batch===g.batch&&b.at===e?g:void 0;return{change:g,offered:S,close:v,takeBack:f,refused:x,said:y}}function ee({context:c,docked:e,at:n,since:o,compact:t=!1,className:l,size:g}){let{change:w,offered:b,close:d,takeBack:y,refused:u,said:x}=N(c,n,o),i=e?b:w,v=(0,r.useRef)(null),f=e&&(i!==void 0||u!==null);j(v,f),(0,r.useEffect)(()=>{if(!f)return;let m,h=()=>m=setTimeout(()=>v.current?.matches(":hover, :focus-within")?h():d(),1e4);return h(),()=>clearTimeout(m)},[f,i?.batch,u,d]);let S=x||(e&&i?p(i):""),a=e?{position:"fixed",inset:"auto",margin:0,padding:0,border:"none",background:"none",overflow:"visible",zIndex:R("toast"),width:"max-content",height:"auto",bottom:"calc(16px + env(safe-area-inset-bottom, 0px))",left:16,justifyItems:"start",color:"var(--graview-ink)",...f?{}:{display:"none"}}:{},T=i?(0,s.jsxs)("button",{type:"button","data-testid":"page-undo",title:`${p(i)} \u2014 \u2318Z or Ctrl+Z`,"aria-keyshortcuts":"Meta+Z Control+Z",onClick:m=>{let h=m.currentTarget.closest("[data-graview-face]");y(),requestAnimationFrame(()=>M(h))},...e?{style:U}:{className:H("graview-undo",l),...D(g),...t?{"data-compact":"","aria-label":p(i)}:{}},children:[(0,s.jsx)("span",{"aria-hidden":"true",children:"\u21B6"}),e?(0,s.jsx)("span",{style:K,children:p(i)}):(0,s.jsx)("span",{className:"graview-undo-words",children:t?"Undo":p(i)})]}):null;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{role:"status","aria-live":"polite",style:V,children:S}),(0,s.jsxs)("div",{ref:v,...e?{popover:"manual","data-graview-foot":"","data-graview-offstage":""}:{},"data-testid":e?"face-undo-dock":"page-undo-place",...e?{style:{...F,...a}}:{className:"graview-undo-place"},children:[e?null:(0,s.jsx)("style",{children:q}),e&&i?(0,s.jsxs)("div",{"data-testid":"page-undo-notice",style:Z,children:[T,(0,s.jsx)("button",{type:"button","data-testid":"page-undo-dismiss","aria-label":`Dismiss: ${p(i)}`,title:"Dismiss",onClick:m=>{let h=m.currentTarget.closest("[data-graview-face]");d(),requestAnimationFrame(()=>M(h))},style:$,children:"\xD7"})]}):T,u?(0,s.jsx)("span",{"data-testid":"page-undo-refused",role:"alert",className:"graview-undo-refused",...e?{style:{fontSize:"0.8125rem",lineHeight:1.4,color:"var(--graview-warn)",borderRadius:6,background:"var(--graview-float)",padding:"4px 8px"}}:{},children:u}):null]})]})}function j(c,e){(0,r.useLayoutEffect)(()=>{let n=c.current;if(!n||!e)return;if(typeof n.showPopover=="function"&&!k(n))try{n.showPopover()}catch{}let o=()=>n.parentElement?.closest("[data-embed-content]")??null,t=()=>{O(n,o()),dispatchEvent(new Event(C))};t(),addEventListener("resize",t),addEventListener("scroll",t,!0);let l=typeof ResizeObserver=="function"?new ResizeObserver(t):null;return l?.observe(n),()=>{if(l?.disconnect(),removeEventListener("resize",t),removeEventListener("scroll",t,!0),n.isConnected&&k(n))try{n.hidePopover()}catch{}dispatchEvent(new Event(C))}},[c,e])}var q=`:where(.graview-undo-place){display:grid;justify-items:end;gap:4px;max-width:100%;min-width:0}
2
- :where(.graview-undo){box-sizing:border-box;display:inline-flex;align-items:center;gap:6px;min-height:var(--graview-control-height,36px);max-width:min(100%,var(--graview-undo-widest,18rem));min-width:0;padding:0 14px;border-radius:999px;border:1px solid var(--graview-edge);background:var(--graview-float);color:var(--graview-ink);font:inherit;font-size:.875rem;cursor:pointer}
3
- :where(.graview-undo[data-size=sm]){--graview-control-height:30px}
4
- :where(.graview-undo[data-compact]){padding:0 10px}
5
- :where(.graview-undo-words){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
6
- :where(.graview-undo-refused){font-size:.8125rem;line-height:1.4;color:var(--graview-warn);border-radius:6px}`,F={display:"grid",justifyItems:"end",gap:4,maxWidth:"100%",minWidth:0},U={display:"inline-flex",alignItems:"center",gap:6,minHeight:36,maxWidth:"100%",minWidth:0,borderRadius:999,font:"inherit",fontSize:"0.875rem",cursor:"pointer",textAlign:"start",lineHeight:1.4,padding:"8px 4px 8px 14px",border:"none",background:"none",color:"inherit"},Z={display:"flex",alignItems:"center",gap:2,maxWidth:"100%",minWidth:0,paddingRight:6,borderRadius:"var(--graview-radius, 12px)",border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)"},$={flex:"0 0 auto",minWidth:28,minHeight:28,padding:0,border:"none",background:"none",boxShadow:"none",color:"var(--graview-ink-muted)",font:"inherit",fontSize:"1rem",cursor:"pointer"},K={minWidth:0,overflow:"hidden",overflowWrap:"anywhere",display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:4},V={position:"absolute",width:1,height:1,margin:-1,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap",border:0};export{ee as TakeBack};
@@ -1 +0,0 @@
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 k,e as w}from"./chunk.PV2I4UPH.js";import"./chunk.MIE4TJRW.js";import{x as y}from"./chunk.CXJJB3MK.js";import"./chunk.OJGHDWI6.js";import"./chunk.74B6KQF4.js";import"./chunk.DA4RSHLW.js";import"./chunk.FOSY7MZF.js";import"./chunk.NBVPWLRY.js";import"./chunk.S3EEY7T3.js";import{G as A,Ka as S,V as h,da as f}from"./chunk.3CJLAJXP.js";import{a as m}from"./chunk.SDO3U72B.js";import"./chunk.J24YPQ5I.js";import"./chunk.FQLNBIQ5.js";import{b as a}from"./chunk.AJZBJBMO.js";var o=a(A(),1);var s=a(h(),1),b=new WeakMap,g=t=>{let n=b.get(t);return n||b.set(t,n={ask:null,doors:[],heard:new Set}),n},u=t=>t.heard.forEach(n=>n()),v=0;function M(t,n){let e=g(t);e.ask=n?{...n,at:++v}:null,u(e)}var D=S(m(()=>(__graviewPreload(import.meta.url,["./chunk.PV2I4UPH.js","./chunk.FEGSYSA7.js","./chunk.KROR65KD.js","./chunk.BJUUSIQY.js","./chunk.MH46V556.js","./chunk.XOZU4OFA.js","./chunk.5M34BJIQ.js","./chunk.MIE4TJRW.js","./chunk.CXJJB3MK.js","./chunk.OJGHDWI6.js","./chunk.74B6KQF4.js","./chunk.64FCAUAJ.js","./chunk.DA4RSHLW.js","./chunk.FOSY7MZF.js","./chunk.NBVPWLRY.js","./chunk.S3EEY7T3.js","./chunk.MD36ZSM5.js","./chunk.L6FGKJ5H.js","./chunk.3CJLAJXP.js","./chunk.SDO3U72B.js","./chunk.J24YPQ5I.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.IHUMKFYH.js")))),H=D.part((t,n)=>{let e=t.SectionDrawn;return(0,s.jsx)(e,{...n})},{what:"Make this better"});function V(t,n,e){let r=t.section;if(!r||e.current().may.views!==!0||!y(k(r)))return null;let i=l=>()=>M(n,{section:r,mode:l,returnTo:t.element??null});return{id:"make-better",heading:`Make \u201C${r.name}\u201D better`,at:"start",items:[{id:"section-just-do-it",label:"Just do it",hint:"You see it before it is kept",run:i("just")},{id:"section-describe",label:"Describe changes\u2026",run:i("describe")},{id:"section-highlight",label:"Highlight area\u2026",run:i("highlight")}],prepare:()=>D.prefetch()}}function j(){let{aiDesk:t,menuAt:n}=f(),e=g(t),r=(0,o.useId)(),i=(0,o.useMemo)(()=>p=>(e.heard.add(p),()=>void e.heard.delete(p)),[e]);(0,o.useEffect)(()=>(e.doors.push(r),u(e),()=>{e.doors.splice(e.doors.indexOf(r),1),u(e)}),[e,r]);let l=(0,o.useSyncExternalStore)(i,()=>e.doors[0]===r,()=>!1),c=(0,o.useSyncExternalStore)(i,()=>e.ask,()=>null),d=n?.section;return!l||!c&&!d?null:c?(0,s.jsx)(o.Suspense,{fallback:null,children:(0,s.jsx)(H,{ask:c,close:()=>M(t,null)})}):(0,s.jsx)(w,{elements:d.elements})}export{j as SectionDoor,M as askSection,V as sectionFor};
@@ -1,15 +0,0 @@
1
- import{a as j,b as P,c as H,d as B,e as _,f as G,g as U,h as V,i as M,k as I}from"./chunk.3L37FY3G.js";import"./chunk.AJZBJBMO.js";var te=0,ne=1,re=2,ie=3,$=1,oe=2,W=3,ae=1,se=3,de=8,z="~",C=i=>typeof i=="object"&&i!==null&&!Array.isArray(i),K=new Set(["input","select","textarea","option"]),le=new Set(["value","checked","selected"]),X=["aria-label","aria-labelledby","title"],ce=i=>X.some(t=>(i.getAttribute(t)??"").trim()!=="");function Y(i,t){let u=i.ownerDocument??i,h=t.maxNodes??5e3,y=[],v=new Map,w=new WeakMap,N={dom:i,name:"div",namespace:"html",children:[],id:z};v.set(z,N);let R=0,x=!1,S=new WeakMap,E=new Map,A=new Map,f=e=>{y.push(e),y.length>200&&y.shift(),t.onRefused?.(e)},T=()=>({dom:u.createComment(""),children:[],refused:!0}),D=(e,d)=>{if(e.namespace==="html"&&e.name&&K.has(e.name))return e.dom;if(d?.namespace==="html"&&d.name==="textarea")return d.dom},L=(e,d)=>{let o=e.dom,a=S.get(o)??o.getAttribute("role");if(a===null||!a.split(/\s+/).some(r=>H.includes(r.toLowerCase())))return void S.delete(o);if(ce(o)){S.delete(o),o.getAttribute("role")!==a&&o.setAttribute("role",a);return}S.set(o,a),o.removeAttribute("role"),d&&f({reason:"value",element:e.name,name:"role"})},l=()=>{if(A.size===0)return;let e=new Set,d=o=>{for(let a of o.children){if(a.refused||a.text)continue;let r=a.dom.getAttribute("id");r&&e.add(r),d(a)}};d(N);for(let[o,a]of A){if(o.id===void 0||v.get(o.id)!==o){A.delete(o);continue}let r=o.dom;for(let[n,p]of a){let c=p.value.split(/\s+/).filter(b=>b!==""),g=c.filter(b=>!e.has(b));if(c.length>0&&g.length===0){if(p.drawn)continue;p.drawn=!0,r.setAttribute(n,p.value),L(o,!1)}else p.drawn&&(p.drawn=!1,r.removeAttribute(n),f({reason:"reference",element:o.name,name:n,ids:g.length>0?g:c}),L(o,!0))}}},s=(e,d,o,a=!0)=>{let r=e.dom;if(o!=null&&typeof o!="string")return f({reason:"value",element:e.name,name:d});let n=I(e.namespace,e.name,d,o??null,t);if("refused"in n){let b=I(e.namespace,e.name,d,null,t);return"refused"in b||r.removeAttribute(b.name),!("refused"in b)&&b.name==="role"&&S.delete(r),f(n.refused)}for(let b of n.dropped??[])f(b);let p=e.namespace==="html"&&le.has(n.name)&&K.has(e.name),c=r,g=p?n.name==="value"?c.value:n.name==="checked"?c.checked:c.selected:void 0;if(n.name==="role"&&S.delete(r),B.includes(n.name)){let b=A.get(e)??new Map;n.value===null?b.delete(n.name):b.set(n.name,{value:n.value,drawn:!0}),b.size>0?A.set(e,b):A.delete(e)}n.value===null?r.removeAttribute(n.name):r.setAttribute(n.name,n.value),a&&(n.name==="role"||X.includes(n.name))&&L(e,n.name==="role"),t.onAttribute?.(r,n.name),p&&(n.name==="value"&&"value"in c?(c.value=n.value??"",g!==c.value&&t.onFieldSet?.(r)):n.name==="checked"&&"checked"in c?(c.checked=n.value!==null,g!==c.checked&&t.onFieldSet?.(r)):n.name==="selected"&&"selected"in c&&(c.selected=n.value!==null,g!==c.selected&&t.onFieldSet?.(r.parentElement?.closest("select")??r)))},m=e=>{if(!e.refused){R-=1,e.id!==void 0&&v.delete(e.id);for(let d of e.children)m(d)}},k=(e,d)=>{if(!C(e)||typeof e.id!="string"||v.has(e.id))return f({reason:"record"}),T();if(R>=h)return f({reason:"budget"}),x||(x=!0,t.onOverBudget?.()),T();let o=e.id;if(e.type===de)return T();if(e.type===se){if(M(d.namespace,d.name))return f({reason:"child",element:d.name}),T();let c=u.createTextNode(String(e.data??"").slice(0,_)),g={dom:c,children:[],text:!0,id:o,parent:d};return v.set(o,g),w.set(c,o),R+=1,g}if(e.type!==ae)return f({reason:"record"}),T();let a=String(e.element);if(M(d.namespace,d.name))return f({reason:"child",element:a}),T();let r=V(a,d.namespace);if("refused"in r)return f(r.refused),T();let n=u.createElementNS(r.namespace==="svg"?U:G,r.name);r.as&&n.setAttribute("data-graview-as",r.as),r.namespace==="html"&&r.name==="img"&&n.setAttribute("referrerpolicy","no-referrer"),r.namespace==="html"&&r.name==="a"&&(n.setAttribute("target","_blank"),n.setAttribute("rel","noopener noreferrer"),n.setAttribute("referrerpolicy","no-referrer"));let p={dom:n,name:r.name,namespace:r.namespace,children:[],id:o,parent:d};if(v.set(o,p),w.set(n,o),R+=1,C(e.attributes)){for(let[c,g]of Object.entries(e.attributes))s(p,c,g,!1);L(p,!0)}if(t.decorate?.(n,r.name,r.namespace),C(e.properties))for(let c of Object.keys(e.properties))f({reason:"attribute",element:r.name,name:c});if(C(e.eventListeners))for(let c of Object.keys(e.eventListeners))e.eventListeners[c]!=null&&f({reason:"attribute",element:r.name,name:`on${c}`});if(Array.isArray(e.children))for(let c of e.children){let g=k(c,p);p.children.push(g),n.appendChild(g.dom)}return p},O=e=>{if(!Array.isArray(e))return f({reason:"record"});let[d,o]=e,a=typeof o=="string"?v.get(o):void 0;if(!a)return f({reason:"record"});switch(d){case te:{if(a.text)return f({reason:"record"});let r=Number(e[3]),n=Number.isInteger(r)&&r>=0&&r<=a.children.length?r:a.children.length,p=e[2],c=C(p)&&typeof p.id=="string"?E.get(p.id):void 0,g;c&&c.parent?.namespace===a.namespace&&!M(a.namespace,a.name)?(E.delete(p.id),c.parent=a,g=c):g=k(p,a),a.dom.insertBefore(g.dom,a.children[n]?.dom??null),a.children.splice(n,0,g),a.namespace==="html"&&a.name==="textarea"&&t.onFieldSet?.(a.dom);return}case ne:{let r=Number(e[2]),n=a.children[r];if(!n)return f({reason:"record"});a.children.splice(r,1),n.dom.parentNode?.removeChild(n.dom),n.id!==void 0&&!n.refused?E.set(n.id,n):m(n);return}case re:{if(!a.text)return f({reason:"record"});a.dom.data=String(e[2]??"").slice(0,_);let r=D(a,a.parent);r&&t.onFieldSet?.(r);return}case ie:{if(a===N||a.text)return f({reason:"record"});let r=String(e[2]),n=e[4]??$;return n===oe?s(a,r,e[3]):f(n===$||n===W?{reason:"attribute",element:a.name,name:n===W?`on${r}`:r}:{reason:"record"})}default:return f({reason:"record"})}};return{apply(e,d){if(!Array.isArray(e))return f({reason:"record"}),!0;try{for(let o=0;o<e.length;o+=1){if(d&&o%32===0&&d())return!1;O(e[o])}return!0}finally{for(let o of E.values())m(o);E.clear(),l()}},get refused(){return y},get size(){return R},idOf:e=>w.get(e),elementOf(e){let d=v.get(e);return d&&!d.text&&d!==N?d.dom:void 0},dispose(){for(let e of N.children)m(e);for(N.children.length=0;i.firstChild;)i.removeChild(i.firstChild)}}}var J=["https:","mailto:","tel:"];function q(i){if(!(typeof i!="string"||i.length>2e3||/[\s<>"]/.test(i.trim())||i.trim()!==i))try{let t=new URL(i);return!J.includes(t.protocol)||t.protocol==="https:"&&(t.hostname===""||t.username!==""||t.password!=="")?void 0:t.href}catch{return}}function ue(i){let t=new Set,u=h=>{if(typeof h!="string"||!/^(https|mailto|tel):/i.test(h))return;let y=q(h);y&&t.add(y)};for(let h of[...i?.node?[i.node]:[],...i?.nodes??[]])for(let[y,v]of Object.entries(h))y==="id"||y==="kind"||(Array.isArray(v)?v.forEach(u):u(v));return t}function Q(i){return(i??[]).flatMap(t=>{try{let u=new URL(t);return u.protocol==="https:"&&u.hostname!==""&&u.username===""&&u.password===""?[u.origin]:[]}catch{return[]}})}function fe(i,t){let u=q(i);if(u&&(t.handed.has(u)||u.startsWith("https:")&&Q(t.origins).includes(new URL(u).origin)))return u}function me(i,t){let u=i.length>120?`${i.slice(0,119)}\u2026`:i,h="";try{h=new URL(i).protocol}catch{h=""}if(!J.includes(h))return`The link "${u}" was not drawn: a view links only to an https:, mailto: or tel: address.`;let y=Q(t);return`The link "${u}" was not drawn: it is no address this view was handed. A view links out only to an address a record it was shown holds (a url field), as the record holds it${y.length>0?`, or an https: address on ${y.join(", ")}`:""}; a record or a place of this app is <a data-record> or <a data-place>.`}var F=180,pe=`
2
- :host { display: block; position: relative; contain: layout paint style; isolation: isolate; overflow: clip; min-width: 0; }
3
- :host(:focus-within) { overflow-clip-margin: var(--graview-ring-reach, 4px); }
4
- [data-graview-view-root] { display: flow-root; color: var(--graview-ink, CanvasText); font-family: var(--graview-font-body, system-ui, sans-serif); line-height: 1.45; }
5
- :where([data-graview-view-root]) :where(button) { font: inherit; color: inherit; background: none; border: 0; padding: 0; margin: 0; text-align: inherit; appearance: none; cursor: pointer; }
6
- :where([data-graview-view-root]) :where(a[data-graview-link]) { color: inherit; text-decoration: none; }
7
- [data-graview-view-root] :is([data-graview-link], [data-graview-press]) { cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: rgb(128 128 128 / 0.16); }
8
- [data-graview-view-root] :focus-visible { outline: max(2px, var(--graview-focus-width, 2px)) solid var(--graview-focus-color, var(--graview-accent, Highlight)) !important; outline-offset: var(--graview-focus-offset, 2px) !important; }
9
- [data-graview-view-root] [data-graview-ring-inside]:focus-visible { outline-offset: calc(-1 * max(2px, var(--graview-focus-width, 2px))) !important; }
10
- [data-graview-view-root] .graview-sr { position: absolute !important; width: 1px !important; height: 1px !important; margin: -1px !important; padding: 0 !important; border: 0 !important; overflow: hidden !important; clip-path: inset(50%) !important; white-space: nowrap !important; }
11
- [data-graview-view-root] a[href]:not([data-graview-link])::after { content: " \u2197" !important; content: " \u2197" / " (opens in a new tab)" !important; }
12
- [data-graview-view-root][data-graview-motion="fade"] { transition: opacity ${F}ms ease; }
13
- [data-graview-view-root][data-graview-fade] { opacity: 0; }
14
- @layer graview-motion { @media (prefers-reduced-motion: reduce) { [data-graview-view-root], [data-graview-view-root] *, [data-graview-view-root] ::before, [data-graview-view-root] ::after { animation-duration: 1ms !important; animation-iteration-count: 1 !important; animation-timeline: auto !important; transition-duration: 1ms !important; scroll-behavior: auto !important; } } }
15
- `,Z=4,ge=16;function he(i){let t=i.ownerDocument.defaultView?.getComputedStyle(i);if(!t)return Z;let u=Number.parseFloat(t.outlineWidth)||0,h=Math.max(0,Number.parseFloat(t.outlineOffset)||0);return Math.min(ge,Math.max(Z,Math.ceil(u+h)))}var ye=new Set(["Enter"," ","Escape","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End"]),ee=["click","input","change","keydown"];function Ae(i,t){let u=i.ownerDocument,h=u.createElement("style");h.setAttribute("data-graview-region",""),h.textContent=pe;let y=u.createElement("style");y.setAttribute("data-graview-view-theme","");let v=u.createElement("style");v.setAttribute("data-graview-view-style","");let w=u.createElement("div");w.setAttribute("data-graview-view-root",""),i.append(h,y,v,w);let N=u.defaultView,R,x,S=()=>{x!==void 0&&clearTimeout(x),x=void 0,R=void 0,w.removeAttribute("data-graview-fade")},E=Y(w,{origin:t.origin,...t.asset?{asset:t.asset}:{},...t.imageOrigins?{imageOrigins:t.imageOrigins}:{},...t.picture?{picture:t.picture}:{},...t.link?{link:t.link}:{},...t.onRefused?{onRefused:t.onRefused}:{},...t.maxNodes!==void 0?{maxNodes:t.maxNodes}:{},...t.onOverBudget?{onOverBudget:t.onOverBudget}:{},decorate:(l,s,m)=>{m==="html"&&s==="button"&&l.setAttribute("type","button"),m==="html"&&(s==="input"||s==="textarea"||s==="select")&&l.setAttribute("autocomplete","off"),t.decorate?.(l,s,m)},...t.onFieldSet?{onFieldSet:t.onFieldSet}:{},...t.onAttribute?{onAttribute:t.onAttribute}:{}}),A=[],f="",T=l=>{for(let s=l.composedPath()[0];s&&s!==w&&s!==i;s=s.parentNode)if(s.nodeType===1&&E.idOf(s)!==void 0)return s},D=l=>{let s=T(l);if(!s||l.type==="keydown"&&!ye.has(l.key))return;let m=t.before?.(l,s,w);if(m===!1)return;let k=s,O=s.namespaceURI==="http://www.w3.org/1999/xhtml"&&["input","select","textarea"].includes(s.localName);t.send({type:"dom-event",target:E.idOf(s),event:l.type,...O?{value:String(k.value??"")}:{},...O&&(k.type==="checkbox"||k.type==="radio")?{checked:k.checked}:{},...l.type==="keydown"?{key:l.key}:{},...m??{}});let e=l.type==="keydown"?l.key:void 0;(e==="Enter"||e===" ")&&s.hasAttribute("data-graview-press")&&l.composedPath()[0]===s&&(l.preventDefault(),t.send({type:"dom-event",target:E.idOf(s),event:"click"}))};for(let l of ee)i.addEventListener(l,D);i.addEventListener("toggle",D,!0);let L=typeof CSS<"u"&&typeof CSS.supports=="function"&&CSS.supports("overflow-clip-margin","4px");return i.addEventListener("focusin",l=>{let s=l.composedPath()[0],m=i.host;if(!s||s.nodeType!==1||!w.contains(s))return;let k=he(s);if(L){m.style.setProperty("--graview-ring-reach",`${k}px`);return}let O=m.getBoundingClientRect(),e=s.getBoundingClientRect(),d=k*(m.offsetWidth>0?O.width/m.offsetWidth:1),o=e.left-O.left<d||O.right-e.right<d||e.top-O.top<d||O.bottom-e.bottom<d;s.toggleAttribute("data-graview-ring-inside",o)}),{apply(l,s){let m=i.activeElement,k=m?E.idOf(m):void 0,O=E.apply(l,s);if(k!==void 0&&i.activeElement!==m){let e=E.elementOf(k);e?.isConnected&&typeof e.focus=="function"&&e.focus({preventScroll:!0})}return R!==void 0&&(x!==void 0&&clearTimeout(x),x=setTimeout(S,Math.max(0,F-(Date.now()-R)))),O},theme(l){y.textContent=l?j(l).css:""},motion(l){l==="fade"?w.setAttribute("data-graview-motion","fade"):(w.removeAttribute("data-graview-motion"),S())},fade(){w.getAttribute("data-graview-motion")!=="fade"||w.childNodes.length===0||N?.matchMedia?.("(prefers-reduced-motion: reduce)").matches||(R===void 0&&w.setAttribute("data-graview-fade",""),R=Date.now(),x!==void 0&&clearTimeout(x),x=setTimeout(S,F*4))},style(l){let s=P(l);A.length=0;for(let m of s.refused)A.push({reason:"css",name:"stylesheet",css:m}),A.length>200&&A.shift();f=s.css,v.textContent=f},renderer:E,get refused(){return[...E.refused,...A]},get css(){return f},dispose(){for(let l of ee)i.removeEventListener(l,D);i.removeEventListener("toggle",D,!0),S(),E.dispose(),i.replaceChildren()}}}export{F as FADE_MS,pe as REGION_CSS,Ae as createOpenDrawing,ue as handedLinks,fe as judgeLink,me as linkRefusedWords,he as ringReach};
@@ -1 +0,0 @@
1
- import"./chunk.MIE4TJRW.js";import{o as me}from"./chunk.CXJJB3MK.js";import"./chunk.OJGHDWI6.js";import"./chunk.74B6KQF4.js";import"./chunk.WVUJXDXZ.js";import{a as F,b as K,c as pe}from"./chunk.S2DOVJRL.js";import"./chunk.64FCAUAJ.js";import"./chunk.DA4RSHLW.js";import"./chunk.FOSY7MZF.js";import"./chunk.NBVPWLRY.js";import"./chunk.S3EEY7T3.js";import"./chunk.SPCAMQJE.js";import"./chunk.TUCSUZNO.js";import"./chunk.ZMWAZACO.js";import"./chunk.CD6YWH6T.js";import"./chunk.MD36ZSM5.js";import"./chunk.L6FGKJ5H.js";import{G as Te,M as C,Q as ue,V as ce,da as ge,ga as he}from"./chunk.3CJLAJXP.js";import"./chunk.SDO3U72B.js";import{Aa as se,Ba as Y,ra as oe,rd as de,ua as x,wa as le,ya as W,za as E}from"./chunk.J24YPQ5I.js";import"./chunk.FQLNBIQ5.js";import{b as q}from"./chunk.AJZBJBMO.js";var g=q(Te(),1);async function ye(e,t){let a=await createImageBitmap(e);try{let i=Math.min(1,t/Math.max(a.width,a.height)),r=document.createElement("canvas");r.width=Math.max(1,Math.round(a.width*i)),r.height=Math.max(1,Math.round(a.height*i));let l=r.getContext("2d");if(l===null)throw new Error("This browser will not give us a canvas to resize with.");return l.drawImage(a,0,0,r.width,r.height),r}finally{a.close()}}var n=q(ce(),1),He=2048,Ie=.85;function T(e){return e<1e3?`${e} bytes`:e<1e6?`${Math.round(e/1e3)} KB`:`${(e/1e6).toFixed(e<1e7?1:0)} MB`}function H(e){if(e.type==="application/pdf")return"PDF";let t=/\.([a-z0-9]{2,5})$/i.exec(e.name??"")?.[1];return t?t.toUpperCase():(e.type.split("/")[1]??e.type).replace(/^x-|^vnd\./,"").split(/[.+-]/)[0].toUpperCase()}function ke(e){let t=[...new Set(e.map(a=>a==="image/*"?"pictures":a==="video/*"?"videos":a==="*/*"||a==="*"?"any file":`${H({type:a})} files`))];return t.length<=1?t[0]??"no files":`${t.slice(0,-1).join(", ")} and ${t[t.length-1]}`}function xe(e,t){if(e.length===0)return!0;let a=`${t.split("/")[0]}/*`;return e.some(i=>i==="*"||i==="*/*"||i===t||i===a)}var fe=/^image\/hei[cf]$|\.hei[cf]$/i,be=e=>fe.test(e.type)||fe.test(e.name),De={mov:"video/quicktime",mp4:"video/mp4",m4v:"video/mp4",webm:"video/webm",ogv:"video/ogg"},Be=e=>De[/\.([a-z0-9]{2,4})$/i.exec(e)?.[1]?.toLowerCase()??""];async function je(e,t,a){let i=e.name||(a.camera?"photo.jpg":"file"),r=e.type||(be({type:"",name:i})?"image/heic":Be(i)??"application/octet-stream"),l=be({type:r,name:i}),u=r.startsWith("image/")||l;if(a.image&&!u)return{refused:`\u201C${i}\u201D isn\u2019t a picture.`};if(a.video)return r.startsWith("video/")?J({blob:e,name:i,type:r},t):{refused:`\u201C${i}\u201D isn\u2019t a video.`};if(l||u&&/^image\/(jpeg|webp)$/.test(r)&&(a.camera||e.size>t.maxBytes||e.size>15e5))try{let c=await ye(e,He),b=await new Promise(m=>c.toBlob(m,"image/jpeg",Ie));if(b)return J({blob:b,name:l?i.replace(/\.hei[cf]$/i,"")+".jpg":i,type:"image/jpeg",width:c.width,height:c.height},t)}catch{if(l&&!xe(t.kinds,r))return{refused:`\u201C${i}\u201D is a HEIC photo, which this browser can\u2019t turn into a JPEG and this host doesn\u2019t take. Save it as a JPEG and try again.`}}let p={};if(u&&!l)try{let c=await createImageBitmap(e);p={width:c.width,height:c.height},c.close()}catch{}return J({blob:e,name:i,type:r,...p},t)}function J(e,t){return xe(t.kinds,e.type)?e.blob.size>t.maxBytes?{refused:`\u201C${e.name}\u201D is ${T(e.blob.size)}; this host takes files up to ${T(t.maxBytes)}.`}:e:{refused:`\u201C${e.name}\u201D is a ${H(e)} file; this host takes ${ke(t.kinds)}.`}}async function _e(e,t,a,i=!1){let r;try{r=await t.upload(e.blob,e.name)}catch(u){let s=u instanceof Error&&u.message.trim()?u.message.trim():"the host refused it";return{refused:`\u201C${e.name}\u201D wasn\u2019t kept: ${s}`}}return le(r)?a&&!W(r)?{refused:`\u201C${e.name}\u201D isn\u2019t a picture.`}:i&&!E(r)?{refused:`The host kept \u201C${e.name}\u201D as ${H(r)}, not as a video.`}:{...r,...r.width===void 0&&e.width?{width:e.width}:{},...r.height===void 0&&e.height?{height:e.height}:{}}:{refused:`The host\u2019s answer for \u201C${e.name}\u201D isn\u2019t a file a record can keep.`}}var $="var(--graview-radius, 8px)",P={color:"var(--graview-ink-muted)",fontSize:"0.8125rem"};function ee(e){let t=C(),a=ue()?.past!=null,[i,r]=(0,g.useState)(!1),l=t?.kept?ze(t,e.href):!0,[,u]=(0,g.useState)(0);return(0,g.useEffect)(()=>{if(typeof l!="object")return;let s=!0;return l.then(()=>s&&u(p=>p+1)),()=>void(s=!1)},[l]),[l===!1||a&&i,()=>r(!0)]}var Q=new WeakMap;function ze(e,t){let a=Q.get(e)?.get(t);if(a!==void 0)return a;let i;try{i=e.kept(t)}catch{return!0}if(typeof i=="boolean")return i;let r=Q.get(e)??new Map;Q.set(e,r);let l=Promise.resolve(i).then(u=>u!==!1,()=>!0);return r.set(t,l),l.then(u=>r.set(t,u)),l}function te({file:e,style:t}){return(0,n.jsx)("span",{role:"img","aria-label":`${F(e)}, removed later`,"data-graview-removed-later":e.href,style:{display:"grid",placeItems:"center",textAlign:"center",padding:4,boxSizing:"border-box",fontSize:"0.6875rem",lineHeight:1.2,color:"var(--graview-ink-muted)",border:"1px dashed var(--graview-edge-bright)",borderRadius:$,...t},children:"removed later"})}function X({file:e,size:t=56,style:a}){let i=C(),[r,l]=ee(e);return r?(0,n.jsx)(te,{file:e,style:{width:t,height:t,flex:"none",...a}}):E(e)?(0,n.jsx)(Ae,{file:e,size:t,...a?{style:a}:{},onError:l}):(0,n.jsx)("img",{onError:l,src:x(i,e.href),alt:F(e),width:t,height:t,loading:"lazy",decoding:"async","data-graview-thumb":e.href,style:{width:t,height:t,objectFit:"cover",borderRadius:$,display:"block",flex:"none",background:"var(--graview-edge)",...a}})}function Fe(e){let[t,a]=(0,g.useState)({}),i=e.duration??t.duration;return[{...i!==void 0?{duration:i}:{},width:e.width??t.width,height:e.height??t.height},u=>{let s=u.currentTarget;a({...Number.isFinite(s.duration)&&s.duration>0?{duration:s.duration}:{},...s.videoWidth>0&&s.videoHeight>0?{width:s.videoWidth,height:s.videoHeight}:{}})}]}var Ne=320,$e=(e,t)=>`${F(e)}, ${se({...t!==void 0?{duration:t}:{}})}`,Oe=(0,n.jsx)("span",{"data-graview-play-glyph":"","aria-hidden":"true",style:{position:"absolute",inset:0,display:"grid",placeItems:"center",pointerEvents:"none"},children:(0,n.jsxs)("svg",{viewBox:"0 0 24 24",width:"40%",height:"40%",style:{maxWidth:40,maxHeight:40,filter:"drop-shadow(0 1px 2px rgb(0 0 0 / 0.5))"},children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"11",fill:"rgb(0 0 0 / 0.55)"}),(0,n.jsx)("path",{d:"M9.5 7.5v9l7-4.5z",fill:"#fff"})]})});function Ae({file:e,size:t,style:a,onError:i}){let r=C(),[l,u]=Fe(e),s={width:t,height:t,objectFit:"cover",display:"block",borderRadius:$,background:"var(--graview-edge)"};return(0,n.jsxs)("span",{role:"img","aria-label":$e(e,l.duration),"data-graview-thumb":e.href,"data-graview-video-thumb":"",style:{position:"relative",display:"block",width:t,height:t,flex:"none",...a},children:[e.poster?(0,n.jsx)("img",{src:x(r,e.poster),alt:"",width:t,height:t,loading:"lazy",decoding:"async",onError:i,style:s}):(0,n.jsx)("video",{src:x(r,e.href),preload:"metadata",muted:!0,playsInline:!0,"aria-hidden":"true",tabIndex:-1,width:t,height:t,onLoadedMetadata:u,onError:i,style:s}),Oe,l.duration!==void 0?(0,n.jsx)("span",{"data-graview-video-clock":"","aria-hidden":"true",style:{position:"absolute",right:3,bottom:3,padding:"0 4px",borderRadius:4,background:"rgb(0 0 0 / 0.65)",color:"#fff",fontSize:"0.6875rem",lineHeight:"16px",fontVariantNumeric:"tabular-nums"},children:K(l.duration)}):null]})}function Ge(){let e=()=>typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia("(prefers-reduced-motion: reduce)"):void 0,[t,a]=(0,g.useState)(()=>e()?.matches===!0);return(0,g.useEffect)(()=>{let i=e();if(!i)return;let r=()=>a(i.matches);return r(),i.addEventListener?.("change",r),()=>i.removeEventListener?.("change",r)},[]),t}function Ue({file:e,autoplay:t=!1,cover:a=!1}){let i=C(),[r,l]=ee(e),[u,s]=Fe(e),p=Ge(),c=t&&p,b=(0,g.useRef)(null),m=(0,g.useRef)(c);if((0,g.useEffect)(()=>{let d=b.current;!d||!t||(c?d.pause():m.current&&d.play?.()?.catch?.(()=>{}),m.current=c)},[t,c]),r)return(0,n.jsx)(te,{file:e,style:{width:"100%",aspectRatio:"16 / 9"}});let v=u.width!==void 0&&u.height!==void 0,w=a?{display:"block",width:"100%",height:"100%",objectFit:"cover",background:"#000"}:{display:"block",width:"100%",maxWidth:v?Math.max(u.width,Ne):"100%",height:"auto",maxHeight:"80vh",aspectRatio:v?`${u.width} / ${u.height}`:"16 / 9",borderRadius:$,background:"#000"};return(0,n.jsxs)("figure",{"data-graview-video-figure":e.href,style:{margin:0,display:"grid",gap:4,minWidth:0,...a?{height:"100%"}:{}},children:[(0,n.jsx)("video",{ref:b,"data-graview-video":e.href,...t?{"data-graview-video-autoplay":""}:{},...a?{"data-graview-video-cover":""}:{},...c?{"data-graview-video-still":""}:{},src:x(i,e.href),...e.poster?{poster:x(i,e.poster)}:{},...t?{muted:!0,loop:!0,...c?{}:{autoPlay:!0}}:{controls:!0},preload:t&&!c?"auto":"metadata",playsInline:!0,...v?{width:u.width,height:u.height}:{},"aria-label":$e(e,u.duration),onLoadedMetadata:s,onError:l,style:w,children:e.captions?(0,n.jsx)("track",{kind:"captions",src:x(i,e.captions),srcLang:"en",label:"Captions",default:!0}):null}),t?null:(0,n.jsx)("figcaption",{"data-graview-video-said":"",style:P,children:[e.caption??e.name,...u.duration!==void 0?[K(u.duration)]:[]].join(" \xB7 ")})]})}function qe({file:e,onOpen:t}){let a=C(),[i,r]=ee(e);return i?(0,n.jsx)(te,{file:e,style:{width:"100%",aspectRatio:"1"}}):(0,n.jsx)("button",{type:"button","aria-label":`Open ${F(e)} full size`,onClick:l=>t(l.currentTarget),style:{padding:0,border:0,background:"none",cursor:"zoom-in",display:"block",width:"100%",borderRadius:$},children:(0,n.jsx)("img",{src:x(a,e.href),alt:F(e),loading:"lazy",decoding:"async",onError:r,style:{width:"100%",aspectRatio:"1",objectFit:"cover",borderRadius:$,display:"block",background:"var(--graview-edge)"}})})}function Ye({src:e,file:t}){let[a,i]=(0,g.useState)(!1);return(0,n.jsx)("object",{data:e,type:"application/pdf","aria-label":F(t),"data-graview-pdf":a?"shown":"waiting",onLoad:()=>i(!0),style:a?{width:"100%",height:420,border:"1px solid var(--graview-edge)",borderRadius:$}:{width:"100%",height:0,display:"block"}})}function Z({files:e,label:t,autoplay:a,cover:i}){let r=C(),l=d=>x(r,d.href),u=e.filter(W),s=e.filter(E),p=e.filter(d=>!W(d)&&!E(d)),[c,b]=(0,g.useState)(null),m=(0,g.useRef)(null),v=(0,g.useRef)(null);(0,g.useEffect)(()=>{let d=m.current;c!==null&&d&&!d.open&&d.showModal?.()},[c]);let w=c===null?void 0:u[c];return(0,n.jsxs)("div",{style:{display:"grid",gap:10,minWidth:0},children:[u.length>0?(0,n.jsx)("ul",{"data-graview-gallery":"","aria-label":t,style:{listStyle:"none",margin:0,padding:0,display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(96px, 1fr))",gap:8},children:u.map((d,I)=>(0,n.jsx)("li",{style:{minWidth:0},children:(0,n.jsx)(qe,{file:d,onOpen:M=>{v.current=M,b(I)}})},d.href))}):null,s.length>0?(0,n.jsx)("ul",{"data-graview-videos":"","aria-label":t,style:{listStyle:"none",margin:0,padding:0,display:"grid",gap:12},children:s.map(d=>(0,n.jsx)("li",{style:{minWidth:0},children:(0,n.jsx)(Ue,{file:d,...a?{autoplay:a}:{},...i?{cover:i}:{}})},d.href))}):null,p.length>0?(0,n.jsx)("ul",{"data-graview-documents":"",style:{listStyle:"none",margin:0,padding:0,display:"grid",gap:10},children:p.map(d=>(0,n.jsxs)("li",{"data-graview-document":d.type,style:{display:"grid",gap:6,minWidth:0},children:[d.type==="application/pdf"?(0,n.jsx)(Ye,{src:l(d),file:d}):null,d.type==="application/pdf"?(0,n.jsxs)("span",{"data-graview-file-line":"",style:{minWidth:0,overflowWrap:"anywhere",lineHeight:1.5},children:[d.name," ",(0,n.jsxs)("span",{style:P,children:["\xB7 ",H(d)," \xB7 ",T(d.bytes)," \u2014"]})," ",(0,n.jsx)("a",{href:l(d),target:"_blank",rel:"noopener",children:"Open"})," ",(0,n.jsx)("span",{style:P,"aria-hidden":"true",children:"/"})," ",(0,n.jsx)("a",{href:l(d),download:d.name,children:"Download"})]}):(0,n.jsxs)("span",{style:{display:"flex",flexWrap:"wrap",gap:"2px 10px",alignItems:"baseline",minWidth:0,overflowWrap:"anywhere"},children:[(0,n.jsx)("a",{href:l(d),download:d.name,children:d.name}),(0,n.jsxs)("span",{style:P,children:[H(d)," \xB7 ",T(d.bytes)]})]}),d.caption?(0,n.jsx)("span",{style:P,children:d.caption}):null]},d.href))}):null,w?(0,n.jsx)("dialog",{ref:m,"data-graview-full":w.href,"aria-label":F(w),onClose:()=>{b(null),v.current?.focus()},onClick:d=>{d.target===d.currentTarget&&d.currentTarget.close()},style:{padding:0,border:0,borderRadius:$,maxWidth:"min(96vw, 1600px)",maxHeight:"94vh",background:"var(--graview-panel)",color:"var(--graview-ink)"},children:(0,n.jsxs)("figure",{style:{margin:0,display:"grid",gap:8,padding:10},children:[(0,n.jsx)("img",{src:l(w),alt:F(w),style:{maxWidth:"100%",maxHeight:"80vh",objectFit:"contain",display:"block",margin:"0 auto"}}),(0,n.jsxs)("figcaption",{style:{display:"flex",gap:12,alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsx)("span",{children:w.caption??w.name}),(0,n.jsx)("form",{method:"dialog",style:{margin:0},children:(0,n.jsx)("button",{type:"submit",autoFocus:!0,children:"Close"})})]})]})}):null]})}function Se({value:e,onChange:t,several:a,image:i,video:r=!1,label:l,thumbs:u=!0}){let s=C(),p=(0,g.useId)(),c=(0,g.useRef)(null),b=(0,g.useRef)(null),[m,v]=(0,g.useState)(null),[w,d]=(0,g.useState)(null),[I,M]=(0,g.useState)([]),[O,A]=(0,g.useState)(!1),L=i?"image/":r?"video/":void 0,R=s?L?s.kinds.filter(o=>o.startsWith(L)||o==="*"||o==="*/*"):s.kinds:[],Pe=s?s.kinds.length===0||R.length>0:!1,We=!r&&(s?s.kinds.length===0||(i?R:s.kinds).some(o=>o.startsWith("image/")||o.startsWith("*")):!1),ne=!!s&&s.maxBytes>0,D=ne&&(!L||Pe),B=i?"picture":r?"video":"file",ae=a?`${B}s`:`a ${B}`,ie=L?R.length>0?R.join(","):`${L}*`:s?.kinds.join(",")||void 0,Me=typeof matchMedia=="function"&&matchMedia("(pointer: coarse)").matches,G=(0,g.useRef)(e);G.current=e;let re=(0,g.useRef)(null),j=(0,g.useRef)(null);(0,g.useEffect)(()=>{let o=j.current;if(!o||o.from===e)return;j.current=null;let h=re.current?.children,f=h?.[Math.min(o.at,h.length-1)];((o.what==="move"?f?.querySelector("[data-graview-file-move]"):null)??f?.querySelector("[data-graview-file-remove]")??c.current?.parentElement?.querySelector("[data-graview-file-choose]"))?.focus()});let _=async(o,h)=>{if(!s||o.length===0)return;let f=a?o:o.slice(0,1),y=[],S=[];f.length<o.length&&S.push(`${l} holds one ${B}, so ${o.slice(1).map(k=>`\u201C${k.name||"the photo"}\u201D`).join(", ")} ${o.length>2?"were":"was"} left out.`),M([]),d(null);for(let k of f){v(`Sending ${k.name||"the photo"}\u2026`);let U=await je(k,s,{image:i,video:r,camera:h==="camera"});if("refused"in U){S.push(U.refused);continue}let V=await _e(U,s,i,r);"refused"in V?S.push(V.refused):[...a?G.current:[],...y].some(Ve=>Ve.href===V.href)?S.push(`\u201C${V.name}\u201D is already here.`):y.push(V)}if(v(null),M(S),y.length!==0)try{t(a?[...G.current,...y]:y.slice(-1)),d(`Added ${y.map(k=>k.name).join(", ")}.`)}catch(k){M([...S,k instanceof Error?k.message:String(k)])}},z=(o,h,f)=>{try{j.current=f?{...f,from:e}:null,t(o),d(h)}catch(y){j.current=null,M([y instanceof Error?y.message:String(y)])}},N=o=>o?Array.from(o):[],Re=o=>{let h=N(o.clipboardData?.files);!D||h.length===0||(o.preventDefault(),_(h,"pasted"))},Le=o=>{A(!1),D&&(o.preventDefault(),_(N(o.dataTransfer?.files),"dropped"))};return(0,n.jsxs)("div",{role:"group","aria-labelledby":`${p}-label`,"data-graview-file-editor":"","data-graview-dropping":O?"":void 0,onPaste:Re,onDragOver:o=>{D&&(o.preventDefault(),A(!0))},onDragLeave:()=>A(!1),onDrop:Le,style:{display:"grid",gap:8,minWidth:0,padding:O?6:0,outline:O?"2px dashed var(--graview-accent)":"none",borderRadius:$},children:[(0,n.jsx)("span",{id:`${p}-label`,style:{position:"absolute",width:1,height:1,overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap"},children:l}),e.length>0&&(a||e.length>1)?(0,n.jsx)("ul",{ref:re,style:{listStyle:"none",margin:0,padding:0,display:"grid",gap:6},children:e.map((o,h)=>(0,n.jsxs)("li",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap",minWidth:0},children:[u&&(W(o)||E(o))?(0,n.jsx)(X,{file:o,size:40}):null,(0,n.jsx)("span",{style:{flex:"1 1 8rem",minWidth:0,overflowWrap:"anywhere"},children:o.name}),(0,n.jsx)(we,{file:o,onCaption:f=>z(e.map((y,S)=>S===h?ve(y,f):y),f?`${o.name} now says \u201C${f}\u201D.`:`${o.name} says its name again.`)}),a&&h>0?(0,n.jsx)("button",{type:"button","data-graview-file-move":"","aria-label":`Move ${o.name} earlier`,onClick:()=>z(e.map((f,y)=>y===h-1?o:y===h?e[h-1]:f),`Moved ${o.name} earlier.`,{at:h-1,what:"move"}),children:"\u2191"}):null,a?(0,n.jsx)("button",{type:"button","data-graview-file-remove":"","aria-label":`Remove ${o.name}`,onClick:()=>z(e.filter((f,y)=>y!==h),`Removed ${o.name}.`,{at:h,what:"remove"}),children:"Remove"}):null]},`${h}:${o.href}`))}):e.length===1?(0,n.jsx)(we,{file:e[0],onCaption:o=>z([ve(e[0],o)],o?`${e[0].name} now says \u201C${o}\u201D.`:`${e[0].name} says its name again.`)}):null,D?(0,n.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:8,alignItems:"center"},children:[(0,n.jsx)("input",{ref:c,type:"file",hidden:!0,multiple:a,...ie?{accept:ie}:{},"data-graview-file-input":"","aria-label":`Choose ${ae}`,onChange:o=>{let h=N(o.currentTarget.files);o.currentTarget.value="",_(h,"picked")}}),(0,n.jsx)("button",{type:"button",disabled:m!==null,onClick:()=>c.current?.click(),"data-graview-file-choose":"",children:e.length>0&&!a?`Replace the ${B}`:`Choose ${ae}`}),We?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("input",{ref:b,type:"file",hidden:!0,accept:"image/*",capture:"environment","data-graview-photo-input":"","aria-label":"Take a photo",onChange:o=>{let h=N(o.currentTarget.files);o.currentTarget.value="",_(h,"camera")}}),Me?(0,n.jsx)("button",{type:"button",disabled:m!==null,onClick:()=>b.current?.click(),children:"Take a photo"}):null]}):null,(0,n.jsxs)("span",{style:P,"data-graview-file-takes":"",children:["or drop or paste ",a?"them":"it"," here \xB7 ",s.kinds.length>0?ke(R.length>0?R:s.kinds):"any file",", up to ",T(s.maxBytes)]})]}):(0,n.jsx)("p",{style:{...P,margin:0},"data-graview-file-none":"",children:ne?`This host doesn\u2019t take ${r?"videos":"pictures"}, so none can be added here.`:"This host doesn\u2019t take files, so none can be added here."}),(0,n.jsx)("p",{"aria-live":"polite",style:{...P,margin:0,minHeight:m||w?void 0:0},"data-graview-file-status":"",children:m??w??""}),I.length>0?(0,n.jsx)("div",{role:"alert","data-graview-file-refused":"",style:{color:"var(--graview-warn)",fontSize:"0.875rem",display:"grid",gap:2},children:I.map((o,h)=>(0,n.jsx)("p",{style:{margin:0},children:o},h))}):null]})}var ve=(e,t)=>{let{caption:a,...i}=e;return t?{...i,caption:t}:i};function we({file:e,onCaption:t}){let[a,i]=(0,g.useState)(e.caption??"");(0,g.useEffect)(()=>i(e.caption??""),[e.caption]);let r=()=>{let l=a.trim().slice(0,500);l!==(e.caption??"")&&t(l)};return(0,n.jsx)("input",{type:"text",value:a,placeholder:W(e)||E(e)?"What it shows":"What it is","aria-label":`What ${e.name} ${W(e)||E(e)?"shows":"is"}`,"data-graview-file-caption":e.href,onChange:l=>i(l.target.value),onBlur:r,onKeyDown:l=>{l.key==="Enter"&&(l.preventDefault(),r())},style:{flex:"1 1 10rem",minWidth:0,font:"inherit",fontSize:"0.875rem",minHeight:24}})}function Ee({field:e,label:t,labelStyle:a,valueStyle:i,style:r,children:l}){return(0,n.jsxs)("div",{"data-graview-files":e,style:{display:"grid",gap:6,minWidth:0,gridColumn:"1 / -1",...r},children:[(0,n.jsx)("dt",{style:a,children:t}),(0,n.jsx)("dd",{style:{margin:0,minWidth:0,display:"grid",gap:10,...i},children:l})]})}function Ce(e){let{nodeId:t,field:a,label:i,files:r}=e,{fields:l,commit:u}=me(t),s=l.find(m=>m.field===a&&m.takesValue),p=s?.shape,c=p?.type==="several"?p.of:p,b=p?.type==="several";return r.length===0&&c?.type!=="file"?null:(0,n.jsxs)(Ee,{...e,children:[(0,n.jsx)(Z,{files:r,label:i}),s&&c?.type==="file"?(0,n.jsx)(Se,{value:r,thumbs:!1,several:b,image:c.image===!0,video:c.video===!0,label:i,onChange:m=>{let v=b?m:m[m.length-1];v!==void 0&&u(s,v)}}):null]})}function nt(e){switch(e.as){case"field":{if(!e.read)return(0,n.jsx)(Ce,{...e});let{autoplay:t,cover:a,...i}=e;return e.files.length>0?(0,n.jsx)(Ee,{...i,children:(0,n.jsx)(Z,{files:e.files,label:e.label,...t?{autoplay:t}:{},...a?{cover:a}:{}})}):null}case"unfilled":return(0,n.jsx)(Ke,{...e});case"thumb":return(0,n.jsx)(X,{...e});case"block":return e.files.length>0?(0,n.jsx)("span",{className:"graview-spec-image","data-graview-field":e.field,"data-graview-image":e.view,style:{display:"block",minWidth:0,...e.view==="gallery"?{position:"relative",zIndex:de.raised}:{}},children:e.view==="thumb"?(0,n.jsx)(X,{file:e.files[0],size:72}):(0,n.jsx)(Z,{files:e.files,label:e.label,...e.autoplay?{autoplay:!0}:{},...e.cover?{cover:!0}:{}})}):null;case"control":{let t=(0,n.jsx)(Se,{value:Y(e.value),several:e.several,image:e.image,video:e.video===!0,label:e.label,onChange:a=>e.onChange(e.several?a:a[a.length-1])});return e.title===void 0?t:(0,n.jsxs)("fieldset",{"data-graview-part":"group","data-graview-field":e.several?"files":"file",children:[(0,n.jsx)("legend",{"data-graview-part":"label",children:e.title}),t]})}}}function Ke({nodeId:e,skip:t,labels:a,labelStyle:i,style:r}){let{store:l}=ge(),u=he(e),s=u?l.schema.tryDefinition(u.kind):void 0,p=pe(s).filter(c=>!t.includes(c)&&!(s?.display?.hide??[]).includes(c)&&Y(u?.[c]).length===0);return p.length===0?null:(0,n.jsx)("dl",{style:{margin:0,display:"grid",gap:14,minWidth:0},children:p.map(c=>(0,n.jsx)(Ce,{nodeId:e,field:c,label:a?.[c]??oe(s,c),files:[],...i?{labelStyle:i}:{},...r?{style:r}:{}},c))})}export{Se as FilesEditor,He as SEND_EDGE,nt as drawFiles,ke as kindsWords,je as prepare,_e as send,T as sizeWords,xe as takes,H as typeWords};
@@ -1 +0,0 @@
1
- import{d as pn,f as mn}from"./chunk.KROR65KD.js";import{a as yn}from"./chunk.MH46V556.js";import{Ed as gn,Wb as ue,ec as Z,ga as Fe,la as L,oa as K,sa as Le}from"./chunk.J24YPQ5I.js";var xe="I couldn't work out how to do that \u2014 try saying it another way.";function oe(n){let e=n.trim();return e.length===0||!/^[\p{Lu}\p{N}"“‘'(]/u.test(e)||!/[.!?…][”’"')]*$/u.test(e)||e.split(/\s+/).filter(Boolean).length<3?!1:!/[{}[\]]|\b[a-z]+_[a-z_]+\b/.test(e)}function _n(n,e=xe){return n&&oe(n)?n.trim():e}function wn(n,e,t,s,i=40){let o=n.seenBy(e).graph,d=n.schema,u=m=>{let k=o.getNode(m);return k?L(d.tryDefinition(k.kind),k):void 0};return t.slice(0,i).flatMap(m=>{let k=o.getNode(m);if(!k)return[];let r=Object.fromEntries(Object.entries(k).filter(([g,b])=>!["id","kind","label"].includes(g)&&!g.startsWith("_")&&b!==void 0&&b!==null&&(typeof b!="object"||Array.isArray(b))&&JSON.stringify(b).length<=200).map(([g,b])=>[g,typeof b=="string"&&s?kn(b,s):b])),h=[...o.outEdges(m).flatMap(g=>{let b=u(g.to);return b?[`${Fe(g.kind).toLowerCase()} ${b}`]:[]}),...o.inEdges(m).flatMap(g=>{let b=u(g.from);return b?[`${Fe(g.kind).toLowerCase()} it: ${b}`]:[]})].slice(0,12);return[{id:m,kind:k.kind,label:u(m)??m,fields:r,links:h}]})}var Un=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function kn(n,e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(n.slice(0,10)),s=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e.slice(0,10));if(!t||!s||n.length!==10)return n;let i=Date.UTC(Number(t[1]),Number(t[2])-1,Number(t[3])),o=Date.UTC(Number(s[1]),Number(s[2])-1,Number(s[3])),d=Math.round((i-o)/864e5),u=d===0?"today":d===1?"tomorrow":d===-1?"yesterday, already past":d>0?`in ${d} days`:`${-d} days ago, already past`;return`${n}, ${Un[new Date(i).getUTCDay()]}, ${u}`}function bn(n){return kn(n,n).replace(/, today$/,"")}var qe=.6,Jn=.75,Wn=new Set(["person","people","user","users","member","members","volunteer","volunteers","staff","contact","contacts","employee","employees","client","clients","customer","customers","guest","guests","player","players","student","students"]),ye=n=>n.charAt(0).toUpperCase()+n.slice(1),Fn={assign:!0,reassign:!0,give:!0,hand:!0,delegate:!0,allocate:!0};function Be(n,e){let t=n.graph.getNode(e);if(!t)return;let s=new Map;for(let o of[...n.graph.in(e),...n.graph.out(e)])o.kind!==t.kind&&s.set(o.kind,[...new Set([...s.get(o.kind)??[],o.id])]);let i=[...s.entries()].sort((o,d)=>d[1].length-o[1].length)[0];return i&&i[1].length>1?{kind:i[0],ids:i[1]}:void 0}function he(n){let e=n.schema,t=e.definitions.filter(s=>s.people).map(s=>s.kind);return[...new Set([...t,...e.definitions.filter(s=>[s.kind,s.noun,K(e,s.kind)].some(i=>i!==void 0&&Wn.has(i.toLowerCase()))).map(s=>s.kind)])]}function He(n){let e=/^\s*([\p{L}][\p{L}'’-]*)\s+(?:should|can|will|could|is going to|needs to)\s+(?:take care of|handle|own|do|look after|take|deal with|pick up|be on)\b/iu.exec(n)?.[1]??/\bmake\s+(?:this|these|it|them|this one)\s+([\p{L}][\p{L}-]*)['’]s\b/iu.exec(n)?.[1]??/\b(?:this|these|it|they)\s+(?:is|are)\s+([\p{L}][\p{L}-]*)['’]s\b/iu.exec(n)?.[1]??/\b([\p{L}][\p{L}-]*)['’]s\s+(?:job|task|responsibility|shift|now)\b/iu.exec(n)?.[1]??/^\s*([\p{L}][\p{L}-]*)['’]s\s+(?:on|got|doing|handling|taking|covering)\s+(?:this|it|these|that|them)\b/iu.exec(n)?.[1]??/^\s*([\p{L}][\p{L}-]*)\s+(?:has|has got|is on|is doing|is handling|is taking|is covering|takes|does|owns)\s+(?:this|it|these|that|them)(?:\s+one)?\b/iu.exec(n)?.[1];if(e&&!/^(it|this|that|these|those|they|we|you|i|he|she|everyone|someone|anyone|nobody|nothing|who|what|which|there|it's|that's|who's|what's)$/i.test(e))return{called:"assigned to",who:ye(e),owned:!0};let t=/\bto\s+([\p{L}][\p{L}'’-]*)\s*[.!?]*\s*$/iu.exec(n)?.[1];if(n.toLowerCase().split(/[^a-z]+/).find(i=>i in Fn))return{called:"assigned to",...t?{who:ye(t)}:{}}}var Sn=["done","completed","finished","closed"],qn=["due","dueDate","dueOn","deadline"];function Ye(n,e){return e.which!=="held"||e.part?!1:/\b(that'?s|that is|that are|that were|that have|that has|which|whose|already|except|but not|only|apart from|other than)\b/i.test(n)||/\bones? (that|which|i|we|you|i'?ve|we'?ve|i'?m)\b/i.test(n)||xn(n)||Oe(n).open||Oe(n).finished}function de(n){if(n?.type!=="choice")return;let e=n.probabilities[n.choice]??n.confidence;return{key:n.choice,chance:e}}async function An(n,e){let{store:t,target:s,said:i}=e,o=t.schema,d=`${i} ${e.follows?.said??""}`.trim(),u=s.on==="record"?t.graph.getNode(s.id):void 0,m=u?Be(t,u.id):void 0,k=(e.members??[]).filter(a=>t.graph.getNode(a)!==void 0),r=[],h=e.where?` in ${e.where}`:u?` in ${L(o.tryDefinition(u.kind),u)}`:"",g=a=>K(o,a).toLowerCase(),b=a=>(o.tryDefinition(a)?.noun??a).toLowerCase();u&&r.push({which:"itself",records:[u.id],kind:u.kind,words:`${L(o.tryDefinition(u.kind),u)} itself`,close:!1});let f=m??(k.length>0?{kind:t.graph.getNode(k[0]).kind,ids:k.filter(a=>t.graph.getNode(a).kind===t.graph.getNode(k[0]).kind)}:void 0),p=(a,y,$)=>`the ${a.length}${$?` ${$}`:""} ${a.length===1?b(y):g(y)}${h}`;f&&f.ids.length>0&&r.push({which:"held",records:f.ids,kind:f.kind,words:p(f.ids,f.kind),close:!1});let v=e.follows?/\bcall (?:it|that|the field)\s+["“']?([\p{L}][\p{L} ]*?)["”']?\s*[.!]*\s*$/iu.exec(i)?.[1]:void 0;if(v&&e.follows?.reading&&r.some(a=>a.which===e.follows.reading)&&r.splice(0,r.length,...r.filter(a=>a.which===e.follows.reading)),r.length===0)return{sure:!1,usage:{inputTokens:0,outputTokens:0}};let T=a=>Sn.some(y=>t.graph.getNode(a)?.[y]===!0),N=t.today?.()??new Date().toISOString().slice(0,10),S=a=>qn.map(y=>t.graph.getNode(a)?.[y]).find(y=>typeof y=="string"),J=[];if(f&&f.ids.length>1){let a=f.ids.filter(T),y=f.ids.filter(P=>!T(P)),$=y.filter(P=>(S(P)??"9999")<N.slice(0,10));a.length>0&&a.length<f.ids.length&&J.push({which:"held",part:"done",records:a,kind:f.kind,words:p(a,f.kind,"done"),close:!1}),y.length>0&&y.length<f.ids.length&&J.push({which:"held",part:"open",records:y,kind:f.kind,words:p(y,f.kind,"open"),close:!1}),$.length>0&&$.length<f.ids.length&&J.push({which:"held",part:"late",records:$,kind:f.kind,words:p($,f.kind,"late"),close:!1})}let M=v?r:[...r,...J],ve=a=>a.part??a.which,Y={};M.length>1&&(Y.reading={type:"choice",instructions:`Someone said \u201C${i}\u201D${e.follows?`, replying to \u201C${e.follows.said}\u201D${e.follows.reading?`, which was taken as ${e.follows.reading==="itself"?"the record itself":"the records it holds"}`:""}`:""}. Which records do they mean? "This", "it" or its name alone is the record itself; "these", "all", "them", "everything", "the lot" are never the record itself but every record it holds \u2014 unless more words say which of them: "the done ones", "that are finished", "already ticked off", "completed" mean the done ones; "outstanding", "remaining", "unfinished", "still to do", "except the done ones" mean the open ones; "late" or "overdue" the late ones. A word that says the change to make ("mark these done", "close these", "finish them") says what to do, not which records. If their words pick out some records in a way none of these says ("the old ones"), choose "something else".`,criteria:{...Object.fromEntries(M.map(a=>[ve(a),a.which==="itself"?`${ye(a.words)} (the ${b(a.kind)})`:ye(a.words)])),else:"Something else: some other part of them"}}),Y.where={type:"choice",instructions:`Does \u201C${i}\u201D want something done to the records of this app (or an answer about them), or something done outside the app \u2014 an email or a text sent, a call made, a payment, a booking, a post somewhere?`,criteria:{inside:"Inside the app: its records, or an answer about them",outside:"Outside the app: send, call, pay, book or post somewhere else"}},Y.mood={type:"choice",instructions:`Does \u201C${i}\u201D ask something, wanting an answer in words, or tell me to do something, wanting a change made? A question can come without a question mark ("has this been done yet"), an instruction can be polite ("could you close these"), and saying who has something ("Sam's on this", "Nora has this one") tells me to give it to them.`,criteria:{asks:"Asks something: wants an answer in words",tells:"Tells me to do something: wants a change made"}};let W=a=>t.allMutations().filter(y=>y.subject&&(y.subject.kinds==="*"||y.subject.kinds.includes(a))),D=r.flatMap(a=>W(a.kind).slice(0,24).map(y=>({key:`${a.which}:${y.name}`,reading:a,mutation:y})));Y.act={type:"choice",instructions:`Which of these acts does \u201C${d}\u201D ask to be done? Judge each by what it does, not only its title: people say "close", "complete", "check off", "tick" or "finish" for an act that marks something done, "delete" for one that removes, "push" or "move" for one that changes a date or a place. A question, or "undo that", is none of them. "none" only where no act here does it.`,criteria:{...Object.fromEntries(D.map(a=>[a.key,`${a.mutation.title??a.mutation.name}: ${et(a.mutation.description)}${en(a.mutation,o,a.reading.kind)} \u2014 on ${a.reading.which==="itself"?`the ${b(a.reading.kind)} itself`:`each of ${a.reading.words}`}`])),none:"None of these acts does it"}};let re=he(t),j=new Set([...re,...D.flatMap(a=>Z(a.mutation.input).filter(y=>y.name!==a.mutation.subject.arg).flatMap(y=>y.kinds))]),F=t.graph.allNodes().filter(a=>j.has(a.kind)||j.has("*")),De=new Set(d.toLowerCase().split(/[^\p{L}\p{N}]+/u).filter(a=>a.length>=3).map(a=>a.slice(0,4))),ne=a=>L(o.tryDefinition(a.kind),a),$e=(F.length<=25?F:F.filter(a=>ne(a).toLowerCase().split(/[^\p{L}\p{N}]+/u).some(y=>y.length>=3&&De.has(y.slice(0,4))))).filter(a=>a.id!==u?.id&&!r.some(y=>y.records.includes(a.id))).slice(0,25),te=Ge.test(i)?zn(t,e.principal,j):void 0,Q=Ge.test(i)&&e.principal?Bn(t,e.principal.id):void 0,ge=Hn.exec(i),q=(ge?.[1]??ge?.[2])?.toLowerCase(),ce=q?Yn(t,u?.id,e.follows?.said,re):[];q&&ce.length>1&&(Y.pronoun={type:"choice",instructions:`In \u201C${i}\u201D${e.follows?`, said after \u201C${e.follows.said}\u201D`:""}, whom does \u201C${q}\u201D mean?`,criteria:{...Object.fromEntries(ce.map(a=>[`r:${a.id}`,ne(a)])),else:"Someone else"}}),$e.length>0&&(Y.named={type:"choice",instructions:`Which of these does \u201C${d}\u201D name, as the one to give it to, move it to, link it with or put it on?`,criteria:{...Object.fromEntries($e.map(a=>[`r:${a.id}`,`${ne(a)} (${Le(b(a.kind))})`])),new:"Someone or something not listed here",none:"None is named"}}),Y.need={type:"choice",instructions:`If no act here can do \u201C${d}\u201D, what would each record need?`,criteria:{person:"A link to the person it is given or assigned to",other:"Something else: a field, a date, a number, a note",none:"Nothing: an act here can do it"}};let x=await n.decide({said:i,...e.follows?{replyingTo:e.follows.said}:{},readings:M.map(a=>a.words),...e.examples&&e.examples.length>0?{workedBefore:e.examples}:{}},Y),pe=de(x.answers.mood),c=He(i)?.owned===!0&&!/\?\s*$/.test(i)?!1:pe&&pe.chance>=.6?pe.key==="asks":Xe(i),A=de(x.answers.where);if(!c&&Ke(i)&&A?.key==="outside"&&A.chance>=.6)return{sure:!0,asks:!1,outside:Ve(t,i,u?.id),usage:x.usage};let l=de(x.answers.reading),C=M.length>1?M.find(a=>ve(a)===l?.key):M[0];if(!C){let a=de(x.answers.act),y=a&&a.key!=="none"?D.find($=>$.key===a.key):void 0;if(!c&&y&&Ie(y.mutation)&&f&&f.ids.length>1){let $=(y.mutation.title??y.mutation.name).trim().split(/\s+/)[0].toLowerCase();return{sure:!0,asks:!1,clarify:`Which of the ${f.ids.length} ${g(f.kind)}${h} should I ${$}? Say which, or \u201Call\u201D.`,usage:x.usage}}return{sure:!1,asks:c,usage:x.usage}}let O={...C,close:M.length>1&&(l?.chance??1)<Jn,chance:M.length>1?l?.chance??0:1},w=de(x.answers.act),R=de(x.answers.named),V=de(x.answers.pronoun),z=q?ce.length===1?ce[0]:V?.key.startsWith("r:")?t.graph.getNode(V.key.slice(2)):void 0:void 0,X=q&&z?{said:q,as:ne(z)}:void 0,H=te??z??(R?.key.startsWith("r:")&&R.chance>=qe?t.graph.getNode(R.key.slice(2)):void 0),le=He(i)??He(d),an=le?.who&&(Ge.test(le.who)?te?ne(te):Q:Gn.test(le.who)?z?ne(z):void 0:le.who),Ue=le?{called:le.called,...an?{who:an}:{},...le.owned?{owned:!0}:{}}:void 0,se=Ue&&v?{...Ue,called:v.toLowerCase()}:Ue,Mn=x.answers.reading?.type==="choice"?Object.entries(x.answers.reading.probabilities).filter(([a])=>a!==l?.key).reduce((a,[,y])=>Math.max(a,y),0):0;if(!(M.length===1||(l?.chance??0)>=.5||(l?.chance??0)>=.35&&(l?.chance??0)>=1.5*Mn))return{sure:!1,asks:c,reading:O,usage:x.usage};let je=(a,y)=>Z(a.input).some($=>$.name!==a.subject.arg&&($.kinds.includes("*")||$.kinds.some(P=>y.includes(P)))),dn=[...re,...H?[H.kind]:[]];if(c||Ze.test(i))return{sure:!1,asks:c,reading:O,usage:x.usage};let fe=Zn(x.answers.act),ie=a=>D.find(y=>y.mutation.name===a&&y.reading.which===O.which),cn=a=>!!(a&&(a.mutation.destructive||a.mutation.derived?.act==="remove")),_=w&&w.key!=="none"?w.key.slice(w.key.indexOf(":")+1):void 0,ae=w!==void 0&&w.key!=="none"&&w.chance>=qe;if(!ae&&fe.length>1&&fe[0].chance+fe[1].chance>=.8&&cn(ie(fe[0].name))&&cn(ie(fe[1].name))&&(ae=!0),_&&H&&ie(_)&&!je(ie(_).mutation,[H.kind])){let a=ie(_).mutation,y=new Set(Z(a.input).map(E=>E.name)),$=Object.entries(a.input?.shape??{}).some(([E,G])=>!y.has(E)&&!G.safeParse(void 0).success&&!G.safeParse(Me(i)).success),P=R&&R.chance>=.9&&$?0:.05,U=fe.filter(E=>E.chance>=P).map(E=>ie(E.name)).find(E=>E&&E.mutation.derived?.act!=="merge"&&je(E.mutation,[H.kind]));U&&(_=U.mutation.name,ae=!0)}if(!ae&&H&&se?.who&&(X||te||se.owned)){let a=D.filter(y=>y.reading.which===O.which&&y.mutation.derived?.act!=="merge"&&Z(y.mutation.input).some($=>$.name!==y.mutation.subject.arg&&ze(t,H,$.kinds)!==void 0&&re.some(P=>$.kinds.includes(P))));a.length===1&&(_=a[0].mutation.name,ae=!0)}if(!ae&&H){let a=fe.filter(y=>y.chance>=.3).map(y=>ie(y.name)).find(y=>y&&y.mutation.derived?.act!=="merge"&&Z(y.mutation.input).some($=>$.name!==y.mutation.subject.arg&&ze(t,H,$.kinds)!==void 0));a&&(_=a.mutation.name,ae=!0)}let Je=v===void 0?Xn(i):void 0,ln=r.find(a=>a.which==="itself");if(Je&&ln){let a=["label","name","title"],y=D.find(U=>{let E=(ue(U.mutation)??[]).filter(G=>G!==U.mutation.subject.arg);return U.reading.which==="itself"&&E.length===1&&(a.includes(E[0])||(U.mutation.writes??[]).some(G=>a.includes(G)))}),$=y?(ue(y.mutation)??[]).find(U=>U!==y.mutation.subject.arg):void 0,P=$?(y.mutation.input?.shape??{})[$]:void 0;if(y&&$&&P?.safeParse(Je).success)return{sure:!0,reading:{...ln,close:!1},each:{act:y.mutation.name,args:{[$]:Je}},usage:x.usage}}if(_&&!ie(_)){let a=D.find(P=>P.mutation.name===_),y=P=>{let U=a?.mutation?.derived?.act,E=P.mutation.derived?.act;return U!==void 0?U===E:(P.mutation.title??P.mutation.name).split(/\s+/)[0].toLowerCase()===(a?.mutation.title??_??"").split(/\s+/)[0].toLowerCase()},$=D.find(P=>P.reading.which===O.which&&y(P));$&&(_=$.mutation.name)}let B=_&&ae?ie(_):void 0;if(B&&!(se?.who&&!je(B.mutation,dn))){let a=(ue(B.mutation)??[]).filter(G=>G!==B.mutation.subject.arg),y=Z(B.mutation.input),$=B.mutation.input?.shape??{},P={},U=!0;for(let G of a){let me=y.find(We=>We.name===G),un=me?me.optional:$[G]?.safeParse(void 0).success??!0,hn=me&&H?ze(t,H,me.kinds):void 0;me&&hn?P[G]=hn.id:!me&&!un&&a.filter(We=>!y.some(En=>En.name===We)).length===1&&Me(i)!==void 0&&$[G]?.safeParse(Me(i)).success?P[G]=Me(i):un||(U=!1)}if(B.mutation.derived?.act==="edit"&&Object.keys(P).length===0&&(U=!1),!U)return{sure:!1,reading:O,...X?{taken:X}:{},act:B.mutation.name,usage:x.usage};let E=M.length===1||(l?.chance??0)>=Qe(B.mutation,i);return Ie(B.mutation)&&O.records.length>1&&(!E||Ye(i,O))?{sure:!0,reading:O,clarify:Qn(t,B.mutation.title??B.mutation.name,O),usage:x.usage}:{sure:!0,reading:O,...X?{taken:X}:{},each:{act:B.mutation.name,args:P},usage:x.usage}}let fn=de(x.answers.need),In=D.some(a=>a.reading.which===O.which&&je(a.mutation,dn));if(se?.who&&!In&&(fn?.key==="person"&&fn.chance>=qe||te!==void 0||Q!==void 0||X!==void 0||se.owned===!0)){let a=se.who??(H&&re.includes(H.kind)?ne(H):void 0);if(!a)return{sure:!1,reading:O,usage:x.usage};let y=v?`${ye(g(O.kind))} have no ${se.called}.`:`${ye(g(O.kind))} have no one ${se.called} them.`;return{sure:!0,reading:O,...X?{taken:X}:{},missing:{said:y,need:{link:{on:O.kind,called:se.called,to:"person"}},who:a},text:y,usage:x.usage}}return{sure:!1,reading:O,...X?{taken:X}:{},..._&&w&&w.chance>=.3?{act:_}:{},usage:x.usage}}var Ge=/\b(me|my|mine|myself)\b/i,Hn=/\b(?:to|off|from|for|with)\s+(her|him|them|that person|whoever)\b|\b(?:take|put|move|swap|drop)\s+(her|him)\b/i,Gn=/^(her|him|them|they|that person|whoever)$/i;function zn(n,e,t){if(!e)return;let s=n.graph.getNode(e.id),i=s?L(n.schema.tryDefinition(s.kind),s).toLowerCase():void 0;return(i?n.graph.allNodes().find(d=>d.id!==e.id&&t.has(d.kind)&&L(n.schema.tryDefinition(d.kind),d).toLowerCase()===i):void 0)??(s&&t.has(s.kind),s)}function Bn(n,e){let t=n.graph.getNode(e);return t?L(n.schema.tryDefinition(t.kind),t):void 0}function Yn(n,e,t,s){let i=n.schema,o=e?[...n.graph.in(e),...n.graph.out(e)].filter(r=>s.includes(r.kind)):[],d=(t??"").toLowerCase(),m=[...d?n.graph.allNodes().filter(r=>s.includes(r.kind)&&L(i.tryDefinition(r.kind),r).toLowerCase().split(/\s+/).some(h=>h.length>=3&&new RegExp(`\\b${h.replace(/[^\p{L}\p{N}]/gu,"")}\\b`,"u").test(d))):[],...o],k=r=>L(i.tryDefinition(r.kind),r).toLowerCase();return m.filter((r,h)=>m.findIndex(g=>k(g)===k(r))===h).slice(0,8)}function ze(n,e,t){if(t.includes("*")||t.includes(e.kind))return e;let s=n.schema,i=L(s.tryDefinition(e.kind),n.graph.getNode(e.id)).toLowerCase();return n.graph.allNodes().find(o=>t.includes(o.kind)&&L(s.tryDefinition(o.kind),o).toLowerCase()===i)}function vn(n){let e=n.split(/\s*(?:,\s*and then|,\s*then|\band then\b|;|\bthen\b|,?\s+and\s+)\s*/i).map(i=>i.trim()).filter(Boolean);if(e.length<2||e.length>3)return[n];let t=/^(the|a|an|my|our|your|this|these|that|those|all|every|each|some|it|them|they|he|she|i|we|you|to|for|with|on|in|at|by|of|from|tomorrow|today|tonight|monday|tuesday|wednesday|thursday|friday|saturday|sunday)$/i,s=i=>{let o=i.split(/\s+/);return o.length>=2&&/^[a-z]/.test(o[0])&&!t.test(o[0])};return e.every(s)?e:[n]}function Oe(n,e=!1){let t=n.toLowerCase(),s=/\b(done|finished|completed|complete|closed|ticked|checked)( off)? (ones?|tasks?|items?|stuff|things|bits)\b/.test(t)||/\b(ones?|tasks?|items?|things|stuff) (i'?ve|we'?ve|i have|we have|that are|that'?s|already) (done|finished|completed|closed|ticked off)\b/.test(t)||/\balready (done|finished|completed)\b/.test(t)||/\bthe (finished|completed)\b/.test(t),i=/\b(outstanding|remaining|unfinished|undone|incomplete|pending)\b/.test(t)||/\b(still to do|left to do|not done|not finished|not yet done)\b/.test(t)||/\b(open) (ones?|tasks?|items?|stuff|things)\b/.test(t)||e&&/\bopen\b/.test(t);return s&&i?{open:!1,finished:!1}:{open:i,finished:s}}function $n(n){let{open:e,finished:t}=Oe(n);return e||t?!0:xn(n)?!1:/\b(all|every|each|everything|the lot|the whole (list|lot)|every one|both|these|those)\b/i.test(n)}function xn(n){let e=/\bthe ([a-z]+) (ones?|tasks?|items?|stuff|things|shifts?|songs?)\b/i.exec(n)?.[1]?.toLowerCase();return e!==void 0&&!["other","rest","whole","same"].includes(e)&&!Oe(`the ${e} ones`).open&&!Oe(`the ${e} ones`).finished}function Qe(n,e){return n.derived?.act==="archive"&&n.destructive!==!0&&/\b(these|those|all|everything|every one|each|them|the lot|the whole (list|lot))\b/i.test(e)?.75:.9}function Ie(n){return n.destructive===!0||n.derived?.act==="remove"||n.derived?.act==="archive"}function Qn(n,e,t){let s=n.schema,i=e.trim().split(/\s+/)[0].toLowerCase(),o=h=>Sn.some(g=>n.graph.getNode(h)?.[g]===!0),d=t.records.filter(o),u=(s.tryDefinition(t.kind)?.noun??t.kind).toLowerCase(),m=K(s,t.kind).toLowerCase(),k=/ (in .+)$/.exec(t.words)?.[1],r=`all ${t.records.length} ${m}${k?` ${k}`:""}`;return d.length>0&&d.length<t.records.length?`Should I ${i} the ${d.length} done ${d.length===1?u:m}, or ${r}?`:`Should I ${i} ${r}? Say \u201Call\u201D to go ahead, or say which.`}function Ke(n){let e=/^\s*(?:please\s+|pls\s+|could you\s+|can you\s+|would you\s+|can we\s+|let'?s\s+)?(e-?mail|mail|text|sms|message|whatsapp|call|phone|ring|dial|pay|venmo|book|reserve|post|tweet|share)\b(.*)$/i.exec(n);return e!==null&&!/^\s+(?:it|this|that|this one)\s+(?:[A-Z“"']|as\b|to\b)/.test(e[2]??"")}var Kn=[[/\b(e-?mail|mail)\b/i,"send email"],[/\b(text|sms|message|whatsapp|dm)\b/i,"send messages"],[/\b(call|phone|ring|dial)\b/i,"make calls"],[/\b(pay|venmo|transfer|invoice)\b/i,"make payments"],[/\b(book|reserve)\b/i,"book things"],[/\b(post|tweet|share)\b/i,"post outside this app"]];function Ve(n,e,t){let s=Kn.find(([d])=>d.test(e))?.[1]??"do things outside this app",i=t?n.graph.getNode(t):void 0,o=i?Object.values(i).find(d=>typeof d=="string"&&(/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(d)||/^https?:\/\//.test(d))):void 0;return o?`I can't ${s} from here, but its ${o.includes("@")&&!o.startsWith("http")?"email":"link"} is ${o} \u2014 open it to do that.`:`I can't ${s} from here: this app keeps your records, and doing that happens outside it.`}function Xe(n){return Vn(n)?!1:/\?\s*$/.test(n)||/^\s*(who|whom|whose|what|whats|what's|when|where|which|why|how|is|are|was|were|can|could|should|any|anything|tell me|show me|list)\b/i.test(n)||/^\s*(do|does|did)\s+(you|we|i|they|it|he|she|anyone|anybody|any)\b/i.test(n)}function Vn(n){let e=n.trim().toLowerCase();return!!(/^(please|pls|kindly)\b/.test(e)||/^(could|can|would|will) (you|we|u)\s+(please\s+)?(?!tell|say|explain|show me what|see)\w+/.test(e)&&!/^(could|can|would|will) (you|we) (be|have)\b/.test(e)||/^(i'?d like|i would like|i want|i need|let'?s|we should|we need to)\b/.test(e)||/^[\p{L}'’]+(\s[\p{L}'’]+)?\s+(should|needs to|need to|has to|have to|ought to)\s+(be\s+)?\w+/u.test(e)&&!/^(what|who|which|when|where|why|how|is|are|do|does)\b/.test(e))}function Xn(n){let e=n.trim().replace(/[.!]+$/,""),t=[/^(?:the\s+|its\s+|this\s+|list\s+|task\s+)*name\s+should\s+be\s+["“']?(.+?)["”']?$/i,/^(?:please\s+)?call\s+(?:this one|this list|this task|this shift|this song|it|this)\s+["“']?(.+?)["”']?$/i,/^["“']?(.+?)["”']?\s+is\s+a\s+better\s+name$/i,/^(?:please\s+)?(?:re)?name\s+(?:this one|this list|this task|this shift|this song|it|this)\s+(?:to\s+|as\s+)?["“']?(.+?)["”']?$/i,/^(?:let'?s\s+)?call\s+(?:it|this)\s+["“']?(.+?)["”']?$/i];for(let s of t){let i=s.exec(e)?.[1]?.trim();if(i)return i}}var Ze=/^\s*(undo|take (that|it) back|revert|go back)\b/i;function Me(n){let e=/\b(?:to|as)\s+["“']?(.+?)["”']?\s*[.!]?\s*$/i.exec(n)?.[1]?.trim();return e&&e.length>0?e:void 0}function Zn(n){return n?.type!=="choice"?[]:Object.entries(n.probabilities).filter(([e])=>e!=="none").sort((e,t)=>t[1]-e[1]).map(([e,t])=>({name:e.slice(e.indexOf(":")+1),chance:t}))}function et(n){let e=n?.trim();return e?`${e}${/[.!?]$/.test(e)?"":"."} `:""}function en(n,e,t){let s=[],i=(ue(n)??[]).filter(r=>r!==n.subject?.arg),o=Z(n.input).filter(r=>r.name!==n.subject?.arg),d=e.tryDefinition(t)?.fields?.shape??{},u=r=>d[r]?._zod?.def?.type==="optional"?d[r]?._zod?.def?.innerType?._zod?.def?.type:d[r]?._zod?.def?.type,m=n.derived?.act;m==="remove"?s.push("removes it"):m==="archive"?s.push("sets it aside in the archive"):m==="unarchive"?s.push("brings it back from the archive"):m==="merge"?s.push("merges it into another"):m==="edit"&&s.push("changes any of its fields to values given");for(let r of n.writes??[])n.sets&&r in n.sets?s.push(`sets ${r} to ${String(n.sets[r])}`):i.includes(r)?s.push(`sets ${r} to a value given`):u(r)==="boolean"?s.push(`sets ${r} yes or no`):s.push(`changes ${r}`);for(let r of i)!(n.writes??[]).includes(r)&&!o.some(h=>h.name===r)&&m!=="edit"&&s.push(`takes ${r}`);let k=[...new Set(o.flatMap(r=>r.kinds))].filter(r=>r!=="*").join(" or ");return(n.connects?.length??0)>0&&(n.severs?.length??0)>0?s.push(`moves it to another ${k||"record"}`):(n.connects?.length??0)>0?s.push(`links it to ${Le(k||"record")}`):(n.severs?.length??0)>0&&s.push(`unlinks it from ${Le(k||"record")}`),n.destructive&&m!=="remove"&&s.push("removes it for good"),(n.creates?.length??0)>0&&s.push(`adds a new ${n.creates.join(" or ")}`),s.length>0?`(It ${s.join(", ")}.)`:""}var nt=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],tt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function nn(n){let e=/^(\d{4})-(\d{2})-(\d{2})$/.exec(n);if(!e)return;let t=new Date(Date.UTC(Number(e[1]),Number(e[2])-1,Number(e[3])));return`${nt[t.getUTCDay()]}, ${tt[t.getUTCMonth()]} ${t.getUTCDate()}`}function tn(n,e){let t=n.schema;if(e.records.length===1&&typeof e.act.describe=="function"&&e.act.subject)try{let f=e.act.describe({...e.args,[e.act.subject.arg]:e.records[0]},n.graph);if(typeof f=="string"&&f.trim()){let p=he(n),v=[e.records[0]].filter(S=>n.graph.getNode(S)!==void 0).map(S=>n.graph.getNode(S)).filter(S=>!p.includes(S.kind)).map(S=>L(t.tryDefinition(S.kind),S)).sort((S,J)=>J.length-S.length),T=f.trim().replace(/"([^"]*)"/g,"\u201C$1\u201D");for(let S of v)T.includes(`\u201C${S}\u201D`)||(T=T.replace(S,`\u201C${S}\u201D`));let N=T.replace(/\b(\d{4}-\d{2}-\d{2})\b/g,S=>nn(S)??S).replace(/[.!]+$/,"");return`${N.charAt(0).toUpperCase()}${N.slice(1)}.`}}catch{}let s=f=>{let p=n.graph.getNode(f);return p?L(t.tryDefinition(p.kind),p):void 0},i=Z(e.act.input),o=e.act.subject?.arg,d=Object.entries(e.args).filter(([f,p])=>f!==o&&p!==void 0&&p!==null&&p!=="").map(([f,p])=>{if(i.find(T=>T.name===f)&&typeof p=="string"){let T=n.graph.getNode(p),N=s(p)??p;return{arg:f,said:T?N:p,ref:!0}}return typeof p=="string"?{arg:f,said:nn(p)??`\u201C${p}\u201D`,ref:!1}:{arg:f,said:String(p),ref:!1}}),m=(e.records[0]?n.graph.getNode(e.records[0]):void 0)?.kind,k=m?(t.tryDefinition(m)?.noun??m).toLowerCase():"record",r=e.records.length,h=e.itself&&r===1&&e.records[0]?s(e.records[0])?`\u201C${s(e.records[0])}\u201D`:"it":`the ${r}${e.narrowed?` ${e.narrowed}`:""} ${r===1?k:m?K(t,m).toLowerCase():"records"}${e.where?` ${e.where}`:""}`,g=(e.act.title??e.act.name).trim().replace(/[.!]+$/,""),b=/\b(it|this|the (?:task|list|shift|record|song|item))\b/i;if(/^(they|it|this|she|he|somebody|someone)\b/i.test(g))return g=g.replace(/^(they|it|this|she|he|somebody|someone)\b/i,h).replace(/^(\S.*?)\s+\b(have|are)\b/i,(f,p,v)=>`${p} ${r===1?v.toLowerCase()==="have"?"has":"is":v}`),`${g.charAt(0).toUpperCase()}${g.slice(1)}.`;g=b.test(g)?g.replace(b,h):/^\S+ the \w+$/i.test(g)?`${g} of ${h}`:g.replace(/^(\S+)/,`$1 ${h}`);for(let f of d)/\b(?:to|into|on) another \w+/i.test(g)?g=g.replace(/\b(to|into|on) another \w+/i,`$1 ${f.said}`):/\banother \w+/i.test(g)?g=g.replace(/\banother \w+/i,f.said):g=`${g} ${f.ref&&!/\bto\b/i.test(g)&&/^(cover|assign|give)/i.test(g)?"with":"to"} ${f.said}`;return`${g.charAt(0).toUpperCase()}${g.slice(1)}.`}function On(n,e,t){let s=n.schema,i=he(n),o=h=>{let g=n.graph.getNode(h);if(!g)return h;let b=L(s.tryDefinition(g.kind),g);return i.includes(g.kind)?b:`\u201C${b}\u201D`},d=e.writes?.[0],u=t[0]?n.graph.getNode(t[0]):void 0,m=d&&u?u[d]:void 0,k=t.length===1?o(t[0]):`All ${t.length} of them`,r=t.length===1?"is":"are";return d&&typeof m=="boolean"?`Nothing to change: ${k} ${r} already ${m?"":"not "}${d.replace(/[A-Z]/g,h=>` ${h.toLowerCase()}`)}.`:d&&(typeof m=="string"||typeof m=="number")?`Nothing to change: ${t.length===1?`${k}'s`:"their"} ${d.replace(/[A-Z]/g,h=>` ${h.toLowerCase()}`)} ${r==="is"?"is":"are"} already ${nn(String(m))??m}.`:`Nothing to change: ${k} ${r} already as that would leave ${t.length===1?"it":"them"}.`}var Nn="I can't do that here: nothing in this app does what you asked. Try saying it another way.";function Cn(n){return/\b(can'?t|cannot|couldn'?t|won'?t|not|no|isn'?t|doesn'?t|don'?t|unable|nothing|never)\b/i.test(n)?!1:/\b(is|are|was|were|has been|have been|got|gets)\s+(now\s+)?(\w+ed|done|taken|set|put|given|made|gone|off|out|away|moved|removed)\b/i.test(n)||/^(i'?ve|i have|done|marked|moved|removed|archived|renamed|assigned|added|scheduled|deleted|dropped|finished|closed|updated|changed|set|put|took|taken)\b/i.test(n.trim())||/\b(i'?ve|i have)\s+\w+ed\b/i.test(n)}var st=/\b(not in (this|the) app|isn'?t in (this|the) app|is not in (this|the) app|not (yet )?(a|one of the) (user|member|person|people|volunteer|record)s?|doesn'?t exist|does not exist|no one (called|named)|nobody (called|named)|not found|no such|there is no|there'?s no|no (user|person|member|volunteer|record|one) (called|named))\b/i;function sn(n,e){if(!st.test(e))return[];let t=n.schema,s=he(n),i=e.toLowerCase();return n.graph.allNodes().flatMap(o=>{let d=L(t.tryDefinition(o.kind),o),u=d.split(/\s+/)[0];return d.length>=3&&(i.includes(d.toLowerCase())||s.includes(o.kind)&&u.length>=3&&new RegExp(`\\b${u.toLowerCase().replace(/[^\p{L}\p{N}]/gu,"")}\\b`,"u").test(i))?[{id:o.id,name:d,kind:o.kind}]:[]}).slice(0,5)}function Te(n){if(!n.off)return n.fast??(n.decide?{model:n.name??"decide",decide:n.decide}:void 0)}function Re(n){if(n.off)return;if(n.thinking)return n.thinking;let e=n.name??"model";if(n.complete){let t=n.complete;return{model:e,think:({system:s,prompt:i})=>t({prompt:i,system:s})}}if(n.turn){let t=n.turn;return{model:e,think:async({system:s,prompt:i})=>({text:await t({system:s,messages:[{role:"user",content:i}],tools:[],call:async()=>({error:"No tools here."})})})}}}var Ce=(n,e,t)=>n?e/1e6*(n.inputPerMillion??0)+t/1e6*(n.outputPerMillion??0):void 0,it=()=>`ai-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;function ot(n,e,t=[]){let s=i=>{let o=n.graph.getNode(i);return o?L(n.schema.tryDefinition(o.kind),o):"a record"};switch(e.on){case"record":return s(e.id);case"field":return`${s(e.id)} \xB7 ${e.field}`;case"selection":return`${e.ids.length} records`;case"list":return n.schema.tryDefinition(e.kind)?K(n.schema,e.kind):e.kind;case"lens":case"place":return t.find(i=>i.as===e.place)?.title??(e.place==="home"?"Home":e.place);case"act":return e.act}}var Pn=n=>n.type!=="act"||n.asks.length===0,Ee=(n,e)=>({id:n.id,type:n.type,label:n.label,...e!==void 0?{confidence:e}:{}});function ke(n,e){let t=e.interaction??it(),s=pn(e.store,e.target,{principal:e.principal,...e.acts?{acts:e.acts}:{},...e.places?{places:e.places}:{}}),i=mn(e.store,e.target,{principal:e.principal,...e.place?{place:e.place}:{},...e.selection?{selection:e.selection}:{},...e.purpose?{purpose:e.purpose}:{}}),o=[];return{id:t,catalog:s,state:i,entry:{id:t,at:new Date().toISOString(),by:e.by??e.principal,target:e.target,targetLabel:ot(e.store,e.target,e.places)},usage:o,meter:d=>{o.push(d),n.meter?.({...d,interaction:t})}}}async function be(n,e,t,s){let i=await n.decide(e,t),{inputTokens:o,outputTokens:d}=i.usage,u=Ce(n.price,o,d);return s({tier:"fast",model:n.model,inputTokens:o,outputTokens:d,...u!==void 0?{costUsd:u}:{}}),i.answers}async function ee(n,e,t,s,i){let o=await n.think({system:e,prompt:t,state:s.state,catalog:s.catalog}),d=o.usage?.inputTokens,u=o.usage?.outputTokens,m=o.usage?.costUsd??(d!==void 0?Ce(n.price,d,u??0):void 0);return i({tier:"thinking",model:n.model,...d!==void 0?{inputTokens:d}:{},...u!==void 0?{outputTokens:u}:{},...m!==void 0?{costUsd:m}:{}}),yn(o.text)}function Se(n,e){let t=new Map(n.map((s,i)=>[`c${i+1}`,s]));return{question:{type:"choice",instructions:e,criteria:Object.fromEntries([...t].map(([s,i])=>[s,`${i.label} \u2014 ${i.description}`]))},of:s=>t.get(s)}}function Pe(n,e,t){if(n?.type!=="choice")return[];let s=n,i=Object.entries(s.probabilities).sort((o,d)=>d[1]-o[1]);return i.some(([o])=>o===s.choice)||i.unshift([s.choice,s.confidence]),i.flatMap(([o,d])=>{let u=e(o);return u?[{candidate:u,confidence:d}]:[]}).slice(0,t)}var I=(n,e,t,s)=>({interaction:{...n.entry,ask:{kind:t,said:e??""},offered:[],outcome:"failed",failed:s,usage:[...n.usage]},offers:[]}),Ae="AI isn't on here.";async function Mt(n,e,t=3){let s=ke(n,e),i=e.said??"Suggest",o=s.catalog.candidates.filter(Pn).slice(0,24);if(o.length===0)return{interaction:{...s.entry,ask:{kind:"suggest",said:i},offered:[],outcome:"offered",usage:[]},offers:[]};let d=Te(n),u=Re(n),m=[];try{if(d){let{question:k,of:r}=Se(o,"Which of these would the person most likely want to do next, here?"),h=await be(d,{...s.state,candidates:o.map(g=>({id:g.id,type:g.type,says:g.description}))},{next:k},s.meter);m=Pe(h.next,r,t)}else if(u){let k=await ee(u,'You suggest what a person most likely wants to do next in an app. Answer only JSON: {"pick": [candidate ids, best first]}. Pick only ids from the candidates.',JSON.stringify({state:s.state,candidates:o.map(h=>({id:h.id,says:h.description}))}),s,s.meter);m=(Array.isArray(k?.pick)?k.pick.filter(h=>typeof h=="string"):[]).flatMap(h=>o.filter(g=>g.id===h)).slice(0,t).map(h=>({candidate:h}))}else return I(s,i,"suggest",Ae)}catch(k){return I(s,i,"suggest",k instanceof Error?k.message:String(k))}return{interaction:{...s.entry,ask:{kind:"suggest",said:i},offered:m.map(({candidate:k,confidence:r})=>Ee(k,r)),outcome:"offered",usage:[...s.usage]},offers:m.map(({candidate:k})=>k)}}var rt=n=>`several:${n}`;async function It(n,e,t=2){let s=ke(n,{...e,acts:[]}),i=e.said??"Suggest for the chosen",o=e.target.on==="selection"?e.target.ids.length:1,u=[...e.shared.map(r=>({type:"act",id:rt(r.id),label:r.label,description:`${r.label}, for all ${o} chosen`,mutation:r.mutation,args:r.args,asks:[]})),...s.catalog.candidates.filter(r=>r.type==="panel"||r.type==="place")].slice(0,24),m=Te(n);if(!m)return I(s,i,"suggest",Ae);if(u.length===0)return{interaction:{...s.entry,ask:{kind:"suggest",said:i},offered:[],outcome:"offered",usage:[]},offers:[]};let k;try{let{question:r,of:h}=Se(u,`Which of these would the person most likely want to do next with the ${o} records they chose together?`),g=await be(m,{...s.state,candidates:u.map(b=>({id:b.id,type:b.type,says:b.description}))},{next:r},s.meter);k=Pe(g.next,h,t).filter((b,f)=>f===0||b.confidence>=at)}catch(r){return I(s,i,"suggest",r instanceof Error?r.message:String(r))}return{interaction:{...s.entry,ask:{kind:"suggest",said:i},offered:k.map(({candidate:r,confidence:h})=>Ee(r,h)),outcome:"offered",usage:[...s.usage]},offers:k.map(({candidate:r})=>r)}}var at=.25;async function Et(n,e){let t=ke(n,e),s=e.said??"Fill in",i=t.catalog.candidates.filter(h=>h.type==="fill"),o=new Map;for(let h of i)o.set(h.field,[...o.get(h.field)??[],h]);if(o.size===0)return{interaction:{...t.entry,ask:{kind:"fill",said:s},offered:[],outcome:"offered",usage:[]},offers:[]};let d=Te(n),u=Re(n),m=[];try{if(d){let h=[...o].map(([b,f],p)=>({key:`f${p+1}`,field:b,...Se(f,`Which value fits "${b}" best for this record?`)})),g=await be(d,t.state,Object.fromEntries(h.map(b=>[b.key,b.question])),t.meter);for(let b of h){let f=!dt(e.store,e.target,b.field)&&ct(e.store,e.target,b.field)!=="one";m.push(...Pe(g[b.key],b.of,f?3:1).filter((p,v)=>v===0||p.confidence>=.4))}}else if(u){let h=await ee(u,`You fill in a record's fields in an app. Answer only JSON: {"fills": [candidate ids]}, at most one per field, only ids from the candidates.`,JSON.stringify({state:t.state,candidates:i.map(f=>({id:f.id,says:f.description}))}),t,t.meter),g=Array.isArray(h?.fills)?h.fills.filter(f=>typeof f=="string"):[],b=new Set;for(let f of g){let p=i.find(v=>v.id===f);p?.type==="fill"&&!b.has(p.field)&&(b.add(p.field),m.push({candidate:p}))}}else return I(t,s,"fill",Ae)}catch(h){return I(t,s,"fill",h instanceof Error?h.message:String(h))}let k=t.usage.at(-1)?.model,r=_e(e.store,{interaction:t.id,target:e.target,basis:s,...k?{model:k}:{},proposals:m.flatMap(({candidate:h,confidence:g})=>h.type==="fill"?[{id:h.id,label:h.label,said:h.description,call:h.call,record:h.record,field:h.field,...g!==void 0?{confidence:g}:{}}]:[])},e.principal);return{interaction:{...t.entry,ask:{kind:"fill",said:s},offered:r.proposals.map(h=>({id:h.id,type:"fill",label:h.label,...h.confidence!==void 0?{confidence:h.confidence}:{}})),outcome:"offered",usage:[...t.usage]},offers:[],...r.proposals.length>0?{ghost:r}:{}}}function dt(n,e,t){let s=e.on==="record"||e.on==="field"?e.id:void 0,i=s?n.graph.getNode(s)?.kind:void 0,o=(i?n.schema.tryDefinition(i)?.fields?.shape:void 0)??{};return t in o}function ct(n,e,t){let s=e.on==="record"||e.on==="field"?e.id:void 0,i=s?n.graph.getNode(s)?.kind:void 0;return i?n.schema.tryDefinition(i)?.edges?.[t]?.cardinality:void 0}async function _t(n,e){let t=ke(n,e),s=e.said??"Add one",i=new Set(e.store.allMutations().filter(r=>(r.creates??[]).length>0).map(r=>r.name)),o=t.catalog.candidates.filter(r=>r.type==="act"&&r.asks.length>0&&i.has(r.mutation));if(o.length===0)return I(t,s,"record","Nothing here makes a record.");let d=Re(n);if(!d)return I(t,s,"record",Ae);let u;try{let r=await ee(d,'You propose one new record for an app by filling in an act. Answer only JSON: {"act": a candidate id, "args": {argument: value}}. Use only the candidates, and fill every argument the act asks for with a value that fits the state.',JSON.stringify({ask:s,state:t.state,candidates:o.map(b=>({id:b.id,says:b.description,asks:b.asks}))}),t,t.meter),h=o.find(b=>b.id===r?.act),g=typeof r?.args=="object"&&r.args!==null?r.args:{};h&&(u={act:h,args:Object.fromEntries(Object.entries(g).filter(([b])=>h.asks.includes(b)))})}catch(r){return I(t,s,"record",r instanceof Error?r.message:String(r))}if(!u)return I(t,s,"record","The model named no act this app has here.");let m=t.usage.at(-1)?.model,k=_e(e.store,{interaction:t.id,target:e.target,basis:s,...m?{model:m}:{},proposals:[{id:u.act.id,label:u.act.label,said:u.act.description,call:{name:u.act.mutation,args:{...u.act.args,...u.args}}}]},e.principal);return k.proposals.length===0?I(t,s,"record","What the model proposed could not be made here."):{interaction:{...t.entry,ask:{kind:"record",said:s},offered:k.proposals.map(r=>({id:r.id,type:"act",label:r.said})),outcome:"offered",usage:[...t.usage]},offers:[u.act],ghost:k}}async function Ut(n,e){let t=ke(n,e),s=e.said??"Make a panel",i=t.catalog.candidates.filter(r=>r.type==="panel");if(i.length===0)return I(t,s,"panel","Nothing here can be drawn as a panel.");let o=Te(n),d=Re(n),u;try{if(d){let r=await ee(d,'You choose a panel to draw in an app. Answer only JSON: {"panel": a candidate id, "title": a short title}. Choose only among the candidates.',JSON.stringify({ask:s,state:t.state,candidates:i.map(g=>({id:g.id,says:g.description}))}),t,t.meter),h=i.find(g=>g.id===r?.panel);h&&(u={panel:h,...typeof r?.title=="string"&&r.title.trim()?{title:r.title.trim().slice(0,60)}:{}})}else if(o){let{question:r,of:h}=Se(i,`Which panel answers this best: ${s}`),g=Pe((await be(o,t.state,{panel:r},t.meter)).panel,h,1)[0];g?.candidate.type==="panel"&&(u={panel:g.candidate,confidence:g.confidence})}else return I(t,s,"panel",Ae)}catch(r){return I(t,s,"panel",r instanceof Error?r.message:String(r))}if(!u)return I(t,s,"panel","The model named no panel this app can draw.");let m=u.title??u.panel.label,k={title:m,recipe:{...u.panel.panel,title:m}};return{interaction:{...t.entry,ask:{kind:"panel",said:s},offered:[Ee(u.panel,u.confidence)],outcome:"drawn",panel:k,usage:[...t.usage]},offers:[u.panel],panel:k}}function lt(n){return n.off?void 0:n.answer}var we=`You answer a person who typed words about what they are looking at in an app, from the state given and nothing else: "facts" says the fields and links of each record ("covered by Ada Nowak", "holds it: This week"), as they see them \u2014 answer from them, and never say a record has no link the facts show. Before answering, look through "facts" for the link or field the words are about \u2014 what it waits for, who covers it, what holds it, when it is due \u2014 and name it: "what is blocking this" is answered by its "waits for" links, by name. A link the facts do not show is not there: say plainly that there is none, never borrow one from another record, and answer what was asked \u2014 a count by counting, a day by its day. Answer only JSON: {"answer": one to three short, whole sentences written to the person, "pick": [candidate ids that act on the answer, best first, at most three]}. Pick only ids from the candidates, and none when nothing fits. Never say an id to the person. Where "members" are given and the person asks for something done to them, answer "each": {"act": the name of one of "member_acts", "args": every value it asks for, by name, dates as YYYY-MM-DD counted from "today"; the facts already say each day against today, so trust those} \u2014 one act over every member, as one change. Judge an act by what it does ("does"), not only its title: "close", "complete", "check off", "tick" and "finish" are an act that marks something done; "delete" one that removes; "push", "move" and "postpone" one that changes a date or a place. Where "fast_leaned_to" names an act, it is likely the one: fill its values. When the person tells it to do something, answer "each" (with a short "answer" saying what it will do): nothing is done until they accept, so never say in words that it is done, and never ask them to confirm ("Move it to Friday?"): the card asks them, so answer "each". Where "people" maps a word like "her" or "me" to a name, that is who they mean. Only where no act among "member_acts" or the candidates does what they ask, because the app has no field or link for it, answer "lacks": one whole sentence to the person saying what the app is missing (never an id, never a note to yourself), and "need": what it would need \u2014 {"link": {"on": the kind of the records, "called": what the link is called in their words, like "assigned to", "to": the kind it points to, or a noun for one the app lacks}} or {"field": {"on": the kind, "called": its name in their words, "type": "string", "number", "date" or "boolean"}} \u2014 with "who": the name of the record their words name (for a link) or "value": the value they give (for a field). When they ask for a change the app has no field or link for ("make these urgent", "give these a priority"), answer "lacks" and "need", never only "answer". A question is answered in "answer", never with "each" or "lacks"; so is "undo that", which the app's own Undo does.`;async function Jt(n,e){let t=ke(n,e),s=e.said.trim(),i=lt(n),o=Te(n),d=[],u=async(c,A,l)=>{let C=Date.now();try{return await l()}finally{d.push({stage:c,ms:Date.now()-C,model:A})}},m={...t,entry:t.entry},k,r,h,g;if(o&&s&&!i&&(e.target.on==="record"||e.target.on==="list"||e.target.on==="lens"||e.target.on==="selection"))try{let c=O=>An(o,{store:e.store,target:e.target,said:O,...e.principal.id?{principal:{id:e.principal.id}}:{},...e.members?{members:e.members}:{},...e.follows?{follows:e.follows}:{},...e.where?{where:e.where}:{},...e.examples?{examples:e.examples}:{}}),A=vn(s);if(A.length>1){let O=await u("fast",o.model,()=>Promise.all(A.map(c)));for(let w of O){let R=Ce(o.price,w.usage.inputTokens,w.usage.outputTokens);m.meter({tier:"fast",model:o.model,inputTokens:w.usage.inputTokens,outputTokens:w.usage.outputTokens,...R!==void 0?{costUsd:R}:{}})}if(O.every(w=>w.sure&&w.each&&!w.asks))return Tn(e,m,s,O,d)}let l=await u("fast",o.model,()=>c(s)),C=Ce(o.price,l.usage.inputTokens,l.usage.outputTokens);if(m.meter({tier:"fast",model:o.model,inputTokens:l.usage.inputTokens,outputTokens:l.usage.outputTokens,...C!==void 0?{costUsd:C}:{}}),k=l.reading,r=l.act,h=l.asks,g=l.taken,l.sure&&(l.each||l.missing||l.clarify||l.outside))return Tn(e,m,s,l,d)}catch{}let b=()=>h??Xe(s),f=n.off?void 0:n.light,p=Re(n),v=f??p,T=m.catalog.candidates.filter(c=>Pn(c)||c.type==="panel"||c.type==="place"||c.type==="record").slice(0,32),N;try{N=o&&(i||v)&&s?await mt(o,s,m,T):Ln(m,T)}catch(c){return I(m,s,"ask",c instanceof Error?c.message:String(c))}let S={...m,state:N.state,catalog:{...m.catalog,candidates:N.choices},entry:{...m.entry,context:N.context}},J=N.choices,M=(k?.records??e.members??[]).flatMap(c=>{let A=e.store.graph.getNode(c);return A?[A]:[]}).slice(0,60),ve=new Set(M.map(c=>c.kind)),Y=e.store.allMutations().flatMap(c=>{let A=c.subject?.kinds;if(!c.subject||!(A==="*"||A.some(C=>ve.has(C))))return[];let l=[...ve].find(C=>A==="*"||A.includes(C));return[{name:c.name,title:c.title??c.name,does:`${c.description??""} ${en(c,e.store.schema,l)}`.trim(),subjectArg:c.subject.arg,asks:(ue(c)??[]).filter(C=>C!==c.subject.arg)}]}),W,D,re,j="",F=[],De=c=>c.flatMap(A=>J.filter(l=>l.id===A)).slice(0,3).map(A=>({candidate:A}));try{if(i){let c=await i.answer({said:s,target:e.target,targetLabel:S.entry.targetLabel,state:S.state,catalog:{target:S.catalog.target,candidates:J},...e.follows?{follows:e.follows}:{}}),A=c.usage?.inputTokens,l=c.usage?.outputTokens,C=c.usage?.costUsd??(A!==void 0?Ce(i.price,A,l??0):void 0);S.meter({tier:"thinking",model:i.model,...A!==void 0?{inputTokens:A}:{},...l!==void 0?{outputTokens:l}:{},...C!==void 0?{costUsd:C}:{}}),j=typeof c.text=="string"?c.text.trim():"",F=De(c.pick??[])}else if(v){let c=JSON.stringify({ask:s,about:S.entry.targetLabel,...e.follows?{follows:e.follows}:{},...e.examples&&e.examples.length>0?{worked_before:e.examples,worked_before_is:"What people of this app asked before and what was done that they kept: where these words mean the same, do the same."}:{},state:S.state,candidates:J.map(w=>({id:w.id,says:w.description})),facts:wn(e.store,e.principal,[...new Set([...e.target.on==="record"?[e.target.id,...Be(e.store,e.target.id)?.ids??[]]:[],...M.map(w=>w.id),...e.members??[]])],on(e.store)),...M.length>0?{members:M.map(w=>({id:w.id,label:L(e.store.schema.tryDefinition(w.kind),w)})),member_acts:Y.map(w=>({name:w.name,title:w.title,does:w.does,asks:w.asks}))}:{},...r?{fast_leaned_to:r}:{},...g?{people:{[g.said]:g.as}}:{},everyone_in_the_app:he(e.store).flatMap(w=>e.store.graph.allNodes().filter(R=>R.kind===w)).slice(0,40).map(w=>L(e.store.schema.tryDefinition(w.kind),w)),...on(e.store)?{today:bn(on(e.store))}:{}});re=c;let A=w=>!!(w&&(typeof w.answer=="string"&&w.answer.trim()||Array.isArray(w.pick)&&w.pick.length>0||w.each||w.lacks)),l=await u(f?"light":"thinking",v.model,()=>ee(v,we,c,S,S.meter));f&&p&&p!==f&&!A(l)&&(l=await u("thinking",p.model,()=>ee(p,we,c,S,S.meter)));let C=!b()&&!Ze.test(s)&&M.length>0,O=w=>Array.isArray(w)&&w.some(R=>{let V=J.find(z=>z.id===R);return V!==void 0&&Ne(V)!==void 0});if(C&&l&&!l.each&&!l.lacks&&!O(l.pick)){let w=await u(f?"light":"thinking",v.model,()=>ee(v,we,JSON.stringify({...JSON.parse(c),told:'They told you to do this, not asked a question. Reply with exactly one of two shapes, never "answer" alone: "each" with an act from member_acts and its values, or "lacks" and "need" (and "value") where no act can \u2014 for example {"lacks": "Tasks have no priority yet.", "need": {"field": {"on": "task", "called": "priority", "type": "string"}}, "value": "high"}.'}),S,S.meter));if(w&&(w.each||w.lacks))l=w;else if(r){let R=Y.find(z=>z.name===r),V=R?e.store.allMutations().find(z=>z.name===R.name)?.input?.shape??{}:{};R&&R.asks.every(z=>V[z]?.safeParse(void 0).success??!0)&&(l={...l,answer:"",each:{act:R.name,args:{}}})}}if(!b()&&l?.each&&(l={...l,pick:Array.isArray(l.pick)?l.pick.filter(w=>{let R=J.find(V=>V.id===w);return R!==void 0&&Ne(R)===void 0}):l.pick}),b()&&l&&(l={...l,each:void 0}),l&&typeof l.answer=="string"&&l.answer.trim()&&!oe(l.answer)&&!l.each&&!l.lacks){let w=await u(f?"light":"thinking",v.model,()=>ee(v,we,JSON.stringify({...JSON.parse(c),rewrite:`Your answer was not whole sentences: \u201C${String(l.answer).slice(0,300)}\u201D. Say it again in one to three whole sentences to the person, each begun with a capital and ended with a full stop.`}),S,S.meter));w&&typeof w.answer=="string"&&oe(w.answer)?l={...l,answer:w.answer}:b()&&/^[\p{L}\p{N}"“'(][^{}[\]]*$/u.test(String(l.answer).trim())&&String(l.answer).trim().split(/\s+/).length>=2&&(l={...l,answer:`${String(l.answer).trim().charAt(0).toUpperCase()}${String(l.answer).trim().slice(1).replace(/[\s,;:]+$/,"")}.`})}if(b()&&l&&!(typeof l.answer=="string"&&l.answer.trim())){let w=await u(f?"light":"thinking",v.model,()=>ee(v,we,JSON.stringify({...JSON.parse(c),rewrite:'This is a question: answer it in "answer", in one to three whole sentences, from the facts.'}),S,S.meter));w&&typeof w.answer=="string"&&oe(w.answer)&&(l={...l,answer:w.answer})}if(j=typeof l?.answer=="string"?l.answer.trim():"",F=De(Array.isArray(l?.pick)?l.pick:[]),W=ht(l?.each),j&&!oe(j)&&(j=W?"":xe),typeof l?.lacks=="string"&&l.lacks.trim()){let w=ut(l.need),R=l.lacks.trim();D={said:oe(R)?R:w?ft(e.store.schema,w):xe,...w?{need:w}:{},...typeof l.who=="string"&&l.who.trim()?{who:l.who.trim()}:{},...typeof l.value=="string"||typeof l.value=="number"?{value:String(l.value)}:{}}}}else if(o&&J.length>0){let{question:c,of:A}=Se(J,`Which of these best answers, or acts on: ${s}`),l=await be(o,{...S.state,asked:s,candidates:J.map(C=>({id:C.id,type:C.type,says:C.description}))},{answer:c},S.meter);F=Pe(l.answer,A,3),j=F.length>0?`These fit \u201C${s}\u201D.`:""}else return I(S,s,"ask",Ae)}catch(c){return I(S,s,"ask",c instanceof Error?c.message:String(c))}for(let c of[j,D?.said??""]){let A=c?sn(e.store,c):[];if(A.length===0||!v)continue;let l=A.map(R=>`${R.name} (${K(e.store.schema,R.kind).toLowerCase()})`).join(", "),C=await u(f?"light":"thinking",v.model,()=>ee(v,we,JSON.stringify({...JSON.parse(re??"{}"),known:`These are in the app: ${l}. Never say they are not.`}),S,S.meter)),O=typeof C?.answer=="string"?C.answer.trim():"",w=O&&oe(O)&&sn(e.store,O).length===0?O:`${A[0].name} is here, one of its ${K(e.store.schema,A[0].kind).toLowerCase()}. Try saying it another way.`;c!==j&&(D=void 0),j=w}!b()&&Ke(s)&&!/\b(field|link|column)\b/i.test(s)&&(D=void 0,W=void 0,F=[],j=Ve(e.store,s,e.target.on==="record"?e.target.id:void 0));let ne=!!W||F.some(({candidate:c})=>Ne(c)!==void 0);if(!b()&&!ne&&!D&&j&&Cn(j)&&(j=Nn),!j&&F.length===0&&!W&&!D){let c=e.target.on==="place"||e.target.on==="lens"?e.target.place:void 0,A=e.target.on==="list"||e.target.on==="lens"?e.target.kind:void 0;return gn(e.store,{type:"unanswered",question:s,...c?{place:c}:{},...A?{kind:A}:{}},e.principal),I(S,s,"ask","The AI had no answer to that here.")}let $e=S.usage.at(-1)?.model,te=b(),Q=W?e.store.allMutations().find(c=>c.name===W.act):void 0;if(Q&&Ie(Q)&&M.length>1&&(k?(k.chance??1)<Qe(Q,s)||Ye(s,k):!$n(s))){let c=`Should I ${(Q.title??Q.name).trim().split(/\s+/)[0].toLowerCase()} all ${M.length} of them? Say \u201Call\u201D to go ahead, or say which.`;return{interaction:{...S.entry,ask:{kind:"ask",said:s},offered:[],outcome:"offered",answer:c,usage:[...S.usage],stages:d},offers:[],answer:c,...k?{reading:k}:{}}}let ge=(te?[]:F).flatMap(({candidate:c,confidence:A})=>{let l=Ne(c);return l?[{...l,...A!==void 0?{confidence:A}:{}}]:[]}),q=W?Y.find(c=>c.name===W.act):void 0;if(q)for(let c of M){let A=e.store.allMutations().find(C=>C.name===q.name),l=A?.subject?.kinds;!A||!(l==="*"||l.includes(c.kind))||ge.push({id:`each:${q.name}:${c.id}`,label:`${q.title}: ${L(e.store.schema.tryDefinition(c.kind),c)}`,said:q.title,call:{name:q.name,args:{...W.args,[q.subjectArg]:c.id}},record:c.id})}let ce=ge.filter((c,A)=>ge.findIndex(l=>l.call.name===c.call.name&&JSON.stringify(l.call.args)===JSON.stringify(c.call.args))===A),x=ce.length>0?_e(e.store,{interaction:S.id,target:e.target,basis:s,...$e?{model:$e}:{},proposals:ce},e.principal):void 0,pe=F.map(({candidate:c})=>c).filter(c=>te||Ne(c)===void 0);if(!W&&!te&&x&&x.proposals.length>0&&(j=x.proposals.slice(0,3).flatMap(c=>{let A=e.store.allMutations().find(C=>C.name===c.call.name),l=A?.subject?c.call.args[A.subject.arg]:void 0;return A&&typeof l=="string"?[tn(e.store,{act:A,args:c.call.args,records:[l],itself:!0})]:[]}).join(" ")),W&&Q&&x){let c=M.map(A=>A.id).filter(A=>x.proposals.some(l=>l.id===`each:${Q.name}:${A}`));c.length>0&&(j=Dn(e.store,Q,W.args,c,k??(M.length===1&&e.target.on==="record"&&M[0].id===e.target.id?{which:"itself",records:c,kind:M[0].kind,words:"",close:!1}:void 0)))}let rn=[...pe.map(c=>Ee(c,F.find(A=>A.candidate===c)?.confidence)),...(x?.proposals??[]).map(c=>({id:c.id,type:c.field!==void 0?"fill":"act",label:c.label,...c.confidence!==void 0?{confidence:c.confidence}:{}}))];return{interaction:{...S.entry,ask:{kind:"ask",said:s},offered:rn,outcome:"offered",...j?{answer:j}:{},usage:[...S.usage],stages:d},offers:pe,...x&&x.proposals.length>0?{ghost:x}:{},...j?{answer:j}:D?{answer:D.said}:{},...D?{missing:D.need&&k&&"link"in D.need?{...D,need:{link:{...D.need.link,on:k.kind}}}:D}:{},...k?{reading:k}:{},...g?{taken:g}:{}}}function Dn(n,e,t,s,i){let o=i?.part,d=i?/ (in .+)$/.exec(i.words)?.[1]:void 0;return tn(n,{act:e,args:t,records:s,...o?{narrowed:o}:{},...d?{where:d}:{},itself:i?.which==="itself"})}function on(n){try{let e=(typeof n.today=="function"?n.today():void 0)??new Date().toISOString();return/^\d{4}-\d{2}-\d{2}/.test(e)?e.slice(0,10):void 0}catch{return}}function ft(n,e){let t=d=>K(n,d).toLowerCase(),s=d=>d.charAt(0).toUpperCase()+d.slice(1),{on:i,called:o}="link"in e?e.link:e.field;return`${s(t(i))} have no \u201C${s(o)}\u201D yet.`}function Tn(n,e,t,s,i){let o=Array.isArray(s)?s:[s],d=[];for(let p of o){if(!p.each||!p.reading)continue;let v=n.store.allMutations().find(T=>T.name===p.each.act);for(let T of p.reading.records){let N=n.store.graph.getNode(T);!N||!v?.subject||d.push({id:`each:${v.name}:${T}`,label:`${v.title??v.name}: ${L(n.store.schema.tryDefinition(N.kind),N)}`,said:v.title??v.name,call:{name:v.name,args:{...p.each.args,[v.subject.arg]:T}},record:T})}}let u=e.usage.at(-1)?.model,m=d.length>0?_e(n.store,{interaction:e.id,target:n.target,basis:t,...u?{model:u}:{},proposals:d},n.principal):void 0,k=(m?.proposals??[]).map(p=>({id:p.id,type:"act",label:p.label})),r=new Set((m?.proposals??[]).map(p=>p.id)),h=o.map(p=>{if(p.clarify)return p.clarify;if(p.outside)return p.outside;if(p.each&&p.reading){let v=n.store.allMutations().find(N=>N.name===p.each.act),T=p.reading.records.filter(N=>r.has(`each:${p.each.act}:${N}`));return T.length>0&&v?Dn(n.store,v,p.each.args,T,p.reading):v?On(n.store,v,p.reading.records):"Nothing here would change."}return p.text??p.missing?.said??""}).filter(Boolean).join(" "),g=o[0],b=o.find(p=>p.missing)?.missing,f=o.find(p=>p.taken)?.taken;return{interaction:{...e.entry,ask:{kind:"ask",said:t},offered:k,outcome:"offered",...h?{answer:h}:{},usage:[...e.usage],stages:[...i]},offers:[],...m&&m.proposals.length>0?{ghost:m}:{},...h?{answer:h}:{},...b?{missing:b}:{},...g.reading&&o.length===1?{reading:g.reading}:{},...f?{taken:f}:{}}}function ut(n){if(typeof n!="object"||n===null)return;let{link:e,field:t}=n,s=i=>typeof i=="string"&&i.trim()?i.trim():void 0;if(e&&s(e.on)&&s(e.called)&&s(e.to))return{link:{on:s(e.on),called:s(e.called),to:s(e.to)}};if(t&&s(t.on)&&s(t.called)){let i=["string","number","date","boolean"].includes(String(t.type))?t.type:"string";return{field:{on:s(t.on),called:s(t.called),type:i}}}}function ht(n){if(typeof n!="object"||n===null)return;let{act:e,args:t}=n;if(typeof e=="string")return{act:e,args:typeof t=="object"&&t!==null&&!Array.isArray(t)?t:{}}}function _e(n,e,t){let s=e.proposals.flatMap(i=>{try{let o=n.previewAll([i.call],{author:t}),d=o.ops.map(u=>u.intent).join("; ");return o.ops.length>0?[{...i,said:d||i.said}]:[]}catch{return[]}});return{...e,proposals:s}}function Ne(n){if(n.type==="fill")return{id:n.id,label:n.label,said:n.description,call:n.call,record:n.record,field:n.field};if(n.type==="act"&&n.asks.length===0)return{id:n.id,label:n.label,said:n.description,call:{name:n.mutation,args:{...n.args}}}}function Wt(n,e,t){let s=e.proposals.filter(o=>t.ids===void 0||t.ids.includes(o.id));if(s.length===0)return{ok:!1,refused:"Nothing was chosen."};let i=s.flatMap(o=>o.confidence===void 0?[]:[o.confidence]);try{let d=n.applyAll(s.map(u=>u.call),{author:t.author,via:`ai:${e.interaction}`,intent:e.basis,lineage:{basis:`Asked \u201C${e.basis}\u201D`,...e.model?{model:e.model}:{},...i.length>0?{confidence:Math.min(...i)}:{},interaction:e.interaction}}).ops[0]?.batch;return d?{ok:!0,batch:d,accepted:s.map(u=>u.id)}:{ok:!1,refused:"That changes nothing now."}}catch(o){return{ok:!1,refused:o instanceof Error?o.message:String(o)}}}function Ft(n,e,t){let s=n.ask.kind==="suggest"?e.length>0:n.offered.length>0&&n.offered.every(i=>e.includes(i.id));return{...n,outcome:s?"accepted":"partly",accepted:e,batches:[...n.batches??[],t]}}var qt=n=>({...n,outcome:"dismissed"}),Rn={candidates:8,records:6},gt=.1,pt=12,jn=n=>{let e=new Set;return[...n.selection,...n.neighbors].filter(t=>!e.has(t.id)&&(e.add(t.id),!0))};function Ln(n,e){return{choices:e,state:n.state,context:{by:"default",candidates:e.map(t=>t.id),records:jn(n.state).map(t=>t.id)}}}async function mt(n,e,t,s){let i=jn(t.state),o={},d=s.length>0?Se(s,`Which of these could answer, or act on: ${e}`):void 0;d&&(o.candidates={...d.question,criteria:{...d.question.criteria,none:"None of these"}});let u=new Map(i.slice(0,pt).map((f,p)=>[`record-${p+1}`,f]));for(let[f,p]of u)o[f]={type:"noul",instructions:`Is \u201C${e}\u201D about ${p.label} (${p.kind})?`};if(Object.keys(o).length===0)return{...Ln(t,s),context:{by:"fast",model:n.model,candidates:[],records:[]}};let m=await be(n,{target:t.state.target,asked:e},o,t.meter),r=d?((f,p,v)=>{if(f?.type!=="choice"||f.choice==="none")return[];let T=Object.entries(f.probabilities).filter(([N])=>N!=="none").sort((N,S)=>S[1]-N[1]);return T.some(([N])=>N===f.choice)||T.unshift([f.choice,f.confidence]),T.filter(([,N],S)=>S===0||N>=gt).flatMap(([N])=>{let S=p(N);return S===void 0?[]:[S]}).slice(0,v)})(m.candidates,d.of,Rn.candidates):[],h=[...u].flatMap(([f,p])=>{let v=m[f];return v?.type==="noul"&&v.noul>.5?[{record:p,chance:v.noul}]:[]}).sort((f,p)=>p.chance-f.chance).slice(0,Rn.records).map(f=>f.record),g=new Set(h.map(f=>f.id)),b={...t.state,selection:t.state.selection.filter(f=>g.has(f.id)),neighbors:t.state.neighbors.filter(f=>g.has(f.id))};return{choices:r,state:b,context:{by:"fast",model:n.model,candidates:r.map(f=>f.id),records:h.map(f=>f.id)}}}export{_n as a,Te as b,Re as c,it as d,ot as e,Mt as f,rt as g,It as h,Et as i,_t as j,Ut as k,Jt as l,_e as m,Ne as n,Wt as o,Ft as p,qt as q};
@@ -1 +0,0 @@
1
- import"./chunk.25VJPUDH.js";import"./chunk.KHRS2SKB.js";import"./chunk.T6PU3NKP.js";import"./chunk.LON75VHP.js";import"./chunk.7VQ3C7F4.js";import{a as x,b as P,c as L}from"./chunk.N2FNHRI2.js";import{b as R}from"./chunk.FDWRH5P2.js";import"./chunk.44ZHHPPJ.js";import"./chunk.ZDUTEM3Z.js";import"./chunk.ZZM75ZTN.js";import"./chunk.ISN2QTVL.js";import"./chunk.ARHAD5IS.js";import"./chunk.R2TSTDS3.js";import"./chunk.QSDBF7VL.js";import"./chunk.2PK335JQ.js";import"./chunk.MHTA4HYB.js";import"./chunk.BU5PVRX7.js";import"./chunk.3KUYB5ZT.js";import"./chunk.IMKD6QQG.js";import"./chunk.HJCQ6I3S.js";import"./chunk.ZJFXM3LE.js";import"./chunk.PTQPS2FJ.js";import"./chunk.UETLP5KC.js";import"./chunk.IQC3GOXO.js";import"./chunk.NKYYDFIX.js";import"./chunk.IR4OW67N.js";import"./chunk.6RZHKQP3.js";import"./chunk.N35SJWAM.js";import"./chunk.L7NJLZWV.js";import"./chunk.QO5RXOCS.js";import"./chunk.TBY5IR7C.js";import"./chunk.XSWR5LI4.js";import"./chunk.BIDL7GQD.js";import"./chunk.XTTESA7X.js";import"./chunk.J6KNEI5R.js";import"./chunk.2YMO7ZVX.js";import"./chunk.MH46V556.js";import"./chunk.XOZU4OFA.js";import"./chunk.5M34BJIQ.js";import"./chunk.Q5WEOX3Q.js";import"./chunk.UHI3X2YD.js";import"./chunk.INTJD5WG.js";import"./chunk.YFVJUHAK.js";import"./chunk.2QQ37RCZ.js";import"./chunk.MIE4TJRW.js";import{s as T}from"./chunk.CXJJB3MK.js";import"./chunk.OJGHDWI6.js";import"./chunk.74B6KQF4.js";import"./chunk.WVUJXDXZ.js";import"./chunk.S2DOVJRL.js";import"./chunk.64FCAUAJ.js";import"./chunk.DA4RSHLW.js";import"./chunk.FOSY7MZF.js";import"./chunk.NBVPWLRY.js";import"./chunk.S3EEY7T3.js";import"./chunk.SPCAMQJE.js";import"./chunk.TUCSUZNO.js";import"./chunk.ZMWAZACO.js";import"./chunk.CD6YWH6T.js";import"./chunk.MD36ZSM5.js";import"./chunk.L6FGKJ5H.js";import{G as S,I as $,V as p,da as C,fa as A}from"./chunk.3CJLAJXP.js";import"./chunk.SDO3U72B.js";import{ka as v,sd as k}from"./chunk.J24YPQ5I.js";import"./chunk.FQLNBIQ5.js";import{b as i}from"./chunk.AJZBJBMO.js";var r=i(S(),1);var l=i(S(),1);var g=i(p(),1);var m={font:"inherit",fontSize:"0.875rem",minHeight:24,padding:0,border:0,borderRadius:2,background:"transparent",boxShadow:"none",color:"var(--graview-accent)",textDecoration:"underline",textUnderlineOffset:3,textAlign:"start",cursor:"pointer"};var e=i(p(),1);function Q({page:n=!1,go:E,onPick:y,onDiscard:N}){let{store:d,seatTalk:c}=C(),u=$(c),D=L(),h=E??D,{keep:M}=x(h),[H,f]=(0,r.useState)(!1);A();let t=u.draft;(0,r.useEffect)(()=>f(!1),[t]),(0,r.useEffect)(()=>{n||P(!1)},[n]);let w=(0,r.useRef)(null),b=t!==null&&!n;if((0,r.useLayoutEffect)(()=>{let s=w.current;if(!b||!s?.parentElement)return;let o=[];for(let a=s.previousElementSibling;a;a=a.previousElementSibling)a instanceof HTMLElement&&!a.inert&&a.tagName!=="STYLE"&&(a.inert=!0,o.push(a));return()=>{for(let a of o)a.inert=!1}},[b]),!t)return null;let G=R(t.drawn),F=d.schema.tryDefinition(t.kind),O=d.graph.nodesOfKind(t.kind).filter(s=>v(F,s)),q=()=>{c.setDraft(null),N?.()};return(0,e.jsxs)("section",{ref:w,"data-testid":"draft-frame","data-graview-draft-frame":n?"page":"scene","aria-label":`Draft: ${t.title}`,style:n?{display:"grid",gap:12,minWidth:0}:{position:"absolute",inset:12,zIndex:k("rail"),display:"grid",gridTemplateRows:"auto auto minmax(0, 1fr)",background:"var(--graview-panel)",border:"1px solid var(--graview-edge)",borderRadius:12,boxShadow:"var(--graview-lift-high)",overflow:"hidden",minHeight:0},children:[(0,e.jsxs)("p",{"data-testid":"draft-line",style:{...z,...n?{}:{padding:"10px 16px"}},children:[n?(0,e.jsx)("span",{children:"Draft"}):(0,e.jsxs)("span",{children:["Draft \u2014 ",(0,e.jsx)("span",{"data-testid":"draft-title",style:{color:"var(--graview-ink)",fontWeight:600},children:t.title})]}),(0,e.jsx)("span",{"aria-hidden":"true",children:"\xB7"}),(0,e.jsx)("button",{type:"button","data-testid":"draft-keep",disabled:H,title:`Keep \u201C${t.title}\u201D as a lens: a place of its own`,onClick:()=>{f(!0),M(t).finally(()=>f(!1))},style:m,children:"Keep as a lens"}),(0,e.jsx)("span",{"aria-hidden":"true",children:"\xB7"}),(0,e.jsx)("button",{type:"button","data-testid":"draft-discard",onClick:q,style:m,children:"Discard"})]}),u.draftNote?(0,e.jsx)("p",{"data-testid":"draft-note",role:"status",style:{margin:0,padding:n?0:"0 16px 8px",fontSize:"0.8125rem",color:"var(--graview-warn)"},children:u.draftNote}):(0,e.jsx)("span",{}),(0,e.jsx)("div",{"data-testid":"draft-lens","data-graview-draft":t.lens.name,role:"group","aria-label":t.title,tabIndex:0,style:n?{height:"min(72vh, 760px)",display:"grid",gridTemplateRows:"minmax(0, 1fr)",overflow:"auto",scrollbarGutter:"stable",border:"1px solid var(--graview-edge)",borderRadius:12,background:"var(--graview-panel)"}:{minHeight:0,overflow:"auto",scrollbarGutter:"stable",display:"grid",gridTemplateRows:"minmax(0, 1fr)"},onClick:s=>{let o=s.target?.closest("[data-graview-pick]")?.getAttribute("data-graview-pick");if(!o||!d.graph.getNode(o))return;s.preventDefault();let a=d.graph.getNode(o);y?(c.setDraft(null),y(o)):h({to:"record",id:o,kind:a.kind,label:o,address:"",said:""})},children:(0,e.jsx)(T,{kind:t.kind,view:t.title,children:(0,e.jsx)(G,{nodes:O,label:t.title,fidelity:"full",cardinality:"many",mode:"fullscreen",selected:!1})})})]})}var z={margin:0,display:"flex",flexWrap:"wrap",alignItems:"baseline",gap:"4px 8px",fontSize:"0.875rem",color:"var(--graview-ink-muted)",borderBottom:"1px solid var(--graview-edge)",paddingBottom:8};export{Q as DraftFrame};
@@ -1 +0,0 @@
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 oe}from"./chunk.QSDBF7VL.js";import{p as Te,q as ne,t as W,u as xe,y as De}from"./chunk.CXJJB3MK.js";import{m as Z,n as be,o as Ae,p as ee,q as te}from"./chunk.OJGHDWI6.js";import{b as Ee}from"./chunk.NBVPWLRY.js";import{b as Se,d as J,e as X,g as Me,q as Ie}from"./chunk.MD36ZSM5.js";import{b as ge}from"./chunk.L6FGKJ5H.js";import{D as R,F as j,G as C,Ia as we,J as ve,Ja as ke,Ka as T,Oa as V,Q as ye,Qa as $,V as S,da as M,ea as F,fa as _,m as me,v as fe,z as he}from"./chunk.3CJLAJXP.js";import{a as E}from"./chunk.SDO3U72B.js";import{Pd as pe,nd as ue,pa as q,sd as de}from"./chunk.J24YPQ5I.js";import{b as h}from"./chunk.AJZBJBMO.js";var D=h(C(),1),I=h(S(),1),re=T(E(()=>(__graviewPreload(import.meta.url,["./chunk.3CJLAJXP.js","./chunk.SDO3U72B.js","./chunk.J24YPQ5I.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.CPYBJNHP.js")))),Ne=re.part(e=>(0,I.jsx)(e.HoverChipDoor,{}),{quiet:!0}),Re="A",Q=T(E(()=>(__graviewPreload(import.meta.url,["./chunk.KHRS2SKB.js","./chunk.T6PU3NKP.js","./chunk.LON75VHP.js","./chunk.7VQ3C7F4.js","./chunk.ZZM75ZTN.js","./chunk.ISN2QTVL.js","./chunk.2PK335JQ.js","./chunk.3KUYB5ZT.js","./chunk.IMKD6QQG.js","./chunk.HJCQ6I3S.js","./chunk.ZJFXM3LE.js","./chunk.PTQPS2FJ.js","./chunk.UETLP5KC.js","./chunk.IQC3GOXO.js","./chunk.NKYYDFIX.js","./chunk.6RZHKQP3.js","./chunk.L7NJLZWV.js","./chunk.TBY5IR7C.js","./chunk.XSWR5LI4.js","./chunk.BIDL7GQD.js","./chunk.XTTESA7X.js","./chunk.J6KNEI5R.js","./chunk.2YMO7ZVX.js","./chunk.MH46V556.js","./chunk.XOZU4OFA.js","./chunk.5M34BJIQ.js","./chunk.Q5WEOX3Q.js","./chunk.UHI3X2YD.js","./chunk.INTJD5WG.js","./chunk.YFVJUHAK.js","./chunk.2QQ37RCZ.js","./chunk.CXJJB3MK.js","./chunk.OJGHDWI6.js","./chunk.74B6KQF4.js","./chunk.S2DOVJRL.js","./chunk.64FCAUAJ.js","./chunk.DA4RSHLW.js","./chunk.FOSY7MZF.js","./chunk.NBVPWLRY.js","./chunk.S3EEY7T3.js","./chunk.SPCAMQJE.js","./chunk.TUCSUZNO.js","./chunk.ZMWAZACO.js","./chunk.CD6YWH6T.js","./chunk.MD36ZSM5.js","./chunk.L6FGKJ5H.js","./chunk.3CJLAJXP.js","./chunk.SDO3U72B.js","./chunk.J24YPQ5I.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.XE762VL2.js"))));var We=Q.part((e,t)=>(0,I.jsx)(e.InspectorPane,{...t}),{what:"This card's acts"});function Ge(e){let t=()=>{(typeof navigator>"u"||navigator.onLine!==!1)&&e()},n=globalThis;if(n.requestIdleCallback){let a=n.requestIdleCallback(t,{timeout:5e3});return()=>n.cancelIdleCallback?.(a)}let r=setTimeout(t,2500);return()=>clearTimeout(r)}var He=150,Be="[data-graview-pick], [data-graview-view], [data-graview-record], [data-graview-act], [data-graview-field], a[href]";function ze(e){if(e.closest("[data-graview-face='pages'], [data-graview-popover]"))return null;let t=e.closest("[data-graview-pick]")?.getAttribute("data-graview-pick")??e.closest("[data-graview-view]")?.getAttribute("data-graview-view");return t?{face:"scene",on:t,about:[t]}:null}function qe(e){let{store:t,principal:n,providers:r,ai:a}=M(),p=xe(),v=j(a),i=(0,D.useRef)({aimAt:e,store:t,principal:n,providers:r,prepareSections:p,chipsOn:v});i.current={aimAt:e,store:t,principal:n,providers:r,prepareSections:p,chipsOn:v},(0,D.useEffect)(()=>{if(typeof document>"u")return;let u=null,w=null,k=null,l=g=>{let m=i.current,A=m.chipsOn?m.aimAt(g):null;A&&(k=g,re.load().then(z=>{k===g&&z.restOn(A,g)},()=>{}))},f=()=>{u&&clearTimeout(u.timer),u=null},c=g=>{let m=i.current,A=m.aimAt(g);if(!A)return;let z=JSON.stringify([A.face,A.on,A.about,A.field,A.place,A.act,m.store.log.length]);z!==w&&(w=z,m.prepareSections(A),Q.load().then(Oe=>Oe.prepareActs(m.store,A,{principal:m.principal,providers:m.providers}),()=>{}))},o=g=>g.target instanceof Element?g.target.closest(Be):null,d=g=>{if(g.pointerType==="touch")return;let m=o(g);m!==null&&m===u?.element||(f(),m!==null&&(u={element:m,timer:setTimeout(()=>{u=null,c(m),l(m)},He)}))},y=g=>{let m=g.relatedTarget;k!==null&&!(m instanceof Node&&k.contains(m))&&(k=null,re.current?.leaveRest()),u!==null&&(m instanceof Node&&u.element.contains(m)||f())},b=g=>{if(g.pointerType==="mouse")return;let m=o(g);m&&c(m)},x=g=>{if(!we())return;let m=o(g);m&&c(m)};return document.addEventListener("pointerover",d,{passive:!0}),document.addEventListener("pointerout",y,{passive:!0}),document.addEventListener("pointerdown",b,{capture:!0,passive:!0}),document.addEventListener("focusin",x),()=>{f(),document.removeEventListener("pointerover",d),document.removeEventListener("pointerout",y),document.removeEventListener("pointerdown",b,{capture:!0}),document.removeEventListener("focusin",x)}},[])}function ft({placement:e="float",openActs:t,aimAt:n}={}){let{menuAt:r,setMenuAt:a,registerActsDoor:p,ai:v}=M(),{selection:i}=V();qe(n??ze),(0,D.useEffect)(()=>{if(Q.current)return;let f=()=>{y(),Q.prefetch()},c=()=>{},o=ke(()=>void(c=Ge(f))),d=["pointerdown","keydown"];for(let b of d)document.addEventListener(b,f,{capture:!0,passive:!0});function y(){o(),c();for(let b of d)document.removeEventListener(b,f,{capture:!0})}return y},[]),(0,D.useEffect)(()=>{if(e==="menu")return p({key:Re,open:t??(f=>{let c=f.getBoundingClientRect(),o=f.closest("[data-graview-pick]")?.getAttribute("data-graview-pick")??f.closest("[data-graview-view]")?.getAttribute("data-graview-view")??void 0;a({x:Math.round(c.left+Math.min(16,c.width/2)),y:Math.round(Math.min(c.bottom,c.top+36)),...o?{on:o}:{}})})}),()=>p(null)},[e,p,a,t]);let u=r!==null||i.length>0&&t===void 0,[w,k]=(0,D.useState)(u);(0,D.useEffect)(()=>{u&&k(!0)},[u]);let l=j(v)?(0,I.jsx)(D.Suspense,{fallback:null,children:(0,I.jsx)(Ne,{})}):null;return!w&&!u?l:(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(D.Suspense,{fallback:null,children:(0,I.jsx)(We,{placement:e,chosen:t===void 0})}),l]})}var Y=h(C(),1),K=h(S(),1),Fe=T(E(()=>(__graviewPreload(import.meta.url,["./chunk.25VJPUDH.js","./chunk.KHRS2SKB.js","./chunk.T6PU3NKP.js","./chunk.LON75VHP.js","./chunk.7VQ3C7F4.js","./chunk.N2FNHRI2.js","./chunk.FDWRH5P2.js","./chunk.44ZHHPPJ.js","./chunk.ZDUTEM3Z.js","./chunk.ZZM75ZTN.js","./chunk.ISN2QTVL.js","./chunk.ARHAD5IS.js","./chunk.R2TSTDS3.js","./chunk.QSDBF7VL.js","./chunk.2PK335JQ.js","./chunk.MHTA4HYB.js","./chunk.BU5PVRX7.js","./chunk.3KUYB5ZT.js","./chunk.IMKD6QQG.js","./chunk.HJCQ6I3S.js","./chunk.ZJFXM3LE.js","./chunk.PTQPS2FJ.js","./chunk.UETLP5KC.js","./chunk.IQC3GOXO.js","./chunk.NKYYDFIX.js","./chunk.IR4OW67N.js","./chunk.6RZHKQP3.js","./chunk.N35SJWAM.js","./chunk.L7NJLZWV.js","./chunk.QO5RXOCS.js","./chunk.TBY5IR7C.js","./chunk.XSWR5LI4.js","./chunk.BIDL7GQD.js","./chunk.XTTESA7X.js","./chunk.J6KNEI5R.js","./chunk.2YMO7ZVX.js","./chunk.MH46V556.js","./chunk.XOZU4OFA.js","./chunk.5M34BJIQ.js","./chunk.Q5WEOX3Q.js","./chunk.UHI3X2YD.js","./chunk.INTJD5WG.js","./chunk.YFVJUHAK.js","./chunk.2QQ37RCZ.js","./chunk.MIE4TJRW.js","./chunk.CXJJB3MK.js","./chunk.OJGHDWI6.js","./chunk.74B6KQF4.js","./chunk.WVUJXDXZ.js","./chunk.S2DOVJRL.js","./chunk.64FCAUAJ.js","./chunk.DA4RSHLW.js","./chunk.FOSY7MZF.js","./chunk.NBVPWLRY.js","./chunk.S3EEY7T3.js","./chunk.SPCAMQJE.js","./chunk.TUCSUZNO.js","./chunk.ZMWAZACO.js","./chunk.CD6YWH6T.js","./chunk.MD36ZSM5.js","./chunk.L6FGKJ5H.js","./chunk.3CJLAJXP.js","./chunk.SDO3U72B.js","./chunk.J24YPQ5I.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.HJUXC5GM.js")))),_e=Fe.part((e,t)=>{let n=e.DraftFrame;return(0,K.jsx)(n,{...t})},{what:"The view"});function yt(e){let{seatTalk:t}=M();return(0,Y.useSyncExternalStore)(t.subscribe,()=>t.get().draft!==null,()=>!1)?(0,K.jsx)(Y.Suspense,{fallback:null,children:(0,K.jsx)(_e,{...e})}):null}var L=h(C(),1),P=h(S(),1),ie=T(E(()=>(__graviewPreload(import.meta.url,["./chunk.IMKD6QQG.js","./chunk.Y2RZ5B4U.js","./chunk.FEGSYSA7.js","./chunk.KROR65KD.js","./chunk.BJUUSIQY.js","./chunk.J6KNEI5R.js","./chunk.2YMO7ZVX.js","./chunk.MH46V556.js","./chunk.XOZU4OFA.js","./chunk.5M34BJIQ.js","./chunk.HJS3LTSR.js","./chunk.64FCAUAJ.js","./chunk.DA4RSHLW.js","./chunk.FOSY7MZF.js","./chunk.NBVPWLRY.js","./chunk.S3EEY7T3.js","./chunk.MD36ZSM5.js","./chunk.L6FGKJ5H.js","./chunk.3CJLAJXP.js","./chunk.SDO3U72B.js","./chunk.J24YPQ5I.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.MAGKI4PD.js")))),Ve=ie.part((e,t)=>{let n=e.QuickAskCard;return(0,P.jsx)(n,{...t})},{what:"The quick ask"});function At({face:e,on:t=!0}){let{ai:n,aiDesk:r,selection:a,view:p}=M(),v=ye()?.open??!1,i=t&&R(n)&&!v,u=Me(r),w=(0,L.useRef)(null),k=(0,L.useRef)({selection:a,place:p.within?.view});return k.current={selection:a,place:p.within?.view},(0,L.useEffect)(()=>{if(!i)return;let l=Se(r);return l.drawn+=1,l.preload=()=>{ie.load().catch(()=>{}),(__graviewPreload(import.meta.url,["./chunk.KROR65KD.js","./chunk.BJUUSIQY.js","./chunk.64FCAUAJ.js","./chunk.S3EEY7T3.js","./chunk.J24YPQ5I.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.7E4CSXBT.js")).catch(()=>{})},J(l),()=>{l.drawn=Math.max(0,l.drawn-1),l.drawn===0&&(l.open=null),J(l)}},[i,r]),(0,L.useEffect)(()=>{if(!i)return;let l=f=>{if(f.defaultPrevented||f.key.toLowerCase()!=="k"||!(f.metaKey||f.ctrlKey)||f.altKey||f.shiftKey)return;let c=w.current?.closest("[data-graview-embed]"),o=f.target,d=!(o instanceof Node)||o===document.body||o===document.documentElement;if(c&&!(d||o instanceof Node&&c.contains(o)))return;f.preventDefault(),ie.prefetch();let y=document.activeElement,{selection:b,place:x}=k.current;X(r,{pointed:{...b[0]!==void 0?{on:b[0]}:{},about:b,...x?{place:x}:{}},returnTo:y instanceof HTMLElement&&y!==document.body?y:null})};return window.addEventListener("keydown",l,!0),()=>window.removeEventListener("keydown",l,!0)},[i,r]),i?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)("span",{ref:w,hidden:!0,"data-graview-quick-ask":e}),u?(0,P.jsx)(L.Suspense,{fallback:null,children:(0,P.jsx)(Ve,{face:e,opening:u,close:()=>X(r,null)},u.at)}):null]}):null}var G=h(C(),1),O=h(S(),1),se=T(E(()=>(__graviewPreload(import.meta.url,["./chunk.Y2RZ5B4U.js","./chunk.FEGSYSA7.js","./chunk.KROR65KD.js","./chunk.BJUUSIQY.js","./chunk.J6KNEI5R.js","./chunk.2YMO7ZVX.js","./chunk.MH46V556.js","./chunk.XOZU4OFA.js","./chunk.5M34BJIQ.js","./chunk.HJS3LTSR.js","./chunk.64FCAUAJ.js","./chunk.DA4RSHLW.js","./chunk.FOSY7MZF.js","./chunk.NBVPWLRY.js","./chunk.S3EEY7T3.js","./chunk.MD36ZSM5.js","./chunk.L6FGKJ5H.js","./chunk.3CJLAJXP.js","./chunk.SDO3U72B.js","./chunk.J24YPQ5I.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.7HPQI5SY.js")))),$e=se.part((e,t)=>{let n=e.InlineAiMenu;return(0,O.jsx)(n,{...t})},{what:"The AI's suggestions"}),Qe=se.part((e,t)=>{let n=e.GhostTray;return(0,O.jsx)(n,{...t})},{quiet:!0});function Ke(){let{ai:e}=M(),t=R(e);return(0,G.useMemo)(()=>t?n=>({id:"inline-ai",heading:"AI",render:r=>(0,O.jsx)(G.Suspense,{fallback:null,children:(0,O.jsx)($e,{target:n,close:r})}),prepare:()=>se.prefetch()}):null,[t])}var Ye=[];function Pt({children:e}){let t=Ke(),n=(0,G.useMemo)(()=>t?[t]:Ye,[t]);return(0,O.jsx)(W,{sections:n,children:e})}function Ct(e){let{ai:t,aiDesk:n}=M(),{ghost:r}=ve(n);return r===null||r.onCard||t.off?null:(0,O.jsx)(G.Suspense,{fallback:null,children:(0,O.jsx)(Qe,{...e})})}var N=h(C(),1);var Ce=h(S(),1),je=e=>globalThis[Symbol.for("graview.shown-lists")]?.get(e),Pe=T(E(()=>(__graviewPreload(import.meta.url,["./chunk.MD36ZSM5.js","./chunk.L6FGKJ5H.js","./chunk.3CJLAJXP.js","./chunk.SDO3U72B.js","./chunk.J24YPQ5I.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.G3Q5IMM3.js"))));function Je(e){let t=e.about[0];if(e.about.length!==1||!t?.startsWith("aggregate:"))return;let n=t.slice(10).split("+");return n.length===1?n[0]:void 0}function Xe(e,t){return e.filter(n=>n.as!==t.as&&!n.hidden&&(n.kind===t.kind||n.over?.includes(t.kind)===!0)).at(-1)}function Ze(e){let t=F(),n=t?.keptViews,r=t?.views,a=(0,N.useContext)(Ie);return(0,N.useMemo)(()=>r?p=>{let v=n?.current(),i=Je(p),u=c=>c.length>0?{id:"tidy-view",items:c,prepare:()=>Pe.prefetch()}:null,w=(c,...o)=>Pe.load().then(d=>d[c](...o),()=>!1),k=(c,o)=>je(c)?.().menu(o,n,a)??[];if(p.place===void 0){if(p.face!=="pages"||i===void 0||p.on!==void 0)return null;let c=v?.may.lenses===!0&&n?.lens!==void 0,o=q(t.store.schema,i),d=r.arrangement?.()?.hide?.includes(i)===!0;return u([...c?[{id:d?"show-list":"hide-list",label:d?"Show":"Hide",hint:d?"Back in the places, for everyone":"Off the places, for everyone; still at its address",run:()=>void w("setListHidden",i,o,n,!d,a)}]:[],...k(`list:${i}`,c)])}let l=r.places().find(c=>c.as===p.place&&(i===void 0||c.kind===i||c.over?.includes(i)===!0));if(!l)return null;let f=n&&v?pe(l,v,n):null;return u([...f?[l.hidden?{id:"show-view",label:"Show",hint:"Back in the places, for everyone",run:()=>void w("setHidden",l,f,n,!1,a)}:{id:"hide-view",label:"Hide",hint:"Off the places and the scene, for everyone",run:()=>void w("setHidden",l,f,n,!0,a)},{id:"delete-view",label:"Delete",hint:`Kept ${30} days under Recently deleted`,run:()=>{let c=Xe(r.places(),l);w("remove",l,f,n,a).then(o=>o&&e?.(l,c))}}]:[],...k(`place:${l.as}`,f==="lens")])}:null,[n,r,a,e])}var et=[];function Bt({children:e}){let{view:t,go:n}=$(),r=(0,N.useCallback)((v,i)=>{let u=t.within?.view;t.focusId===fe(v.kind)&&(u===void 0||u===v.as)&&n(i?he(t,i.kind,i.as):me(t,!0))},[t,n]),a=Ze(r),p=(0,N.useMemo)(()=>a?[a]:et,[a]);return(0,Ce.jsx)(W,{sections:p,children:e})}var H=h(C(),1),ce=h(S(),1),U,ae=new Set,tt=e=>(ae.add(e),()=>void ae.delete(e)),nt=()=>(__graviewPreload(import.meta.url,["./chunk.PV2I4UPH.js","./chunk.MIE4TJRW.js","./chunk.CXJJB3MK.js","./chunk.OJGHDWI6.js","./chunk.74B6KQF4.js","./chunk.DA4RSHLW.js","./chunk.FOSY7MZF.js","./chunk.NBVPWLRY.js","./chunk.S3EEY7T3.js","./chunk.3CJLAJXP.js","./chunk.SDO3U72B.js","./chunk.J24YPQ5I.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.DJVHKBEI.js")).then(e=>{U=e,ae.forEach(t=>t())});function ot(){let{ai:e,aiDesk:t,keptViews:n}=M();De(nt);let r=R(e)&&typeof n?.revise=="function";return(0,H.useMemo)(()=>r?a=>a.section&&U&&n?U.sectionFor(a,t,n):null:null,[r,t,n])}var rt=[];function Vt({children:e}){let t=ot(),n=(0,H.useMemo)(()=>t?[t]:rt,[t]);return(0,ce.jsx)(W,{sections:n,children:e})}function $t(){let e=(0,H.useSyncExternalStore)(tt,()=>U?.SectionDoor,()=>{});return e?(0,ce.jsx)(e,{}):null}function Ut(e={}){return e.scope===void 0?oe:ge(oe,e.scope)}var B=h(C(),1),s=h(S(),1);function nn({inside:e=!1,widthOf:t}={}){let{store:n,view:r,emphasis:a,setEmphasis:p}=M(),v=Te(),{selection:i,set:u}=V(),{show:w}=$(),k=_(),l=(0,B.useMemo)(()=>{let o=new Map;for(let d of n.graph.allEdges()){let y=o.get(d.kind)??{count:0,ends:new Set};y.count+=1;for(let b of[d.from,d.to]){let x=n.graph.getNode(b);x&&y.ends.add(`kind:${x.kind}`)}o.set(d.kind,y)}return[...o.entries()].sort(([d],[y])=>d.localeCompare(y)).map(([d,y])=>({kind:d,count:y.count,ends:[...y.ends]}))},[n,k]),f=Math.max(0,...l.map(o=>o.count));if((0,B.useEffect)(()=>()=>p(null),[p]),!r.overview&&!e||l.length===0)return null;let c=new Set;for(let o of i){if(o.startsWith("kind:")){c.add(o);continue}let d=n.graph.getNode(o);d&&c.add(`kind:${d.kind}`)}return(0,s.jsxs)("section",{"aria-label":"What the lines mean",role:e?"group":void 0,"data-testid":"relation-key",style:e?{display:"grid",gap:1}:{position:"absolute",left:16,top:14,zIndex:de("rail"),display:"grid",gap:1,padding:"8px 10px",borderRadius:10,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-low)",maxWidth:it,animation:"graview-settle 380ms 280ms ease backwards"},children:[e?null:(0,s.jsx)("span",{style:{fontSize:"0.75rem",letterSpacing:"0.16em",textTransform:"uppercase",color:"var(--graview-ink-faint)",paddingBottom:2},children:l.length===1?"1 relation":`${l.length} relations`}),t?(0,s.jsx)(at,{aloft:r.overview===!0}):null,l.map(({kind:o,count:d,ends:y})=>{let{connector:b,style:x}=ne(v,o),g=st(n.schema,o),m=a!==null?a===o:c.size===0||y.some(A=>c.has(A));return(0,s.jsxs)("button",{type:"button",title:n.schema.edge(o)?.description===void 0?`${d} of these`:g.words,onMouseEnter:()=>p(o),onMouseLeave:()=>p(null),onFocus:()=>p(o),onBlur:()=>p(null),onClick:()=>{u(y),w(null)},style:{all:"unset",outline:"revert-layer",cursor:"pointer",display:"grid",gridTemplateColumns:"30px 1fr auto",alignItems:"center",gap:8,minHeight:23,padding:"2px 4px",borderRadius:6,opacity:m?1:.4},children:[(0,s.jsx)("svg",{width:"30",height:"10","aria-hidden":"true",style:{display:"block",opacity:b.visible?1:.35},children:r.overview&&t?(0,s.jsx)("path",{d:"M 1 5 L 29 5",fill:"none",className:"graview-key-ribbon",stroke:"var(--graview-ink)",strokeOpacity:.35,strokeWidth:t(d,f)}):(0,s.jsx)("path",{d:"M 1 5 L 29 5",fill:"none",stroke:ee(x),strokeWidth:te(x,!0),strokeDasharray:Z[x.pattern],strokeLinecap:"round"})}),(0,s.jsxs)("span",{style:{display:"grid",minWidth:0},"data-graview-relation-words":o,children:[(0,s.jsx)("span",{style:{fontSize:"0.8125rem",color:"var(--graview-ink)"},children:g.words}),(0,s.jsx)("span",{style:{fontSize:"0.6875rem",color:"var(--graview-ink-faint)"},children:g.ends})]}),b.visible?null:(0,s.jsx)("span",{"data-graview-quiet":o,style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)",fontStyle:"italic"},children:"not drawn"}),(0,s.jsx)("span",{style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)",fontVariantNumeric:"tabular-nums"},children:d})]},o)})]})}var it="min(280px, calc(100% - 28px))";function st(e,t,n){let r=e.edge(t)?.from??[],a=new Map;for(let i of n!==void 0&&r.includes(n)?[n]:r.length>0?r:[""]){let u=Ee(e,i,t,"out");a.set(u,[...a.get(u)??[],i])}let p=i=>i==="*"?"anything":q(e,i),v=[...a].map(([i,u])=>{let w=u.flatMap(l=>e.tryDefinition(l)?.edges[t]?.to??[]),k=u[0]&&w.length>0?`${u.map(p).join(", ")} \u2192 ${(w.includes("*")?["*"]:[...new Set(w)]).map(p).join(", ")}`:"";return[i.charAt(0).toUpperCase()+i.slice(1),k]});return{words:v.map(([i])=>i).join(" \xB7 "),ends:v.flatMap(([,i])=>i?[i]:[]).join(" \xB7 ")}}function on({edgeKind:e,kit:t,width:n=30}){let r=F(),a=(0,B.useMemo)(()=>ue(t??r?.brand?.kit),[t,r?.brand?.kit]),{connector:p,style:v}=ne(a,e);return(0,s.jsx)("svg",{width:n,height:"8","aria-hidden":"true","data-testid":"relation-mark","data-graview-relation":e,style:{display:"inline-block",verticalAlign:"middle",opacity:p.visible?1:.35},children:(0,s.jsx)("path",{d:`M 1 4 L ${n-1} 4`,fill:"none",stroke:ee(v),strokeWidth:te(v,!0),strokeDasharray:Z[v.pattern],strokeLinecap:"round"})})}function at({aloft:e}){let t={display:"grid",gridTemplateColumns:"30px 1fr",alignItems:"center",gap:8,minHeight:23,padding:"2px 4px"},n={fontSize:"0.75rem",color:"var(--graview-ink-muted)"};return(0,s.jsxs)("div",{role:"group","aria-label":"The lines","data-testid":"line-manners",style:{display:"grid",gap:1,paddingBottom:6,marginBottom:4,borderBottom:"1px solid var(--graview-edge)"},children:[e?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{style:t,"data-graview-manner":"ribbon",children:[(0,s.jsx)("svg",{width:"30",height:"10","aria-hidden":"true",children:(0,s.jsx)("path",{d:"M 1 5 L 29 5",stroke:"var(--graview-ink)",strokeOpacity:.35,strokeWidth:6})}),(0,s.jsx)("span",{style:n,children:"A relation between two districts, as wide as the links along it \u2014 point at one for its words"})]}),(0,s.jsxs)("div",{style:t,"data-graview-manner":"record",children:[(0,s.jsxs)("svg",{width:"30",height:"10","aria-hidden":"true",children:[(0,s.jsx)("path",{d:"M 1 5 L 25 5",stroke:"var(--graview-accent)",strokeWidth:1.8,strokeLinecap:"round"}),(0,s.jsx)("circle",{cx:26,cy:5,r:3,fill:"var(--graview-accent)"})]}),(0,s.jsx)("span",{style:n,children:"A chosen record's link to another record, labeled with the relation"})]}),(0,s.jsxs)("div",{style:t,"data-graview-manner":"district",children:[(0,s.jsx)("svg",{width:"30",height:"10","aria-hidden":"true",children:(0,s.jsx)("path",{d:"M 1 5 L 29 5",stroke:"var(--graview-accent)",strokeWidth:1.8,strokeDasharray:"5 4"})}),(0,s.jsx)("span",{style:n,children:"A chosen record's links into a district, with how many"})]})]}):null,(0,s.jsxs)("div",{style:t,"data-graview-manner":"unsure",children:[(0,s.jsx)("svg",{width:"30",height:"10","aria-hidden":"true",children:(0,s.jsx)("path",{d:"M 1 5 L 29 5",stroke:"var(--graview-accent)",strokeOpacity:Ae,strokeWidth:1.8,strokeDasharray:be,strokeLinecap:"round"})}),(0,s.jsx)("span",{style:n,children:"Unsure: a link its maker was less than sure of, until a person keeps it \u2014 point at its words for what it was based on"})]})]})}var Le=h(C(),1),le=h(S(),1),ct=T(E(()=>(__graviewPreload(import.meta.url,["./chunk.25VJPUDH.js","./chunk.GPCKOYSF.js","./chunk.UETLP5KC.js","./chunk.IQC3GOXO.js","./chunk.NKYYDFIX.js","./chunk.6RZHKQP3.js","./chunk.L7NJLZWV.js","./chunk.2YMO7ZVX.js","./chunk.DA4RSHLW.js","./chunk.FOSY7MZF.js","./chunk.NBVPWLRY.js","./chunk.S3EEY7T3.js","./chunk.MD36ZSM5.js","./chunk.L6FGKJ5H.js","./chunk.3CJLAJXP.js","./chunk.SDO3U72B.js","./chunk.J24YPQ5I.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.77XQEDT5.js")))),lt=ct.part(e=>(0,le.jsx)(e.SuggestedTray,{}),{quiet:!0});function cn(){let{store:e,whileAway:t}=M(),n=_();return(0,Le.useMemo)(()=>e.log.all().some(a=>a.suggests!==void 0&&!a.withheld),[e,n])||t?.tidied?(0,le.jsx)(lt,{}):null}export{ft as a,yt as b,At as c,nn as d,it as e,on as f,Ke as g,Pt as h,Ct as i,Ze as j,Bt as k,ot as l,Vt as m,$t as n,Ut as o,cn as p};
@@ -1 +0,0 @@
1
- import"./chunk.WVUJXDXZ.js";import{k as m,m as i}from"./chunk.S2DOVJRL.js";import"./chunk.64FCAUAJ.js";import"./chunk.NBVPWLRY.js";import"./chunk.S3EEY7T3.js";import"./chunk.SPCAMQJE.js";import"./chunk.TUCSUZNO.js";import"./chunk.ZMWAZACO.js";import"./chunk.CD6YWH6T.js";import"./chunk.J24YPQ5I.js";import"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";function a(t){let r=new Map;return(s,o)=>{let e=o.kind,n=r.get(e);return n===void 0&&r.set(e,n=i(t,e).length),n===0?{}:m(t,s,o).values}}export{a as computedOn};
@@ -1,10 +0,0 @@
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 Ee,b as De,c as Le,d as N,e as te}from"./chunk.PV2I4UPH.js";import{c as Pe,d as Te}from"./chunk.FEGSYSA7.js";import"./chunk.KROR65KD.js";import"./chunk.BJUUSIQY.js";import"./chunk.MH46V556.js";import"./chunk.XOZU4OFA.js";import"./chunk.5M34BJIQ.js";import"./chunk.MIE4TJRW.js";import{A as Ce,x as Me}from"./chunk.CXJJB3MK.js";import"./chunk.OJGHDWI6.js";import"./chunk.74B6KQF4.js";import"./chunk.64FCAUAJ.js";import"./chunk.DA4RSHLW.js";import"./chunk.FOSY7MZF.js";import"./chunk.NBVPWLRY.js";import"./chunk.S3EEY7T3.js";import{m as $e}from"./chunk.MD36ZSM5.js";import"./chunk.L6FGKJ5H.js";import{G as et,Ka as Re,V as xe,da as Ae}from"./chunk.3CJLAJXP.js";import{a as ke}from"./chunk.SDO3U72B.js";import{sd as ee}from"./chunk.J24YPQ5I.js";import"./chunk.FQLNBIQ5.js";import{b as Q}from"./chunk.AJZBJBMO.js";var tt=/^h([1-6])$/,ne={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"},nt=e=>typeof e=="object"&&e!==null&&typeof e.getAttribute=="function"&&(e.nodeType===void 0||e.nodeType===1),B=e=>(e??"").replace(/\s+/g," ").trim();function*V(e){yield e;for(let t of Array.from(e.childNodes))nt(t)&&(yield*V(t))}var Oe=e=>(e.getAttribute("data-graview-as")??e.localName??"").toLowerCase();function Ie(e){let t=tt.exec(Oe(e));return t?Number(t[1]):e.getAttribute("role")==="heading"?Number(e.getAttribute("aria-level")??2):void 0}function Ne(e){let t=[...V(e)],o=new Map;for(let s of t){let u=s.getAttribute("id");u&&o.set(u,s)}let n=[],d=new Set,i=(s,u)=>{let a=s.toLowerCase();!s||d.has(a)||(d.add(a),n.push({name:s.length>80?`${s.slice(0,79)}\u2026`:s,as:u}))};for(let s of t){if(s.getAttribute("aria-hidden")==="true"||s.getAttribute("hidden")!==null)continue;if(Ie(s)!==void 0){i(B(s.textContent),"heading");continue}let a=Oe(s),l=(s.getAttribute("role")??"").toLowerCase(),r=l in ne?l:a in ne?a:void 0;if(!r)continue;let g=(s.getAttribute("aria-labelledby")??"").split(/\s+/).flatMap(f=>o.get(f)?[B(o.get(f).textContent)]:[]).join(" "),h=[...V(s)].find(f=>f!==s&&Ie(f)!==void 0),c=B(s.getAttribute("aria-label"))||g||(h?B(h.textContent):"")||ne[r]||"";i(c,r==="region"?"section":r)}return n}var _="\0";function je(e){let t=[],o=e.length,n=0,d="",i=r=>r.replace(/\\(u\{[0-9a-fA-F]+\}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{2}|.)/gs,(g,h)=>h==="n"?`
2
- `:h==="t"?" ":h[0]==="u"||h[0]==="x"?String.fromCodePoint(parseInt(h.replace(/[ux{}]/g,""),16)):h),s=r=>{let g=++n;for(;n<o&&e[n]!==r&&e[n]!==`
3
- `;)n+=e[n]==="\\"?2:1;let h=e.slice(g,n);return n++,i(h)},u=()=>{n++;let r=!1;for(;n<o&&e[n]!==`
4
- `;){let g=e[n];if(g==="\\")n+=2;else if(g==="[")r=!0,n++;else if(g==="]")r=!1,n++;else{if(g==="/"&&!r)break;n++}}for(n++;n<o&&/[a-z]/i.test(e[n]);)n++},a=()=>{n++;let r="";for(;n<o;){let g=e[n];if(g==="\\")r+=i(e.slice(n,n+2)),n+=2;else{if(g==="`")return n++,r;g==="$"&&e[n+1]==="{"?(n+=2,l(!0),r+=_):(r+=g,n++)}}return r};function l(r){let g=0;for(;n<o;){let h=e[n];if(h==="/"&&e[n+1]==="/"){let c=e.indexOf(`
5
- `,n);n=c<0?o:c}else if(h==="/"&&e[n+1]==="*"){let c=e.indexOf("*/",n+2);n=c<0?o:c+2}else if(h==='"'||h==="'")t.push(s(h)),d="a";else if(h==="`")t.push(a()),d="a";else if(h==="/"&&(d===""||"(,=:[!&|?{};+-*%<>~^".includes(d)))u(),d="a";else{if(h==="{"&&g++,h==="}"){if(r&&g===0){n++;return}g--}/\s/.test(h)||(d=h),n++}}}return l(!1),t}var rt=e=>e.replace(/\s+/g," ").replace(/\s*([>+~,])\s*/g,"$1").trim();function ot(e){let t=[],o=0,n=0;for(let d=0;d<e.length;d++){let i=e[d];i==="("||i==="["?o++:i===")"||i==="]"?o--:i===","&&o===0&&(t.push(e.slice(n,d)),n=d+1)}return t.push(e.slice(n)),t.map(rt).filter(Boolean)}var it=new Set(["media","supports","container","layer","scope","document"]);function ie(e){let t=e.replace(/\/\*[\s\S]*?\*\//g,""),o=[],n=s=>{let u=t[s],a=s+1;for(;a<t.length&&t[a]!==u;)a+=t[a]==="\\"?2:1;return a+1},d=s=>{let u=1,a=s;for(;a<t.length&&u>0;){let l=t[a];if(l==='"'||l==="'"){a=n(a);continue}l==="{"?u++:l==="}"&&u--,a++}return a},i=s=>{let u="",a=s;for(;a<t.length;){let l=t[a];if(l==='"'||l==="'"){let r=n(a);u+=t.slice(a,r),a=r}else{if(l==="}")return a+1;if(l===";")u="",a++;else if(l==="{"){let r=u.trim();if(u="",r.startsWith("@")){let g=(/^@([\w-]+)/.exec(r)?.[1]??"").toLowerCase();a=it.has(g)?i(a+1):d(a+1)}else o.push(...ot(r)),a=d(a+1)}else u+=l,a++}}return a};return i(0),[...new Set(o)]}function q(e){let t=e.replace(/\[[^\]]*\]/g,"").replace(/"[^"]*"|'[^']*'/g,"");return[...new Set([...t.matchAll(/([.#])(-?[_a-zA-Z -￿][\w -￿-]*)/g)].map(o=>`${o[1]}${o[2]}`))]}var st=e=>!e.includes(_)&&e.length<300&&!/[<;!@]|=>|^\d/.test(e)&&/^[\w\s.#:>+~*()[\]="'^$|,\\%-]+$/u.test(e),at=/\b(?:class|className)\s*=\s*(?:"([^"]*)"|'([^']*)')/g,lt=/\bid\s*=\s*(?:"([^"]*)"|'([^']*)')/g,dt=/<h([1-6])\b[^>]*>([\s\S]*?)<\/h\1\s*>/gi,ct=/<(section|nav|main|aside|header|footer|article|form)\b[^>]*?\baria-label\s*=\s*(?:"([^"]*)"|'([^']*)')/gi;function Ve(e){let t=e.css===void 0||e.drawing===void 0&&e.classes===void 0?je(e.source):[],o=e.css!==void 0?ie(e.css):[...new Set(t.filter(i=>i.includes("{")&&i.includes("}")).flatMap(i=>ie(i)).filter(st))],n=new Set,d;if(e.drawing){for(let i of V(e.drawing)){for(let u of(i.getAttribute("class")??"").split(/\s+/))u&&n.add(`.${u}`);let s=i.getAttribute("id");s&&n.add(`#${s}`)}d=Ne(e.drawing)}else{let i=a=>(a[1]??a[2]??"").split(/\s+/).filter(l=>l&&!l.includes(_));for(let a of t){for(let l of a.matchAll(at))for(let r of i(l))n.add(`.${r}`);for(let l of a.matchAll(lt))for(let r of i(l))n.add(`#${r}`)}let s=new Set;d=[];let u=(a,l)=>{let r=a.replace(/\s+/g," ").trim();!r||r.includes(_)||s.has(r.toLowerCase())||(s.add(r.toLowerCase()),d.push({name:r,as:l}))};for(let a of t){for(let l of a.matchAll(ct))u(l[2]??l[3]??"",l[1].toLowerCase());for(let l of a.matchAll(dt))u(l[2].replace(/<[^>]*>/g,""),"heading")}}for(let i of e.classes??[])n.add(`.${i}`);return{from:e.drawing||e.classes?"drawing":"source",selectors:o,drawn:n,sections:d}}var re=8,oe=e=>e.length<=re?e.join(", "):`${e.slice(0,re).join(", ")} and ${e.length-re} more`,He=e=>`${Math.round(e).toLocaleString("en-US")}px`;function se(e,t){let o=Ve(e),n=Ve(t),d=new Set(n.selectors.flatMap(q)),i=new Map;for(let m of o.selectors)for(let x of q(m))x.startsWith(".")&&i.set(x,[...i.get(x)??[],m]);let s=[...i].filter(([m])=>n.drawn.has(m)&&!d.has(m)).map(([m,x])=>({class:m.slice(1),styledBy:x})),u=new Set(s.map(m=>`.${m.class}`)),a=new Set(n.selectors),l=o.selectors.filter(m=>!a.has(m)).map(m=>({selector:m,names:q(m)})).filter(m=>m.names.length>0&&m.names.every(x=>n.drawn.has(x)&&(o.from==="source"||o.drawn.has(x)))),r=new Set(n.sections.map(m=>m.name.toLowerCase())),g=o.sections.filter(m=>!r.has(m.name.toLowerCase())),h=e.height!==void 0&&t.height!==void 0&&e.height>0?{before:e.height,after:t.height,change:t.height-e.height,ratio:Math.round((t.height-e.height)/e.height*1e3)/1e3}:void 0,c=h!==void 0&&Math.abs(h.ratio)>=.1&&Math.abs(h.change)>=50,f=[];if(s.length>0){let m=s.map(x=>`.${x.class}`);f.push(`${s.length===1?"A class":`${s.length} classes`} it still draws lost every rule that styled ${s.length===1?"it":"them"} before: ${oe(m)}. Put back the rules for ${s.length===1?"it":"them"}, or stop drawing ${s.length===1?"it":"them"}.`)}let S=l.filter(m=>!m.names.some(x=>u.has(x)));S.length>0&&f.push(`${S.length===1?"A rule was":`${S.length} rules were`} taken out while the markup ${S.length===1?"it":"they"} styled is still drawn: ${oe(S.map(m=>`"${m.selector}"`))}.`),g.length>0&&f.push(`${g.length===1?"A section":`${g.length} sections`} drawn before ${g.length===1?"is":"are"} not drawn now: ${oe(g.map(m=>`"${m.name}"`))}.`),h&&c&&f.push(`The page is ${He(h.after)} tall, ${h.change<0?"down":"up"} from ${He(h.before)} (${h.change<0?"\u2212":"+"}${Math.round(Math.abs(h.ratio)*100)}%).`);let $=f.length>0;return{regressed:$,unstyled:s,selectorsRemoved:l,sectionsMissing:g,...h?{height:h}:{},read:{before:o.from,after:n.from},said:f,text:$?f.join(" "):`Nothing it drew before lost its style, and no section it drew is gone${h?"; the page is about as tall":""}.`}}var qe=new Set(["area","base","br","col","embed","hr","img","input","link","meta","source","track","wbr"]),ut=new Set(["section","article","nav","aside","header","footer","main","form","search"]),de=/^h([1-6])$/,gt=/<(\/?)([a-zA-Z][\w-]*)((?:"[^"]*"|'[^']*'|\$\{(?:[^{}]|\{[^{}]*\})*\}|[^>"'$]|\$(?!\{))*)>/g,H=e=>e.replace(/\s+/g," ").trim(),ue=e=>H(e.replace(/\$\{(?:[^{}]|\{[^{}]*\})*\}/g," ").replace(/<[^>]*>/g," ")),Ue=(e,t)=>H(e).toLowerCase()===H(t).toLowerCase();function _e(e){let t=[];for(let o of e.matchAll(gt)){let n=o[2].toLowerCase(),d=o[3]??"";t.push({start:o.index,end:o.index+o[0].length,name:n,closing:o[1]==="/",attrs:qe.has(n)||d.trimEnd().endsWith("/")?`${d}\0void`:d})}return t}var ce=e=>qe.has(e.name)||e.attrs.endsWith("\0void");function P(e,t){let o=new RegExp(`(?:^|\\s)${t}\\s*=\\s*(?:"([^"]*)"|'([^']*)'|([^\\s"'>]+))`,"i").exec(e.attrs),n=o?o[1]??o[2]??o[3]:void 0;return n===void 0||n.includes("${")?void 0:n}function W(e,t){let o=e[t],n=0;for(let d=t+1;d<e.length;d++){let i=e[d];if(!(i.name!==o.name||ce(i)))if(!i.closing)n+=1;else{if(n===0)return d;n-=1}}return-1}function ht(e,t,o){let n=t.findIndex(i=>!i.closing&&P(i,"id")===o);if(n<0)return;let d=W(t,n);return d<0?void 0:ue(e.slice(t[n].end,t[d].start))}function ft(e,t,o,n){let d=t[o],i=P(d,"data-section");if(i)return H(i);let s=P(d,"aria-label");if(s)return H(s);let u=P(d,"aria-labelledby");if(u){let a=u.split(/\s+/).filter(Boolean).map(l=>ht(e,t,l)??"").filter(Boolean).join(" ");if(a)return a}for(let a=o+1;a<n;a++){let l=t[a];if(l.closing||!de.test(l.name))continue;let r=W(t,a);if(r>0)return ue(e.slice(l.end,t[r].start))}return""}function pt(e){let t=[];for(let o of e.matchAll(/graview\.style\(\s*([`"'])/g)){let n=o[1],d=o.index+o[0].length,i=d;for(;i<e.length&&e[i]!==n;)i+=e[i]==="\\"?2:1;i<e.length&&t.push({start:d,end:i,quote:n})}return t}function mt(e,t,o){let n=[],d=0;for(;d<e.length;){let i=e.indexOf("{",d);if(i<0)break;let s=0,u=i;for(;u<e.length;u++)if(e[u]==="{")s+=1;else if(e[u]==="}"&&--s===0)break;if(u>=e.length)break;let a=d;for(;a<i&&/\s/.test(e[a]);)a+=1;for(;e.startsWith("/*",a);){let g=e.indexOf("*/",a);for(a=g<0?i:g+2;a<i&&/\s/.test(e[a]);)a+=1}let l=e.slice(a,i).trim(),r=l.startsWith("@")?[...e.slice(i+1,u).matchAll(/([^{}]+)\{/g)].map(g=>g[1].trim()).join(", "):l;n.push({start:t+a,end:t+u+1,selector:r,text:e.slice(a,u+1),sheet:o}),d=u+1}return n}var yt=e=>[...e.replace(/\[[^\]]*\]|:[\w-]+\([^)]*\)/g," ").matchAll(/([.#])(-?[_a-zA-Z][\w-]*)/g)].map(t=>`${t[1]}${t[2]}`);function wt(e){let t=new Set;for(let o of _e(e)){if(o.closing)continue;let n=/(?:^|\s)class\s*=\s*(?:"([^"]*)"|'([^']*)')/i.exec(o.attrs);for(let i of(n?.[1]??n?.[2]??"").replace(/\$\{(?:[^{}]|\{[^{}]*\})*\}/g," ").split(/\s+/))i&&t.add(`.${i}`);let d=P(o,"id");d&&t.add(`#${d}`)}return t}function bt(e,t){let o=_e(e),n,d=1/0;for(let l=0;l<o.length;l++){let r=o[l];if(r.closing||ce(r)||!(ut.has(r.name)||P(r,"data-section")!==void 0||P(r,"role")==="region"))continue;let h=W(o,l);if(h<0)continue;let c=o[h].end;c-r.start<d&&Ue(ft(e,o,l,h),t)&&(d=c-r.start,n={start:r.start,end:c,text:e.slice(r.start,c)})}if(!n)for(let l=0;l<o.length&&!n;l++){let r=o[l],g=de.exec(r.name);if(r.closing||!g)continue;let h=W(o,l);if(h<0||!Ue(ue(e.slice(r.end,o[h].start)),t))continue;let c=0,f=o[h].end;for(let S=h+1;S<o.length;S++){let $=o[S];if(ce($))continue;let m=de.exec($.name);if(c===0&&!$.closing&&m&&Number(m[1])<=Number(g[1])||$.closing&&c===0)break;c+=$.closing?-1:1,f=$.end}n={start:r.start,end:f,text:e.slice(r.start,f)}}if(!n)return;let i=wt(n.text),s=pt(e),u=[],a=[];return s.forEach((l,r)=>{for(let g of mt(e.slice(l.start,l.end),l.start,r)){let h=g.selector.split(",").map(f=>yt(f));h.some(f=>f.some(S=>i.has(S)))&&(h.every(f=>f.some(S=>i.has(S)))?u.push(g):a.push(g))}}),{name:t,markup:n,rules:u,shared:a,names:[...i],sheets:s}}function ae(e,t){return t==="`"?e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${"):e.replace(/\\/g,"\\\\").replace(new RegExp(t,"g"),`\\${t}`).replace(/\n/g,"\\n")}function Be(e,t,o){let n=[{start:t.markup.start,end:t.markup.end,text:o.markup}],d=o.css.trim(),[i,...s]=t.rules;if(i){let a=t.sheets[i.sheet];n.push({start:i.start,end:i.end,text:ae(d,a.quote)});for(let l of s)n.push({start:l.start,end:l.end,text:""})}else if(d){let a=t.sheets[0];a?n.push({start:a.end,end:a.end,text:ae(`
6
- ${d}
7
- `,a.quote)}):n.push({start:0,end:0,text:`graview.style(\`
8
- ${ae(d,"`")}
9
- \`);
10
- `})}n.sort((a,l)=>l.start-a.start);let u=e;for(let a of n)u=u.slice(0,a.start)+a.text+u.slice(a.end);return u}var vt=["You revise one section of a view in a Graview app.","The view is a plain script: it draws HTML with graview.html`\u2026` templates and styles it with graview.style(css).","You are given the section's markup exactly as it stands in the script's template. It may hold ${\u2026} interpolations: keep each one you keep exactly as written, and never name a variable that is not already in them.","You are given the stylesheet rules that style only this section (you rewrite them), the rules it shares with the rest of the view (never restate or change those), the app's look (its scheme and the values of its --graview-* tokens), and the words the section shows now.",`Answer with one JSON object and nothing else: {"markup": "<the section's whole new markup>", "css": "<every rule that styles it now>", "said": "<one sentence to the person saying what you changed>"}.`,"Keep the same outer element, and keep its name \u2014 its label or its heading's words \u2014 so it is still found. Show the same data. Style every class the markup uses, or stop using it. Use var(--graview-\u2026) tokens for colors, type and corners, never colors of your own.","Never use import, export, require, <script>, <style>, or on\u2026= attributes."].join(" ");function le(e){let t=e.mode==="just"?"Make this section better: easier to read at a glance, laid out cleanly at a phone's width and at a desk's, in the app's own look. Change no data it shows.":(e.words??"").trim();return JSON.stringify({section:e.located.name,asked:t,...e.mode==="highlight"&&e.highlighted?.length?{pointed_at:e.highlighted}:{},markup:e.located.markup.text,rules:e.located.rules.map(o=>o.text),shared_rules:e.located.shared.map(o=>o.text),...e.theme?{look:e.theme}:{},...e.shows?{shows:e.shows.slice(0,1200)}:{},...e.findings?.length?{your_last_answer:e.last,what_broke:e.findings,repair:"Your last answer broke the view as said in what_broke. Answer again, fixing each one."}:{}})}function St(e){let t=/```(?:json)?\s*([\s\S]*?)```/.exec(e)?.[1]??e,o=t.indexOf("{"),n=t.lastIndexOf("}");if(!(o<0||n<=o))try{let d=JSON.parse(t.slice(o,n+1));return typeof d.markup!="string"||!d.markup.trim().startsWith("<")?void 0:{markup:d.markup.trim(),css:typeof d.css=="string"?d.css:"",said:typeof d.said=="string"&&d.said.trim()?d.said.trim():"Revised this section."}}catch{return}}async function We(e){let t=[],o=bt(e.source,e.section);if(!o)return{ok:!1,refused:`\u201C${e.section}\u201D could not be found in the view's code, so it cannot be revised on its own.`,stages:t};let n=e.ai.off?void 0:e.ai.light,d=Pe(e.ai),i=n??d;if(!i)return{ok:!1,refused:e.ai.withoutModel??"Revising a section needs AI, and none is on here.",stages:t};let s=async(f,S,$)=>{let m=Date.now();try{let x=await f.think({system:vt,prompt:$,state:{},catalog:{candidates:[]}});return t.push({stage:S,model:f.model,ms:Date.now()-m,...x.usage?{usage:x.usage}:{}}),St(x.text)}catch{t.push({stage:S,model:f.model,ms:Date.now()-m});return}},u={located:o,mode:e.mode,...e.words?{words:e.words}:{},...e.highlighted?{highlighted:e.highlighted}:{},...e.theme?{theme:e.theme}:{},...e.shows?{shows:e.shows}:{}},l=await s(i,n?"light":"thinking",le(u));if(!l&&n&&d&&d!==n&&(l=await s(d,"thinking",le(u))),!l)return{ok:!1,refused:"The model did not answer with a revision of this section.",stages:t};let r=Be(e.source,o,l),g=await e.judge(r);if(g.length===0)return{ok:!0,source:r,said:l.said,located:o,repaired:!1,stages:t};let h=d??i,c=await s(h,h===n?"light":"thinking",le({...u,findings:g,last:l}));return c?(r=Be(e.source,o,c),g=await e.judge(r),g.length>0?{ok:!1,refused:`It could not be revised without breaking the view: ${g.join(" ")}`,stages:t}:{ok:!0,source:r,said:c.said,located:o,repaired:!0,stages:t}):{ok:!1,refused:`It could not be revised without breaking the view: ${g.join(" ")}`,stages:t}}var w=Q(et(),1);var p=Q(xe(),1);var ge=Re(ke(()=>(__graviewPreload(import.meta.url,["./chunk.KROR65KD.js","./chunk.BJUUSIQY.js","./chunk.64FCAUAJ.js","./chunk.S3EEY7T3.js","./chunk.MD36ZSM5.js","./chunk.L6FGKJ5H.js","./chunk.3CJLAJXP.js","./chunk.SDO3U72B.js","./chunk.J24YPQ5I.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.UL62ELNR.js")))),kt=ge.part((e,t)=>(0,p.jsx)(e.RateTelling,{...t}),{quiet:!0});function en({ask:e,open:t,close:o}){return e?(0,p.jsx)(Mt,{ask:e,close:o},e.at):t?(0,p.jsx)(te,{elements:t}):null}var xt=360,R=12;function At(e,t){let o={width:document.documentElement.clientWidth||innerWidth,height:innerHeight},n=Math.min(xt,o.width-2*R),d=e.getBoundingClientRect().height,i=a=>Math.max(R,Math.min(a,o.height-d-R)),s=(o.width-n)/2,u=i(72);t&&t.width>0&&(t.right+R+n<=o.width-R?[s,u]=[t.right+R,i(t.top)]:t.left-R-n>=R?[s,u]=[t.left-R-n,i(t.top)]:(s=Math.max(R,Math.min(t.left,o.width-n-R)),u=t.bottom+R+d<=o.height-R?t.bottom+R:i(t.top-R-d))),e.style.left=`${Math.round(s)}px`,e.style.top=`${Math.round(u)}px`,e.style.width=`${Math.round(n)}px`}var Rt=e=>e.map(t=>t.innerText??t.textContent??"").join(" ").replace(/\s+/g," ").trim(),Ye=e=>{let t=e.getBoundingClientRect();return{tag:(e.getAttribute("data-graview-as")??e.localName).toLowerCase(),classes:[...e.classList],text:e.textContent??"",box:{left:t.left,top:t.top,width:t.width,height:t.height}}};function $t(e,t,o){let n=[...e.querySelectorAll("*")].filter(s=>{let u=s.getBoundingClientRect();return u.width>0&&u.height>0});if(o){let s=n.filter(l=>{let r=l.getBoundingClientRect();return t.left>=r.left&&t.left<=r.right&&t.top>=r.top&&t.top<=r.bottom}),a=s.filter(l=>!s.some(r=>r!==l&&l.contains(r)))[0];if(!a)return[];for(let l=a;l&&l!==e;l=l.parentElement)if(l.classList.length>0||/^(h[1-6]|li|a|button|img|p|article|section)$/.test(l.localName))return[l];return[a]}let d=n.filter(s=>{let u=s.getBoundingClientRect();return u.left>=t.left-2&&u.right<=t.right+2&&u.top>=t.top-2&&u.bottom<=t.bottom+2}),i=d.filter(s=>!d.some(u=>u!==s&&u.contains(s)));for(;i.length===1;){let s=[...i[0].children].filter(u=>d.includes(u));if(s.length<2)break;i=s}return i}function ze(e,t,o,n,d,i){let s=d.drawing(),u=se({source:t,css:o.css,...o.root?{drawing:o.root}:{},...o.height!==void 0?{height:o.height}:{}},{source:i,css:s.css,...s.root?{drawing:s.root}:{},...s.height!==void 0?{height:s.height}:{}}),a=[];for(let g of u.unstyled)a.push(`The class \u201C${g.class}\u201D is still drawn and no rule styles it now.`);for(let g of u.sectionsMissing)a.push(`\u201C${g.name}\u201D is not drawn any more.`);for(let g of d.refused())n.includes(g)||a.push(g);let l=[],r=u.height;return r&&Math.abs(r.ratio)>=.1&&l.push(`The view is ${Math.abs(Math.round(r.change))} px ${r.change>0?"taller":"shorter"} (${Math.round(r.before)} \u2192 ${Math.round(r.after)}).`),{findings:a,notes:l}}function Mt({ask:e,close:t}){let{ai:o,aiDesk:n,principal:d,keptViews:i}=Ae(),[s,u]=(0,w.useState)(e.section),a=Ee(e.section),l=(0,w.useRef)(Me(a)),r=(0,w.useRef)(null),g=(0,w.useRef)(null),h=(0,w.useRef)(null),[c,f]=(0,w.useState)(e.mode==="highlight"?{at:"highlighting"}:e.mode==="describe"?{at:"asking"}:{at:"working"}),[S,$]=(0,w.useState)(""),m=(0,w.useRef)(void 0),[x,Xe]=(0,w.useState)(null),he=(0,w.useRef)(null),T=(0,w.useCallback)(y=>{let v=he.current;v&&o.told&&ge.load().then(b=>b.changeTelling(o.told,v.id,{outcome:y}),()=>{})},[o.told]),K=(0,w.useCallback)((y,v,b,A,k,E)=>{let C=o.told;if(!C)return;let L=A.at(-1)?.stage==="thinking"?"full":A.length>0?"light":void 0;ge.load().then(U=>{let I=U.keepTelling(C,{words:y,target:{on:"place",place:v.view},decided:b?{type:"refusal"}:{type:"view",section:v.name},...L?{slot:L}:{},stages:A.map(O=>({stage:O.stage==="thinking"?"full":"light",ms:O.ms,model:O.model})),ms:k,outcome:b?"abandoned":"previewed",interaction:E},d);he.current=I??null,Xe(I??null)},()=>{})},[o.told,d]);(0,w.useEffect)(()=>()=>{r.current?.dispose(),r.current=null},[]);let F=(0,w.useCallback)((y,v,b,A={})=>({id:Te(),at:new Date().toISOString(),by:d,target:{on:"place",place:s.view},targetLabel:l.current?.title??s.view,ask:{kind:"section",said:y},offered:[],outcome:v,stages:b.map(k=>({stage:k.stage,ms:k.ms,model:k.model})),usage:b.flatMap(k=>k.usage?[{tier:k.stage==="light"?"fast":"thinking",model:k.model,inputTokens:k.usage.inputTokens,outputTokens:k.usage.outputTokens}]:[]),...A}),[d,s.view]),X=(0,w.useCallback)(async(y,v,b,A=s)=>{let k=l.current,E=y==="just"?`Make \u201C${A.name}\u201D better`:`Make \u201C${A.name}\u201D better: ${v}`;if(!k)return f({at:"refused",said:"This view is not drawn here any more."});f({at:"working",...b?{pointed:b}:{}});let C=await k.source();if(C===void 0)return f({at:"refused",said:"This view is a whole worker script, and only a plain script's section can be revised here."});m.current??=C;let L=Date.now(),U=k.drawing(),I=k.refused(),O=await k.theme().catch(()=>({})),M=await We({ai:o,source:C,section:A.name,mode:y,...v?{words:v}:{},...b?{highlighted:[b.name,...b.lines]}:{},theme:O,shows:Rt(A.elements),judge:async D=>{r.current?.dispose(),r.current=null;let ve=await k.check(D);if(ve.length>0)return ve;let Z=k.draft(D);r.current=Z;let{failed:Se}=await Z.drawn;return Se?[`The view did not draw: ${Se}`]:(await new Promise(Qe=>requestAnimationFrame(()=>requestAnimationFrame(Qe))),ze(k,C,U,I,Z,D).findings)}});if(!M.ok){r.current?.dispose(),r.current=null;let D=F(E,"failed",M.stages,{failed:M.refused});return n.record(D),K(v||E,A,!0,M.stages,Date.now()-L,D.id),f({at:"refused",said:M.refused})}let we=r.current?ze(k,C,U,I,r.current,M.source).notes:[],be=F(E,"offered",M.stages);K(v||E,A,!1,M.stages,Date.now()-L,be.id),f({at:"draft",source:M.source,said:M.said,notes:M.repaired?["Repaired once after the first try broke the view.",...we]:we,entry:be})},[o,n,F,s,K]),fe=(0,w.useRef)(!1);(0,w.useEffect)(()=>{e.mode!=="just"||fe.current||(fe.current=!0,X("just",""))},[e.mode,X]);let Je=(0,w.useCallback)(async()=>{if(c.at!=="draft"||!i?.revise||!l.current)return;let y=l.current,v=await y.source()??"";f({at:"keeping",source:c.source,entry:c.entry});try{let b=await i.revise({name:y.name,title:y.title,source:c.source,before:v,section:s.name,said:c.said});r.current?.dispose(),r.current=null,y.draw(c.source);let A={...c.entry,outcome:"accepted"};n.record(A),T("accepted"),f({at:"kept",source:v,...b&&b.note?{note:b.note}:{},answer:b,entry:A})}catch(b){f({at:"refused",said:b instanceof Error?b.message:"The host did not keep it."})}},[c,i,n,s.name,T]),J=(0,w.useCallback)(()=>{r.current?.dispose(),r.current=null,c.at==="draft"&&(n.record({...c.entry,outcome:"dismissed"}),T("declined")),t()},[c,n,t,T]),Ze=(0,w.useCallback)(async()=>{if(c.at!=="kept"||!l.current)return;let y=l.current,v=await y.source()??"";try{c.answer&&typeof c.answer.undo=="function"?await c.answer.undo():await i?.revise?.({name:y.name,title:y.title,source:c.source,before:v,section:s.name,said:"Put back as it was.",undoes:!0}),y.draw(c.source===m.current?void 0:c.source),n.record({...c.entry,outcome:"dismissed"}),T("undone"),f({at:"undone"})}catch(b){f({at:"refused",said:b instanceof Error?b.message:"The host did not put it back."})}},[c,i,n,s.name,T]);(0,w.useLayoutEffect)(()=>{let y=0,v=()=>{if(g.current){let b=a?.querySelector("[data-graview-section-draft]");At(g.current,b?N([b]):N(s.elements)??(a?N([a]):null))}y=requestAnimationFrame(v)};return v(),()=>cancelAnimationFrame(y)},[s,a]),(0,w.useEffect)(()=>{c.at==="asking"?h.current?.focus():c.at!=="highlighting"&&g.current?.querySelector("button[data-first]")?.focus()},[c.at]),(0,w.useEffect)(()=>{let y=v=>{v.key==="Escape"&&(v.preventDefault(),J(),e.returnTo?.focus?.())};return document.addEventListener("keydown",y),()=>document.removeEventListener("keydown",y)},[J,e.returnTo]);let pe=c.at==="asking"||c.at==="working"?c.pointed:void 0;if(c.at==="highlighting")return(0,p.jsx)(Ct,{place:a,section:s,cancel:t,chose:y=>{let v=y[0],A=(v?Ce(v):void 0)??s;u(A),f({at:"asking",pointed:{name:De(y.map(Ye)),lines:Le(y.map(Ye))}})}});let me=c.at==="draft"||c.at==="keeping",ye=me?[...a?.querySelectorAll("[data-graview-section-draft]")??[]]:c.at==="kept"||c.at==="undone"?[]:s.elements;return(0,p.jsxs)(p.Fragment,{children:[ye.length>0?(0,p.jsx)(te,{elements:ye,label:me?"Draft":void 0}):null,(0,p.jsxs)("div",{ref:g,role:"dialog","aria-label":`Make \u201C${s.name}\u201D better`,"data-testid":"section-card","data-section-phase":c.at,"data-graview-popover":"",style:Pt,children:[(0,p.jsxs)("p",{style:Tt,children:["Make ",(0,p.jsxs)("strong",{children:["\u201C",s.name,"\u201D"]})," better"]}),pe?(0,p.jsxs)("p",{"data-testid":"section-pointed",style:Y,children:["You pointed at ",pe.name,"."]}):null,c.at==="asking"?(0,p.jsxs)("form",{onSubmit:y=>{y.preventDefault(),S.trim()&&X(e.mode,S.trim(),c.pointed)},style:{display:"grid",gap:8},children:[(0,p.jsx)("label",{style:$e,htmlFor:"graview-section-words",children:c.pointed?"What should change here?":"What should change?"}),(0,p.jsx)("input",{id:"graview-section-words",ref:h,"data-testid":"section-words",value:S,onChange:y=>$(y.target.value),placeholder:c.pointed?"What should change here?":"What should change?",style:Dt}),(0,p.jsxs)("div",{style:z,children:[(0,p.jsx)("button",{type:"submit","data-first":"",disabled:!S.trim(),style:Ge,children:"Revise"}),(0,p.jsx)("button",{type:"button",onClick:t,style:j,children:"Cancel"})]})]}):null,(0,p.jsx)("p",{role:"status","aria-live":"polite","data-testid":"section-status",style:c.at==="working"||c.at==="keeping"?Et:Y,children:c.at==="working"?`Revising \u201C${s.name}\u201D\u2026`:c.at==="keeping"?"Keeping it\u2026":c.at==="draft"?c.said:c.at==="kept"?`Kept.${c.note?` ${c.note}`:""}`:c.at==="undone"?"Put back as it was.":c.at==="refused"?c.said:""}),c.at==="draft"?(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)("p",{"data-testid":"section-draft-line",style:Y,children:"Draft \u2014 shown in place, not kept."}),c.notes.map(y=>(0,p.jsx)("p",{"data-testid":"section-note",style:Y,children:y},y)),(0,p.jsxs)("div",{style:z,children:[(0,p.jsx)("button",{type:"button","data-first":"","data-testid":"section-keep",onClick:()=>void Je(),style:Ge,children:"Keep"}),(0,p.jsx)("button",{type:"button","data-testid":"section-discard",onClick:J,style:j,children:"Discard"})]})]}):null,c.at==="kept"?(0,p.jsxs)("div",{style:z,children:[(0,p.jsx)("button",{type:"button","data-first":"","data-testid":"section-undo",onClick:()=>void Ze(),style:j,children:"Undo"}),(0,p.jsx)("button",{type:"button",onClick:t,style:j,children:"Close"})]}):null,c.at==="refused"||c.at==="undone"?(0,p.jsx)("div",{style:z,children:(0,p.jsx)("button",{type:"button","data-first":"",onClick:t,style:j,children:"Close"})}):null,x&&o.told&&c.at!=="working"&&c.at!=="asking"?(0,p.jsx)(kt,{told:o.told,telling:x}):null]})]})}function Ct({place:e,section:t,cancel:o,chose:n}){let d=(0,w.useRef)(null),[i,s]=(0,w.useState)(null),u=e?.querySelector("[data-worker-view]")?.shadowRoot?.querySelector("[data-graview-view-root]")??void 0;(0,w.useLayoutEffect)(()=>{let r=0,g=()=>{let h=e?N([e]):null,c=d.current;c&&h&&(c.style.left=`${Math.round(h.left-G)}px`,c.style.top=`${Math.round(h.top-G)}px`,c.style.width=`${Math.round(h.width+2*G)}px`,c.style.height=`${Math.round(h.height+2*G)}px`),r=requestAnimationFrame(g)};return g(),()=>cancelAnimationFrame(r)},[e]),(0,w.useEffect)(()=>{d.current?.focus()},[]);let a=r=>{if(!i||!u)return s(null);let g=Math.hypot(r.clientX-i.x0,r.clientY-i.y0)>4,h={left:Math.min(i.x0,r.clientX),top:Math.min(i.y0,r.clientY),right:Math.max(i.x0,r.clientX),bottom:Math.max(i.y0,r.clientY)};s(null);let c=$t(u,h,!g);c.length>0&&n(c)},l=i?{left:Math.min(i.x0,i.x1),top:Math.min(i.y0,i.y1),width:Math.abs(i.x1-i.x0),height:Math.abs(i.y1-i.y0)}:null;return(0,p.jsxs)("div",{ref:d,tabIndex:-1,role:"application","aria-label":"Highlight the area to change: drag over it, or click one part","data-testid":"section-highlighter","data-graview-popover":"",onKeyDown:r=>{r.key==="Escape"&&(r.preventDefault(),r.stopPropagation(),o())},onMouseDown:r=>r.preventDefault(),onPointerDown:r=>{r.preventDefault(),r.currentTarget.setPointerCapture?.(r.pointerId),s({x0:r.clientX,y0:r.clientY,x1:r.clientX,y1:r.clientY})},onPointerMove:r=>s(g=>g&&{...g,x1:r.clientX,y1:r.clientY}),onPointerUp:a,onPointerCancel:()=>s(null),style:Lt,children:[(0,p.jsxs)("p",{style:It,children:["Drag over the part to change, or click one \xB7"," ",(0,p.jsx)("button",{type:"button",onPointerDown:r=>r.stopPropagation(),onClick:()=>n(t.elements),style:Ke,children:"The whole section"})," ","\xB7"," ",(0,p.jsx)("button",{type:"button",onPointerDown:r=>r.stopPropagation(),onClick:o,style:Ke,children:"Cancel"})]}),l?(0,p.jsx)("div",{"data-testid":"section-drag",style:{...Ot,left:l.left-(d.current?.getBoundingClientRect().left??0),top:l.top-(d.current?.getBoundingClientRect().top??0),width:l.width,height:l.height}}):null]})}var Pt={position:"fixed",zIndex:ee("popover"),boxSizing:"border-box",display:"grid",gap:10,padding:12,borderRadius:12,border:"1px solid var(--graview-edge)",background:"var(--graview-float, var(--graview-panel))",color:"var(--graview-ink)",boxShadow:"var(--graview-lift-high)",maxHeight:"calc(100dvh - 24px)",overflowY:"auto",fontSize:"0.875rem"},Tt={margin:0,fontSize:"0.9375rem"},Y={margin:0,color:"var(--graview-ink-muted)"},Et={margin:0,color:"var(--graview-ink)",fontStyle:"italic"},z={display:"flex",flexWrap:"wrap",gap:8},Dt={boxSizing:"border-box",width:"100%",height:36,padding:"0 10px",font:"inherit",fontSize:"max(1rem,16px)",color:"var(--graview-ink)",background:"var(--graview-panel)",border:"1px solid var(--graview-edge)",borderRadius:8},Fe={minHeight:36,padding:"0 14px",font:"inherit",borderRadius:8,cursor:"pointer"},Ge={...Fe,color:"var(--graview-accent-ink, #fff)",background:"var(--graview-accent)",border:"1px solid var(--graview-accent)"},j={...Fe,color:"var(--graview-ink)",background:"transparent",border:"1px solid var(--graview-edge)"},Ke={font:"inherit",color:"inherit",background:"none",border:0,padding:0,textDecoration:"underline",cursor:"pointer"},G=12,Lt={userSelect:"none",WebkitUserSelect:"none",position:"fixed",zIndex:ee("popover"),boxSizing:"border-box",cursor:"crosshair",touchAction:"none",outline:"2px dashed var(--graview-accent)",background:"color-mix(in srgb, var(--graview-accent) 6%, transparent)"},It={position:"absolute",left:8,top:8,margin:0,padding:"4px 10px",borderRadius:999,fontSize:"0.8125rem",color:"var(--graview-ink)",background:"var(--graview-float, var(--graview-panel))",border:"1px solid var(--graview-edge)",boxShadow:"var(--graview-lift-low)",cursor:"default"},Ot={position:"absolute",border:"2px solid var(--graview-accent)",background:"color-mix(in srgb, var(--graview-accent) 14%, transparent)",borderRadius:4,pointerEvents:"none"};export{Mt as SectionCard,en as SectionDrawn,te as SectionOutline};
@@ -1 +0,0 @@
1
- import{G as l,N as p,U as k,W as y,c}from"./chunk.KV7GZBJ6.js";import"./chunk.5YNLFOBJ.js";import"./chunk.Q355UPFG.js";import{b as m}from"./chunk.HNMSYQRA.js";import"./chunk.44ZHHPPJ.js";import"./chunk.ZDUTEM3Z.js";import"./chunk.ARHAD5IS.js";import"./chunk.R2TSTDS3.js";import"./chunk.QSDBF7VL.js";import"./chunk.2PK335JQ.js";import"./chunk.MHTA4HYB.js";import"./chunk.BU5PVRX7.js";import"./chunk.3KUYB5ZT.js";import"./chunk.IMKD6QQG.js";import"./chunk.MB7LKKUD.js";import"./chunk.FXG5AJF6.js";import"./chunk.RFVOXX3P.js";import"./chunk.NKYYDFIX.js";import"./chunk.IR4OW67N.js";import"./chunk.6RZHKQP3.js";import"./chunk.N35SJWAM.js";import"./chunk.L7NJLZWV.js";import"./chunk.QO5RXOCS.js";import"./chunk.MIE4TJRW.js";import"./chunk.CXJJB3MK.js";import"./chunk.OJGHDWI6.js";import"./chunk.74B6KQF4.js";import"./chunk.WVUJXDXZ.js";import"./chunk.S2DOVJRL.js";import"./chunk.64FCAUAJ.js";import"./chunk.DA4RSHLW.js";import"./chunk.FOSY7MZF.js";import"./chunk.NBVPWLRY.js";import"./chunk.S3EEY7T3.js";import"./chunk.SPCAMQJE.js";import"./chunk.TUCSUZNO.js";import"./chunk.ZMWAZACO.js";import"./chunk.CD6YWH6T.js";import"./chunk.MD36ZSM5.js";import"./chunk.L6FGKJ5H.js";import{G as S,H as s,I as d,V as f,ea as g}from"./chunk.3CJLAJXP.js";import"./chunk.SDO3U72B.js";import"./chunk.J24YPQ5I.js";import"./chunk.FQLNBIQ5.js";import{b as n}from"./chunk.AJZBJBMO.js";var u=n(S(),1);var t=n(f(),1);function D({context:a}){let r=l(),h=g(),[w]=(0,u.useState)(()=>s(null)),o=d(h?.seatTalk??w),P=()=>{(window.history.state?.idx??0)>0?r(-1):r("/")};return(0,t.jsxs)(k,{context:a,"data-testid":"draft-page",children:[(0,t.jsx)(y,{context:a,...o.draft?{"data-testid":"draft-title"}:{},children:o.draft?o.draft.title:"Nothing drawn"}),o.draft?(0,t.jsx)(m,{page:!0,go:e=>r(e.address),onPick:e=>{let i=a.store.graph.getNode(e);i&&r(c(a.store.schema,i.kind,e))},onDiscard:P}):(0,t.jsxs)("p",{style:{margin:0,color:"var(--graview-ink-muted)"},children:["Ask for a way of seeing \u2014 \u201Ca board of tasks by status\u201D \u2014 and it is drawn here."," ",(0,t.jsx)(p,{to:"/",style:{color:"var(--graview-accent)"},children:"Home \u2192"})]})]})}export{D as DraftPage};