graview 0.1.58 → 0.1.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/preview/{chunk.27CW6SCT.js → chunk.2FOIJ5ID.js} +1 -1
  2. package/dist/preview/{chunk.JB7TTJXQ.js → chunk.2FP4KEEG.js} +1 -1
  3. package/dist/preview/{chunk.PBCNOFQH.js → chunk.2MFXP3FB.js} +1 -1
  4. package/dist/preview/{chunk.XU34T2H4.js → chunk.2NJDT47T.js} +1 -1
  5. package/dist/preview/{chunk.EPPXZZPK.js → chunk.2QESVWUW.js} +1 -1
  6. package/dist/preview/{chunk.IDJPBWL2.js → chunk.2XTCDFWU.js} +1 -1
  7. package/dist/preview/{chunk.WXIEQZLY.js → chunk.3UTRR5YM.js} +1 -1
  8. package/dist/preview/{chunk.INZQ6WZM.js → chunk.3XIIJHQ6.js} +1 -1
  9. package/dist/preview/chunk.3XLOFZRM.js +1 -0
  10. package/dist/preview/{chunk.POBMGM3X.js → chunk.4OMOP77U.js} +1 -1
  11. package/dist/preview/{chunk.WNQFHMNR.js → chunk.4QWTSI7V.js} +1 -1
  12. package/dist/preview/{chunk.4HSH2UIK.js → chunk.4T5QIZKB.js} +2 -2
  13. package/dist/preview/chunk.6BLNFVB4.js +1 -0
  14. package/dist/preview/{chunk.ACYDJQRC.js → chunk.6E36I2GC.js} +1 -1
  15. package/dist/preview/{chunk.YD3TKV6P.js → chunk.6IUEGPCZ.js} +2 -2
  16. package/dist/preview/{chunk.M34CS7DI.js → chunk.6N7LNTB6.js} +1 -1
  17. package/dist/preview/chunk.6O3YPUW3.js +1 -0
  18. package/dist/preview/{chunk.GEB2DFBU.js → chunk.6VNKGTLF.js} +1 -1
  19. package/dist/preview/{chunk.JGKA5QBX.js → chunk.7AMBLGVB.js} +1 -1
  20. package/dist/preview/{chunk.NFX24NUI.js → chunk.7JOG6XFC.js} +1 -1
  21. package/dist/preview/chunk.7XSDXX5Z.js +1 -0
  22. package/dist/preview/{chunk.HZB5F476.js → chunk.ATSKKTUO.js} +1 -1
  23. package/dist/preview/{chunk.HXRV3WVJ.js → chunk.ATVPAYS6.js} +1 -1
  24. package/dist/preview/{chunk.KKNDX4JT.js → chunk.AXXYJCSW.js} +1 -1
  25. package/dist/preview/{chunk.O4CVKTPJ.js → chunk.B5HLA45D.js} +1 -1
  26. package/dist/preview/{chunk.LRUNFSHP.js → chunk.BDBLGGFJ.js} +1 -1
  27. package/dist/preview/{chunk.A6C4AGJJ.js → chunk.BFN6B4C4.js} +1 -1
  28. package/dist/preview/{chunk.TJ647W6J.js → chunk.BPC4XQFZ.js} +2 -2
  29. package/dist/preview/{chunk.7V23SXGJ.js → chunk.CIB65YO6.js} +1 -1
  30. package/dist/preview/chunk.CJUIJ6TL.js +1 -0
  31. package/dist/preview/{chunk.KJHPDL4N.js → chunk.CLR6KAA3.js} +1 -1
  32. package/dist/preview/{chunk.4KC35UNR.js → chunk.CUJX3IVA.js} +4 -2
  33. package/dist/preview/{chunk.ILRCNTGT.js → chunk.CYUMQPMH.js} +1 -1
  34. package/dist/preview/{chunk.7SQAKSJD.js → chunk.CZH27V2R.js} +1 -1
  35. package/dist/preview/chunk.D3AISGQH.js +1 -0
  36. package/dist/preview/{chunk.KJ264E6K.js → chunk.DGM3Y2FB.js} +1 -1
  37. package/dist/preview/{chunk.HMFJT4KO.js → chunk.DO45KXLM.js} +1 -1
  38. package/dist/preview/{chunk.IULQRCEE.js → chunk.DWHPZBPZ.js} +1 -1
  39. package/dist/preview/{chunk.NKC3JILT.js → chunk.E22DDEQI.js} +1 -1
  40. package/dist/preview/chunk.E2REVMAG.js +6 -0
  41. package/dist/preview/{chunk.E34OQVSR.js → chunk.E4SYOBGB.js} +1 -1
  42. package/dist/preview/{chunk.TJOXNEFU.js → chunk.EGJUFZD5.js} +1 -1
  43. package/dist/preview/chunk.EZ3CRUBU.js +21 -0
  44. package/dist/preview/{chunk.LMN4TSAP.js → chunk.F6P3WSMW.js} +1 -1
  45. package/dist/preview/{chunk.4Y2JTY6Q.js → chunk.FJTVY6AE.js} +1 -1
  46. package/dist/preview/chunk.G2TCFWYX.js +1 -0
  47. package/dist/preview/{chunk.TWKXSLYY.js → chunk.G7HIAUEA.js} +1 -1
  48. package/dist/preview/{chunk.64R3K2OE.js → chunk.GDUM2UOM.js} +1 -1
  49. package/dist/preview/chunk.GQHFLOTZ.js +5 -0
  50. package/dist/preview/{chunk.DBZHRYBK.js → chunk.GR2B7SKI.js} +1 -1
  51. package/dist/preview/{chunk.GCBZ3WE2.js → chunk.HF5SNUTK.js} +1 -1
  52. package/dist/preview/{chunk.VUPLFUUS.js → chunk.HJOVOA52.js} +1 -1
  53. package/dist/preview/{chunk.QGV7H7RQ.js → chunk.HKINU7VO.js} +1 -1
  54. package/dist/preview/{chunk.GZB6A6KF.js → chunk.HVUUJQRE.js} +1 -1
  55. package/dist/preview/{chunk.34TW32TB.js → chunk.IIESMHXY.js} +2 -2
  56. package/dist/preview/{chunk.GQBJVCSM.js → chunk.IPPZEGBX.js} +1 -1
  57. package/dist/preview/{chunk.WNSC3RWD.js → chunk.IZ2ZTNEV.js} +1 -1
  58. package/dist/preview/{chunk.OHQ3JH65.js → chunk.J4HTSXUA.js} +1 -1
  59. package/dist/preview/{chunk.B3WZHPM3.js → chunk.JPNBQFJ3.js} +1 -1
  60. package/dist/preview/{chunk.ELAMMS2V.js → chunk.KE6ZRUMP.js} +1 -1
  61. package/dist/preview/{chunk.ELERUERU.js → chunk.KHZA5F7A.js} +1 -1
  62. package/dist/preview/{chunk.TF5I4VHX.js → chunk.KKQXGN5U.js} +1 -1
  63. package/dist/preview/{chunk.U6O3MMQR.js → chunk.KOGUYWHG.js} +1 -1
  64. package/dist/preview/{chunk.YHTE34RN.js → chunk.KSVJHSRH.js} +1 -1
  65. package/dist/preview/{chunk.JES77WXG.js → chunk.L3K25NCS.js} +1 -1
  66. package/dist/preview/chunk.LDLTQNJ2.js +1 -0
  67. package/dist/preview/{chunk.LL2MLSPH.js → chunk.LDYOQCY7.js} +1 -1
  68. package/dist/preview/{chunk.F7SF6EP2.js → chunk.LHJWII6C.js} +1 -1
  69. package/dist/preview/{chunk.E5MSFXL6.js → chunk.LKE2FBXL.js} +1 -1
  70. package/dist/preview/{chunk.RRKYJYZJ.js → chunk.M3JIIF32.js} +1 -1
  71. package/dist/preview/{chunk.BB33TI4S.js → chunk.MHILFBK6.js} +1 -1
  72. package/dist/preview/chunk.MMWLLWFS.js +1 -0
  73. package/dist/preview/{chunk.2VYNNWW5.js → chunk.MOAUE3N2.js} +3 -3
  74. package/dist/preview/{chunk.LCPGZK7G.js → chunk.MRYN42EQ.js} +1 -1
  75. package/dist/preview/{chunk.JUNMJYH5.js → chunk.MZJ3KTEU.js} +1 -1
  76. package/dist/preview/{chunk.GKSUTAIX.js → chunk.N4LOI3YA.js} +1 -1
  77. package/dist/preview/{chunk.LY3YOWKV.js → chunk.NIFQDN6R.js} +1 -1
  78. package/dist/preview/chunk.NOLGJFA4.js +2 -0
  79. package/dist/preview/{chunk.3YZHZGTM.js → chunk.NSGQXCH6.js} +1 -1
  80. package/dist/preview/{chunk.HEWVPXRE.js → chunk.OLW44AP5.js} +1 -1
  81. package/dist/preview/{chunk.PZG3B7F4.js → chunk.OVSZXILB.js} +1 -1
  82. package/dist/preview/{chunk.ZOHMWSHD.js → chunk.P3CUCDHO.js} +1 -1
  83. package/dist/preview/{chunk.UAP5M3CD.js → chunk.P52UTBNO.js} +2 -2
  84. package/dist/preview/{chunk.XN2RVXOI.js → chunk.P6CHNBRR.js} +1 -1
  85. package/dist/preview/chunk.PCVPH5KM.js +1 -0
  86. package/dist/preview/{chunk.ETBFD76E.js → chunk.PS5SEND3.js} +1 -1
  87. package/dist/preview/chunk.Q355UPFG.js +1 -0
  88. package/dist/preview/{chunk.QPXXY2DL.js → chunk.Q3Y5EV5A.js} +3 -3
  89. package/dist/preview/{chunk.LDAYDCUO.js → chunk.Q6LLURRM.js} +1 -1
  90. package/dist/preview/{chunk.YS6GVLIP.js → chunk.QC4YXFF7.js} +1 -1
  91. package/dist/preview/chunk.QDZAITMN.js +1 -0
  92. package/dist/preview/chunk.QHU3KUZZ.js +1 -0
  93. package/dist/preview/{chunk.SDLUWRGI.js → chunk.QL555VQ2.js} +1 -1
  94. package/dist/preview/{chunk.CCWPF5PK.js → chunk.QLTHHWBA.js} +1 -1
  95. package/dist/preview/{chunk.4AFFPYOK.js → chunk.QT6UV7HN.js} +1 -1
  96. package/dist/preview/{chunk.4444RPWW.js → chunk.QXMQUIQZ.js} +1 -1
  97. package/dist/preview/{chunk.KWJWAIQJ.js → chunk.R4YDAJRL.js} +1 -1
  98. package/dist/preview/{chunk.5ICIMQE6.js → chunk.RKZ4J3H2.js} +1 -1
  99. package/dist/preview/{chunk.RE7DELSR.js → chunk.ROHSF4WM.js} +1 -1
  100. package/dist/preview/{chunk.S2H7B6RG.js → chunk.S6VON4LU.js} +1 -1
  101. package/dist/preview/{chunk.GDOTG7YA.js → chunk.S7ZLGODY.js} +1 -1
  102. package/dist/preview/{chunk.ZN5HTWSI.js → chunk.SU6WKQ73.js} +1 -1
  103. package/dist/preview/{chunk.EQTSV7BK.js → chunk.SZG6HJWH.js} +1 -1
  104. package/dist/preview/{chunk.SPXRLO5K.js → chunk.T227XQIO.js} +1 -1
  105. package/dist/preview/{chunk.D5KTGX7F.js → chunk.TCPTVTFU.js} +1 -1
  106. package/dist/preview/chunk.U37WZMUO.js +1 -0
  107. package/dist/preview/chunk.U5JFW2YM.js +1 -0
  108. package/dist/preview/{chunk.GP7F3PEF.js → chunk.U5PX2ECA.js} +1 -1
  109. package/dist/preview/{chunk.VHSWBFXB.js → chunk.U7G56KXT.js} +1 -1
  110. package/dist/preview/{chunk.H3BFHI3G.js → chunk.UFTAGUTU.js} +1 -1
  111. package/dist/preview/{chunk.LO3U3P55.js → chunk.UHUBQ4EX.js} +1 -1
  112. package/dist/preview/{chunk.KXPRILAO.js → chunk.UITZ74YJ.js} +1 -1
  113. package/dist/preview/{chunk.KFQSYCY3.js → chunk.UM5H2VVR.js} +1 -1
  114. package/dist/preview/chunk.V5MOMBZG.js +1 -0
  115. package/dist/preview/{chunk.B2GVJD6H.js → chunk.V6EEDYYW.js} +1 -1
  116. package/dist/preview/{chunk.TBW7CU4G.js → chunk.VDGMFX5C.js} +1 -1
  117. package/dist/preview/{chunk.EB4NVTJL.js → chunk.VFRURRNI.js} +1 -1
  118. package/dist/preview/{chunk.6W7O5YLL.js → chunk.VGHZQEHS.js} +1 -1
  119. package/dist/preview/{chunk.MQ5HBUBL.js → chunk.VNBEAF62.js} +1 -1
  120. package/dist/preview/chunk.VNJKGSGZ.js +25 -0
  121. package/dist/preview/{chunk.TUUVVO5U.js → chunk.VS25R6R2.js} +1 -1
  122. package/dist/preview/chunk.VUSJ7HPC.js +1 -0
  123. package/dist/preview/chunk.VXRECLX6.js +1 -0
  124. package/dist/preview/{chunk.7MSFDD7J.js → chunk.W2VOD6SD.js} +1 -1
  125. package/dist/preview/{chunk.WJFQIE3Y.js → chunk.W66VMALY.js} +1 -1
  126. package/dist/preview/{chunk.WQOI6BLM.js → chunk.WEGPDJTB.js} +1 -1
  127. package/dist/preview/{chunk.3OYGXYQY.js → chunk.WGTBQHHE.js} +1 -1
  128. package/dist/preview/chunk.WGVIJDV5.js +1 -0
  129. package/dist/preview/{chunk.SDVPJYVF.js → chunk.WTUB7W2D.js} +1 -1
  130. package/dist/preview/{chunk.VG7OWV2H.js → chunk.X2G4ZRB2.js} +1 -1
  131. package/dist/preview/chunk.X3MMJ3QC.js +5 -0
  132. package/dist/preview/chunk.X5YRNNHU.js +1 -0
  133. package/dist/preview/{chunk.BTVBZ6KE.js → chunk.XOTES3PI.js} +2 -2
  134. package/dist/preview/{chunk.YIA2EDVF.js → chunk.YGZCESXY.js} +1 -1
  135. package/dist/preview/chunk.YMC2T2HN.js +1 -0
  136. package/dist/preview/{chunk.HS3GHAUR.js → chunk.YMRVKG6W.js} +1 -1
  137. package/dist/preview/chunk.YN6BXZHO.js +1 -0
  138. package/dist/preview/{chunk.YP2F5UGY.js → chunk.Z4CJJ4QP.js} +1 -1
  139. package/dist/preview/{chunk.2EDC63RI.js → chunk.ZFH4SCCF.js} +1 -1
  140. package/dist/preview/{chunk.NOFWGDOT.js → chunk.ZLMI2NHC.js} +1 -1
  141. package/dist/preview/{chunk.YZZONE4M.js → chunk.ZT3NEAFI.js} +1 -1
  142. package/dist/preview/{chunk.I3WWCPQ2.js → chunk.ZUKYMU6C.js} +1 -1
  143. package/dist/preview/index.html +51 -51
  144. package/dist/preview/page.js +2 -2
  145. package/package.json +6 -6
  146. package/dist/preview/chunk.32FMOHZK.js +0 -1
  147. package/dist/preview/chunk.3FCOFEGW.js +0 -1
  148. package/dist/preview/chunk.43OKZU73.js +0 -1
  149. package/dist/preview/chunk.47JQPYXL.js +0 -2
  150. package/dist/preview/chunk.4GGPPCMM.js +0 -1
  151. package/dist/preview/chunk.6K7EN2YI.js +0 -1
  152. package/dist/preview/chunk.6VC6AGYV.js +0 -5
  153. package/dist/preview/chunk.7BBGRTXM.js +0 -5
  154. package/dist/preview/chunk.7ECBGIUK.js +0 -1
  155. package/dist/preview/chunk.ARWBIBSI.js +0 -6
  156. package/dist/preview/chunk.BKVBX2YB.js +0 -1
  157. package/dist/preview/chunk.DM767F2Q.js +0 -21
  158. package/dist/preview/chunk.GUEHKCWN.js +0 -1
  159. package/dist/preview/chunk.HT2BEOEV.js +0 -25
  160. package/dist/preview/chunk.JOAN54PN.js +0 -1
  161. package/dist/preview/chunk.L7V24JPO.js +0 -1
  162. package/dist/preview/chunk.LA4CPZ2N.js +0 -1
  163. package/dist/preview/chunk.MV3AJ7JH.js +0 -1
  164. package/dist/preview/chunk.MYNQWWCL.js +0 -1
  165. package/dist/preview/chunk.OASYYMG5.js +0 -1
  166. package/dist/preview/chunk.PM3SYXKB.js +0 -1
  167. package/dist/preview/chunk.QB25SMP6.js +0 -1
  168. package/dist/preview/chunk.R7LFO7KI.js +0 -1
  169. package/dist/preview/chunk.S5MGE2U5.js +0 -1
  170. package/dist/preview/chunk.TXGNPW76.js +0 -1
  171. package/dist/preview/chunk.UGFDSE37.js +0 -1
  172. package/dist/preview/chunk.UKMVJV6Q.js +0 -1
  173. package/dist/preview/chunk.UUG3BYVN.js +0 -1
