graview 0.1.57 → 0.1.58

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 (159) hide show
  1. package/dist/preview/{chunk.N33WUCAN.js → chunk.27CW6SCT.js} +1 -1
  2. package/dist/preview/{chunk.XTBS64IT.js → chunk.2EDC63RI.js} +1 -1
  3. package/dist/preview/{chunk.JD5HSAMC.js → chunk.2VYNNWW5.js} +3 -3
  4. package/dist/preview/chunk.32FMOHZK.js +1 -0
  5. package/dist/preview/{chunk.LHIT3EZD.js → chunk.34TW32TB.js} +2 -2
  6. package/dist/preview/{chunk.QMYHXMRV.js → chunk.3FCOFEGW.js} +1 -1
  7. package/dist/preview/{chunk.JETT6ELP.js → chunk.3OYGXYQY.js} +1 -1
  8. package/dist/preview/{chunk.RQX4CQJN.js → chunk.3YZHZGTM.js} +1 -1
  9. package/dist/preview/{chunk.YS5U3DUX.js → chunk.43OKZU73.js} +1 -1
  10. package/dist/preview/{chunk.O47MN7E5.js → chunk.4444RPWW.js} +1 -1
  11. package/dist/preview/{chunk.N2DM42SG.js → chunk.47JQPYXL.js} +2 -2
  12. package/dist/preview/{chunk.57BKS5KD.js → chunk.4AFFPYOK.js} +1 -1
  13. package/dist/preview/chunk.4GGPPCMM.js +1 -0
  14. package/dist/preview/{chunk.534TBZJ3.js → chunk.4HSH2UIK.js} +2 -2
  15. package/dist/preview/{chunk.LKJ6FD6Y.js → chunk.4KC35UNR.js} +1 -1
  16. package/dist/preview/{chunk.EZ4NUZWX.js → chunk.4Y2JTY6Q.js} +1 -1
  17. package/dist/preview/{chunk.5BPRGXIW.js → chunk.5ICIMQE6.js} +1 -1
  18. package/dist/preview/{chunk.YR75TWDV.js → chunk.64R3K2OE.js} +1 -1
  19. package/dist/preview/chunk.6K7EN2YI.js +1 -0
  20. package/dist/preview/{chunk.YQXA4WAM.js → chunk.6VC6AGYV.js} +2 -2
  21. package/dist/preview/{chunk.4HPP35XQ.js → chunk.6W7O5YLL.js} +1 -1
  22. package/dist/preview/chunk.7BBGRTXM.js +5 -0
  23. package/dist/preview/{chunk.IRQOJATD.js → chunk.7MSFDD7J.js} +1 -1
  24. package/dist/preview/{chunk.XVN3CQKH.js → chunk.7SQAKSJD.js} +1 -1
  25. package/dist/preview/{chunk.DM5X3JBH.js → chunk.7V23SXGJ.js} +1 -1
  26. package/dist/preview/{chunk.DWLKJGVT.js → chunk.A6C4AGJJ.js} +1 -1
  27. package/dist/preview/{chunk.LWRXCO2Z.js → chunk.ACYDJQRC.js} +1 -1
  28. package/dist/preview/{chunk.RVR6FWAF.js → chunk.ARWBIBSI.js} +1 -1
  29. package/dist/preview/{chunk.7VIFAN3O.js → chunk.B2GVJD6H.js} +1 -1
  30. package/dist/preview/{chunk.NL3AJZ3N.js → chunk.B3WZHPM3.js} +1 -1
  31. package/dist/preview/{chunk.5NZDFT6R.js → chunk.BB33TI4S.js} +1 -1
  32. package/dist/preview/{chunk.UBNZDSS7.js → chunk.BKVBX2YB.js} +1 -1
  33. package/dist/preview/{chunk.FLMNWVSY.js → chunk.BTVBZ6KE.js} +2 -2
  34. package/dist/preview/{chunk.JBSW7ZNH.js → chunk.CCWPF5PK.js} +1 -1
  35. package/dist/preview/{chunk.7UBABS2T.js → chunk.D5KTGX7F.js} +1 -1
  36. package/dist/preview/{chunk.YPP7FSEZ.js → chunk.DBZHRYBK.js} +1 -1
  37. package/dist/preview/{chunk.NUS5K56R.js → chunk.DM767F2Q.js} +2 -2
  38. package/dist/preview/{chunk.MAZFQIL5.js → chunk.E34OQVSR.js} +1 -1
  39. package/dist/preview/{chunk.72IHABM5.js → chunk.E5MSFXL6.js} +1 -1
  40. package/dist/preview/{chunk.7ML2BWSP.js → chunk.EB4NVTJL.js} +1 -1
  41. package/dist/preview/{chunk.ZNXRHOUI.js → chunk.ELAMMS2V.js} +1 -1
  42. package/dist/preview/{chunk.QPL3OXW3.js → chunk.ELERUERU.js} +1 -1
  43. package/dist/preview/{chunk.I636CZE4.js → chunk.EPPXZZPK.js} +1 -1
  44. package/dist/preview/{chunk.LUIRQ5UF.js → chunk.EQTSV7BK.js} +1 -1
  45. package/dist/preview/{chunk.MRHPOUA4.js → chunk.ETBFD76E.js} +1 -1
  46. package/dist/preview/{chunk.VHPGGC2P.js → chunk.F7SF6EP2.js} +1 -1
  47. package/dist/preview/{chunk.DSLGMCB6.js → chunk.GCBZ3WE2.js} +1 -1
  48. package/dist/preview/{chunk.IX63LTRQ.js → chunk.GDOTG7YA.js} +1 -1
  49. package/dist/preview/{chunk.LE2KAR25.js → chunk.GEB2DFBU.js} +1 -1
  50. package/dist/preview/{chunk.V6FUYRZI.js → chunk.GKSUTAIX.js} +1 -1
  51. package/dist/preview/{chunk.4L4F47QP.js → chunk.GP7F3PEF.js} +1 -1
  52. package/dist/preview/{chunk.FJTWAU7N.js → chunk.GQBJVCSM.js} +1 -1
  53. package/dist/preview/{chunk.IV7AUO53.js → chunk.GUEHKCWN.js} +1 -1
  54. package/dist/preview/{chunk.4HFCOMR3.js → chunk.GZB6A6KF.js} +1 -1
  55. package/dist/preview/{chunk.D3LQJXVP.js → chunk.H3BFHI3G.js} +1 -1
  56. package/dist/preview/{chunk.NZDWXX6H.js → chunk.HEWVPXRE.js} +1 -1
  57. package/dist/preview/{chunk.4NPXMYA5.js → chunk.HMFJT4KO.js} +1 -1
  58. package/dist/preview/{chunk.UGOKORIF.js → chunk.HS3GHAUR.js} +1 -1
  59. package/dist/preview/{chunk.DBMZ3AQB.js → chunk.HT2BEOEV.js} +1 -1
  60. package/dist/preview/{chunk.7IXTNST2.js → chunk.HXRV3WVJ.js} +1 -1
  61. package/dist/preview/{chunk.PQMMISCQ.js → chunk.HZB5F476.js} +1 -1
  62. package/dist/preview/{chunk.H5CRRBNU.js → chunk.I3WWCPQ2.js} +1 -1
  63. package/dist/preview/{chunk.UWQ3I5OW.js → chunk.IDJPBWL2.js} +1 -1
  64. package/dist/preview/{chunk.HFSG3F5Z.js → chunk.ILRCNTGT.js} +1 -1
  65. package/dist/preview/{chunk.I5PSHASU.js → chunk.INZQ6WZM.js} +1 -1
  66. package/dist/preview/{chunk.FLVE6IBM.js → chunk.IULQRCEE.js} +1 -1
  67. package/dist/preview/{chunk.JNNBHD4Z.js → chunk.JB7TTJXQ.js} +1 -1
  68. package/dist/preview/{chunk.Q6OZLBNL.js → chunk.JES77WXG.js} +1 -1
  69. package/dist/preview/{chunk.BUSFJM6P.js → chunk.JGKA5QBX.js} +1 -1
  70. package/dist/preview/chunk.JOAN54PN.js +1 -0
  71. package/dist/preview/{chunk.EXZLG3HK.js → chunk.JUNMJYH5.js} +1 -1
  72. package/dist/preview/{chunk.TVURUMU4.js → chunk.KFQSYCY3.js} +1 -1
  73. package/dist/preview/{chunk.NGK6IRV3.js → chunk.KJ264E6K.js} +1 -1
  74. package/dist/preview/{chunk.4XKRCAJZ.js → chunk.KJHPDL4N.js} +1 -1
  75. package/dist/preview/{chunk.FPGU43SC.js → chunk.KKNDX4JT.js} +1 -1
  76. package/dist/preview/{chunk.KYOI7BG3.js → chunk.KWJWAIQJ.js} +1 -1
  77. package/dist/preview/{chunk.MBLFZF5R.js → chunk.KXPRILAO.js} +1 -1
  78. package/dist/preview/chunk.L7V24JPO.js +1 -0
  79. package/dist/preview/chunk.LA4CPZ2N.js +1 -0
  80. package/dist/preview/{chunk.EZ4TZUMM.js → chunk.LCPGZK7G.js} +1 -1
  81. package/dist/preview/{chunk.7INWDFNG.js → chunk.LDAYDCUO.js} +1 -1
  82. package/dist/preview/{chunk.C7EJPV2N.js → chunk.LL2MLSPH.js} +1 -1
  83. package/dist/preview/{chunk.C5EFUODO.js → chunk.LMN4TSAP.js} +1 -1
  84. package/dist/preview/{chunk.TBRXNU6T.js → chunk.LO3U3P55.js} +1 -1
  85. package/dist/preview/{chunk.VDS3IOTK.js → chunk.LRUNFSHP.js} +1 -1
  86. package/dist/preview/{chunk.4W5GCPAP.js → chunk.LY3YOWKV.js} +1 -1
  87. package/dist/preview/{chunk.33PZEW5A.js → chunk.M34CS7DI.js} +1 -1
  88. package/dist/preview/{chunk.D4EP7FEC.js → chunk.MQ5HBUBL.js} +1 -1
  89. package/dist/preview/chunk.MV3AJ7JH.js +1 -0
  90. package/dist/preview/chunk.MYNQWWCL.js +1 -0
  91. package/dist/preview/{chunk.5GTOF5D5.js → chunk.NFX24NUI.js} +1 -1
  92. package/dist/preview/{chunk.47T3KUAA.js → chunk.NKC3JILT.js} +1 -1
  93. package/dist/preview/{chunk.N5MQARN6.js → chunk.NOFWGDOT.js} +1 -1
  94. package/dist/preview/{chunk.4UQBMFJZ.js → chunk.O4CVKTPJ.js} +1 -1
  95. package/dist/preview/{chunk.4OP4IEEY.js → chunk.OASYYMG5.js} +1 -1
  96. package/dist/preview/{chunk.VW4JAQCH.js → chunk.OHQ3JH65.js} +1 -1
  97. package/dist/preview/{chunk.NF72Z2HG.js → chunk.PBCNOFQH.js} +1 -1
  98. package/dist/preview/chunk.PM3SYXKB.js +1 -0
  99. package/dist/preview/{chunk.66LWZIY5.js → chunk.POBMGM3X.js} +1 -1
  100. package/dist/preview/{chunk.DJ4A76SX.js → chunk.PZG3B7F4.js} +1 -1
  101. package/dist/preview/chunk.QB25SMP6.js +1 -0
  102. package/dist/preview/{chunk.BZEJM2PY.js → chunk.QGV7H7RQ.js} +1 -1
  103. package/dist/preview/chunk.QPXXY2DL.js +1133 -0
  104. package/dist/preview/{chunk.BPEUHOKH.js → chunk.R7LFO7KI.js} +1 -1
  105. package/dist/preview/{chunk.NX7CR4AE.js → chunk.RE7DELSR.js} +1 -1
  106. package/dist/preview/{chunk.KPIDJYIU.js → chunk.RRKYJYZJ.js} +1 -1
  107. package/dist/preview/{chunk.KTV24HY7.js → chunk.S2H7B6RG.js} +1 -1
  108. package/dist/preview/chunk.S5MGE2U5.js +1 -0
  109. package/dist/preview/{chunk.Y3EOGXRS.js → chunk.SDVPJYVF.js} +1 -1
  110. package/dist/preview/{chunk.VSGTNYM2.js → chunk.SPXRLO5K.js} +1 -1
  111. package/dist/preview/{chunk.Z5UVYOGC.js → chunk.TBW7CU4G.js} +1 -1
  112. package/dist/preview/{chunk.4JDHBNEA.js → chunk.TF5I4VHX.js} +1 -1
  113. package/dist/preview/{chunk.4K6VAC2S.js → chunk.TJ647W6J.js} +2 -2
  114. package/dist/preview/{chunk.QS6YW7UY.js → chunk.TJOXNEFU.js} +1 -1
  115. package/dist/preview/{chunk.EQAAKYLA.js → chunk.TUUVVO5U.js} +1 -1
  116. package/dist/preview/{chunk.M72JKVHP.js → chunk.TWKXSLYY.js} +1 -1
  117. package/dist/preview/chunk.TXGNPW76.js +1 -0
  118. package/dist/preview/{chunk.WASWMHND.js → chunk.U6O3MMQR.js} +1 -1
  119. package/dist/preview/{chunk.6SD7YZ4U.js → chunk.UAP5M3CD.js} +2 -2
  120. package/dist/preview/chunk.UKMVJV6Q.js +1 -0
  121. package/dist/preview/chunk.UUG3BYVN.js +1 -0
  122. package/dist/preview/{chunk.BCE6LIDR.js → chunk.VG7OWV2H.js} +1 -1
  123. package/dist/preview/{chunk.MWWOI5PW.js → chunk.VHSWBFXB.js} +1 -1
  124. package/dist/preview/{chunk.3DPTDMJ7.js → chunk.VUPLFUUS.js} +1 -1
  125. package/dist/preview/chunk.WJFQIE3Y.js +1 -0
  126. package/dist/preview/{chunk.547FQPYG.js → chunk.WNQFHMNR.js} +1 -1
  127. package/dist/preview/{chunk.SAJLIA5M.js → chunk.WNSC3RWD.js} +1 -1
  128. package/dist/preview/{chunk.UV3U4FRT.js → chunk.WQOI6BLM.js} +1 -1
  129. package/dist/preview/{chunk.CUKRUQQ2.js → chunk.WXIEQZLY.js} +1 -1
  130. package/dist/preview/{chunk.53U6E5LD.js → chunk.XN2RVXOI.js} +1 -1
  131. package/dist/preview/{chunk.RALAID6N.js → chunk.XU34T2H4.js} +1 -1
  132. package/dist/preview/{chunk.JQFIZRAZ.js → chunk.YD3TKV6P.js} +2 -2
  133. package/dist/preview/{chunk.FRERJWZJ.js → chunk.YHTE34RN.js} +1 -1
  134. package/dist/preview/{chunk.CMLNBJZG.js → chunk.YIA2EDVF.js} +1 -1
  135. package/dist/preview/{chunk.AD3EC5DU.js → chunk.YP2F5UGY.js} +1 -1
  136. package/dist/preview/{chunk.G3BDQ6EA.js → chunk.YS6GVLIP.js} +1 -1
  137. package/dist/preview/{chunk.S5ECRIG5.js → chunk.YZZONE4M.js} +1 -1
  138. package/dist/preview/{chunk.2PWVDUOU.js → chunk.ZN5HTWSI.js} +1 -1
  139. package/dist/preview/{chunk.4BRM5SGO.js → chunk.ZOHMWSHD.js} +1 -1
  140. package/dist/preview/index.html +50 -50
  141. package/dist/preview/page.js +2 -2
  142. package/package.json +6 -6
  143. package/dist/preview/chunk.4SBYXHCQ.js +0 -1
  144. package/dist/preview/chunk.57KRCHQT.js +0 -1
  145. package/dist/preview/chunk.6AH26OL7.js +0 -1132
  146. package/dist/preview/chunk.7VZA34T4.js +0 -1
  147. package/dist/preview/chunk.CXB4BSI4.js +0 -1
  148. package/dist/preview/chunk.DIFR37EZ.js +0 -5
  149. package/dist/preview/chunk.DQUISKTC.js +0 -1
  150. package/dist/preview/chunk.DSWMXM57.js +0 -1
  151. package/dist/preview/chunk.GBAUQXXD.js +0 -1
  152. package/dist/preview/chunk.I2NI7CT7.js +0 -1
  153. package/dist/preview/chunk.I6H3HRWT.js +0 -1
  154. package/dist/preview/chunk.KO7IOFNY.js +0 -1
  155. package/dist/preview/chunk.OYUDK3LK.js +0 -1
  156. package/dist/preview/chunk.PF5P5YVD.js +0 -1
  157. package/dist/preview/chunk.WYPL2QUA.js +0 -1
  158. package/dist/preview/chunk.Y4KNR76Z.js +0 -1
  159. package/dist/preview/chunk.YDTXCVBU.js +0 -1