@@ -0,0 +1,5 @@
1
+ import{a as pr,b as ue,c as Ce,d as Nn,f as Ae,g as hr,h as Ge,i as In,j as vi}from"./chunk.FQLNBIQ5.js";var mr="en-US",gt=/^\d{4}-\d{2}-\d{2}$/,wi=/^\d{4}(?:-(?:0[1-9]|1[0-2]))?$/,yr=/^\d{4}(?:-(?:0[1-9]|1[0-2])(?:-\d{2})?)?$/,mt=/^\d{4}(-\d\d){2}[T ]\d\d:\d\d(:[\d.]+)?(Z|[+-][\d:]+)?$/,xh=n=>!Number.isNaN(Date.parse(n)),ee=(n,e=Date.now())=>{let t=yt(n);return t?br(e,t).day:new Date(e).toISOString().slice(0,10)},yt=n=>cn(n)??dn,Tn,jn,Dn,dn;function jc(n){Tn=Fn(n.reader),jn=Fn(n.app),Dn=cn(n.readerTimeZone),dn=cn(n.appTimeZone)}function Dc(n,e){let t=[Tn,jn,Dn,dn];n.reader!==void 0&&(Tn=Fn(n.reader)),n.app!==void 0&&(jn=Fn(n.app)),n.readerTimeZone!==void 0&&(Dn=cn(n.readerTimeZone)),n.appTimeZone!==void 0&&(dn=cn(n.appTimeZone));try{return e()}finally{[Tn,jn,Dn,dn]=t}}var xi=n=>Tn??Fn(n)??jn??mr,bt=n=>Dn??cn(n)??dn,Fc=n=>bt(n)??Intl.DateTimeFormat().resolvedOptions().timeZone??"UTC",Lc=/^\s*([+\-−]|\d)/;var gr=new Map;function cn(n){if(n&&!gr.has(n)){let e=!1;try{new Intl.DateTimeFormat(mr,{timeZone:n}),e=!Lc.test(n)}catch{}gr.set(n,e)}return n&&gr.get(n)?n:void 0}var Ke=new Map;function Fn(n){if(n&&!Ke.has(n)){let e=!1;try{e=Intl.DateTimeFormat.supportedLocalesOf(n).length>0}catch{}Ke.set(n,e)}return n&&Ke.get(n)?n:void 0}function _e(n,e,t,r){let o=`${t=xi(t)}${r?"#":"@"}${JSON.stringify(e)}`,i=Ke.get(o);return i||Ke.set(o,i=r?new Intl.NumberFormat(t,e):new Intl.DateTimeFormat(t,e)),i.format(n).replace(/ /g," ")}var Be="UTC",vt=n=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10));function Oe(n,e){return wi.test(n)?n.length===4?n:$i(n,{},e):gt.test(n)?_e(vt(n),{year:"numeric",month:"short",day:"numeric",timeZone:Be},e):n}function br(n,e){let t=`wall@${e??""}`,r=Ke.get(t);r||Ke.set(t,r=new Intl.DateTimeFormat("en-US",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hourCycle:"h23",...e?{timeZone:e}:{}}));let o=Object.fromEntries(r.formatToParts(n).map(i=>[i.type,i.value]));return{day:`${o.year}-${o.month}-${o.day}`,minutes:Number(o.hour)%24*60+Number(o.minute)}}function ki(n,e,t){let r=Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10),0,e),o=i=>{let s=br(i,t);return Zc(s.day,s.minutes)-Math.floor(i/6e4)*6e4};return r-o(r-o(r))}var Zc=(n,e)=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10),0,e),Si=n=>/[Z+-][\d:]*$/.test(n.slice(16));function Ri(n,e,t,r,o=!1){if(!mt.test(n))return n;let i=Si(n),s=Date.parse(n.replace(" ","T")+(i?"":"Z"));if(Number.isNaN(s))return n;let a=i?bt(r):Be;return _e(s,{...e,hour:"numeric",minute:"2-digit",...i&&o?{timeZoneName:"short"}:{},...a?{timeZone:a}:{}},t)}var vr=(n,e,t)=>Ri(n,{year:"numeric",month:"short",day:"numeric"},e,t,!0),Cc=(n,e,t)=>Ri(n,{},e,t);function Gc(n,e){if(gt.test(n))return n;if(!mt.test(n))return;if(!Si(n))return n.slice(0,10);let t=Date.parse(n.replace(" ","T"));return Number.isNaN(t)?void 0:br(t,bt(e)).day}function me(n,e,t={maximumFractionDigits:2}){return Number.isFinite(n)?_e(n,t,e,!0):String(n)}function Kc(n,e={},t){return gt.test(n)?_e(vt(n),{weekday:e.weekday??"long",month:"short",day:"numeric",...e.year?{year:"numeric"}:{},timeZone:Be},t):n}function Bc(n,e){return gt.test(n)?_e(vt(n),{month:"short",day:"numeric",timeZone:Be},e):n}function $i(n,e={},t){if(!/^\d{4}-\d{2}/.test(n))return n;let r=e.year??!e.short;return _e(vt(`${n.slice(0,7)}-01`),{month:e.short?"short":"long",...r?{year:e.short?"2-digit":"numeric"}:{},timeZone:Be},t)}var Vc=(n,e="short",t)=>_e(Date.UTC(1970,0,4+n),{weekday:e,timeZone:Be},t),Uc=(n,e)=>_e(Date.UTC(1970,0,1,0,Math.round(n)),{hour:"numeric",minute:"2-digit",timeZone:Be},e),Wc=/(?<![\w-])(\d{4}-\d{2}-\d{2})(?![\w-]|:)/g;function wr(n,e){return n.includes("-")?n.replace(Wc,t=>Oe(t,e)):n}var ln=n=>n.charAt(0).toUpperCase()+n.slice(1),Ai=n=>/^.\p{Lu}/u.test(n)?n:n.charAt(0).toLowerCase()+n.slice(1),_i=(n,e="and")=>n.length>1?`${n.slice(0,-1).join(", ")} ${e} ${n.at(-1)}`:n[0]??"";function G(n){let e=n.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").trim().toLowerCase();return ln(e.replace(/\b[a-z]+\b/g,t=>Oi.has(t)?t.toUpperCase():t.endsWith("s")&&Oi.has(t.slice(0,-1))?`${t.slice(0,-1).toUpperCase()}s`:t))}var Oi=new Set("id url uri api ip ioc cve cvss cwe cpe sku vat iban isbn pdf csv json html css sla kpi roi faq ssn ein vin gps sms crm erp seo utm ui ux ai dns ssl tls http https sql uuid mfa sso cto ceo cfo coo rsvp eta".split(" "));function qc(n,e){return{...e,kind:n,edges:e.edges??{}}}function xr(n,e,t){let r=n?.lifecycle;if(!r)return!0;let o=e[r.field];return r.retired==="date"?typeof o!="string"||o.length===0?!0:o>=(t??ee()):!r.retired.includes(o)}function K(n,e){if(n?.label)return n.label(e);let t=e.label;return typeof t=="string"&&t.length>0?t:e.id}function Hc(n){return n.title??G(n.name)}function Yc(n,e,t){let r=n.tryDefinition(e);return`${me(t)} ${t===1?H(r,e):ae(n,e).toLowerCase()}`}function ae(n,e){return n.tryDefinition(e)?.plural??`${G(e).toLowerCase()}s`}function Jc(n,e){return ln(ae(n,e))}function Xc(n,e){let t=ae(n,e);return`All ${/^[A-Z][a-z]/.test(t)?t.charAt(0).toLowerCase()+t.slice(1):t}`}function wt(n,e){let t=n?.computed&&Object.hasOwn(n.computed,e)?n.computed[e]:void 0;return n?.display?.labels?.[e]??(typeof t=="object"?t.label:void 0)??(e==="label"?"Name":G(e))}var Qc=/^(u[nt]i|use|usu|uti|ubiq|eu|ewe|one|once)/,el=/^(hour|honest|hono[ur]r?|heir)/;function Pi(n){let e=G(n).toLowerCase();return el.test(e)?"an":Qc.test(e)?"a":/^[aeiou]/.test(e)?"an":"a"}function un(n){return`${Pi(n)} ${G(n).toLowerCase()}`}function H(n,e){return n?.noun??G(e).toLowerCase()}function Rr(n){let e=Object.values(n).filter(r=>typeof r=="number");return Object.entries(n).filter(([r,o])=>e.indexOf(+r)===-1).map(([r,o])=>o)}function $r(n,e="|"){return n.map(t=>Er(t)).join(e)}function Mi(n,e){return typeof e=="bigint"?e.toString():e}var Sr=class{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;return e!==void 0&&(this._value=e(),this._getter=void 0),this._value}};function zi(n){return new Sr(n)}function Ni(n){return n==null}function Ar(n){let e=n.startsWith("^")?1:0,t=n.endsWith("$")?n.length-1:n.length;return n.slice(e,t)}function Ii(n,e){let t=n/e,r=Math.round(t),o=4*Number.EPSILON*Math.max(Math.abs(t),1);return Math.abs(t-r)<o?0:t-r}var Ei=Symbol("evaluating");function Ti(n,e,t){let r;Object.defineProperty(n,e,{get(){if(r!==Ei)return r===void 0&&(r=Ei,r=t()),r},set(o){Object.defineProperty(n,e,{value:o})},configurable:!0})}function kt(n,e,t){Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0})}function ji(n){let e=Object.getOwnPropertyDescriptor(n,"shape");return e?.get?e.get.raw:e?.value}function _r(n){return ji(n._zod.def)??n._zod.def.shape}function Di(n,e,t){Object.defineProperty(n,e,{get(){let r=t();return kt(this,e,r),r},enumerable:!0,configurable:!0})}function Fi(n,e,t){e in n?kt(n,e,t):n[e]=t}function nl(n,e,t,r){let o=_r(e);for(let i of t){let s=Object.getOwnPropertyDescriptor(o,i);s.enumerable&&(s.get?Di(n,i,()=>{let a=e._zod.def.shape[i];return r?r(a,i):a}):Fi(n,i,r?r(s.value,i):s.value))}}function tl(n,e){for(let t of Reflect.ownKeys(e)){let r=Object.getOwnPropertyDescriptor(e,t);r.enumerable&&(r.get?Di(n,t,()=>e[t]):Fi(n,t,r.value))}}function Li(...n){let e={};for(let t of n){let r=Object.getOwnPropertyDescriptors(t);Object.assign(e,r)}return Object.defineProperties({},e)}var Or="captureStackTrace"in Error?Error.captureStackTrace:(...n)=>{};function xt(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function Pr(n){if(xt(n)===!1)return!1;let e=n.constructor;if(e===void 0||typeof e!="function")return!0;let t=e.prototype;return!(xt(t)===!1||Object.prototype.hasOwnProperty.call(t,"isPrototypeOf")===!1)}var Zi=new Set(["string","number","symbol"]);function Zn(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function fn(n,e,t){let r=new n._zod.constr(e??n._zod.def);return(!e||t?.parent)&&(r._zod.parent=n),r}function I(n){let e=n;if(!e)return{};if(typeof e=="string")return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");e.error=e.message}return delete e.message,typeof e.error=="string"?{...e,error:()=>e.error}:e}function Er(n){return typeof n=="bigint"?n.toString()+"n":typeof n=="string"?`"${n}"`:`${n}`}function Ci(n){return Object.keys(n).filter(e=>n[e]._zod.optin!==void 0&&n[e]._zod.optout==="optional")}var Gi={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function Ki(n,e){if(!Pr(e))throw new Error("Invalid input to extend: expected a plain object");let t=n._zod.def.checks;if(t&&t.length>0){let o=_r(n);for(let i of Reflect.ownKeys(e))if(Object.getOwnPropertyDescriptor(o,i)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return fn(n,Li(n._zod.def,{shape:rl(n,e)}))}function rl(n,e){let t={};return nl(t,n,Reflect.ownKeys(_r(n))),tl(t,e),t}function ye(n,e=0){if(n.aborted===!0)return!0;for(let t=e;t<n.issues.length;t++)if(n.issues[t]?.continue!==!0)return!0;return!1}function Bi(n,e=0){if(n.aborted===!0)return!0;for(let t=e;t<n.issues.length;t++)if(n.issues[t]?.continue===!1)return!0;return!1}function Ee(n,e){return e.map(t=>{var r;return(r=t).path??(r.path=[]),t.path.unshift(n),t})}function Ln(n){return typeof n=="string"?n:n?.message}function Mr(n,e,t){var r;for(let o=e;o<n.length;o++)(r=n[o]).schema??(r.schema=t)}function be(n,e,t){var r;let o=n.inst?._zod?.traits;o?.has("$ZodType")&&(o.has("$ZodCheck")?(r=n).schema??(r.schema=n.inst):n.schema=n.inst);let i=n.schema!==n.inst?n.schema?._zod.def?.error:void 0,s=n.message?n.message:Ln(n.inst?._zod.def?.error?.(n))??Ln(i?.(n))??Ln(e?.error?.(n))??Ln(t.customError?.(n))??Ln(t.localeError?.(n))??"Invalid input",a={};for(let d of Object.keys(n))d==="inst"||d==="schema"||d==="continue"||d==="input"||d==="__proto__"||(a[d]=n[d]);return a.path??(a.path=[]),a.message=s,e?.reportInput&&(a.input=n.input),a}var ol=/[\uD800-\uDBFF]/;function zr(n){let e=n.length;if(!ol.test(n))return e;let t=e;for(let r=0;r<e-1;r++)(n.charCodeAt(r)&64512)===55296&&(n.charCodeAt(r+1)&64512)===56320&&(t--,r++);return t}function Nr(n){return Array.isArray(n)?"array":typeof n=="string"?"string":"unknown"}function Vi(n){let e=typeof n;switch(e){case"number":return Number.isNaN(n)?"nan":"number";case"object":{if(n===null)return"null";if(Array.isArray(n))return"array";let t=n;if(t&&Object.getPrototypeOf(t)!==Object.prototype&&"constructor"in t&&t.constructor)return t.constructor.name}}return e}function Cn(...n){let[e,t,r]=n;return typeof e=="string"?{message:e,code:"custom",input:t,inst:r}:{...e}}function Ui(n,e){for(let t in e){let r=Object.getOwnPropertyDescriptor(e,t);r.get?Object.defineProperty(n,t,{...r,enumerable:!1}):il(n,t,r.value)}}function Ve(n,e,t,r=!0){return Object.defineProperty(n,e,{configurable:!0,writable:!0,enumerable:r,value:t}),t}function Ir(n,e,t){return Ve(n,e,t,!1)}function il(n,e,t){Object.defineProperty(n,e,{configurable:!0,get(){return this==null?t:Ve(this,e,t.bind(this))},set(r){Ve(this,e,r)}})}function sl(n,e){let t=Object.getPrototypeOf(n);return e in t?void 0:t}var kr,Pe=!1,al={configurable:!0,get(){Pe=!0}};function Y(n,e,t){let r=Object.getPrototypeOf(n._zod);if(e in r&&kr!==n._zod){kr=void 0;return}kr=n._zod,Object.defineProperty(r,e,{configurable:!0,get(){Object.defineProperty(this,e,al);let o=Pe;Pe=!1;try{let i=t(this);return Pe?delete this[e]:Object.defineProperty(this,e,{configurable:!0,writable:!0,value:i}),Pe=Pe||o,i}catch(i){throw delete this[e],Pe=Pe||o,i}},set(o){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:o})}})}function Wi(n,e,t,r){let o=sl(n,e);o&&Object.defineProperty(o,e,{configurable:!0,get(){let i={configurable:!0,writable:!0,enumerable:r,value:void 0};return Object.defineProperty(this,e,i),i.value=t(this),Object.defineProperty(this,e,i),i.value},set(i){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:r,value:i})}})}var qi;var Tr={value:void 0,enumerable:!1},Hi="captureStackTrace"in Error?Error:null;function dl(n){let e=Hi;if(e){let t=e.stackTraceLimit;if(typeof t=="number"){try{e.stackTraceLimit=0}catch{return Hi=null,new n}try{return new n}finally{e.stackTraceLimit=t}}}return new n}function O(n,e,t,r){let o={};function i(c){this.def=c,this.constr=f,this.traits=new Set}i.prototype=o;let s=t,a=s&&new WeakSet;function d(c,p){if(c._zod){if(c._zod.traits.has(n))return}else{Tr.value=new i(p);try{Object.defineProperty(c,"_zod",Tr)}finally{Tr.value=void 0}}if(c._zod.traits.add(n),e(c,p),a){let h=Object.getPrototypeOf(c),v=c._zod.constr.prototype,y=h;for(;y&&y!==v;)y=Object.getPrototypeOf(y);let x=y??h;a.has(x)||(a.add(x),Ui(x,s))}let g=f.prototype;for(let h in g)Object.prototype.hasOwnProperty.call(g,h)&&(h in c||(c[h]=g[h].bind(c)))}let u=r?.Parent??Object;class l extends u{}Object.defineProperty(l,"name",{value:n});function f(c){let p=r?.Parent?dl(l):this;d(p,c);let g=p._zod.deferred;if(g){for(let v of g)v();p._zod.deferred=void 0}let h=globalThis.__zod_globalConfig?.postProcessor;return h&&h(p),p}return Object.defineProperty(f,"init",{value:d}),Object.defineProperty(f,Symbol.hasInstance,{value:c=>r?.Parent&&c instanceof r.Parent?!0:c?._zod?.traits?.has(n)}),Object.defineProperty(f,"name",{value:n}),f}var we=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};(qi=globalThis).__zod_globalConfig??(qi.__zod_globalConfig={});var pn=globalThis.__zod_globalConfig;function re(n){return n&&Object.assign(pn,n),pn}function cl(){let n=this._zod;return n.message??(n.message=JSON.stringify(n.def,Mi,2)),n.message}function ll(n){this._zod.message=n}var ul={get:cl,set:ll,enumerable:!0,configurable:!0},Dr={value:void 0,enumerable:!1},Yi=new WeakSet([Object.prototype,Error.prototype]),Ji=(n,e)=>{n.name="$ZodError",Dr.value=e,Object.defineProperty(n,"issues",Dr),Dr.value=void 0,Object.defineProperty(n,"message",ul);let t=Object.getPrototypeOf(n);Yi.has(t)||(Yi.add(t),Object.defineProperty(t,"toString",{configurable:!0,enumerable:!1,get(){let r=()=>this.message;return Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0}),r},set(r){Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0})}}))},zh=O("$ZodError",Ji),Gn=O("$ZodError",Ji,void 0,{Parent:Error});var pl=n=>{let e=(t,r,o,i)=>{let s=o?{...o,async:!1}:{async:!1},a=t._zod.run({value:r,issues:[]},s);if(a instanceof Promise)throw new we;if(a.issues.length){let d=new(i?.Err??n)(a.issues.map(u=>be(u,s,re())));throw Or(d,i?.callee??e),d}return a.value};return e},Fr=pl(Gn),hl=n=>{let e=async(t,r,o,i)=>{let s=o?{...o,async:!0}:{async:!0},a=t._zod.run({value:r,issues:[]},s);if(a instanceof Promise&&(a=await a),a.issues.length){let d=new(i?.Err??n)(a.issues.map(u=>be(u,s,re())));throw Or(d,i?.callee??e),d}return a.value};return e},Lr=hl(Gn),gl=n=>(e,t,r)=>{let o=r?{...r,async:!1}:{async:!1},i=e._zod.run({value:t,issues:[]},o);if(i instanceof Promise)throw new we;return i.issues.length?Xi(n,i.issues,o):{success:!0,data:i.value}},Zr=gl(Gn);function Xi(n,e,t){let r;return{success:!1,get error(){return r||(r=new n(e.map(o=>be(o,t,re()))),e=void 0,t=void 0),r},set error(o){r=o,e=void 0,t=void 0}}}var ml=n=>async(e,t,r)=>{let o=r?{...r,async:!0}:{async:!0},i=e._zod.run({value:t,issues:[]},o);return i instanceof Promise&&(i=await i),i.issues.length?Xi(n,i.issues,o):{success:!0,data:i.value}},Cr=ml(Gn);var Qi=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var es=/^https?$/;var ns=/^[\s\S]{0,}$/;var Gr=/^-?\d+(?:\.\d+)?$/,ts=/^(?:true|false)$/i,rs=/^null$/i;var oe=O("$ZodCheck",(n,e)=>{var t;n._zod??(n._zod={}),n._zod.def=e,(t=n._zod).onattach??(t.onattach=[])});var os=n=>{let e=n.value;return!Ni(e)&&e.length!==void 0},St={number:"number",bigint:"bigint",object:"date"},is=O("$ZodCheckLessThan",(n,e)=>{oe.init(n,e);let t=St[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value<=e.value:r.value<e.value)||r.issues.push({origin:St[typeof r.value]??t,code:"too_big",maximum:typeof e.value=="object"?e.value.getTime():e.value,input:r.value,inclusive:e.inclusive,inst:n,continue:!e.abort})}}),ss=O("$ZodCheckGreaterThan",(n,e)=>{oe.init(n,e);let t=St[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value>=e.value:r.value>e.value)||r.issues.push({origin:St[typeof r.value]??t,code:"too_small",minimum:typeof e.value=="object"?e.value.getTime():e.value,input:r.value,inclusive:e.inclusive,inst:n,continue:!e.abort})}}),as=O("$ZodCheckMultipleOf",(n,e)=>{oe.init(n,e),n._zod.check=t=>{if(typeof t.value!=typeof e.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof t.value=="bigint"?e.value!==BigInt(0)&&t.value%e.value===BigInt(0):Ii(t.value,e.value)===0)||t.issues.push({origin:typeof t.value,code:"not_multiple_of",divisor:e.value,input:t.value,inst:n,continue:!e.abort})}}),ds=O("$ZodCheckNumberFormat",(n,e)=>{oe.init(n,e),e.format=e.format||"float64";let t=e.format?.includes("int"),r=t?"int":"number",[o,i]=Gi[e.format];n._zod.check=s=>{let a=s.value;if(t){if(!Number.isInteger(a)){s.issues.push({expected:r,format:e.format,code:"invalid_type",continue:!1,input:a,inst:n});return}if(!Number.isSafeInteger(a)){a>0?s.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:r,inclusive:!0,continue:!e.abort}):s.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:r,inclusive:!0,continue:!e.abort});return}}a<o&&s.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:n,continue:!e.abort}),a>i&&s.issues.push({origin:"number",input:a,code:"too_big",maximum:i,inclusive:!0,inst:n,continue:!e.abort})}});var cs=O("$ZodCheckMaxLength",(n,e)=>{var t;oe.init(n,e),(t=n._zod.def).when??(t.when=os),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>e.maximum?zr(o):i)<=e.maximum)return;let a=Nr(o);r.issues.push({origin:a,code:"too_big",maximum:e.maximum,inclusive:!0,input:o,inst:n,continue:!e.abort})}}),ls=O("$ZodCheckMinLength",(n,e)=>{var t;oe.init(n,e),(t=n._zod.def).when??(t.when=os),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>=e.minimum&&i<e.minimum*2?zr(o):i)>=e.minimum)return;let a=Nr(o);r.issues.push({origin:a,code:"too_small",minimum:e.minimum,inclusive:!0,input:o,inst:n,continue:!e.abort})}});var Br=O("$ZodCheckStringFormat",(n,e)=>{var t,r;oe.init(n,e),e.pattern?(t=n._zod).check??(t.check=o=>{e.pattern.lastIndex=0,!e.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:e.format,input:o.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:n,continue:!e.abort})}):(r=n._zod).check??(r.check=()=>{})}),us=O("$ZodCheckRegex",(n,e)=>{Br.init(n,e),n._zod.check=t=>{e.pattern.lastIndex=0,!e.pattern.test(t.value)&&t.issues.push({origin:"string",code:"invalid_format",format:"regex",input:t.value,pattern:e.pattern.toString(),inst:n,continue:!e.abort})}});var ps={major:4,minor:6,patch:5};var V=O("$ZodType",(n,e)=>{var t;n??(n={}),n._zod.def=e,n._zod.bag=n._zod.bag||{},n._zod.version=ps;let r=n._zod.def.checks,o=n._zod.traits.has("$ZodCheck")?[n,...r??[]]:r?.length?[...r]:[];for(let i of o)for(let s of i._zod.onattach)s(n);if(o.length===0)(t=n._zod).deferred??(t.deferred=[]),n._zod.deferred?.push(()=>{n._zod.run=n._zod.parse});else{let i=(a,d,u)=>{if(a.memo)return a;let l=ye(a),f;for(let c of d){if(c._zod.def.when){if(Bi(a)||!c._zod.def.when(a))continue}else if(l)continue;let p=a.issues.length,g=c._zod.check(a);if(g instanceof Promise&&u?.async===!1)throw new we;if(f||g instanceof Promise)f=(f??Promise.resolve()).then(async()=>{await g,a.issues.length!==p&&(Mr(a.issues,p,n),l||(l=ye(a,p)))});else{if(a.issues.length===p)continue;Mr(a.issues,p,n),l||(l=ye(a,p))}}return f?f.then(()=>a):a},s=(a,d,u)=>{if(ye(a))return a.aborted=!0,a;let l=i(d,o,u);if(l instanceof Promise){if(u.async===!1)throw new we;return l.then(f=>n._zod.parse(f,u))}return n._zod.parse(l,u)};n._zod.run=(a,d)=>{if(d.skipChecks)return n._zod.parse(a,d);if(d.direction==="backward"){let l=n._zod.parse({value:a.value,issues:[]},{...d,skipChecks:!0});return l instanceof Promise?l.then(f=>s(f,a,d)):s(l,a,d)}let u=n._zod.parse(a,d);if(u instanceof Promise){if(d.async===!1)throw new we;return u.then(l=>i(l,o,d))}return i(u,o,d)}}},{get"~standard"(){return Ir(this,"~standard",bl(this))},set"~standard"(n){Ve(this,"~standard",n)}}),vs=(n,e)=>n.issues.length?{issues:n.issues.map(t=>be(t,e,re()))}:{value:n.value};async function yl(n,e){let t={async:!0};return vs(await n._zod.run({value:e,issues:[]},t),t)}function bl(n){return{validate:e=>{let t={async:!1};try{let r=n._zod.run({value:e,issues:[]},t);if(!(r instanceof Promise))return vs(r,t)}catch{}return yl(n,e)},vendor:"zod",version:1}}var Vr=O("$ZodString",(n,e)=>{V.init(n,e),n._zod.pattern=e.pattern??ns,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=String(t.value)}catch{}return typeof t.value=="string"||t.issues.push({expected:"string",code:"invalid_type",input:t.value,inst:n}),t}}),At=O("$ZodStringFormat",(n,e)=>{Br.init(n,e),Vr.init(n,e)});var ws=O("$ZodEmail",(n,e)=>{e.pattern??(e.pattern=Qi),At.init(n,e)}),xs=1,Rt=2;function vl(n){try{return typeof URL<"u"&&typeof URL.canParse=="function"?URL.canParse(n):(new URL(n),!0)}catch{return!1}}function wl(n,e){return!("normalize"in e)&&!("hostname"in e)&&!("protocol"in e)?vl(n)||Rt:xl(n,e)}function xl(n,e){if(!e.normalize&&e.protocol?.source===es.source&&!/^https?:\/\//i.test(n))return xs;try{if(typeof URL<"u"){let t=URL;if(typeof t.parse=="function")return t.parse(n)??Rt}return new URL(n)}catch{return Rt}}var kl=/[\t\n\r]/g;function hs(n){return n.replace(kl,"")}function Sl(n,e){return e.lastIndex=0,e.test(n.hostname)}function Rl(n,e){return e.lastIndex=0,e.test(n.protocol.endsWith(":")?n.protocol.slice(0,-1):n.protocol)}var ks=O("$ZodURL",(n,e)=>{At.init(n,e),n._zod.check=t=>{try{let r=t.value.trim(),o=wl(r,e);if(o===xs){t.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:t.value,inst:n,continue:!e.abort});return}if(o===Rt){t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort});return}if(o===!0){t.value=hs(r);return}e.hostname&&!Sl(o,e.hostname)&&t.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:e.hostname.source,input:t.value,inst:n,continue:!e.abort}),e.protocol&&!Rl(o,e.protocol)&&t.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:e.protocol.source,input:t.value,inst:n,continue:!e.abort}),t.value=e.normalize?o.href:hs(r);return}catch{t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort})}}});var Ur=O("$ZodNumber",(n,e)=>{V.init(n,e),n._zod.pattern=Gr,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=Number(t.value)}catch{}let o=t.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return t;let i=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:String(o):void 0;return t.issues.push({expected:"number",code:"invalid_type",input:o,inst:n,...i?{received:i}:{}}),t}}),Ss=O("$ZodNumberFormat",(n,e)=>{ds.init(n,e),Ur.init(n,e)}),Rs=O("$ZodBoolean",(n,e)=>{V.init(n,e),n._zod.pattern=ts,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=!!t.value}catch{}let o=t.value;return typeof o=="boolean"||t.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:n}),t}});var $s=O("$ZodNull",(n,e)=>{V.init(n,e),n._zod.pattern=rs,n._zod.values=new Set([null]),n._zod.parse=(t,r)=>{let o=t.value;return o===null||t.issues.push({expected:"null",code:"invalid_type",input:o,inst:n}),t}});var As=O("$ZodUnknown",(n,e)=>{V.init(n,e),n._zod.parse=t=>t}),_s=O("$ZodNever",(n,e)=>{V.init(n,e),n._zod.parse=(t,r)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:n}),t)});function gs(n,e,t){n.issues.length&&e.issues.push(...Ee(t,n.issues)),e.value[t]=n.value}var Os=O("$ZodArray",(n,e)=>{V.init(n,e);let t=pn.memoizer;t?.attach(n),n._zod.parse=(r,o)=>{let i=r.value;if(!Array.isArray(i))return r.issues.push({expected:"array",code:"invalid_type",input:i,inst:n}),r;r.value=t?t.alloc(n,r,Array(i.length),o):Array(i.length);let s=[],a=o?.abortEarly;for(let d=0;d<i.length;d++){let u=i[d],l=e.element._zod.run({value:u,issues:[]},o);if(l instanceof Promise)s.push(l.then(f=>gs(f,r,d)));else if(gs(l,r,d),a&&l.issues.length!==0&&ye(l))break}return s.length?Promise.all(s).then(()=>r):r}});function $t(n,e,t,r,o,i){let s=t in r,a=i==="optional";if(!(!s&&a&&o==="optional")){if(n.issues.length){if(o!==void 0&&a&&!s)return;e.issues.push(...Ee(t,n.issues))}if(!s&&o===void 0){n.issues.length||e.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[t]});return}n.value===void 0?(s||o==="defaulted"&&!a)&&(e.value[t]=void 0):e.value[t]=n.value}}var $l=[];function Al(n){let e=Object.keys(n.shape),t=Object.getOwnPropertySymbols(n.shape),r=t.length?t:$l,o=r.length?[...e,...r]:e;for(let s of o)if(!n.shape?.[s]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${String(s)}": expected a Zod schema`);let i=Ci(n.shape);return{...n,allKeys:o,symbolKeys:r,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(i)}}function _l(n,e,t,r,o,i,s){let a=[],d=o.keySet,u=o.catchall._zod,l=u.def.type,f=u.optin,c=u.optout,p=0;for(let g in e){if(s&&t.issues.length!==p){if(ye(t,p))break;p=t.issues.length}if(d.has(g))continue;if(g==="__proto__"){l==="never"&&a.push(g);continue}if(l==="never"){a.push(g);continue}let h=u.run({value:e[g],issues:[]},r);h instanceof Promise?n.push(h.then(v=>$t(v,t,g,e,f,c))):$t(h,t,g,e,f,c)}return a.length&&t.issues.push({code:"unrecognized_keys",keys:a,input:e,inst:i,continue:!0}),n.length?Promise.all(n).then(()=>t):t}var Ps=O("$ZodObject",(n,e)=>{V.init(n,e);let t=Object.getOwnPropertyDescriptor(e,"shape"),r=t?.get?t.get.raw:e.shape??{};if(r){let u=()=>{let l={...r};return Object.defineProperty(e,"shape",{value:l}),u.raw=l,l};u.raw=r,Object.defineProperty(e,"shape",{get:u})}let o=zi(()=>Al(e));Y(n,"propValues",u=>{let l=u.def.shape,f={};for(let c in l){let p=l[c]._zod;if(p.values){Object.prototype.hasOwnProperty.call(f,c)||kt(f,c,new Set);for(let g of p.values)f[c].add(g);p.optin!==void 0&&f[c].add(void 0)}}return f});let i=xt,s=e.catchall,a,d=pn.memoizer;d?.attach(n),n._zod.parse=(u,l)=>{a??(a=o.value);let f=u.value;if(!i(f))return u.issues.push({expected:"object",code:"invalid_type",input:f,inst:n}),u;u.value=d?d.alloc(n,u,{},l):{};let c=[],p=a.shape,g=l?.abortEarly,h=u.issues.length;for(let v of a.allKeys){if(g&&u.issues.length!==h){if(ye(u,h))break;h=u.issues.length}if(v==="__proto__")continue;let y=p[v],x=y._zod.optin,$=y._zod.optout,k=y._zod.run({value:f[v],issues:[]},l);k instanceof Promise?c.push(k.then(_=>$t(_,u,v,f,x,$))):$t(k,u,v,f,x,$)}return s?_l(c,f,u,l,o.value,n,g===!0):c.length?Promise.all(c).then(()=>u):u}});function ms(n,e,t,r){for(let i of n)if(i.issues.length===0)return e.value=i.value,e;let o=n.filter(i=>!ye(i));return o.length===1?(e.value=o[0].value,o[0]):(e.issues.push({code:"invalid_union",input:e.value,inst:t,errors:n.map(i=>i.issues.map(s=>be(s,r,re())))}),e)}var Es=O("$ZodUnion",(n,e)=>{V.init(n,e),Y(n,"optin",r=>r.def.options.some(o=>o._zod.optin==="defaulted")?"defaulted":r.def.options.some(o=>o._zod.optin!==void 0)?"optional":void 0),Y(n,"optout",r=>r.def.options.some(o=>o._zod.optout==="optional")?"optional":void 0),Y(n,"values",r=>{if(r.def.options.every(o=>o._zod.values))return new Set(r.def.options.flatMap(o=>Array.from(o._zod.values)))}),Y(n,"pattern",r=>{if(r.def.options.every(o=>o._zod.pattern)){let o=r.def.options.map(i=>i._zod.pattern);return new RegExp(`^(${o.map(i=>Ar(i.source)).join("|")})$`)}});let t=e.options.length===1?e.options[0]._zod.run:null;n._zod.parse=(r,o)=>{if(t)return t(r,o);let i=!1,s=[];for(let a of e.options){let d=a._zod.run({value:r.value,issues:[]},o);if(d instanceof Promise)s.push(d),i=!0;else{if(d.issues.length===0)return d;s.push(d)}}return i?Promise.all(s).then(a=>ms(a,r,n,o)):ms(s,r,n,o)}});var Ms=O("$ZodRecord",(n,e)=>{V.init(n,e);let t=pn.memoizer;t?.attach(n),n._zod.parse=(r,o)=>{let i=r.value;if(!Pr(i))return r.issues.push({expected:"record",code:"invalid_type",input:i,inst:n}),r;let s=[],a=e.keyType._zod.values;if(a&&!e.partial){r.value=t?t.alloc(n,r,{},o):{};let d=new Set;for(let l of a)if(typeof l=="string"||typeof l=="number"||typeof l=="symbol"){if(d.add(typeof l=="number"?l.toString():l),l==="__proto__")continue;let f=e.keyType._zod.run({value:l,issues:[]},o);if(f instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(f.issues.length){r.issues.push({code:"invalid_key",origin:"record",issues:f.issues.map(g=>be(g,o,re())),input:l,path:[l],inst:n});continue}let c=f.value;if(c==="__proto__")continue;let p=e.valueType._zod.run({value:i[l],issues:[]},o);p instanceof Promise?s.push(p.then(g=>{g.issues.length&&r.issues.push(...Ee(l,g.issues)),r.value[c]=g.value})):(p.issues.length&&r.issues.push(...Ee(l,p.issues)),r.value[c]=p.value)}let u;for(let l in i)if(!d.has(l))if(e.mode==="loose"){if(l==="__proto__")continue;r.value[l]=i[l]}else u=u??[],u.push(l);u&&u.length>0&&r.issues.push({code:"unrecognized_keys",input:i,inst:n,keys:u,continue:!0})}else{r.value=t?t.alloc(n,r,{},o):{};let d;for(let u of Reflect.ownKeys(i)){if(u==="__proto__"||!Object.prototype.propertyIsEnumerable.call(i,u))continue;let l=e.keyType._zod.run({value:u,issues:[]},o);if(l instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof u=="string"&&Gr.test(u)&&l.issues.length){let g=e.keyType._zod.run({value:Number(u),issues:[]},o);if(g instanceof Promise)throw new Error("Async schemas not supported in object keys currently");g.issues.length===0&&(l=g)}if(l.issues.length){e.mode==="loose"?r.value[u]=i[u]:a?(d=d??[],d.push(u)):r.issues.push({code:"invalid_key",origin:"record",issues:l.issues.map(g=>be(g,o,re())),input:u,path:[u],inst:n});continue}let c=l.value;if(c==="__proto__")continue;let p=e.valueType._zod.run({value:i[u],issues:[]},o);p instanceof Promise?s.push(p.then(g=>{g.issues.length&&r.issues.push(...Ee(u,g.issues)),r.value[c]=g.value})):(p.issues.length&&r.issues.push(...Ee(u,p.issues)),r.value[c]=p.value)}d&&d.length>0&&r.issues.push({code:"unrecognized_keys",input:i,inst:n,keys:d,continue:!0})}return s.length?Promise.all(s).then(()=>r):r}});var zs=O("$ZodEnum",(n,e)=>{V.init(n,e);let t=Rr(e.entries),r=new Set(t);n._zod.values=r,Y(n,"pattern",o=>{let i=Rr(o.def.entries).filter(s=>Zi.has(typeof s));return new RegExp(i.length?`^(${i.map(s=>Zn(s.toString())).join("|")})$`:"^[^\\s\\S]$")}),n._zod.parse=(o,i)=>{let s=o.value;return r.has(s)||o.issues.push({code:"invalid_value",values:t,input:s,inst:n}),o}}),Ns=O("$ZodLiteral",(n,e)=>{V.init(n,e);let t=new Set(e.values);n._zod.values=t,Y(n,"pattern",r=>{let o=r.def.values;return new RegExp(o.length?`^(${o.map(i=>typeof i=="string"?Zn(i):i?Zn(i.toString()):String(i)).join("|")})$`:"^[^\\s\\S]$")}),n._zod.parse=(r,o)=>{let i=r.value;return t.has(i)||r.issues.push({code:"invalid_value",values:e.values,input:i,inst:n}),r}});function ys(n,e){return n.value=e.issues.length?void 0:e.value,n}var Is=O("$ZodOptional",(n,e)=>{V.init(n,e),Y(n,"optin",t=>t.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),n._zod.optout="optional",Y(n,"values",t=>{let r=t.def.innerType._zod.values;return r?new Set([...r,void 0]):void 0}),Y(n,"pattern",t=>{let r=t.def.innerType._zod.pattern;return r?new RegExp(`^(${Ar(r.source)})?$`):void 0}),n._zod.parse=(t,r)=>{if(t.value===void 0){if(e.innerType._zod.optin!=="defaulted")return t;let o=e.innerType._zod.run({value:t.value,issues:[]},r);return o instanceof Promise?o.then(i=>ys(t,i)):ys(t,o)}return e.innerType._zod.run(t,r)}});var Ts=O("$ZodLazy",(n,e)=>{V.init(n,e),Ti(n._zod,"innerType",()=>{let t=e;return t._cachedInner||(t._cachedInner=e.getter()),t._cachedInner}),Y(n,"pattern",t=>t.innerType?._zod?.pattern),Y(n,"propValues",t=>t.innerType?._zod?.propValues),Y(n,"optin",t=>t.innerType?._zod?.optin??void 0),Y(n,"optout",t=>t.innerType?._zod?.optout??void 0),n._zod.parse=(t,r)=>n._zod.innerType._zod.run(t,r)}),js=O("$ZodCustom",(n,e)=>{oe.init(n,e),V.init(n,e),n._zod.parse=(t,r)=>t,n._zod.check=t=>{let r=t.value,o=e.fn(r);if(o instanceof Promise)return o.then(i=>bs(i,t,r,n));bs(o,t,r,n)}});function bs(n,e,t,r){if(!n){let o={code:"custom",input:t,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(o.params=r._zod.def.params),e.issues.push(Cn(o))}}var Ol=()=>{let n={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function e(i){return n[i]??null}let t={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",currency_code:"currency code",credit_card:"credit card number",iban:"IBAN",jwt:"JWT",template_literal:"input"},r={nan:"NaN"};function o(i,s){return i==="number"&&typeof s=="number"&&!Number.isFinite(s)?String(s):r[i]??i}return i=>{switch(i.code){case"invalid_type":{let s=o(i.expected),a=Vi(i.input),d=o(a,i.input);return`Invalid input: expected ${s}, received ${d}`}case"invalid_value":return i.values.length===1?`Invalid input: expected ${Er(i.values[0])}`:`Invalid option: expected one of ${$r(i.values,"|")}`;case"too_big":{let s=i.exact?"exactly ":i.inclusive?"<=":"<",a=e(i.origin);return a?`Too big: expected ${i.origin??"value"} to have ${s}${i.maximum.toString()} ${a.unit??"elements"}`:`Too big: expected ${i.origin??"value"} to be ${s}${i.maximum.toString()}`}case"too_small":{let s=i.exact?"exactly ":i.inclusive?">=":">",a=e(i.origin);return a?`Too small: expected ${i.origin} to have ${s}${i.minimum.toString()} ${a.unit}`:`Too small: expected ${i.origin} to be ${s}${i.minimum.toString()}`}case"invalid_format":{let s=i;return s.format==="starts_with"?`Invalid string: must start with "${s.prefix}"`:s.format==="ends_with"?`Invalid string: must end with "${s.suffix}"`:s.format==="includes"?`Invalid string: must include "${s.includes}"`:s.format==="regex"?`Invalid string: must match pattern ${s.pattern}`:`Invalid ${t[s.format]??i.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${i.divisor}`;case"unrecognized_keys":return`Unrecognized key${i.keys.length>1?"s":""}: ${$r(i.keys,", ")}`;case"invalid_key":return`Invalid key in ${i.origin}`;case"invalid_union":return i.options&&Array.isArray(i.options)&&i.options.length>0?`Invalid discriminator value. Expected ${i.options.map(a=>`'${a}'`).join(" | ")}`:i.inclusive===!1?"Invalid input: more than one option matched":"Invalid input";case"invalid_element":return`Invalid value in ${i.origin}`;default:return"Invalid input"}}};function Ds(){return{localeError:Ol()}}var Fs;var Wr=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let r=t[0];return this._map.set(e,r),r&&typeof r=="object"&&"id"in r&&this._idmap.set(r.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t=="object"&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let r={...this.get(t)??{}};delete r.id;let o={...r,...this._map.get(e)};return Object.keys(o).length?o:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function Ls(){return new Wr}(Fs=globalThis).__zod_globalRegistry??(Fs.__zod_globalRegistry=Ls());var hn=globalThis.__zod_globalRegistry;function Zs(n){return n.checks&&(n.checks=[...n.checks]),n}function Cs(n,e){return new n(Zs({type:"string",...I(e)}))}function Gs(n,e){return new n({type:"string",format:"email",check:"string_format",abort:!1,...I(e)})}function Ks(n,e){return new n({type:"string",format:"url",check:"string_format",abort:!1,...I(e)})}function Bs(n,e){return new n(Zs({type:"number",checks:[],...I(e)}))}function Vs(n,e){return new n({type:"number",check:"number_format",abort:!1,format:"safeint",...I(e)})}function Us(n,e){return new n({type:"boolean",...I(e)})}function Ws(n,e){return new n({type:"null",...I(e)})}function qs(n){return new n({type:"unknown"})}function Hs(n,e){return new n({type:"never",...I(e)})}function Ys(n,e){return new is({check:"less_than",...I(e),value:n,inclusive:!0})}function Js(n,e){return new ss({check:"greater_than",...I(e),value:n,inclusive:!0})}function zl(n,e){return new as({check:"multiple_of",...I(e),value:n})}function qr(n,e){return new cs({check:"max_length",...I(e),maximum:n})}function Kn(n,e){return new ls({check:"min_length",...I(e),minimum:n})}function Bn(n,e){return new us({check:"string_format",format:"regex",...I(e),pattern:n})}function Xs(n,e,t){return new n({type:"custom",check:"custom",fn:e,...I(t)})}function Qs(n,e){let t=Nl(r=>(r.addIssue=o=>{if(typeof o=="string")r.issues.push(Cn(o,r.value,t._zod.def));else{let i=o;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),"input"in i||(i.input=r.value),i.inst??(i.inst=t),i.continue??(i.continue=!t._zod.def.abort),r.issues.push(Cn(i))}},n(r.value,r)),e);return t}function Nl(n,e){let t=new oe({check:"custom",...I(e)});return t._zod.check=n,t}function ea(n){let e=new oe({check:"describe"});return e._zod.onattach=[t=>{let r=hn.get(t)??{};hn.add(t,{...r,description:n})}],e._zod.check=()=>{},e}var J=O("ZodMiniType",(n,e)=>{if(!n._zod)throw new Error("Uninitialized schema in ZodMiniType.");V.init(n,e),n.def=e,n.type=e.type},{get with(){return this.check},set with(n){Ve(this,"with",n)},parse(n,e){return Fr(this,n,e,{callee:this.parse})},parseAsync(n,e){return Lr(this,n,e,{callee:this.parseAsync})},safeParse(n,e){return Zr(this,n,e)},safeParseAsync(n,e){return Cr(this,n,e)},check(...n){let e=this.def;return this.clone({...e,checks:[...e.checks??[],...n.map(t=>typeof t=="function"?{_zod:{check:t,def:{check:"custom"},onattach:[]}}:t)]},{parent:!0})},clone(n,e){return fn(this,n,e)},brand(){return this},register(n,e){return n.add(this,e),this},apply(n,...e){return e.length===0?n(this):n(this,...e)}}),ta=O("ZodMiniString",(n,e)=>{Vr.init(n,e),J.init(n,e)});function L(n){return Cs(ta,n)}var ra=O("ZodMiniStringFormat",(n,e)=>{At.init(n,e),ta.init(n,e)}),jl=O("ZodMiniEmail",(n,e)=>{ws.init(n,e),ra.init(n,e)});function Iy(n){return Gs(jl,n)}var Dl=O("ZodMiniURL",(n,e)=>{ks.init(n,e),ra.init(n,e)});function Ty(n){return Ks(Dl,n)}var oa=O("ZodMiniNumber",(n,e)=>{Ur.init(n,e),J.init(n,e)});function Ue(n){return Bs(oa,n)}var Fl=O("ZodMiniNumberFormat",(n,e)=>{Ss.init(n,e),oa.init(n,e)});function jy(n){return Vs(Fl,n)}var Ll=O("ZodMiniBoolean",(n,e)=>{Rs.init(n,e),J.init(n,e)});function Dy(n){return Us(Ll,n)}var Zl=O("ZodMiniNull",(n,e)=>{$s.init(n,e),J.init(n,e)});function Fy(n){return Ws(Zl,n)}var Cl=O("ZodMiniUnknown",(n,e)=>{As.init(n,e),J.init(n,e)});function Hr(){return qs(Cl)}var Gl=O("ZodMiniNever",(n,e)=>{_s.init(n,e),J.init(n,e)});function Kl(n){return Hs(Gl,n)}var Bl=O("ZodMiniArray",(n,e)=>{Os.init(n,e),J.init(n,e)});function Ly(n,e){return new Bl({type:"array",element:n,...I(e)})}var Yr=O("ZodMiniObject",(n,e)=>{Ps.init(n,e),J.init(n,e),Wi(n,"shape",t=>t._zod.def.shape,!1)});function Me(n,e){let t={type:"object",shape:n??{},...I(e)};return new Yr(t)}function gn(n,e){return new Yr({type:"object",shape:n,catchall:Kl(),...I(e)})}function Zy(n,e){return new Yr({type:"object",shape:n,catchall:Hr(),...I(e)})}function ia(n,e){return Ki(n,e)}var Vl=O("ZodMiniUnion",(n,e)=>{Es.init(n,e),J.init(n,e)});function Cy(n,e){return new Vl({type:"union",options:n,...I(e)})}var na=O("ZodMiniRecord",(n,e)=>{Ms.init(n,e),J.init(n,e)});function Gy(n,e,t){return!e||!e._zod?new na({type:"record",keyType:L(),valueType:n,...I(e)}):new na({type:"record",keyType:n,valueType:e,...I(t)})}var Ul=O("ZodMiniEnum",(n,e)=>{zs.init(n,e),J.init(n,e),n.options=[...n._zod.values]});function sa(n,e){let t=Array.isArray(n)?Object.fromEntries(n.map(r=>[r,r])):n;return new Ul({type:"enum",entries:t,...I(e)})}var Wl=O("ZodMiniLiteral",(n,e)=>{Ns.init(n,e),J.init(n,e)});function aa(n,e){return new Wl({type:"literal",values:Array.isArray(n)?n:[n],...I(e)})}var ql=O("ZodMiniOptional",(n,e)=>{Is.init(n,e),J.init(n,e)});function X(n){return new ql({type:"optional",innerType:n})}var Hl=O("ZodMiniLazy",(n,e)=>{Ts.init(n,e),J.init(n,e)});function Ky(n){return new Hl({type:"lazy",getter:n})}var Yl=O("ZodMiniCustom",(n,e)=>{js.init(n,e),J.init(n,e)});function _t(n,e={}){return Xs(Yl,n,e)}function By(n,e){return Qs(n,e)}var Vy=ea;re().localeError||re(Ds());var D=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,Jl=n=>{if(typeof n!="object"||n===null||!("_zod"in n))return;let e=hn.get(n)?.description;return typeof e=="string"?e:void 0};var Xl=(n,e)=>n?.src?.(e)??e,Ot=n=>typeof n=="string"&&n.length<2049&&/^(?![^/?#]*:|\/\/)(?!(?:.*\/)?\.\.?(?:[/?#]|$))(?!.*%2e)[^\\\s]+$/i.test(n),Jr=(n,e=1)=>e>0&&n===void 0||Number.isInteger(n)&&n>=e;function Xr(n){let e=n??{};return Ot(e.href)&&typeof e.name=="string"&&/^.{1,255}$/s.test(e.name)&&/^[\w.+-]{1,60}\/[\w.+-]{1,60}$/.test(e.type)&&Jr(e.bytes,0)&&Jr(e.width)&&Jr(e.height)&&(e.caption===void 0||typeof e.caption=="string"&&e.caption.length<501)&&(e.poster===void 0||Ot(e.poster))&&(e.captions===void 0||Ot(e.captions))&&(e.duration===void 0||typeof e.duration=="number"&&Number.isFinite(e.duration)&&e.duration>0)&&(e.at===void 0||da(e.at)!==void 0)}function da(n){return typeof n=="string"&&n.length<41&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?(Z|[+-]\d{2}:?\d{2})$/.test(n)&&Number.isFinite(Date.parse(n))?n:void 0}var ca=n=>n.type.startsWith("image/"),la=n=>n.type.startsWith("video/");function Ql(n){let e=n.duration===void 0?0:Math.round(n.duration);if(e<1)return"a video";if(e<60)return`a ${e}-second video`;let t=Math.round(e/60);return t<60?`a ${t}-minute video`:`a ${Math.floor(t/60)}-hour${t%60>0?` ${t%60}-minute`:""} video`}var eu=(n,e)=>e==="image"?ca(n):e==="video"?la(n):!0,nu=n=>`${n==="image"?"an image":n==="video"?"a video":"a file"} the host stored, at a path on this host`,Vn=n=>(Array.isArray(n)?n:[n]).filter(Xr),ua=Symbol.for("@graview/core:file"),tu=(n,e)=>(Object.defineProperty(D(n),ua,{value:e,enumerable:!0}),n);function fa(n){let e=D(n);return e?.[ua]??(e?.innerType?fa(e.innerType):void 0)}var ru=()=>({href:L(),name:L(),type:L(),bytes:Ue(),width:X(Ue()),height:X(Ue()),caption:X(L()),poster:X(L()),duration:X(Ue()),captions:X(L()),at:X(L())});function Ub(n){return tu(Me(ru()).check(_t(e=>Xr(e)&&eu(e,n),nu(n))),n)}var Pt=/^(?:https?:\/\/[^\s<>"'`\\]+|@?[A-Za-z0-9][\w.~-]*(?:\/[\w.~-]+)*)$/,Et=n=>typeof n=="string"&&n.length<501&&Pt.test(n);var pa=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,ou=/^@(?:https?:\/\/[^\s<>"'`\\#?]+|[A-Za-z0-9][\w.~-]*(?:\/[\w.~-]+)*)\/[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;function ha(n){if(typeof n!="string"||!n.startsWith("@")||!ou.test(n))return;let e=n.lastIndexOf("/"),t=n.slice(0,e),r=n.slice(e+1),o=/^@https?:\/\//.test(t)||!t.includes("/")?t.slice(1):t;return Et(o)?{address:o,kind:r}:void 0}var iu=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*:\S[^\n]{0,199}$/,su=n=>`${n.kind}:${n.id}`;function ga(n,e){if(typeof n!="string"||!iu.test(n))return;let t=n.indexOf(":"),r=n.slice(0,t);return e.kinds.includes(r)?{address:e.address,kind:r,id:n.slice(t+1)}:void 0}function au(n,e){return(Array.isArray(n)?n:n==null?[]:[n]).flatMap(r=>{let o=ga(r,e);return o?[o]:[]})}var ma=Symbol.for("@graview/core:linked"),Yb=(n,e)=>(Object.defineProperty(pa(n),ma,{value:e,enumerable:!0}),n);function Un(n){let e=pa(n);return e?e[ma]??Un(e.innerType):void 0}function du(n){let e=n?.fields?.shape??{},t=new Map;for(let[r,o]of Object.entries(e)){let i=Un(o);i&&t.set(r,i)}return t}function cu(n){if(n.to==="*"||n.to.length===0)return;let e=n.to.map(ha);if(e.some(r=>!r))return;let t=e[0].address;if(!e.some(r=>r.address!==t))return{address:t,kinds:[...new Set(e.map(r=>r.kind))],cardinality:n.cardinality??"many",...n.description?{description:n.description}:{}}}var lu=n=>n.to!=="*"&&n.to.some(e=>typeof e=="string"&&e.startsWith("@"));function Jb(n){return Object.fromEntries(Object.entries(n??{}).filter(([,e])=>!lu(e)))}function Xb(n){let e=new Map;for(let[t,r]of Object.entries(n??{})){let o=cu(r);o&&e.set(t,o)}return e}var Qr=new WeakMap;function uu(n,e){e?Qr.set(n,e):Qr.delete(n)}var ya=n=>Qr.get(n);var Mt=["sun","mon","tue","wed","thu","fri","sat"],fu=["day","week","month","year"],yn=n=>`${n}Repeat`,qn=n=>n.endsWith("Repeat")&&n.length>6?n.slice(0,-6):void 0,wa=/^\d{4}-\d{2}-\d{2}$/,xa=Symbol.for("@graview/core:repeat");function zt(n){let e=D(n);return!!e&&(e[xa]===1||zt(e.innerType))}var pu=n=>(Object.defineProperty(D(n),xa,{value:1,enumerable:!0}),n),eo=(n,e,t)=>n===void 0||Number.isInteger(n)&&n>=e&&n<=t,ba=(n,e)=>n===void 0||Array.isArray(n)&&n.length<=e&&n.every(t=>typeof t=="string"&&wa.test(t)),hu=["every","interval","on","until","count","except","continues"],ka=n=>bn(n)&&Object.keys(n).every(e=>hu.includes(e))&&eo(n.interval,1,99)&&eo(n.count,1,1e3)&&ba(n.until===void 0?void 0:[n.until],1)&&ba(n.except,500)&&(n.continues===void 0||typeof n.continues=="string"&&n.continues.length<=200)&&(n.on===void 0||Array.isArray(n.on)&&n.on.length>0&&n.on.length<=31&&n.on.every(e=>n.every==="week"?Mt.includes(e):n.every==="month"&&e!==0&&eo(e,-1,31))),nv=()=>pu(Hr().check(_t(n=>n===null||ka(n),"how a date repeats, or null"))),Wn=n=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10)),Sa=n=>new Date(n).toISOString().slice(0,10),no=(n,e)=>Sa(Wn(n)+e*864e5),va=(n,e,t)=>{let r=new Date(Date.UTC(n,e+1,0)).getUTCDate();return Sa(Date.UTC(n,e,t<0||t>r?r:t))},bn=n=>typeof n=="object"&&n!==null&&fu.includes(n.every);function mn(n,e,t={}){let r=n.slice(0,10),o=n.slice(10),i=[];if(!wa.test(r))return i;let s=Math.max(1,e.interval??1),a=e.every,d=t.from&&t.from>r?t.from.slice(0,10):r,u=[e.until,t.to?.slice(0,10)].filter(Boolean).sort()[0],l=t.limit??1e3,f=new Set(e.except??[]),c=+r.slice(0,4),p=+r.slice(5,7)-1,g=+r.slice(8,10),h=no(r,-new Date(Wn(r)).getUTCDay()),v=(e.on?.length?e.on:[a==="week"?Mt[new Date(Wn(r)).getUTCDay()]:g]).map(_=>typeof _=="string"?Mt.indexOf(_):_),y=a==="day"?1:a==="week"?7:0,x=(+d.slice(0,4)-c)*12+(+d.slice(5,7)-1-p),$=e.count?0:Math.max(0,Math.floor((y?(Wn(d)-Wn(y===7?h:r))/864e5/y:a==="month"?x:x/12)/s)-1),k=0;for(let _=0;_<5e4&&i.length<l;_++,$++){let A=$*s,m=a==="day"?[no(r,A)]:a==="week"?v.map(b=>no(h,A*7+b)):a==="month"?v.map(b=>va(c,p+A,b)):[va(c+A,p,g)];for(let b of[...new Set(m)].sort())if(!(b<r)&&(u&&b>u||e.count&&k>=e.count||(k++,b>=d&&!f.has(b)&&i.push(b+o),i.length>=l)))return i}return i}function Ra(n,e,t){if(!bn(e)||typeof n!="string")return n;let r=mn(n,e,{from:t,limit:1})[0];if(r)return r;let o=e.until||e.count?mn(n,e):[];return o[o.length-1]??n}function gu(n,e,t){let r=n[e],o=n[yn(e)];return typeof r=="string"&&bn(o)?Ra(r,o,t):r}var Nt=["human","visitor","agent","rule","system"],mu=new Set(Nt);function to(n){return mu.has(n?.kind)?n.kind:"system"}function Hn(n,e){if(n.onBehalfOf){let{onBehalfOf:s,...a}=n;return`${Hn(a,e)}, for ${Hn(s,e)}`}let t=to(n);if(n.id===void 0)return n.name??(t==="agent"?"an agent":t==="visitor"?"a visitor":t);let r=e.graph.getNode(n.id);if(r)return K(e.schema.tryDefinition(r.kind),r);let o=e.seats?.find(s=>s.principal.id===n.id);if(o)return o.label;let i=e.people?.find(s=>s.id===n.id&&(s.kind===void 0||s.kind===n.kind));return i?i.name:n.name?n.name:/(^|:)migration$/.test(n.id)?"the upgrade":n.id.startsWith("form:")?"a visitor via a form":/[:_/]/.test(n.id)?{human:"somebody",visitor:"a visitor",agent:"an agent",rule:"a rule",system:"the system"}[t]:n.id}var vn="$archived",We=n=>n?.[vn]===!0,av=(n,e=!1)=>e==="all"||We(n)===e,ro=n=>n===!0||n==="true"?!0:n==="all"?"all":!1,Yn="$leftAlone",It=new Set([vn,Yn]);var de=class extends Error{constructor(t,r){super(r?`${t}
2
+ \u2192 ${r}`:t);this.hint=r;this.name="SchemaError"}};function yu(n,e){let t=n,r=new Map;for(let a of t){if(r.has(a.kind))throw new de(`Duplicate node kind "${a.kind}"`,"Each kind may be declared once; merge the two defineNode calls.");r.set(a.kind,a)}let o=new Map;for(let a of t)for(let[d,u]of Object.entries(a.edges)){if(u.to!=="*"){for(let f of u.to)if(!r.has(f))throw new de(`Edge "${d}" on "${a.kind}" points at undeclared kind "${f}"`,`Declared kinds: ${[...r.keys()].join(", ")}`)}let l=o.get(d);l?l.from.push(a.kind):o.set(d,{from:[a.kind],decl:u})}let i=new Map;for(let[a,{from:d,decl:u}]of o){let l=d.map(f=>r.get(f).edges[a].to);i.set(a,{kind:a,from:d,to:l.includes("*")?"*":[...new Set(l.flat())],cardinality:u.cardinality??"many",...u.description===void 0?{}:{description:u.description}})}let s=new Map;for(let a of t)s.set(a.kind,ia(a.fields,{id:L().check(Kn(1)),kind:aa(a.kind)}));return{definitions:t,computed:e,kinds:t.map(a=>a.kind),edgeKinds:[...i.keys()],definition(a){let d=r.get(a);if(!d)throw new de(`Unknown node kind "${String(a)}"`,`Declared kinds: ${[...r.keys()].join(", ")}`);return d},tryDefinition(a){return r.get(a)},edge(a){return i.get(a)},edgeAllowed(a,d,u){let l=r.get(d)?.edges[a];return l?l.to==="*"||l.to.includes(u):!1},parseNode(a){let d=a?.kind;if(typeof d!="string")throw new de("Node is missing a `kind`");let u=s.get(d);if(!u)throw new de(`Unknown node kind "${d}"`,`Declared kinds: ${[...r.keys()].join(", ")}`);let l={},f={};for(let[p,g]of Object.entries(a))It.has(p)?g===!0&&(f[p]=!0):l[p]=g;let c=u.parse(l);return Object.keys(f).length>0?{...c,...f}:c},__node:void 0}}var oo="0.1.59";var wn={snapshot:1,op:3},xn=class extends Error{constructor(t,r,o,i,s){super(s!==void 0?`This ${t} holds a ${s} that @graview ${oo} does not know: upgrade the framework to read it.`:`This ${t} is in a newer format (${r}${i?`, written by @graview ${i}`:""}) than @graview ${oo} reads (${o}). `+(t==="snapshot"?"Refold it from the log, or upgrade the framework.":"Upgrade the framework to read it."));this.what=t;this.found=r;this.supported=o;this.writtenBy=i;this.unknown=s;this.name="NewerFormatError"}},io=["add-node","remove-node","patch-node","add-edge","remove-edge","splice-text"],bu=new Set(io);function so(n){throw new xn("op",wn.op+1,wn.op,void 0,`primitive "${n?.op}"`)}var ao=new Set;function co(n){for(let e in n){let t=n[e]?.$type;if(t!==void 0&&!ao.has(t))throw new xn("op",wn.op+1,wn.op,void 0,`value type "${t}" in "${e}"`)}}function $a(n){for(let e of n.primitives)bu.has(e?.op)||so(e)}function N(n){return`${n.kind}\0${n.from}\0${n.to}`}var Jn={addedNodes:[],removedNodes:[],changedNodes:[],addedEdges:[],removedEdges:[],touched:[]};function Aa(n){return n.addedNodes.length===0&&n.removedNodes.length===0&&n.changedNodes.length===0&&n.addedEdges.length===0&&n.removedEdges.length===0}function vu(n,e){let t=new Set([...Object.keys(n),...Object.keys(e)]),r=[];for(let o of t){let i=n[o],s=e[o];JSON.stringify(i)!==JSON.stringify(s)&&r.push(o)}return r.sort()}function ze(n,e){let t=new Map(n.nodes.map(c=>[c.id,c])),r=new Map(e.nodes.map(c=>[c.id,c])),o=e.nodes.filter(c=>!t.has(c.id)),i=n.nodes.filter(c=>!r.has(c.id)),s=[];for(let c of n.nodes){let p=r.get(c.id);if(!p||p===c)continue;let g=vu(c,p);g.length>0&&s.push({before:c,after:p,fields:g})}let a=new Map(n.edges.map(c=>[N(c),c])),d=new Map(e.edges.map(c=>[N(c),c])),u=e.edges.filter(c=>!a.has(N(c))),l=n.edges.filter(c=>!d.has(N(c))),f=new Set;for(let c of o)f.add(c.id);for(let c of i)f.add(c.id);for(let c of s)f.add(c.after.id);for(let c of[...u,...l])f.add(c.from),f.add(c.to);return{addedNodes:o,removedNodes:i,changedNodes:s,addedEdges:u,removedEdges:l,touched:[...f].sort()}}function Ne(n,e,t){let r=new Set(t.flatMap(i=>i.op==="patch-node"||i.op==="splice-text"?[i.id]:"node"in i?[i.node.id]:[i.edge.from,i.edge.to]));if(r.size===0)return Jn;let o=i=>({nodes:i.nodes.filter(s=>r.has(s.id)),edges:i.edges.filter(s=>r.has(s.from)||r.has(s.to))});return ze(o(n),o(e))}var Tt={idLength:200,dataLength:4096,sameKindPerPair:1};function _a({id:n,data:e}){if(n!==void 0&&!(typeof n=="string"&&n.length<=Tt.idLength&&/^[^\s\p{Cc}]+$/u.test(n)))return`A link's id is 1\u2013${Tt.idLength} characters with no space`;if(e!==void 0&&!(e&&typeof e=="object"&&!Array.isArray(e)&&JSON.stringify(e).length<=Tt.dataLength))return`A link's data is a JSON object of at most ${Tt.dataLength} characters`}function wu(n){let e=n?.issues;return!Array.isArray(e)||e.length===0?n instanceof Error?n.message:String(n):e.map(t=>{let r=t.path?.length?G(String(t.path.at(-1))):null,o=t.message??"is not what the declaration allows";return r?`${r}: ${o}`:o}).join("; ")}var z=class extends Error{constructor(t,r){super(r?`${t}
3
+ ${r}`:t);this.hint=r;this.name="GraphError"}},U=class extends z{constructor(t,r){super(r);this.id=t;this.name="MissingRecordError"}};function jt(n,e){try{n.parseNode(e);return}catch(t){if(t instanceof de)throw t;let r=t.issues??[];return{fields:new Set(r.flatMap(i=>i.code==="unrecognized_keys"&&i.keys?[...i.keys]:typeof i.path?.[0]=="string"?[i.path[0]]:[""])),error:t}}}var lo="n\0",uo="e\0",Q=class n{constructor(e,t={}){this.schema=e;this.validate=t.validate??!0}nodes=new Map;edges=new Map;linkIds=new Map;outIndex=new Map;inIndex=new Map;rank=0;ranks=new Map;lapsed=new Map;reordered=!1;counts=new Map;archived=new Set;listeners=new Set;validate;static from(e,t,r={}){let o=new n(e,r);return o.load(t),o}load(e){let t=this.snapshot();this.restore(e);let r=ze(t,this.snapshot());return this.emit(r),r}getNode(e){return this.nodes.get(e)}has(e){return this.nodes.has(e)}allNodes(e){return this.reach([...this.nodes.values()],e,this.held)}count(e,t){return t||this.archived.size?this.nodesOfKind(e,t).length:this.counts.get(e)??0}allEdges(e){return this.reach([...this.edges.values()],e,t=>this.archived.has(t.from)||this.archived.has(t.to))}nodesOfKind(e,t){return this.allNodes(t).filter(r=>r.kind===e)}edgesOfKind(e,t){return this.allEdges(t).filter(r=>r.kind===e)}out(e,t,r){return this.reach(this.resolve(this.outIndex.get(e),t,"to"),r,this.held)}in(e,t,r){return this.reach(this.resolve(this.inIndex.get(e),t,"from"),r,this.held)}neighbors(e,t){let r=new Map;for(let o of[...this.out(e,void 0,t),...this.in(e,void 0,t)])r.set(o.id,o);return[...r.values()]}isArchived(e){return this.archived.has(e)}outEdges(e,t){return this.edgesFrom(this.outIndex.get(e),t)}inEdges(e,t){return this.edgesFrom(this.inIndex.get(e),t)}linkById(e){return this.edges.get(this.linkIds.get(e))}snapshot(){return{nodes:[...this.nodes.values()],edges:[...this.edges.values()]}}get size(){return{nodes:this.nodes.size,edges:this.edges.size}}applyPrimitives(e,t={}){let r=this.snapshot();try{for(let i of e)this.applyOne(i,t.restoring===!0,t.inPlace===!0);this.settleOrder()}catch(i){throw this.restore(r),i}let o=Ne(r,this.snapshot(),e);return this.emit(o),o}preview(e,t={}){return n.from(this.schema,this.snapshot(),{validate:this.validate}).applyPrimitives(e,t)}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}restore(e){let t=new Map([...this.lapsed,...this.ranks]);for(let o of[this.nodes,this.edges,this.linkIds,this.outIndex,this.inIndex,this.ranks,this.lapsed,this.counts,this.archived])o.clear();this.reordered=!1;for(let o of e.nodes)this.insertNode(o,!0);for(let o of e.edges)this.insertEdge(o,!0);let r=[...this.ranks.keys()];if(r.every((o,i)=>t.get(o)>(o[0]===r[i-1]?.[0]?t.get(r[i-1]):0))){for(let[o,i]of t)(this.ranks.has(o)?this.ranks:this.lapsed).set(o,i);for(;this.lapsed.size>4096;)this.lapsed.delete(this.lapsed.keys().next().value)}}tally(e,t){this.counts.set(e,(this.counts.get(e)??0)+t)}place(e,t){let r=t?this.lapsed.get(e):void 0;if(r===void 0){this.ranks.set(e,++this.rank);return}this.ranks.set(e,r),this.lapsed.delete(e),this.reordered=!0}lapse(e){let t=this.ranks.get(e);t!==void 0&&(this.ranks.delete(e),this.lapsed.set(e,t),this.lapsed.size>4096&&this.lapsed.delete(this.lapsed.keys().next().value))}settleOrder(){if(!this.reordered)return;this.reordered=!1;let e=o=>(i,s)=>this.ranks.get(o+i[0])-this.ranks.get(o+s[0]),t=[...this.nodes.entries()].sort(e(lo));this.nodes.clear();for(let[o,i]of t)this.nodes.set(o,i);let r=[...this.edges.entries()].sort(e(uo));this.edges.clear();for(let[o,i]of r)this.edges.set(o,i)}emit(e){if(!(e.addedNodes.length===0&&e.removedNodes.length===0&&e.changedNodes.length===0&&e.addedEdges.length===0&&e.removedEdges.length===0))for(let t of this.listeners)t(e)}applyOne(e,t,r){switch(e.op){case"add-node":co(e.node),this.insertNode(e.node,t,r);return;case"remove-node":{let o=e.node.id,i=this.nodes.get(o);if(!i)throw new U(o,`Cannot remove missing node "${o}"`);for(let s of[...this.outEdges(o),...this.inEdges(o)])this.deleteEdge(s);this.tally(i.kind,-1),this.archived.delete(o),this.nodes.delete(o),this.lapse(lo+o),this.outIndex.delete(o),this.inIndex.delete(o);return}case"patch-node":{let o=this.nodes.get(e.id);if(!o)throw new U(e.id,`Cannot patch missing node "${e.id}"`);co(e.after);let i={...o};for(let[a,d]of Object.entries(e.after))Ce(d)?delete i[a]:i[a]=d;let s=t?i:this.checkPatch(o,i,Object.keys(e.after));this.nodes.set(e.id,s),this.archived[We(s)?"add":"delete"](e.id),s.kind!==o.kind&&(this.tally(o.kind,-1),this.tally(s.kind,1));return}case"splice-text":{let o=this.nodes.get(e.id);if(!o)throw new U(e.id,`Cannot splice the text of missing node "${e.id}"`);let i=o[e.field],s;try{typeof i=="string"&&e.field!=="id"&&e.field!=="kind"&&(s=pr(i,e))}catch{}if(s===void 0)throw new z(`Cannot splice ${e.id}.${e.field}: it does not hold ${JSON.stringify(e.removed)} at ${e.at}`,"A corrupt op: the text it was made against is not the text the log folds to.");let a={...o,[e.field]:s};this.nodes.set(e.id,t?a:this.checkPatch(o,a,[e.field]));return}case"add-edge":this.insertEdge(e.edge,t,r);return;case"remove-edge":{let o=e.edge.id===void 0?e.edge:this.linkById(e.edge.id);if(!o||!this.edges.has(N(o)))throw new U(e.edge.id??N(e.edge),`Cannot remove missing edge ${e.edge.id??N(e.edge)}`);this.deleteEdge(o);return}default:so(e)}}check(e){if(!this.validate)return e;try{return this.schema.parseNode(e)}catch(t){throw this.refusal(e,t)}}checkPatch(e,t,r){if(!this.validate)return t;let o=this.schema.tryDefinition(String(t.kind))?.fields?.shape;if(!o)return this.check(t);for(let a of r){if(a==="id"||a==="kind"||It.has(a))continue;let d=o[a];if(!d){delete t[a];continue}let u=d.safeParse(t[a]);u.success&&(u.data===void 0?delete t[a]:t[a]=u.data)}let i=jt(this.schema,t);if(i===void 0)return t;let s=jt(this.schema,e)?.fields??new Set;if([...i.fields].some(a=>r.includes(a)||!s.has(a)))throw this.refusal(t,i.error);return t}refusal(e,t){if(t instanceof de)return t;{let r=e?.id??"?",o=e?.kind??"?",i=this.schema.tryDefinition(o),s=i&&e&&typeof e=="object"?K(i,e):r;return new z(`${s} does not match what ${o} declares`,wu(t))}}insertNode(e,t,r=!1){if(this.nodes.has(e.id))throw new z(`Duplicate node id "${e.id}"`);this.nodes.set(e.id,t?e:this.check(e)),We(e)&&this.archived.add(e.id),this.tally(e.kind,1),this.place(lo+e.id,r)}insertEdge(e,t,r=!1){let o=this.nodes.get(e.from),i=this.nodes.get(e.to);if(!o||!i){let a=o?e.to:e.from;throw new U(a,`Edge "${e.kind}" references missing node "${a}"`)}if(this.validate&&!t&&!this.schema.edgeAllowed(e.kind,o.kind,i.kind)){let a=this.schema.edge(e.kind);throw new z(`Edge "${e.kind}" is not declared from ${o.kind} to ${i.kind}`,a?`Declared: ${a.from.join("|")} -> ${a.to==="*"?"*":a.to.join("|")}`:`No edge kind "${e.kind}" is declared in this schema`)}let s=N(e);if(!t&&(e.id!==void 0||e.data!==void 0)){let a=this.edges.get(s),d=_a(e)??(a&&e.id!==void 0&&a.id!==e.id?`A second "${e.kind}" link between two records is not allowed yet`:(this.linkIds.get(e.id)??s)!==s?`Link id "${e.id}" is already taken`:void 0);if(d)throw new z(d)}this.edges.has(s)||(this.edges.set(s,e),e.id!==void 0&&this.linkIds.set(e.id,s),this.place(uo+s,r),this.index(this.outIndex,e.from,s),this.index(this.inIndex,e.to,s))}deleteEdge(e){let t=N(e),r=this.edges.get(t)?.id;r!==void 0&&this.linkIds.delete(r),this.edges.delete(t),this.lapse(uo+t),this.outIndex.get(e.from)?.delete(t),this.inIndex.get(e.to)?.delete(t)}index(e,t,r){(e.get(t)??e.set(t,new Set).get(t)).add(r)}edgesFrom(e,t){if(!e)return[];let r=[];for(let o of e){let i=this.edges.get(o);i&&(t===void 0||i.kind===t)&&r.push(i)}return r}resolve(e,t,r){let o=[];for(let i of this.edgesFrom(e,t)){let s=this.nodes.get(i[r]);s&&o.push(s)}return o}held=e=>this.archived.has(e.id);reach(e,t,r){let o=t?.archived??!1;return o==="all"||!o&&!this.archived.size?e:e.filter(i=>r(i)===o)}};var Dt=class extends Error{constructor(t,r){super(`No invariant registered under "${t}" (required by node "${r}")`);this.invariant=t;this.nodeId=r;this.name="UnregisteredInvariantError"}};function xu(n,e){return{...e,name:n}}var Ft=class extends Error{constructor(e){super(e),this.name="RuleBudgetError"}};function Oa(n,e,t){try{return e().map(r=>r.status?r:{...r,status:"violated"})}catch(r){let o=r instanceof Ft,i=r instanceof Error?r.message:String(r),s=n.label??n.name.replace(/-/g," ");return[{invariant:n.name,status:o?"over-budget":"could-not-judge",...t!==void 0?{subjectId:t}:{},label:s,message:`${s} could not be judged: ${i}`,nodeIds:t!==void 0?[t]:[],repairs:[]}]}}function kn(n,e,t={}){let r=t.context??{},o=t.today===void 0?{}:{today:t.today},i=t.onUnregistered??"skip",s=new Set(e.map(c=>c.name)),a=[];for(let c of e)c.scope==="graph"&&a.push(...Oa(c,()=>c.evaluate({graph:n,subject:void 0,context:r,...o}),void 0));let d=e.filter(c=>c.scope!=="graph"),u=new Map;for(let c of d){let p=c.scope.kind,g=u.get(p);g?g.push(c):u.set(p,[c])}for(let c of n.allNodes()){let p=n.schema.tryDefinition(c.kind),g=p?.requiresInvariant?.(c)??null;if(t.subjectFilter&&!t.subjectFilter(c,r))continue;if(g!==null&&!s.has(g)){if(i==="throw")throw new Dt(g,c.id);continue}let h=!xr(p,c,t.today);for(let v of u.get(c.kind)??[]){if(h&&v.judgesPast!==!0)continue;let y=v.scope.match;y&&!y(c)||a.push(...Oa(v,()=>v.evaluate({graph:n,subject:c,context:r,...o}),c.id))}}let l=new Set,f=a.filter(c=>{let p=`${c.message}|${[...c.nodeIds].sort().join(",")}`;return l.has(p)?!1:(l.add(p),!0)}).map(c=>{let p=wr(c.message);return p===c.message?c:{...c,message:p}});return fo?fo(n,e,f,t.today):f}var fo;function Ev(n){fo=n}function ku(n,e){let t=new Set(e);return n.filter(r=>r.nodeIds.some(o=>t.has(o))||r.subjectId!==void 0&&t.has(r.subjectId))}function Su(n){let e=new Set(n.map(r=>r.invariant)).size;if(e===0)return"All rules hold";let t=`${e} ${e===1?"rule":"rules"} broken`;return n.length>e?`${t} in ${n.length} places`:t}var Lt=(n,e)=>n==="*"||n.includes(e);function T(n){let e=n.onBehalfOf;if(!e)return n;let t=e.roles??[],r=n.roles===void 0?t:n.roles.filter(o=>t.includes(o));return{...n,...e.id!==void 0?{id:e.id}:{},roles:r}}var B=n=>n.kind==="system"&&n.onBehalfOf===void 0,xe=(n,e)=>n.roles==="*"||(e.roles??[]).some(t=>n.roles.includes(t));function Pa(n){return _i(n.map(e=>un(G(e).toLowerCase())),"or")}function ke(n,e,t,r,o,i,s={},a,d,u){if(!n)return{ok:!0};if(B(e))return{ok:!0};if(e=T(e),o!==void 0){if(ke(n,e,t,r,void 0,i).ok)return{ok:!0};let p=!1;if(o.some(y=>ke(n,e,y,r,void 0,i).ok)){if(!d||i===void 0||e.id!==void 0&&d()===e.id||!u&&n.grants.some(y=>y.roles!=="*"&&xe(y,e)&&o.some(x=>Lt(y.mutations,x))))return{ok:!0};p=!0}let g=p?[t]:[t,...o],h=[...new Set(g.flatMap(y=>po(n,y,r)))].sort(),v=(p?"only on what you made; ":"")+(h.length===0?o.length===0?"no declared act creates or changes it, so no role can":"no role can":`${Pa(h)} can`);return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:h,message:Ea(n,g,r,v,s)}}}let l=!1;for(let p of n.grants){if(!xe(p,e)||!Lt(p.mutations,t)||p.kinds!==void 0&&p.kinds!=="*"&&(r===void 0||!p.kinds.includes(r))||p.self&&(i===void 0||e.id===void 0||i!==e.id))continue;let g=p.ownEnd?a?.()??[]:[e.id];if(!g.length||g.some(h=>h!==e.id)){l=!0;continue}return{ok:!0}}let f=po(n,t,r),c=l?"only on your own end of the link":f.length===0?"no role can":`${Pa(f)} can`;return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:f,message:Ea(n,[t],r,c,s)}}}function Ea(n,e,t,r,o){let i=[...new Set(e.flatMap(a=>Ma(n,a,t)))],s=o.act?.(e[0]);return`Not permitted: ${s?`\u201C${s}\u201D`:e[0]}${t?` on ${un(o.noun?.(t)??t)}`:""} \u2014 ${r}.`+(i.length>0?` ${i.join(" ")}`:"")}function Ma(n,e,t){return[...new Set(za(n,e,t).flatMap(r=>r.describe||[]))]}var za=(n,e,t)=>n.grants.filter(r=>Lt(r.mutations,e)&&(t===void 0||Lt(r.kinds??"*",t)));function po(n,e,t){let r=za(n,e,t);return r.some(o=>o.roles==="*")?[]:[...new Set(r.flatMap(o=>o.roles))].sort()}function ho(n,e,t){return n?t.filter(r=>{let o=T(e).id;return go(r).some(i=>ke(n,e,r.name,i,void 0,o,void 0,()=>[o??[]].flat()).ok)}):t}var go=n=>n.subject&&n.subject.kinds!=="*"?n.subject.kinds:[void 0];var Zt="type-text",ie={};var se=class extends Error{constructor(t,r="refused"){super(t);this.sentence=t;this.reason=r;this.name="ActRefusal"}};var Ct="publish",mo=n=>n?.mode==="on-publish",yo=(n,e,t)=>mo(n)&&!B(e)&&(t==="published"||!(T(e).roles??[]).some(r=>n.working.includes(r))),W=globalThis[Symbol.for("@graview/core:publishing")]??={};W.input=()=>Me({through:X(Ue())});var Xn=class{constructor(e,t,r){this.present=e;this.timeline=t;this.unversioned=r}nodes=new Map;edges=new Map;touching=new Map;seq=Number.MAX_SAFE_INTEGER;wrote=new Map;begin(e){this.seq=e,this.wrote.clear()}writerOf(e){return t=>{let r=`${e}\0${t}`;return this.wrote.has(r)?this.wrote.get(r):this.timeline?.writers?.writerAt(e,t,this.seq)}}note(e,t){let r=e.op==="add-node"?e.node.id:e.op==="patch-node"||e.op==="splice-text"?e.id:"";if(r===""||this.unversioned?.has(r))return;let o=e.op==="add-node"?Object.keys(e.node):e.op==="splice-text"?[e.field]:Object.keys(e.after);for(let i of o)i!=="id"&&i!=="kind"&&this.wrote.set(`${r}\0${i}`,t(r,i))}node(e){return this.nodes.has(e)?this.nodes.get(e)??void 0:this.present.getNode(e)}setNode(e,t){this.nodes.set(e,t)}setEdge(e,t){let r=N(e);this.edges.set(r,t?e:null);for(let o of[e.from,e.to]){let i=this.touching.get(o);i||this.touching.set(o,i=new Set),i.add(r)}}incident(e){let t=new Map;for(let r of[...this.present.outEdges(e),...this.present.inEdges(e)]){let o=N(r);this.edges.has(o)||t.set(o,r)}for(let r of this.touching.get(e)??[]){let o=this.edges.get(r);o&&t.set(r,o)}return[...t.values()]}undo(e){switch(e.op){case"add-node":this.setNode(e.node.id,null);return;case"remove-node":this.setNode(e.node.id,e.node);return;case"patch-node":{if(this.unversioned?.has(e.id))return;let t=this.node(e.id);if(!t)return;this.setNode(e.id,Na(t,e.before));return}case"splice-text":{let t=this.unversioned?.has(e.id)?void 0:this.node(e.id);t&&this.setNode(e.id,hr(t,e,!0));return}case"add-edge":this.setEdge(e.edge,!1);return;case"remove-edge":this.setEdge(e.edge,!0);return}}apply(e){switch(e.op){case"add-node":this.setNode(e.node.id,e.node);return;case"remove-node":for(let t of this.incident(e.node.id))this.setEdge(t,!1);this.setNode(e.node.id,null);return;case"patch-node":{if(this.unversioned?.has(e.id))return;let t=this.node(e.id);if(!t)return;this.setNode(e.id,Na(t,e.after));return}case"splice-text":{let t=this.unversioned?.has(e.id)?void 0:this.node(e.id);t&&this.setNode(e.id,hr(t,e));return}case"add-edge":this.setEdge(e.edge,!0);return;case"remove-edge":this.setEdge(e.edge,!1);return}}};function Na(n,e){let t={...n};for(let[r,o]of Object.entries(e))Ce(o)?delete t[r]:t[r]=o;return t}var Ru=n=>n.op==="add-node"||n.op==="remove-node"?n.node.id:n.op==="patch-node"||n.op==="splice-text"?n.id:void 0;function bo(n,e,t,r){let o=l=>{let f=e.node(l);return f?t.served(f,e.writerOf(l))!==void 0:t.sees?.(l)??!1},i=Ru(n);if(i===void 0){let l=n.edge,f=t.edgeClean(l)&&o(l.from)&&o(l.to);return e.apply(n),{primitives:f?[n]:[],faithful:!0}}let s=e.node(i),a=s?t.served(s,e.writerOf(i)):void 0;e.apply(n),e.note(n,r);let d=e.node(i),u=d?t.served(d,e.writerOf(i)):void 0;if(!a&&!u)return{primitives:[],faithful:!1};if(!a&&u){let l=e.incident(i).filter(c=>t.edgeClean(c)&&o(c.from===i?c.to:c.from)).map(c=>({op:"add-edge",edge:c})),f=n.op==="add-node"&&u===n.node&&l.length===0;return{primitives:f?[n]:[{op:"add-node",node:u},...l],faithful:f}}if(a&&!u){let l=n.op==="remove-node"&&a===s;return{primitives:l?[n]:[{op:"remove-node",node:a}],faithful:l}}if(n.op==="patch-node"){let l=(c,p)=>g=>g in c==(p!==void 0&&g in p);if(Object.keys(n.after).every(c=>l(a,s)(c)&&l(u,d)(c)))return{primitives:[n],faithful:!0};let f=c=>Object.fromEntries(Object.keys(n.after).map(p=>[p,p in c?c[p]:ue]));return{primitives:[{op:"patch-node",id:i,before:f(a),after:f(u)}],faithful:!1}}if(n.op==="splice-text"){let l=n.field;if(a[l]===s[l]&&u[l]===d[l])return{primitives:[n],faithful:!0};let f=c=>({[l]:l in c?c[l]:ue});return{primitives:[{op:"patch-node",id:i,before:f(a),after:f(u)}],faithful:!1}}return{primitives:[{op:"remove-node",node:a},{op:"add-node",node:u}],faithful:!1}}function Ia(n,e,t){if(n.length===0)return[];let r=e.log.all(),o=r[0]?.seq??0,i=n.every(c=>r[c.seq-o]?.id===c.id),s=new Xn(e.present,e);if(!i)return s.begin(e.log.length??o+r.length),n.map(c=>{let p=T(c.author).id,g=c.primitives.map(h=>bo(h,s,t,()=>p));return{op:c,primitives:g.flatMap(h=>h.primitives),faithful:g.every(h=>h.faithful)}});let a=new Set(n.map(c=>c.seq)),d=Number.POSITIVE_INFINITY,u=Number.NEGATIVE_INFINITY;for(let c of a)c<d&&(d=c),c>u&&(u=c);d-=o,u-=o;let l=$u(r,d,e.present,t),f=l?new Xn(e.present,e,l.unversioned):s;for(let c=r.length-1;c>=d;c--){let p=r[c].primitives;for(let g=p.length-1;g>=0;g--)f.undo(p[g])}return Au(n,r,d,u,a,f,l?.judge??t,e)}function $u(n,e,t,r){let{sees:o,names:i}=r;if(!o||!i)return;let s=new Set,a=new Set,d=new Set,u=(f,c)=>{s.has(f)||a.has(f)||(o(f)?i(c)?(a.add(f),d.delete(f)):d.add(f):(s.add(f),d.delete(f)))};for(let f=e;f<n.length;f++)for(let c of n[f].primitives)c.op==="add-node"||c.op==="remove-node"?u(c.node.id,c.node):c.op==="patch-node"?(u(c.id,c.before),u(c.id,c.after)):c.op==="splice-text"&&(u(c.id,{}),s.has(c.id)||(a.add(c.id),d.delete(c.id)));for(let f of d){let c=t.getNode(f);c&&i(c)&&(d.delete(f),a.add(f))}return{unversioned:new Set([...d,...s]),judge:{...r,served:(f,c)=>d.has(f.id)?f:s.has(f.id)?void 0:r.served(f,c)}}}function Au(n,e,t,r,o,i,s,a){let d=new Map;for(let u=t;u<=r;u++){let l=e[u];if(i.begin(l.seq),!o.has(l.seq)){for(let p of l.primitives)i.apply(p);continue}let f=(p,g)=>a.writers?.writerAt(p,g,l.seq+1),c=l.primitives.map(p=>bo(p,i,s,f));d.set(l.seq,{op:l,primitives:c.flatMap(p=>p.primitives),faithful:c.every(p=>p.faithful)})}return n.map(u=>d.get(u.seq))}function Kv(n,e,t,r){let o=new Xn(e.present,e);return o.begin(e.log.length??e.log.all().length),n.flatMap(i=>bo(i,o,t,()=>r).primitives)}var ja="A change you cannot see",Da={kind:"system",id:"withheld",name:"Someone"};function Sn(n){return n.withheld===!0}var Qn=Ae,Fa=(n,e)=>Object.entries(n).some(([t,r])=>t!=="id"&&t!=="kind"&&j(r,e));function La(n){if(typeof n!="function")return n;let e=n,t=r=>e(r.id)&&!Fa(r,e)?r:void 0;return{sees:e,shows:e,served:t,servedWith:t,optional:()=>!1,kindOf:()=>{}}}function j(n,e){if(typeof n=="string")return!e(n);if(n===null||typeof n!="object")return!1;if(Array.isArray(n)){for(let t=0;t<n.length;t++)if(j(n[t],e))return!0;return!1}for(let t in n)if(Object.hasOwn(n,t)&&(!e(t)||j(n[t],e)))return!0;return!1}function Za(n,e){let t=r=>!e(r);return n.primitives.some(r=>Qn(r).some(t))||[...n.writes,...n.reads].some(t)||n.mutation!==null&&j(n.mutation.args,e)}function _u(n,e){if(Qn(n).every(e.shows))switch(n.op){case"add-node":{let t=e.served(n.node);return t?t===n.node?n:{op:"add-node",node:t}:void 0}case"remove-node":{let t=n.node;return Fa(t,e.sees)?{op:"remove-node",node:Object.fromEntries(Object.entries(t).filter(([r,o])=>r==="id"||r==="kind"||!j(o,e.sees)))}:n}case"patch-node":{let t=e.kindOf(n.id),r={};for(let[i,s]of Object.entries(n.after))if(!j(s,e.sees))r[i]=s;else if(t!==void 0&&e.optional(t,i))r[i]=ue;else return;let o=Object.fromEntries(Object.entries(n.before).filter(([,i])=>!j(i,e.sees)));return{op:"patch-node",id:n.id,before:o,after:r}}case"add-edge":case"remove-edge":return j(n.edge,e.sees)?void 0:n;case"splice-text":return j(n.removed,e.sees)||j(n.inserted,e.sees)?void 0:n}}function vo(n,e,t){let r=La(e),o=i=>r.shows(i)&&Ca(r,i);return{id:n.id,seq:n.seq,batch:n.batch,author:Da,intent:ja,mutation:null,primitives:t??n.primitives.flatMap(i=>{let s=_u(i,r);return s?[s]:[]}),reads:n.reads.filter(o),writes:n.writes.filter(o),at:n.at,...n.undoes!==void 0?{undoes:n.undoes}:{},withheld:!0}}function Rn(n,e){let t=La(e);if(t.hides?.()===!1)return[...n];let r=t.pin?.()??t;if(r.redact)return r.redact(n);if(r.timeline){let o={served:(i,s)=>r.servedWith(i,s),edgeClean:i=>!j(i,r.sees),sees:r.sees,names:i=>j(i,r.sees)};return Ia(n,r.timeline,o).map(({op:i,primitives:s,faithful:a})=>(!i.withheld&&a?Ta(i,r,s):void 0)??vo(i,r,s))}return n.map(o=>(!o.withheld&&!Za(o,r.shows)?Ta(o,r):void 0)??vo(o,r))}function Ta(n,e,t){let r=n.inverse??n.primitives;if(t&&t.length<n.primitives.length){if(!t.length)return;r=r.filter(h=>Qn(h).every(e.shows));let{inverse:p,...g}=n;n={...g,primitives:t}}let o=p=>e.sees(p)&&Ca(e,p),i=n.reads.filter(o),s=new Set(n.primitives.flatMap(Qn)),a=n.writes.filter(p=>o(p)||e.sees(p)&&s.has(p)),d=i.length===n.reads.length&&a.length===n.writes.length?n:{...n,reads:i,writes:a},u=e.actor!==void 0&&T(n.author).id===e.actor;if(!u&&n.described?.some(p=>!e.sees(p)))return;if(!j(n,e.sees))return d;let l=new Set,f=p=>{if(typeof p=="string")l.add(p);else if(Array.isArray(p))for(let g of p)f(g);else if(p!==null&&typeof p=="object")for(let[g,h]of Object.entries(p))l.add(g),f(h)};t&&f(t);let c=p=>e.sees(p)||l.has(p);if(!j(r,c))return u&&n.mutation&&f(n.mutation.args),j({...d,primitives:[],inverse:[]},u?c:e.sees)?void 0:d}function Ca(n,e){return n.timeline===void 0||n.kindOf(e)!==void 0}var qe=class extends z{constructor(t){super(t.message);this.check=t;this.name="UndoBlockedError"}get blockedBy(){return this.check.blockedBy}};function et(n,e){let t=new Set(e),r=n.undoneIds(),o=n.all().filter(h=>t.has(h.batch)&&!r.has(h.id)),i=[...n.epochs()].reverse().find(h=>h.horizon);if(i){let h=new Set(n.all().map(y=>y.batch)),v=e.filter(y=>!h.has(y));if(v.length>0)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"missing",message:`Cannot undo ${v.map(y=>`batch ${y}`).join(", ")}: it is not after the undo horizon at op ${i.seq}${i.at?` (${i.at})`:""}. What was done before the horizon is archived, and undo does not reach behind it.`}}if(o.length===0)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"missing",message:e.length===0?"No batch given to undo":`Nothing live to undo in ${e.join(", ")} \u2014 already undone, or never applied`};if(o.some(Sn))return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"forbidden",message:o.every(Sn)?"Cannot undo a change you cannot see: only somebody who can see it can take it back.":"Cannot undo this here: part of it is a change you cannot see, and only somebody who can see it can take it back."};if(o.some(h=>h.enabledModules!==void 0))return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:"Cannot undo turning a module off or on: it is changed by turning the module the other way."};let s=i&&o.some(h=>h.publishedThrough!==void 0)?W.undo?.(n,o,i):void 0;if(s)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:s};let a=new Set;for(let h of o)for(let v of h.writes)a.add(v);let d=Math.min(...o.map(h=>h.seq)),u=n.epochs().find(h=>h.change!==void 0&&h.seq>d);if(u){let h=o.find(v=>v.seq<u.seq);return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:`Cannot undo "${h.intent}": ${h.intent===u.change?"it changed the declaration":`it was done before the declaration changed (${u.change})`}, and undo does not reach back across that change.`}}let l=new Map(n.all().map(h=>[h.id,h.seq])),f=o.flatMap(h=>h.primitives),c=[];for(let h of n.all()){if(h.seq<=d||t.has(h.batch)||r.has(h.id)||h.undoes!==void 0&&(l.get(h.undoes)??-1)>d)continue;let v=ie.aside?.(f,h);if(v===!0)continue;let y=[...new Set([...h.reads.filter(x=>a.has(x)),...v??[]])];y.length>0&&c.push({op:h,overlap:y})}if(c.length===0)return{ok:!0,ops:o};let p=c.filter(h=>!Sn(h.op)).map(h=>`"${h.op.intent}" (op ${h.op.id}, read ${h.overlap.join(", ")})`).join("; ");if(c.some(h=>Sn(h.op)))return{ok:!1,ops:o,blockedBy:c,includeBatches:[],message:`Cannot undo on its own \u2014 ${p?`a later operation depends on it: ${p}; and `:""}a later change you cannot see depends on it, which only somebody who can see it can take back.`};let g=[...new Set(c.map(h=>h.op.batch))];return{ok:!1,ops:o,blockedBy:c,includeBatches:g,message:`Cannot undo on its own \u2014 a later operation depends on it: ${p}. Include ${g.map(h=>`batch ${h}`).join(", ")} to undo them together.`}}function Ga(n,e){return e?wo(e,n).flatMap(t=>[...t.primitives]):[...n].sort((t,r)=>r.seq-t.seq).flatMap(t=>Ge(t))}function wo(n,e){return ie.undone?ie.undone(n,e):[...e].sort((t,r)=>r.seq-t.seq).map(t=>({op:t,primitives:Ge(t)}))}var He=class extends Error{refusal;constructor(e){super(e.message),this.name="PermissionDeniedError",this.refusal=e}};function Ou(n){let e=n instanceof Error?n.message:String(n);if(n instanceof He){let t=n.refusal.wouldNeed;return{reason:"forbidden",sentence:e,...t.length>0?{wouldNeed:[...t]}:{}}}return n instanceof U?{reason:"missing",sentence:e}:n instanceof se?{reason:n.reason,sentence:n.sentence}:n instanceof qe?{reason:n.check.reason??"invalid",sentence:e}:{reason:"invalid",sentence:e}}var pe=class extends z{constructor(t,r){super(`Invalid arguments for mutation "${t}"`,r.map(o=>`${o.path.map(String).join(".")||"(root)"}: ${o.message}`).join("; "));this.mutation=t;this.issues=r;this.name="InvalidArguments"}};var Pu=["edit","remove","archive","unarchive","merge","leave-alone","allow-tidying"];var cw=n=>Pu.map(e=>`${e}-${n}`);function Ba(n){let e=/^(edit|remove|archive|unarchive|merge|leave-alone|allow-tidying|skip|detach|split)-(.+)$/.exec(n);return e?{act:e[1],kind:e[2]}:void 0}var xo=["connect","disconnect"],Va=n=>n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`),ko=(n,e,t)=>`${n}-${e}-${Va(t)}`;function lw(n,e){let t=/^(connect|disconnect)-(.+)$/.exec(n);if(t){for(let[r,o]of e)if(t[2].startsWith(`${r}-`)){for(let i of o)if(t[2]===`${r}-${Va(i)}`)return{act:t[1],kind:r,relation:i}}}}var uw=n=>[...n].flatMap(([e,t])=>[...t].flatMap(r=>xo.map(o=>ko(o,e,r)))),Ka=n=>`${/^[aeiou]/i.test(n)?"an":"a"} ${n}`;function Ua(n,e){let t=e.also?` (${e.also})`:"";return{title:`${e.one?`${n==="connect"?"Set":"Clear"} the ${e.to}`:`${n==="connect"?"Link":"Unlink"} ${Ka(e.to)}`}${t}`,fromTheOtherEnd:`${n==="connect"?"Link":"Unlink"} ${Ka(e.from)}${t}`}}function Wa(n,e,t,r){if(t.cardinality!=="one"||t.to==="*"||t.to.length!==1||t.to[0]!==n)return;let o=t.description?.trim().replace(/\.$/,"");return o&&/^the\s+\S/i.test(o)&&!/[.;:!?,()]/.test(o)&&o.split(/\s+/).length<=8?{to:o.replace(/^the\s+/i,"")}:{also:r(e)}}var Ye=n=>n.trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[_\s]+/g,"-").replace(/-+/g,"-").toLowerCase();function Gt(n,e){let t=Ye(n),r=[...e];if(r.includes(n))return n;let o=r.filter(i=>Ye(i)===t);return o.length===1?o[0]:void 0}function Eu(n,e){let t=Array.from({length:e.length+1},(r,o)=>o);for(let r=1;r<=n.length;r+=1){let o=[r];for(let i=1;i<=e.length;i+=1)o[i]=Math.min(t[i]+1,o[i-1]+1,t[i-1]+(n[r-1]===e[i-1]?0:1));t=o}return t[e.length]}function So(n,e){let t=[...e],r=Gt(n,t);if(r)return r;let o=Ye(n);if(o==="")return;let i,s=!1;for(let a of t){let d=Eu(o,Ye(a));d>Math.max(2,Math.floor(Math.max(o.length,a.length)/3))||(!i||d<i.far?(i={act:a,far:d},s=!1):d===i.far&&(s=!0))}return i&&!s?i.act:void 0}var Mu=n=>`Op "${n.id}" has seq ${n.seq}, so the log begins at seq ${n.seq}: a log that begins past 0 begins at its undo horizon, and none was given (a checkpoint epoch, or { horizon })`,$n=class n{ops=[];marks=[];start=0;get length(){return this.start+this.ops.length}get horizon(){return this.start}all(){return this.ops}opsFrom(e){return this.ops.slice(Math.max(0,e-this.start))}append(e){if(e.seq!==this.length)throw new Error(this.length===0&&e.seq>0?Mu(e):`Op "${e.id}" has seq ${e.seq} but the log is ${this.length} long`);$a(e),this.ops.push(In(e))}static from(e,t=[],r={}){let o=new n,i=[...t].reverse().find(d=>d.horizon),s=r.horizon??i?.seq??0;if(!Number.isInteger(s)||s<0)throw new Error(`A log cannot begin at seq ${s}`);if(i&&r.horizon!==void 0&&i.seq!==r.horizon)throw new Error(`A log said to begin at seq ${r.horizon} has its checkpoint at seq ${i.seq}`);let a=e[0];if(a&&s>0&&a.seq!==s)throw new Error(`A log compacted at seq ${s} begins with op "${a.id}" at seq ${a.seq}`);o.start=s;for(let d of e)o.append(d);for(let d of t)o.markEpoch(d);return o}replace(e,t=[],r={}){let o=n.from(e,t,r);this.ops=o.ops,this.marks=o.marks,this.start=o.start}epochs(){return this.marks}horizonEpoch(){for(let e=this.marks.length-1;e>=0;e--)if(this.marks[e].horizon)return this.marks[e]}lastEpoch(){return this.marks.at(-1)}markEpoch(e){if(!Number.isInteger(e.seq)||e.seq<0||e.seq>this.length)throw new Error(`An epoch at seq ${e.seq} starts past the end of a log ${this.length} long`);if(e.seq<this.start)throw new Error(`An epoch at seq ${e.seq} is behind the horizon at seq ${this.start}: it went to the archive with the ops before it`);let t=this.lastEpoch();if(t&&e.seq<t.seq)throw new Error(`An epoch at seq ${e.seq} comes before the last one, at seq ${t.seq}`);this.marks.push(e)}truncate(e){if(!Number.isInteger(e)||e<this.start||e>this.length)throw new Error(`Cannot cut a log ${this.length} long back to ${e}`);let t=this.lastEpoch();if(t&&t.seq>e)throw new Error(`Cannot cut the log back to ${e}: an epoch begins at seq ${t.seq}`);return this.ops.splice(e-this.start)}checkpointAt(e,t,r={}){if(!Number.isInteger(t)||t<this.start||t>this.length)throw new Error(`No checkpoint at seq ${t}: this log holds seqs ${this.start} to ${this.length}`);let o=[...this.marks].reverse().find(a=>a.seq<=t);if(o?.seq===t)return{...o,horizon:!0};let i=this.fold(e,{...r,...o?{from:o}:{},to:t}).snapshot(),s=this.ops[t-1-this.start]?.at??o?.at;return{seq:t,base:i,...o?.version!==void 0?{version:o.version}:{},...s!==void 0?{at:s}:{},horizon:!0}}compact(e){if(!Number.isInteger(e.seq)||e.seq<this.start||e.seq>this.length)throw new Error(`Cannot compact at seq ${e.seq}: this log holds seqs ${this.start} to ${this.length}`);let t=this.ops.slice(0,e.seq-this.start),r=this.marks.filter(o=>o.seq<e.seq);return this.ops=this.ops.slice(e.seq-this.start),this.marks=[{...e,horizon:!0},...this.marks.filter(o=>o.seq>e.seq)],this.start=e.seq,{ops:t,epochs:r}}get(e){return this.ops.find(t=>t.id===e)}live(){let e=this.undoneIds();return this.ops.filter(t=>!e.has(t.id))}undoneIds(){return Je(this.ops)}opsInBatch(e){return this.ops.filter(t=>t.batch===e)}batches(){return Ro(this.ops,this.undoneIds())}fold(e,t={}){let r=t.from?.seq??0;if(r<this.start)throw new Error(t.from?`An epoch at seq ${r} is behind the horizon at seq ${this.start}: fold from the checkpoint`:`A log compacted at seq ${this.start} does not fold from empty: fold from its checkpoint`);let o=t.from?.base??{nodes:[],edges:[]},i=Q.from(e,o,t.validate!==void 0?{validate:t.validate}:{}),s=t.to??this.length;for(let a of this.ops.slice(r-this.start,Math.max(0,s-this.start)))zu(i,a);return i}toJSON(){return[...this.ops]}};function zu(n,e){if(e.undoes!==void 0){n.applyPrimitives(e.primitives,{restoring:!0});return}try{n.applyPrimitives(e.primitives)}catch{n.applyPrimitives(e.primitives,{restoring:!0})}}function Je(n){let e=new Map;for(let r of n){if(!r.undoes)continue;let o=e.get(r.undoes);o?o.push(r.id):e.set(r.undoes,[r.id])}let t=new Map;for(let r=n.length-1;r>=0;r--){let o=n[r],i=e.get(o.id)??[];t.set(o.id,!i.some(s=>t.get(s)===!0))}return new Set(n.filter(r=>t.get(r.id)===!1).map(r=>r.id))}function Ro(n,e){let t=[],r=new Map;for(let o of n){let i=r.get(o.batch);i?i.push(o):(r.set(o.batch,[o]),t.push(o.batch))}return t.map(o=>{let i=r.get(o)??[],s=i[0];return{id:o,author:s.author,intent:s.batchIntent??s.intent,at:s.at,...s.lineage?{lineage:s.lineage}:{},ops:i,undone:i.every(a=>e.has(a.id))}})}function $o(n){return n?.automated===!0&&n.kind!=="human"&&n.kind!=="rule"}var Ha=n=>n?.[Yn]===!0,Nu=(n,e)=>Ha(("graph"in n?n.graph:n).getNode(e));function qa(n,e,t){let r=n.tryDefinition(e);return t===void 0?r?.tidying:r?.edges?.[t]?.tidying}var Iu=n=>JSON.stringify(n,(e,t)=>t&&typeof t=="object"&&!Array.isArray(t)?Object.fromEntries(Object.entries(t).sort()):t);var Tu=/^(archive|unarchive|remove|leave-alone|allow-tidying)$/;function ju(n,e){let t=Ye(n.name),r=e?.act(n.name),o=n.args??{},i=r?r.derived:Ba(t),{id:s}=o;if(i&&typeof s=="string"){if(Tu.test(i.act))return[i.act,s];if(i.act==="merge")return["merge",...[s,o.into].sort()];if(i.relation)return[i.act,i.relation,s,o.to]}let a=r?.subject?.arg??"id",[d,u]=Object.keys(o).filter(l=>l!==a);return r?.connects?.length===1&&d&&!u&&e.has(o[a])&&e.has(o[d])?["connect",r.connects[0],o[a],o[d]]:[t,r?.creates?.length&&typeof s=="string"&&!e.has(s)?{...o,id:0}:o]}var Ya=(n,e)=>`\u2248${Iu(n.map(t=>ju(t,e)))}`;function Ja(n,e,t){let r=Du(n,t);return[e,...e.map(o=>[o])].map(o=>r.get(Ya(o,t))).find(Boolean)}function Du(n,e){let t=Je(n),r=new Map(n.map(i=>[i.id,i])),o=new Map;for(let i of n){let s=i.undoes!==void 0&&!t.has(i.id)&&!i.withheld?r.get(i.undoes):void 0;if(s?.suggests&&s.author.kind===i.author.kind&&s.author.id===i.author.id)continue;let a=s?.suggests??(s?.mutation&&(s.lineage||i.undoneLineage)?[s.mutation]:[]);if(a.length>0)for(let d of[a,...a.map(u=>[u])])o.set(Ya(d,e),i)}return o}function Xa(n,e,t,r,o={}){let i=o.declaration!==!1,s=(a,d)=>`${r} may not ${a}: ${d}.`;for(let a of t){let d="edge"in a?a.edge:void 0,u=(d?[d.from,d.to]:["id"in a?a.id:a.node.id]).map(l=>e.getNode(l)??("node"in a?a.node:void 0));for(let l of u){if(!l)continue;if(Ha(l))return s(`change \u201C${K(n.tryDefinition(l.kind),l)}\u201D`,"a person said to leave it alone");if(!i)continue;let f=qa(n,l.kind);if(f==="never")return s(`change ${ae(n,l.kind)} on its own`,"the app says they are never tidied");if(d&&f==="no-links")return s(`link or unlink ${ae(n,l.kind)} on its own`,"the app says they are never linked automatically")}if(d&&i&&u[0]&&qa(n,u[0].kind,d.kind)==="never")return s(`${a.op==="add-edge"?"make":"break"} a \u201C${d.kind}\u201D link on its own`,"the app says that relation is never tidied")}}function Fu(n,e){if(!e||n.length===0)return null;let t=e.roles,r=o=>t?o.wouldNeed.some(i=>t.includes(i)):o.wouldNeed.length>0;return n.every(({refusal:o})=>r(o))?e:null}var Kt={scene:0,overview:10,rail:20,popover:30,dialog:40,toast:50},Lu={plots:0,stage:1,tag:2,ties:2,lines:3,tieLabels:4,occupants:6,seatMarks:7,zoom:8,card:10,opened:11},Zu={under:0,raised:1,over:2},Ao=n=>`--graview-layer-${n}`,Cu=n=>`var(${Ao(n)}, ${Kt[n]})`;function Gu(){return Object.keys(Kt).map(n=>` ${Ao(n)}: ${Kt[n]};`).join(`
4
+ `)}function Ku(n){let e=n.onBehalfOf??n;return{kind:e.kind,...e.id!==void 0?{id:e.id}:{},...e.name!==void 0?{name:e.name}:{},...e.roles!==void 0?{roles:e.roles}:{}}}function Qa(){return`sub_${(globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`).replace(/-/g,"").slice(0,20)}`}function ed(n){return{...n,id:n.id??Qa(),at:n.at??new Date().toISOString()}}function Bu(n=[]){let e=[...n],t=new Set,r=()=>{for(let o of t)o()};return{list:o=>o===void 0?e:e.filter(i=>i.who.id===o),add(o){let i=ed(o);return e=[...e.filter(s=>s.id!==i.id),i],r(),i},remove(o){let i=e.length;e=e.filter(a=>a.id!==o);let s=e.length<i;return s&&r(),s},onChange(o){return t.add(o),()=>t.delete(o)}}}var _o=(n,e)=>`${n}\0${e}`,nd=new WeakMap;function Vu(n,e){let t=new Map;for(let[o,i]of Object.entries(e??{}))for(let[s,a]of Object.entries(i))t.set(_o(o,s),[{seq:n-1,by:a}]);return{base:n,end:n,read:[],fields:t,written:[],seqOf:new Map,writers:{writerAt:(o,i,s)=>{let a=t.get(_o(o,i));if(!a)return;let d=0,u=a.length;for(;d<u;){let l=d+u>>1;a[l].seq<s?d=l+1:u=l}return d===0?void 0:a[d-1].by}}}}function Uu(n){if(n.op==="add-node")return[n.node.id,Object.keys(n.node).filter(e=>e!=="id"&&e!=="kind")];if(n.op==="patch-node")return[n.id,Object.keys(n.after).filter(e=>!Ce(n.after[e]))];if(n.op==="splice-text")return[n.id,[n.field]]}function Wu(n,e){let t=n.end,r=T(e.author).id,o=e.undoes!==void 0?n.seqOf.get(e.undoes):void 0,i=[];for(let s of e.primitives){let a=Uu(s);if(!a)continue;let[d,u]=a;for(let l of u){let f=e.undoes===void 0?r:o!==void 0?n.writers.writerAt(d,l,o):void 0,c=_o(d,l),p=n.fields.get(c);p||n.fields.set(c,p=[]),p.push({seq:t,by:f}),i.push(c)}}n.written.push({seq:t,keys:i}),n.seqOf.set(e.id,t),n.read.push(e),n.end++}function qu(n,e){for(;n.written.length>0&&n.written.at(-1).seq>=e;){let{keys:t}=n.written.pop();for(let r of t)n.fields.get(r)?.pop()}for(let t of n.read.slice(e-n.base))n.seqOf.delete(t.id);n.read.length=e-n.base,n.end=e}function nt(n){let e=n.all(),t=typeof n.length=="number"?n.length:e.length,r=t-e.length,o=nd.get(n);if(o&&o.base<=r&&r<=o.end){let i=Math.min(o.end,t);for(;i>r&&e[i-1-r]!==o.read[i-1-o.base];)i--;i===r&&r>o.base&&i<o.end?o=void 0:(i<o.end&&qu(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||nd.set(n,o=Vu(r,r>0?[...n.epochs?.()??[]].reverse().find(i=>i.horizon)?.writers:void 0));for(let i=o.end;i<t;i++)Wu(o,e[i-r]);return o.writers}function td(n,e,t,r){let o=nt(n),i={};for(let s of t)for(let a in s){if(!Object.hasOwn(s,a)||a==="id"||a==="kind"||!r(s[a]))continue;let d=o.writerAt(s.id,a,e);d!==void 0&&((i[s.id]??={})[a]=d)}return i}var Xe={served:new WeakSet},tt=n=>n.fields!==void 0||(n.hide?.length??0)>0,rd=(n,e,t)=>(n??[]).some(r=>r.kinds.includes(e)&&(r.hide?.includes(t)===!0||r.fields!==void 0&&!r.fields.includes(t))),Ie=n=>Xe.on===!0||Xe.served.has(n);var Oo=new WeakMap;function Hu(n,e){let t=new Map(Object.entries(e?.removed??{})),r=new Map(Object.entries(e?.creators??{})),o=n===0||e?.removed!==void 0;return{base:n,end:n,read:[],kinds:t,creators:r,entries:[],records:{kindOf:i=>t.get(i),creatorOf:i=>r.get(i),knowsAll:o}}}function Yu(n,e){let t=n.end;for(let r of e.primitives){if(r.op!=="add-node"&&r.op!=="remove-node")continue;let{id:o,kind:i}=r.node;if(n.kinds.has(o)||(n.kinds.set(o,i),n.entries.push({seq:t,id:o,creator:!1})),r.op!=="add-node"||n.creators.has(o)||e.undoes!==void 0)continue;let s=T(e.author).id;s!==void 0&&(n.creators.set(o,s),n.entries.push({seq:t,id:o,creator:!0}))}n.read.push(e),n.end++}function Ju(n,e){for(;n.entries.length>0&&n.entries.at(-1).seq>=e;){let t=n.entries.pop();(t.creator?n.creators:n.kinds).delete(t.id)}n.read.length=e-n.base,n.end=e}function ce(n){let e=n.all(),t=typeof n.length=="number"?n.length:e.length,r=t-e.length,o=Oo.get(n);if(o&&o.base<=r&&r<=o.end){let i=Math.min(o.end,t);for(;i>r&&e[i-1-r]!==o.read[i-1-o.base];)i--;i===r&&r>o.base&&i<o.end?o=void 0:(i<o.end&&Ju(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||Oo.set(n,o=Hu(r,r>0?Xu(n,r):void 0));for(let i=o.end;i<t;i++)Yu(o,e[i-r]);return o.records}function Xu(n,e){let t=[...n.epochs?.()??[]].reverse().find(r=>r.horizon);return t?.seq===e?t:void 0}function od(n,e,t){ce(n);let r=Oo.get(n),o=[new Set,new Set];for(let a=r.entries.length-1;a>=0&&r.entries[a].seq>=e;a--)o[+r.entries[a].creator].add(r.entries[a].id);let i={},s={};for(let[a,d]of r.creators)o[1].has(a)||(i[a]=d);for(let[a,d]of r.kinds)!o[0].has(a)&&!t(a)&&(s[a]=d);return r.records.knowsAll?{creators:i,removed:s}:{creators:i}}function An(n,e,t,r,o,i=Xe.on===!0){if(!n?.sees?.length||B(e))return!0;let s=n.sees.filter(a=>a.kinds.includes(t.kind)&&(i||!tt(a)));return s.length===0?!1:(e=T(e),s.some(a=>{if(!xe(a,e))return!1;if(!a.own&&!a.via)return!0;let d=e.id;if(d===void 0)return!1;let u=l=>l.id===d;return a.via?r.out(t.id,a.via).some(u)||r.in(t.id,a.via).some(u):t.id===d||r.out(t.id).some(u)||r.in(t.id).some(u)||o?.creatorOf(t.id)===d}))}var sd=Symbol.for("@graview/core:node-ref"),id=n=>typeof n=="object"&&n!==null?n[sd]:void 0;function Te(n="*"){return Qu(L().check(Kn(1)),n)}function Qu(n,e){let t=Object.freeze(e==="*"?["*"]:[...e]),r=o=>{o&&Object.defineProperty(o,sd,{value:t,enumerable:!0,configurable:!0})};return r(n),r(D(n)),n}function rt(n){if(typeof n!="object"||n===null)return;let e=id(n);if(e)return e;let t=D(n),r=id(t);if(r)return r;let o=t?.innerType;return o?rt(o):void 0}function ot(n){let e=n.shape;if(!e)return[];let t=[];for(let[r,o]of Object.entries(e)){let i=rt(o);i&&t.push({name:r,kinds:i,optional:o.safeParse(void 0).success})}return t}var Eo=new Set;function Bt(n,e){return B(e)?Eo:n.modules?.disabledKinds??Eo}function Qe(n,e){return B(e)?!1:(n.policy?.sees?.length??0)>0||Bt(n,e).size>0}function ld(n,e){if(!Qe(n,e))return()=>!0;let t=n.modules?.disabledKinds??Eo,r=n.policy?.sees??[],o=T(e),i=Ie(n),s=l=>!t.has(l)&&(r.length===0||r.some(f=>f.kinds.includes(l)&&xe(f,o)&&!f.own&&!f.via&&(i||!tt(f)))),a=n.schema.kinds.every(s),d=l=>s(l)&&ef(n.schema,l).every(f=>f.every(c=>c==="*"?a:s(c))),u=a&&n.schema.kinds.every(d);return l=>u||l!==void 0&&d(l)}function it(n,e){return t=>{let r=Bt(n,e);if(!n.policy?.sees?.length&&r.size===0)return!0;let o=ce(n.log),i=n.graph.getNode(t);if(i)return!r.has(i.kind)&&An(n.policy,e,i,n.graph,o,Ie(n));let s=o.kindOf(t)??ud(n,o,t);return s===void 0?!0:!r.has(s)&&An(n.policy,e,{id:t,kind:s},{out:()=>[],in:()=>[]},o,Ie(n))}}function ef(n,e){let t=n?.tryDefinition?.(e)?.fields?.shape??{};return Object.values(t).flatMap(r=>{let o=rt(r);return o&&r.safeParse?.(void 0).success===!1?[o]:[]})}var nf={out:()=>[],in:()=>[]};function ud(n,e,t){if(e.knowsAll||Xe.served.has(n))return;let r=t.indexOf(":");if(r<=0)return;let o=t.slice(0,r);return n.schema?.tryDefinition(o)?o:void 0}function tf(n,e,t=new Map,r){let o=Bt(n,e);if(!n.policy?.sees?.length&&o.size===0)return()=>!0;let i=ce(n.log);return s=>{let a=t.get(s);if(a!==void 0)return a;let d,u=n.graph.getNode(s);if(u)d=!o.has(u.kind)&&An(n.policy,e,u,n.graph,i,Ie(n));else{let l=i.kindOf(s)??ud(n,i,s);if(l===void 0)return r?.add(s),!0;d=!o.has(l)&&An(n.policy,e,{id:s,kind:l},nf,i,Ie(n))}return t.set(s,d),d}}function rf(n){let e=new Map;return(t,r)=>{let o=`${t}\0${r}`,i=e.get(o);if(i===void 0){let s=n?.tryDefinition(t)?.fields?.shape,a=s?.[r];i=s!==void 0&&(a===void 0||a.safeParse?.(void 0).success===!0),e.set(o,i)}return i}}function Vt(n,e){return fd(n,e).lens}var Mo=()=>({judged:new Map,shown:new Map});function fd(n,e){let t=rf(n.schema),r=B(e)?void 0:T(e).id,o=()=>n.log.length??n.log.all().length,i=new WeakMap,s=n.graph,a=(l,f,c,p,g)=>{let h=(b,S)=>{if(!l(b.id))return;let w;for(let E in b)if(!(!Object.hasOwn(b,E)||E==="id"||E==="kind"||!j(b[E],l))&&!(r!==void 0&&S(E)===r)){if(!t(b.kind,E))return;(w??=[]).push(E)}if(!w)return b;let R=w.join("\0"),P=i.get(b);if(P?.without===R)return P.node;let M=Object.fromEntries(Object.entries(b).filter(([E])=>!w.includes(E)));return i.set(b,{without:R,node:M}),M},v=b=>{let S=c();return h(b,w=>f().writerAt(b.id,w,S))},y=new WeakMap,x=g?b=>{let S=y.get(b);return S||y.set(b,S={node:v(b)}),S.node}:v,$=b=>{if(!l(b))return!1;let S=s.getNode(b);return S===void 0||x(S)!==void 0},k=g?.shown??new Map,_=g?b=>{let S=k.get(b);return S===void 0&&k.set(b,S=$(b)),S}:$,A=s.outEdges&&s.inEdges?{present:{getNode:b=>s.getNode(b),outEdges:b=>s.outEdges(b),inEdges:b=>s.inEdges(b)},log:n.log,get writers(){return f()}}:void 0,m={sees:l,shows:_,served:x,servedWith:h,optional:t,kindOf:p,...r!==void 0?{actor:r}:{},...A?{timeline:A}:{},hides:()=>Qe(n,e),pin:g?()=>m:()=>d(Mo())};return Xe.lens?.(m,n,e)??m};function d(l){let f,c=o(),p=ce(n.log);return a(tf(n,e,l.judged,l.unnamed),()=>f??=nt(n.log),()=>c,g=>s.getNode(g)?.kind??p.kindOf(g),l)}return{lens:a(it(n,e),()=>nt(n.log),o,l=>s.getNode(l)?.kind??ce(n.log).kindOf(l)),pinWith:d}}var ad=new WeakMap,dd=new WeakMap,of=n=>{let e=new Set;for(let t of n)for(let r of t.primitives)r.op==="add-node"||r.op==="remove-node"?e.add(r.node.id):r.op==="patch-node"||r.op==="splice-text"?e.add(r.id):(e.add(r.edge.from),e.add(r.edge.to));return e};function pd(n,e){if(!Qe(n,e))return n.log.all();let t=n.log.all(),r=n.log.length??t.length,o=r-t.length,i=[...Bt(n,e)].sort().join("\0"),s=hd(e),a=ad.get(n.log);a||ad.set(n.log,a=new Map);let d=a.get(s),{pinWith:u}=fd(n,e),l=dd.get(n.log);l||dd.set(n.log,l=new Set);let f=d!==void 0&&d.horizon===o&&d.off===i&&d.length<=r&&(d.length===o||t[d.length-1-o]===d.last);if(d&&f){if(d.length===r)return d.ops;let g=t.slice(d.length-o),h=u(Mo()),v=!0,y=of(g);for(let x of y){let $=d.judgments.judged.get(x),k=d.judgments.shown.get(x);if($!==void 0&&h.sees(x)!==$||k!==void 0&&h.shows(x)!==k){v=!1;break}}if(v){for(let x of y)if(l.has(x)){v=!1;break}}if(v){let x=[...d.ops,...Rn(g,u(d.judgments))],$={horizon:o,off:i,length:r,last:t.at(-1),ops:x,judgments:d.judgments};return a.set(s,$),x}}let c={...Mo(),unnamed:l},p=Rn(t,u(c));return a.set(s,{horizon:o,off:i,length:r,last:t.at(-1),ops:p,judgments:c}),p}function sf(n,e,t){return(t.subjectId===void 0||!e(t.subjectId)||n.shows(t.subjectId))&&t.nodeIds.every(r=>!e(r)||n.shows(r))&&!j(t,n.sees)}function zo(n,e){return{all:()=>n,undoneIds:()=>Je(n),epochs:e}}var cd=new WeakMap;function hd(n){let e=B(n)?n:T(n);return`${n.kind}|${e.id??""}|${(e.roles??[]).join(",")}|${n.onBehalfOf?`for:${n.id??""}`:""}`}var gd=(n,e)=>`${hd(n)}@${e}`,Po=(n,e)=>{let t=Reflect.get(n,e,n);return typeof t=="function"?t.bind(n):t},af=Symbol.for("@graview/core:seat");function Se(n,e,t={}){if(yo(n.publishing,e,t.as)){if(W.served)return W.served(n,e);throw new Error("Load @graview/core/publishing to serve a reader of an app that publishes.")}return yd(n,e)}var df=()=>W.served!==void 0;function md(n){let e=cd.get(n);return e||cd.set(n,e=new Map),e}function yd(n,e){if(!Qe(n,e))return n;let t=gd(e,"head"),r=md(n),o=r.get(t);if(o)return o;let i=n.graph,s=Vt(n,e),a=k=>{let _=w=>w===void 0?void 0:k.served(w),A=w=>_(w)!==void 0,m=w=>A(i.getNode(w));return{served:_,seenNode:A,seenId:m,seenEdge:w=>m(w.from)&&m(w.to)&&!j(w,k.sees),servedAll:w=>w.flatMap(R=>_(R)??[])}},{served:d,seenId:u}=a(s),l=()=>a(s.pin?.()??s),f=(k,_)=>{let A=nt(n.log),m=s.pin?.()??s,b=k.nodes.flatMap(w=>m.servedWith(w,R=>A.writerAt(w.id,R,_))??[]),S=new Set(b.map(w=>w.id));return{nodes:b,edges:k.edges.filter(w=>S.has(w.from)&&S.has(w.to)&&!j(w,m.sees))}},c=k=>{let{removed:_,writers:A,...m}=k,b=f(k.base,k.seq);if(!k.creators)return{...m,base:b};let S=new Set(b.nodes.map(R=>R.id)),w=Object.fromEntries(Object.entries(k.creators).filter(([R,P])=>S.has(R)&&!j(P,s.sees)));return{...m,base:b,creators:w}},p=k=>k&&c(k),g=()=>pd(n,e),h=()=>zo(g(),()=>n.log.epochs()),v=new Proxy(i,{get(k,_){switch(_){case"getNode":return A=>d(k.getNode(A));case"has":return u;case"allNodes":case"nodesOfKind":return(...A)=>l().servedAll(k[_](...A));case"count":return(...A)=>l().servedAll(k.nodesOfKind(...A)).length;case"allEdges":case"edgesOfKind":case"outEdges":case"inEdges":return(...A)=>k[_](...A).filter(l().seenEdge);case"out":case"in":case"neighbors":return(A,...m)=>{let b=l();return b.seenId(A)?b.servedAll(k[_](A,...m)):[]};case"snapshot":return()=>{let A=k.snapshot(),m=l();return{...A,nodes:m.servedAll(A.nodes),edges:A.edges.filter(m.seenEdge)}};case"size":{let A=l();return{nodes:A.servedAll(k.allNodes({archived:"all"})).length,edges:k.allEdges({archived:"all"}).filter(A.seenEdge).length}}default:return Po(k,_)}}}),y=()=>{let k=g();return Ro(k,Je(k))},x=new Proxy(n.log,{get(k,_){switch(_){case"all":case"toJSON":return()=>[...g()];case"epochs":return()=>k.epochs().map(c);case"lastEpoch":return()=>p(k.lastEpoch());case"live":return()=>{let A=g(),m=Je(A);return A.filter(b=>!m.has(b.id))};case"get":return A=>g().find(m=>m.id===A);case"opsInBatch":return A=>g().filter(m=>m.batch===A);case"batches":return y;default:return Po(k,_)}}}),$=new Proxy(n,{get(k,_){switch(_){case af:return{store:k,principal:e};case"graph":return v;case"log":return x;case"snapshot":return v.snapshot;case"batches":return y;case"canUndo":return A=>et(h(),typeof A=="string"?[A]:A);case"violations":return A=>k.violations(A,v).filter(m=>sf(s,b=>i.has(b),m));case"findings":return()=>k.findings().filter(A=>(A.id.includes("->")?A.id.split("->").map((b,S)=>S===0?b.slice(b.indexOf(":")+1):b):[A.id]).every(b=>!i.has(b)||u(b))&&!j(A,s.sees));case"wouldChange":return A=>k.wouldChange(A,e);case"preview":return(A,m,b)=>k.preview(A,m,{author:e,...b});case"seenBy":return(A,m)=>Se(k,A,m);case"seenFor":return e;case"servedSeq":return k.servedSeq;case"checkpoint":return A=>p(k.checkpoint(A));default:return Po(k,_)}}});return r.set(t,$),$}W.kit={seatView:yd,viewsOf:md,viewKey:gd,diff:ze,reads:yo};var No=new Set;function Io(n,e){if(!n||e===void 0)return{enabled:new Set(Object.keys(n??{})),disabledKinds:No,disabledMutations:No,disabledInvariants:No,administered:bd(n,new Set(Object.keys(n??{})))};let t=new Set,r=a=>{if(!(t.has(a)||!(a in n))){t.add(a);for(let d of n[a]?.requires??[])r(d)}};for(let a of e)r(a);for(let[a,d]of Object.entries(n))d.required&&r(a);let o=new Set,i=new Set,s=new Set;for(let[a,d]of Object.entries(n))if(!t.has(a)){for(let u of d.kinds??[])o.add(u);for(let u of d.mutations??[])i.add(u);for(let u of d.invariants??[])s.add(u)}for(let a of t){let d=n[a];for(let u of d?.kinds??[])o.delete(u);for(let u of d?.mutations??[])i.delete(u);for(let u of d?.invariants??[])s.delete(u)}return{enabled:t,disabledKinds:o,disabledMutations:i,disabledInvariants:s,administered:bd(n,t)}}function bd(n,e){let t=new Map;for(let[r,o]of Object.entries(n??{}))e.has(r)&&o.visibility==="admin"&&t.set(r,o);return t}function vd(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().trim().replace(/\s+/g," ")}var Ut=class{constructor(e){this.graph=e;for(let t of e.allNodes({archived:"all"}))this.file(t);e.subscribe(t=>this.follow(t))}kinds=new Map;filed=new Map;labelOf(e){return this.filed.get(e)?.label}lookup(e,t){let r=vd(t);if(r.length===0)return{exact:[],prefix:[]};let o=e.includes("*")?[...this.kinds.values()]:e.flatMap(a=>this.kinds.get(a)??[]),i=[],s=[];for(let a of o)for(let d=To(a.sorted,r);d<a.sorted.length&&a.sorted[d].startsWith(r);d+=1){let u=[...a.ids.get(a.sorted[d])??[]];s.push(...u),a.sorted[d]===r&&i.push(...u)}return{exact:i,prefix:s}}follow(e){for(let t of e.removedNodes)this.unfile(t.id);for(let t of e.changedNodes)this.unfile(t.after.id),this.file(t.after);for(let t of e.addedNodes)this.file(t)}file(e){let t=K(this.graph.schema.tryDefinition(e.kind),e),r=vd(t);this.filed.set(e.id,{kind:e.kind,key:r,label:t});let o=this.kinds.get(e.kind);o||this.kinds.set(e.kind,o={ids:new Map,sorted:[]});let i=o.ids.get(r);i?i.add(e.id):(o.ids.set(r,new Set([e.id])),o.sorted.splice(To(o.sorted,r),0,r))}unfile(e){let t=this.filed.get(e);if(!t)return;this.filed.delete(e);let r=this.kinds.get(t.kind),o=r?.ids.get(t.key);if(!r||!o||(o.delete(e),o.size>0))return;r.ids.delete(t.key);let i=To(r.sorted,t.key);r.sorted[i]===t.key&&r.sorted.splice(i,1)}};function To(n,e){let t=0,r=n.length;for(;t<r;){let o=t+r>>>1;n[o]<e?t=o+1:r=o}return t}function cf(n,e){return e.includes("*")?"record":e.map(t=>H(n.tryDefinition(t),t)).join(" or ")}function wd(n,e,t,r){let o=cf(n,e.kinds);if(r.length===0)return{ok:!1,reason:"none",candidates:r,message:`There is no ${o} called "${t}".`};let i=r.slice(0,10).map(a=>`${a.label} (${a.id})`),s=r.length>i.length?`, and ${r.length-i.length} more`:"";return{ok:!1,reason:"ambiguous",candidates:r,message:`"${t}" names more than one ${o}: ${i.join(", ")}${s}. Pass the id of the one you mean as ${e.name}.`}}function jo(n){if(n===null||typeof n!="object")return JSON.stringify(n)??"null";if(Array.isArray(n))return`[${n.map(r=>r===void 0?"null":jo(r)).join(",")}]`;let e=n;return`{${Object.keys(e).filter(r=>e[r]!==void 0).sort().map(r=>`${JSON.stringify(r)}:${jo(e[r])}`).join(",")}}`}var xd=(n,e)=>n.key<e.key?-1:n.key>e.key?1:0;function lf(n){let e=n.nodes.map(r=>({key:r.id,value:r})).sort(xd),t=n.edges.map(r=>({key:N(r),value:{kind:r.kind,from:r.from,to:r.to,id:r.id,data:r.data}})).sort(xd);return jo({nodes:e.map(r=>r.value),edges:t.map(r=>r.value)})}function _n(n){return`sha256:${Sd(lf(n))}`}function kd(n,e,t,r={}){let o=r.validate??!0,i=r.base??{nodes:[],edges:[]},s=_n(t),a=Q.from(n,i,{validate:o});for(let[h,v]of e.entries())try{a.applyPrimitives(v.primitives)}catch(y){let x=e[h-1];return{ok:!1,expected:_n(a.snapshot()),actual:s,...x?{divergedAfter:x.id}:{},reason:`The log does not fold: op "${v.id}" (${v.intent}) could not be applied. ${y instanceof Error?y.message:String(y)}`}}let d=_n(a.snapshot());if(d===s)return{ok:!0,hash:s};let u=h=>{let v=Q.from(n,i,{validate:o});for(let y=0;y<=h;y++)v.applyPrimitives(e[y].primitives);return _n(v.snapshot())},l=h=>{try{let v=Q.from(n,t,{validate:o});for(let y=e.length-1;y>h;y--)v.applyPrimitives(Ge(e[y]));return _n(v.snapshot())}catch{return}},f=h=>{let v=l(h);return v!==void 0&&v!==u(h)},c=-1,p=e.length-1;for(;c<p;){let h=Math.floor((c+p)/2);f(h)?p=h:c=h+1}let g=p>=0?e[p]:void 0;return{ok:!1,expected:d,actual:s,...g?{divergedAfter:g.id}:{},reason:g?`The graph and the fold of its log part after op "${g.id}" (${g.intent}).`:"The graph and the fold of its log disagree before any op: the base it folds from does not match."}}var uf=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),ff=new TextEncoder,pf=new Uint32Array(64),hf=new Uint32Array(8),Wt=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function Sd(n){let e=ff.encode(n),t=e.length*8,r=new Uint8Array(e.length+9+63>>6<<6);r.set(e),r[e.length]=128;let o=new DataView(r.buffer);o.setUint32(r.length-8,Math.floor(t/2**32)),o.setUint32(r.length-4,t>>>0);let i=hf;i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225;let s=pf;for(let d=0;d<r.length;d+=64){for(let y=0;y<16;y++)s[y]=o.getUint32(d+y*4);for(let y=16;y<64;y++){let x=s[y-15],$=s[y-2],k=(x>>>7|x<<25)^(x>>>18|x<<14)^x>>>3,_=($>>>17|$<<15)^($>>>19|$<<13)^$>>>10;s[y]=s[y-16]+k+s[y-7]+_>>>0}let u=i[0],l=i[1],f=i[2],c=i[3],p=i[4],g=i[5],h=i[6],v=i[7];for(let y=0;y<64;y++){let x=(p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<7),$=p&g^~p&h,k=v+x+$+uf[y]+s[y]>>>0,_=(u>>>2|u<<30)^(u>>>13|u<<19)^(u>>>22|u<<10),A=u&l^u&f^l&f,m=_+A>>>0;v=h,h=g,g=p,p=c+k>>>0,c=f,f=l,l=u,u=k+m>>>0}i[0]=i[0]+u>>>0,i[1]=i[1]+l>>>0,i[2]=i[2]+f>>>0,i[3]=i[3]+c>>>0,i[4]=i[4]+p>>>0,i[5]=i[5]+g>>>0,i[6]=i[6]+h>>>0,i[7]=i[7]+v>>>0}let a="";for(let d=0;d<8;d++){let u=i[d];a+=Wt[u>>>24]+Wt[u>>>16&255]+Wt[u>>>8&255]+Wt[u&255]}return a}var st=class{constructor(e){this.inner=e}seen=new Set;reads(){return[...this.seen]}markAll(e){for(let t of e)this.seen.add(t.id);return e}markEdges(e){for(let t of e)this.seen.add(t.from),this.seen.add(t.to);return e}getNode(e){return this.seen.add(e),this.inner.getNode(e)}has(e){return this.seen.add(e),this.inner.has(e)}allNodes(e){return this.markAll(this.inner.allNodes(e))}allEdges(e){return this.markEdges(this.inner.allEdges(e))}nodesOfKind(e,t){return this.markAll(this.inner.nodesOfKind(e,t))}edgesOfKind(e,t){return this.markEdges(this.inner.edgesOfKind(e,t))}out(e,t,r){return this.seen.add(e),this.markAll(this.inner.out(e,t,r))}in(e,t,r){return this.seen.add(e),this.markAll(this.inner.in(e,t,r))}neighbors(e,t){return this.seen.add(e),this.markAll(this.inner.neighbors(e,t))}};function gf(n,e){return{...e,name:n}}function Do(n){if(!n.creates?.length)return!1;let e=n.input.shape;return e===void 0||!("id"in e)}function _d(n){let e=n.input,t=e._zod?.def;if(t?.type!=="object"||t.catchall!==void 0||!e.shape)return;let r=Object.keys(e.shape);return Do(n)?[...r,"id"]:r}var Rd=(n,e,t={})=>{let r=n.filter(s=>t[s]?.length),o=n.filter(s=>!t[s]?.length);return`${[...o.length>0?[`does not take ${o.map(s=>`"${s}"`).join(", ")}`]:[],...r.map(s=>`${s} is set by ${t[s].join(" or ")}`)].join("; ")}; it takes ${e.length>0?e.map(s=>`"${s}"`).join(", "):"nothing"}`};function mf(n){let e=n?._zod?.def;for(let t=0;e?.innerType&&t<8;t++)e=e.innerType._zod?.def;return e}var yf=/^-?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?$/;function Od(n,e){let t=n?.shape;if(!t||typeof e!="object"||e===null||Array.isArray(e))return e;let r;for(let[o,i]of Object.entries(e)){if(typeof i!="string"||!yf.test(i)||mf(t[o])?.type!=="number")continue;let s=Number(i);Number.isFinite(s)&&(r??={...e},r[o]=s)}return r??e}var Pd=n=>typeof n=="string"&&n.length<=200&&/^[^\s\p{Cc}]+$/u.test(n);function bf(n){if(typeof n!="object"||n===null)return;let e=n.id;if(e!==void 0){if(!Pd(e))throw new z("An id is 1\u2013200 characters with no space",`Got ${JSON.stringify(e)}.`);return e}}function vf(n){let{id:e,...t}=n;return t}function $d(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"")||"item"}function Fo(n){let e=2166136261;for(let t=0;t<n.length;t++)e=Math.imul(e^n.charCodeAt(t),16777619);return(e>>>0).toString(36).padStart(7,"0")}function wf(n,e){if(e.limited&&e.me===void 0)return Ad(n,e.held);let t=e.limited?`${n}.${Fo(e.me)}`:n,r=t;for(let o=2;e.seen(r);o++)r=`${t}-${o}`;return e.held(r)?Ad(t,e.held):r}function Ad(n,e){let t;do t=`${n}-${Math.floor(Math.random()*36**6).toString(36).padStart(6,"0")}`;while(e(t));return t}function On(n,e,t,r={}){let o=Do(e)?bf(t):void 0,i=Od(e.input,o===void 0?t:vf(t)),s=_d(e);if(s&&typeof i=="object"&&i!==null&&!Array.isArray(i)){let m=Object.keys(i).filter(b=>!s.includes(b)&&i[b]!==void 0);if(m.length>0)throw new pe(e.name,[{path:[],message:Rd(m,s,e.writtenBy)}])}let a=e.clearable&&typeof i=="object"&&i!==null&&!Array.isArray(i)?e.clearable.filter(m=>i[m]===null):[],d=e.input.safeParse(a.length>0?Object.fromEntries(Object.entries(i).filter(([m])=>!a.includes(m))):i);if(d.success)for(let m of a)d.data[m]=null;if(!d.success){let m=Object.keys(e.input.shape??{});throw new pe(e.name,d.error.issues.map(b=>b.code==="unrecognized_keys"&&m.length>0?{...b,message:Rd(b.keys,m,e.writtenBy)}:b))}let u=d.data,l=new st(r.seen??n),f=[],c=new Set,p=r.me===void 0?void 0:`.${Fo(r.me)}`,g=m=>!r.seesInFull||r.seesInFull()||p!==void 0&&new RegExp(`\\${p}(-[0-9a-z]+)?$`).test(m),h=m=>l.has(m)||n.has(m)||c.has(m)||r.everHeld?.(m)===!0,v,y=m=>{let b=new Set([...n.outEdges(m),...n.inEdges(m)]);for(let S of b)l.getNode(S.from),l.getNode(S.to),f.push({op:"remove-edge",edge:S});return b},x={graph:l,schema:n.schema,me:r.me,emit(m){f.push(m)},addNode(m){f.push({op:"add-node",node:m})},removeNode(m){let b=l.getNode(m)&&n.getNode(m);if(!b)throw new U(m,`Cannot remove missing node "${m}"`);y(m),f.push({op:"remove-node",node:b})},patchNode(m,b){let S=l.getNode(m)&&n.getNode(m);if(!S)throw new U(m,`Cannot patch missing node "${m}"`);let w={},R={};for(let[P,M]of Object.entries(b)){let E=S[P];JSON.stringify(E)===JSON.stringify(M)&&!r.keepUnchanged?.(M,P,S)||(w[P]=E,R[P]=M)}Object.keys(R).length!==0&&f.push({op:"patch-node",id:m,before:w,after:R})},archiveNode:m=>x.patchNode(m,{[vn]:!0}),unarchiveNode:m=>x.patchNode(m,{[vn]:void 0}),mergeNode(m,b){let S=l.getNode(b)&&n.getNode(b);if(!S)throw new U(b,`Cannot merge into missing node "${b}"`);if(m===b||We(S))throw new z(m===b?"Cannot merge a record into itself":"Cannot merge into an archived record");let w=new Set([...n.outEdges(b),...n.inEdges(b)].map(N));for(let R of y(m)){let P={...R,from:R.from===m?b:R.from,to:R.to===m?b:R.to};P.from!==P.to&&!w.has(N(P))&&(w.add(N(P)),f.push({op:"add-edge",edge:P}))}x.archiveNode(m),v=b},addEdge(m){f.push({op:"add-edge",edge:m})},removeEdge(m){f.push({op:"remove-edge",edge:m.id!==void 0&&n.linkById(m.id)||m})},setSingleSource(m,b,S){n.inEdges(b,m).some(w=>w.from===S)||f.push({op:"add-edge",edge:{kind:m,from:S,to:b}});for(let w of n.inEdges(b,m))l.getNode(w.from),w.from!==S&&f.push({op:"remove-edge",edge:w})},freshId(m,b){if(o!==void 0&&!c.has(o)){if(b&&!o.startsWith(`${b}:`)){let E=o.includes(":")?o.slice(o.indexOf(":")+1):o;throw new z(`Id "${o}" does not say its kind: ask for "${b}:${E||o}"`,`Every ${b} id starts "${b}:", the ones "${e.name}" mints and the ones a caller asks for alike, so a later call names it as it names the rest.`)}if(!g(o))throw new z(`"${e.name}" makes its own id here`,`Leave id out${p?`, or end it "${p}"`:""}.`);if(h(o))throw new z(`Id "${o}" is already taken`,`"${e.name}" was asked to make a node with that id, and the graph has or had one. Pick another, or leave id out and let the act mint one.`);return c.add(o),o}let S=r.hint;if(o===void 0&&!c.size&&Pd(S)&&(!b||S.startsWith(`${b}:`))&&g(S)&&!h(S))return c.add(S),S;b&&r.keeps&&Object.entries(u).some(([E,te])=>te===m&&r.keeps(b,E))&&(m=b);let w=b?`${b}:${$d(m)}`:$d(m),R=r.seesInFull!==void 0&&!r.seesInFull(b),M=wf(w,{seen:E=>(r.seen?r.seen.has(E):n.has(E))||c.has(E)||!R&&r.everHeld?.(E)===!0,held:h,limited:R,me:r.me});return c.add(M),M}};if(e.apply(x,u),o!==void 0&&!c.has(o))throw new z(`"${e.name}" did not make a record with id "${o}": it names what it makes itself`);let $=r.check?.(f,e),k=new Set(f.flatMap(Ae)),_=new st(r.seen??n),A=e.describe?.(u,_)??`${e.name}(${Object.entries(u).map(([m,b])=>`${m}=${JSON.stringify(b)}`).join(", ")})`;return{primitives:f,reads:[...new Set([...l.reads(),..._.reads()])],...e.describe?{described:[..._.reads(),...$??[]]}:{},writes:[...k],intent:A,...v!==void 0?{mergedInto:v}:{},...c.size>0?{firstMinted:c.values().next().value}:{}}}var Ed=Symbol.for("@graview/core:amount"),sx=(n,e)=>(Object.defineProperty(D(n),Ed,{value:e,enumerable:!0}),n);function Lo(n,e=!0){let t=D(n);return t?.[Ed]??(e&&t?.innerType?Lo(t.innerType):void 0)}function Md(n,e={}){let t=Number.isInteger(n),r={maximumFractionDigits:t?0:2,minimumFractionDigits:t?0:2};try{return me(n,e.locale,e.currency?{style:"currency",currency:e.currency,...r}:r)}catch{return me(n,e.locale,r)}}function zd(n,{format:e,unit:t,currency:r,locale:o}){let i=/^[A-Z]{3}$/.test(t??"");return e==="money"||!e&&i?Md(n,{...o?{locale:o}:{},...(i?t:r)?{currency:i?t:r}:{}}):e==="percent"?me(n,o,{style:"percent",maximumFractionDigits:0}):me(n,o)+(t?` ${t}`:"")}var xf=Symbol.for("@graview/core:typed-field");function Zo(n){let e=D(n);return e?e[xf]??Zo(e.innerType):void 0}var kf=/^[("'“‘]*(?:(?:[a-z]{1,3}\.){2,}|(?:dr|mr|mrs|ms|mx|st|mt|vs|jr|sr|prof|no|fig|approx)\.)$/i;function Sf(n){for(let e of n.matchAll(/[.!?](?=\s|$)/g)){let t=n.slice(0,e.index+1),r=/\S+$/.exec(t)?.[0]??"";if(!(e[0]==="."&&kf.test(r))&&!(t.split(" ").length<3&&e.index+1<n.length))return t}}function Nd(n,e=140){let t=n.replace(/^[#>\s]+|\*\*|`|\](\([^)\s]*\))?|\[/gm,"").replace(/\s+/g," ").trim(),r=Sf(t);return r&&r.length<=e?r:t.length<=e?t:`${(t.slice(0,e+1).replace(/\s+\S*$/,"")||t.slice(0,e)).replace(/[\s,;:.—-]+$/,"")}\u2026`}function Co(n){let e=n.fields.shape;return Object.keys(e).flatMap(t=>{let r=zt(e[t])?qn(t):void 0;return r&&e[r]?[r]:[]})}var Rf=[["skip","Skip this one","Leave one day out of the series; the rest stay as they are.","Skip {} on "],["detach","Change just this one","Make one day of the series a record of its own, to change apart from the rest.","Change {} only on "],["split","Change from here","End the series the day before, and start it again from that day with what changes.","Change {} from "]];function Id(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=Co(o);if(i.length===0)continue;let s=o.kind,a=o.fields.shape,d=at(n,e).get(s),u=new Set(o.keptInStep??[]),l=g=>(d?.get(g)?.length??0)>0&&!u.has(g),f=je(o).filter(g=>!l(g)),c=Object.fromEntries(je(o).filter(l).map(g=>[g,d.get(g)])),p=g=>K(o,g);for(let[g,h,v,y]of Rf){let x=`${g}-${s}`;t.has(x)||r.push({name:x,derived:{kind:s,act:g},title:h,description:v,subject:{kinds:[s],arg:"id"},writes:i.map(yn),...g==="skip"?{}:{creates:[s],...Object.keys(c).length>0?{writtenBy:c}:{}},input:gn({id:Te([s]),on:L().check(Bn(/^\d{4}-\d{2}-\d{2}$/,"a day, like 2026-10-21")),...i.length>1?{field:X(sa(i))}:{},...g==="skip"?{}:Object.fromEntries(f.map($=>[$,X(a[$])]))}),describe:($,k)=>y.replace("{}",p(k.getNode(String($.id))??{id:$.id}))+Oe(String($.on)),apply($,k){let _=$.graph.getNode(String(k.id)),A=String(k.field??i[0]),m=_?.[A],b=_?.[yn(A)],S=String(k.on);if(typeof m!="string"||!bn(b))throw new se(`${p(_??{id:k.id})} does not repeat`,"refused");let w=mn(m,b,{from:S,to:S})[0];if(!w)throw new se(`${p(_)} does not fall on ${Oe(S)}`,"refused");let R=String(_.id),P=Object.fromEntries(f.filter(q=>k[q]!==void 0).map(q=>[q,k[q]])),M=yn(A),E=q=>{let yi=Object.fromEntries(Object.entries({..._,...q,...P}).filter(([ht,fr])=>fr!=null&&ht!=="id")),bi=$.freshId(p(yi));$.addNode({...yi,id:bi,kind:s});for(let ht of Object.keys(o.edges??{}))for(let fr of $.graph.out(R,ht))$.addEdge({kind:ht,from:bi,to:fr.id})};if(g!=="split"){$.patchNode(R,{[M]:{...b,except:[...new Set([...b.except??[],S])].sort()}}),g==="detach"&&E({[A]:w,[M]:null});return}if(Object.keys(P).length===0)throw new se(`Nothing to change: give ${p(_)} from ${Oe(S)} something new`,"invalid");if(S<=m.slice(0,10))return $.patchNode(R,P);let te=new Date(Date.parse(`${S}T00:00:00Z`)-864e5).toISOString().slice(0,10),Ze=b.count?mn(m,{...b,except:[]},{to:te}).length:0,{count:an,except:Z,...le}=b,C=q=>Z?.some(q)?{except:Z.filter(q)}:{};$.patchNode(R,{[M]:{...le,until:te,...C(q=>q<S),...an?{count:Ze}:{}}}),E({[A]:w,[M]:{...le,...C(q=>q>=S),...an?{count:an-Ze}:{},continues:R}})}})}}return r}function Td(n,e,t,r){if(n==="detach")return!0;if(n!=="split"||typeof e.on!="string")return!1;let o=t?.[String(e.field??r[0])];return typeof o!="string"||e.on>o.slice(0,10)}function jd(n,e){let t=new Set(e.map(a=>a.name)),r=e.filter(a=>!a.derived&&!a.creates?.length),o=(a,d,u,l)=>r.some(f=>{if(!(f[a]??[]).includes(u))return!1;let c=f.subject?.kinds;return c===void 0||c==="*"||c.includes(d)||l.to==="*"||c.some(p=>l.to.includes(p))}),i=[],s=(a,d)=>{let u=a.getNode(String(d));return u?K(n.tryDefinition(u.kind),u):String(d)};for(let a of n.definitions){let d=a.kind,u=Object.entries(a.edges??{}),l=f=>f.to==="*"?"record":f.to.map(c=>H(n.tryDefinition(c),c)).join(" or ");for(let[f,c]of u){let p=l(c),g=c.cardinality==="one",h=u.some(([k,_])=>k!==f&&l(_)===p),v=k=>G(k).toLowerCase(),y=Wa(d,f,c,v),x={to:y&&"to"in y?y.to:p,from:H(a,d),one:g,also:y&&"also"in y?y.also:h&&!y?v(f):void 0},$=x.from;for(let k of xo){let _=ko(k,d,f);if(t.has(_)||c.acts==="none"||(k==="connect"?o("connects",d,f,c):o("severs",d,f,c)||c.appendOnly))continue;let{title:A,fromTheOtherEnd:m}=Ua(k,x),b=c.description?`: ${c.description.replace(/\.$/,"")}`:"";i.push({name:_,derived:{kind:d,act:k,relation:f},title:A,fromTheOtherEnd:m,description:k==="connect"?`Link this ${$} to ${/^[aeiou]/i.test(p)?"an":"a"} ${p}${b}.${g?" It has one, so this replaces the one it has.":""}`:`Take away the link between this ${$} and ${/^[aeiou]/i.test(p)?"an":"a"} ${p}${b}. Undo puts it back.`,subject:{kinds:[d],arg:"id"},...k==="connect"?{connects:[f]}:{severs:[f],destructive:!0},idempotent:!0,input:gn({id:Te([d]),to:Te(c.to==="*"?"*":c.to)}),describe:(S,w)=>k==="disconnect"?`Unlink ${s(w,S.id)} from ${s(w,S.to)}`:g?`Set the ${p} of ${s(w,S.id)} to ${s(w,S.to)}`:`Link ${s(w,S.id)} to ${s(w,S.to)}`,apply(S,w){let R=String(w.id),P=String(w.to);for(let E of[R,P])if(!S.graph.getNode(E))throw new se(`there is no record "${E}"`,"invalid");let M=S.graph.out(R,f).some(E=>E.id===P);if(k==="disconnect"){if(!M)throw new se(`${s(S.graph,R)} is not linked to ${s(S.graph,P)}`,"invalid");S.removeEdge({kind:f,from:R,to:P});return}if(g)for(let E of S.graph.out(R,f))E.id!==P&&S.removeEdge({kind:f,from:R,to:E.id});M||S.addEdge({kind:f,from:R,to:P})}})}}}return i}function $f(n){let e=new Set(n.declared),t=[...new Set([...(n.paged??[]).filter(o=>e.has(o)),...n.declared])],r=(n.naming??[]).filter(o=>e.has(o));return[...new Set([...r,...t.filter(n.must),...t])]}var Go=n=>`\xA7${n}\xA7`;function Af(n,e){if(n.label)try{let r={id:Go(e.length),kind:n.kind};e.forEach((s,a)=>r[s]=Go(a));let o=String(n.label(r)),i=e.map((s,a)=>[s,o.indexOf(Go(a))]).filter(([,s])=>s>=0);if(i.length>0)return i.sort((s,a)=>s[1]-a[1]).map(([s])=>s)}catch{}let t=["name","title","label"].find(r=>e.includes(r));return t?[t]:[]}var Dd=new WeakMap;function qt(n){let e=Dd.get(n);if(e)return e;let t=n.fields.shape??{},r=Object.keys(t),o=n.display?.page,i=$f({declared:r,paged:[...o?.fields??[],...(o?.groups??[]).flatMap(s=>s.fields)],must:s=>t[s]?.safeParse?.(void 0).success===!1&&!Object.hasOwn(n.defaults??{},s),naming:Af(n,r)});return Dd.set(n,i),i}function _f(n,e){let t=e.subject?.kinds,r=e.creates?.[0]??e.derived?.kind??(t!==void 0&&t!=="*"&&t.length===1?t[0]:void 0);return r===void 0?void 0:n.tryDefinition(r)}function Of(n,e){let t=Object.keys(e.input?.shape??{}),r=n?_f(n,e):void 0;if(!r)return t;let o=qt(r),i=d=>d!==e.subject?.arg&&o.includes(d),s=t.filter(i).sort((d,u)=>o.indexOf(d)-o.indexOf(u)),a=0;return t.map(d=>i(d)?s[a++]:d)}function Ko(n,e,t=r=>r.name){let r=o=>{let i=e.indexOf(t(o));return i<0?e.length:i};return[...n].sort((o,i)=>r(o)-r(i))}function je(n){let e=n.fields.shape;return Object.keys(e).filter(t=>!(t in(n.fixed??{})))}function Bo(n,e){let t=e.subject;return t?t.kinds==="*"?n.kinds:t.kinds:[]}function Vo(n,e){let t=n.subject;if(!t||!n.writes&&n.creates?.length)return[];let r=new Set(Object.keys(e.fields.shape));if(n.writes)return n.writes.filter(s=>r.has(s));let o=n.input.shape??{},i=new Set(ot(n.input).map(s=>s.name));return Object.keys(o).filter(s=>s!==t.arg&&r.has(s)&&!i.has(s))}function at(n,e){let t=new Map,r=(o,i,s)=>{let a=t.get(o)??new Map;a.get(i)?.includes(s)||(a.set(i,[...a.get(i)??[],s]),t.set(o,a))};for(let o of e){for(let i of Bo(n,o)){let s=n.tryDefinition(i);if(s)for(let a of Vo(o,s))r(i,a,o.name)}for(let[i,s]of Object.entries(o.writesOther??{})){let a=n.tryDefinition(i)?.fields.shape;if(a)for(let d of s)d in a&&r(i,d,o.name)}}return t}function Ld(n,e,t){let r=n.tryDefinition(t);if(!r)return[];let o=at(n,e).get(t);return je(r).filter(i=>!o?.has(i))}var Zd=n=>`edit-${n}`;function Cd(n,e,t){let r=n.tryDefinition(t);if(!r)return[];let o=new Set;for(let i of e)i.derived||((i.creates??[]).includes(t)&&o.add(i.name),Bo(n,i).includes(t)&&Vo(i,r).length>0&&o.add(i.name));return[...o]}function Gd(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=o.kind,s=Zd(i);if(t.has(s))continue;let a=new Set((o.keptInStep??[]).filter(h=>je(o).includes(h))),d=Ld(n,e,i),u=Ko(je(o).filter(h=>d.includes(h)||a.has(h)),qt(o),h=>h);if(u.length===0)continue;let l=at(n,e).get(i),f=Object.fromEntries(je(o).flatMap(h=>!u.includes(h)&&l?.get(h)?.length?[[h,l.get(h)]]:[])),c=o.fields.shape,p=H(o,i),g=u.map(h=>wt(o,h).toLowerCase());r.push({name:s,derived:{kind:i,act:"edit"},idempotent:!0,title:`Change the ${p}`,description:`Change what was set when this ${p} was made: ${g.join(", ")}.`,subject:{kinds:[i],arg:"id"},writes:u,...Object.keys(f).length>0?{writtenBy:f}:{},...u.some(h=>Fd(c[h]))?{clearable:u.filter(h=>Fd(c[h]))}:{},input:gn({id:Te([i]),...Object.fromEntries(u.map(h=>[h,X(Mf(c[h]))]))}),describe:(h,v)=>Pf(o,c,u,h,v),apply(h,v){let y={};for(let x of u){let $=v[x];$===null?y[x]=void 0:$!==void 0&&(y[x]=$)}if(Object.keys(y).length===0)throw new se(`Nothing to change \u2014 give at least one of ${g.join(", ")} a value.`,"invalid");h.patchNode(v.id,y)}})}return r}function Pf(n,e,t,r,o){let i=o.getNode(r.id),s=i?K(n,i):"a record",a=t.filter(d=>r[d]!==void 0).map((d,u)=>{let l=r[d],f=qn(d),c=f!==void 0&&f in e,p=wt(n,c?f:d);return`the ${p===p.toUpperCase()?p:Ai(p)}${u===0?` of ${s}`:""} to ${c?l?`repeat ${Ef(l)}`:"stop repeating":Kd(n,e[d],d,l)}`});return a.length===0?`Changed nothing on ${s}`:`Changed ${a.length>1?`${a.slice(0,-1).join(", ")} and ${a.at(-1)}`:a[0]}`}var Ef=n=>`every ${(n.interval??1)>1?`${n.interval} ${n.every}s`:n.every}`;function Kd(n,e,t,r){if(r===null||r===""||Array.isArray(r)&&r.length===0)return"nothing";let o=n.display?.format?.[t];try{if(o)return String(o(r))}catch{}if(Vn(r).length>0)return Vn(r).map(i=>i.name).join(", ");if(Un(e))return Array.isArray(r)&&r.length>1?`${r.length} linked records`:"a linked record";if(Array.isArray(r))return r.map(i=>Kd(n,e,t,i)).join(", ");if(typeof r=="boolean")return r?"yes":"no";if(typeof r=="number"){let i=Lo(e);return i?zd(r,i):Zo(e)==="duration"?`${r>=60?`${Math.floor(r/60)} h `:""}${r%60||r<60?`${r%60} min`:""}`.trim():String(r)}if(typeof r!="string")return"a new value";if(yr.test(r))return Oe(r);if(mt.test(r))return vr(r);for(let i=D(e);i;i=D(i.innerType))if(i.type==="enum")return G(r);return`\u201C${Nd(r,60)}\u201D`}function Fd(n){return n._zod?.def?.type==="optional"}function Mf(n){let e=n;for(let t=0;t<4;t++){let r=e._zod?.def;if((r?.type==="default"||r?.type==="prefault")&&r.innerType)e=r.innerType;else break}return e}function Ht(n,e){return n.filter(t=>!t.derived&&(t.creates??[]).includes(e)).map(t=>t.name)}function Yt(n,e,t){if(!t.derived)return;let r=t.derived.act;return r==="edit"||r==="skip"||r==="detach"||r==="split"||r==="connect"||r==="disconnect"?Cd(n,e,t.derived.kind):Ht(e,t.derived.kind)}function zf(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=o.kind,s=H(o,i),a=(u,l)=>{let f=u.getNode(String(l));return f?K(o,f):String(l)},d=Te([i]);for(let[u,l,f,c]of[["remove","Remove",`Remove the ${s}`,`Take this ${s} out of the graph, with every tie it has. Undo puts it back.`],["archive","Archive",`Archive the ${s}`,`Set this ${s} aside, with its ties and history kept.`],["unarchive","Bring back","Bring it back",`Bring this archived ${s} back.`],["merge","Merge",`Merge into another ${s}`,`The other takes this ${s}'s ties, and this one is archived.`],["leave-alone","Leave alone","Leave this one alone",`Nothing automated changes this ${s}: tidying passes it by until you allow it again.`],["allow-tidying","Allow tidying of","Allow tidying again",`Let tidying change this ${s} again.`]]){let p=`${u}-${i}`,g=u==="leave-alone"||u==="allow-tidying";t.has(p)||!g&&u!=="remove"&&o.archives===!1||g&&o.tidying==="never"||r.push({name:p,derived:{kind:i,act:u},title:f,description:c,subject:{kinds:[i],arg:"id"},...u==="remove"?{destructive:!0}:{},idempotent:!0,input:Me(u==="merge"?{id:d,into:d}:{id:d}),describe:(h,v)=>{let y=u==="remove"&&v.getNode(String(h.id)),x=y?new Set(Object.values(y).flatMap(_=>Vn(_).map(A=>A.href))).size:0,$=u==="merge"&&a(v,h.id)===a(v,h.into),k=_=>$?`${a(v,_)} (${String(_)})`:a(v,_);return`${l} ${k(h.id)}${u==="merge"?` into ${k(h.into)}`:""}${x?` and its ${x} file${x>1?"s":""}`:""}`},apply:g?(h,v)=>h.patchNode(String(v.id),{[Yn]:u==="leave-alone"?!0:void 0}):(h,v)=>h[`${u}Node`](v.id,v.into)})}}return r}function Uo(n,e){return[...Gd(n,e),...zf(n,e),...Id(n,e),...jd(n,e)]}var Nf=n=>({$made:n}),Jt=n=>typeof n=="object"&&n!==null&&Object.keys(n).join()==="$made"&&Number.isInteger(n.$made)&&n.$made>=0,If=(n,e)=>Object.fromEntries(Object.entries(n.args??{}).map(([t,r])=>[t,Array.isArray(r)?r.map(e):e(r)])),Bd=n=>Object.values(n.args??{}).some(e=>Jt(e)||Array.isArray(e)&&e.some(Jt)),Vd=(n,e,t)=>({...n,args:If(n,r=>{if(!Jt(r))return r;let o=r.$made<t?e[r.$made]:void 0;if(o===void 0)throw new Error(`\u201C${n.name}\u201D names the record call ${r.$made+1} makes, and no call before it made that record.`);return o})});var Tf=500,jf=120,Df=50,Ff=200,Ud=4e3,Lf=["model","suggestion","interaction","actor","run"],Wd=n=>typeof n=="string"&&n.length>0&&n.length<=jf,Zf=n=>typeof n=="string"&&n.length<=240&&n.lastIndexOf("#")>0&&n.lastIndexOf("#")<n.length-1,Cf=n=>{let e=JSON.stringify(n);return e===void 0?void 0:JSON.parse(e)};function dt(n){if(n===void 0)return;let e=n&&typeof n=="object"&&!Array.isArray(n)?n:{},t=typeof e.basis=="string"?e.basis.trim():"",r={basis:t},o=t!==""&&t.length<=Tf;for(let i of Object.keys(e)){let s=e[i];i==="basis"||s===void 0||(i==="model"&&typeof s=="string"&&(s=s.trim()),i==="confidence"?o&&=typeof s=="number"&&s>=0&&s<=1:Lf.includes(i)?o&&=Wd(s):i==="evidence"?o&&=Array.isArray(s)&&s.length<=Df&&s.every(Wd):i==="read"?o&&=Array.isArray(s)&&s.length<=Ff&&s.every(Zf):o&&=i!=="__proto__"&&i!=="constructor"&&i!=="prototype"&&(s=Cf(s))!==void 0,o&&(r[i]=s))}if(!o)throw new z("A lineage is { basis: 1 to 500 characters, confidence?: 0 to 1, model?, suggestion?, interaction?, actor?, run?: 1 to 120 characters, evidence?: up to 50 ids, read?: up to 200 <id>#<field> }");if(JSON.stringify(r).length>Ud)throw new z(`A lineage is at most ${Ud} characters written out.`);return r}var Pn="keep-link";function qd(n){let e=(t,r)=>{let o=t.getNode(r);return o?K(n.tryDefinition(o.kind),o):r};return{name:Pn,title:"Keep this link",input:Me({kind:L(),from:L(),to:L()}),describe:(t,r)=>`Keep the link from ${e(r,t.from)} to ${e(r,t.to)}`,apply(t,r){let{kind:o,from:i,to:s}=r;if(!t.graph.getNode(i)||!t.graph.getNode(s)){let d=N({kind:o,from:i,to:s});throw new U(d,`Cannot remove missing edge ${d}`)}let a=t.graph.edgesOfKind(o,{archived:"all"}).find(d=>d.from===i&&d.to===s)??{kind:o,from:i,to:s};t.removeEdge(a),t.addEdge(a)}}}var Wo=(n,e)=>[...n].filter(t=>!t.derived&&t.name!==Pn&&typeof e=="string"&&(t.connects?.includes(e)||t.severs?.includes(e))).map(t=>t.name);var Hd=["kind-unknown","node-shape","edge-dangling","edge-disallowed","rule-error","rule-budget"];function Yd(n,e){let t=jt(n,e);return t&&[...t.fields].filter(Boolean)}function Gf(n,e,t){return n.tryDefinition(e)?.fields?.shape?.[t]}function Xt(n,e){try{return K(n.tryDefinition(e.kind),e)}catch{return typeof e.label=="string"?e.label:"A record"}}var Kf=n=>`${n.kind}:${n.from}->${n.to}`,Qt=(n,e)=>n<e?-1:n>e?1:0;function Jd(n,e,t={}){let{schema:r}=n,o=[],i=new Map;for(let c of e.nodes)i.has(c.id)||i.set(c.id,c);let s=c=>e.edges.filter(p=>p.from===c||p.to===c),a=c=>({action:"drop",primitives:[...s(c.id).filter(p=>i.has(p.from)&&i.has(p.to)).map(p=>({op:"remove-edge",edge:p})),{op:"remove-node",node:c}]}),d=new Set;for(let c of[...i.values()].sort((p,g)=>Qt(p.id,g.id))){if(!r.tryDefinition(c.kind)){d.add(c.id),o.push({code:"kind-unknown",id:c.id,message:`${Xt(r,c)} is a kind of record this app no longer has`,repair:a(c)});continue}let p=Yd(r,c);if(p===void 0)continue;let g=Xt(r,c),h=new Map,v=p.length>0;for(let y of p){if(y==="id"||y==="kind"){v=!1;continue}let x=Gf(r,c.kind,y),$=x?x.safeParse(void 0):{success:!0,data:void 0},k=r.tryDefinition(c.kind)?.defaults;!$.success&&x&&k&&Object.hasOwn(k,y)&&($=x.safeParse(k[y])),$.success?$.data===void 0?h.set(y,{action:"clear",value:ue}):h.set(y,{action:"coerce",value:$.data}):v=!1}if(v){let y={...c};for(let[x,$]of h)$.value===ue?delete y[x]:y[x]=$.value;Yd(r,y)!==void 0&&(v=!1)}if(p.length===0){o.push({code:"node-shape",id:c.id,message:`${g} does not fit what ${c.kind} declares`,repair:a(c)});continue}for(let y of p){let x=h.get(y),$=v&&x?{action:x.action,primitives:[{op:"patch-node",id:c.id,before:{[y]:c[y]===void 0?ue:c[y]},after:{[y]:x.value}}]}:a(c);o.push({code:"node-shape",id:c.id,detail:y,message:`${g}: ${G(y)} does not fit what ${c.kind} declares`,repair:$})}}let u=new Set,l=[];for(let c of[...e.edges].sort((p,g)=>Qt(N(p),N(g)))){if(u.has(N(c)))continue;u.add(N(c));let p=Kf(c),g=i.get(c.from),h=i.get(c.to);if(!g||!h){o.push({code:"edge-dangling",id:p,message:"A link points at a record that is not there",repair:{action:"drop",primitives:[{op:"remove-edge",edge:c}]}});continue}l.push(c),!(d.has(g.id)||d.has(h.id))&&(r.edgeAllowed(c.kind,g.kind,h.kind)||o.push({code:"edge-disallowed",id:p,message:`${Xt(r,g)} \u2192 ${Xt(r,h)}: this app does not allow that link between them`,repair:{action:"drop",primitives:[{op:"remove-edge",edge:c}]}}))}let f=n.invariants??[];if(f.length>0){let c=Q.from(r,{nodes:[...i.values()],edges:l},{validate:!1}),p=new Set,g;try{g=kn(c,f,t.invariantOptions??{})}catch{g=[{invariant:"rules",status:"could-not-judge",label:"The rules",message:"The rules could not be judged",nodeIds:[],repairs:[]}]}for(let h of g){let v=h.status==="could-not-judge"?"rule-error":h.status==="over-budget"?"rule-budget":void 0;if(!v)continue;let y=h.subjectId??h.invariant,x=`${v}|${y}|${h.invariant}`;p.has(x)||(p.add(x),o.push({code:v,id:y,detail:h.invariant,message:h.message}))}}return o.sort((c,p)=>Hd.indexOf(c.code)-Hd.indexOf(p.code)||Qt(c.id,p.id)||Qt(c.detail??"",p.detail??""))}var ct=()=>globalThis.__graviewWatch;function Xd(n){ct()?.store?.(n)}function er(n){n!==void 0&&ct()?.learn?.({ids:[n],words:[]})}function Qd(n,e){ct()?.refused?.({...n,...e===void 0?{}:{author:e}})}function qo(n,e){let t=ct();if(!t?.refusedInput)return;let r=n.issues.map(o=>`${o.path.map(String).join(".")}: ${o.message}`).join("; ");t.refusedInput({mutation:n.mutation,message:r,...e===void 0?{}:{author:e}})}function Bf(n,e){n instanceof pe&&qo(n,e)}function Vf(n,e,t){ct()?.seat?.(n,e,t)}function Yo(n,e){if(typeof n=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(n))return n;let t=new Date(n).getTime();if(Number.isNaN(t))throw new Error(`Not a day: ${String(n)}`);return ee(e,t)}var Ho=15*6e4;function ec(n=Date.now(),e){let t=new Date(n).getTime(),r=yt(e),o=ee(r,t),i=new Date(Date.parse(`${o}T00:00:00Z`));if(i.setUTCDate(i.getUTCDate()+1),!r)return i.getTime()-t;let s=ki(i.toISOString().slice(0,10),0,r);for(;ee(r,s)===o;)s+=Ho;for(;ee(r,s-Ho)!==o;)s-=Ho;return s-t}function Uf(n,e){let t,r=()=>{t=setTimeout(()=>{let o=n.tick(new Date);r(),e?.(o)},ec(Date.now(),n.timeZone)+1e3),t.unref?.()};return r(),()=>clearTimeout(t)}var nr=class extends z{constructor(e){super(`This is the app as it stood${e.at?` at ${e.at}`:" at the start"}: the past is read, never changed`),this.name="PastError"}},Jo="preview",F=(n,e)=>e===void 0?{}:{[n]:e},en={kind:"human"},nc={kind:"system"},oc={kind:"system",id:"modules",name:"Modules"},tc=n=>n.mutation===null&&n.undoes===void 0;function Xo(n,e){return`${n.invariant}|${n.subjectId??""}|${n.line||e?.has(n.invariant)?n.label:n.message}`}var Wf=new Set(["remove","archive","unarchive","merge"]),qf={has:()=>!0},ic=n=>new Set(n.filter(e=>e.shape).map(e=>e.name));function sc(n,e,t){let r=ic(n),o=f=>Xo(f,r),i=new Set(e.map(o)),s=new Set(t.map(o)),a=t.filter(f=>!i.has(o(f))),d=e.filter(f=>!s.has(o(f)));if(a.length===0||d.length===0)return{introduces:a,resolves:d};let u=f=>f.subjectId&&Xo(f,qf),l=d.map(u);return{introduces:a.filter(f=>{let c=u(f)?l.indexOf(u(f)):-1;return c<0||(l[c]=null,!1)}),resolves:d.filter((f,c)=>l[c]!==null)}}var En=class extends Error{constructor(t,r){super(`Op "${t.id}" (${t.intent}) could not be applied: ${r instanceof Error?r.message:String(r)}`,{cause:r});this.op=t;this.name="ReceiveError"}},tr=class extends z{constructor(t,r){let o=So(t,r);super(`Unknown mutation "${t}"${o?` \u2014 did you mean "${o}"?`:""}`,`Registered: ${r.join(", ")||"(none)"}`);this.mutation=t;this.name="UnknownMutationError",this.nearest=o}nearest},rc=n=>new Map(n.map(e=>[e.id,e.batch]));function Hf(){let n=globalThis.crypto,e=new Uint8Array(6);if(n?.getRandomValues)n.getRandomValues(e);else for(let t=0;t<e.length;t++)e[t]=Math.floor(Math.random()*256);return[...e].map(t=>t.toString(36).padStart(2,"0")).join("")}var Qo=class n{schema;graph;log;mutations=new Map;keeper;typer;invariants;invariantOptions;policy;publishing;intelligence;may=new Map;by;declaredModules;startingModules;projected;nextId;now;validate;mintBatch;batchTag;counter=0;opCount=0;quiet=0;rehearsing=!1;suggesting=!1;ticked;timeZone;past;pastEvery;listeners=new Set;constructor(e){this.pastEvery=Math.max(1,e.pastEvery??64),this.past=e.past,this.schema=e.schema,this.invariants=e.invariants??[],this.invariantOptions=e.invariantOptions??{},this.timeZone=e.timeZone,this.timeZone&&(this.ticked={day:ee(this.timeZone),on:ee(this.timeZone)}),this.policy=e.policy,this.publishing=e.publishing,this.by=e.principal??en,this.intelligence=e.intelligence??[];for(let i of e.intelligence??[])i.may&&this.may.set(i.name,new Set(i.may));this.declaredModules=e.modules,this.startingModules=e.enabledModules,this.nextId=e.ids??(()=>`op${++this.opCount}`),this.now=e.now??(()=>new Date().toISOString()),this.validate=e.validate??!0;let t=Hf();this.batchTag=e.batchIds?void 0:t,this.mintBatch=e.batchIds??(i=>`${i}:${t}:${++this.counter}`);for(let i of e.past?[]:e.mutations??[]){if(this.mutations.has(i.name))throw new z(`Duplicate mutation "${i.name}"`);this.mutations.set(i.name,i)}for(let i of e.past?[]:Uo(e.schema,e.mutations??[]))this.mutations.set(i.name,i);!e.past&&!this.mutations.has(Pn)&&(this.keeper=qd(e.schema),this.mutations.set(Pn,this.keeper));let r=F("horizon",e.horizon),o={validate:this.validate};if(e.log){this.log=$n.from(e.log,e.epochs,r);let i=this.log.lastEpoch();this.graph=e.snapshot?Q.from(e.schema,e.snapshot,o):this.log.fold(e.schema,{...o,...i?{from:i}:{}})}else this.log=$n.from([],e.epochs??(e.snapshot?[{seq:e.horizon??0,base:e.snapshot}]:[]),r),this.graph=Q.from(e.schema,e.snapshot??{nodes:[],edges:[]},o);e.past||(this.countPastTheLog(),Xd(this))}stillNow(){if(this.past)throw new nr(this.past)}countPastTheLog(){this.countPast(this.log.all())}countPast(e){let t=r=>{let o=/(\d+)$/.exec(r);return o?Number(o[1]):0};for(let r of e)this.counter=Math.max(this.counter,t(r.batch)),this.opCount=Math.max(this.opCount,t(r.id));this.log.horizon>0&&(this.opCount=Math.max(this.opCount,this.log.length))}get servedSeq(){return this.log.length}get publishedSeq(){return W.seq?.(this)}get publisher(){return W.act?.(this,this.mutations)}get modules(){let e=this.log.all(),t=e.at(-1)?.id,r=this.projected;if(r&&r.length===e.length&&r.last===t)return r.projection;let o,i=0;r&&r.length<=e.length&&(r.length===0||e[r.length-1]?.id===r.last)&&(o=r.said,i=r.length);for(let a=e.length-1;a>=i;a--){let d=e[a].enabledModules;if(d!==void 0){o=d;break}}o??=this.log.horizonEpoch()?.enabledModules;let s=r&&o===r.said?r.projection:Io(this.declaredModules,o??this.startingModules);return this.projected={projection:s,length:e.length,last:t,said:o},s}setEnabledModules(e,t={}){this.stillNow();let r=this.modules.enabled,o=Io(this.declaredModules,e).enabled,i=[...r].filter(l=>!o.has(l)),s=[...o].filter(l=>!r.has(l));if(i.length===0&&s.length===0)return;let a=l=>l.map(f=>{let c=this.declaredModules?.[f]?.kinds??[];return c.length>0?c.map(p=>ae(this.schema,p)).join(", "):f}).join(", "),d=[i.length>0?`Turn off ${a(i)}`:"",s.length>0?`turn on ${a(s)}`:""].filter(Boolean).join("; "),u={id:this.nextId(),seq:this.log.length,batch:t.batch??this.mintBatch("batch"),author:oc,intent:ln(d),mutation:null,primitives:[],reads:[],writes:[],at:this.now(),...F("via",t.via),enabledModules:[...o].sort()};return this.log.append(u),this.notify(Jn,[u]),u}mutation(e){let t=this.mutations.get(this.spelled(e))??(e===Ct?this.publisher:void 0);if(!t)throw new tr(e,[...this.mutations.keys()]);if(this.mutationDisabled(t))throw new z(`Mutation "${e}" belongs to a module this workspace has turned off`,`Enabled modules: ${[...this.modules.enabled].join(", ")||"(none)"}`);return t}spelled(e){return e===Zt&&!this.typer&&ie.typeText&&!this.past&&!this.mutations.has(e)&&this.mutations.set(e,this.typer=ie.typeText(this)),this.mutations.has(e)?e:Gt(e,this.mutations.keys())??e}spelledCall(e){let t=this.spelled(e.name);return t===e.name?e:{...e,name:t}}mutationDisabled(e){return this.modules.disabledMutations.has(e.name)?!0:e.derived!==void 0&&this.modules.disabledKinds.has(e.derived.kind)}allMutations(){return[...this.mutations.values(),...this.publisher?[this.publisher]:[]].filter(e=>e!==this.keeper&&e!==this.typer&&!this.mutationDisabled(e))}viaOf(e,t,r){if(e!==void 0&&e===this.keeper){let o=Wo(this.mutations.values(),t?.args.kind);if(o.length>0)return o;let i=[...this.mutations.values()];return[...new Set(i.filter(s=>s.derived?.relation===t?.args.kind).flatMap(s=>Yt(this.schema,i,s)??[]))]}if(e!==void 0&&e===this.typer){let o=t?.args.node,i=r===void 0||B(r)?this.graph:Se(this,r).graph,s=a=>!this.mutationDisabled(a)&&(a.allowedOn===void 0||typeof o=="string"&&a.allowedOn(i,o));return ie.via(this.schema,[...this.mutations.values()],this.subjectKindOf(t,r),t?.args.field,s)}if(e?.derived)return Yt(this.schema,[...this.mutations.values()],e)}moved(e,t){return sc(this.allInvariants(),e,t)}allInvariants(){return this.invariants.filter(e=>this.invariantEnabled(e))}invariantEnabled(e){if(this.modules.disabledInvariants.has(e.name))return!1;if(e.scope!=="graph"){let t=e.scope.kind;if(this.modules.disabledKinds.has(t))return!1}return!0}permits(e,t=en){if(e=this.spelledCall(e),this.past)return{ok:!1,refusal:{mutation:e.name,wouldNeed:[],message:"Nothing changes while you look back."}};let r=this.refusesAgent(e,t)??this.namesTurnedOff(e,t);if(r)return{ok:!1,refusal:r};let o=this.mutations.get(e.name)??(e.name===Ct?this.publisher:void 0);if(o&&o===this.publisher)return W.verdict(this,t);let i=o!==void 0&&o===this.keeper&&Wo(this.mutations.values(),e.args.kind).length===0,s=i?e.args.from:o?.subject&&e.args[o.subject.arg],a=this.subjectKindOf(e,t),d=ke(this.policy,t,e.name,a,this.viaOf(o,e,t),typeof s=="string"?s:void 0,this.words,()=>{let u=T(t).id,l=this.namedIn(e,!1);try{for(let f of On(this.graph,o,e.args,this.sighted(t)).primitives)"edge"in f&&f.edge.from!==u&&f.edge.to!==u&&l.push(f.edge.to)}catch{}return l},o!==void 0&&(o.derived!==void 0||o===this.typer||i)?()=>this.madeBy(o,e,s):void 0,o?.derived!==void 0&&Wf.has(o.derived.act));return!d.ok||!o?.derived||!this.repeatMakes(o,e,s,t)?d:ke(this.policy,t,e.name,a,Ht([...this.mutations.values()],o.derived.kind),typeof s=="string"?s:void 0,this.words)}repeatMakes(e,t,r,o){let i=e.derived.act;if(i!=="detach"&&i!=="split")return!1;let s=this.schema.tryDefinition(e.derived.kind);if(!s)return!1;let a=typeof r=="string"?(B(o)?this.graph:Se(this,o).graph).getNode(r):void 0;return Td(i,t.args,a,Co(s))}madeBy(e,t,r){let o=ce(this.log),i=o.creatorOf(r),s=t.args.into;if(!(e.derived?.act==="merge"&&typeof s=="string"&&o.creatorOf(s)!==i))return i}namedIn(e,t=!0){let r=this.mutations.get(e.name);if(!r)return[];let o=r.subject?.arg;return[...t&&o?[e.args[o]]:[],...ot(r.input).flatMap(s=>s.name===o?[]:[e.args[s.name]])].flat().filter(s=>typeof s=="string")}refuse(e,t,r=!this.rehearsing){throw r&&Qd(e,t),new He(e)}get words(){return{act:e=>this.mutations.get(e)?.title,noun:e=>H(this.schema.tryDefinition(e),e)}}refusesAgent(e,t){if(t.kind!=="agent"||t.id===void 0)return;let r=this.may.get(t.id);if(!r||r.has(e.name))return;let o=s=>`\u201C${this.mutations.get(s)?.title??s}\u201D`,i=[...r].map(o);return{mutation:e.name,message:`${t.id} may not ${o(e.name)} here: it was declared able to ${i.length===0?"do nothing else":i.join(", ")}.`,wouldNeed:[]}}namesTurnedOff(e,t=nc){let r=this.modules.disabledKinds;if(r.size===0||!B(t))return;let o=this.mutations.get(e.name);if(!(!o||!this.namedIn(e).some(i=>r.has(this.graph.getNode(i)?.kind))))return{mutation:e.name,message:`\u201C${o.title??e.name}\u201D names a record of a module this workspace has turned off.`,wouldNeed:[]}}sighted(e){let t={me:e&&T(e).id,everHeld:o=>ce(this.log).kindOf(o)!==void 0,keeps:(o,i)=>rd(this.policy?.sees,o,i)};if(e===void 0||!Qe(this,e))return t;let r=it(this,e);return{...t,seen:Se(this,e).graph,keepUnchanged:o=>j(o,r),seesInFull:ld(this,e)}}collaborative(e,t){return ie.collaborative?.(this.schema,this.graph.getNode(e)?.kind,t)??!1}asSplices(e,t){return ie.asSplices?ie.asSplices(this,e,t):e}missingFor(e,t=en){e=this.spelledCall(e);let r=this.mutations.get(e.name),o=new Set(this.namedIn(e));if(!r||o.size===0)return;let i=Se(this,t).graph;for(let s of o)if(!i.has(s))return new U(s,`\u201C${r.title??e.name}\u201D names a record that is not there.`)}mayAdminister(e,t=en){let r=this.modules.administered.get(e);return r?(r.mutations??[]).some(o=>{let i=this.mutations.get(o);return!!i&&go(i).some(s=>ke(this.policy,t,o,s,this.viaOf(i)).ok)}):!1}seenBy(e,t){return Se(this,e,t)}sees(e,t){return this.graph.has(t)&&it(this,e)(t)}labels;resolveRef(e,t,r=en){let o=(this.policy?.sees?.length??0)>0,i=c=>!o||this.sees(r,c),s=this.graph.getNode(t);if(this.labels??=new Ut(this.graph),s&&i(t))return{ok:!0,id:t,label:this.labels.labelOf(t)??t,by:"id"};let a=this.labels.lookup(e.kinds,t),d=c=>{let p=c.filter(g=>!this.graph.isArchived(g));return p.length?p:c},u=d(a.exact.filter(i)),l=u.length>0,f=(l?u:d(a.prefix.filter(i))).map(c=>({id:c,kind:this.graph.getNode(c).kind,label:this.labels.labelOf(c)??c})).sort((c,p)=>c.label<p.label?-1:c.label>p.label?1:c.id<p.id?-1:1);return f.length===1?{ok:!0,id:f[0].id,label:f[0].label,by:l?"label":"prefix"}:wd(this.schema,e,t,f)}kindsKeptFrom(e=en){let t=new Set;for(let[o,i]of this.modules.administered)if(!this.mayAdminister(o,e))for(let s of i.kinds??[])t.add(s);let r=this.policy?.sees??[];if(r.length>0&&!B(e)){let o=new Set(this.permittedMutations(e).flatMap(s=>s.creates??[])),i=Ie(this);for(let s of this.schema.kinds)!r.some(d=>d.kinds.includes(s)&&xe(d,e)&&(!d.own&&!d.via||e.id!==void 0)&&(i||!tt(d)))&&!o.has(s)&&t.add(s)}return t}permittedMutations(e=en){let t=this.allMutations(),r=ho(this.policy,e,t.filter(s=>!s.derived&&s!==this.publisher)),o=this.publisher&&W.verdict(this,e).ok?[this.publisher]:[],i=t.filter(s=>s.derived!==void 0&&ke(this.policy,e,s.name,s.derived.kind,this.viaOf(s),T(e).id).ok);return[...r,...o,...i]}subjectKindOf(e,t=nc){let o=this.mutations.get(e.name)?.subject;if(!o)return;let i=e.args[o.arg];if(typeof i!="string")return o.kinds!=="*"&&o.kinds.length===1?o.kinds[0]:void 0;if(!(!B(t)&&!Se(this,t).graph.has(i)))return this.graph.getNode(i)?.kind}today(){return this.pinned()??(this.ticked&&this.ticked.on===ee(this.timeZone)?this.ticked.day:void 0)??(this.timeZone?ee(this.timeZone):void 0)}pinned(){let e=this.invariantOptions.context,t=this.invariantOptions.today??e?.today;return typeof t=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(t)?t:void 0}judging(e){let t=this.today(),r=ya(this.graph),o=e??this.invariantOptions.context,i=r&&!(o&&"linked"in o)?{...o,linked:r}:e,s=i??o,a=this.timeZone&&t!==void 0&&e===void 0&&!(s&&"today"in s)?{...s,today:t}:i;return{...this.invariantOptions,...a===void 0?{}:{context:a},...t===void 0?{}:{today:t}}}tick(e=new Date){let t=this.pinned();if(t!==void 0)return{day:t,was:t,appeared:[],cleared:[]};let r=Yo(e,this.timeZone),o=ee(this.timeZone);this.ticked&&(this.ticked={day:this.ticked.day,on:o});let i=this.today(),s=this.violations();this.ticked={day:r,on:o};let a=this.moved(s,this.violations());if(r!==i&&!this.rehearsing&&this.quiet===0)for(let d of this.listeners)d(Jn,[]);return{day:r,...i===void 0?{}:{was:i},appeared:a.introduces,cleared:a.resolves}}reread(){if(!(this.rehearsing||this.quiet>0))for(let e of this.listeners)e(Jn,[])}violations(e,t=this.graph){return kn(t,this.allInvariants(),this.judging(e)).map(r=>this.asking(r))}required=new Map;asking(e){if(!e.repairs.some(o=>o.missing===void 0))return e;let t=!1,r=e.repairs.map(o=>{if(o.missing!==void 0)return o;let i=this.requiredOf(o.mutation).filter(s=>o.args?.[s]===void 0);return i.length===0?o:(t=!0,{...o,missing:i})});return t?{...e,repairs:r}:e}requiredOf(e){let t=this.required.get(e);if(t)return t;let r=this.mutations.get(e)?.input?.shape??{},o=Object.entries(r).filter(([,i])=>typeof i?.safeParse=="function"&&!i.safeParse(void 0).success).map(([i])=>i);return this.required.set(e,o),o}wouldChange(e,t){try{return On(this.graph,this.mutation(e.name),e.args,this.sighted(t)).primitives.length>0}catch{return!0}}preview(e,t,r={}){e=this.spelledCall(e);let o=this.mutation(e.name),i=On(this.graph,o,e.args,this.sighted(r.author));return this.previewPrimitives(this.asSplices(i.primitives),{reads:i.reads,writes:i.writes,intent:i.intent,context:t})}previewAll(e,t={}){let{context:r,...o}=t;return{...this.rehearsal().applying(e,o,r),kept:!1}}rehearsal(){let e=Object.assign(Object.create(n.prototype),this),t=0;Object.assign(e,{graph:Q.from(this.schema,this.graph.snapshot(),{validate:this.validate}),log:$n.from(this.log.all(),this.log.epochs(),{horizon:this.log.horizon}),listeners:new Set,labels:void 0,nextId:()=>`${Jo}:${++t}`,mintBatch:()=>Jo,rehearsing:!0});let r=this.typer&&ie.typeText(e);return Object.assign(e,{typer:r,mutations:r?new Map(this.mutations).set(Zt,r):new Map(this.mutations)}),e}previewPrimitives(e,t){let r=this.violations(t.context),o=Q.from(this.schema,this.graph.snapshot()),i=o.applyPrimitives(e,{restoring:t.restoring===!0}),s=kn(o,this.allInvariants(),this.judging(t.context));return{diff:i,primitives:e,reads:t.reads,writes:t.writes,intent:t.intent,...this.moved(r,s),violationsAfter:s}}apply(e,t={}){return this.applyAll([e],t)}applyAll(e,t={}){return this.applying(e,t)}applying(e,t,r){let o=e.map(w=>this.spelledCall(w));this.stillNow();let i=t.batch??this.mintBatch("batch"),s=t.author??this.by,a=dt(t.lineage),d=[],u=[],l=new Set,f=new Set,c=[],p=this.violations(r),g=this.graph.snapshot(),h=this.log.length,v=w=>{let R=this.policy||this.publisher&&w.name===Ct?this.permits(w,s):void 0;R&&!R.ok&&this.refuse(R.refusal,s.id)},y=w=>{let R=this.refusesAgent(w,s)??this.namesTurnedOff(w,s);R&&this.refuse(R,s.id)},x=o.map(Bd);o.forEach((w,R)=>x[R]||v(w)),o.forEach((w,R)=>x[R]||y(w));let $=$o(s);$&&this.refuseDeclined(o,s),this.rehearsing||er(s.id);let k=[],_=[],A=new Map,m=w=>typeof w=="string"?A.get(w)??w:Array.isArray(w)?w.map(m):w;try{for(let[w,R]of o.entries()){let{mintedHint:P,...M}=R,E=A.size?{...M,args:Object.fromEntries(Object.entries(M.args).map(([C,q])=>[C,m(q)]))}:M,te=x[w]?Vd(E,k,w):E;x[w]&&(v(te),y(te));let Ze=this.mutation(te.name);if(Ze===this.publisher){let C=W.op(this,{id:this.nextId(),at:this.now()},te,i,s,t);d.push(C),c.push(C.intent);continue}let an=this.missingFor(te,s);if(an)throw an;let Z;try{Z=On(this.graph,Ze,te.args,{...this.sighted(s),hint:P})}catch(C){throw C instanceof pe&&!this.rehearsing&&qo(C,s.id),C}if(P!==void 0&&Z.firstMinted!==void 0&&Z.firstMinted!==P&&A.set(P,Z.firstMinted),$){let C=Xa(this.schema,this.graph,Z.primitives,this.authorName(s),{declaration:!this.suggesting});C&&this.refuse({mutation:te.name,message:C,wouldNeed:[]},s.id)}if(Z.primitives.length===0)continue;_[w]=Z.firstMinted,k[w]=Z.primitives.find(C=>C.op==="add-node")?.node.id;let le={id:this.nextId(),seq:this.log.length,batch:i,author:s,intent:Ze.describe!==void 0?Z.intent:t.intent??Z.intent,...F("batchIntent",t.intent),mutation:te,primitives:this.asSplices(Z.primitives,t.base).map(Nn),reads:Z.reads,writes:Z.writes,...Ze.describe!==void 0&&Z.described&&Z.described.length>0?{described:Z.described}:{},...F("mergedInto",Z.mergedInto),at:this.now(),...F("via",t.via),...F("lineage",a)};this.graph.applyPrimitives(le.primitives),this.log.append(le),d.push(le),u.push(...le.primitives);for(let C of le.reads)l.add(C);for(let C of le.writes)f.add(C);c.push(le.intent)}}catch(w){throw this.putBack(g,h),w}let b=Ne(g,this.graph.snapshot(),u);this.admitted(t,d,u,b,g,h);let S=this.violations(r);return this.notify(b,d),{batch:i,ops:d,..._.length>0?{minted:_}:{},diff:b,primitives:u,reads:[...l],writes:[...f],intent:t.intent??c.join("; "),...this.moved(p,S),violationsAfter:S}}receive(e,t={}){this.stillNow();let r=new Set(this.log.all().map(d=>d.id)),o=e.filter(d=>!r.has(d.id));if(o.length===0)return[];let i=this.graph.snapshot(),s=[];if(!t.applied)for(let d of o)try{this.graph.applyPrimitives(d.primitives,{restoring:d.undoes!==void 0})}catch(u){throw this.graph.load(i),new En(d,u)}let a=this.log.length;for(let[d,u]of o.entries()){let l=In({...u,seq:a+d});this.log.append(l),s.push(l)}return this.countPast(s),this.notify(Ne(i,this.graph.snapshot(),o.flatMap(d=>d.primitives)),s),s}append(e,t={}){if(this.stillNow(),e.length===0)return[];let r=new Set(this.log.all().map(a=>a.id)),o,i=e.map((a,d)=>{let u=a.primitives.map(Nn),l={id:a.id??this.nextId(),seq:this.log.length+d,batch:a.batch??t.batch??(o??=this.mintBatch("batch")),author:a.author,intent:a.intent,...F("batchIntent",a.batchIntent),mutation:a.mutation??null,primitives:u,reads:a.reads??[],writes:a.writes??[...new Set(u.flatMap(Ae))],at:a.at??this.now(),...F("undoes",a.undoes),...F("via",a.via),...F("lineage",dt(a.lineage))};if(r.has(l.id))throw new z(`Op "${l.id}" (${l.intent}) is already in the log`,"A host-made op needs an id of its own; leave `id` out and the store mints one.");return r.add(l.id),l}),s=this.graph.snapshot();for(let a of i)try{this.graph.applyPrimitives(a.primitives,{restoring:a.undoes!==void 0})}catch(d){throw this.graph.load(s),new En(a,d)}for(let a of i)this.log.append(a);this.countPast(i);for(let a of i)er(a.author.id);return this.notify(Ne(s,this.graph.snapshot(),i.flatMap(a=>a.primitives)),i),i}applyPrimitives(e,t={}){this.stillNow();let r=t.batch??this.mintBatch("batch"),o=t.author??this.by,i=this.violations(),s=this.graph.snapshot(),a=t.intent??"Apply a change",d=dt(t.lineage),u=this.asSplices(e,t.base).map(Nn),l=[];if(u.length>0){let p={id:this.nextId(),seq:this.log.length,batch:r,author:o,intent:a,mutation:null,primitives:u,reads:[],writes:[...new Set(u.flatMap(Ae))],at:this.now(),...F("via",t.via),...F("lineage",d)};this.graph.applyPrimitives(p.primitives),this.log.append(p),l.push(p),er(o.id)}let f=this.violations(),c=Ne(s,this.graph.snapshot(),u);return this.notify(c,l),{batch:r,ops:l,diff:c,primitives:u,reads:[],writes:l[0]?.writes??[],intent:a,...this.moved(i,f),violationsAfter:f}}findings(){return Jd({schema:this.schema,invariants:this.allInvariants()},this.graph.snapshot(),{invariantOptions:this.invariantOptions})}batches(){return this.log.batches()}canUndo(e){return et(this.log,typeof e=="string"?[e]:e)}previewUndo(e,t){let r=this.canUndo(e);if(!r.ok)return{ok:!1,check:r};let o=Ga(r.ops,this.log.all()),i=new Set;for(let s of r.ops)for(let a of s.writes)i.add(a);return{ok:!0,check:r,...this.previewPrimitives(o,{reads:[...new Set(r.ops.flatMap(s=>[...s.reads]))],writes:[...i],intent:`Undo: ${r.ops.map(s=>s.intent).join("; ")}`,restoring:r.ops.every(tc),...t===void 0?{}:{context:t}})}}undo(e,t={}){return this.undoing(e,t)}undoing(e,t){this.stillNow();let r=typeof e=="string"?[e]:e,o=t.author??this.by,i=(this.policy?.sees?.length??0)>0&&!B(o);if(i){let v=et(zo(Rn(this.log.all(),Vt(this,o)),()=>this.log.epochs()),r);if(!v.ok)throw new qe(v)}let s=this.canUndo(r);if(!s.ok)throw new qe(i?{ok:!1,ops:[],blockedBy:[],includeBatches:[],message:"Cannot undo on its own \u2014 a later change you cannot see depends on it, which only somebody who can see it can take back."}:s);let a=t.batch??this.mintBatch("undo"),d=dt(t.lineage),u=this.undoRefusal(s.ops,o);u&&this.refuse(u,o.id,!0);let l=this.graph.snapshot(),f=this.violations(),c=[],p=this.log.length;for(let{op:v,primitives:y}of wo(this.log.all(),s.ops)){let x={id:this.nextId(),seq:this.log.length,batch:a,author:o,intent:`Undo: ${v.intent}`,...F("batchIntent",t.intent),mutation:null,primitives:y,reads:v.reads,writes:v.writes,at:this.now(),undoes:v.id,...F("via",t.via),...F("lineage",d),...F("undoneLineage",v.lineage)};this.graph.applyPrimitives(x.primitives,{restoring:tc(v)}),this.log.append(x),c.push(x)}let g=Ne(l,this.graph.snapshot(),c.flatMap(v=>[...v.primitives]));this.admitted(t,c,c.flatMap(v=>[...v.primitives]),g,l,p);let h=this.violations();return this.notify(g,c),{batch:a,ops:c,diff:g,primitives:c.flatMap(v=>[...v.primitives]),reads:[...new Set(c.flatMap(v=>[...v.reads]))],writes:[...new Set(c.flatMap(v=>[...v.writes]))],intent:t.intent??c.map(v=>v.intent).join("; "),...this.moved(f,h),violationsAfter:h}}mayUndo(e,t=this.by){let r=this.canUndo(e);if(!r.ok)return{ok:!1,check:r};let o=this.undoRefusal(r.ops,t);return o?{ok:!1,refusal:o}:{ok:!0}}undoRefusal(e,t){if(this.policy||this.publisher)for(let r of e){let o=this.rootOf(r),i=T(o.author).id;if(!o.mutation){if(o.primitives.length===0)continue;if(this.policy&&!B(t)&&i!==T(t).id&&!this.grantsEveryAct(t))return{mutation:"undo",wouldNeed:[],message:`Not permitted to undo "${r.intent}": no act made it, so only whoever did may take it back.`};continue}let s=d=>JSON.stringify(d).includes(JSON.stringify(i)),a=i!==void 0&&i!==T(t).id&&!B(t)&&!s(o.mutation.args)&&s(o.primitives)?{ok:!1,refusal:{mutation:o.mutation.name,wouldNeed:[],message:"it was done as somebody else."}}:this.permits(o.mutation,t);if(!a.ok)return{...a.refusal,message:`Not permitted to undo "${r.intent}": ${a.refusal.message}`}}}rootOf(e){let t=e;for(let r=t.undoes===void 0?void 0:this.log.get(t.undoes);r!==void 0;r=t.undoes===void 0?void 0:this.log.get(t.undoes))t=r;return t}grantsEveryAct(e){let t=T(e);return(this.policy?.grants??[]).some(r=>xe(r,t)&&r.mutations==="*"&&(r.kinds===void 0||r.kinds==="*")&&!r.self&&!r.ownEnd)}authorName(e){return Hn(e,{graph:this.graph,schema:this.schema})}actMeanings(){return{act:e=>this.mutations.get(this.spelled(e)),has:e=>this.graph.has(e)}}refuseDeclined(e,t){let r=Ja(this.log.all(),e,this.actMeanings());r&&this.refuse({mutation:e[0].name,message:`${this.authorName(t)} may not make this again: a person declined it on ${r.at.slice(0,10)}.`,wouldNeed:[]},t.id)}putBack(e,t){this.graph.load(e),this.log.length>t&&this.log.truncate(t)}admitted(e,t,r,o,i,s){if(!e.admit||t.length===0)return;let a=this.graph.size;try{e.admit({ops:t,primitives:r,added:{nodes:o.addedNodes.length,edges:o.addedEdges.length},removed:{nodes:o.removedNodes.length,edges:o.removedEdges.length},changed:{nodes:o.changedNodes.length},nodesAfter:a.nodes,edgesAfter:a.edges})}catch(d){throw this.putBack(i,s),d}}redo(e,t={}){return this.undo(e,t)}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(e,t){if(!(this.quiet>0)&&!(t.length===0&&Aa(e)))for(let r of this.listeners)r(e,t)}rebase(e){this.stillNow();let t=new Set([...e.pending,...e.drop??[]]),r=this.log.all(),o=r.findIndex(h=>t.has(h.batch)),i=r.slice(o<0?r.length:o),s=this.log.horizon+(o<0?r.length:o),a=i.find(h=>!t.has(h.batch));if(a)throw new z(`Cannot rebase: op "${a.id}" (${a.intent}) comes after a pending batch and is neither pending nor dropped`,"While anything is pending, land the server's ops through rebase, so the log stays confirmed ops then pending ones.");let d=this.log.lastEpoch();if(d&&d.seq>s)throw new z(`Cannot rebase across an epoch: one begins at seq ${d.seq}, after pending op "${i[0].id}"`);let u=this.graph.snapshot(),l=[],f=[],c=[];this.quiet++;try{for(let x of[...i].reverse())this.graph.applyPrimitives(Ge(x),{restoring:!0,inPlace:!0});this.log.truncate(s);let h=new Set(this.log.all().map(x=>x.id));for(let x of e.confirmed){if(h.has(x.id))continue;try{this.graph.applyPrimitives(x.primitives,{restoring:x.undoes!==void 0})}catch(k){throw new En(x,k)}let $=In({...x,seq:this.log.length});this.log.append($),h.add(x.id),l.push($)}this.countPast(l);let v=ie.carried?.(i,l,e.pending),y=rc(i);for(let x of e.pending){let $=i.filter(k=>k.batch===x);if($.length!==0)try{f.push(...this.replay(x,$,v?.get(x),y))}catch(k){c.push({batch:x,error:k})}}}catch(h){this.log.truncate(s);for(let v of i)this.log.append(v);throw this.graph.load(u),h}finally{this.quiet--}let p=ze(u,this.graph.snapshot()),g=[...l,...f];return this.notify(p,g),{diff:p,confirmed:l,pending:f,refused:c}}adopt(e){this.stillNow();let t=new Set(e.drop??[]),r=(e.pending??[]).filter(p=>!t.has(p)),o=this.log.all(),i=this.graph.snapshot(),s={ops:[...o],epochs:[...this.log.epochs()],horizon:this.log.horizon},a=new Set(o.map(p=>p.id)),d=new Map(r.map(p=>[p,o.filter(g=>g.batch===p)]));if(e.log.length>0)this.log.replace(e.log,e.epochs,F("horizon",e.horizon));else{let p=e.horizon??0;this.log.replace([],e.epochs??[{seq:p,base:e.snapshot}],{horizon:p})}let u=[],l=[];this.quiet++;try{this.graph.load(e.snapshot),this.projected=void 0,this.countPastTheLog();for(let p of r){let g=d.get(p)??[];if(g.length!==0)try{u.push(...this.replay(p,g,void 0,rc(o)))}catch(h){l.push({batch:p,error:h})}}}catch(p){throw this.log.replace(s.ops,s.epochs,{horizon:s.horizon}),this.graph.load(i),this.projected=void 0,p}finally{this.quiet--}let f=this.log.all().filter(p=>!a.has(p.id)&&!u.includes(p)),c=ze(i,this.graph.snapshot());return this.notify(c,[...f,...u]),{diff:c,adopted:f,pending:u,refused:l}}replay(e,t,r,o=new Map){let i=t[0],s={author:i.author,batch:e,...F("intent",i.batchIntent),...F("via",i.via),...F("lineage",i.lineage)};if(i.undoes!==void 0){let a=t.map(u=>this.log.get(u.undoes??"")?.batch??o.get(u.undoes??"")),d=t.find((u,l)=>a[l]===void 0||!this.log.all().some(f=>f.batch===a[l]));if(d)throw new z(`What "${d.intent}" took back is no longer in the log`);return this.undoing([...new Set(a)],s).ops}return r?this.applying(r,s).ops:t.every(a=>a.mutation!==null)?this.applying(t.map(a=>a.mutation),s).ops:this.append(t.map(({seq:a,...d})=>d))}snapshot(){return this.graph.snapshot()}verify(){let e=this.log.lastEpoch();return kd(this.schema,this.log.opsFrom(e?.seq??0),this.graph.snapshot(),{validate:this.validate,...e?{base:e.base}:{}})}checkpoint(e={}){let t=this.log.all(),r;if(e.seq!==void 0)r=e.seq;else{let y=this.log.length-(e.keepOps??1e3),$=Date.parse(e.now??this.now())-(e.keepDays??90)*864e5,k=t.find(A=>Date.parse(A.at)>$),_=k?k.seq:this.log.length;r=Math.min(y,_)}let o=mo(this.publishing)?[this.publishedSeq??0,...W.previous?.(this)??[]]:[],i=[...e.pins??[],...o].filter(y=>Number.isInteger(y));for(i.length>0&&(r=Math.min(r,...i)),r=Math.min(Math.max(r,this.log.horizon),this.log.length);r>this.log.horizon&&r<this.log.length&&t[r-this.log.horizon].batch===t[r-1-this.log.horizon].batch;)r--;if(r<=this.log.horizon)return;let s=this.verify();if(!s.ok)throw new z(`Cannot compact a store that does not verify: ${s.reason}`);let{creators:a,removed:d,writers:u,...l}=this.log.checkpointAt(this.schema,r,{validate:this.validate}),f=new Set(l.base.nodes.map(y=>y.id)),{creators:c,removed:p}=od(this.log,r,y=>f.has(y)),g=ce(this.log),h=td(this.log,r,l.base.nodes,y=>j(y,x=>!f.has(x)&&g.kindOf(x)===void 0)),v=y=>y&&Object.keys(y).length>0;return{...l,...v(c)&&{creators:c},...p&&{removed:p},...v(h)&&{writers:h},...F("enabledModules",t.slice(0,r-this.log.horizon).reverse().find(y=>y.enabledModules)?.enabledModules??this.log.horizonEpoch()?.enabledModules),...F("publishedThrough",W.seq?.(this,r))}}compact(e){return this.stillNow(),this.log.compact(e)}};var Yf=n=>`lens:${n}`,Jf={hidden:[],removed:[],may:{views:!1,lenses:!1}};function Xf(n,e,t){return n.name!==void 0&&e.may.views?"view":n.declared&&e.may.lenses&&t.lens?"lens":null}var ac=["full","summary","glyph"],lt="view:",ni=(n,e)=>n.as===e.as&&(n.over??[n.kind]).includes(e.kind),Qf=n=>n.filter((e,t)=>!n.slice(0,t).some(r=>ni(r,e))),ep=n=>n.filter(e=>!e.hidden);function Re(n){return n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function ut(n,e){return`/${Re(n.tryDefinition(e)?.plural??`${e}s`)}`}function np(n,e,t){return`${ut(n,e)}/${encodeURIComponent(t)}`}function tp(n,e){return`/places/${encodeURIComponent(n)}${e?`?of=${encodeURIComponent(e)}`:""}`}function dc(n,e){return e.some(t=>t.as===n.as&&!ni(n,t))}function rp(n,e,t){return dc(n,e)?`${n.title} \xB7 ${(t.tryDefinition(n.kind)?.plural??`${n.kind}s`).toLowerCase()}`:n.title}var nn=(n,e,t="")=>`${n}|${e.cardinality}|${e.fidelity}|${t}`;function ei(n){switch(n){case"full":return["full","summary","glyph"];case"summary":return["summary","full","glyph"];case"glyph":return["glyph","summary","full"]}}function op(n){let e=new Map,t=[],r=[],o,i=[],s={arrange(a){return a!==void 0&&(o=a),s},arrangement:()=>o,home(a,d){return a!==void 0&&i.push({view:a,...d?.name!==void 0?{name:d.name}:{}}),s},homeView:()=>i.at(-1)?.view,homes:()=>i,register(a,d,u,l){let f={...l?.over?.[1]?{over:l.over}:{},...l?.hidden?{hidden:!0}:{},...l?.name?{name:l.name}:{},...l?.declared?{declared:!0}:{}},c={kind:a,cardinality:d.cardinality,fidelity:d.fidelity,view:u,...l?.title?{title:l.title}:{},...l?.across?{across:l.across}:{},...l?.beside?{beside:!0}:{},...f};if(r.push(c),!l?.beside&&!f.hidden&&e.set(nn(a,d),c),l?.title){let p=Re(l.title);e.set(nn(a,d,p),c),d.cardinality==="many"&&!t.some(g=>g.kind===a&&g.as===p)&&t.push({kind:a,title:l.title,as:p,...l.across?{across:l.across}:{},...f,...l.lens?{lens:l.lens}:{},...l.reads?.length?{reads:l.reads}:{}})}return s},places:()=>t,forget(a,d){for(let l of ac)e.delete(nn(a,{cardinality:"many",fidelity:l},d));let u=t.findIndex(l=>l.kind===a&&l.as===d);return u>=0&&t.splice(u,1),s},lookup(a,d){return e.get(nn(a,d))?.view},resolve(a,d,u){if(u)for(let l of ei(d.fidelity)){let f=e.get(nn(a,{cardinality:d.cardinality,fidelity:l},u));if(f)return f}for(let l of ei(d.fidelity)){let f=e.get(nn(a,{cardinality:d.cardinality,fidelity:l}));if(f)return f}if(d.cardinality==="one")for(let l of ei(d.fidelity)){let f=e.get(nn(a,{cardinality:"many",fidelity:l}));if(f)return f}},registrations:()=>r,all(){return[...e.values()]},kindsWithViews(){return[...new Set([...e.values()].map(a=>a.kind))]}};return s}var ip=["day","week","month","year","decade"];function cc(n){let e={};n.q&&n.q.trim().length>0&&(e.query=n.q);let t=ro(n.archived);if(t&&(e.archived=t),n.sort){let[r,o]=n.sort.split(":");r&&(e.sort={by:r,direction:o==="desc"?"desc":"asc"})}if(n.filter){let r=[];for(let o of n.filter.split(",")){let i=o.indexOf(":");i<=0||r.push({key:o.slice(0,i),value:o.slice(i+1)})}r.length>0&&(e.filter=r)}if(n.group){let[r,o]=n.group.split(":");r&&(e.group={by:r,...ip.includes(o)?{bucket:o}:{}})}return e}function ti(n){if(typeof n=="string"&&n.length>0)return{by:n,direction:"asc"};if(typeof n!="object"||n===null)return;let{by:e,direction:t}=n;if(!(typeof e!="string"||e.length===0))return{by:e,direction:t==="desc"?"desc":"asc"}}function rr(n,e,t){let r=ti(n);if(!r)return'an order is a field, like "released", or { "by": "released", "direction": "asc" | "desc" }';let o=typeof n=="object"&&n!==null?n.direction:void 0;if(o!==void 0&&o!=="asc"&&o!=="desc")return`an order runs "asc" or "desc", not "${String(o)}"`;if(r.by!=="label"&&!e.includes(r.by))return`${t} has no field "${r.by}" to order by (it has ${e.length>0?e.map(i=>`"${i}"`).join(", "):"none"}, and "label", its name)`}function sp(n,e,t){let r=ti(e);if(!r)return n;let o=r.direction==="desc"?-1:1;return n.map((i,s)=>({item:i,at:s,value:t(i,r.by)})).sort((i,s)=>{let a=(i.value===void 0||i.value===null||i.value===""?1:0)-(s.value===void 0||s.value===null||s.value===""?1:0);if(a!==0)return a;if(i.value===s.value||i.value===void 0||i.value===null)return i.at-s.at;let d=typeof i.value=="number"&&typeof s.value=="number"?i.value-s.value:String(i.value).localeCompare(String(s.value),void 0,{numeric:!0});return d===0?i.at-s.at:d*o}).map(i=>i.item)}var ft={timeline:{binds:"fields",requiredRoles:["start","end"],options:["columns","extent","tick","minWindow","arranging"]},calendar:{binds:"fields",requiredRoles:["start"],options:["today","range","weekStartsOn","perCell","horizon","arranging","search","filters"]},coverage:{binds:"entities",requiredRoles:["rows","columns","link"],options:["rowRef","rowGroup","groupOrder","requiredGroups","requiredVia","badge","columnGroup","sort","columnSort","search","filters"]},board:{binds:"entities",requiredRoles:["slots","x","y","fill"],options:["fillFrom","slotCode","zones","aspect","emptyLabel","pickTarget","arranging","arrange"]},plan:{binds:"entities",requiredRoles:["regions","outline"],options:["hues","aspect","undrawnLabel","strayLabel","draw","place","help"]},reach:{binds:"nothing",requiredRoles:[],options:[]},blocks:{binds:"nothing",requiredRoles:[],options:["blocks"]},columns:{binds:"fields",requiredRoles:["column"],options:["sort","search","filters","move","collapsed","cap","hidden"]}},ap=20,uc=Object.keys(ft),dp=(n,e,t,r=ft[n].options)=>({message:`The ${n} lens takes no option "${e}", so "${t}" ignores it.`,fix:r.length?`Use one of: ${r.join(", ")}.`:`The ${n} lens takes no options; drop it.`}),fc=n=>Object.hasOwn(ft,n);function ri(n,e,t){let r=n[e],o=Array.isArray(r)?r.filter(i=>typeof i=="string"&&t(i)):[];o.length>0?n[e]=o:delete n[e]}var Mn=n=>typeof n=="object"&&n!==null&&!Array.isArray(n);function lc(n,e,t){let r=n.tryDefinition(e)?.fields.shape,o=D(r?.[t]);for(;o&&(o.type==="optional"||o.type==="default"||o.type==="nullable"||o.type==="prefault");)o=D(o.innerType);return o?.type!=="enum"?[]:(o.entries?Object.values(o.entries):o.values??[]).filter(s=>typeof s=="string")}function cp(n){let e=[],t=[],r=[],o=new Set(n.schema.kinds),i=new Set;for(let d of o)for(let u of Object.keys(n.schema.tryDefinition(d)?.edges??{}))i.add(u);let s=d=>Object.keys(n.schema.tryDefinition(d)?.fields.shape??{}),a=new Map;return(n.lenses??[]).forEach((d,u)=>{let l=`lenses.${u}`,f=typeof d.title=="string"&&d.title.trim().length>0?d.title.trim():void 0,c=(m,b)=>{t.push({index:u,name:d.name,...f?{title:f}:{},why:m}),b&&r.push({severity:"warning",...b})};if(!fc(d.name)){f?c(`"${d.name}" is not a lens this framework draws`,{code:"lens-not-shipped",path:`${l}.name`,message:`"${f}" names the lens "${d.name}", which the framework does not ship, so nothing draws it.`,fix:`Name one of ${uc.join(", ")} \u2014 or register the view yourself and drop the title.`}):c("it is a lens this app wrote, drawn by the app's own views");return}if(!f)return c("it has no title, so it is bindings the checker holds and no place");let p=ft[d.name],g=Mn(d.options)?d.options:{};if(d.options!==void 0&&!Mn(d.options))return c("its options are not an object",{code:"lens-options-not-an-object",path:`${l}.options`,message:`"${f}" has options that are not an object.`,fix:'Write them as { "<option>": <value> }, or drop them.'});for(let m of Object.keys(g))p.options.includes(m)||r.push({severity:"warning",code:"lens-option-unknown",path:`${l}.options.${m}`,...dp(d.name,m,f,p.options)});let h={};for(let m of p.options)g[m]!==void 0&&(h[m]=g[m]);d.arrangedBy&&(h.arrangedBy=cc(d.arrangedBy));let v=Mn(d.bindings)?d.bindings:{},y=[],x,$=(m,b,S)=>c(b,{code:"lens-cannot-draw",path:m,message:`"${f}" cannot draw: ${b}.`,fix:S});if(p.binds==="fields"){let m=Object.keys(v).filter(S=>Mn(v[S])),b=m.filter(S=>!o.has(S));if(m.length===0)return $(`${l}.bindings`,"it binds no kind",`Bind a kind's fields: "bindings": { "<kind>": { ${p.requiredRoles.map(S=>`"${S}": "<field>"`).join(", ")} } }.`);if(b.length>0)return;if(h.bindings=v,y=m,d.name==="timeline"){let S=g.columns;if(Array.isArray(S))h.columns=S.map(w=>typeof w=="string"?{id:w,label:w}:w);else{let w=m.flatMap(P=>{let M=v[P],E=typeof M.column=="string"?M.column:typeof M.columns=="string"?M.columns:void 0;return E?lc(n.schema,P,E):[]}),R=[...new Set(w)];if(R.length===0)return $(`${l}.options.columns`,"it has no columns \u2014 no option names them and no `column` role is bound to a field of set values",'Bind "column" to a field whose values are the columns, or say "columns": ["mon", "tue", \u2026].');h.columns=R.map(P=>({id:P,label:P.toUpperCase()}))}h.extent===void 0&&(h.extent=1440)}if(d.name==="columns"){if(h.sort!==void 0){let w=m.map(R=>rr(h.sort,s(R),R)).find(Boolean);w&&(r.push({severity:"warning",code:"lens-sort",path:`${l}.options.sort`,message:`"${f}" cannot order its cards: ${w}.`,fix:'Write { "by": "<a field>", "direction": "asc" }, or drop it.'}),delete h.sort)}let S=new Set;for(let w of m){let R=v[w].column;if(typeof R!="string"||!s(w).includes(R))return;let P=lc(n.schema,w,R);if(P.length===0)return $(`${l}.bindings.${w}.column`,`its column field "${R}" is not a choice`,`Bind "column" to a choice field of ${w}, like a status.`);for(let M of P)S.add(M)}typeof h.move!="boolean"&&delete h.move,Number.isInteger(h.cap)&&h.cap>=1&&h.cap<=500||delete h.cap;for(let w of["collapsed","hidden"])ri(h,w,R=>S.has(R))}if(d.name==="calendar"&&h.today!==void 0&&!(typeof h.today=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(h.today)))return $(`${l}.options.today`,"its today is not a date",'Write it as "YYYY-MM-DD", or leave it out and the calendar opens on the day it is drawn.');if(d.name==="calendar"&&h.horizon!==void 0){let S=h.horizon,w=M=>M===void 0||Number.isInteger(M)&&M>=1&&M<=9999,R=typeof S=="number"?{years:S,title:"Years"}:S;Mn(R)&&Number.isInteger(R.years)&&R.years>=1&&R.years<=200&&typeof R.title=="string"&&R.title.trim().length>0&&w(R.from)&&w(R.to)&&Object.keys(R).every(M=>["years","title","from","to"].includes(M))&&!(typeof R.from=="number"&&typeof R.to=="number"&&R.to<R.from)?h.horizon=R:(delete h.horizon,r.push({severity:"warning",code:"lens-horizon",path:`${l}.options.horizon`,message:`"${f}" has a horizon that is not a span of years, so it offers no span of years.`,fix:'Write { "years": 30, "title": "The career" } \u2014 "from" and "to" (years, like 1962 and 2023) only to pin its ends, which otherwise reach the first and last of its records.'}))}if(d.name==="calendar"&&h.range!==void 0&&!["day","week","month","quarter","year","years","agenda"].includes(h.range))return $(`${l}.options.range`,`its range "${String(h.range)}" is not one a calendar opens at`,"Use one of: day, week, month, quarter, year, agenda.")}else if(p.binds==="entities"){let m=w=>{let R=v[w];if(Mn(R)){if(typeof R.kind=="string")return R.kind;if(typeof R.edge=="string")return R.edge;if(Array.isArray(R.path))return{path:R.path};if(typeof R.field=="string")return R.field}};for(let w of p.requiredRoles)if(m(w)===void 0)return;let b=d.name==="coverage"?"rows":d.name==="board"?"slots":"regions",S=m(b);if(!o.has(S))return;if(d.name==="coverage"){let w=m("columns");if(!o.has(w))return;let R=m("link");if(typeof R=="string"&&!i.has(R))return;Object.assign(h,{rows:S,columns:w,link:R}),w!==S&&(x=w);for(let[P,M]of[["sort",S],["columnSort",w]]){if(h[P]===void 0)continue;let E=rr(h[P],s(M),M);E&&(r.push({severity:"warning",code:"lens-sort",path:`${l}.options.${P}`,message:`"${f}" cannot order its ${P==="sort"?"rows":"columns"}: ${E}.`,fix:`Write { "by": "<a field of ${M}>", "direction": "asc" }, or drop it.`}),delete h[P])}}else if(d.name==="board"){Object.assign(h,{slots:S,x:m("x"),y:m("y"),fill:m("fill")});for(let w of["x","y"])if(!s(S).includes(h[w]))return}else{Object.assign(h,{regions:S,outline:m("outline")});for(let w of["markers","at","within","nests","regionKind","markerKind"]){let R=m(w);typeof R=="string"&&(h[w]=R)}}y=[S]}else if(d.name==="blocks"){if(!d.on)return $(`${l}.on`,"it does not say which kind it stands on",'Say "on": "<the kind it is a place of>".');if(!Array.isArray(h.blocks)||h.blocks.length===0)return $(`${l}.options.blocks`,"it has no blocks to draw",`Say "options": { "blocks": [{ "headline": "\u2026" }, { "list": "all('<kind>')", "as": "card" }] }.`)}else{let m=["user","person","member"].find(b=>o.has(b));if(!d.on&&!m)return $(`${l}.on`,"it does not say which kind it stands on",'Say "on": "<the kind whose records are the people>".');y=m?[m]:[]}if(d.on!==void 0){if(typeof d.on!="string"||!o.has(d.on))return $(`${l}.on`,`it stands on "${String(d.on)}", which is not a kind`,`Use one of: ${[...o].join(", ")}.`);if(y=[d.on],d.name==="coverage"){let m=[h.rows,h.columns].find(b=>b!==d.on);x=typeof m=="string"?m:void 0}}let k=typeof h.rows=="string"?h.rows:y[0];if(k!==void 0){let m=["label",...s(k)],b=new Set(["is",...m,...Object.keys(n.schema.tryDefinition(k)?.edges??{})]);ri(h,"search",S=>m.includes(S)),ri(h,"filters",S=>b.has(S.split(".")[0]))}let _=Re(f);if(_.length===0)return $(`${l}.title`,"its title has no letters or digits to make an address of","Give it a title a person would say.");for(let m of y){let b=`${m}|${_}`;if(a.has(b))return c(`another lens on ${m} is already called "${f}"`,{code:"lens-title-taken",path:`${l}.title`,message:`"${f}" is the title of lenses.${a.get(b)} too, on the same kind, so one address would name two pictures.`,fix:"Give each its own title."})}for(let m of y)a.set(`${m}|${_}`,u);let A=d.create;A!==void 0&&typeof A!="boolean"&&r.push({severity:"warning",code:"lens-create",path:`${l}.create`,message:`"${f}" says create ${JSON.stringify(A)}, which is neither true nor false, so its page keeps the forms that begin its kind.`,fix:'Say "create": false to leave them off, or drop it.'}),e.push({index:u,lens:d.name,title:f,as:_,kinds:y,...x?{across:x}:{},options:h,...d.hidden===!0?{hidden:!0}:{},...A===!1?{create:!1}:{}})}),{drawn:e,undrawn:t,findings:r}}var lp=6;function up(n,e,t=[]){let r=n.kinds,o=s=>Object.values(n.tryDefinition(s)?.edges??{}).map(a=>(a.to==="*"?r:a.to).filter(d=>d!==s)),i=new Set(r.flatMap(s=>o(s).flat()));return new Set([...e?.hide??[],...t,...r.filter(s=>!i.has(s)&&o(s).length>0&&o(s).every(a=>a.length>=2))])}function fp(n,e,t){if(!n?.primary)return;let r=new Set(n.primary.map(Re));return{kinds:new Set(e.kinds.filter(o=>r.has(Re(o))||r.has(ut(e,o).slice(1)))),places:new Set(t.filter(o=>r.has(o.as)||r.has(Re(o.title))||o.name!==void 0&&n.primary.includes(lt+o.name)).map(o=>`${o.kind}|${o.as}`))}}var pc="overview",pp=`/places/${pc}`;function hp(n){let e=n?.scene?.trim();return e||"Scene"}function gp(n){let e=n?.pages?.trim();return e||"Pages"}function mp(n,e){if(!e||e.length===0)return n;let t=e.filter(r=>n.includes(r));return[...new Set(t),...n.filter(r=>!t.includes(r))]}function hc(n){return n.startsWith(lt)&&n.slice(lt.length).trim()||void 0}function yp(n,e,t){let r=[],o=new Set;for(let i of e??[]){let s=hc(i),a=s===void 0?void 0:t.find(d=>d.name===s&&n.includes(d.kind));a?r.some(d=>d.view===a)||r.push({kind:a.kind,view:a}):s===void 0&&n.includes(i)&&!o.has(i)&&(o.add(i),r.push({kind:i}))}for(let i of n)o.has(i)||r.push({kind:i});return r}function bp(n,e,t){if(n===void 0)return;let r=n.trim();if(r==="")return;if(r.toLowerCase()==="home"||r==="/")return{to:"home"};let o=Re(r),i=t.find(d=>d.title===r||lt+d.name===r)??t.find(d=>d.as===o);if(i)return{to:"place",place:i};let s=e.kinds,a=s.find(d=>d===r)??s.find(d=>ut(e,d).slice(1)===o);return a?{to:"kind",kind:a}:void 0}function oi(n){let e=(n??"").replace(/\/+$/,"");return e===""?"":e.startsWith("/")?e:`/${e}`}function vp(n,e={}){let t=typeof n=="string"?n:n.address,r=oi(e.basePath),o=t.startsWith("/")?t:`/${t}`;return r===""?o:o==="/"?r:o.startsWith("/?")||o.startsWith("/#")?`${r}${o.slice(1)}`:`${r}${o}`}function wp(n,e){let t=oi(e);if(t==="")return n.startsWith("/")?n:`/${n}`;if(!n.toLowerCase().startsWith(t.toLowerCase()))return null;let r=n.slice(t.length);return r===""||r==="/"?"/":r.startsWith("/")?r:null}var or=2500,xp=or*4;function kp(n){let e=n.name??"";return e&&n.onBehalfOfName?`${e}, for ${n.onBehalfOfName}`:e}function ii(n,e,t=or){return n.held==="socket"?!0:n.until!==void 0?e<Date.parse(n.until):e-Date.parse(n.at)<t}var aS=new Set(Nt);function Sp(n){return`${n.kind}:${n.id??""}:${n.session??""}`}function Rp(n,e,t,r=or,o){let i=new Map;for(let[s,a]of n)ii(a,t,r)&&i.set(s,a);for(let s of e){if(!ii(s,t,r)){i.delete(s.participant);continue}let a=i.get(s.participant);(!a||Date.parse(a.at)<=Date.parse(s.at))&&i.set(s.participant,s)}return o!==void 0&&i.delete(o),i}function $p(n,e){return!n||!e?n===e:n.participant===e.participant&&n.kind===e.kind&&n.name===e.name&&n.onBehalfOf===e.onBehalfOf&&n.onBehalfOfName===e.onBehalfOfName&&n.until===e.until&&n.held===e.held&&n.hue===e.hue&&n.stop===e.stop&&(n.over??null)===(e.over??null)&&(n.robot?.at??null)===(e.robot?.at??null)&&(n.robot?.mode??null)===(e.robot?.mode??null)&&JSON.stringify(n.caret)===JSON.stringify(e.caret)}var gc=Symbol.for("@graview/core:app-link"),Ap=n=>(Object.defineProperty(D(n),gc,{value:1,enumerable:!0}),n);function mc(n){let e=D(n);return!!e&&(e[gc]===1||mc(e.innerType))}var uS=()=>Ap(L().check(qr(500),Bn(Pt,"another app's address")));var ir=(n,e)=>`${e.kind}\0${e.id??""}\0${n.address}\0${n.kind}\0${n.id}`;function _p(n,e,t=()=>{}){let r=new Map,o=new Map,i=s=>{let a=ir(s,e),d=r.get(a);return d||(d=Promise.resolve().then(()=>n.resolve(s,e)).then(u=>Op(u)?u:null,()=>null).then(u=>(r.get(a)===d&&(o.set(a,u),t(s)),u)),r.set(a,d)),d};return{read(s){let a=ir(s,e);if(o.has(a)){let d=o.get(a);return d===null?{unread:!0}:"denied"in d?{denied:!0}:{record:d}}return i(s),{unread:!0}},ask:i,answered:s=>o.get(ir(s,e)),forget(s){if(!s){r.clear(),o.clear();return}let a=ir(s,e);r.delete(a),o.delete(a)}}}function Op(n){if(n===null)return!0;if(typeof n!="object"||n===void 0)return!1;if(n.denied===!0)return!0;let e=n;return typeof e.label=="string"&&typeof e.id=="string"&&typeof e.kind=="string"&&typeof e.fields=="object"&&e.fields!==null}var Pp=1;var sr=(n,e)=>`${n}\0${e}`;function ai(n){return n.op==="add-node"?Object.keys(n.node).filter(e=>e!=="id"&&e!=="kind").map(e=>[n.node.id,e]):n.op==="patch-node"?Object.keys(n.after).map(e=>[n.id,e]):n.op==="splice-text"?[[n.id,n.field]]:[]}var si=class n{revs=new Map;floor;constructor(e=0){this.floor=Math.max(0,Math.floor(e))-1}static of(e,t={}){let r=new n(t.horizon);return r.note(e),r}note(e){for(let t of e)for(let r of t.primitives)for(let[o,i]of ai(r)){let s=sr(o,i);(this.revs.get(s)??this.floor)<t.seq&&this.revs.set(s,t.seq)}}of(e,t){return this.revs.get(sr(e,t))??this.floor}baseFor(e,t=new Set,r){let o=new Set,i=new Map;for(let s of e)for(let a of s.primitives)if(a.op==="add-node"&&o.add(a.node.id),!(a.op!=="patch-node"||o.has(a.id)||t.has(a.id)))for(let d of Object.keys(a.after)){let u=sr(a.id,d);t.has(u)||i.has(u)||r?.(a.id,d)||i.set(u,{node:a.id,field:d,rev:this.of(a.id,d)})}return[...i.values()]}stale(e){return e.filter(t=>this.of(t.node,t.field)>t.rev)}};function Ep(n){let e=new Set;for(let t of n)for(let r of t.primitives){r.op==="add-node"&&e.add(r.node.id);for(let[o,i]of ai(r))e.add(sr(o,i))}return e}var vS=Symbol.for("@graview/core:collaborative"),wS=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0;var Mp=/^#([0-9a-f]{3,8})$/i,zp=/(rgba?|hsla?)\(([^)]+)\)/gi;function Np(n){let e=Mp.exec(n.trim());if(!e)return null;let t=e[1];if((t.length===3||t.length===4)&&(t=[...t].map(i=>i+i).join("")),t.length!==6&&t.length!==8)return null;let r=Number.parseInt(t.slice(0,6),16),o=t.length===8?Number.parseInt(t.slice(6,8),16)/255:1;return{r:r>>16&255,g:r>>8&255,b:r&255,a:o}}function Ip(n){let e=n.slice(0,n.indexOf("(")).toLowerCase(),r=n.slice(n.indexOf("(")+1,n.lastIndexOf(")")).split(/[,\s/]+/).filter(Boolean).map(d=>d.endsWith("%")?Number.parseFloat(d)/100:Number.parseFloat(d));if(r.some(Number.isNaN))return null;if(e.startsWith("rgb")){let[d,u,l,f]=r;return d===void 0||u===void 0||l===void 0?null:{r:d,g:u,b:l,a:f??1}}let[o,i,s,a]=r;return o===void 0||i===void 0||s===void 0?null:{...bc(o,i>1?i/100:i,s>1?s/100:s),a:a??1}}function tn(n){let e=n.r/255,t=n.g/255,r=n.b/255,o=Math.max(e,t,r),i=Math.min(e,t,r),s=(o+i)/2;if(o===i)return{h:0,s:0,l:s};let a=o-i,d=a/(1-Math.abs(2*s-1));return{h:((o===e?60*((t-r)/a%6):o===t?60*((r-e)/a+2):60*((e-t)/a+4))+360)%360,s:d,l:s}}function $e(n,e,t){return{...bc(n,e,t),a:1}}function bc(n,e,t){let r=(1-Math.abs(2*t-1))*e,o=(n%360+360)%360/60,i=r*(1-Math.abs(o%2-1)),[s,a,d]=o<1?[r,i,0]:o<2?[i,r,0]:o<3?[0,r,i]:o<4?[0,i,r]:o<5?[i,0,r]:[r,0,i],u=t-r/2;return{r:Math.round((s+u)*255),g:Math.round((a+u)*255),b:Math.round((d+u)*255)}}function ne(n){let e=[];for(let t of n.matchAll(zp)){let r=Ip(t[0]);r&&e.push(r)}for(let t of n.matchAll(/#[0-9a-fA-F]{3,8}\b/g)){let r=Np(t[0]);r&&e.push(r)}return e}function rn(n,e){let t=n.a+e.a*(1-n.a);if(t===0)return{r:0,g:0,b:0,a:0};let r=(o,i)=>(o*n.a+i*e.a*(1-n.a))/t;return{r:r(n.r,e.r),g:r(n.g,e.g),b:r(n.b,e.b),a:t}}function di(n){let e=n/255;return e<=.03928?e/12.92:((e+.055)/1.055)**2.4}function yc(n){return .2126*di(n.r)+.7152*di(n.g)+.0722*di(n.b)}function he(n,e){let[t,r]=[yc(n),yc(e)].sort((o,i)=>i-o);return(t+.05)/(r+.05)}var ar=(n,e)=>`rgba(${Math.round(n.r)}, ${Math.round(n.g)}, ${Math.round(n.b)}, ${e})`,vc={r:0,g:0,b:0,a:1},dr={r:255,g:255,b:255,a:1};function cr(n){let e=ne(n.accent)[0];if(!e)return{ok:!1,missing:["accent"],why:`"${n.accent}" is not a color this can read. Use a hex, rgb() or hsl() value.`};let t={},r=new Set,o=[],i=tn(e);for(let s of["dark","light"]){let a=n.base[s],d=ne(a.ground)[0]??(s==="dark"?vc:dr),u=rn(ne(a.panel)[0]??dr,d),l=Dp(i,[u,d],s,4.5);l?Math.abs(l.l-i.l)>jp&&(r.add(`accent (${s})`),o.push(`reaching 4.5:1 on the ${s} panel would move the accent's lightness by ${Math.round(Math.abs(l.l-i.l)*100)} points, which is far enough that it stops being the same color \u2014 supply one for ${s}`)):(r.add(`accent (${s})`),o.push(`no lightness of this hue clears 4.5:1 as text on the ${s} panel, so ${s} needs an accent of its own`));let f=l??i,c=$e(f.h,f.s,f.l),p=n.accentInk?.[s]??(he(dr,c)>=he(vc,c)?"#ffffff":"#000000"),g=he(ne(p)[0]??dr,c);g+.005<4.5&&(r.add(`accentInk (${s})`),o.push(`neither black nor white clears 4.5:1 on the accent (best ${g.toFixed(2)}:1), so text on a filled button has to be given`)),t[s]={...a,accent:ar(c,1),accentDim:ar(c,s==="dark"?.35:.22),accentInk:p,glow:ar(c,s==="dark"?.28:.1),edgeBright:ar(c,ci(c,u,s==="dark"?.55:.42,3)),...n.warn?.[s]?{warn:n.warn[s]}:{}};let h=ne(t[s].warn)[0];h&&Tp(tn(h).h,f.h)<25&&(r.add(`warn (${s})`),o.push(`the warning color shares the accent's hue in ${s}, so "something is broken" looks like "this is selected"`))}return r.size>0?{ok:!1,missing:[...r].sort(),why:o.join("; ")}:{ok:!0,schemes:t}}function ci(n,e,t,r){for(let o=Math.round(t*100);o<=100;o++){let i=o/100;if(he(rn({...n,a:i},e),e)>=r)return i}return 1}function Tp(n,e){let t=Math.abs(n-e)%360;return t>180?360-t:t}var jp=.3;function Dp(n,e,t,r){let o=t==="dark";for(let i=0;i<=100;i++){let s=o?n.l+i/100:n.l-i/100,a=o?n.l-i/100:n.l+i/100;for(let d of[s,a])if(!(d<0||d>1)&&e.every(u=>he($e(n.h,n.s,d),u)>=r))return{...n,l:d}}return null}function Fp(n,e){let t=e?.[n];if(t!==void 0)return(t%360+360)%360;let r=2166136261;for(let o=0;o<n.length;o++)r^=n.charCodeAt(o),r=Math.imul(r,16777619);return(r>>>0)%360}var on=Object.freeze({navy:"#001769",turquoise:"#00e5b9",paper:"#f7f7f2",ink:"#18213a",muted:"#586174"}),li="Montserrat",ui=Object.freeze({display:550,body:450,label:600}),fi=Object.freeze({display:600,body:400,label:600}),Lp="-0.025em",Zp=Object.freeze({minWidth:140,clearSpace:.5,microMax:24,regularMin:32,microBelow:28});var wc={ground:"#0a0f1f",groundDeep:"#060914",wash:"none",panel:"rgba(19, 27, 52, 0.96)",panelMuted:"rgba(14, 21, 42, 0.94)",panelWarning:"rgba(48, 33, 18, 0.95)",edge:"rgba(164, 178, 222, 0.18)",edgeBright:"rgba(154, 171, 255, 0.6)",ink:"#eef0f6",inkMuted:"#aab2c6",inkFaint:"#97a0b6",accent:"#9aabff",accentDim:"rgba(154, 171, 255, 0.32)",accentInk:on.navy,warn:"#f0a868",good:"#8fdcaa",bad:"#ffa3a3",glow:"rgba(154, 171, 255, 0.18)",bar:"rgba(10, 15, 31, 0.96)",float:"rgba(16, 23, 45, 0.98)",liftLow:"0 14px 36px -22px #000",liftHigh:"0 28px 64px -30px #000",tintAlpha:.2,tintLightness:52,gridAlpha:.35},xc={ground:on.paper,groundDeep:"#efefe8",wash:"none",panel:"#ffffff",panelMuted:"#fafaf6",panelWarning:"#fdf4ea",edge:"rgba(24, 33, 58, 0.12)",edgeBright:"rgba(0, 23, 105, 0.6)",ink:on.ink,inkMuted:on.muted,inkFaint:"#626b7d",accent:on.navy,accentDim:"rgba(0, 23, 105, 0.16)",accentInk:"#ffffff",warn:"#9a5312",good:"#1b6436",bad:"#a1232d",glow:"rgba(0, 23, 105, 0.08)",bar:"rgba(255, 255, 255, 0.96)",float:"#ffffff",liftLow:"0 1px 2px rgba(24,33,58,0.06), 0 8px 24px -12px rgba(24,33,58,0.16)",liftHigh:"0 2px 6px rgba(24,33,58,0.08), 0 24px 56px -24px rgba(24,33,58,0.26)",tintAlpha:.16,tintLightness:46,gridAlpha:.5},De={dark:wc,light:xc};var Fe=Object.freeze({radius:8,density:1,radiusSmall:.72,radiusSmallFloor:2,pad:15,padSmall:10,gap:7}),sn=Object.freeze({body:`"${li}", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif`,mono:'ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace'});function Cp(n){let e=n?.shape?.radius??Fe.radius,t=n?.shape?.density??Fe.density;return Object.freeze({radius:e,radiusSmall:Math.max(Fe.radiusSmallFloor,Math.round(e*Fe.radiusSmall)),pad:Math.round(Fe.pad*t),padSmall:Math.round(Fe.padSmall*t),gap:Math.round(Fe.gap*t)})}function Gp(n){let e=n?.typography?.body??sn.body,t=n?.typography?.display??e,o=e===sn.body&&t===sn.body?ui:fi,i=n?.typography?.weights;return Object.freeze({body:e,display:t,mono:n?.typography?.mono??sn.mono,weights:Object.freeze({display:i?.display??o.display,body:i?.body??o.body,label:i?.label??o.label})})}var ES=Object.freeze({light:Object.freeze({roof:Object.freeze({saturation:48,lightness:82}),right:Object.freeze({saturation:40,lightness:66}),left:Object.freeze({saturation:34,lightness:55}),roofEdge:"rgba(255,255,255,0.75)",plot:Object.freeze({saturation:45,lightness:58,alpha:.12}),plotEdge:Object.freeze({saturation:40,lightness:48,alpha:.55})}),dark:Object.freeze({roof:Object.freeze({saturation:42,lightness:32}),right:Object.freeze({saturation:40,lightness:21}),left:Object.freeze({saturation:38,lightness:13}),roofEdge:"rgba(255,255,255,0.14)",plot:Object.freeze({saturation:45,lightness:48,alpha:.2}),plotEdge:Object.freeze({saturation:40,lightness:62,alpha:.55})})});function Sc(n){return/^\s*(<\?xml[^>]*>\s*)?(<!--[\s\S]*?-->\s*)*(<!DOCTYPE svg[^>]*>\s*)?<svg[\s>/]/i.test(n)}var Rc="http://www.w3.org/2000/svg",Kp=["http://www.w3.org/1999/xhtml","http://www.w3.org/1998/Math/MathML",Rc],Bp=new Set("svg g defs symbol use title desc path rect circle ellipse line polyline polygon text tspan textPath linearGradient radialGradient stop pattern clipPath mask marker image filter feBlend feColorMatrix feComponentTransfer feComposite feDropShadow feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feMerge feMergeNode feMorphology feOffset feTile feTurbulence".split(" ")),Vp=new Set(["title","desc"]),pt="it embeds a page or media",Up={script:"it has a script in it",foreignobject:"it embeds HTML (foreignObject)",iframe:pt,embed:pt,object:pt,audio:pt,video:pt,style:"it has a style sheet in it; a mark is styled by its attributes",a:"it links to something (an <a> element)"},Wp={amp:"&",lt:"<",gt:">",quot:'"',apos:"'"};function qp(n){let e=!1,t=n.replace(/&(#x[0-9a-f]+|#[0-9]+|[a-z][a-z0-9]*);?/gi,(r,o)=>{if(o[0]==="#"){let s=o[1]==="x"||o[1]==="X"?parseInt(o.slice(2),16):parseInt(o.slice(1),10);return s>0&&s<=1114111?String.fromCodePoint(s):"\uFFFD"}let i=Wp[o.toLowerCase()];return i===void 0&&(e=!0),i??""});return e?null:t}function Hp(n){if(/\\|@|expression\s*\(|(?:image-set|cross-fade|image|element|src)\s*\(/i.test(n))return!1;for(let[,e]of n.matchAll(/url\s*\(\s*["']?\s*([^)]*)/gi))if(!e.startsWith("#"))return!1;return!0}function Yp(n,e,t){let r=qp(t);if(r===null)return"it declares XML entities";let o=(e.includes(":")?e.slice(e.indexOf(":")+1):e).toLowerCase();if(o.startsWith("on"))return"it has an event handler (an on\u2026 attribute)";if(e==="xml:base")return"it loads or links to something outside itself";if(e==="xmlns")return r===Rc?null:"it changes what its elements are (another xmlns)";if(e.startsWith("xmlns:"))return Kp.includes(r)?"it changes what its elements are (another xmlns)":null;if(o==="href"||o==="src"){let i=r.replace(/[\u0000- ]+/g,"");return i.startsWith("#")||n==="image"&&/^data:image\/(png|jpe?g|gif|webp|avif);/i.test(i)?null:"it loads or links to something outside itself"}return Hp(r)?null:o==="style"?"its style loads something outside itself":"it loads or links to something outside itself"}var kc=/^\s+([A-Za-z_][A-Za-z0-9_.:-]*)\s*=\s*(?:"([^"<]*)"|'([^'<]*)')/;function $c(n){if(/<!ENTITY/i.test(n))return"it declares XML entities";if(/<!\[CDATA\[/i.test(n))return"it has a CDATA section, which the page and the picture read differently";let e=[],t=!1,r=/^\s*(<\?xml\s[^?<>]*\?>)?/.exec(n)[0].length;for(;r<n.length;){let o=n.slice(r),i=/^[^<]+/.exec(o);if(i){if(e.length===0&&i[0].trim()!=="")return"it is not one SVG: there is text outside it";r+=i[0].length;continue}if(o.startsWith("<!--")){let p=o.indexOf("-->",4);if(p<0)return"it has a comment that never ends";let g=o.slice(4,p);if(/^-?>/.test(g)||g.includes("--")||g.includes("<!")||g.endsWith("-"))return"it has a comment the page and the picture read differently";r+=p+3;continue}if(/^<!DOCTYPE/i.test(o)){let p=/^<!DOCTYPE\s+svg\b[^<>[\]]*>/i.exec(o);if(!p||e.length>0||t)return"it declares XML entities";r+=p[0].length;continue}let s=/^<\/([A-Za-z][A-Za-z0-9_.:-]*)\s*>/.exec(o);if(s){if(e.pop()!==s[1])return`it is not one SVG: </${s[1]}> closes what is not open`;e.length===0&&(t=!0),r+=s[0].length;continue}let a=/^<([A-Za-z][A-Za-z0-9_.:-]*)/.exec(o);if(!a)return"it is not one SVG: it has markup a picture cannot hold";let d=a[1],u=Up[d.toLowerCase()];if(u)return u;if(t)return`it is not one SVG: <${d}> comes after it ends`;if(e.length===0&&d!=="svg")return"it is not one SVG";if(d.includes(":"))return`it has an element of another kind (<${d}>)`;if(!Bp.has(d))return`it has a <${d}> element, which a picture does not need`;let l=e[e.length-1];if(l&&Vp.has(l))return`it has an element inside a <${l}>, which the page reads as HTML`;let f=a[0].length;for(let p=kc.exec(o.slice(f));p;p=kc.exec(o.slice(f))){let g=Yp(d,p[1],p[2]??p[3]??"");if(g)return g;f+=p[0].length}let c=/^\s*(\/?)>/.exec(o.slice(f));if(!c)return/(?:^|[\s/"'])on[a-z]+\s*=/i.test(o.slice(f,f+400))?"it has an event handler (an on\u2026 attribute)":`it is not one SVG: <${d}>'s attributes are not each quoted and apart`;c[1]!=="/"?e.push(d):e.length===0&&(t=!0),r+=f+c[0].length}return e.length>0?`it is not one SVG: <${e[e.length-1]}> is never closed`:t?null:"it is not one SVG"}function Ac(n){if(n){if(!Sc(n)){if(/^\s*</.test(n))return;let e=/^\s*([a-z][a-z0-9+.-]*):/i.exec(n)?.[1]?.toLowerCase();return e===void 0||e==="http"||e==="https"||e==="data"&&/^\s*data:image\//i.test(n)?n:void 0}return $c(n)===null?`data:image/svg+xml,${encodeURIComponent(n.trim())}`:void 0}}var lr;function Jp(){if(lr===void 0)try{lr=new RegExp("^\\p{RGI_Emoji}$","v")}catch{lr=null}return lr}function Xp(n){return/\p{Extended_Pictographic}|\p{Regional_Indicator}|⃣/u.test(n)}function pi(n){if(typeof n!="string"||n.trim()==="")return"it is empty; give one emoji, like \u{1F3E1}";let e=[...new Intl.Segmenter("en",{granularity:"grapheme"}).segment(n)].map(o=>o.segment),t=e.filter(Xp).length;if(t===0)return"it is not an emoji; give one emoji, like \u{1F3E1}";if(e.length>1)return t===e.length?`it is ${e.length} emoji, and a mark is one`:"it has other characters beside the emoji; give the emoji alone";let r=Jp();return r&&!r.test(n)?"it is not one of the standard emoji every emoji set draws":null}function hi(n){return typeof n=="object"&&n!==null&&typeof n.emoji=="string"?n.emoji:void 0}function _c(n){return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><text x="50" y="50" dy=".35em" font-size="88" text-anchor="middle">${n}</text></svg>`}function Qp(n){let e=n?.favicon;if(typeof e=="object"&&e!==null){let t=hi(e);return t!==void 0&&pi(t)===null?`data:image/svg+xml,${encodeURIComponent(_c(t))}`:void 0}return Ac(e)}function eh(n){let e=n?.logo;return typeof e=="string"?e===""?void 0:{light:e}:e&&typeof e.light=="string"&&e.light!==""?e:void 0}function nh(n){if(n?.logo)return;let e=hi(n?.favicon);return e!==void 0&&pi(e)===null?e:void 0}var Oc={"system-sans":'ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif',"system-serif":'ui-serif, "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, Cambria, "Times New Roman", serif',"system-mono":sn.mono},th=["serif","sans-serif","monospace","cursive","fantasy","system-ui","math","emoji","-apple-system","BlinkMacSystemFont"],Pc=["Georgia","Times New Roman","Times","Iowan Old Style","Palatino","Palatino Linotype","Charter","Cambria","Baskerville","Optima","Helvetica","Helvetica Neue","Arial","Verdana","Segoe UI","Roboto","Avenir","Avenir Next","Gill Sans","Menlo","Monaco","Consolas","SF Mono","SFMono-Regular","Courier New"];var rh=n=>new Set(n.map(e=>e.toLowerCase()));function oh(n){return rh([...th,...Pc]).has(n.toLowerCase())||n.toLowerCase().startsWith("ui-")}function ih(n){return Oc[n]??n}function IS(n){if(/url\(|@import|[;{}<>\\]|\/\*|[\u0000-\u001f\u007f]/i.test(n))return"it is not a list of font names; a document names a face, never where one comes from";for(let e of n.split(",")){let t=e.trim();if(!(/^"[^"']*"$/.test(t)||/^'[^"']*'$/.test(t))&&/["']/.test(t))return`${t} is not quoted in one pair; write a face as Georgia or "Times New Roman"`}return null}var mi={r:255,g:255,b:255,a:1},Mc={r:0,g:0,b:0,a:1},zn=n=>`#${[n.r,n.g,n.b].map(e=>Math.round(Math.max(0,Math.min(255,e))).toString(16).padStart(2,"0")).join("")}`,Le=(n,e)=>`rgba(${Math.round(n.r)}, ${Math.round(n.g)}, ${Math.round(n.b)}, ${e})`,gi=(n,e,t)=>({r:n.r+(e.r-n.r)*t,g:n.g+(e.g-n.g)*t,b:n.b+(e.b-n.b)*t,a:1});function sh(n){return typeof n=="string"?{light:n}:{...n.light?{light:n.light}:{},...n.dark?{dark:n.dark}:{}}}function ah(n){let e=ne(n)[0];if(!e)return;let{h:t,s:r}=tn(e);return zn($e(t,Math.min(r,.45),.08))}function dh(n){return he(mi,n)>he(Mc,n)}function zc(n,e){let t=ne(n.edgeBright)[0];return Le(t,ci({...t,a:1},e,t.a,3))}function ch(n,e,t){let{h:r,s:o}=tn(t),i=gi(t,mi,.8);return{...n,ground:e,groundDeep:zn(gi(t,Mc,.04)),panel:zn(i),panelMuted:zn(gi(t,mi,.55)),edge:Le($e(r,Math.min(o,.5),.14),.14),edgeBright:zc(n,i),bar:Le(i,.96),float:zn(i)}}function Ec(n,e,t){let{h:r,s:o,l:i}=tn(t),s=a=>$e(r,o,Math.min(1,i+a));return{...n,ground:e,groundDeep:zn($e(r,o,i*.6)),panel:Le(s(.07),.96),panelMuted:Le(s(.035),.94),edge:Le($e(r,Math.min(o,.45),.75),.18),edgeBright:zc(n,rn({...s(.07),a:.96},t)),bar:Le(t,.96),float:Le(s(.05),.98)}}function Nc(n){if(n===void 0)return De;let e=sh(n),t=e.dark??(e.light?ah(e.light):void 0),r=e.light?ne(e.light)[0]:void 0,o=t?ne(t)[0]:void 0;return{light:r?dh(r)?Ec(De.dark,e.light,r):ch(De.light,e.light,r):De.light,dark:o?Ec(De.dark,t,o):De.dark}}var lh=[["ink","ink",["ground","panel","panelMuted","panelWarning","float","bar"],4.5],["inkMuted","muted ink",["ground","panel","panelMuted","float","bar"],4.5],["inkFaint","faint ink",["panel","panelMuted","float"],4.5],["accent","the accent",["ground","panel","float"],4.5],["warn","the warning color",["panel","panelWarning","float"],4.5],["good","the good status",["ground","panel"],4.5],["bad","the bad status",["ground","panel"],4.5],["edgeBright","the lit edge",["panel"],3]],uh={panel:"a card",panelMuted:"a receded card",panelWarning:"a flagged card",float:"a floating sheet",bar:"the bar"};function LS(n,e){for(let t of["light","dark"]){let r={...n[t],...t==="light"&&e?{accent:e}:{}},o=ne(r.ground)[0];for(let[i,s,a,d]of lh)for(let u of a){let l=u==="ground"?[o]:ne(String(r[u])).map(f=>rn(f,o));for(let f of l){let c=rn(ne(String(r[i]))[0],f),p=he(c,f);if(p<d)return{scheme:t,what:s,text:c,ground:o,...u==="ground"?{}:{card:f,surface:uh[u]},ratio:p,requires:d}}}}return null}function KS(n,e){let t=Nc(e),r=cr({accent:n,base:t});return r.ok||!r.missing.every(o=>o.startsWith("warn"))?r:cr({accent:n,base:t,warn:{light:t.light.bad,dark:t.dark.bad}})}function fh(n,e,t){if(t.rows===0)return;let r=ae(n,e.rows).toLowerCase(),o=ae(n,e.columns).toLowerCase(),i=e.rows===e.columns,s=i?`link ${r} to each other`:`link ${r} to ${o}`;if(t.columns===0)return`No ${o} yet: ${s}.`;if(t.cells>0||typeof e.link=="object"&&e.link!==null)return;let a=H(n.tryDefinition(e.rows),e.rows);return i?`No ${a} is linked to another yet: ${s}.`:`No ${a} is linked to ${un(H(n.tryDefinition(e.columns),e.columns))} yet: ${s}.`}function ph(n,e){let t=o=>o?._zod?.def,r={};for(let o of new Set(e)){let i=n.tryDefinition(o),s=i?.fields?.shape??{};for(let[a,d]of Object.entries(s)){let u=t(d);for(let f=0;f<6&&u?.innerType!==void 0&&u.type!=="enum";f++)u=t(u.innerType);if(u?.type!=="enum"||!u.entries)continue;let l=i?.display?.format?.[a];(r[o]??={})[a]=Object.fromEntries(Object.values(u.entries).map(f=>[String(f),l?l(f):G(String(f))]))}}return r}var ge={connectors:{all:{route:"curve",visible:!0},byEdge:{}},captions:{visible:!0},grid:{visible:!0,size:64},lattice:{visible:!0,size:46},tags:{visible:!0},emphasis:{rest:.34,dim:.12},marks:{flag:"\u26A0"}};function hh(n){return n?{connectors:{all:{...ge.connectors.all,...n.connectors?.all??{}},byEdge:{...ge.connectors.byEdge,...n.connectors?.byEdge??{}}},captions:{...ge.captions,...n.captions??{}},grid:{...ge.grid,...n.grid??{}},lattice:{...ge.lattice,...n.lattice??{}},tags:{...ge.tags,...n.tags??{}},emphasis:{...ge.emphasis,...n.emphasis??{}},marks:{...ge.marks,...n.marks??{}}}:ge}function gh(n,e){return{...n.connectors.all,...n.connectors.byEdge[e]??{}}}function mh(n){return[` --graview-kit-grid: ${n.grid.visible?1:0};`,` --graview-kit-grid-size: ${n.grid.size}px;`,` --graview-kit-lattice: ${n.lattice.visible?1:0};`,` --graview-kit-lattice-size: ${n.lattice.size}px;`,` --graview-kit-tags: ${n.tags.visible?"inline-flex":"none"};`,` --graview-kit-captions: ${n.captions.visible?"block":"none"};`,` --graview-kit-rest: ${n.emphasis.rest};`,` --graview-kit-dim: ${n.emphasis.dim};`,` --graview-kit-flag: "${n.marks.flag.replace(/"/g,"'")}";`].join(`
5
+ `)}var Ic=n=>n?.kind==="visitor"||n?.onBehalfOf?.kind==="visitor",ur=new WeakMap;function yh(n,e){e?ur.set(n,e):ur.delete(n)}function bh(n,e,t){if(!n||Ic(t))return;let r=ur.get(n)??ur.get(vi(n)?.store??{});if(r)try{r(e,t)}catch{}}function vh(n,e,t){let r=new Set([e]);for(let[o,i]of t.entries()){let s=n.edge(i);if(!s)return{ok:!1,at:o};let a=s.from,d=s.to==="*"?n.kinds:s.to,u=new Set;for(let l of r){if(a.includes(l))for(let f of d)u.add(f);if(s.to==="*"||d.includes(l))for(let f of a)u.add(f)}if(u.size===0)return{ok:!1,at:o};r=u}return{ok:!0,reached:r}}var Tc="graview:fresh";function wh(n,e){let t=new URL(n),r="1";try{let o=Array.from(crypto.getRandomValues(new Uint8Array(16)),i=>i.toString(16).padStart(2,"0")).join("");(e??globalThis.sessionStorage).setItem(Tc,o),r=o}catch{}return t.searchParams.set("fresh",r),t.toString()}export{hn as a,Ys as b,Js as c,zl as d,qr as e,Kn as f,Bn as g,L as h,Iy as i,Ty as j,Ue as k,jy as l,Dy as m,Fy as n,Hr as o,Ly as p,Me as q,gn as r,Zy as s,Cy as t,Gy as u,sa as v,aa as w,X as x,Ky as y,_t as z,By as A,Vy as B,D as C,Jl as D,mr as E,gt as F,wi as G,yr as H,mt as I,xh as J,ee as K,jc as L,Dc as M,xi as N,bt as O,Fc as P,Oe as Q,br as R,ki as S,vr as T,Cc as U,Gc as V,me as W,Kc as X,Bc as Y,$i as Z,Vc as _,Uc as $,ln as aa,Ai as ba,_i as ca,G as da,qc as ea,xr as fa,K as ga,Hc as ha,Yc as ia,ae as ja,Jc as ka,Xc as la,wt as ma,un as na,H as oa,Xl as pa,Ot as qa,Xr as ra,da as sa,ca as ta,la as ua,Ql as va,Vn as wa,fa as xa,Ub as ya,Et as za,mc as Aa,uS as Ba,ou as Ca,su as Da,ga as Ea,au as Fa,Yb as Ga,Un as Ha,du as Ia,lu as Ja,Jb as Ka,Xb as La,uu as Ma,ya as Na,_p as Oa,Mt as Pa,fu as Qa,yn as Ra,qn as Sa,zt as Ta,nv as Ua,bn as Va,mn as Wa,Ra as Xa,gu as Ya,to as Za,Hn as _a,vn as $a,We as ab,av as bb,ro as cb,It as db,yu as eb,wn as fb,N as gb,Jn as hb,z as ib,U as jb,Q as kb,xu as lb,Ft as mb,Ev as nb,ku as ob,Su as pb,Pp as qb,T as rb,B as sb,xe as tb,ke as ub,Zt as vb,ie as wb,Kv as xb,ja as yb,Sn as zb,j as Ab,Rn as Bb,He as Cb,se as Db,Ou as Eb,pe as Fb,gf as Gb,Do as Hb,_d as Ib,On as Jb,sx as Kb,Lo as Lb,Md as Mb,zd as Nb,Zo as Ob,Te as Pb,rt as Qb,ot as Rb,Sf as Sb,Nd as Tb,cw as Ub,Ba as Vb,lw as Wb,uw as Xb,$f as Yb,Of as Zb,Ko as _b,Bo as $b,Vo as ac,at as bc,Gd as cc,Yt as dc,Nf as ec,Jt as fc,Je as gc,si as hc,Ep as ic,dt as jc,Pn as kc,vS as lc,wS as mc,Gt as nc,So as oc,$o as pc,Ha as qc,Nu as rc,Ya as sc,Fu as tc,Fp as uc,li as vc,Lp as wc,De as xc,sn as yc,Cp as zc,Gp as Ac,Sc as Bc,$c as Cc,Ac as Dc,Qp as Ec,eh as Fc,nh as Gc,oh as Hc,ih as Ic,IS as Jc,Nc as Kc,LS as Lc,KS as Mc,ti as Nc,sp as Oc,fh as Pc,ph as Qc,hh as Rc,gh as Sc,mh as Tc,Lu as Uc,Zu as Vc,Cu as Wc,Gu as Xc,Xe as Yc,tt as Zc,rd as _c,ce as $c,nt as ad,Qe as bd,it as cd,Vt as dd,Se as ed,df as fd,Ku as gd,Bu as hd,Ic as id,yh as jd,bh as kd,vh as ld,Bf as md,Vf as nd,Sd as od,Uf as pd,sc as qd,En as rd,Qo as sd,Yf as td,Jf as ud,Xf as vd,ac as wd,ni as xd,Qf as yd,ep as zd,Re as Ad,ut as Bd,np as Cd,tp as Dd,dc as Ed,rp as Fd,op as Gd,cc as Hd,ft as Id,ap as Jd,uc as Kd,fc as Ld,cp as Md,lp as Nd,up as Od,fp as Pd,pc as Qd,pp as Rd,hp as Sd,gp as Td,mp as Ud,yp as Vd,bp as Wd,oi as Xd,vp as Yd,wp as Zd,xp as _d,kp as $d,Sp as ae,Rp as be,$p as ce,wh as de};
@@ -0,0 +1 @@
1
+ import{a,b}from"./chunk.E4SYOBGB.js";import"./chunk.QLTHHWBA.js";import"./chunk.6IUEGPCZ.js";import"./chunk.CUJX3IVA.js";import"./chunk.VNJKGSGZ.js";import"./chunk.SDO3U72B.js";import"./chunk.X3MMJ3QC.js";import"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";export{a as ActivityFilter,b as InteractionRow};
@@ -1,6 +1,6 @@
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{G as C,Ga as K,T as k}from"./chunk.HT2BEOEV.js";import{a as H}from"./chunk.SDO3U72B.js";import{b}from"./chunk.AJZBJBMO.js";var n=b(C(),1),N=450,_=10,O=t=>t instanceof HTMLInputElement?t.dataset.graviewChooseBox??void 0:void 0,q={ArrowDown:1,ArrowRight:1,ArrowUp:-1,ArrowLeft:-1,Home:-1/0,End:1/0},S=t=>t instanceof Element?t.closest("[data-graview-choose]"):null,G=t=>t instanceof HTMLElement&&(t.isContentEditable||t instanceof HTMLInputElement&&t.type!=="checkbox"||t instanceof HTMLTextAreaElement||t instanceof HTMLSelectElement);function Y(t){let[i,d]=(0,n.useState)(()=>new Set),l=(0,n.useRef)(null),x=(0,n.useRef)(null),[E,P]=(0,n.useState)(null),R=E!==null&&t.includes(E)?E:t[0],L=(0,n.useMemo)(()=>t.filter(e=>i.has(e)),[t,i]),M=(0,n.useMemo)(()=>new Set(t),[t]);(0,n.useEffect)(()=>{[...i].some(e=>!M.has(e))&&d(e=>new Set([...e].filter(o=>M.has(o))))},[M,i]);let u=(0,n.useCallback)((e,o=!1)=>{let a=l.current;d(s=>{let r=new Set(s),f=a===null?-1:t.indexOf(a),y=t.indexOf(e);if(o&&f>=0&&y>=0){let T=s.has(a);for(let p of t.slice(Math.min(f,y),Math.max(f,y)+1))T?r.add(p):r.delete(p)}else r.has(e)?r.delete(e):r.add(e);return r}),l.current=e},[t]),v=(0,n.useCallback)(e=>d(new Set(e)),[]),A=(0,n.useCallback)(()=>{l.current=null,d(new Set)},[]),c=(0,n.useRef)(null),g=(0,n.useRef)(!1),m=L.length>0,h=()=>{c.current&&clearTimeout(c.current.timer),c.current=null};(0,n.useEffect)(()=>h,[]);let B={ref:x,onKeyDown:e=>{if(G(e.target))return;let o=O(e.target);if(e.key==="Tab"&&!e.shiftKey&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&o!==void 0&&m){let s=document.querySelector('[data-testid="several-bar"]'),r=s?.querySelector("[data-mutation]:not([disabled])")??s?.querySelector("button:not([disabled])");if(r){e.preventDefault(),e.stopPropagation(),r.focus();return}}let a=q[e.key];if(o!==void 0&&a!==void 0&&!e.metaKey&&!e.ctrlKey&&!e.altKey){let s=t.indexOf(o),r=t[Math.max(0,Math.min(t.length-1,s+(Number.isFinite(a)?a:a>0?t.length:-t.length)))];if(e.preventDefault(),e.stopPropagation(),r===void 0||r===o)return;if(e.shiftKey){let f=l.current!==null&&t.includes(l.current)?l.current:o,[y,T]=[t.indexOf(f),t.indexOf(r)].sort((p,F)=>p-F);d(p=>new Set([...p,...t.slice(y,T+1)])),l.current=f}P(r),x.current?.querySelector(`[data-graview-choose-box="${CSS.escape(r)}"]`)?.focus();return}if((e.metaKey||e.ctrlKey)&&!e.altKey&&e.key.toLowerCase()==="a"){e.preventDefault(),e.stopPropagation(),v(t);return}if(e.key===" "&&!e.metaKey&&!e.ctrlKey){let s=S(e.target),r=e.target instanceof HTMLButtonElement||e.target instanceof HTMLInputElement&&e.target.type==="checkbox";if(!s||r)return;e.preventDefault(),u(s.dataset.graviewChoose,e.shiftKey)}},onFocus:e=>{let o=O(e.target);o!==void 0&&P(o)},onPointerDown:e=>{if(g.current=!1,e.pointerType==="mouse"||e.button>0)return;let o=S(e.target);if(!o||e.target instanceof HTMLInputElement&&e.target.type==="checkbox")return;let a=o.dataset.graviewChoose;h(),c.current={id:a,x:e.clientX,y:e.clientY,timer:setTimeout(()=>{c.current=null,g.current=!0,u(a)},N)}},onPointerMove:e=>{let o=c.current;o&&Math.hypot(e.clientX-o.x,e.clientY-o.y)>_&&h()},onPointerUp:h,onPointerCancel:h,onClickCapture:e=>{let o=S(e.target);if(!o||e.target instanceof HTMLInputElement&&e.target.type==="checkbox"&&e.target.hasAttribute("data-graview-choose-box"))return;if(g.current){g.current=!1,e.preventDefault(),e.stopPropagation();return}let s=o.dataset.graviewChoose;if(e.shiftKey&&(m||l.current!==null)){e.preventDefault(),e.stopPropagation(),u(s,!0);return}m&&matchMedia?.("(pointer: coarse)").matches&&(e.preventDefault(),e.stopPropagation(),u(s))},onContextMenu:e=>{(g.current||c.current)&&(e.preventDefault(),e.stopPropagation())},...m?{"data-graview-choosing":""}:{}},j=(0,n.useCallback)(e=>i.has(e),[i]);return{chosen:L,has:j,toggle:u,choose:v,clear:A,listProps:B,boxProps:(e,o)=>({type:"checkbox",className:"graview-choose-box","data-graview-choose-box":e,"aria-label":`Choose ${o}`,tabIndex:e===R?0:-1,checked:i.has(e),onChange:()=>{},onClick:a=>{a.stopPropagation(),u(e,a.shiftKey)}}),list:x}}var $=`
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{G as C,Ga as K,T as k}from"./chunk.VNJKGSGZ.js";import{a as H}from"./chunk.SDO3U72B.js";import{b}from"./chunk.AJZBJBMO.js";var n=b(C(),1),N=450,_=10,O=t=>t instanceof HTMLInputElement?t.dataset.graviewChooseBox??void 0:void 0,q={ArrowDown:1,ArrowRight:1,ArrowUp:-1,ArrowLeft:-1,Home:-1/0,End:1/0},S=t=>t instanceof Element?t.closest("[data-graview-choose]"):null,G=t=>t instanceof HTMLElement&&(t.isContentEditable||t instanceof HTMLInputElement&&t.type!=="checkbox"||t instanceof HTMLTextAreaElement||t instanceof HTMLSelectElement);function Y(t){let[i,d]=(0,n.useState)(()=>new Set),l=(0,n.useRef)(null),x=(0,n.useRef)(null),[E,P]=(0,n.useState)(null),R=E!==null&&t.includes(E)?E:t[0],L=(0,n.useMemo)(()=>t.filter(e=>i.has(e)),[t,i]),M=(0,n.useMemo)(()=>new Set(t),[t]);(0,n.useEffect)(()=>{[...i].some(e=>!M.has(e))&&d(e=>new Set([...e].filter(o=>M.has(o))))},[M,i]);let u=(0,n.useCallback)((e,o=!1)=>{let a=l.current;d(s=>{let r=new Set(s),f=a===null?-1:t.indexOf(a),y=t.indexOf(e);if(o&&f>=0&&y>=0){let T=s.has(a);for(let p of t.slice(Math.min(f,y),Math.max(f,y)+1))T?r.add(p):r.delete(p)}else r.has(e)?r.delete(e):r.add(e);return r}),l.current=e},[t]),v=(0,n.useCallback)(e=>d(new Set(e)),[]),A=(0,n.useCallback)(()=>{l.current=null,d(new Set)},[]),c=(0,n.useRef)(null),g=(0,n.useRef)(!1),m=L.length>0,h=()=>{c.current&&clearTimeout(c.current.timer),c.current=null};(0,n.useEffect)(()=>h,[]);let B={ref:x,onKeyDown:e=>{if(G(e.target))return;let o=O(e.target);if(e.key==="Tab"&&!e.shiftKey&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&o!==void 0&&m){let s=document.querySelector('[data-testid="several-bar"]'),r=s?.querySelector("[data-mutation]:not([disabled])")??s?.querySelector("button:not([disabled])");if(r){e.preventDefault(),e.stopPropagation(),r.focus();return}}let a=q[e.key];if(o!==void 0&&a!==void 0&&!e.metaKey&&!e.ctrlKey&&!e.altKey){let s=t.indexOf(o),r=t[Math.max(0,Math.min(t.length-1,s+(Number.isFinite(a)?a:a>0?t.length:-t.length)))];if(e.preventDefault(),e.stopPropagation(),r===void 0||r===o)return;if(e.shiftKey){let f=l.current!==null&&t.includes(l.current)?l.current:o,[y,T]=[t.indexOf(f),t.indexOf(r)].sort((p,F)=>p-F);d(p=>new Set([...p,...t.slice(y,T+1)])),l.current=f}P(r),x.current?.querySelector(`[data-graview-choose-box="${CSS.escape(r)}"]`)?.focus();return}if((e.metaKey||e.ctrlKey)&&!e.altKey&&e.key.toLowerCase()==="a"){e.preventDefault(),e.stopPropagation(),v(t);return}if(e.key===" "&&!e.metaKey&&!e.ctrlKey){let s=S(e.target),r=e.target instanceof HTMLButtonElement||e.target instanceof HTMLInputElement&&e.target.type==="checkbox";if(!s||r)return;e.preventDefault(),u(s.dataset.graviewChoose,e.shiftKey)}},onFocus:e=>{let o=O(e.target);o!==void 0&&P(o)},onPointerDown:e=>{if(g.current=!1,e.pointerType==="mouse"||e.button>0)return;let o=S(e.target);if(!o||e.target instanceof HTMLInputElement&&e.target.type==="checkbox")return;let a=o.dataset.graviewChoose;h(),c.current={id:a,x:e.clientX,y:e.clientY,timer:setTimeout(()=>{c.current=null,g.current=!0,u(a)},N)}},onPointerMove:e=>{let o=c.current;o&&Math.hypot(e.clientX-o.x,e.clientY-o.y)>_&&h()},onPointerUp:h,onPointerCancel:h,onClickCapture:e=>{let o=S(e.target);if(!o||e.target instanceof HTMLInputElement&&e.target.type==="checkbox"&&e.target.hasAttribute("data-graview-choose-box"))return;if(g.current){g.current=!1,e.preventDefault(),e.stopPropagation();return}let s=o.dataset.graviewChoose;if(e.shiftKey&&(m||l.current!==null)){e.preventDefault(),e.stopPropagation(),u(s,!0);return}m&&matchMedia?.("(pointer: coarse)").matches&&(e.preventDefault(),e.stopPropagation(),u(s))},onContextMenu:e=>{(g.current||c.current)&&(e.preventDefault(),e.stopPropagation())},...m?{"data-graview-choosing":""}:{}},j=(0,n.useCallback)(e=>i.has(e),[i]);return{chosen:L,has:j,toggle:u,choose:v,clear:A,listProps:B,boxProps:(e,o)=>({type:"checkbox",className:"graview-choose-box","data-graview-choose-box":e,"aria-label":`Choose ${o}`,tabIndex:e===R?0:-1,checked:i.has(e),onChange:()=>{},onClick:a=>{a.stopPropagation(),u(e,a.shiftKey)}}),list:x}}var $=`
2
2
  .graview-choose-box{width:24px;height:24px;margin:0;accent-color:var(--graview-accent);cursor:pointer;opacity:0}
3
3
  [data-graview-choose]:hover .graview-choose-box,[data-graview-choose]:focus-within .graview-choose-box,.graview-choose-box:focus-visible,.graview-choose-box:checked,[data-graview-choosing] .graview-choose-box{opacity:1}
4
4
  [data-graview-choose]{-webkit-touch-callout:none}
5
5
  [data-graview-choosing] [data-graview-choose]{-webkit-user-select:none;user-select:none}
6
- `;var D=b(C(),1),w=b(k(),1),I=K(H(()=>(__graviewPreload(import.meta.url,["./chunk.WNQFHMNR.js","./chunk.7SQAKSJD.js","./chunk.PZG3B7F4.js","./chunk.LRUNFSHP.js","./chunk.S5MGE2U5.js","./chunk.EB4NVTJL.js","./chunk.VG7OWV2H.js","./chunk.KXPRILAO.js","./chunk.BB33TI4S.js","./chunk.MB7LKKUD.js","./chunk.LDAYDCUO.js","./chunk.KKNDX4JT.js","./chunk.GKSUTAIX.js","./chunk.5ICIMQE6.js","./chunk.QGV7H7RQ.js","./chunk.YIA2EDVF.js","./chunk.3YZHZGTM.js","./chunk.EQTSV7BK.js","./chunk.27CW6SCT.js","./chunk.YD3TKV6P.js","./chunk.4KC35UNR.js","./chunk.HT2BEOEV.js","./chunk.SDO3U72B.js","./chunk.7BBGRTXM.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.JES77WXG.js")))),U=I.part((t,i)=>(0,w.jsx)(t.SeveralBar,{...i}),{what:"The selection bar"});function Q(t){return t.chosen.length===0?null:(0,w.jsx)(D.Suspense,{fallback:null,children:(0,w.jsx)(U,{...t})})}var W=()=>I.prefetch();export{Y as a,$ as b,Q as c,W as d};
6
+ `;var D=b(C(),1),w=b(k(),1),I=K(H(()=>(__graviewPreload(import.meta.url,["./chunk.4QWTSI7V.js","./chunk.CZH27V2R.js","./chunk.OVSZXILB.js","./chunk.BDBLGGFJ.js","./chunk.CJUIJ6TL.js","./chunk.VFRURRNI.js","./chunk.X2G4ZRB2.js","./chunk.UITZ74YJ.js","./chunk.MHILFBK6.js","./chunk.MB7LKKUD.js","./chunk.Q6LLURRM.js","./chunk.AXXYJCSW.js","./chunk.N4LOI3YA.js","./chunk.RKZ4J3H2.js","./chunk.HKINU7VO.js","./chunk.YGZCESXY.js","./chunk.NSGQXCH6.js","./chunk.SZG6HJWH.js","./chunk.2FOIJ5ID.js","./chunk.6IUEGPCZ.js","./chunk.CUJX3IVA.js","./chunk.VNJKGSGZ.js","./chunk.SDO3U72B.js","./chunk.X3MMJ3QC.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.L3K25NCS.js")))),U=I.part((t,i)=>(0,w.jsx)(t.SeveralBar,{...i}),{what:"The selection bar"});function Q(t){return t.chosen.length===0?null:(0,w.jsx)(D.Suspense,{fallback:null,children:(0,w.jsx)(U,{...t})})}var W=()=>I.prefetch();export{Y as a,$ as b,Q as c,W as d};