@@ -0,0 +1,5 @@
1
+ import{a as dr,b as le,c as Le,d as Nn,f as Se,g as cr,h as Ze,i as In,j as fi}from"./chunk.FQLNBIQ5.js";var ur="en-US",ft=/^\d{4}-\d{2}-\d{2}$/,pi=/^\d{4}(?:-(?:0[1-9]|1[0-2]))?$/,fr=/^\d{4}(?:-(?:0[1-9]|1[0-2])(?:-\d{2})?)?$/,pt=/^\d{4}(-\d\d){2}[T ]\d\d:\d\d(:[\d.]+)?(Z|[+-][\d:]+)?$/,lh=n=>!Number.isNaN(Date.parse(n)),Q=(n,e=Date.now())=>{let t=ht(n);return t?pr(e,t).day:new Date(e).toISOString().slice(0,10)},ht=n=>sn(n)??on,Tn,jn,Dn,on;function Oc(n){Tn=Fn(n.reader),jn=Fn(n.app),Dn=sn(n.readerTimeZone),on=sn(n.appTimeZone)}function Pc(n,e){let t=[Tn,jn,Dn,on];n.reader!==void 0&&(Tn=Fn(n.reader)),n.app!==void 0&&(jn=Fn(n.app)),n.readerTimeZone!==void 0&&(Dn=sn(n.readerTimeZone)),n.appTimeZone!==void 0&&(on=sn(n.appTimeZone));try{return e()}finally{[Tn,jn,Dn,on]=t}}var hi=n=>Tn??Fn(n)??jn??ur,gt=n=>Dn??sn(n)??on,Ec=n=>gt(n)??Intl.DateTimeFormat().resolvedOptions().timeZone??"UTC",Mc=/^\s*([+\-−]|\d)/;var lr=new Map;function sn(n){if(n&&!lr.has(n)){let e=!1;try{new Intl.DateTimeFormat(ur,{timeZone:n}),e=!Mc.test(n)}catch{}lr.set(n,e)}return n&&lr.get(n)?n:void 0}var Ce=new Map;function Fn(n){if(n&&!Ce.has(n)){let e=!1;try{e=Intl.DateTimeFormat.supportedLocalesOf(n).length>0}catch{}Ce.set(n,e)}return n&&Ce.get(n)?n:void 0}function $e(n,e,t,r){let o=`${t=hi(t)}${r?"#":"@"}${JSON.stringify(e)}`,i=Ce.get(o);return i||Ce.set(o,i=r?new Intl.NumberFormat(t,e):new Intl.DateTimeFormat(t,e)),i.format(n).replace(/ /g," ")}var Ge="UTC",mt=n=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10));function Re(n,e){return pi.test(n)?n.length===4?n:bi(n,{},e):ft.test(n)?$e(mt(n),{year:"numeric",month:"short",day:"numeric",timeZone:Ge},e):n}function pr(n,e){let t=`wall@${e??""}`,r=Ce.get(t);r||Ce.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 gi(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=pr(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),mi=n=>/[Z+-][\d:]*$/.test(n.slice(16));function yi(n,e,t,r,o=!1){if(!pt.test(n))return n;let i=mi(n),s=Date.parse(n.replace(" ","T")+(i?"":"Z"));if(Number.isNaN(s))return n;let a=i?gt(r):Ge;return $e(s,{...e,hour:"numeric",minute:"2-digit",...i&&o?{timeZoneName:"short"}:{},...a?{timeZone:a}:{}},t)}var hr=(n,e,t)=>yi(n,{year:"numeric",month:"short",day:"numeric"},e,t,!0),Nc=(n,e,t)=>yi(n,{},e,t);function Ic(n,e){if(ft.test(n))return n;if(!pt.test(n))return;if(!mi(n))return n.slice(0,10);let t=Date.parse(n.replace(" ","T"));return Number.isNaN(t)?void 0:pr(t,gt(e)).day}function me(n,e,t={maximumFractionDigits:2}){return Number.isFinite(n)?$e(n,t,e,!0):String(n)}function Tc(n,e={},t){return ft.test(n)?$e(mt(n),{weekday:e.weekday??"long",month:"short",day:"numeric",...e.year?{year:"numeric"}:{},timeZone:Ge},t):n}function jc(n,e){return ft.test(n)?$e(mt(n),{month:"short",day:"numeric",timeZone:Ge},e):n}function bi(n,e={},t){if(!/^\d{4}-\d{2}/.test(n))return n;let r=e.year??!e.short;return $e(mt(`${n.slice(0,7)}-01`),{month:e.short?"short":"long",...r?{year:e.short?"2-digit":"numeric"}:{},timeZone:Ge},t)}var Dc=(n,e="short",t)=>$e(Date.UTC(1970,0,4+n),{weekday:e,timeZone:Ge},t),Fc=(n,e)=>$e(Date.UTC(1970,0,1,0,Math.round(n)),{hour:"numeric",minute:"2-digit",timeZone:Ge},e),Lc=/(?<![\w-])(\d{4}-\d{2}-\d{2})(?![\w-]|:)/g;function gr(n,e){return n.includes("-")?n.replace(Lc,t=>Re(t,e)):n}var an=n=>n.charAt(0).toUpperCase()+n.slice(1),vi=n=>/^.\p{Lu}/u.test(n)?n:n.charAt(0).toLowerCase()+n.slice(1),xi=(n,e="and")=>n.length>1?`${n.slice(0,-1).join(", ")} ${e} ${n.at(-1)}`:n[0]??"";function C(n){let e=n.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").trim().toLowerCase();return an(e.replace(/\b[a-z]+\b/g,t=>wi.has(t)?t.toUpperCase():t.endsWith("s")&&wi.has(t.slice(0,-1))?`${t.slice(0,-1).toUpperCase()}s`:t))}var wi=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 Zc(n,e){return{...e,kind:n,edges:e.edges??{}}}function mr(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??Q()):!r.retired.includes(o)}function G(n,e){if(n?.label)return n.label(e);let t=e.label;return typeof t=="string"&&t.length>0?t:e.id}function Cc(n){return n.title??C(n.name)}function Gc(n,e,t){let r=n.tryDefinition(e);return`${me(t)} ${t===1?q(r,e):ie(n,e).toLowerCase()}`}function ie(n,e){return n.tryDefinition(e)?.plural??`${C(e).toLowerCase()}s`}function Kc(n,e){return an(ie(n,e))}function Vc(n,e){let t=ie(n,e);return`All ${/^[A-Z][a-z]/.test(t)?t.charAt(0).toLowerCase()+t.slice(1):t}`}function yt(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":C(e))}var Bc=/^(u[nt]i|use|usu|uti|ubiq|eu|ewe|one|once)/,Uc=/^(hour|honest|hono[ur]r?|heir)/;function ki(n){let e=C(n).toLowerCase();return Uc.test(e)?"an":Bc.test(e)?"a":/^[aeiou]/.test(e)?"an":"a"}function dn(n){return`${ki(n)} ${C(n).toLowerCase()}`}function q(n,e){return n?.noun??C(e).toLowerCase()}function vr(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 xr(n,e="|"){return n.map(t=>Rr(t)).join(e)}function $i(n,e){return typeof e=="bigint"?e.toString():e}var br=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 Ri(n){return new br(n)}function Ai(n){return n==null}function wr(n){let e=n.startsWith("^")?1:0,t=n.endsWith("$")?n.length-1:n.length;return n.slice(e,t)}function _i(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 Si=Symbol("evaluating");function Oi(n,e,t){let r;Object.defineProperty(n,e,{get(){if(r!==Si)return r===void 0&&(r=Si,r=t()),r},set(o){Object.defineProperty(n,e,{value:o})},configurable:!0})}function vt(n,e,t){Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0})}function Pi(n){let e=Object.getOwnPropertyDescriptor(n,"shape");return e?.get?e.get.raw:e?.value}function kr(n){return Pi(n._zod.def)??n._zod.def.shape}function Ei(n,e,t){Object.defineProperty(n,e,{get(){let r=t();return vt(this,e,r),r},enumerable:!0,configurable:!0})}function Mi(n,e,t){e in n?vt(n,e,t):n[e]=t}function Wc(n,e,t,r){let o=kr(e);for(let i of t){let s=Object.getOwnPropertyDescriptor(o,i);s.enumerable&&(s.get?Ei(n,i,()=>{let a=e._zod.def.shape[i];return r?r(a,i):a}):Mi(n,i,r?r(s.value,i):s.value))}}function qc(n,e){for(let t of Reflect.ownKeys(e)){let r=Object.getOwnPropertyDescriptor(e,t);r.enumerable&&(r.get?Ei(n,t,()=>e[t]):Mi(n,t,r.value))}}function zi(...n){let e={};for(let t of n){let r=Object.getOwnPropertyDescriptors(t);Object.assign(e,r)}return Object.defineProperties({},e)}var Sr="captureStackTrace"in Error?Error.captureStackTrace:(...n)=>{};function bt(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function $r(n){if(bt(n)===!1)return!1;let e=n.constructor;if(e===void 0||typeof e!="function")return!0;let t=e.prototype;return!(bt(t)===!1||Object.prototype.hasOwnProperty.call(t,"isPrototypeOf")===!1)}var Ni=new Set(["string","number","symbol"]);function Zn(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function cn(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 Rr(n){return typeof n=="bigint"?n.toString()+"n":typeof n=="string"?`"${n}"`:`${n}`}function Ii(n){return Object.keys(n).filter(e=>n[e]._zod.optin!==void 0&&n[e]._zod.optout==="optional")}var Ti={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 ji(n,e){if(!$r(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=kr(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 cn(n,zi(n._zod.def,{shape:Hc(n,e)}))}function Hc(n,e){let t={};return Wc(t,n,Reflect.ownKeys(kr(n))),qc(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 Di(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 _e(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 Ar(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 Yc=/[\uD800-\uDBFF]/;function _r(n){let e=n.length;if(!Yc.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 Or(n){return Array.isArray(n)?"array":typeof n=="string"?"string":"unknown"}function Fi(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 Li(n,e){for(let t in e){let r=Object.getOwnPropertyDescriptor(e,t);r.get?Object.defineProperty(n,t,{...r,enumerable:!1}):Jc(n,t,r.value)}}function Ke(n,e,t,r=!0){return Object.defineProperty(n,e,{configurable:!0,writable:!0,enumerable:r,value:t}),t}function Pr(n,e,t){return Ke(n,e,t,!1)}function Jc(n,e,t){Object.defineProperty(n,e,{configurable:!0,get(){return this==null?t:Ke(this,e,t.bind(this))},set(r){Ke(this,e,r)}})}function Xc(n,e){let t=Object.getPrototypeOf(n);return e in t?void 0:t}var yr,Ae=!1,Qc={configurable:!0,get(){Ae=!0}};function H(n,e,t){let r=Object.getPrototypeOf(n._zod);if(e in r&&yr!==n._zod){yr=void 0;return}yr=n._zod,Object.defineProperty(r,e,{configurable:!0,get(){Object.defineProperty(this,e,Qc);let o=Ae;Ae=!1;try{let i=t(this);return Ae?delete this[e]:Object.defineProperty(this,e,{configurable:!0,writable:!0,value:i}),Ae=Ae||o,i}catch(i){throw delete this[e],Ae=Ae||o,i}},set(o){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:o})}})}function Zi(n,e,t,r){let o=Xc(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 Ci;var Er={value:void 0,enumerable:!1},Gi="captureStackTrace"in Error?Error:null;function el(n){let e=Gi;if(e){let t=e.stackTraceLimit;if(typeof t=="number"){try{e.stackTraceLimit=0}catch{return Gi=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{Er.value=new i(p);try{Object.defineProperty(c,"_zod",Er)}finally{Er.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 w=y??h;a.has(w)||(a.add(w),Li(w,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?el(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 xe=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};(Ci=globalThis).__zod_globalConfig??(Ci.__zod_globalConfig={});var ln=globalThis.__zod_globalConfig;function ne(n){return n&&Object.assign(ln,n),ln}function nl(){let n=this._zod;return n.message??(n.message=JSON.stringify(n.def,$i,2)),n.message}function tl(n){this._zod.message=n}var rl={get:nl,set:tl,enumerable:!0,configurable:!0},zr={value:void 0,enumerable:!1},Ki=new WeakSet([Object.prototype,Error.prototype]),Vi=(n,e)=>{n.name="$ZodError",zr.value=e,Object.defineProperty(n,"issues",zr),zr.value=void 0,Object.defineProperty(n,"message",rl);let t=Object.getPrototypeOf(n);Ki.has(t)||(Ki.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})}}))},wh=O("$ZodError",Vi),Gn=O("$ZodError",Vi,void 0,{Parent:Error});var il=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 xe;if(a.issues.length){let d=new(i?.Err??n)(a.issues.map(u=>be(u,s,ne())));throw Sr(d,i?.callee??e),d}return a.value};return e},Nr=il(Gn),sl=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,ne())));throw Sr(d,i?.callee??e),d}return a.value};return e},Ir=sl(Gn),al=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 xe;return i.issues.length?Bi(n,i.issues,o):{success:!0,data:i.value}},Tr=al(Gn);function Bi(n,e,t){let r;return{success:!1,get error(){return r||(r=new n(e.map(o=>be(o,t,ne()))),e=void 0,t=void 0),r},set error(o){r=o,e=void 0,t=void 0}}}var dl=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?Bi(n,i.issues,o):{success:!0,data:i.value}},jr=dl(Gn);var Ui=/^(?:[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 Wi=/^https?$/;var qi=/^[\s\S]{0,}$/;var Dr=/^-?\d+(?:\.\d+)?$/,Hi=/^(?:true|false)$/i,Yi=/^null$/i;var te=O("$ZodCheck",(n,e)=>{var t;n._zod??(n._zod={}),n._zod.def=e,(t=n._zod).onattach??(t.onattach=[])});var Ji=n=>{let e=n.value;return!Ai(e)&&e.length!==void 0},xt={number:"number",bigint:"bigint",object:"date"},Xi=O("$ZodCheckLessThan",(n,e)=>{te.init(n,e);let t=xt[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value<=e.value:r.value<e.value)||r.issues.push({origin:xt[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})}}),Qi=O("$ZodCheckGreaterThan",(n,e)=>{te.init(n,e);let t=xt[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value>=e.value:r.value>e.value)||r.issues.push({origin:xt[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})}}),es=O("$ZodCheckMultipleOf",(n,e)=>{te.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):_i(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})}}),ns=O("$ZodCheckNumberFormat",(n,e)=>{te.init(n,e),e.format=e.format||"float64";let t=e.format?.includes("int"),r=t?"int":"number",[o,i]=Ti[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 ts=O("$ZodCheckMaxLength",(n,e)=>{var t;te.init(n,e),(t=n._zod.def).when??(t.when=Ji),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>e.maximum?_r(o):i)<=e.maximum)return;let a=Or(o);r.issues.push({origin:a,code:"too_big",maximum:e.maximum,inclusive:!0,input:o,inst:n,continue:!e.abort})}}),rs=O("$ZodCheckMinLength",(n,e)=>{var t;te.init(n,e),(t=n._zod.def).when??(t.when=Ji),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>=e.minimum&&i<e.minimum*2?_r(o):i)>=e.minimum)return;let a=Or(o);r.issues.push({origin:a,code:"too_small",minimum:e.minimum,inclusive:!0,input:o,inst:n,continue:!e.abort})}});var Lr=O("$ZodCheckStringFormat",(n,e)=>{var t,r;te.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=()=>{})}),os=O("$ZodCheckRegex",(n,e)=>{Lr.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 ss={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=ss;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(Di(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 xe;if(f||g instanceof Promise)f=(f??Promise.resolve()).then(async()=>{await g,a.issues.length!==p&&(Ar(a.issues,p,n),l||(l=ye(a,p)))});else{if(a.issues.length===p)continue;Ar(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 xe;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 xe;return u.then(l=>i(l,o,d))}return i(u,o,d)}}},{get"~standard"(){return Pr(this,"~standard",ll(this))},set"~standard"(n){Ke(this,"~standard",n)}}),fs=(n,e)=>n.issues.length?{issues:n.issues.map(t=>be(t,e,ne()))}:{value:n.value};async function cl(n,e){let t={async:!0};return fs(await n._zod.run({value:e,issues:[]},t),t)}function ll(n){return{validate:e=>{let t={async:!1};try{let r=n._zod.run({value:e,issues:[]},t);if(!(r instanceof Promise))return fs(r,t)}catch{}return cl(n,e)},vendor:"zod",version:1}}var Zr=O("$ZodString",(n,e)=>{V.init(n,e),n._zod.pattern=e.pattern??qi,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}}),St=O("$ZodStringFormat",(n,e)=>{Lr.init(n,e),Zr.init(n,e)});var ps=O("$ZodEmail",(n,e)=>{e.pattern??(e.pattern=Ui),St.init(n,e)}),hs=1,wt=2;function ul(n){try{return typeof URL<"u"&&typeof URL.canParse=="function"?URL.canParse(n):(new URL(n),!0)}catch{return!1}}function fl(n,e){return!("normalize"in e)&&!("hostname"in e)&&!("protocol"in e)?ul(n)||wt:pl(n,e)}function pl(n,e){if(!e.normalize&&e.protocol?.source===Wi.source&&!/^https?:\/\//i.test(n))return hs;try{if(typeof URL<"u"){let t=URL;if(typeof t.parse=="function")return t.parse(n)??wt}return new URL(n)}catch{return wt}}var hl=/[\t\n\r]/g;function as(n){return n.replace(hl,"")}function gl(n,e){return e.lastIndex=0,e.test(n.hostname)}function ml(n,e){return e.lastIndex=0,e.test(n.protocol.endsWith(":")?n.protocol.slice(0,-1):n.protocol)}var gs=O("$ZodURL",(n,e)=>{St.init(n,e),n._zod.check=t=>{try{let r=t.value.trim(),o=fl(r,e);if(o===hs){t.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:t.value,inst:n,continue:!e.abort});return}if(o===wt){t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort});return}if(o===!0){t.value=as(r);return}e.hostname&&!gl(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&&!ml(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:as(r);return}catch{t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort})}}});var Cr=O("$ZodNumber",(n,e)=>{V.init(n,e),n._zod.pattern=Dr,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}}),ms=O("$ZodNumberFormat",(n,e)=>{ns.init(n,e),Cr.init(n,e)}),ys=O("$ZodBoolean",(n,e)=>{V.init(n,e),n._zod.pattern=Hi,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 bs=O("$ZodNull",(n,e)=>{V.init(n,e),n._zod.pattern=Yi,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 vs=O("$ZodUnknown",(n,e)=>{V.init(n,e),n._zod.parse=t=>t}),xs=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 ds(n,e,t){n.issues.length&&e.issues.push(..._e(t,n.issues)),e.value[t]=n.value}var ws=O("$ZodArray",(n,e)=>{V.init(n,e);let t=ln.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=>ds(f,r,d)));else if(ds(l,r,d),a&&l.issues.length!==0&&ye(l))break}return s.length?Promise.all(s).then(()=>r):r}});function kt(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(..._e(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 yl=[];function bl(n){let e=Object.keys(n.shape),t=Object.getOwnPropertySymbols(n.shape),r=t.length?t:yl,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=Ii(n.shape);return{...n,allKeys:o,symbolKeys:r,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(i)}}function vl(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=>kt(v,t,g,e,f,c))):kt(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 ks=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=Ri(()=>bl(e));H(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)||vt(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=bt,s=e.catchall,a,d=ln.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],w=y._zod.optin,A=y._zod.optout,k=y._zod.run({value:f[v],issues:[]},l);k instanceof Promise?c.push(k.then(_=>kt(_,u,v,f,w,A))):kt(k,u,v,f,w,A)}return s?vl(c,f,u,l,o.value,n,g===!0):c.length?Promise.all(c).then(()=>u):u}});function cs(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,ne())))}),e)}var Ss=O("$ZodUnion",(n,e)=>{V.init(n,e),H(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),H(n,"optout",r=>r.def.options.some(o=>o._zod.optout==="optional")?"optional":void 0),H(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)))}),H(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=>wr(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=>cs(a,r,n,o)):cs(s,r,n,o)}});var $s=O("$ZodRecord",(n,e)=>{V.init(n,e);let t=ln.memoizer;t?.attach(n),n._zod.parse=(r,o)=>{let i=r.value;if(!$r(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,ne())),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(..._e(l,g.issues)),r.value[c]=g.value})):(p.issues.length&&r.issues.push(..._e(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"&&Dr.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,ne())),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(..._e(u,g.issues)),r.value[c]=g.value})):(p.issues.length&&r.issues.push(..._e(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 Rs=O("$ZodEnum",(n,e)=>{V.init(n,e);let t=vr(e.entries),r=new Set(t);n._zod.values=r,H(n,"pattern",o=>{let i=vr(o.def.entries).filter(s=>Ni.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}}),As=O("$ZodLiteral",(n,e)=>{V.init(n,e);let t=new Set(e.values);n._zod.values=t,H(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 ls(n,e){return n.value=e.issues.length?void 0:e.value,n}var _s=O("$ZodOptional",(n,e)=>{V.init(n,e),H(n,"optin",t=>t.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),n._zod.optout="optional",H(n,"values",t=>{let r=t.def.innerType._zod.values;return r?new Set([...r,void 0]):void 0}),H(n,"pattern",t=>{let r=t.def.innerType._zod.pattern;return r?new RegExp(`^(${wr(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=>ls(t,i)):ls(t,o)}return e.innerType._zod.run(t,r)}});var Os=O("$ZodLazy",(n,e)=>{V.init(n,e),Oi(n._zod,"innerType",()=>{let t=e;return t._cachedInner||(t._cachedInner=e.getter()),t._cachedInner}),H(n,"pattern",t=>t.innerType?._zod?.pattern),H(n,"propValues",t=>t.innerType?._zod?.propValues),H(n,"optin",t=>t.innerType?._zod?.optin??void 0),H(n,"optout",t=>t.innerType?._zod?.optout??void 0),n._zod.parse=(t,r)=>n._zod.innerType._zod.run(t,r)}),Ps=O("$ZodCustom",(n,e)=>{te.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=>us(i,t,r,n));us(o,t,r,n)}});function us(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 xl=()=>{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=Fi(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 ${Rr(i.values[0])}`:`Invalid option: expected one of ${xr(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":""}: ${xr(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 Es(){return{localeError:xl()}}var Ms;var Gr=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 zs(){return new Gr}(Ms=globalThis).__zod_globalRegistry??(Ms.__zod_globalRegistry=zs());var un=globalThis.__zod_globalRegistry;function Ns(n){return n.checks&&(n.checks=[...n.checks]),n}function Is(n,e){return new n(Ns({type:"string",...I(e)}))}function Ts(n,e){return new n({type:"string",format:"email",check:"string_format",abort:!1,...I(e)})}function js(n,e){return new n({type:"string",format:"url",check:"string_format",abort:!1,...I(e)})}function Ds(n,e){return new n(Ns({type:"number",checks:[],...I(e)}))}function Fs(n,e){return new n({type:"number",check:"number_format",abort:!1,format:"safeint",...I(e)})}function Ls(n,e){return new n({type:"boolean",...I(e)})}function Zs(n,e){return new n({type:"null",...I(e)})}function Cs(n){return new n({type:"unknown"})}function Gs(n,e){return new n({type:"never",...I(e)})}function Ks(n,e){return new Xi({check:"less_than",...I(e),value:n,inclusive:!0})}function Vs(n,e){return new Qi({check:"greater_than",...I(e),value:n,inclusive:!0})}function $l(n,e){return new es({check:"multiple_of",...I(e),value:n})}function Kr(n,e){return new ts({check:"max_length",...I(e),maximum:n})}function Kn(n,e){return new rs({check:"min_length",...I(e),minimum:n})}function Vn(n,e){return new os({check:"string_format",format:"regex",...I(e),pattern:n})}function Bs(n,e,t){return new n({type:"custom",check:"custom",fn:e,...I(t)})}function Us(n,e){let t=Rl(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 Rl(n,e){let t=new te({check:"custom",...I(e)});return t._zod.check=n,t}function Ws(n){let e=new te({check:"describe"});return e._zod.onattach=[t=>{let r=un.get(t)??{};un.add(t,{...r,description:n})}],e._zod.check=()=>{},e}var Y=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){Ke(this,"with",n)},parse(n,e){return Nr(this,n,e,{callee:this.parse})},parseAsync(n,e){return Ir(this,n,e,{callee:this.parseAsync})},safeParse(n,e){return Tr(this,n,e)},safeParseAsync(n,e){return jr(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 cn(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)}}),Hs=O("ZodMiniString",(n,e)=>{Zr.init(n,e),Y.init(n,e)});function L(n){return Is(Hs,n)}var Ys=O("ZodMiniStringFormat",(n,e)=>{St.init(n,e),Hs.init(n,e)}),Ol=O("ZodMiniEmail",(n,e)=>{ps.init(n,e),Ys.init(n,e)});function Sy(n){return Ts(Ol,n)}var Pl=O("ZodMiniURL",(n,e)=>{gs.init(n,e),Ys.init(n,e)});function $y(n){return js(Pl,n)}var Js=O("ZodMiniNumber",(n,e)=>{Cr.init(n,e),Y.init(n,e)});function Ve(n){return Ds(Js,n)}var El=O("ZodMiniNumberFormat",(n,e)=>{ms.init(n,e),Js.init(n,e)});function Ry(n){return Fs(El,n)}var Ml=O("ZodMiniBoolean",(n,e)=>{ys.init(n,e),Y.init(n,e)});function Ay(n){return Ls(Ml,n)}var zl=O("ZodMiniNull",(n,e)=>{bs.init(n,e),Y.init(n,e)});function _y(n){return Zs(zl,n)}var Nl=O("ZodMiniUnknown",(n,e)=>{vs.init(n,e),Y.init(n,e)});function Vr(){return Cs(Nl)}var Il=O("ZodMiniNever",(n,e)=>{xs.init(n,e),Y.init(n,e)});function Tl(n){return Gs(Il,n)}var jl=O("ZodMiniArray",(n,e)=>{ws.init(n,e),Y.init(n,e)});function Oy(n,e){return new jl({type:"array",element:n,...I(e)})}var Br=O("ZodMiniObject",(n,e)=>{ks.init(n,e),Y.init(n,e),Zi(n,"shape",t=>t._zod.def.shape,!1)});function Oe(n,e){let t={type:"object",shape:n??{},...I(e)};return new Br(t)}function fn(n,e){return new Br({type:"object",shape:n,catchall:Tl(),...I(e)})}function Py(n,e){return new Br({type:"object",shape:n,catchall:Vr(),...I(e)})}function Xs(n,e){return ji(n,e)}var Dl=O("ZodMiniUnion",(n,e)=>{Ss.init(n,e),Y.init(n,e)});function Ey(n,e){return new Dl({type:"union",options:n,...I(e)})}var qs=O("ZodMiniRecord",(n,e)=>{$s.init(n,e),Y.init(n,e)});function My(n,e,t){return!e||!e._zod?new qs({type:"record",keyType:L(),valueType:n,...I(e)}):new qs({type:"record",keyType:n,valueType:e,...I(t)})}var Fl=O("ZodMiniEnum",(n,e)=>{Rs.init(n,e),Y.init(n,e),n.options=[...n._zod.values]});function Qs(n,e){let t=Array.isArray(n)?Object.fromEntries(n.map(r=>[r,r])):n;return new Fl({type:"enum",entries:t,...I(e)})}var Ll=O("ZodMiniLiteral",(n,e)=>{As.init(n,e),Y.init(n,e)});function ea(n,e){return new Ll({type:"literal",values:Array.isArray(n)?n:[n],...I(e)})}var Zl=O("ZodMiniOptional",(n,e)=>{_s.init(n,e),Y.init(n,e)});function J(n){return new Zl({type:"optional",innerType:n})}var Cl=O("ZodMiniLazy",(n,e)=>{Os.init(n,e),Y.init(n,e)});function zy(n){return new Cl({type:"lazy",getter:n})}var Gl=O("ZodMiniCustom",(n,e)=>{Ps.init(n,e),Y.init(n,e)});function $t(n,e={}){return Bs(Gl,n,e)}function Ny(n,e){return Us(n,e)}var Iy=Ws;ne().localeError||ne(Es());var j=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,Kl=n=>{if(typeof n!="object"||n===null||!("_zod"in n))return;let e=un.get(n)?.description;return typeof e=="string"?e:void 0};var Vl=(n,e)=>n?.src?.(e)??e,Rt=n=>typeof n=="string"&&n.length<2049&&/^(?![^/?#]*:|\/\/)(?!(?:.*\/)?\.\.?(?:[/?#]|$))(?!.*%2e)[^\\\s]+$/i.test(n),Ur=(n,e=1)=>e>0&&n===void 0||Number.isInteger(n)&&n>=e;function Wr(n){let e=n??{};return Rt(e.href)&&typeof e.name=="string"&&/^.{1,255}$/s.test(e.name)&&/^[\w.+-]{1,60}\/[\w.+-]{1,60}$/.test(e.type)&&Ur(e.bytes,0)&&Ur(e.width)&&Ur(e.height)&&(e.caption===void 0||typeof e.caption=="string"&&e.caption.length<501)&&(e.poster===void 0||Rt(e.poster))&&(e.captions===void 0||Rt(e.captions))&&(e.duration===void 0||typeof e.duration=="number"&&Number.isFinite(e.duration)&&e.duration>0)&&(e.at===void 0||na(e.at)!==void 0)}function na(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 ta=n=>n.type.startsWith("image/"),ra=n=>n.type.startsWith("video/");function Bl(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 Ul=(n,e)=>e==="image"?ta(n):e==="video"?ra(n):!0,Wl=n=>`${n==="image"?"an image":n==="video"?"a video":"a file"} the host stored, at a path on this host`,Bn=n=>(Array.isArray(n)?n:[n]).filter(Wr),oa=Symbol.for("@graview/core:file"),ql=(n,e)=>(Object.defineProperty(j(n),oa,{value:e,enumerable:!0}),n);function ia(n){let e=j(n);return e?.[oa]??(e?.innerType?ia(e.innerType):void 0)}var Hl=()=>({href:L(),name:L(),type:L(),bytes:Ve(),width:J(Ve()),height:J(Ve()),caption:J(L()),poster:J(L()),duration:J(Ve()),captions:J(L()),at:J(L())});function Tb(n){return ql(Oe(Hl()).check($t(e=>Wr(e)&&Ul(e,n),Wl(n))),n)}var At=/^(?:https?:\/\/[^\s<>"'`\\]+|@?[A-Za-z0-9][\w.~-]*(?:\/[\w.~-]+)*)$/,_t=n=>typeof n=="string"&&n.length<501&&At.test(n);var sa=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,Yl=/^@(?:https?:\/\/[^\s<>"'`\\#?]+|[A-Za-z0-9][\w.~-]*(?:\/[\w.~-]+)*)\/[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;function aa(n){if(typeof n!="string"||!n.startsWith("@")||!Yl.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 _t(o)?{address:o,kind:r}:void 0}var Jl=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*:\S[^\n]{0,199}$/,Xl=n=>`${n.kind}:${n.id}`;function da(n,e){if(typeof n!="string"||!Jl.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 Ql(n,e){return(Array.isArray(n)?n:n==null?[]:[n]).flatMap(r=>{let o=da(r,e);return o?[o]:[]})}var ca=Symbol.for("@graview/core:linked"),Lb=(n,e)=>(Object.defineProperty(sa(n),ca,{value:e,enumerable:!0}),n);function Un(n){let e=sa(n);return e?e[ca]??Un(e.innerType):void 0}function eu(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 nu(n){if(n.to==="*"||n.to.length===0)return;let e=n.to.map(aa);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 tu=n=>n.to!=="*"&&n.to.some(e=>typeof e=="string"&&e.startsWith("@"));function Zb(n){return Object.fromEntries(Object.entries(n??{}).filter(([,e])=>!tu(e)))}function Cb(n){let e=new Map;for(let[t,r]of Object.entries(n??{})){let o=nu(r);o&&e.set(t,o)}return e}var qr=new WeakMap;function ru(n,e){e?qr.set(n,e):qr.delete(n)}var la=n=>qr.get(n);var Ot=["sun","mon","tue","wed","thu","fri","sat"],ou=["day","week","month","year"],hn=n=>`${n}Repeat`,qn=n=>n.endsWith("Repeat")&&n.length>6?n.slice(0,-6):void 0,pa=/^\d{4}-\d{2}-\d{2}$/,ha=Symbol.for("@graview/core:repeat");function Pt(n){let e=j(n);return!!e&&(e[ha]===1||Pt(e.innerType))}var iu=n=>(Object.defineProperty(j(n),ha,{value:1,enumerable:!0}),n),Hr=(n,e,t)=>n===void 0||Number.isInteger(n)&&n>=e&&n<=t,ua=(n,e)=>n===void 0||Array.isArray(n)&&n.length<=e&&n.every(t=>typeof t=="string"&&pa.test(t)),su=["every","interval","on","until","count","except","continues"],ga=n=>gn(n)&&Object.keys(n).every(e=>su.includes(e))&&Hr(n.interval,1,99)&&Hr(n.count,1,1e3)&&ua(n.until===void 0?void 0:[n.until],1)&&ua(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"?Ot.includes(e):n.every==="month"&&e!==0&&Hr(e,-1,31))),Vb=()=>iu(Vr().check($t(n=>n===null||ga(n),"how a date repeats, or null"))),Wn=n=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10)),ma=n=>new Date(n).toISOString().slice(0,10),Yr=(n,e)=>ma(Wn(n)+e*864e5),fa=(n,e,t)=>{let r=new Date(Date.UTC(n,e+1,0)).getUTCDate();return ma(Date.UTC(n,e,t<0||t>r?r:t))},gn=n=>typeof n=="object"&&n!==null&&ou.includes(n.every);function pn(n,e,t={}){let r=n.slice(0,10),o=n.slice(10),i=[];if(!pa.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=Yr(r,-new Date(Wn(r)).getUTCDay()),v=(e.on?.length?e.on:[a==="week"?Ot[new Date(Wn(r)).getUTCDay()]:g]).map(_=>typeof _=="string"?Ot.indexOf(_):_),y=a==="day"?1:a==="week"?7:0,w=(+d.slice(0,4)-c)*12+(+d.slice(5,7)-1-p),A=e.count?0:Math.max(0,Math.floor((y?(Wn(d)-Wn(y===7?h:r))/864e5/y:a==="month"?w:w/12)/s)-1),k=0;for(let _=0;_<5e4&&i.length<l;_++,A++){let R=A*s,m=a==="day"?[Yr(r,R)]:a==="week"?v.map(b=>Yr(h,R*7+b)):a==="month"?v.map(b=>fa(c,p+R,b)):[fa(c+R,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 ya(n,e,t){if(!gn(e)||typeof n!="string")return n;let r=pn(n,e,{from:t,limit:1})[0];if(r)return r;let o=e.until||e.count?pn(n,e):[];return o[o.length-1]??n}function au(n,e,t){let r=n[e],o=n[hn(e)];return typeof r=="string"&&gn(o)?ya(r,o,t):r}var Et=["human","visitor","agent","rule","system"],du=new Set(Et);function Jr(n){return du.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=Jr(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 G(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 mn="$archived",Be=n=>n?.[mn]===!0,Yb=(n,e=!1)=>e==="all"||Be(n)===e,Xr=n=>n===!0||n==="true"?!0:n==="all"?"all":!1,Yn="$leftAlone",Mt=new Set([mn,Yn]);var de=class extends Error{constructor(t,r){super(r?`${t}
2
+ \u2192 ${r}`:t);this.hint=r;this.name="SchemaError"}};function cu(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,Xs(a.fields,{id:L().check(Kn(1)),kind:ea(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))Mt.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 Qr="0.1.58";var yn={snapshot:1,op:3},bn=class extends Error{constructor(t,r,o,i,s){super(s!==void 0?`This ${t} holds a ${s} that @graview ${Qr} does not know: upgrade the framework to read it.`:`This ${t} is in a newer format (${r}${i?`, written by @graview ${i}`:""}) than @graview ${Qr} 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"}},eo=["add-node","remove-node","patch-node","add-edge","remove-edge","splice-text"],lu=new Set(eo);function no(n){throw new bn("op",yn.op+1,yn.op,void 0,`primitive "${n?.op}"`)}var to=new Set;function ro(n){for(let e in n){let t=n[e]?.$type;if(t!==void 0&&!to.has(t))throw new bn("op",yn.op+1,yn.op,void 0,`value type "${t}" in "${e}"`)}}function ba(n){for(let e of n.primitives)lu.has(e?.op)||no(e)}function N(n){return`${n.kind}\0${n.from}\0${n.to}`}var Jn={addedNodes:[],removedNodes:[],changedNodes:[],addedEdges:[],removedEdges:[],touched:[]};function va(n){return n.addedNodes.length===0&&n.removedNodes.length===0&&n.changedNodes.length===0&&n.addedEdges.length===0&&n.removedEdges.length===0}function uu(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 Pe(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=uu(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 Ee(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 Pe(o(n),o(e))}var zt={idLength:200,dataLength:4096,sameKindPerPair:1};function xa({id:n,data:e}){if(n!==void 0&&!(typeof n=="string"&&n.length<=zt.idLength&&/^[^\s\p{Cc}]+$/u.test(n)))return`A link's id is 1\u2013${zt.idLength} characters with no space`;if(e!==void 0&&!(e&&typeof e=="object"&&!Array.isArray(e)&&JSON.stringify(e).length<=zt.dataLength))return`A link's data is a JSON object of at most ${zt.dataLength} characters`}function fu(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?C(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"}},B=class extends z{constructor(t,r){super(r);this.id=t;this.name="MissingRecordError"}};function Nt(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 oo="n\0",io="e\0",X=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=Pe(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=Ee(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(oo));this.nodes.clear();for(let[o,i]of t)this.nodes.set(o,i);let r=[...this.edges.entries()].sort(e(io));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":ro(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 B(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(oo+o),this.outIndex.delete(o),this.inIndex.delete(o);return}case"patch-node":{let o=this.nodes.get(e.id);if(!o)throw new B(e.id,`Cannot patch missing node "${e.id}"`);ro(e.after);let i={...o};for(let[a,d]of Object.entries(e.after))Le(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[Be(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 B(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=dr(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 B(e.edge.id??N(e.edge),`Cannot remove missing edge ${e.edge.id??N(e.edge)}`);this.deleteEdge(o);return}default:no(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"||Mt.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=Nt(this.schema,t);if(i===void 0)return t;let s=Nt(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"?G(i,e):r;return new z(`${s} does not match what ${o} declares`,fu(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)),Be(e)&&this.archived.add(e.id),this.tally(e.kind,1),this.place(oo+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 B(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=xa(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(io+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(io+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 It=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 pu(n,e){return{...e,name:n}}var Tt=class extends Error{constructor(e){super(e),this.name="RuleBudgetError"}};function wa(n,e,t){try{return e().map(r=>r.status?r:{...r,status:"violated"})}catch(r){let o=r instanceof Tt,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 vn(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(...wa(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 It(g,c.id);continue}let h=!mr(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(...wa(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=gr(c.message);return p===c.message?c:{...c,message:p}});return so?so(n,e,f,t.today):f}var so;function vv(n){so=n}function hu(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 gu(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 jt="type-text",re={};var Dt=(n,e)=>n==="*"||n.includes(e);function D(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 U=n=>n.kind==="system"&&n.onBehalfOf===void 0,Me=(n,e)=>n.roles==="*"||(e.roles??[]).some(t=>n.roles.includes(t));function ka(n){return xi(n.map(e=>dn(C(e).toLowerCase())),"or")}function ze(n,e,t,r,o,i,s={},a,d,u){if(!n)return{ok:!0};if(U(e))return{ok:!0};if(e=D(e),o!==void 0){if(ze(n,e,t,r,void 0,i).ok)return{ok:!0};let p=!1;if(o.some(y=>ze(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!=="*"&&Me(y,e)&&o.some(w=>Dt(y.mutations,w))))return{ok:!0};p=!0}let g=p?[t]:[t,...o],h=[...new Set(g.flatMap(y=>ao(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":`${ka(h)} can`);return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:h,message:Sa(n,g,r,v,s)}}}let l=!1;for(let p of n.grants){if(!Me(p,e)||!Dt(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=ao(n,t,r),c=l?"only on your own end of the link":f.length===0?"no role can":`${ka(f)} can`;return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:f,message:Sa(n,[t],r,c,s)}}}function Sa(n,e,t,r,o){let i=[...new Set(e.flatMap(a=>$a(n,a,t)))],s=o.act?.(e[0]);return`Not permitted: ${s?`\u201C${s}\u201D`:e[0]}${t?` on ${dn(o.noun?.(t)??t)}`:""} \u2014 ${r}.`+(i.length>0?` ${i.join(" ")}`:"")}function $a(n,e,t){return[...new Set(Ra(n,e,t).flatMap(r=>r.describe||[]))]}var Ra=(n,e,t)=>n.grants.filter(r=>Dt(r.mutations,e)&&(t===void 0||Dt(r.kinds??"*",t)));function ao(n,e,t){let r=Ra(n,e,t);return r.some(o=>o.roles==="*")?[]:[...new Set(r.flatMap(o=>o.roles))].sort()}function co(n,e,t){return n?t.filter(r=>{let o=D(e).id;return lo(r).some(i=>ze(n,e,r.name,i,void 0,o,void 0,()=>[o??[]].flat()).ok)}):t}var lo=n=>n.subject&&n.subject.kinds!=="*"?n.subject.kinds:[void 0];var oe=class extends Error{constructor(t,r="refused"){super(t);this.sentence=t;this.reason=r;this.name="ActRefusal"}};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,Aa(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,cr(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,Aa(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,cr(t,e));return}case"add-edge":this.setEdge(e.edge,!0);return;case"remove-edge":this.setEdge(e.edge,!1);return}}};function Aa(n,e){let t={...n};for(let[r,o]of Object.entries(e))Le(o)?delete t[r]:t[r]=o;return t}var mu=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 uo(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=mu(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]:le]));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]:le});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 _a(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=D(c.author).id,g=c.primitives.map(h=>uo(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=yu(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 bu(n,r,d,u,a,f,l?.judge??t,e)}function yu(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 bu(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=>uo(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 Ev(n,e,t,r){let o=new Xn(e.present,e);return o.begin(e.log.length??e.log.all().length),n.flatMap(i=>uo(i,o,t,()=>r).primitives)}var Pa="A change you cannot see",Ea={kind:"system",id:"withheld",name:"Someone"};function xn(n){return n.withheld===!0}var Qn=Se,Ma=(n,e)=>Object.entries(n).some(([t,r])=>t!=="id"&&t!=="kind"&&T(r,e));function za(n){if(typeof n!="function")return n;let e=n,t=r=>e(r.id)&&!Ma(r,e)?r:void 0;return{sees:e,shows:e,served:t,servedWith:t,optional:()=>!1,kindOf:()=>{}}}function T(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(T(n[t],e))return!0;return!1}for(let t in n)if(Object.hasOwn(n,t)&&(!e(t)||T(n[t],e)))return!0;return!1}function Na(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&&T(n.mutation.args,e)}function vu(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 Ma(t,e.sees)?{op:"remove-node",node:Object.fromEntries(Object.entries(t).filter(([r,o])=>r==="id"||r==="kind"||!T(o,e.sees)))}:n}case"patch-node":{let t=e.kindOf(n.id),r={};for(let[i,s]of Object.entries(n.after))if(!T(s,e.sees))r[i]=s;else if(t!==void 0&&e.optional(t,i))r[i]=le;else return;let o=Object.fromEntries(Object.entries(n.before).filter(([,i])=>!T(i,e.sees)));return{op:"patch-node",id:n.id,before:o,after:r}}case"add-edge":case"remove-edge":return T(n.edge,e.sees)?void 0:n;case"splice-text":return T(n.removed,e.sees)||T(n.inserted,e.sees)?void 0:n}}function fo(n,e,t){let r=za(e),o=i=>r.shows(i)&&Ia(r,i);return{id:n.id,seq:n.seq,batch:n.batch,author:Ea,intent:Pa,mutation:null,primitives:t??n.primitives.flatMap(i=>{let s=vu(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 wn(n,e){let t=za(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=>!T(i,r.sees),sees:r.sees,names:i=>T(i,r.sees)};return _a(n,r.timeline,o).map(({op:i,primitives:s,faithful:a})=>(!i.withheld&&a?Oa(i,r,s):void 0)??fo(i,r,s))}return n.map(o=>(!o.withheld&&!Na(o,r.shows)?Oa(o,r):void 0)??fo(o,r))}function Oa(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)&&Ia(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&&D(n.author).id===e.actor;if(!u&&n.described?.some(p=>!e.sees(p)))return;if(!T(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(!T(r,c))return u&&n.mutation&&f(n.mutation.args),T({...d,primitives:[],inverse:[]},u?c:e.sees)?void 0:d}function Ia(n,e){return n.timeline===void 0||n.kindOf(e)!==void 0}var Ue=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(g=>t.has(g.batch)&&!r.has(g.id)),i=[...n.epochs()].reverse().find(g=>g.horizon);if(i){let g=new Set(n.all().map(v=>v.batch)),h=e.filter(v=>!g.has(v));if(h.length>0)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"missing",message:`Cannot undo ${h.map(v=>`batch ${v}`).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(xn))return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"forbidden",message:o.every(xn)?"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(g=>g.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=new Set;for(let g of o)for(let h of g.writes)s.add(h);let a=Math.min(...o.map(g=>g.seq)),d=n.epochs().find(g=>g.change!==void 0&&g.seq>a);if(d){let g=o.find(h=>h.seq<d.seq);return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:`Cannot undo "${g.intent}": ${g.intent===d.change?"it changed the declaration":`it was done before the declaration changed (${d.change})`}, and undo does not reach back across that change.`}}let u=new Map(n.all().map(g=>[g.id,g.seq])),l=o.flatMap(g=>g.primitives),f=[];for(let g of n.all()){if(g.seq<=a||t.has(g.batch)||r.has(g.id)||g.undoes!==void 0&&(u.get(g.undoes)??-1)>a)continue;let h=re.aside?.(l,g);if(h===!0)continue;let v=[...new Set([...g.reads.filter(y=>s.has(y)),...h??[]])];v.length>0&&f.push({op:g,overlap:v})}if(f.length===0)return{ok:!0,ops:o};let c=f.filter(g=>!xn(g.op)).map(g=>`"${g.op.intent}" (op ${g.op.id}, read ${g.overlap.join(", ")})`).join("; ");if(f.some(g=>xn(g.op)))return{ok:!1,ops:o,blockedBy:f,includeBatches:[],message:`Cannot undo on its own \u2014 ${c?`a later operation depends on it: ${c}; and `:""}a later change you cannot see depends on it, which only somebody who can see it can take back.`};let p=[...new Set(f.map(g=>g.op.batch))];return{ok:!1,ops:o,blockedBy:f,includeBatches:p,message:`Cannot undo on its own \u2014 a later operation depends on it: ${c}. Include ${p.map(g=>`batch ${g}`).join(", ")} to undo them together.`}}function Ta(n,e){return e?po(e,n).flatMap(t=>[...t.primitives]):[...n].sort((t,r)=>r.seq-t.seq).flatMap(t=>Ze(t))}function po(n,e){return re.undone?re.undone(n,e):[...e].sort((t,r)=>r.seq-t.seq).map(t=>({op:t,primitives:Ze(t)}))}var We=class extends Error{refusal;constructor(e){super(e.message),this.name="PermissionDeniedError",this.refusal=e}};function xu(n){let e=n instanceof Error?n.message:String(n);if(n instanceof We){let t=n.refusal.wouldNeed;return{reason:"forbidden",sentence:e,...t.length>0?{wouldNeed:[...t]}:{}}}return n instanceof B?{reason:"missing",sentence:e}:n instanceof oe?{reason:n.reason,sentence:n.sentence}:n instanceof Ue?{reason:n.check.reason??"invalid",sentence:e}:{reason:"invalid",sentence:e}}var fe=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 wu=["edit","remove","archive","unarchive","merge","leave-alone","allow-tidying"];var Hv=n=>wu.map(e=>`${e}-${n}`);function Da(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 ho=["connect","disconnect"],Fa=n=>n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`),go=(n,e,t)=>`${n}-${e}-${Fa(t)}`;function Yv(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}-${Fa(i)}`)return{act:t[1],kind:r,relation:i}}}}var Jv=n=>[...n].flatMap(([e,t])=>[...t].flatMap(r=>ho.map(o=>go(o,e,r)))),ja=n=>`${/^[aeiou]/i.test(n)?"an":"a"} ${n}`;function La(n,e){let t=e.also?` (${e.also})`:"";return{title:`${e.one?`${n==="connect"?"Set":"Clear"} the ${e.to}`:`${n==="connect"?"Link":"Unlink"} ${ja(e.to)}`}${t}`,fromTheOtherEnd:`${n==="connect"?"Link":"Unlink"} ${ja(e.from)}${t}`}}function Za(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 qe=n=>n.trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[_\s]+/g,"-").replace(/-+/g,"-").toLowerCase();function Ft(n,e){let t=qe(n),r=[...e];if(r.includes(n))return n;let o=r.filter(i=>qe(i)===t);return o.length===1?o[0]:void 0}function ku(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 mo(n,e){let t=[...e],r=Ft(n,t);if(r)return r;let o=qe(n);if(o==="")return;let i,s=!1;for(let a of t){let d=ku(o,qe(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 Su=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 })`,kn=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?Su(e):`Op "${e.id}" has seq ${e.seq} but the log is ${this.length} long`);ba(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}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 He(this.ops)}opsInBatch(e){return this.ops.filter(t=>t.batch===e)}batches(){return yo(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=X.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)))$u(i,a);return i}toJSON(){return[...this.ops]}};function $u(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 He(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 yo(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 bo(n){return n?.automated===!0&&n.kind!=="human"&&n.kind!=="rule"}var Ga=n=>n?.[Yn]===!0,Ru=(n,e)=>Ga(("graph"in n?n.graph:n).getNode(e));function Ca(n,e,t){let r=n.tryDefinition(e);return t===void 0?r?.tidying:r?.edges?.[t]?.tidying}var Au=n=>JSON.stringify(n,(e,t)=>t&&typeof t=="object"&&!Array.isArray(t)?Object.fromEntries(Object.entries(t).sort()):t);var _u=/^(archive|unarchive|remove|leave-alone|allow-tidying)$/;function Ou(n,e){let t=qe(n.name),r=e?.act(n.name),o=n.args??{},i=r?r.derived:Da(t),{id:s}=o;if(i&&typeof s=="string"){if(_u.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 Ka=(n,e)=>`\u2248${Au(n.map(t=>Ou(t,e)))}`;function Va(n,e,t){let r=Pu(n,t);return[e,...e.map(o=>[o])].map(o=>r.get(Ka(o,t))).find(Boolean)}function Pu(n,e){let t=He(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(Ka(d,e),i)}return o}function Ba(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(Ga(l))return s(`change \u201C${G(n.tryDefinition(l.kind),l)}\u201D`,"a person said to leave it alone");if(!i)continue;let f=Ca(n,l.kind);if(f==="never")return s(`change ${ie(n,l.kind)} on its own`,"the app says they are never tidied");if(d&&f==="no-links")return s(`link or unlink ${ie(n,l.kind)} on its own`,"the app says they are never linked automatically")}if(d&&i&&u[0]&&Ca(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 Eu(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 Lt={scene:0,overview:10,rail:20,popover:30,dialog:40,toast:50},Mu={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},vo=n=>`--graview-layer-${n}`,Nu=n=>`var(${vo(n)}, ${Lt[n]})`;function Iu(){return Object.keys(Lt).map(n=>` ${vo(n)}: ${Lt[n]};`).join(`
4
+ `)}function Tu(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 Ua(){return`sub_${(globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`).replace(/-/g,"").slice(0,20)}`}function Wa(n){return{...n,id:n.id??Ua(),at:n.at??new Date().toISOString()}}function ju(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=Wa(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 xo=(n,e)=>`${n}\0${e}`,qa=new WeakMap;function Du(n,e){let t=new Map;for(let[o,i]of Object.entries(e??{}))for(let[s,a]of Object.entries(i))t.set(xo(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(xo(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 Fu(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=>!Le(n.after[e]))];if(n.op==="splice-text")return[n.id,[n.field]]}function Lu(n,e){let t=n.end,r=D(e.author).id,o=e.undoes!==void 0?n.seqOf.get(e.undoes):void 0,i=[];for(let s of e.primitives){let a=Fu(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=xo(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 Zu(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=qa.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&&Zu(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||qa.set(n,o=Du(r,r>0?[...n.epochs?.()??[]].reverse().find(i=>i.horizon)?.writers:void 0));for(let i=o.end;i<t;i++)Lu(o,e[i-r]);return o.writers}function Ha(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 Ye={served:new WeakSet},tt=n=>n.fields!==void 0||(n.hide?.length??0)>0,Ne=n=>Ye.on===!0||Ye.served.has(n);var wo=new WeakMap;function Cu(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 Gu(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=D(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 Ku(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 pe(n){let e=n.all(),t=typeof n.length=="number"?n.length:e.length,r=t-e.length,o=wo.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&&Ku(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||wo.set(n,o=Cu(r,r>0?Vu(n,r):void 0));for(let i=o.end;i<t;i++)Gu(o,e[i-r]);return o.records}function Vu(n,e){let t=[...n.epochs?.()??[]].reverse().find(r=>r.horizon);return t?.seq===e?t:void 0}function Ya(n,e,t){pe(n);let r=wo.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 Sn(n,e,t,r,o,i=Ye.on===!0){if(!n?.sees?.length||U(e))return!0;let s=n.sees.filter(a=>a.kinds.includes(t.kind)&&(i||!tt(a)));return s.length===0?!1:(e=D(e),s.some(a=>{if(!Me(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 Zt="publish",ko=n=>n?.mode==="on-publish",So=(n,e,t)=>ko(n)&&!U(e)&&(t==="published"||!(D(e).roles??[]).some(r=>n.working.includes(r))),se=globalThis[Symbol.for("@graview/core:publishing")]??={};se.input=()=>Oe({through:J(Ve())});var Ro=new Set;function Ct(n,e){return U(e)?Ro:n.modules?.disabledKinds??Ro}function Je(n,e){return U(e)?!1:(n.policy?.sees?.length??0)>0||Ct(n,e).size>0}function ed(n,e){if(!Je(n,e))return()=>!0;let t=n.modules?.disabledKinds??Ro,r=n.policy?.sees??[],o=D(e),i=Ne(n),s=d=>!t.has(d)&&(r.length===0||r.some(u=>u.kinds.includes(d)&&Me(u,o)&&!u.own&&!u.via&&(i||!tt(u)))),a=n.schema.kinds.every(s);return d=>a||d!==void 0&&s(d)}function $n(n,e){return t=>{let r=Ct(n,e);if(!n.policy?.sees?.length&&r.size===0)return!0;let o=pe(n.log),i=n.graph.getNode(t);if(i)return!r.has(i.kind)&&Sn(n.policy,e,i,n.graph,o,Ne(n));let s=o.kindOf(t)??nd(n,o,t);return s===void 0?!0:!r.has(s)&&Sn(n.policy,e,{id:t,kind:s},{out:()=>[],in:()=>[]},o,Ne(n))}}var Bu={out:()=>[],in:()=>[]};function nd(n,e,t){if(e.knowsAll||Ye.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 Uu(n,e,t=new Map,r){let o=Ct(n,e);if(!n.policy?.sees?.length&&o.size===0)return()=>!0;let i=pe(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)&&Sn(n.policy,e,u,n.graph,i,Ne(n));else{let l=i.kindOf(s)??nd(n,i,s);if(l===void 0)return r?.add(s),!0;d=!o.has(l)&&Sn(n.policy,e,{id:s,kind:l},Bu,i,Ne(n))}return t.set(s,d),d}}function Wu(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 Gt(n,e){return td(n,e).lens}var Ao=()=>({judged:new Map,shown:new Map});function td(n,e){let t=Wu(n.schema),r=U(e)?void 0:D(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 x;for(let M in b)if(!(!Object.hasOwn(b,M)||M==="id"||M==="kind"||!T(b[M],l))&&!(r!==void 0&&S(M)===r)){if(!t(b.kind,M))return;(x??=[]).push(M)}if(!x)return b;let $=x.join("\0"),P=i.get(b);if(P?.without===$)return P.node;let E=Object.fromEntries(Object.entries(b).filter(([M])=>!x.includes(M)));return i.set(b,{without:$,node:E}),E},v=b=>{let S=c();return h(b,x=>f().writerAt(b.id,x,S))},y=new WeakMap,w=g?b=>{let S=y.get(b);return S||y.set(b,S={node:v(b)}),S.node}:v,A=b=>{if(!l(b))return!1;let S=s.getNode(b);return S===void 0||w(S)!==void 0},k=g?.shown??new Map,_=g?b=>{let S=k.get(b);return S===void 0&&k.set(b,S=A(b)),S}:A,R=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:w,servedWith:h,optional:t,kindOf:p,...r!==void 0?{actor:r}:{},...R?{timeline:R}:{},hides:()=>Je(n,e),pin:g?()=>m:()=>d(Ao())};return Ye.lens?.(m,n,e)??m};function d(l){let f,c=o(),p=pe(n.log);return a(Uu(n,e,l.judged,l.unnamed),()=>f??=nt(n.log),()=>c,g=>s.getNode(g)?.kind??p.kindOf(g),l)}return{lens:a($n(n,e),()=>nt(n.log),o,l=>s.getNode(l)?.kind??pe(n.log).kindOf(l)),pinWith:d}}var Ja=new WeakMap,Xa=new WeakMap,qu=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 rd(n,e){if(!Je(n,e))return n.log.all();let t=n.log.all(),r=n.log.length??t.length,o=r-t.length,i=[...Ct(n,e)].sort().join("\0"),s=od(e),a=Ja.get(n.log);a||Ja.set(n.log,a=new Map);let d=a.get(s),{pinWith:u}=td(n,e),l=Xa.get(n.log);l||Xa.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(Ao()),v=!0,y=qu(g);for(let w of y){let A=d.judgments.judged.get(w),k=d.judgments.shown.get(w);if(A!==void 0&&h.sees(w)!==A||k!==void 0&&h.shows(w)!==k){v=!1;break}}if(v){for(let w of y)if(l.has(w)){v=!1;break}}if(v){let w=[...d.ops,...wn(g,u(d.judgments))],A={horizon:o,off:i,length:r,last:t.at(-1),ops:w,judgments:d.judgments};return a.set(s,A),w}}let c={...Ao(),unnamed:l},p=wn(t,u(c));return a.set(s,{horizon:o,off:i,length:r,last:t.at(-1),ops:p,judgments:c}),p}function Hu(n,e,t){return(t.subjectId===void 0||!e(t.subjectId)||n.shows(t.subjectId))&&t.nodeIds.every(r=>!e(r)||n.shows(r))&&!T(t,n.sees)}function _o(n,e){return{all:()=>n,undoneIds:()=>He(n),epochs:e}}var Qa=new WeakMap;function od(n){let e=U(n)?n:D(n);return`${n.kind}|${e.id??""}|${(e.roles??[]).join(",")}|${n.onBehalfOf?`for:${n.id??""}`:""}`}var id=(n,e)=>`${od(n)}@${e}`,$o=(n,e)=>{let t=Reflect.get(n,e,n);return typeof t=="function"?t.bind(n):t},Yu=Symbol.for("@graview/core:seat");function Rn(n,e,t={}){if(So(n.publishing,e,t.as)){if(se.served)return se.served(n,e);throw new Error("Load @graview/core/publishing to serve a reader of an app that publishes.")}return ad(n,e)}var Ju=()=>se.served!==void 0;function sd(n){let e=Qa.get(n);return e||Qa.set(n,e=new Map),e}function ad(n,e){if(!Je(n,e))return n;let t=id(e,"head"),r=sd(n),o=r.get(t);if(o)return o;let i=n.graph,s=Gt(n,e),a=k=>{let _=x=>x===void 0?void 0:k.served(x),R=x=>_(x)!==void 0,m=x=>R(i.getNode(x));return{served:_,seenNode:R,seenId:m,seenEdge:x=>m(x.from)&&m(x.to)&&!T(x,k.sees),servedAll:x=>x.flatMap($=>_($)??[])}},{served:d,seenId:u}=a(s),l=()=>a(s.pin?.()??s),f=(k,_)=>{let R=nt(n.log),m=s.pin?.()??s,b=k.nodes.flatMap(x=>m.servedWith(x,$=>R.writerAt(x.id,$,_))??[]),S=new Set(b.map(x=>x.id));return{nodes:b,edges:k.edges.filter(x=>S.has(x.from)&&S.has(x.to)&&!T(x,m.sees))}},c=k=>{let{removed:_,writers:R,...m}=k,b=f(k.base,k.seq);if(!k.creators)return{...m,base:b};let S=new Set(b.nodes.map($=>$.id)),x=Object.fromEntries(Object.entries(k.creators).filter(([$,P])=>S.has($)&&!T(P,s.sees)));return{...m,base:b,creators:x}},p=k=>k&&c(k),g=()=>rd(n,e),h=()=>_o(g(),()=>n.log.epochs()),v=new Proxy(i,{get(k,_){switch(_){case"getNode":return R=>d(k.getNode(R));case"has":return u;case"allNodes":case"nodesOfKind":return(...R)=>l().servedAll(k[_](...R));case"count":return(...R)=>l().servedAll(k.nodesOfKind(...R)).length;case"allEdges":case"edgesOfKind":case"outEdges":case"inEdges":return(...R)=>k[_](...R).filter(l().seenEdge);case"out":case"in":case"neighbors":return(R,...m)=>{let b=l();return b.seenId(R)?b.servedAll(k[_](R,...m)):[]};case"snapshot":return()=>{let R=k.snapshot(),m=l();return{...R,nodes:m.servedAll(R.nodes),edges:R.edges.filter(m.seenEdge)}};case"size":{let R=l();return{nodes:R.servedAll(k.allNodes({archived:"all"})).length,edges:k.allEdges({archived:"all"}).filter(R.seenEdge).length}}default:return $o(k,_)}}}),y=()=>{let k=g();return yo(k,He(k))},w=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 R=g(),m=He(R);return R.filter(b=>!m.has(b.id))};case"get":return R=>g().find(m=>m.id===R);case"opsInBatch":return R=>g().filter(m=>m.batch===R);case"batches":return y;default:return $o(k,_)}}}),A=new Proxy(n,{get(k,_){switch(_){case Yu:return{store:k,principal:e};case"graph":return v;case"log":return w;case"snapshot":return v.snapshot;case"batches":return y;case"canUndo":return R=>et(h(),typeof R=="string"?[R]:R);case"violations":return R=>k.violations(R,v).filter(m=>Hu(s,b=>i.has(b),m));case"findings":return()=>k.findings().filter(R=>(R.id.includes("->")?R.id.split("->").map((b,S)=>S===0?b.slice(b.indexOf(":")+1):b):[R.id]).every(b=>!i.has(b)||u(b))&&!T(R,s.sees));case"wouldChange":return R=>k.wouldChange(R,e);case"preview":return(R,m,b)=>k.preview(R,m,{author:e,...b});case"seenBy":return(R,m)=>Rn(k,R,m);case"seenFor":return e;case"servedSeq":return k.servedSeq;case"checkpoint":return R=>p(k.checkpoint(R));default:return $o(k,_)}}});return r.set(t,A),A}se.kit={seatView:ad,viewsOf:sd,viewKey:id,diff:Pe,reads:So};var Oo=new Set;function Po(n,e){if(!n||e===void 0)return{enabled:new Set(Object.keys(n??{})),disabledKinds:Oo,disabledMutations:Oo,disabledInvariants:Oo,administered:dd(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:dd(n,t)}}function dd(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 cd(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().trim().replace(/\s+/g," ")}var Kt=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=cd(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=Eo(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=G(this.graph.schema.tryDefinition(e.kind),e),r=cd(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(Eo(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=Eo(r.sorted,t.key);r.sorted[i]===t.key&&r.sorted.splice(i,1)}};function Eo(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 Xu(n,e){return e.includes("*")?"record":e.map(t=>q(n.tryDefinition(t),t)).join(" or ")}function ld(n,e,t,r){let o=Xu(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}.`}}var fd=Symbol.for("@graview/core:node-ref"),ud=n=>typeof n=="object"&&n!==null?n[fd]:void 0;function Ie(n="*"){return Qu(L().check(Kn(1)),n)}function Qu(n,e){let t=Object.freeze(e==="*"?["*"]:[...e]),r=o=>{o&&Object.defineProperty(o,fd,{value:t,enumerable:!0,configurable:!0})};return r(n),r(j(n)),n}function Mo(n){if(typeof n!="object"||n===null)return;let e=ud(n);if(e)return e;let t=j(n),r=ud(t);if(r)return r;let o=t?.innerType;return o?Mo(o):void 0}function rt(n){let e=n.shape;if(!e)return[];let t=[];for(let[r,o]of Object.entries(e)){let i=Mo(o);i&&t.push({name:r,kinds:i,optional:o.safeParse(void 0).success})}return t}function zo(n){if(n===null||typeof n!="object")return JSON.stringify(n)??"null";if(Array.isArray(n))return`[${n.map(r=>r===void 0?"null":zo(r)).join(",")}]`;let e=n;return`{${Object.keys(e).filter(r=>e[r]!==void 0).sort().map(r=>`${JSON.stringify(r)}:${zo(e[r])}`).join(",")}}`}var pd=(n,e)=>n.key<e.key?-1:n.key>e.key?1:0;function ef(n){let e=n.nodes.map(r=>({key:r.id,value:r})).sort(pd),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(pd);return zo({nodes:e.map(r=>r.value),edges:t.map(r=>r.value)})}function An(n){return`sha256:${gd(ef(n))}`}function hd(n,e,t,r={}){let o=r.validate??!0,i=r.base??{nodes:[],edges:[]},s=An(t),a=X.from(n,i,{validate:o});for(let[h,v]of e.entries())try{a.applyPrimitives(v.primitives)}catch(y){let w=e[h-1];return{ok:!1,expected:An(a.snapshot()),actual:s,...w?{divergedAfter:w.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=An(a.snapshot());if(d===s)return{ok:!0,hash:s};let u=h=>{let v=X.from(n,i,{validate:o});for(let y=0;y<=h;y++)v.applyPrimitives(e[y].primitives);return An(v.snapshot())},l=h=>{try{let v=X.from(n,t,{validate:o});for(let y=e.length-1;y>h;y--)v.applyPrimitives(Ze(e[y]));return An(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 nf=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]),tf=new TextEncoder,rf=new Uint32Array(64),of=new Uint32Array(8),Vt=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function gd(n){let e=tf.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=of;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=rf;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 w=s[y-15],A=s[y-2],k=(w>>>7|w<<25)^(w>>>18|w<<14)^w>>>3,_=(A>>>17|A<<15)^(A>>>19|A<<13)^A>>>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 w=(p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<7),A=p&g^~p&h,k=v+w+A+nf[y]+s[y]>>>0,_=(u>>>2|u<<30)^(u>>>13|u<<19)^(u>>>22|u<<10),R=u&l^u&f^l&f,m=_+R>>>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+=Vt[u>>>24]+Vt[u>>>16&255]+Vt[u>>>8&255]+Vt[u&255]}return a}var ot=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 sf(n,e){return{...e,name:n}}function No(n){if(!n.creates?.length)return!1;let e=n.input.shape;return e===void 0||!("id"in e)}function vd(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 No(n)?[...r,"id"]:r}var md=(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 af(n){let e=n?._zod?.def;for(let t=0;e?.innerType&&t<8;t++)e=e.innerType._zod?.def;return e}var df=/^-?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?$/;function xd(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"||!df.test(i)||af(t[o])?.type!=="number")continue;let s=Number(i);Number.isFinite(s)&&(r??={...e},r[o]=s)}return r??e}var wd=n=>typeof n=="string"&&n.length<=200&&/^[^\s\p{Cc}]+$/u.test(n);function cf(n){if(typeof n!="object"||n===null)return;let e=n.id;if(e!==void 0){if(!wd(e))throw new z("An id is 1\u2013200 characters with no space",`Got ${JSON.stringify(e)}.`);return e}}function lf(n){let{id:e,...t}=n;return t}function yd(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"")||"item"}function Io(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 uf(n,e){if(e.limited&&e.me===void 0)return bd(n,e.held);let t=e.limited?`${n}.${Io(e.me)}`:n,r=t;for(let o=2;e.seen(r);o++)r=`${t}-${o}`;return e.held(r)?bd(t,e.held):r}function bd(n,e){let t;do t=`${n}-${Math.floor(Math.random()*36**6).toString(36).padStart(6,"0")}`;while(e(t));return t}function _n(n,e,t,r={}){let o=No(e)?cf(t):void 0,i=xd(e.input,o===void 0?t:lf(t)),s=vd(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 fe(e.name,[{path:[],message:md(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 fe(e.name,d.error.issues.map(b=>b.code==="unrecognized_keys"&&m.length>0?{...b,message:md(b.keys,m,e.writtenBy)}:b))}let u=d.data,l=new ot(r.seen??n),f=[],c=new Set,p=r.me===void 0?void 0:`.${Io(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),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},w={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 B(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 B(m,`Cannot patch missing node "${m}"`);let x={},$={};for(let[P,E]of Object.entries(b)){let M=S[P];JSON.stringify(M)===JSON.stringify(E)&&!r.keepUnchanged?.(E,P,S)||(x[P]=M,$[P]=E)}Object.keys($).length!==0&&f.push({op:"patch-node",id:m,before:x,after:$})},archiveNode:m=>w.patchNode(m,{[mn]:!0}),unarchiveNode:m=>w.patchNode(m,{[mn]:void 0}),mergeNode(m,b){let S=l.getNode(b)&&n.getNode(b);if(!S)throw new B(b,`Cannot merge into missing node "${b}"`);if(m===b||Be(S))throw new z(m===b?"Cannot merge a record into itself":"Cannot merge into an archived record");let x=new Set([...n.outEdges(b),...n.inEdges(b)].map(N));for(let $ of y(m)){let P={...$,from:$.from===m?b:$.from,to:$.to===m?b:$.to};P.from!==P.to&&!x.has(N(P))&&(x.add(N(P)),f.push({op:"add-edge",edge:P}))}w.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(x=>x.from===S)||f.push({op:"add-edge",edge:{kind:m,from:S,to:b}});for(let x of n.inEdges(b,m))l.getNode(x.from),x.from!==S&&f.push({op:"remove-edge",edge:x})},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 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&&wd(S)&&(!b||S.startsWith(`${b}:`))&&g(S)&&!h(S))return c.add(S),S;let x=b?`${b}:${yd(m)}`:yd(m),P=uf(x,{seen:E=>(r.seen?r.seen.has(E):n.has(E))||c.has(E),held:h,limited:r.seesInFull!==void 0&&!r.seesInFull(b),me:r.me});return c.add(P),P}};if(e.apply(w,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 A=r.check?.(f,e),k=new Set(f.flatMap(Se)),_=new ot(r.seen??n),R=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(),...A??[]]}:{},writes:[...k],intent:R,...v!==void 0?{mergedInto:v}:{},...c.size>0?{firstMinted:c.values().next().value}:{}}}var kd=Symbol.for("@graview/core:amount"),Wx=(n,e)=>(Object.defineProperty(j(n),kd,{value:e,enumerable:!0}),n);function To(n,e=!0){let t=j(n);return t?.[kd]??(e&&t?.innerType?To(t.innerType):void 0)}function Sd(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 $d(n,{format:e,unit:t,currency:r,locale:o}){let i=/^[A-Z]{3}$/.test(t??"");return e==="money"||!e&&i?Sd(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 ff=Symbol.for("@graview/core:typed-field");function jo(n){let e=j(n);return e?e[ff]??jo(e.innerType):void 0}var pf=/^[("'“‘]*(?:(?:[a-z]{1,3}\.){2,}|(?:dr|mr|mrs|ms|mx|st|mt|vs|jr|sr|prof|no|fig|approx)\.)$/i;function hf(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]==="."&&pf.test(r))&&!(t.split(" ").length<3&&e.index+1<n.length))return t}}function Rd(n,e=140){let t=n.replace(/^[#>\s]+|\*\*|`|\](\([^)\s]*\))?|\[/gm,"").replace(/\s+/g," ").trim(),r=hf(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 gf(n){let e=n.fields.shape;return Object.keys(e).flatMap(t=>{let r=Pt(e[t])?qn(t):void 0;return r&&e[r]?[r]:[]})}var mf=[["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 Ad(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=gf(o);if(i.length===0)continue;let s=o.kind,a=o.fields.shape,d=Object.keys(a).filter(l=>!(l in(o.fixed??{}))),u=l=>G(o,l);for(let[l,f,c,p]of mf){let g=`${l}-${s}`;t.has(g)||r.push({name:g,derived:{kind:s,act:l},title:f,description:c,subject:{kinds:[s],arg:"id"},writes:i.map(hn),...l==="skip"?{}:{creates:[s]},input:fn({id:Ie([s]),on:L().check(Vn(/^\d{4}-\d{2}-\d{2}$/,"a day, like 2026-10-21")),...i.length>1?{field:J(Qs(i))}:{},...l==="skip"?{}:Object.fromEntries(d.map(h=>[h,J(a[h])]))}),describe:(h,v)=>p.replace("{}",u(v.getNode(String(h.id))??{id:h.id}))+Re(String(h.on)),apply(h,v){let y=h.graph.getNode(String(v.id)),w=String(v.field??i[0]),A=y?.[w],k=y?.[hn(w)],_=String(v.on);if(typeof A!="string"||!gn(k))throw new oe(`${u(y??{id:v.id})} does not repeat`,"refused");let R=pn(A,k,{from:_,to:_})[0];if(!R)throw new oe(`${u(y)} does not fall on ${Re(_)}`,"refused");let m=String(y.id),b=Object.fromEntries(d.filter(W=>v[W]!==void 0).map(W=>[W,v[W]])),S=hn(w),x=W=>{let Z=Object.fromEntries(Object.entries({...y,...W,...b}).filter(([F,zn])=>zn!=null&&F!=="id")),ce=h.freshId(u(Z));h.addNode({...Z,id:ce,kind:s});for(let F of Object.keys(o.edges??{}))for(let zn of h.graph.out(m,F))h.addEdge({kind:F,from:ce,to:zn.id})};if(l!=="split"){h.patchNode(m,{[S]:{...k,except:[...new Set([...k.except??[],_])].sort()}}),l==="detach"&&x({[w]:R,[S]:null});return}if(Object.keys(b).length===0)throw new oe(`Nothing to change: give ${u(y)} from ${Re(_)} something new`,"invalid");if(_<=A.slice(0,10))return h.patchNode(m,b);let $=new Date(Date.parse(`${_}T00:00:00Z`)-864e5).toISOString().slice(0,10),P=k.count?pn(A,{...k,except:[]},{to:$}).length:0,{count:E,except:M,...ae}=k,Fe=W=>M?.some(W)?{except:M.filter(W)}:{};h.patchNode(m,{[S]:{...ae,until:$,...Fe(W=>W<_),...E?{count:P}:{}}}),x({[w]:R,[S]:{...ae,...Fe(W=>W>=_),...E?{count:E-P}:{},continues:m}})}})}}return r}function _d(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?G(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=>q(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=>C(k).toLowerCase(),y=Za(d,f,c,v),w={to:y&&"to"in y?y.to:p,from:q(a,d),one:g,also:y&&"also"in y?y.also:h&&!y?v(f):void 0},A=w.from;for(let k of ho){let _=go(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:R,fromTheOtherEnd:m}=La(k,w),b=c.description?`: ${c.description.replace(/\.$/,"")}`:"";i.push({name:_,derived:{kind:d,act:k,relation:f},title:R,fromTheOtherEnd:m,description:k==="connect"?`Link this ${A} 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 ${A} 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:fn({id:Ie([d]),to:Ie(c.to==="*"?"*":c.to)}),describe:(S,x)=>k==="disconnect"?`Unlink ${s(x,S.id)} from ${s(x,S.to)}`:g?`Set the ${p} of ${s(x,S.id)} to ${s(x,S.to)}`:`Link ${s(x,S.id)} to ${s(x,S.to)}`,apply(S,x){let $=String(x.id),P=String(x.to);for(let M of[$,P])if(!S.graph.getNode(M))throw new oe(`there is no record "${M}"`,"invalid");let E=S.graph.out($,f).some(M=>M.id===P);if(k==="disconnect"){if(!E)throw new oe(`${s(S.graph,$)} is not linked to ${s(S.graph,P)}`,"invalid");S.removeEdge({kind:f,from:$,to:P});return}if(g)for(let M of S.graph.out($,f))M.id!==P&&S.removeEdge({kind:f,from:$,to:M.id});E||S.addEdge({kind:f,from:$,to:P})}})}}}return i}function yf(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 Do=n=>`\xA7${n}\xA7`;function bf(n,e){if(n.label)try{let r={id:Do(e.length),kind:n.kind};e.forEach((s,a)=>r[s]=Do(a));let o=String(n.label(r)),i=e.map((s,a)=>[s,o.indexOf(Do(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 Od=new WeakMap;function Bt(n){let e=Od.get(n);if(e)return e;let t=n.fields.shape??{},r=Object.keys(t),o=n.display?.page,i=yf({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:bf(n,r)});return Od.set(n,i),i}function vf(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 xf(n,e){let t=Object.keys(e.input?.shape??{}),r=n?vf(n,e):void 0;if(!r)return t;let o=Bt(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 Fo(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 it(n){let e=n.fields.shape;return Object.keys(e).filter(t=>!(t in(n.fixed??{})))}function Lo(n,e){let t=e.subject;return t?t.kinds==="*"?n.kinds:t.kinds:[]}function Zo(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(rt(n.input).map(s=>s.name));return Object.keys(o).filter(s=>s!==t.arg&&r.has(s)&&!i.has(s))}function Co(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 Lo(n,o)){let s=n.tryDefinition(i);if(s)for(let a of Zo(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 Ed(n,e,t){let r=n.tryDefinition(t);if(!r)return[];let o=Co(n,e).get(t);return it(r).filter(i=>!o?.has(i))}var Md=n=>`edit-${n}`;function zd(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),Lo(n,i).includes(t)&&Zo(i,r).length>0&&o.add(i.name));return[...o]}function Nd(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=o.kind,s=Md(i);if(t.has(s))continue;let a=new Set((o.keptInStep??[]).filter(h=>it(o).includes(h))),d=Ed(n,e,i),u=Fo(it(o).filter(h=>d.includes(h)||a.has(h)),Bt(o),h=>h);if(u.length===0)continue;let l=Co(n,e).get(i),f=Object.fromEntries(it(o).flatMap(h=>!u.includes(h)&&l?.get(h)?.length?[[h,l.get(h)]]:[])),c=o.fields.shape,p=q(o,i),g=u.map(h=>yt(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=>Pd(c[h]))?{clearable:u.filter(h=>Pd(c[h]))}:{},input:fn({id:Ie([i]),...Object.fromEntries(u.map(h=>[h,J(Sf(c[h]))]))}),describe:(h,v)=>wf(o,c,u,h,v),apply(h,v){let y={};for(let w of u){let A=v[w];A===null?y[w]=void 0:A!==void 0&&(y[w]=A)}if(Object.keys(y).length===0)throw new oe(`Nothing to change \u2014 give at least one of ${g.join(", ")} a value.`,"invalid");h.patchNode(v.id,y)}})}return r}function wf(n,e,t,r,o){let i=o.getNode(r.id),s=i?G(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=yt(n,c?f:d);return`the ${p===p.toUpperCase()?p:vi(p)}${u===0?` of ${s}`:""} to ${c?l?`repeat ${kf(l)}`:"stop repeating":Id(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 kf=n=>`every ${(n.interval??1)>1?`${n.interval} ${n.every}s`:n.every}`;function Id(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(Bn(r).length>0)return Bn(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=>Id(n,e,t,i)).join(", ");if(typeof r=="boolean")return r?"yes":"no";if(typeof r=="number"){let i=To(e);return i?$d(r,i):jo(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(fr.test(r))return Re(r);if(pt.test(r))return hr(r);for(let i=j(e);i;i=j(i.innerType))if(i.type==="enum")return C(r);return`\u201C${Rd(r,60)}\u201D`}function Pd(n){return n._zod?.def?.type==="optional"}function Sf(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 Td(n,e){return n.filter(t=>!t.derived&&(t.creates??[]).includes(e)).map(t=>t.name)}function Ut(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"?zd(n,e,t.derived.kind):Td(e,t.derived.kind)}function $f(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=o.kind,s=q(o,i),a=(u,l)=>{let f=u.getNode(String(l));return f?G(o,f):String(l)},d=Ie([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:Oe(u==="merge"?{id:d,into:d}:{id:d}),describe:(h,v)=>{let y=u==="remove"&&v.getNode(String(h.id)),w=y?new Set(Object.values(y).flatMap(A=>Bn(A).map(k=>k.href))).size:0;return`${l} ${a(v,h.id)}${u==="merge"?` into ${a(v,h.into)}`:""}${w?` and its ${w} file${w>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 Go(n,e){return[...Nd(n,e),...$f(n,e),...Ad(n,e),..._d(n,e)]}var Rf=n=>({$made:n}),Wt=n=>typeof n=="object"&&n!==null&&Object.keys(n).join()==="$made"&&Number.isInteger(n.$made)&&n.$made>=0,Af=(n,e)=>Object.fromEntries(Object.entries(n.args??{}).map(([t,r])=>[t,Array.isArray(r)?r.map(e):e(r)])),jd=n=>Object.values(n.args??{}).some(e=>Wt(e)||Array.isArray(e)&&e.some(Wt)),Dd=(n,e,t)=>({...n,args:Af(n,r=>{if(!Wt(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 _f=500,Of=120,Pf=50,Fd=4e3,Ef=["model","suggestion","interaction","actor","run"],Ld=n=>typeof n=="string"&&n.length>0&&n.length<=Of,Mf=n=>{let e=JSON.stringify(n);return e===void 0?void 0:JSON.parse(e)};function st(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<=_f;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:Ef.includes(i)?o&&=Ld(s):i==="evidence"?o&&=Array.isArray(s)&&s.length<=Pf&&s.every(Ld):o&&=i!=="__proto__"&&i!=="constructor"&&i!=="prototype"&&(s=Mf(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 }");if(JSON.stringify(r).length>Fd)throw new z(`A lineage is at most ${Fd} characters written out.`);return r}var On="keep-link";function Zd(n){let e=(t,r)=>{let o=t.getNode(r);return o?G(n.tryDefinition(o.kind),o):r};return{name:On,title:"Keep this link",input:Oe({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 B(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 Cd=(n,e)=>[...n].filter(t=>!t.derived&&t.name!==On&&typeof e=="string"&&(t.connects?.includes(e)||t.severs?.includes(e))).map(t=>t.name);var Gd=["kind-unknown","node-shape","edge-dangling","edge-disallowed","rule-error","rule-budget"];function Kd(n,e){let t=Nt(n,e);return t&&[...t.fields].filter(Boolean)}function zf(n,e,t){return n.tryDefinition(e)?.fields?.shape?.[t]}function qt(n,e){try{return G(n.tryDefinition(e.kind),e)}catch{return typeof e.label=="string"?e.label:"A record"}}var Nf=n=>`${n.kind}:${n.from}->${n.to}`,Ht=(n,e)=>n<e?-1:n>e?1:0;function Vd(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)=>Ht(p.id,g.id))){if(!r.tryDefinition(c.kind)){d.add(c.id),o.push({code:"kind-unknown",id:c.id,message:`${qt(r,c)} is a kind of record this app no longer has`,repair:a(c)});continue}let p=Kd(r,c);if(p===void 0)continue;let g=qt(r,c),h=new Map,v=p.length>0;for(let y of p){if(y==="id"||y==="kind"){v=!1;continue}let w=zf(r,c.kind,y),A=w?w.safeParse(void 0):{success:!0,data:void 0},k=r.tryDefinition(c.kind)?.defaults;!A.success&&w&&k&&Object.hasOwn(k,y)&&(A=w.safeParse(k[y])),A.success?A.data===void 0?h.set(y,{action:"clear",value:le}):h.set(y,{action:"coerce",value:A.data}):v=!1}if(v){let y={...c};for(let[w,A]of h)A.value===le?delete y[w]:y[w]=A.value;Kd(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 w=h.get(y),A=v&&w?{action:w.action,primitives:[{op:"patch-node",id:c.id,before:{[y]:c[y]===void 0?le:c[y]},after:{[y]:w.value}}]}:a(c);o.push({code:"node-shape",id:c.id,detail:y,message:`${g}: ${C(y)} does not fit what ${c.kind} declares`,repair:A})}}let u=new Set,l=[];for(let c of[...e.edges].sort((p,g)=>Ht(N(p),N(g)))){if(u.has(N(c)))continue;u.add(N(c));let p=Nf(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:`${qt(r,g)} \u2192 ${qt(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=X.from(r,{nodes:[...i.values()],edges:l},{validate:!1}),p=new Set,g;try{g=vn(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,w=`${v}|${y}|${h.invariant}`;p.has(w)||(p.add(w),o.push({code:v,id:y,detail:h.invariant,message:h.message}))}}return o.sort((c,p)=>Gd.indexOf(c.code)-Gd.indexOf(p.code)||Ht(c.id,p.id)||Ht(c.detail??"",p.detail??""))}var at=()=>globalThis.__graviewWatch;function Bd(n){at()?.store?.(n)}function Yt(n){n!==void 0&&at()?.learn?.({ids:[n],words:[]})}function Ud(n,e){at()?.refused?.({...n,...e===void 0?{}:{author:e}})}function Ko(n,e){let t=at();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 If(n,e){n instanceof fe&&Ko(n,e)}function Tf(n,e,t){at()?.seat?.(n,e,t)}function Bo(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 Q(e,t)}var Vo=15*6e4;function Wd(n=Date.now(),e){let t=new Date(n).getTime(),r=ht(e),o=Q(r,t),i=new Date(Date.parse(`${o}T00:00:00Z`));if(i.setUTCDate(i.getUTCDate()+1),!r)return i.getTime()-t;let s=gi(i.toISOString().slice(0,10),0,r);for(;Q(r,s)===o;)s+=Vo;for(;Q(r,s-Vo)!==o;)s-=Vo;return s-t}function jf(n,e){let t,r=()=>{t=setTimeout(()=>{let o=n.tick(new Date);r(),e?.(o)},Wd(Date.now(),n.timeZone)+1e3),t.unref?.()};return r(),()=>clearTimeout(t)}var Jt=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"}},Uo="preview",K=(n,e)=>e===void 0?{}:{[n]:e},Xe={kind:"human"},qd={kind:"system"},Jd={kind:"system",id:"modules",name:"Modules"},Hd=n=>n.mutation===null&&n.undoes===void 0;function Wo(n,e){return`${n.invariant}|${n.subjectId??""}|${n.line||e?.has(n.invariant)?n.label:n.message}`}var Df=new Set(["remove","archive","unarchive","merge"]),Ff={has:()=>!0},Xd=n=>new Set(n.filter(e=>e.shape).map(e=>e.name));function Qd(n,e,t){let r=Xd(n),o=f=>Wo(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&&Wo(f,Ff),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 Pn=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"}},Xt=class extends z{constructor(t,r){let o=mo(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},Yd=n=>new Map(n.map(e=>[e.id,e.batch]));function Lf(){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:Q(this.timeZone),on:Q(this.timeZone)}),this.policy=e.policy,this.publishing=e.publishing,this.by=e.principal??Xe,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=Lf();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?[]:Go(e.schema,e.mutations??[]))this.mutations.set(i.name,i);!e.past&&!this.mutations.has(On)&&(this.keeper=Zd(e.schema),this.mutations.set(On,this.keeper));let r=K("horizon",e.horizon),o={validate:this.validate};if(e.log){this.log=kn.from(e.log,e.epochs,r);let i=this.log.lastEpoch();this.graph=e.snapshot?X.from(e.schema,e.snapshot,o):this.log.fold(e.schema,{...o,...i?{from:i}:{}})}else this.log=kn.from([],e.epochs??(e.snapshot?[{seq:e.horizon??0,base:e.snapshot}]:[]),r),this.graph=X.from(e.schema,e.snapshot??{nodes:[],edges:[]},o);e.past||(this.countPastTheLog(),Bd(this))}stillNow(){if(this.past)throw new Jt(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 se.seq?.(this)}get publisher(){return se.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}}let s=r&&o===r.said?r.projection:Po(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=Po(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=>ie(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:Jd,intent:an(d),mutation:null,primitives:[],reads:[],writes:[],at:this.now(),...K("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===Zt?this.publisher:void 0);if(!t)throw new Xt(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===jt&&!this.typer&&re.typeText&&!this.past&&!this.mutations.has(e)&&this.mutations.set(e,this.typer=re.typeText(this)),this.mutations.has(e)?e:Ft(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=Cd(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=>Ut(this.schema,i,s)??[]))]}if(e!==void 0&&e===this.typer)return re.via(this.schema,[...this.mutations.values()],this.subjectKindOf(t,r),t?.args.field);if(e?.derived)return Ut(this.schema,[...this.mutations.values()],e)}moved(e,t){return Qd(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=Xe){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===Zt?this.publisher:void 0);if(o&&o===this.publisher)return se.verdict(this,t);let i=o?.subject&&e.args[o.subject.arg];return ze(this.policy,t,e.name,this.subjectKindOf(e,t),this.viaOf(o,e,t),typeof i=="string"?i:void 0,this.words,()=>{let s=D(t).id,a=this.namedIn(e,!1);try{for(let d of _n(this.graph,o,e.args,this.sighted(t)).primitives)"edge"in d&&d.edge.from!==s&&d.edge.to!==s&&a.push(d.edge.to)}catch{}return a},o!==void 0&&(o.derived!==void 0||o===this.typer)?()=>pe(this.log).creatorOf(i):void 0,o?.derived!==void 0&&Df.has(o.derived.act))}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]]:[],...rt(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&&Ud(e,t),new We(e)}get words(){return{act:e=>this.mutations.get(e)?.title,noun:e=>q(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=qd){let r=this.modules.disabledKinds;if(r.size===0||!U(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&&D(e).id};if(e===void 0||!Je(this,e))return t;let r=$n(this,e);return{...t,seen:Rn(this,e).graph,keepUnchanged:o=>T(o,r),seesInFull:ed(this,e)}}collaborative(e,t){return re.collaborative?.(this.schema,this.graph.getNode(e)?.kind,t)??!1}asSplices(e,t){return re.asSplices?re.asSplices(this,e,t):e}missingFor(e,t=Xe){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=Rn(this,t).graph;for(let s of o)if(!i.has(s))return new B(s,`\u201C${r.title??e.name}\u201D names a record that is not there.`)}mayAdminister(e,t=Xe){let r=this.modules.administered.get(e);return r?(r.mutations??[]).some(o=>{let i=this.mutations.get(o);return!!i&&lo(i).some(s=>ze(this.policy,t,o,s,this.viaOf(i)).ok)}):!1}seenBy(e,t){return Rn(this,e,t)}sees(e,t){return this.graph.has(t)&&$n(this,e)(t)}labels;resolveRef(e,t,r=Xe){let o=(this.policy?.sees?.length??0)>0,i=c=>!o||this.sees(r,c),s=this.graph.getNode(t);if(this.labels??=new Kt(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"}:ld(this.schema,e,t,f)}kindsKeptFrom(e=Xe){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&&!U(e)){let o=new Set(this.permittedMutations(e).flatMap(s=>s.creates??[])),i=Ne(this);for(let s of this.schema.kinds)!r.some(d=>d.kinds.includes(s)&&Me(d,e)&&(!d.own&&!d.via||e.id!==void 0)&&(i||!tt(d)))&&!o.has(s)&&t.add(s)}return t}permittedMutations(e=Xe){let t=this.allMutations(),r=co(this.policy,e,t.filter(s=>!s.derived&&s!==this.publisher)),o=this.publisher&&se.verdict(this,e).ok?[this.publisher]:[],i=t.filter(s=>s.derived!==void 0&&ze(this.policy,e,s.name,s.derived.kind,this.viaOf(s),D(e).id).ok);return[...r,...o,...i]}subjectKindOf(e,t=qd){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(!(!U(t)&&!$n(this,t)(i)))return this.graph.getNode(i)?.kind}today(){return this.pinned()??(this.ticked&&this.ticked.on===Q(this.timeZone)?this.ticked.day:void 0)??(this.timeZone?Q(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=la(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=Bo(e,this.timeZone),o=Q(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 vn(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 _n(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=_n(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:X.from(this.schema,this.graph.snapshot(),{validate:this.validate}),log:kn.from(this.log.all(),this.log.epochs(),{horizon:this.log.horizon}),listeners:new Set,labels:void 0,nextId:()=>`${Uo}:${++t}`,mintBatch:()=>Uo,rehearsing:!0});let r=this.typer&&re.typeText(e);return Object.assign(e,{typer:r,mutations:r?new Map(this.mutations).set(jt,r):new Map(this.mutations)}),e}previewPrimitives(e,t){let r=this.violations(t.context),o=X.from(this.schema,this.graph.snapshot()),i=o.applyPrimitives(e,{restoring:t.restoring===!0}),s=vn(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(x=>this.spelledCall(x));this.stillNow();let i=t.batch??this.mintBatch("batch"),s=t.author??this.by,a=st(t.lineage),d=[],u=[],l=new Set,f=new Set,c=[],p=this.violations(r),g=this.graph.snapshot(),h=this.log.length,v=x=>{let $=this.policy||this.publisher&&x.name===Zt?this.permits(x,s):void 0;$&&!$.ok&&this.refuse($.refusal,s.id)},y=x=>{let $=this.refusesAgent(x,s)??this.namesTurnedOff(x,s);$&&this.refuse($,s.id)},w=o.map(jd);o.forEach((x,$)=>w[$]||v(x)),o.forEach((x,$)=>w[$]||y(x));let A=bo(s);A&&this.refuseDeclined(o,s),this.rehearsing||Yt(s.id);let k=[],_=[],R=new Map,m=x=>typeof x=="string"?R.get(x)??x:Array.isArray(x)?x.map(m):x;try{for(let[x,$]of o.entries()){let{mintedHint:P,...E}=$,M=R.size?{...E,args:Object.fromEntries(Object.entries(E.args).map(([F,zn])=>[F,m(zn)]))}:E,ae=w[x]?Dd(M,k,x):M;w[x]&&(v(ae),y(ae));let Fe=this.mutation(ae.name);if(Fe===this.publisher){let F=se.op(this,{id:this.nextId(),at:this.now()},ae,i,s,t);d.push(F),c.push(F.intent);continue}let W=this.missingFor(ae,s);if(W)throw W;let Z;try{Z=_n(this.graph,Fe,ae.args,{...this.sighted(s),hint:P})}catch(F){throw F instanceof fe&&!this.rehearsing&&Ko(F,s.id),F}if(P!==void 0&&Z.firstMinted!==void 0&&Z.firstMinted!==P&&R.set(P,Z.firstMinted),A){let F=Ba(this.schema,this.graph,Z.primitives,this.authorName(s),{declaration:!this.suggesting});F&&this.refuse({mutation:ae.name,message:F,wouldNeed:[]},s.id)}if(Z.primitives.length===0)continue;_[x]=Z.firstMinted,k[x]=Z.primitives.find(F=>F.op==="add-node")?.node.id;let ce={id:this.nextId(),seq:this.log.length,batch:i,author:s,intent:Fe.describe!==void 0?Z.intent:t.intent??Z.intent,...K("batchIntent",t.intent),mutation:ae,primitives:this.asSplices(Z.primitives,t.base).map(Nn),reads:Z.reads,writes:Z.writes,...Fe.describe!==void 0&&Z.described&&Z.described.length>0?{described:Z.described}:{},...K("mergedInto",Z.mergedInto),at:this.now(),...K("via",t.via),...K("lineage",a)};this.graph.applyPrimitives(ce.primitives),this.log.append(ce),d.push(ce),u.push(...ce.primitives);for(let F of ce.reads)l.add(F);for(let F of ce.writes)f.add(F);c.push(ce.intent)}}catch(x){throw this.putBack(g,h),x}let b=Ee(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 Pn(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(Ee(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,...K("batchIntent",a.batchIntent),mutation:a.mutation??null,primitives:u,reads:a.reads??[],writes:a.writes??[...new Set(u.flatMap(Se))],at:a.at??this.now(),...K("undoes",a.undoes),...K("via",a.via),...K("lineage",st(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 Pn(a,d)}for(let a of i)this.log.append(a);this.countPast(i);for(let a of i)Yt(a.author.id);return this.notify(Ee(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=st(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(Se))],at:this.now(),...K("via",t.via),...K("lineage",d)};this.graph.applyPrimitives(p.primitives),this.log.append(p),l.push(p),Yt(o.id)}let f=this.violations(),c=Ee(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 Vd({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=Ta(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(Hd),...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&&!U(o);if(i){let h=et(_o(wn(this.log.all(),Gt(this,o)),()=>this.log.epochs()),r);if(!h.ok)throw new Ue(h)}let s=this.canUndo(r);if(!s.ok)throw new Ue(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=st(t.lineage);if(this.policy||this.publisher)for(let h of s.ops){if(!h.mutation)continue;let v=D(h.author).id,y=A=>JSON.stringify(A).includes(JSON.stringify(v)),w=v!==void 0&&v!==D(o).id&&!U(o)&&!y(h.mutation.args)&&y(h.primitives)?{ok:!1,refusal:{mutation:h.mutation.name,wouldNeed:[],message:"it was done as somebody else."}}:this.permits(h.mutation,o);w.ok||this.refuse({...w.refusal,message:`Not permitted to undo "${h.intent}": ${w.refusal.message}`},o.id,!0)}let u=this.graph.snapshot(),l=this.violations(),f=[],c=this.log.length;for(let{op:h,primitives:v}of po(this.log.all(),s.ops)){let y={id:this.nextId(),seq:this.log.length,batch:a,author:o,intent:`Undo: ${h.intent}`,...K("batchIntent",t.intent),mutation:null,primitives:v,reads:h.reads,writes:h.writes,at:this.now(),undoes:h.id,...K("via",t.via),...K("lineage",d),...K("undoneLineage",h.lineage)};this.graph.applyPrimitives(y.primitives,{restoring:Hd(h)}),this.log.append(y),f.push(y)}let p=Ee(u,this.graph.snapshot(),f.flatMap(h=>[...h.primitives]));this.admitted(t,f,f.flatMap(h=>[...h.primitives]),p,u,c);let g=this.violations();return this.notify(p,f),{batch:a,ops:f,diff:p,primitives:f.flatMap(h=>[...h.primitives]),reads:[...new Set(f.flatMap(h=>[...h.reads]))],writes:[...new Set(f.flatMap(h=>[...h.writes]))],intent:t.intent??f.map(h=>h.intent).join("; "),...this.moved(l,g),violationsAfter:g}}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=Va(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&&va(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 w of[...i].reverse())this.graph.applyPrimitives(Ze(w),{restoring:!0,inPlace:!0});this.log.truncate(s);let h=new Set(this.log.all().map(w=>w.id));for(let w of e.confirmed){if(h.has(w.id))continue;try{this.graph.applyPrimitives(w.primitives,{restoring:w.undoes!==void 0})}catch(k){throw new Pn(w,k)}let A=In({...w,seq:this.log.length});this.log.append(A),h.add(w.id),l.push(A)}this.countPast(l);let v=re.carried?.(i,l,e.pending),y=Yd(i);for(let w of e.pending){let A=i.filter(k=>k.batch===w);if(A.length!==0)try{f.push(...this.replay(w,A,v?.get(w),y))}catch(k){c.push({batch:w,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=Pe(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,K("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,Yd(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=Pe(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,...K("intent",i.batchIntent),...K("via",i.via),...K("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 hd(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),A=Date.parse(e.now??this.now())-(e.keepDays??90)*864e5,k=t.find(R=>Date.parse(R.at)>A),_=k?k.seq:this.log.length;r=Math.min(y,_)}let o=ko(this.publishing)?[this.publishedSeq??0]:[],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}=Ya(this.log,r,y=>f.has(y)),g=pe(this.log),h=Ha(this.log,r,l.base.nodes,y=>T(y,w=>!f.has(w)&&g.kindOf(w)===void 0)),v=y=>y&&Object.keys(y).length>0;return{...l,...v(c)&&{creators:c},...p&&{removed:p},...v(h)&&{writers:h}}}compact(e){return this.stillNow(),this.log.compact(e)}};var Zf=n=>`lens:${n}`,Cf={hidden:[],removed:[],may:{views:!1,lenses:!1}};function Gf(n,e,t){return n.name!==void 0&&e.may.views?"view":n.declared&&e.may.lenses&&t.lens?"lens":null}var ec=["full","summary","glyph"],dt="view:",Yo=(n,e)=>n.as===e.as&&(n.over??[n.kind]).includes(e.kind),Kf=n=>n.filter((e,t)=>!n.slice(0,t).some(r=>Yo(r,e))),Vf=n=>n.filter(e=>!e.hidden);function we(n){return n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function ct(n,e){return`/${we(n.tryDefinition(e)?.plural??`${e}s`)}`}function Bf(n,e,t){return`${ct(n,e)}/${encodeURIComponent(t)}`}function Uf(n,e){return`/places/${encodeURIComponent(n)}${e?`?of=${encodeURIComponent(e)}`:""}`}function nc(n,e){return e.some(t=>t.as===n.as&&!Yo(n,t))}function Wf(n,e,t){return nc(n,e)?`${n.title} \xB7 ${(t.tryDefinition(n.kind)?.plural??`${n.kind}s`).toLowerCase()}`:n.title}var Qe=(n,e,t="")=>`${n}|${e.cardinality}|${e.fidelity}|${t}`;function Ho(n){switch(n){case"full":return["full","summary","glyph"];case"summary":return["summary","full","glyph"];case"glyph":return["glyph","summary","full"]}}function qf(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(Qe(a,d),c),l?.title){let p=we(l.title);e.set(Qe(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 ec)e.delete(Qe(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(Qe(a,d))?.view},resolve(a,d,u){if(u)for(let l of Ho(d.fidelity)){let f=e.get(Qe(a,{cardinality:d.cardinality,fidelity:l},u));if(f)return f}for(let l of Ho(d.fidelity)){let f=e.get(Qe(a,{cardinality:d.cardinality,fidelity:l}));if(f)return f}if(d.cardinality==="one")for(let l of Ho(d.fidelity)){let f=e.get(Qe(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 Hf=["day","week","month","year","decade"];function tc(n){let e={};n.q&&n.q.trim().length>0&&(e.query=n.q);let t=Xr(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,...Hf.includes(o)?{bucket:o}:{}})}return e}function Jo(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 Qt(n,e,t){let r=Jo(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 Yf(n,e,t){let r=Jo(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 lt={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"]}},Jf=20,oc=Object.keys(lt),Xf=(n,e,t,r=lt[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.`}),ic=n=>Object.hasOwn(lt,n);function Xo(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 En=n=>typeof n=="object"&&n!==null&&!Array.isArray(n);function rc(n,e,t){let r=n.tryDefinition(e)?.fields.shape,o=j(r?.[t]);for(;o&&(o.type==="optional"||o.type==="default"||o.type==="nullable"||o.type==="prefault");)o=j(o.innerType);return o?.type!=="enum"?[]:(o.entries?Object.values(o.entries):o.values??[]).filter(s=>typeof s=="string")}function Qf(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(!ic(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 ${oc.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=lt[d.name],g=En(d.options)?d.options:{};if(d.options!==void 0&&!En(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}`,...Xf(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=tc(d.arrangedBy));let v=En(d.bindings)?d.bindings:{},y=[],w,A=(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=>En(v[S])),b=m.filter(S=>!o.has(S));if(m.length===0)return A(`${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(x=>typeof x=="string"?{id:x,label:x}:x);else{let x=m.flatMap(P=>{let E=v[P],M=typeof E.column=="string"?E.column:typeof E.columns=="string"?E.columns:void 0;return M?rc(n.schema,P,M):[]}),$=[...new Set(x)];if($.length===0)return A(`${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=$.map(P=>({id:P,label:P.toUpperCase()}))}h.extent===void 0&&(h.extent=1440)}if(d.name==="columns"){if(h.sort!==void 0){let x=m.map($=>Qt(h.sort,s($),$)).find(Boolean);x&&(r.push({severity:"warning",code:"lens-sort",path:`${l}.options.sort`,message:`"${f}" cannot order its cards: ${x}.`,fix:'Write { "by": "<a field>", "direction": "asc" }, or drop it.'}),delete h.sort)}let S=new Set;for(let x of m){let $=v[x].column;if(typeof $!="string"||!s(x).includes($))return;let P=rc(n.schema,x,$);if(P.length===0)return A(`${l}.bindings.${x}.column`,`its column field "${$}" is not a choice`,`Bind "column" to a choice field of ${x}, like a status.`);for(let E of P)S.add(E)}typeof h.move!="boolean"&&delete h.move,Number.isInteger(h.cap)&&h.cap>=1&&h.cap<=500||delete h.cap;for(let x of["collapsed","hidden"])Xo(h,x,$=>S.has($))}if(d.name==="calendar"&&h.today!==void 0&&!(typeof h.today=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(h.today)))return A(`${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,x=E=>E===void 0||Number.isInteger(E)&&E>=1&&E<=9999,$=typeof S=="number"?{years:S,title:"Years"}:S;En($)&&Number.isInteger($.years)&&$.years>=1&&$.years<=200&&typeof $.title=="string"&&$.title.trim().length>0&&x($.from)&&x($.to)&&Object.keys($).every(E=>["years","title","from","to"].includes(E))&&!(typeof $.from=="number"&&typeof $.to=="number"&&$.to<$.from)?h.horizon=$:(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 A(`${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=x=>{let $=v[x];if(En($)){if(typeof $.kind=="string")return $.kind;if(typeof $.edge=="string")return $.edge;if(Array.isArray($.path))return{path:$.path};if(typeof $.field=="string")return $.field}};for(let x of p.requiredRoles)if(m(x)===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 x=m("columns");if(!o.has(x))return;let $=m("link");if(typeof $=="string"&&!i.has($))return;Object.assign(h,{rows:S,columns:x,link:$}),x!==S&&(w=x);for(let[P,E]of[["sort",S],["columnSort",x]]){if(h[P]===void 0)continue;let M=Qt(h[P],s(E),E);M&&(r.push({severity:"warning",code:"lens-sort",path:`${l}.options.${P}`,message:`"${f}" cannot order its ${P==="sort"?"rows":"columns"}: ${M}.`,fix:`Write { "by": "<a field of ${E}>", "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 x of["x","y"])if(!s(S).includes(h[x]))return}else{Object.assign(h,{regions:S,outline:m("outline")});for(let x of["markers","at","within","nests","regionKind","markerKind"]){let $=m(x);typeof $=="string"&&(h[x]=$)}}y=[S]}else if(d.name==="blocks"){if(!d.on)return A(`${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 A(`${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 A(`${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 A(`${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);w=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??{})]);Xo(h,"search",S=>m.includes(S)),Xo(h,"filters",S=>b.has(S.split(".")[0]))}let _=we(f);if(_.length===0)return A(`${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 R=d.create;R!==void 0&&typeof R!="boolean"&&r.push({severity:"warning",code:"lens-create",path:`${l}.create`,message:`"${f}" says create ${JSON.stringify(R)}, 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,...w?{across:w}:{},options:h,...d.hidden===!0?{hidden:!0}:{},...R===!1?{create:!1}:{}})}),{drawn:e,undrawn:t,findings:r}}var ep=6;function np(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 tp(n,e,t){if(!n?.primary)return;let r=new Set(n.primary.map(we));return{kinds:new Set(e.kinds.filter(o=>r.has(we(o))||r.has(ct(e,o).slice(1)))),places:new Set(t.filter(o=>r.has(o.as)||r.has(we(o.title))||o.name!==void 0&&n.primary.includes(dt+o.name)).map(o=>`${o.kind}|${o.as}`))}}var sc="overview",rp=`/places/${sc}`;function op(n){let e=n?.scene?.trim();return e||"Scene"}function ip(n){let e=n?.pages?.trim();return e||"Pages"}function sp(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 ac(n){return n.startsWith(dt)&&n.slice(dt.length).trim()||void 0}function ap(n,e,t){let r=[],o=new Set;for(let i of e??[]){let s=ac(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 dp(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=we(r),i=t.find(d=>d.title===r||dt+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=>ct(e,d).slice(1)===o);return a?{to:"kind",kind:a}:void 0}function Qo(n){let e=(n??"").replace(/\/+$/,"");return e===""?"":e.startsWith("/")?e:`/${e}`}function cp(n,e={}){let t=typeof n=="string"?n:n.address,r=Qo(e.basePath),o=t.startsWith("/")?t:`/${t}`;return r===""?o:o==="/"?r:o.startsWith("/?")||o.startsWith("/#")?`${r}${o.slice(1)}`:`${r}${o}`}function lp(n,e){let t=Qo(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 er=2500,up=er*4;function fp(n){let e=n.name??"";return e&&n.onBehalfOfName?`${e}, for ${n.onBehalfOfName}`:e}function ei(n,e,t=er){return n.held==="socket"?!0:n.until!==void 0?e<Date.parse(n.until):e-Date.parse(n.at)<t}var Uk=new Set(Et);function pp(n){return`${n.kind}:${n.id??""}:${n.session??""}`}function hp(n,e,t,r=er,o){let i=new Map;for(let[s,a]of n)ei(a,t,r)&&i.set(s,a);for(let s of e){if(!ei(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 gp(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 dc=Symbol.for("@graview/core:app-link"),mp=n=>(Object.defineProperty(j(n),dc,{value:1,enumerable:!0}),n);function cc(n){let e=j(n);return!!e&&(e[dc]===1||cc(e.innerType))}var Yk=()=>mp(L().check(Kr(500),Vn(At,"another app's address")));var nr=(n,e)=>`${e.kind}\0${e.id??""}\0${n.address}\0${n.kind}\0${n.id}`;function yp(n,e,t=()=>{}){let r=new Map,o=new Map,i=s=>{let a=nr(s,e),d=r.get(a);return d||(d=Promise.resolve().then(()=>n.resolve(s,e)).then(u=>bp(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=nr(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(nr(s,e)),forget(s){if(!s){r.clear(),o.clear();return}let a=nr(s,e);r.delete(a),o.delete(a)}}}function bp(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 vp=1;var tr=(n,e)=>`${n}\0${e}`;function ti(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 ni=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 ti(r)){let s=tr(o,i);(this.revs.get(s)??this.floor)<t.seq&&this.revs.set(s,t.seq)}}of(e,t){return this.revs.get(tr(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=tr(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 xp(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 ti(r))e.add(tr(o,i))}return e}var oS=Symbol.for("@graview/core:collaborative"),iS=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0;var wp=/^#([0-9a-f]{3,8})$/i,kp=/(rgba?|hsla?)\(([^)]+)\)/gi;function Sp(n){let e=wp.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 $p(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:{...uc(o,i>1?i/100:i,s>1?s/100:s),a:a??1}}function en(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 ke(n,e,t){return{...uc(n,e,t),a:1}}function uc(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 ee(n){let e=[];for(let t of n.matchAll(kp)){let r=$p(t[0]);r&&e.push(r)}for(let t of n.matchAll(/#[0-9a-fA-F]{3,8}\b/g)){let r=Sp(t[0]);r&&e.push(r)}return e}function nn(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 ri(n){let e=n/255;return e<=.03928?e/12.92:((e+.055)/1.055)**2.4}function lc(n){return .2126*ri(n.r)+.7152*ri(n.g)+.0722*ri(n.b)}function he(n,e){let[t,r]=[lc(n),lc(e)].sort((o,i)=>i-o);return(t+.05)/(r+.05)}var rr=(n,e)=>`rgba(${Math.round(n.r)}, ${Math.round(n.g)}, ${Math.round(n.b)}, ${e})`,fc={r:0,g:0,b:0,a:1},or={r:255,g:255,b:255,a:1};function ir(n){let e=ee(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=en(e);for(let s of["dark","light"]){let a=n.base[s],d=ee(a.ground)[0]??(s==="dark"?fc:or),u=nn(ee(a.panel)[0]??or,d),l=_p(i,[u,d],s,4.5);l?Math.abs(l.l-i.l)>Ap&&(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=ke(f.h,f.s,f.l),p=n.accentInk?.[s]??(he(or,c)>=he(fc,c)?"#ffffff":"#000000"),g=he(ee(p)[0]??or,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:rr(c,1),accentDim:rr(c,s==="dark"?.35:.22),accentInk:p,glow:rr(c,s==="dark"?.28:.1),edgeBright:rr(c,oi(c,u,s==="dark"?.55:.42,3)),...n.warn?.[s]?{warn:n.warn[s]}:{}};let h=ee(t[s].warn)[0];h&&Rp(en(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 oi(n,e,t,r){for(let o=Math.round(t*100);o<=100;o++){let i=o/100;if(he(nn({...n,a:i},e),e)>=r)return i}return 1}function Rp(n,e){let t=Math.abs(n-e)%360;return t>180?360-t:t}var Ap=.3;function _p(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(ke(n.h,n.s,d),u)>=r))return{...n,l:d}}return null}function Op(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 tn=Object.freeze({navy:"#001769",turquoise:"#00e5b9",paper:"#f7f7f2",ink:"#18213a",muted:"#586174"}),ii="Montserrat",si=Object.freeze({display:550,body:450,label:600}),ai=Object.freeze({display:600,body:400,label:600}),Pp="-0.025em",Ep=Object.freeze({minWidth:140,clearSpace:.5,microMax:24,regularMin:32,microBelow:28});var pc={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:tn.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},hc={ground:tn.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:tn.ink,inkMuted:tn.muted,inkFaint:"#626b7d",accent:tn.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},Te={dark:pc,light:hc};var je=Object.freeze({radius:8,density:1,radiusSmall:.72,radiusSmallFloor:2,pad:15,padSmall:10,gap:7}),rn=Object.freeze({body:`"${ii}", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif`,mono:'ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace'});function Mp(n){let e=n?.shape?.radius??je.radius,t=n?.shape?.density??je.density;return Object.freeze({radius:e,radiusSmall:Math.max(je.radiusSmallFloor,Math.round(e*je.radiusSmall)),pad:Math.round(je.pad*t),padSmall:Math.round(je.padSmall*t),gap:Math.round(je.gap*t)})}function zp(n){let e=n?.typography?.body??rn.body,t=n?.typography?.display??e,o=e===rn.body&&t===rn.body?si:ai,i=n?.typography?.weights;return Object.freeze({body:e,display:t,mono:n?.typography?.mono??rn.mono,weights:Object.freeze({display:i?.display??o.display,body:i?.body??o.body,label:i?.label??o.label})})}var gS=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 mc(n){return/^\s*(<\?xml[^>]*>\s*)?(<!--[\s\S]*?-->\s*)*(<!DOCTYPE svg[^>]*>\s*)?<svg[\s>/]/i.test(n)}var yc="http://www.w3.org/2000/svg",Np=["http://www.w3.org/1999/xhtml","http://www.w3.org/1998/Math/MathML",yc],Ip=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(" ")),Tp=new Set(["title","desc"]),ut="it embeds a page or media",jp={script:"it has a script in it",foreignobject:"it embeds HTML (foreignObject)",iframe:ut,embed:ut,object:ut,audio:ut,video:ut,style:"it has a style sheet in it; a mark is styled by its attributes",a:"it links to something (an <a> element)"},Dp={amp:"&",lt:"<",gt:">",quot:'"',apos:"'"};function Fp(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=Dp[o.toLowerCase()];return i===void 0&&(e=!0),i??""});return e?null:t}function Lp(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 Zp(n,e,t){let r=Fp(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===yc?null:"it changes what its elements are (another xmlns)";if(e.startsWith("xmlns:"))return Np.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 Lp(r)?null:o==="style"?"its style loads something outside itself":"it loads or links to something outside itself"}var gc=/^\s+([A-Za-z_][A-Za-z0-9_.:-]*)\s*=\s*(?:"([^"<]*)"|'([^'<]*)')/;function bc(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=jp[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(!Ip.has(d))return`it has a <${d}> element, which a picture does not need`;let l=e[e.length-1];if(l&&Tp.has(l))return`it has an element inside a <${l}>, which the page reads as HTML`;let f=a[0].length;for(let p=gc.exec(o.slice(f));p;p=gc.exec(o.slice(f))){let g=Zp(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 vc(n){if(n){if(!mc(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 bc(n)===null?`data:image/svg+xml,${encodeURIComponent(n.trim())}`:void 0}}var sr;function Cp(){if(sr===void 0)try{sr=new RegExp("^\\p{RGI_Emoji}$","v")}catch{sr=null}return sr}function Gp(n){return/\p{Extended_Pictographic}|\p{Regional_Indicator}|⃣/u.test(n)}function di(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(Gp).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=Cp();return r&&!r.test(n)?"it is not one of the standard emoji every emoji set draws":null}function ci(n){return typeof n=="object"&&n!==null&&typeof n.emoji=="string"?n.emoji:void 0}function xc(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 Kp(n){let e=n?.favicon;if(typeof e=="object"&&e!==null){let t=ci(e);return t!==void 0&&di(t)===null?`data:image/svg+xml,${encodeURIComponent(xc(t))}`:void 0}return vc(e)}function Vp(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 Bp(n){if(n?.logo)return;let e=ci(n?.favicon);return e!==void 0&&di(e)===null?e:void 0}var wc={"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":rn.mono},Up=["serif","sans-serif","monospace","cursive","fantasy","system-ui","math","emoji","-apple-system","BlinkMacSystemFont"],kc=["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 Wp=n=>new Set(n.map(e=>e.toLowerCase()));function qp(n){return Wp([...Up,...kc]).has(n.toLowerCase())||n.toLowerCase().startsWith("ui-")}function Hp(n){return wc[n]??n}var ui={r:255,g:255,b:255,a:1},$c={r:0,g:0,b:0,a:1},Mn=n=>`#${[n.r,n.g,n.b].map(e=>Math.round(Math.max(0,Math.min(255,e))).toString(16).padStart(2,"0")).join("")}`,De=(n,e)=>`rgba(${Math.round(n.r)}, ${Math.round(n.g)}, ${Math.round(n.b)}, ${e})`,li=(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 Yp(n){return typeof n=="string"?{light:n}:{...n.light?{light:n.light}:{},...n.dark?{dark:n.dark}:{}}}function Jp(n){let e=ee(n)[0];if(!e)return;let{h:t,s:r}=en(e);return Mn(ke(t,Math.min(r,.45),.08))}function Xp(n){return he(ui,n)>he($c,n)}function Rc(n,e){let t=ee(n.edgeBright)[0];return De(t,oi({...t,a:1},e,t.a,3))}function Qp(n,e,t){let{h:r,s:o}=en(t),i=li(t,ui,.8);return{...n,ground:e,groundDeep:Mn(li(t,$c,.04)),panel:Mn(i),panelMuted:Mn(li(t,ui,.55)),edge:De(ke(r,Math.min(o,.5),.14),.14),edgeBright:Rc(n,i),bar:De(i,.96),float:Mn(i)}}function Sc(n,e,t){let{h:r,s:o,l:i}=en(t),s=a=>ke(r,o,Math.min(1,i+a));return{...n,ground:e,groundDeep:Mn(ke(r,o,i*.6)),panel:De(s(.07),.96),panelMuted:De(s(.035),.94),edge:De(ke(r,Math.min(o,.45),.75),.18),edgeBright:Rc(n,nn({...s(.07),a:.96},t)),bar:De(t,.96),float:De(s(.05),.98)}}function Ac(n){if(n===void 0)return Te;let e=Yp(n),t=e.dark??(e.light?Jp(e.light):void 0),r=e.light?ee(e.light)[0]:void 0,o=t?ee(t)[0]:void 0;return{light:r?Xp(r)?Sc(Te.dark,e.light,r):Qp(Te.light,e.light,r):Te.light,dark:o?Sc(Te.dark,t,o):Te.dark}}var eh=[["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]],nh={panel:"a card",panelMuted:"a receded card",panelWarning:"a flagged card",float:"a floating sheet",bar:"the bar"};function SS(n,e){for(let t of["light","dark"]){let r={...n[t],...t==="light"&&e?{accent:e}:{}},o=ee(r.ground)[0];for(let[i,s,a,d]of eh)for(let u of a){let l=u==="ground"?[o]:ee(String(r[u])).map(f=>nn(f,o));for(let f of l){let c=nn(ee(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:nh[u]},ratio:p,requires:d}}}}return null}function _S(n,e){let t=Ac(e),r=ir({accent:n,base:t});return r.ok||!r.missing.every(o=>o.startsWith("warn"))?r:ir({accent:n,base:t,warn:{light:t.light.bad,dark:t.dark.bad}})}function th(n,e,t){if(t.rows===0)return;let r=ie(n,e.rows).toLowerCase(),o=ie(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=q(n.tryDefinition(e.rows),e.rows);return i?`No ${a} is linked to another yet: ${s}.`:`No ${a} is linked to ${dn(q(n.tryDefinition(e.columns),e.columns))} yet: ${s}.`}function rh(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):C(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 oh(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 ih(n,e){return{...n.connectors.all,...n.connectors.byEdge[e]??{}}}function sh(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 _c=n=>n?.kind==="visitor"||n?.onBehalfOf?.kind==="visitor",ar=new WeakMap;function ah(n,e){e?ar.set(n,e):ar.delete(n)}function dh(n,e,t){if(!n||_c(t))return;let r=ar.get(n)??ar.get(fi(n)?.store??{});if(r)try{r(e,t)}catch{}}function ch(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}}export{un as a,Ks as b,Vs as c,$l as d,Kr as e,Kn as f,Vn as g,L as h,Sy as i,$y as j,Ve as k,Ry as l,Ay as m,_y as n,Vr as o,Oy as p,Oe as q,fn as r,Py as s,Ey as t,My as u,Qs as v,ea as w,J as x,zy as y,$t as z,Ny as A,Iy as B,j as C,Kl as D,ur as E,ft as F,pi as G,fr as H,pt as I,lh as J,Q as K,Oc as L,Pc as M,hi as N,gt as O,Ec as P,Re as Q,pr as R,gi as S,hr as T,Nc as U,Ic as V,me as W,Tc as X,jc as Y,bi as Z,Dc as _,Fc as $,an as aa,vi as ba,xi as ca,C as da,Zc as ea,mr as fa,G as ga,Cc as ha,Gc as ia,ie as ja,Kc as ka,Vc as la,yt as ma,dn as na,q as oa,Vl as pa,Rt as qa,Wr as ra,na as sa,ta,ra as ua,Bl as va,Bn as wa,ia as xa,Tb as ya,_t as za,cc as Aa,Yk as Ba,Yl as Ca,Xl as Da,da as Ea,Ql as Fa,Lb as Ga,Un as Ha,eu as Ia,tu as Ja,Zb as Ka,Cb as La,ru as Ma,la as Na,yp as Oa,Ot as Pa,ou as Qa,hn as Ra,qn as Sa,Pt as Ta,Vb as Ua,gn as Va,pn as Wa,ya as Xa,au as Ya,Jr as Za,Hn as _a,mn as $a,Be as ab,Yb as bb,Xr as cb,Mt as db,cu as eb,yn as fb,N as gb,Jn as hb,z as ib,B as jb,X as kb,pu as lb,Tt as mb,vv as nb,hu as ob,gu as pb,vp as qb,jt as rb,re as sb,D as tb,U as ub,Me as vb,ze as wb,Ev as xb,Pa as yb,xn as zb,T as Ab,wn as Bb,We as Cb,oe as Db,xu as Eb,fe as Fb,sf as Gb,No as Hb,vd as Ib,_n as Jb,Wx as Kb,To as Lb,Sd as Mb,$d as Nb,jo as Ob,Ie as Pb,Mo as Qb,rt as Rb,hf as Sb,Rd as Tb,Hv as Ub,Da as Vb,Yv as Wb,Jv as Xb,yf as Yb,xf as Zb,Fo as _b,Lo as $b,Zo as ac,Co as bc,Nd as cc,Ut as dc,Rf as ec,Wt as fc,He as gc,ni as hc,xp as ic,st as jc,On as kc,oS as lc,iS as mc,Ft as nc,mo as oc,bo as pc,Ga as qc,Ru as rc,Ka as sc,Eu as tc,Op as uc,ii as vc,Pp as wc,Te as xc,rn as yc,Mp as zc,zp as Ac,mc as Bc,bc as Cc,vc as Dc,Kp as Ec,Vp as Fc,Bp as Gc,qp as Hc,Hp as Ic,Ac as Jc,SS as Kc,_S as Lc,Jo as Mc,Yf as Nc,th as Oc,rh as Pc,oh as Qc,ih as Rc,sh as Sc,Mu as Tc,zu as Uc,Nu as Vc,Iu as Wc,Ye as Xc,tt as Yc,pe as Zc,nt as _c,Je as $c,$n as ad,Gt as bd,Rn as cd,Ju as dd,Tu as ed,ju as fd,_c as gd,ah as hd,dh as id,ch as jd,If as kd,Tf as ld,gd as md,jf as nd,Qd as od,Pn as pd,qo as qd,Zf as rd,Cf as sd,Gf as td,ec as ud,Yo as vd,Kf as wd,Vf as xd,we as yd,ct as zd,Bf as Ad,Uf as Bd,nc as Cd,Wf as Dd,qf as Ed,tc as Fd,lt as Gd,Jf as Hd,oc as Id,ic as Jd,Qf as Kd,ep as Ld,np as Md,tp as Nd,sc as Od,rp as Pd,op as Qd,ip as Rd,sp as Sd,ap as Td,dp as Ud,Qo as Vd,cp as Wd,lp as Xd,up as Yd,fp as Zd,pp as _d,hp as $d,gp as ae};
@@ -1 +1 @@
1
- import{a as C,e as L,n as H,o as R,p as k}from"./chunk.N2DM42SG.js";import"./chunk.BJUUSIQY.js";import"./chunk.BCE6LIDR.js";import"./chunk.MBLFZF5R.js";import"./chunk.RALAID6N.js";import"./chunk.XOZU4OFA.js";import"./chunk.5NZDFT6R.js";import{a as S}from"./chunk.JBSW7ZNH.js";import"./chunk.FPGU43SC.js";import"./chunk.RQX4CQJN.js";import"./chunk.LUIRQ5UF.js";import"./chunk.N33WUCAN.js";import"./chunk.JQFIZRAZ.js";import"./chunk.LKJ6FD6Y.js";import{G as T,Sa as E,T as b}from"./chunk.DBMZ3AQB.js";import"./chunk.SDO3U72B.js";import{Vc as x}from"./chunk.DIFR37EZ.js";import"./chunk.FQLNBIQ5.js";import{b as g}from"./chunk.AJZBJBMO.js";var t=g(T(),1);var c=g(b(),1);function N(n){if(!n||n.interaction.outcome==="failed")return null;let s=n.offers[0],o=s?n.interaction.offered.find(i=>i.id===s.id)?.confidence:void 0;return s&&o!==void 0&&o>=.6?{offer:s,confidence:o}:null}function V({rest:n,hold:s,leave:o}){let i=S(),u=(0,t.useMemo)(()=>C(n.target,e=>i.store.graph.has(e)),[n.target,i.store]),l=u.on==="record"&&L(i.ai)!==void 0,m=l?H(i,u):void 0,p=JSON.stringify(u),[y,I]=(0,t.useState)(null);(0,t.useEffect)(()=>{if(!l||m!==void 0)return;let e=!0;return R(i,u).then(r=>{e&&I({key:p,result:r})}),()=>{e=!1}},[p,l]);let w=m??(y?.key===p?y.result:void 0),f=l?N(w):null,v=f?.offer.id??null,h=(0,t.useRef)(null);if((0,t.useEffect)(()=>{if(v===null)return;let e=r=>{r.target instanceof Node&&h.current?.contains(r.target)||o(!0)};return document.addEventListener("pointerdown",e,{capture:!0,passive:!0}),document.addEventListener("contextmenu",e,{capture:!0,passive:!0}),addEventListener("scroll",e,{capture:!0,passive:!0}),addEventListener("resize",e,{passive:!0}),()=>{document.removeEventListener("pointerdown",e,{capture:!0}),document.removeEventListener("contextmenu",e,{capture:!0}),removeEventListener("scroll",e,{capture:!0}),removeEventListener("resize",e)}},[v,o]),(0,t.useLayoutEffect)(()=>{let e=h.current;if(!e)return;if(typeof e.showPopover=="function"&&!E(e))try{e.showPopover()}catch{}let r=n.element.getBoundingClientRect(),d=e.getBoundingClientRect(),O=r.top-d.height-4>=4?r.top-d.height-4:Math.min(innerHeight-d.height-4,r.top+4),A=Math.max(4,Math.min(innerWidth-d.width-4,r.right-d.width));e.style.top=`${Math.round(O)}px`,e.style.left=`${Math.round(A)}px`},[v,n.element]),!f)return null;let{offer:a,confidence:P}=f,M=a.type==="panel"?"a panel":a.type==="place"?"go there":a.type==="record"?"open it":"suggested";return(0,c.jsxs)("button",{ref:h,type:"button",popover:"manual","data-testid":"hover-chip","data-ai-offer":a.id,"data-ai-offer-type":a.type,"data-graview-overlay":"","data-graview-popover":"","aria-label":`Suggested by AI: ${a.label}`,title:`Suggested by AI, ${Math.round(P*100)}% sure`,onPointerEnter:s,onPointerLeave:()=>o(),onClick:()=>{n.element.closest("[tabindex], a[href], button")?.focus({preventScroll:!0}),o(!0),k(i,w,a)},style:$,children:[(0,c.jsxs)("span",{"aria-hidden":"true",style:{color:"var(--graview-accent)"},children:["\u2726"," "]}),a.label,(0,c.jsxs)("span",{style:{color:"var(--graview-ink-faint)"},children:[" \xB7 ",M]})]})}var $={position:"fixed",inset:"auto",top:0,left:0,margin:0,zIndex:x("toast"),boxSizing:"border-box",width:"max-content",maxWidth:"min(320px, calc(100vw - 8px))",height:"auto",minHeight:24,padding:"2px 10px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",borderRadius:999,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",color:"var(--graview-ink)",boxShadow:"var(--graview-lift-high)",font:"inherit",fontSize:"0.75rem",cursor:"pointer"};export{V as HoverChip};
1
+ import{a as C,e as L,n as H,o as R,p as k}from"./chunk.47JQPYXL.js";import"./chunk.BJUUSIQY.js";import"./chunk.VG7OWV2H.js";import"./chunk.KXPRILAO.js";import"./chunk.XU34T2H4.js";import"./chunk.XOZU4OFA.js";import"./chunk.BB33TI4S.js";import{a as S}from"./chunk.CCWPF5PK.js";import"./chunk.KKNDX4JT.js";import"./chunk.3YZHZGTM.js";import"./chunk.EQTSV7BK.js";import"./chunk.27CW6SCT.js";import"./chunk.YD3TKV6P.js";import"./chunk.4KC35UNR.js";import{G as T,Sa as E,T as b}from"./chunk.HT2BEOEV.js";import"./chunk.SDO3U72B.js";import{Vc as x}from"./chunk.7BBGRTXM.js";import"./chunk.FQLNBIQ5.js";import{b as g}from"./chunk.AJZBJBMO.js";var t=g(T(),1);var c=g(b(),1);function N(n){if(!n||n.interaction.outcome==="failed")return null;let s=n.offers[0],o=s?n.interaction.offered.find(i=>i.id===s.id)?.confidence:void 0;return s&&o!==void 0&&o>=.6?{offer:s,confidence:o}:null}function V({rest:n,hold:s,leave:o}){let i=S(),u=(0,t.useMemo)(()=>C(n.target,e=>i.store.graph.has(e)),[n.target,i.store]),l=u.on==="record"&&L(i.ai)!==void 0,m=l?H(i,u):void 0,p=JSON.stringify(u),[y,I]=(0,t.useState)(null);(0,t.useEffect)(()=>{if(!l||m!==void 0)return;let e=!0;return R(i,u).then(r=>{e&&I({key:p,result:r})}),()=>{e=!1}},[p,l]);let w=m??(y?.key===p?y.result:void 0),f=l?N(w):null,v=f?.offer.id??null,h=(0,t.useRef)(null);if((0,t.useEffect)(()=>{if(v===null)return;let e=r=>{r.target instanceof Node&&h.current?.contains(r.target)||o(!0)};return document.addEventListener("pointerdown",e,{capture:!0,passive:!0}),document.addEventListener("contextmenu",e,{capture:!0,passive:!0}),addEventListener("scroll",e,{capture:!0,passive:!0}),addEventListener("resize",e,{passive:!0}),()=>{document.removeEventListener("pointerdown",e,{capture:!0}),document.removeEventListener("contextmenu",e,{capture:!0}),removeEventListener("scroll",e,{capture:!0}),removeEventListener("resize",e)}},[v,o]),(0,t.useLayoutEffect)(()=>{let e=h.current;if(!e)return;if(typeof e.showPopover=="function"&&!E(e))try{e.showPopover()}catch{}let r=n.element.getBoundingClientRect(),d=e.getBoundingClientRect(),O=r.top-d.height-4>=4?r.top-d.height-4:Math.min(innerHeight-d.height-4,r.top+4),A=Math.max(4,Math.min(innerWidth-d.width-4,r.right-d.width));e.style.top=`${Math.round(O)}px`,e.style.left=`${Math.round(A)}px`},[v,n.element]),!f)return null;let{offer:a,confidence:P}=f,M=a.type==="panel"?"a panel":a.type==="place"?"go there":a.type==="record"?"open it":"suggested";return(0,c.jsxs)("button",{ref:h,type:"button",popover:"manual","data-testid":"hover-chip","data-ai-offer":a.id,"data-ai-offer-type":a.type,"data-graview-overlay":"","data-graview-popover":"","aria-label":`Suggested by AI: ${a.label}`,title:`Suggested by AI, ${Math.round(P*100)}% sure`,onPointerEnter:s,onPointerLeave:()=>o(),onClick:()=>{n.element.closest("[tabindex], a[href], button")?.focus({preventScroll:!0}),o(!0),k(i,w,a)},style:$,children:[(0,c.jsxs)("span",{"aria-hidden":"true",style:{color:"var(--graview-accent)"},children:["\u2726"," "]}),a.label,(0,c.jsxs)("span",{style:{color:"var(--graview-ink-faint)"},children:[" \xB7 ",M]})]})}var $={position:"fixed",inset:"auto",top:0,left:0,margin:0,zIndex:x("toast"),boxSizing:"border-box",width:"max-content",maxWidth:"min(320px, calc(100vw - 8px))",height:"auto",minHeight:24,padding:"2px 10px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",borderRadius:999,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",color:"var(--graview-ink)",boxShadow:"var(--graview-lift-high)",font:"inherit",fontSize:"0.75rem",cursor:"pointer"};export{V as HoverChip};