graview 0.1.62 → 0.1.64

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 (202) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js +6 -6
  3. package/dist/index.js.map +1 -1
  4. package/dist/preview/chunk.2D7K2IJQ.js +4 -0
  5. package/dist/preview/{chunk.UFDJXQQQ.js → chunk.2DH42I7L.js} +6 -6
  6. package/dist/preview/chunk.2E62YCMZ.js +1 -0
  7. package/dist/preview/{chunk.GX4G4BX3.js → chunk.2G5WLG3Z.js} +1 -1
  8. package/dist/preview/chunk.2HV5FF6O.js +1 -0
  9. package/dist/preview/{chunk.LGRLVJGS.js → chunk.2JDAUKSN.js} +3 -3
  10. package/dist/preview/{chunk.ZN3PUM2I.js → chunk.2JEN2RCB.js} +1 -1
  11. package/dist/preview/{chunk.66P5IDTH.js → chunk.2TCOLAL2.js} +1 -1
  12. package/dist/preview/{chunk.OWOOKLIU.js → chunk.2V7QTIAV.js} +1 -1
  13. package/dist/preview/{chunk.IQ3PRWGO.js → chunk.2VIS2NAT.js} +2 -2
  14. package/dist/preview/{chunk.UQQKDBIH.js → chunk.2VYGDY5Z.js} +1 -1
  15. package/dist/preview/{chunk.WEOVK2T4.js → chunk.37I45R6V.js} +1 -1
  16. package/dist/preview/chunk.3FKKH2XU.js +74 -0
  17. package/dist/preview/chunk.3J7XLJP2.js +1 -0
  18. package/dist/preview/chunk.3OEODIHB.js +1 -0
  19. package/dist/preview/{chunk.WPXPVD33.js → chunk.3RD4JHVG.js} +1 -1
  20. package/dist/preview/{chunk.CHHYIMB7.js → chunk.3RUV4HE4.js} +1 -1
  21. package/dist/preview/chunk.3SAESG6X.js +1 -0
  22. package/dist/preview/{chunk.4HEFUOLV.js → chunk.47N2G7A5.js} +1 -1
  23. package/dist/preview/{chunk.A3ZC2JBO.js → chunk.4DZOAB4D.js} +1 -1
  24. package/dist/preview/chunk.4HTB6TX2.js +1 -0
  25. package/dist/preview/chunk.4Q5PCMGZ.js +18 -0
  26. package/dist/preview/{chunk.DPEIT3TW.js → chunk.4U45EY5M.js} +1 -1
  27. package/dist/preview/{chunk.2B6P4GPS.js → chunk.4VRX7FCO.js} +1 -1
  28. package/dist/preview/{chunk.JT3MFPRD.js → chunk.4XCYZRZ3.js} +1 -1
  29. package/dist/preview/chunk.52MBXPEK.js +1 -0
  30. package/dist/preview/chunk.5AD2QHWH.js +3 -0
  31. package/dist/preview/{chunk.MDEX6ZVE.js → chunk.5B7NG6WH.js} +1 -1
  32. package/dist/preview/chunk.5HJ2GTKZ.js +1 -0
  33. package/dist/preview/chunk.5IEZF433.js +2 -0
  34. package/dist/preview/{chunk.QGU5QTR6.js → chunk.5PPCK7QT.js} +1 -1
  35. package/dist/preview/chunk.6NRWLCIZ.js +5 -0
  36. package/dist/preview/chunk.75JQCTR6.js +1 -0
  37. package/dist/preview/{chunk.KMV6PJFL.js → chunk.77JI5T4F.js} +1 -1
  38. package/dist/preview/chunk.77MLXWZV.js +35 -0
  39. package/dist/preview/chunk.7AOEZJRM.js +1 -0
  40. package/dist/preview/{chunk.QIPASE42.js → chunk.7CLKGKSF.js} +1 -1
  41. package/dist/preview/{chunk.BZMQDEIY.js → chunk.7SRSE5IS.js} +1 -1
  42. package/dist/preview/{chunk.2GEJNG2U.js → chunk.7VAHHEDX.js} +1 -1
  43. package/dist/preview/{chunk.VJBBVLGZ.js → chunk.7ZG77OI3.js} +1 -1
  44. package/dist/preview/chunk.7ZHH7WBN.js +1 -0
  45. package/dist/preview/chunk.AJEK3I5X.js +6 -0
  46. package/dist/preview/chunk.APRWUIE3.js +1 -0
  47. package/dist/preview/{chunk.QHY5NVYH.js → chunk.APUQIELA.js} +1 -1
  48. package/dist/preview/{chunk.Y4FZKUOK.js → chunk.ATHLE33D.js} +1 -1
  49. package/dist/preview/chunk.B2YTHEX5.js +1 -0
  50. package/dist/preview/{chunk.ELOFPE25.js → chunk.B6JR7EQO.js} +1 -1
  51. package/dist/preview/{chunk.5ODHHH35.js → chunk.BN42H3C6.js} +1 -1
  52. package/dist/preview/{chunk.DD2NKFDX.js → chunk.BVIJXL4J.js} +1 -1
  53. package/dist/preview/{chunk.5HGD6OWL.js → chunk.CC7P435K.js} +2 -2
  54. package/dist/preview/{chunk.IQMD7DG3.js → chunk.CJHYGRWV.js} +1 -1
  55. package/dist/preview/chunk.CM65MCHA.js +1 -0
  56. package/dist/preview/{chunk.MYNMBOLD.js → chunk.D2XLECMP.js} +1 -1
  57. package/dist/preview/chunk.DJIF7IAQ.js +2 -0
  58. package/dist/preview/{chunk.G4ULQK64.js → chunk.DLWFULWE.js} +1 -1
  59. package/dist/preview/{chunk.QDWSU47A.js → chunk.DMENNIHT.js} +1 -1
  60. package/dist/preview/{chunk.L3WTKQQL.js → chunk.DN7UCBOA.js} +1 -1
  61. package/dist/preview/{chunk.22BZU7ME.js → chunk.DQAMVVE6.js} +1 -1
  62. package/dist/preview/chunk.DUP2CGVH.js +1 -0
  63. package/dist/preview/{chunk.TM4EPUNO.js → chunk.DYRULRFX.js} +1 -1
  64. package/dist/preview/{chunk.AFNSAQEQ.js → chunk.E4TXLT25.js} +1 -1
  65. package/dist/preview/{chunk.DDUCIUVW.js → chunk.F6BNFLQM.js} +1 -1
  66. package/dist/preview/chunk.FN34P4IS.js +1 -0
  67. package/dist/preview/{chunk.AJSUHPBE.js → chunk.FUPYIOXZ.js} +1 -1
  68. package/dist/preview/{chunk.7KVUUEZA.js → chunk.FXRYMT3U.js} +1 -1
  69. package/dist/preview/{chunk.DEAP3H2L.js → chunk.G5BVZLCM.js} +1 -1
  70. package/dist/preview/{chunk.Y2YYH3JN.js → chunk.G7YLK4PX.js} +1 -1
  71. package/dist/preview/chunk.GF62K25C.js +1 -0
  72. package/dist/preview/chunk.GFQPO3NC.js +1 -0
  73. package/dist/preview/{chunk.5STU3KYG.js → chunk.GH5UBSQI.js} +1 -1
  74. package/dist/preview/chunk.GHHKRFPD.js +1 -0
  75. package/dist/preview/{chunk.THVC2BEC.js → chunk.GP5DAA4P.js} +1 -1
  76. package/dist/preview/{chunk.VN23AGIY.js → chunk.HPG6CNKM.js} +1 -1
  77. package/dist/preview/chunk.HSJEOM3W.js +1 -0
  78. package/dist/preview/{chunk.H5S7OL2U.js → chunk.HZPRMHSL.js} +1 -1
  79. package/dist/preview/chunk.IQGSEAQ2.js +5 -0
  80. package/dist/preview/{chunk.PCDUV3WP.js → chunk.ITBG37WJ.js} +1 -1
  81. package/dist/preview/{chunk.SVPKUWZU.js → chunk.JHUCKEJS.js} +1 -1
  82. package/dist/preview/{chunk.H7N7WN4U.js → chunk.JOM6MFVE.js} +1 -1
  83. package/dist/preview/{chunk.DNVWSWL2.js → chunk.JS2UZYGB.js} +1 -1
  84. package/dist/preview/{chunk.7XLS6XTY.js → chunk.K2PXP5H6.js} +1 -1
  85. package/dist/preview/{chunk.6AKW7TXM.js → chunk.K54ISAXN.js} +1 -1
  86. package/dist/preview/{chunk.3FON2Y72.js → chunk.K5YFUMRS.js} +1 -1
  87. package/dist/preview/chunk.KHXRJLLU.js +50 -0
  88. package/dist/preview/chunk.KMIFSPGQ.js +1 -0
  89. package/dist/preview/chunk.L4V5VLSM.js +1 -0
  90. package/dist/preview/{chunk.T6WHGKWR.js → chunk.LDMBJC3B.js} +1 -1
  91. package/dist/preview/{chunk.PLTH2LW5.js → chunk.LTOQ22ZJ.js} +1 -1
  92. package/dist/preview/{chunk.UVA7AALY.js → chunk.M5VHUIDB.js} +1 -1
  93. package/dist/preview/chunk.N643PVQA.js +1 -0
  94. package/dist/preview/{chunk.FULEUL34.js → chunk.NGRL3QOI.js} +1 -1
  95. package/dist/preview/{chunk.OFWNMTGB.js → chunk.NRPBTV6O.js} +2 -2
  96. package/dist/preview/{chunk.N6EJXXQK.js → chunk.O7HHNQK4.js} +2 -2
  97. package/dist/preview/{chunk.5YAOKOGV.js → chunk.OW3M4OBN.js} +1 -1
  98. package/dist/preview/{chunk.2N4Z5K5S.js → chunk.OXFDB5BB.js} +1 -1
  99. package/dist/preview/{chunk.4TX6VCBT.js → chunk.P4TAX3HE.js} +1 -1
  100. package/dist/preview/{chunk.RYRQ66JN.js → chunk.P6FNJR6E.js} +1 -1
  101. package/dist/preview/chunk.PR74PGLC.js +1 -0
  102. package/dist/preview/{chunk.F7YXLYLX.js → chunk.PVDDSBRG.js} +1 -1
  103. package/dist/preview/{chunk.OUDATENL.js → chunk.QROPDEJF.js} +1 -1
  104. package/dist/preview/{chunk.I77ZGIFE.js → chunk.QRT6BZR6.js} +1 -1
  105. package/dist/preview/{chunk.OWT3VVOT.js → chunk.R5MLRKAO.js} +2 -2
  106. package/dist/preview/chunk.RDA35HZB.js +2 -0
  107. package/dist/preview/{chunk.ROZTJ6IY.js → chunk.REXU6ARY.js} +1 -1
  108. package/dist/preview/chunk.S6QZBWCJ.js +1 -0
  109. package/dist/preview/{chunk.MAKODQO3.js → chunk.S7SHWDPR.js} +1 -1
  110. package/dist/preview/{chunk.SWMDFXUX.js → chunk.SADHOSRC.js} +1 -1
  111. package/dist/preview/chunk.SJHUC4TL.js +1 -0
  112. package/dist/preview/chunk.SL5FXE3R.js +1 -0
  113. package/dist/preview/{chunk.X6KYRBL6.js → chunk.T4JP6BGP.js} +1 -1
  114. package/dist/preview/{chunk.TIALD6SC.js → chunk.T4TRJDBF.js} +1 -1
  115. package/dist/preview/{chunk.M4AYA2PL.js → chunk.TA2JTUNX.js} +1 -1
  116. package/dist/preview/{chunk.EVBCEEQ4.js → chunk.TMHVYI5R.js} +1 -1
  117. package/dist/preview/chunk.TOLW64EO.js +1 -0
  118. package/dist/preview/chunk.TP3PZRHE.js +1 -0
  119. package/dist/preview/{chunk.PZQNR4KZ.js → chunk.TQ2G4AM4.js} +1 -1
  120. package/dist/preview/{chunk.5J3O2FVG.js → chunk.TUR2DA2M.js} +1 -1
  121. package/dist/preview/{chunk.B23WZQXQ.js → chunk.TYIBLD2D.js} +1 -1
  122. package/dist/preview/{chunk.DC35FJAB.js → chunk.UD2GGG7L.js} +1 -1
  123. package/dist/preview/chunk.UDU545CL.js +1 -0
  124. package/dist/preview/{chunk.RPDH32XV.js → chunk.UDYFGYJP.js} +1 -1
  125. package/dist/preview/{chunk.SEHRPTNA.js → chunk.UJNLT3L6.js} +1 -1
  126. package/dist/preview/chunk.UN2IAA5R.js +1 -0
  127. package/dist/preview/chunk.VLX7YWVH.js +25 -0
  128. package/dist/preview/{chunk.T3UQ7ZQK.js → chunk.VT4YBFZL.js} +1 -1
  129. package/dist/preview/{chunk.ELTV44HU.js → chunk.VZAF3452.js} +2 -2
  130. package/dist/preview/{chunk.O2BHPYA4.js → chunk.WFCE7NLK.js} +2 -2
  131. package/dist/preview/{chunk.CY3ELWCM.js → chunk.WHX47OJM.js} +1 -1
  132. package/dist/preview/{chunk.NUWDMH47.js → chunk.WMARJ5E3.js} +1 -1
  133. package/dist/preview/chunk.WPQP54FM.js +1 -0
  134. package/dist/preview/{chunk.6JO5HQDR.js → chunk.WX23K7ZU.js} +1 -1
  135. package/dist/preview/{chunk.W4BKYSZX.js → chunk.X36BYTEG.js} +1 -1
  136. package/dist/preview/{chunk.AQRB7LDA.js → chunk.XCLW4GP7.js} +1 -1
  137. package/dist/preview/{chunk.DDO3GLEJ.js → chunk.XEG7ZDRG.js} +1 -1
  138. package/dist/preview/{chunk.ILIIBSGA.js → chunk.XIVELWAM.js} +1 -1
  139. package/dist/preview/{chunk.75GVFX7L.js → chunk.XJWKIXPV.js} +1 -1
  140. package/dist/preview/{chunk.O75HWF3F.js → chunk.XQ5RTPEF.js} +1 -1
  141. package/dist/preview/{chunk.NOGGSLVG.js → chunk.YEXFVDRA.js} +1 -1
  142. package/dist/preview/{chunk.UXMPFPFH.js → chunk.YIZPW7IK.js} +2 -2
  143. package/dist/preview/chunk.YLOGIJOH.js +1 -0
  144. package/dist/preview/chunk.YMXWS4XN.js +3 -0
  145. package/dist/preview/{chunk.Z2TDZSMN.js → chunk.YSBTE3PX.js} +1 -1
  146. package/dist/preview/{chunk.RD2X25XB.js → chunk.Z26T5E76.js} +1 -1
  147. package/dist/preview/{chunk.A3OL2BI2.js → chunk.Z4XGEV34.js} +1 -1
  148. package/dist/preview/chunk.ZA5TDCBC.js +1 -0
  149. package/dist/preview/chunk.ZNDVJGTY.js +1 -0
  150. package/dist/preview/chunk.ZQGLPP7A.js +1 -0
  151. package/dist/preview/index.html +53 -52
  152. package/dist/preview/page.js +2 -2
  153. package/dist/preview/splash.js +7 -6
  154. package/package.json +6 -6
  155. package/dist/preview/chunk.2AT3GRXM.js +0 -1
  156. package/dist/preview/chunk.4HRYB7HF.js +0 -1
  157. package/dist/preview/chunk.5MZYCELA.js +0 -6
  158. package/dist/preview/chunk.7M4HNKDR.js +0 -1
  159. package/dist/preview/chunk.7OBIBPYH.js +0 -1
  160. package/dist/preview/chunk.7V56P2A7.js +0 -1
  161. package/dist/preview/chunk.7YOAW7ED.js +0 -1
  162. package/dist/preview/chunk.ACTXR2MI.js +0 -3
  163. package/dist/preview/chunk.AI34V6WV.js +0 -74
  164. package/dist/preview/chunk.BLUKSGI4.js +0 -1
  165. package/dist/preview/chunk.CAKFNKN5.js +0 -1
  166. package/dist/preview/chunk.CGALLZ54.js +0 -1
  167. package/dist/preview/chunk.DHJ3FQTR.js +0 -1
  168. package/dist/preview/chunk.DZZL5IDD.js +0 -5
  169. package/dist/preview/chunk.H24OC6OE.js +0 -1
  170. package/dist/preview/chunk.H73ZPYUX.js +0 -1
  171. package/dist/preview/chunk.HANJZ6FA.js +0 -1
  172. package/dist/preview/chunk.HIMQ65QT.js +0 -1
  173. package/dist/preview/chunk.IQPILSV3.js +0 -18
  174. package/dist/preview/chunk.IYBEXENQ.js +0 -1
  175. package/dist/preview/chunk.J7Q2WAF4.js +0 -28
  176. package/dist/preview/chunk.JYFZCJ4N.js +0 -2
  177. package/dist/preview/chunk.KDXU5DT3.js +0 -1
  178. package/dist/preview/chunk.KL7E4YHJ.js +0 -1
  179. package/dist/preview/chunk.LAYQ5PFS.js +0 -1
  180. package/dist/preview/chunk.LTZUF5VG.js +0 -1
  181. package/dist/preview/chunk.M7RESZB6.js +0 -25
  182. package/dist/preview/chunk.MGALQLRW.js +0 -1
  183. package/dist/preview/chunk.NAD7ZXYP.js +0 -1
  184. package/dist/preview/chunk.NHTGAP3G.js +0 -3
  185. package/dist/preview/chunk.NUYA4BWI.js +0 -1
  186. package/dist/preview/chunk.OKZT2QBM.js +0 -2
  187. package/dist/preview/chunk.OUPURRDE.js +0 -1
  188. package/dist/preview/chunk.PD2DECOP.js +0 -1
  189. package/dist/preview/chunk.PKWQKFPE.js +0 -2
  190. package/dist/preview/chunk.RMR24LFJ.js +0 -4
  191. package/dist/preview/chunk.RRKI24WY.js +0 -1
  192. package/dist/preview/chunk.SGCW2XRC.js +0 -1
  193. package/dist/preview/chunk.SS7234R6.js +0 -1
  194. package/dist/preview/chunk.TKUNRFDE.js +0 -1
  195. package/dist/preview/chunk.U6ZRJKVM.js +0 -1
  196. package/dist/preview/chunk.UKQUUPKE.js +0 -1
  197. package/dist/preview/chunk.VACKSKGJ.js +0 -1
  198. package/dist/preview/chunk.VC3V7HLL.js +0 -1
  199. package/dist/preview/chunk.VIH5AX7S.js +0 -5
  200. package/dist/preview/chunk.WKI5INH7.js +0 -1
  201. package/dist/preview/chunk.Y4S7CDRB.js +0 -1
  202. package/dist/preview/chunk.YP2QSPXU.js +0 -50
@@ -1,4 +1,4 @@
1
- var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{a as gt,b as kt,c as xt,d as St,e as Tt,f as Mt,g as Et}from"./chunk.6JO5HQDR.js";import{a as ke,e as mt}from"./chunk.BBLIT7S7.js";import{a as bt,b as Te,c as Rt}from"./chunk.NJSK3UO2.js";import{a as ut,f as ct,g as pt,i as ft}from"./chunk.X6KYRBL6.js";import"./chunk.BZMQDEIY.js";import{j as yt}from"./chunk.3L37FY3G.js";import{e as vt}from"./chunk.FULEUL34.js";import"./chunk.B3WVCSW5.js";import{c as ht,f as wt,i as xe,j as Se}from"./chunk.L3WTKQQL.js";import{b as ae,e as de}from"./chunk.QDWSU47A.js";import"./chunk.H5S7OL2U.js";import{a as U}from"./chunk.SDO3U72B.js";import"./chunk.DZZL5IDD.js";import"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";var Kt=["good","warn","bad","neutral","accent"],Gt=["value","max","aria-label","placeholder","disabled"],At=["click","change"],Me=["_blank","_self"],Wt=["section","div","span","strong","p","hr","a","button","input","progress"],le={type:{oneOf:Kt}},Ee={"gv-card":{host:"section",properties:{tone:le},events:{},children:"any"},"gv-group":{host:"div",properties:{direction:{type:{oneOf:["row","column"]}}},events:{},children:"any"},"gv-title":{host:"strong",properties:{},events:{},children:"text"},"gv-text":{host:"p",properties:{tone:le},events:{},children:"text"},"gv-badge":{host:"span",properties:{tone:le},events:{},children:"text"},"gv-field":{host:"div",properties:{label:{type:"string"}},events:{},children:"text"},"gv-progress":{host:"progress",properties:{value:{type:"number",as:"value"},max:{type:"number",as:"max"},label:{type:"string",as:"aria-label"}},events:{},children:"none"},"gv-divider":{host:"hr",properties:{},events:{},children:"none"},"gv-link":{host:"a",properties:{href:{type:"url"}},events:{},children:"text"},"gv-button":{host:"button",properties:{tone:le,disabled:{type:"boolean",as:"disabled"}},events:{press:{from:"click"}},children:"text"},"gv-input":{host:"input",properties:{label:{type:"string",as:"aria-label"},value:{type:"string",as:"value"},placeholder:{type:"string",as:"placeholder"}},events:{change:{from:"change",detail:"value"}},children:"none"}},Re=1e4;var rr=0,nr=1,or=2,sr=3,Ot=1,ir=2,ar=3,dr=1,lr=3,ur=8,Ke="~",Ge=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),Z=r=>typeof r=="object"&&r!==null&&!Array.isArray(r);function _t(r,e){return e.type==="url"?"href":e.as??`data-gv-${r.toLowerCase()}`}var cr=2e3;function Lt(r,e){if(e==null)return{ok:!0,value:null};let a=r.type;if(a==="boolean")return typeof e=="boolean"?{ok:!0,value:e}:{ok:!1,reason:"value"};if(a==="number")return typeof e=="number"&&Number.isFinite(e)?{ok:!0,value:String(e)}:{ok:!1,reason:"value"};if(typeof e!="string"||e.length>cr)return{ok:!1,reason:a==="url"?"url":"value"};if(typeof a=="object")return a.oneOf.includes(e)?{ok:!0,value:e}:{ok:!1,reason:"value"};if(a==="url"){let p;try{p=new URL(e)}catch{return{ok:!1,reason:"url"}}return p.protocol!=="https:"||p.hostname===""||!/^https:\/\//i.test(e)?{ok:!1,reason:"url"}:{ok:!0,value:p.href}}return{ok:!0,value:e}}function pr(r){let e=r.host==="a";return Wt.includes(r.host)&&(r.target===void 0||e&&Me.includes(r.target))&&Object.values(r.properties).every(a=>a.type!=="url"||e)&&Object.values(r.properties).every(a=>a.as===void 0||a.type!=="url"&&Gt.includes(a.as))&&Object.values(r.events).every(a=>At.includes(a.from))}function Ae(r,e){let a=e.kit??Ee,p=e.maxNodes??2e3,o=r.ownerDocument,f=[],y=new Map,A={dom:r,name:Ke,component:{host:"div",properties:{},events:{},children:"any"},children:[],listeners:new Map,id:Ke};y.set(Ke,A);let W=e.links?new Set(e.links.origins.flatMap(n=>{try{let c=new URL(n);return c.protocol==="https:"&&c.hostname!==""?[c.origin]:[]}catch{return[]}})):void 0,P=0,M=0,D=!1,g=n=>{f.push(n),f.length>200&&f.shift()},x=()=>({dom:o.createComment(""),children:[],refused:!0,listeners:new Map}),L=(n,c,m)=>{let h=n.component;if(!Ge(h.properties,c))return g({reason:"property",element:n.name,name:c});let d=h.properties[c],i=Lt(d,m),w=i.ok&&d.type==="url"&&W&&typeof i.value=="string"&&!W.has(new URL(i.value).origin)?{ok:!1,reason:"url"}:i,E=n.dom,T=_t(c,d);if(!w.ok)return E.removeAttribute(T),g({reason:w.reason,element:n.name,name:c});let R=w.value;R===null||R===!1?E.removeAttribute(T):E.setAttribute(T,R===!0?"":R),T==="value"&&"value"in E&&(E.value=typeof R=="string"?R:""),T==="disabled"&&"disabled"in E&&(E.disabled=R!==null&&R!==!1)},b=(n,c,m)=>{let h=n.component;if(!Ge(h.events,c))return g({reason:"event",element:n.name,name:c});let d=n.listeners.get(c);if(d&&(d(),n.listeners.delete(c),M-=1),m==null)return;if(!Z(m)||typeof m.listener!="number")return g({reason:"value",element:n.name,name:c});let i=m.listener,w=h.events[c],E=n.dom,T=()=>e.onEvent(i,w.detail==="value"?String(E.value??""):void 0);E.addEventListener(w.from,T),n.listeners.set(c,()=>E.removeEventListener(w.from,T)),M+=1},S=n=>{if(!n.refused){P-=1,n.id!==void 0&&y.delete(n.id);for(let c of n.listeners.values())c();M-=n.listeners.size,n.listeners.clear();for(let c of n.children)S(c)}},k=(n,c)=>{if(!Z(n)||typeof n.id!="string"||y.has(n.id))return g({reason:"record"}),x();if(P>=p)return g({reason:"budget"}),D||(D=!0,e.onOverBudget?.()),x();let m=n.id,h=c.component.children;if(n.type===ur)return x();if(n.type===lr){if(h==="none")return g({reason:"child",element:c.name}),x();let T={dom:o.createTextNode(String(n.data??"").slice(0,Re)),children:[],text:!0,listeners:new Map,id:m};return y.set(m,T),P+=1,T}if(n.type!==dr)return g({reason:"record"}),x();let d=String(n.element);if(!Ge(a,d)||!pr(a[d]))return g({reason:"element",element:d}),x();if(h!=="any")return g({reason:"child",element:d}),x();let i=a[d],w=o.createElement(i.host);w.setAttribute("data-gv",d.replace(/^gv-/,"")),w.className=`graview-guest-${d.replace(/^gv-/,"")}`,i.host==="a"&&(w.setAttribute("rel","noopener noreferrer"),w.setAttribute("target",i.target??"_blank"),w.setAttribute("referrerpolicy","no-referrer")),i.host==="button"&&w.setAttribute("type","button");let E={dom:w,name:d,component:i,children:[],listeners:new Map,id:m};if(y.set(m,E),P+=1,Z(n.properties))for(let[T,R]of Object.entries(n.properties))L(E,T,R);if(Z(n.attributes))for(let T of Object.keys(n.attributes))g({reason:"attribute",element:d,name:T});if(Z(n.eventListeners))for(let[T,R]of Object.entries(n.eventListeners))b(E,T,R);if(Array.isArray(n.children))for(let T of n.children){let R=k(T,E);E.children.push(R),w.appendChild(R.dom)}return E},G=n=>{if(!Array.isArray(n))return g({reason:"record"});let[c,m]=n,h=typeof m=="string"?y.get(m):void 0;if(!h)return g({reason:"record"});switch(c){case rr:{if(h.text)return g({reason:"record"});let d=Number(n[3]),i=Number.isInteger(d)&&d>=0&&d<=h.children.length?d:h.children.length,w=k(n[2],h);h.dom.insertBefore(w.dom,h.children[i]?.dom??null),h.children.splice(i,0,w);return}case nr:{let d=Number(n[2]),i=h.children[d];if(!i)return g({reason:"record"});h.children.splice(d,1),i.dom.parentNode?.removeChild(i.dom),S(i);return}case or:if(!h.text)return g({reason:"record"});h.dom.data=String(n[2]??"").slice(0,Re);return;case sr:{if(h===A||h.text)return g({reason:"record"});let d=String(n[2]),i=n[4]??Ot;return i===Ot?L(h,d,n[3]):i===ar?b(h,d,n[3]):g(i===ir?{reason:"attribute",element:h.name,name:d}:{reason:"record"})}default:return g({reason:"record"})}};return{apply(n,c){if(!Array.isArray(n))return g({reason:"record"}),!0;for(let m=0;m<n.length;m+=1){if(c&&m%32===0&&c())return!1;G(n[m])}return!0},get refused(){return f},get size(){return P},get listening(){return M},dispose(){for(let n of A.children)S(n);A.children.length=0,r.replaceChildren()}}}var We=`
1
+ var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{a as gt,b as kt,c as xt,d as St,e as Tt,f as Mt,g as Et}from"./chunk.WX23K7ZU.js";import{a as ke,e as mt}from"./chunk.BBLIT7S7.js";import{a as bt,b as Te,c as Rt}from"./chunk.NJSK3UO2.js";import{a as ut,f as ct,g as pt,i as ft}from"./chunk.T4JP6BGP.js";import"./chunk.7SRSE5IS.js";import{j as yt}from"./chunk.3L37FY3G.js";import{e as vt}from"./chunk.NGRL3QOI.js";import"./chunk.B3WVCSW5.js";import{c as ht,f as wt,i as xe,j as Se}from"./chunk.DN7UCBOA.js";import{b as ae,e as de}from"./chunk.DMENNIHT.js";import"./chunk.HZPRMHSL.js";import{a as U}from"./chunk.SDO3U72B.js";import"./chunk.IQGSEAQ2.js";import"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";var Kt=["good","warn","bad","neutral","accent"],Gt=["value","max","aria-label","placeholder","disabled"],At=["click","change"],Me=["_blank","_self"],Wt=["section","div","span","strong","p","hr","a","button","input","progress"],le={type:{oneOf:Kt}},Ee={"gv-card":{host:"section",properties:{tone:le},events:{},children:"any"},"gv-group":{host:"div",properties:{direction:{type:{oneOf:["row","column"]}}},events:{},children:"any"},"gv-title":{host:"strong",properties:{},events:{},children:"text"},"gv-text":{host:"p",properties:{tone:le},events:{},children:"text"},"gv-badge":{host:"span",properties:{tone:le},events:{},children:"text"},"gv-field":{host:"div",properties:{label:{type:"string"}},events:{},children:"text"},"gv-progress":{host:"progress",properties:{value:{type:"number",as:"value"},max:{type:"number",as:"max"},label:{type:"string",as:"aria-label"}},events:{},children:"none"},"gv-divider":{host:"hr",properties:{},events:{},children:"none"},"gv-link":{host:"a",properties:{href:{type:"url"}},events:{},children:"text"},"gv-button":{host:"button",properties:{tone:le,disabled:{type:"boolean",as:"disabled"}},events:{press:{from:"click"}},children:"text"},"gv-input":{host:"input",properties:{label:{type:"string",as:"aria-label"},value:{type:"string",as:"value"},placeholder:{type:"string",as:"placeholder"}},events:{change:{from:"change",detail:"value"}},children:"none"}},Re=1e4;var rr=0,nr=1,or=2,sr=3,Ot=1,ir=2,ar=3,dr=1,lr=3,ur=8,Ke="~",Ge=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),Z=r=>typeof r=="object"&&r!==null&&!Array.isArray(r);function _t(r,e){return e.type==="url"?"href":e.as??`data-gv-${r.toLowerCase()}`}var cr=2e3;function Lt(r,e){if(e==null)return{ok:!0,value:null};let a=r.type;if(a==="boolean")return typeof e=="boolean"?{ok:!0,value:e}:{ok:!1,reason:"value"};if(a==="number")return typeof e=="number"&&Number.isFinite(e)?{ok:!0,value:String(e)}:{ok:!1,reason:"value"};if(typeof e!="string"||e.length>cr)return{ok:!1,reason:a==="url"?"url":"value"};if(typeof a=="object")return a.oneOf.includes(e)?{ok:!0,value:e}:{ok:!1,reason:"value"};if(a==="url"){let p;try{p=new URL(e)}catch{return{ok:!1,reason:"url"}}return p.protocol!=="https:"||p.hostname===""||!/^https:\/\//i.test(e)?{ok:!1,reason:"url"}:{ok:!0,value:p.href}}return{ok:!0,value:e}}function pr(r){let e=r.host==="a";return Wt.includes(r.host)&&(r.target===void 0||e&&Me.includes(r.target))&&Object.values(r.properties).every(a=>a.type!=="url"||e)&&Object.values(r.properties).every(a=>a.as===void 0||a.type!=="url"&&Gt.includes(a.as))&&Object.values(r.events).every(a=>At.includes(a.from))}function Ae(r,e){let a=e.kit??Ee,p=e.maxNodes??2e3,o=r.ownerDocument,f=[],y=new Map,A={dom:r,name:Ke,component:{host:"div",properties:{},events:{},children:"any"},children:[],listeners:new Map,id:Ke};y.set(Ke,A);let W=e.links?new Set(e.links.origins.flatMap(n=>{try{let c=new URL(n);return c.protocol==="https:"&&c.hostname!==""?[c.origin]:[]}catch{return[]}})):void 0,P=0,M=0,D=!1,g=n=>{f.push(n),f.length>200&&f.shift()},x=()=>({dom:o.createComment(""),children:[],refused:!0,listeners:new Map}),L=(n,c,m)=>{let h=n.component;if(!Ge(h.properties,c))return g({reason:"property",element:n.name,name:c});let d=h.properties[c],i=Lt(d,m),w=i.ok&&d.type==="url"&&W&&typeof i.value=="string"&&!W.has(new URL(i.value).origin)?{ok:!1,reason:"url"}:i,E=n.dom,T=_t(c,d);if(!w.ok)return E.removeAttribute(T),g({reason:w.reason,element:n.name,name:c});let R=w.value;R===null||R===!1?E.removeAttribute(T):E.setAttribute(T,R===!0?"":R),T==="value"&&"value"in E&&(E.value=typeof R=="string"?R:""),T==="disabled"&&"disabled"in E&&(E.disabled=R!==null&&R!==!1)},b=(n,c,m)=>{let h=n.component;if(!Ge(h.events,c))return g({reason:"event",element:n.name,name:c});let d=n.listeners.get(c);if(d&&(d(),n.listeners.delete(c),M-=1),m==null)return;if(!Z(m)||typeof m.listener!="number")return g({reason:"value",element:n.name,name:c});let i=m.listener,w=h.events[c],E=n.dom,T=()=>e.onEvent(i,w.detail==="value"?String(E.value??""):void 0);E.addEventListener(w.from,T),n.listeners.set(c,()=>E.removeEventListener(w.from,T)),M+=1},S=n=>{if(!n.refused){P-=1,n.id!==void 0&&y.delete(n.id);for(let c of n.listeners.values())c();M-=n.listeners.size,n.listeners.clear();for(let c of n.children)S(c)}},k=(n,c)=>{if(!Z(n)||typeof n.id!="string"||y.has(n.id))return g({reason:"record"}),x();if(P>=p)return g({reason:"budget"}),D||(D=!0,e.onOverBudget?.()),x();let m=n.id,h=c.component.children;if(n.type===ur)return x();if(n.type===lr){if(h==="none")return g({reason:"child",element:c.name}),x();let T={dom:o.createTextNode(String(n.data??"").slice(0,Re)),children:[],text:!0,listeners:new Map,id:m};return y.set(m,T),P+=1,T}if(n.type!==dr)return g({reason:"record"}),x();let d=String(n.element);if(!Ge(a,d)||!pr(a[d]))return g({reason:"element",element:d}),x();if(h!=="any")return g({reason:"child",element:d}),x();let i=a[d],w=o.createElement(i.host);w.setAttribute("data-gv",d.replace(/^gv-/,"")),w.className=`graview-guest-${d.replace(/^gv-/,"")}`,i.host==="a"&&(w.setAttribute("rel","noopener noreferrer"),w.setAttribute("target",i.target??"_blank"),w.setAttribute("referrerpolicy","no-referrer")),i.host==="button"&&w.setAttribute("type","button");let E={dom:w,name:d,component:i,children:[],listeners:new Map,id:m};if(y.set(m,E),P+=1,Z(n.properties))for(let[T,R]of Object.entries(n.properties))L(E,T,R);if(Z(n.attributes))for(let T of Object.keys(n.attributes))g({reason:"attribute",element:d,name:T});if(Z(n.eventListeners))for(let[T,R]of Object.entries(n.eventListeners))b(E,T,R);if(Array.isArray(n.children))for(let T of n.children){let R=k(T,E);E.children.push(R),w.appendChild(R.dom)}return E},G=n=>{if(!Array.isArray(n))return g({reason:"record"});let[c,m]=n,h=typeof m=="string"?y.get(m):void 0;if(!h)return g({reason:"record"});switch(c){case rr:{if(h.text)return g({reason:"record"});let d=Number(n[3]),i=Number.isInteger(d)&&d>=0&&d<=h.children.length?d:h.children.length,w=k(n[2],h);h.dom.insertBefore(w.dom,h.children[i]?.dom??null),h.children.splice(i,0,w);return}case nr:{let d=Number(n[2]),i=h.children[d];if(!i)return g({reason:"record"});h.children.splice(d,1),i.dom.parentNode?.removeChild(i.dom),S(i);return}case or:if(!h.text)return g({reason:"record"});h.dom.data=String(n[2]??"").slice(0,Re);return;case sr:{if(h===A||h.text)return g({reason:"record"});let d=String(n[2]),i=n[4]??Ot;return i===Ot?L(h,d,n[3]):i===ar?b(h,d,n[3]):g(i===ir?{reason:"attribute",element:h.name,name:d}:{reason:"record"})}default:return g({reason:"record"})}};return{apply(n,c){if(!Array.isArray(n))return g({reason:"record"}),!0;for(let m=0;m<n.length;m+=1){if(c&&m%32===0&&c())return!1;G(n[m])}return!0},get refused(){return f},get size(){return P},get listening(){return M},dispose(){for(let n of A.children)S(n);A.children.length=0,r.replaceChildren()}}}var We=`
2
2
  .graview-guest { display: flex; flex-direction: column; gap: 8px; min-width: 0; color: var(--graview-ink, inherit); font: inherit; }
3
3
  .graview-guest-card { display: flex; flex-direction: column; gap: 6px; padding: 12px; border: 1px solid var(--graview-edge, #d0d0d0); border-radius: 10px; background: var(--graview-panel, transparent); }
4
4
  .graview-guest-group { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
@@ -18,4 +18,4 @@ var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=gl
18
18
  .graview-guest [data-gv-tone="warn"] { color: var(--graview-warn, inherit); }
19
19
  .graview-guest [data-gv-tone="accent"] { color: var(--graview-accent, inherit); }
20
20
  .graview-guest [data-gv-tone="neutral"] { color: var(--graview-ink-muted, inherit); }
21
- `;var It=new WeakSet;function fr(r,e){if(r.startsWith("blob:"))return"blob:";try{return new URL(r,e.location.href).origin}catch{return r}}function Pt(r,e,a){let p=fr(e,r),o=`this page's Content-Security-Policy${a?` (${a})`:""} does not allow a worker from ${p}: it needs worker-src ${p}`;return It.has(r)||(It.add(r),r.console?.warn?.(`Graview: worker views cannot start on this page, because ${o}. A host that will not allow ${p} serves each view's whole script from its own origin and passes worker: { url } (the @graview/guest README, "What the host page allows").`)),o}function mr(r,e){return r===""?!0:e.startsWith("blob:")?r.startsWith("blob"):e.startsWith(r)||r.startsWith(e)}function ue(r,e){let a="script"in e.source?r.URL.createObjectURL(new r.Blob([e.source.script],{type:"text/javascript"})):void 0,p="script"in e.source?a:e.source.url,o,f,y=!1,A=!1,W=0,P=0,M="",D=0,g=0,x=r.performance,L=x.now(),b,S=d=>{let i=d,w=String(i.effectiveDirective||i.violatedDirective||"").split(" ")[0];/^(worker-src|script-src|script-src-elem|child-src|default-src)$/.test(w)&&mr(String(i.blockedURI??""),p)&&(b=w)},k=r.document;k?.addEventListener("securitypolicyviolation",S);let G=()=>k?.removeEventListener("securitypolicyviolation",S),n=()=>{A||(A=!0,f?.close(),o?.terminate(),o=void 0,r.clearTimeout(W),r.clearInterval(P),G(),a&&r.URL.revokeObjectURL(a))},c=(d,i)=>{A||(n(),e.onStop(d,i))},m=()=>{r.clearTimeout(W),G(),M=gt();let d=new r.MessageChannel;f=d.port1;let i=Math.max(1,e.silentMs),w=Math.max(10,Math.min(1e3,Math.floor(i/4)));L=x.now();let E=L;P=r.setInterval(()=>{let R=x.now();if(R-E>w*2&&(L+=R-E-w),E=R,R-L>=i)return c("silent");D+=1,d.port1.postMessage({type:"heartbeat",beat:D})},w);let T={graview:"host-hello",protocol:1,nonce:M,view:e.name};o.postMessage(T,[d.port2]),e.onReady(M,d.port1,x.now()-h)},h=x.now();try{o=new r.Worker(p,{name:e.name})}catch(d){o=void 0;let i=d,w=i?.name==="SecurityError"?Pt(r,p,b):`the worker could not be made: ${String(i?.message??d)}`;queueMicrotask(()=>c("start",w))}return o&&(W=r.setTimeout(()=>c("start",`it never said it was ready in ${e.readyMs.toLocaleString("en-US")} ms`),e.readyMs),o.onerror=d=>{let i=typeof d.message=="string"&&d.message!==""?d.message:void 0;if(y)return void e.onError?.(i??"an error");r.clearTimeout(W),r.setTimeout(()=>!y&&c("start",b?Pt(r,p,b):i?`it failed before it said ready: ${i}`:"it failed before it said ready, and the engine gave no reason (a page policy that refuses it, or a script that does not load)"),0)},o.onmessage=d=>{if(!e.limiter.message()||y||!mt(d.data)||d.data.protocol!==1){e.onDropped();return}y=!0,m()}),{get worker(){return o},answer(d){let i=d;return typeof i!="object"||i===null||i.type!=="heartbeat"||i.nonce!==M?!1:(typeof i.beat=="number"&&i.beat>g&&i.beat<=D&&(g=i.beat,L=x.now()),!0)},stop:n}}function ce(r,e){let a=e(),p=0;return{draw(o){let f=e();f-a>=1e3&&(a=f,p=0);let y=r(),A=o(()=>p+(e()-f)>=y);return p+=e()-f,A&&p<y}}}var gr=Symbol.for("graview.view.clicked");function Nt(r,e){r[gr]=Object.freeze([...e])}function Vt(r){return!Number.isFinite(r)||r<=60?1:Math.min(4,Math.round(r/60*10)/10)}function Dt(r,e){return{...r,pushMs:Math.round(r.pushMs*e),drawMs:Math.round(r.drawMs*e)}}var Ct=new WeakMap;function Ht(r,e){let a=Ct.get(r);return a!==void 0?a:(Ct.set(r,e),e)}var yr=U(()=>(__graviewPreload(import.meta.url,["./chunk.3L37FY3G.js","./chunk.AJZBJBMO.js"]),import("./chunk.DVSTLVIH.js"))),hr=U(()=>(__graviewPreload(import.meta.url,["./chunk.FULEUL34.js","./chunk.B3WVCSW5.js","./chunk.L3WTKQQL.js","./chunk.QDWSU47A.js","./chunk.DZZL5IDD.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.B23WZQXQ.js"))),wr=U(()=>(__graviewPreload(import.meta.url,["./chunk.AJZBJBMO.js"]),import("./chunk.K2HDEL7I.js"))),vr=U(()=>(__graviewPreload(import.meta.url,["./chunk.WVUJXDXZ.js","./chunk.SGCW2XRC.js","./chunk.ZN3PUM2I.js","./chunk.QIPASE42.js","./chunk.EVBCEEQ4.js","./chunk.OWT3VVOT.js","./chunk.NHTGAP3G.js","./chunk.ACTXR2MI.js","./chunk.DZZL5IDD.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.NUWDMH47.js"))),br=U(()=>(__graviewPreload(import.meta.url,["./chunk.L3WTKQQL.js","./chunk.QDWSU47A.js","./chunk.DZZL5IDD.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.5YAOKOGV.js"))),kr=U(()=>(__graviewPreload(import.meta.url,["./chunk.BBLIT7S7.js","./chunk.AJZBJBMO.js"]),import("./chunk.RRCPEHM4.js"))),xr=U(()=>(__graviewPreload(import.meta.url,["./chunk.WVUJXDXZ.js","./chunk.SGCW2XRC.js","./chunk.ZN3PUM2I.js","./chunk.QIPASE42.js","./chunk.EVBCEEQ4.js","./chunk.OWT3VVOT.js","./chunk.NHTGAP3G.js","./chunk.ACTXR2MI.js","./chunk.DZZL5IDD.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.IYBEXENQ.js")));function Sr(r,e,a){switch(r){case"manifest":return a??"Its manifest names something this app does not have.";case"source":return a??`Its code is longer than the ${e.maxSourceBytes.toLocaleString("en-US")} bytes a view may be.`;case"start":return`It could not start${a?`: ${a}.`:"."}`;case"error":return`It failed before it drew anything${a?`: ${a}`:"."}`;case"silent":return`It stopped answering for ${e.silentMs.toLocaleString("en-US")} ms.`;case"nodes":return`It drew more than the ${e.maxNodes.toLocaleString("en-US")} things a view may draw.`;case"flood":return`It sent more than ${e.messages} messages in ${e.messageWindowMs.toLocaleString("en-US")} ms.`;case"slow":return`It took longer than ${e.pushMs.toLocaleString("en-US")} ms to draw what it was shown.`}}function Tr(r,e){let a=r.ownerDocument,p=a.defaultView,{manifest:o}=e,f=a.createElement("div");f.className="graview-worker-view",f.setAttribute("role","region"),f.setAttribute("aria-label",o.title??o.name),f.setAttribute("data-worker-view",o.name),f.style.cssText="display:block;position:relative;contain:layout paint style;isolation:isolate;overflow:clip;min-width:0",r.appendChild(f);let y=f.attachShadow({mode:"open"}),A=e.author?a.createElement("p"):void 0;A&&(A.className="graview-worker-view-author",A.setAttribute("data-worker-view-author",o.name),A.style.cssText="margin:4px 0 0;font-size:0.75rem;color:var(--graview-ink-muted, inherit)",A.textContent=e.author,r.appendChild(A));let W={applied:0,refused:0,dropped:0},P=ae(e.limits),M={maxSourceBytes:e.limits?.maxSourceBytes??256e3,maxNodes:e.limits?.maxNodes??5e3,messages:e.limits?.messages??120,messageWindowMs:e.limits?.messageWindowMs??1e3,pushMs:e.limits?.pushMs??1e3,silentMs:e.limits?.silentMs??5e3,drawMs:e.limits?.drawMs??100},D={pushMs:M.pushMs,drawMs:M.drawMs},g,x,L,b,S,k,G=!1,n={applied:0,refused:0,dropped:0},c=[],m=()=>{if(!b)return;let t=b.stats;W.applied+=t.applied-n.applied,W.refused+=t.refused-n.refused,W.dropped+=t.dropped-n.dropped,n={...t}},h=()=>{},d,i,w=()=>{let t=y.querySelector("[data-graview-view-root]"),s=p.ResizeObserver;i||!t||typeof s!="function"||(i=new s(v=>{let K=v[v.length-1]?.borderBoxSize?.[0],_=Math.ceil(K?K.blockSize:t.offsetHeight);_!==d&&(d=_,f.setAttribute("data-graview-content-height",String(_)),e.onContentHeight?.(_))}),i.observe(t))},E=()=>{i&&(i.disconnect(),i=void 0,d=void 0,f.removeAttribute("data-graview-content-height"),e.onContentHeight?.(void 0))},T=0,R=()=>{},Oe=()=>{R(),R=()=>{},m(),b?.dispose(),b=void 0,S?.stop(),h(),p.clearInterval(T)},C=(t,s)=>{if(G)return;G=!0,Oe(),E(),k?.dispose();let v=Sr(t,M,s);f.removeAttribute("data-worker-view-drawn"),f.setAttribute("data-worker-view-failed",t),e.fallback!==!1&&(e.fallback??Bt)(f,t,v),e.onFailure?.(t,v)},Bt=(t,s,v)=>{let K=x??(()=>{try{return Se(e.store,e.principal,{manifest:o,...e.input?{input:e.input()}:{},...L?{computed:L}:{}})}catch{return}})(),_=a.createElement("div");_.setAttribute("data-graview-fallback",s),_.style.cssText="padding:12px;display:grid;gap:6px;color:var(--graview-ink, inherit);font-family:var(--graview-font-body, inherit)";let u=a.createElement("strong");u.textContent=o.title??o.name;let N=a.createElement("ul");N.style.cssText="margin:0;padding-left:1.2em";for(let H of[...K?.node?[K.node]:[],...K?.nodes??[]]){let se=a.createElement("li");se.textContent=H.label??H.id,N.appendChild(se)}let I=a.createElement("p");I.style.cssText="margin:0;font-size:0.8125rem;color:var(--graview-ink-muted, inherit)",I.textContent=`This view was stopped. ${v}`,_.append(u,N,I),y.replaceChildren(_)},_e=wt(o,e.store);if(_e.length>0)return queueMicrotask(()=>C("manifest",_e.join(" "))),he();let Le=t=>{if(("source"in t?new TextEncoder().encode(t.source).length:"script"in t?new TextEncoder().encode(t.script).length:0)>M.maxSourceBytes)return["source"];let v="source"in t?bt(t.source):[];return v.length>0?["source",v.join(" ")]:void 0},z=e.worker,Ie=typeof z=="function"?void 0:Le(z);if(Ie)return queueMicrotask(()=>C(...Ie)),he();let Pe=Et(p,()=>Ve(),"blob"),pe=()=>Mt(()=>e.theme?.()??St(f),e.brand,Pe),Ne=()=>{let t=e.brand?.()?.views;k?.theme(t?.css),k?.motion(t?.motion??"none")},Ce="",fe=()=>{Ce=JSON.stringify(pe()),Ne(),b?.push()},Ve=()=>{b&&JSON.stringify(pe())!==Ce&&fe()},Ut=Tt(a,Ve),F,Ft=xe(e.store,o)?xr().then(({computedOn:t})=>{L=t(e.store.schema)}):Promise.resolve(),$,$t=o.pictures?wr().then(({createGuestPictures:t})=>{G||(F=t(p,{as:"blob",view:`"${o.title??o.name}"`,pictures:o.pictures,...e.limits?{limits:e.limits}:{},...e.file?{file:e.file}:{},moved:()=>b?.push(),onLeft:s=>{B?.postMessage({type:"notice",text:s}),e.onProblem?.(s)}}))}):Promise.resolve();h=()=>{Ut(),Pe.dispose(),F?.dispose(),J?.dispose(),$?.dispose(),oe?.dispose()};let B,ee=t=>B?.postMessage(t),De=!1,He=!1,te=()=>f.toggleAttribute("data-worker-view-drawn",!G&&He&&k!==void 0&&c.length===0&&X.size===0&&!F?.waiting()&&!($?.waiting??0)),q=p.performance,X=new Map,re=q.now(),zt=()=>{if(T)return;let t=Math.max(10,Math.min(250,Math.floor(M.pushMs/4)));re=q.now(),T=p.setInterval(()=>{let s=q.now(),v=s-re>t*2?s-re-t:0;re=s;for(let[K,_]of X){let u=_+v;if(X.set(K,u),s-u>=M.pushMs)return C("slow")}},t)},qt=ce(()=>M.drawMs,()=>q.now()),je=()=>{},me=t=>{if(G)return;if(!k)return void c.push(t);let s=k;if(!qt.draw(K=>t[0]==="render"?s.apply(t[1],K):(s.style(t[1]),!0)))return C("slow");t[0]==="render"&&je()},Be=()=>new Set([...e.store.kindsKeptFrom(e.principal),...e.store.modules.disabledKinds]),Ue=()=>ct(e.store.schema,Be()),ge=()=>pt(e.store.schema,e.places?.()??[],{kept:Be(),...e.arrangement?{pages:e.arrangement()}:{}}),Y=ft({sees:t=>e.store.seenBy(e.principal).graph.has(t),places:ge,lists:Ue,schema:e.store.schema,...e.onNavigate?{onNavigate:e.onNavigate}:e.goTo?{onNavigate:t=>kt(e.goTo(),t)}:{},...e.hrefOf?{hrefOf:e.hrefOf}:!e.onNavigate&&e.goTo?{hrefOf:t=>xt(e.goTo(),t)}:{},onLost:t=>{B?.postMessage({type:"notice",text:t}),e.onProblem?.(t)}}),j=new Set,Fe=new Set,J,$e=!1,ze=()=>{$e||($e=!0,vr().then(({createGuestMedia:t})=>{G||(J=t(p,{view:`"${o.title??o.name}"`,pictures:o.pictures!==void 0,shown:()=>x,...e.file?{file:e.file}:{},onProblem:s=>{B?.postMessage({type:"notice",text:s}),e.onProblem?.(s)}}),J.refresh(y))},()=>e.onProblem?.(`The view "${o.title??o.name}" places a video or a full-screen viewer, and the host's player could not be loaded.`)))},qe=!1,Xe=!1,ne=new Map,Ye=()=>{qe||!o.accepts?.length||(qe=!0,br().then(({createGuestDrops:t})=>{G||($=t(p,{shadow:y,manifest:o,store:e.store,principal:e.principal,files:()=>e.files?.(),shown:()=>j,hears:()=>Xe,idOf:s=>k?.renderer.idOf(s),send:ee,change:(s,v)=>{if(!b)return{ok:!1,reason:"refused",message:"The view has gone."};let K=b.change(s,v);return m(),K},handed:(s,v)=>ne.set(s.href,{file:s,drop:v}),onProblem:s=>{B?.postMessage({type:"notice",text:s}),e.onProblem?.(s)},onBusy:()=>te()}),$.refresh())},()=>e.onProblem?.(`The view "${o.title??o.name}" takes files, and the host's drop could not be loaded.`)))},oe,Je=[],Qe=!1,Xt=t=>{Je=t,oe?.bind(t),!(Qe||t.length===0)&&(Qe=!0,kr().then(({createGuestGestures:s,unheardWords:v})=>{if(!G){if(o.gestures!==!0){let K=v(o.title??o.name);return B?.postMessage({type:"notice",text:K}),e.onProblem?.(K)}oe=s(y,{root:()=>y.querySelector("[data-graview-view-root]")??void 0,idOf:K=>k?.renderer.idOf(K),send:ee}),oe.bind(Je)}},()=>{}))},Yt=t=>{let s=e.store.seenBy(e.principal).graph;for(let v of j){let K=s.getNode(v);for(let _ of Object.values(K??{}))for(let u of ht(_))if(u.href===t)return u}},Ze=t=>{if(t.localName==="graview-video")return ze();t.hasAttribute("data-lightbox")&&(t.setAttribute("aria-haspopup","dialog"),ze())};Promise.all([yr(),hr()]).then(([{createOpenDrawing:t,handedLinks:s,judgeLink:v,linkRefusedWords:K},{createPressReader:_,createSaver:u,fillPrefills:N,judgePress:I,markPresses:H,prefillOf:se,quietPictures:Jt}])=>{if(G)return;let Q=_(),nt=(l,O)=>{let V=k?.renderer.idOf(l);V!==void 0&&ee({type:"dom-event",target:V,event:"acted",pressed:O})},we=u({reader:Q,save:(l,O)=>{if(!b)return;let V=b.pressed(I(e.store,o,j,l));m(),nt(O,{as:l.as,...V})}}),ot=()=>we.flush();p.addEventListener("pagehide",ot),R=()=>{p.removeEventListener("pagehide",ot),we.flush()};let Qt=new WeakSet;je=()=>{Y.refresh(y),H(y),Jt(y),N(y,Q,Qt,l=>se(e.store,e.principal,o,j,l)),J?.refresh(y),$?.refresh()};let st,it=new Set,Zt=()=>(st!==x&&([st,it]=[x,s(x)]),it),at=new Set;k=t(y,{origin:e.origin??p.location.origin,link:l=>v(l,{handed:Zt(),...e.links?{origins:e.links.origins}:{}}),...e.asset?{asset:e.asset}:{},...e.images?{imageOrigins:e.images.origins}:{},...o.pictures?{picture:l=>F?.drawn(l)}:{},onRefused:l=>{if(l.reason==="url"&&l.element==="a"&&l.address!==void 0&&!at.has(l.address)){at.add(l.address);let V=K(l.address,e.links?.origins);return B?.postMessage({type:"notice",text:V}),e.onProblem?.(V)}if(l.reason!=="url"||l.element!=="img"||l.address===void 0||Fe.has(l.address))return;Fe.add(l.address);let O=yt(l.address,{...e.images?{origins:e.images.origins}:{},assets:e.asset!==void 0},l.length);B?.postMessage({type:"notice",text:O}),e.onProblem?.(O)},...e.limits?.maxNodes!==void 0?{maxNodes:e.limits.maxNodes}:{},onOverBudget:()=>C("nodes"),send:ee,onFieldSet:l=>Q.filled(l),onAttribute:(l,O)=>{(O==="data-record"||O==="data-place")&&Y.link(l),O==="data-lightbox"&&Ze(l),O==="data-drop"&&Ye()},decorate:l=>{(l.hasAttribute("data-record")||l.hasAttribute("data-place"))&&Y.link(l),Ze(l),l.hasAttribute("data-drop")&&Ye()},before:(l,O,V)=>{Q.heard(l,O),we.heard(l,O,V),Y.pressed(l,O,V);let ve=O.closest("a[href]");ve&&V.contains(ve)&&!ve.hasAttribute("data-graview-link")&&l.type==="click"&&l.stopPropagation();let ie=O.closest("[data-lightbox]"),dt=l.type==="keydown"?l.key:void 0;if(ie&&V.contains(ie)&&l.isTrusted&&(l.type==="click"||(dt==="Enter"||dt===" ")&&ie.localName!=="button")&&(l.preventDefault(),l.stopPropagation(),J?.open(ie)),$?.before(l,O,V))return!1;let be=Q.press(l,O,V);if(!be||!b)return;l.stopPropagation(),l.type==="keydown"&&l.preventDefault();let er=b.pressed(I(e.store,o,j,be));m();let lt={as:be.as,...er},tr=O.closest("[data-act]");return queueMicrotask(()=>nt(tr,lt)),{pressed:lt}}}),Ne();for(let l of c.splice(0))me(l);w(),te()},()=>C("start","the view's drawing could not be loaded"));let ye=t=>S=ue(p,{source:t,name:o.name,limiter:P,readyMs:e.limits?.readyMs??5e3,silentMs:e.limits?.silentMs??5e3,onDropped:()=>W.dropped+=1,onStop:(s,v)=>C(s,v),onError:s=>{De||C("error",s)},onReady:(s,v,K)=>{B=v,g=Vt(Ht(p,K)),Object.assign(M,Dt(D,g)),zt();let _=de({store:e.store,principal:e.principal,view:o.name,nonce:s,send:u=>{u.type==="props"&&typeof u.push=="number"&&(X.set(u.push,q.now()),te()),v.postMessage(u)},props:()=>{let u=Se(e.store,e.principal,{manifest:o,...e.input?{input:e.input()}:{},theme:pe(),places:ut(ge()),...L?{computed:L}:{}}),N=j;return j=new Set([...u.node?[u.node.id]:[],...(u.nodes??[]).map(I=>I.id)]),x&&(N.size!==j.size||[...j].some(I=>!N.has(I)))&&k?.fade(),x=u,u},...F?{hand:F.hand}:{},judgeAct:(u,N)=>{let I=vt(e.store,o,u,N,{shown:j,file:H=>ne.get(H)?.file??Yt(H),dropped:H=>ne.get(H)?.drop});if(I.ok)for(let H of I.spent??[])ne.delete(H);return I},onHears:u=>{u.includes("drop")&&(Xe=!0)},onGestures:Xt,onClicks:u=>Nt(f,u),onRender:u=>{De=!0,me(["render",u])},onPushed:(u,N)=>{if(X.delete(u),N>=M.pushMs)return C("slow");He=!0,te()},onFlood:()=>C("flood"),onStyle:u=>me(["style",u]),places:()=>[...new Set([...ge().map(u=>u.as),...Ue().map(u=>u.slug)])],...e.limits?{limits:e.limits}:{},limiter:P});b=_,v.onmessage=({data:u})=>{if(!S?.answer(u)&&(_.receive(u),m(),!G&&u?.nonce===s&&u.type==="navigate")){let N={...u.where!==void 0?{where:u.where}:{},...u.section!==void 0?{section:u.section}:{}},I=typeof u.place=="string"?{place:u.place,...N}:typeof u.to=="string"&&{record:u.to,...N};I&&Y.go(I)}},fe()}}),et=o.pictures!==void 0||xe(e.store,o),tt=()=>Promise.all([$t.catch(()=>Promise.reject(new Error("the view's pictures could not be loaded"))),Ft.catch(()=>Promise.reject(new Error("the view's computed values could not be worked out")))]),rt=t=>{"source"in t?(et?Promise.all([Te(t.source),tt()]).then(([s])=>s):Te(t.source)).then(s=>{G||ye({script:s})},s=>C("start",s instanceof Error&&s.message.startsWith("the view's")?s.message:"the view's runtime could not be loaded")):et?tt().then(()=>{G||ye(t)},s=>C("start",s instanceof Error?s.message:"the view's pictures could not be loaded")):ye(t)};return typeof z=="function"?Rt(z).then(t=>{if(G)return;let s=Le(t);s?C(...s):rt(t)},t=>C("source",`Its code did not arrive${t instanceof Error&&t.message?`: ${t.message}`:""}.`)):rt(z),he();function he(){return{element:f,shadow:y,get worker(){return S?.worker},update:()=>{b&&fe()},get stats(){return m(),W},get refused(){return k?.refused??[]},get contentHeight(){return d},get pace(){return g},dispose(){G=!0,Oe(),i?.disconnect(),k?.dispose(),f.remove(),A?.remove()}}}}var jt="graview-guest-kit";function rn(r,e){let a=r.ownerDocument,p=a.defaultView;if(!a.getElementById(jt)){let S=a.createElement("style");S.id=jt,S.textContent=We,a.head.appendChild(S)}let o=a.createElement("div");o.className="graview-guest",o.setAttribute("role","group"),o.setAttribute("aria-label",e.title??e.view),o.setAttribute("data-guest-view",e.view),r.appendChild(o);let f={applied:0,refused:0,dropped:0},y=ae(e.limits),A=ce(()=>e.limits?.drawMs??100,()=>p.performance.now()),W,P,M,D=!1,g={applied:0,refused:0,dropped:0},x=()=>{if(!W)return;let S=W.stats;f.applied+=S.applied-g.applied,f.refused+=S.refused-g.refused,f.dropped+=S.dropped-g.dropped,g={...S}},L=()=>{x(),W?.dispose(),W=void 0,M?.stop()},b=(S,k)=>{D||(D=!0,L(),P?.dispose(),e.onFailure?.(S,k))};return M=ue(p,{source:e.worker,name:e.view,limiter:y,readyMs:e.limits?.readyMs??5e3,silentMs:e.limits?.silentMs??5e3,onDropped:()=>f.dropped+=1,onStop:(S,k)=>b(S,k),onReady:(S,k)=>{let G=Ae(o,{...e.kit?{kit:e.kit}:{},...e.links?{links:e.links}:{},onEvent:(c,m)=>k.postMessage({type:"event",listener:c,...m!==void 0?{detail:m}:{}}),...e.limits?.maxNodes!==void 0?{maxNodes:e.limits.maxNodes}:{},onOverBudget:()=>b("budget")});P=G;let n=de({store:e.store,principal:e.principal,view:e.view,nonce:S,send:c=>k.postMessage(c),onRender:c=>{A.draw(m=>G.apply(c,m))||b("slow")},...e.input?{input:e.input}:{},...e.onNavigate?{onNavigate:e.onNavigate}:{},onSize:e.onSize??(c=>o.style.minHeight=`${c}px`),...e.limits?{limits:e.limits}:{},limiter:y});W=n,k.onmessage=c=>{M?.answer(c.data)||(n.receive(c.data),x())},n.push()}}),{element:o,get worker(){return M?.worker},update:()=>W?.push(),get stats(){return x(),f},get refused(){return P?.refused??[]},dispose(){D=!0,L(),P?.dispose(),o.remove()}}}export{Ee as GUEST_KIT,We as GUEST_KIT_CSS,Me as KIT_LINK_TARGETS,Kt as KIT_TONES,Ae as createKitRenderer,_t as hostAttribute,Lt as kitValue,rn as mountGuestWorker,Tr as mountWorkerView};
21
+ `;var It=new WeakSet;function fr(r,e){if(r.startsWith("blob:"))return"blob:";try{return new URL(r,e.location.href).origin}catch{return r}}function Pt(r,e,a){let p=fr(e,r),o=`this page's Content-Security-Policy${a?` (${a})`:""} does not allow a worker from ${p}: it needs worker-src ${p}`;return It.has(r)||(It.add(r),r.console?.warn?.(`Graview: worker views cannot start on this page, because ${o}. A host that will not allow ${p} serves each view's whole script from its own origin and passes worker: { url } (the @graview/guest README, "What the host page allows").`)),o}function mr(r,e){return r===""?!0:e.startsWith("blob:")?r.startsWith("blob"):e.startsWith(r)||r.startsWith(e)}function ue(r,e){let a="script"in e.source?r.URL.createObjectURL(new r.Blob([e.source.script],{type:"text/javascript"})):void 0,p="script"in e.source?a:e.source.url,o,f,y=!1,A=!1,W=0,P=0,M="",D=0,g=0,x=r.performance,L=x.now(),b,S=d=>{let i=d,w=String(i.effectiveDirective||i.violatedDirective||"").split(" ")[0];/^(worker-src|script-src|script-src-elem|child-src|default-src)$/.test(w)&&mr(String(i.blockedURI??""),p)&&(b=w)},k=r.document;k?.addEventListener("securitypolicyviolation",S);let G=()=>k?.removeEventListener("securitypolicyviolation",S),n=()=>{A||(A=!0,f?.close(),o?.terminate(),o=void 0,r.clearTimeout(W),r.clearInterval(P),G(),a&&r.URL.revokeObjectURL(a))},c=(d,i)=>{A||(n(),e.onStop(d,i))},m=()=>{r.clearTimeout(W),G(),M=gt();let d=new r.MessageChannel;f=d.port1;let i=Math.max(1,e.silentMs),w=Math.max(10,Math.min(1e3,Math.floor(i/4)));L=x.now();let E=L;P=r.setInterval(()=>{let R=x.now();if(R-E>w*2&&(L+=R-E-w),E=R,R-L>=i)return c("silent");D+=1,d.port1.postMessage({type:"heartbeat",beat:D})},w);let T={graview:"host-hello",protocol:1,nonce:M,view:e.name};o.postMessage(T,[d.port2]),e.onReady(M,d.port1,x.now()-h)},h=x.now();try{o=new r.Worker(p,{name:e.name})}catch(d){o=void 0;let i=d,w=i?.name==="SecurityError"?Pt(r,p,b):`the worker could not be made: ${String(i?.message??d)}`;queueMicrotask(()=>c("start",w))}return o&&(W=r.setTimeout(()=>c("start",`it never said it was ready in ${e.readyMs.toLocaleString("en-US")} ms`),e.readyMs),o.onerror=d=>{let i=typeof d.message=="string"&&d.message!==""?d.message:void 0;if(y)return void e.onError?.(i??"an error");r.clearTimeout(W),r.setTimeout(()=>!y&&c("start",b?Pt(r,p,b):i?`it failed before it said ready: ${i}`:"it failed before it said ready, and the engine gave no reason (a page policy that refuses it, or a script that does not load)"),0)},o.onmessage=d=>{if(!e.limiter.message()||y||!mt(d.data)||d.data.protocol!==1){e.onDropped();return}y=!0,m()}),{get worker(){return o},answer(d){let i=d;return typeof i!="object"||i===null||i.type!=="heartbeat"||i.nonce!==M?!1:(typeof i.beat=="number"&&i.beat>g&&i.beat<=D&&(g=i.beat,L=x.now()),!0)},stop:n}}function ce(r,e){let a=e(),p=0;return{draw(o){let f=e();f-a>=1e3&&(a=f,p=0);let y=r(),A=o(()=>p+(e()-f)>=y);return p+=e()-f,A&&p<y}}}var gr=Symbol.for("graview.view.clicked");function Nt(r,e){r[gr]=Object.freeze([...e])}function Vt(r){return!Number.isFinite(r)||r<=60?1:Math.min(4,Math.round(r/60*10)/10)}function Dt(r,e){return{...r,pushMs:Math.round(r.pushMs*e),drawMs:Math.round(r.drawMs*e)}}var Ct=new WeakMap;function Ht(r,e){let a=Ct.get(r);return a!==void 0?a:(Ct.set(r,e),e)}var yr=U(()=>(__graviewPreload(import.meta.url,["./chunk.3L37FY3G.js","./chunk.AJZBJBMO.js"]),import("./chunk.DVSTLVIH.js"))),hr=U(()=>(__graviewPreload(import.meta.url,["./chunk.NGRL3QOI.js","./chunk.B3WVCSW5.js","./chunk.DN7UCBOA.js","./chunk.DMENNIHT.js","./chunk.IQGSEAQ2.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.TYIBLD2D.js"))),wr=U(()=>(__graviewPreload(import.meta.url,["./chunk.AJZBJBMO.js"]),import("./chunk.K2HDEL7I.js"))),vr=U(()=>(__graviewPreload(import.meta.url,["./chunk.WVUJXDXZ.js","./chunk.ZA5TDCBC.js","./chunk.2JEN2RCB.js","./chunk.7CLKGKSF.js","./chunk.TMHVYI5R.js","./chunk.R5MLRKAO.js","./chunk.YMXWS4XN.js","./chunk.5AD2QHWH.js","./chunk.IQGSEAQ2.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.WMARJ5E3.js"))),br=U(()=>(__graviewPreload(import.meta.url,["./chunk.DN7UCBOA.js","./chunk.DMENNIHT.js","./chunk.IQGSEAQ2.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.OW3M4OBN.js"))),kr=U(()=>(__graviewPreload(import.meta.url,["./chunk.BBLIT7S7.js","./chunk.AJZBJBMO.js"]),import("./chunk.RRCPEHM4.js"))),xr=U(()=>(__graviewPreload(import.meta.url,["./chunk.WVUJXDXZ.js","./chunk.ZA5TDCBC.js","./chunk.2JEN2RCB.js","./chunk.7CLKGKSF.js","./chunk.TMHVYI5R.js","./chunk.R5MLRKAO.js","./chunk.YMXWS4XN.js","./chunk.5AD2QHWH.js","./chunk.IQGSEAQ2.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.5HJ2GTKZ.js")));function Sr(r,e,a){switch(r){case"manifest":return a??"Its manifest names something this app does not have.";case"source":return a??`Its code is longer than the ${e.maxSourceBytes.toLocaleString("en-US")} bytes a view may be.`;case"start":return`It could not start${a?`: ${a}.`:"."}`;case"error":return`It failed before it drew anything${a?`: ${a}`:"."}`;case"silent":return`It stopped answering for ${e.silentMs.toLocaleString("en-US")} ms.`;case"nodes":return`It drew more than the ${e.maxNodes.toLocaleString("en-US")} things a view may draw.`;case"flood":return`It sent more than ${e.messages} messages in ${e.messageWindowMs.toLocaleString("en-US")} ms.`;case"slow":return`It took longer than ${e.pushMs.toLocaleString("en-US")} ms to draw what it was shown.`}}function Tr(r,e){let a=r.ownerDocument,p=a.defaultView,{manifest:o}=e,f=a.createElement("div");f.className="graview-worker-view",f.setAttribute("role","region"),f.setAttribute("aria-label",o.title??o.name),f.setAttribute("data-worker-view",o.name),f.style.cssText="display:block;position:relative;contain:layout paint style;isolation:isolate;overflow:clip;min-width:0",r.appendChild(f);let y=f.attachShadow({mode:"open"}),A=e.author?a.createElement("p"):void 0;A&&(A.className="graview-worker-view-author",A.setAttribute("data-worker-view-author",o.name),A.style.cssText="margin:4px 0 0;font-size:0.75rem;color:var(--graview-ink-muted, inherit)",A.textContent=e.author,r.appendChild(A));let W={applied:0,refused:0,dropped:0},P=ae(e.limits),M={maxSourceBytes:e.limits?.maxSourceBytes??256e3,maxNodes:e.limits?.maxNodes??5e3,messages:e.limits?.messages??120,messageWindowMs:e.limits?.messageWindowMs??1e3,pushMs:e.limits?.pushMs??1e3,silentMs:e.limits?.silentMs??5e3,drawMs:e.limits?.drawMs??100},D={pushMs:M.pushMs,drawMs:M.drawMs},g,x,L,b,S,k,G=!1,n={applied:0,refused:0,dropped:0},c=[],m=()=>{if(!b)return;let t=b.stats;W.applied+=t.applied-n.applied,W.refused+=t.refused-n.refused,W.dropped+=t.dropped-n.dropped,n={...t}},h=()=>{},d,i,w=()=>{let t=y.querySelector("[data-graview-view-root]"),s=p.ResizeObserver;i||!t||typeof s!="function"||(i=new s(v=>{let K=v[v.length-1]?.borderBoxSize?.[0],_=Math.ceil(K?K.blockSize:t.offsetHeight);_!==d&&(d=_,f.setAttribute("data-graview-content-height",String(_)),e.onContentHeight?.(_))}),i.observe(t))},E=()=>{i&&(i.disconnect(),i=void 0,d=void 0,f.removeAttribute("data-graview-content-height"),e.onContentHeight?.(void 0))},T=0,R=()=>{},Oe=()=>{R(),R=()=>{},m(),b?.dispose(),b=void 0,S?.stop(),h(),p.clearInterval(T)},C=(t,s)=>{if(G)return;G=!0,Oe(),E(),k?.dispose();let v=Sr(t,M,s);f.removeAttribute("data-worker-view-drawn"),f.setAttribute("data-worker-view-failed",t),e.fallback!==!1&&(e.fallback??Bt)(f,t,v),e.onFailure?.(t,v)},Bt=(t,s,v)=>{let K=x??(()=>{try{return Se(e.store,e.principal,{manifest:o,...e.input?{input:e.input()}:{},...L?{computed:L}:{}})}catch{return}})(),_=a.createElement("div");_.setAttribute("data-graview-fallback",s),_.style.cssText="padding:12px;display:grid;gap:6px;color:var(--graview-ink, inherit);font-family:var(--graview-font-body, inherit)";let u=a.createElement("strong");u.textContent=o.title??o.name;let N=a.createElement("ul");N.style.cssText="margin:0;padding-left:1.2em";for(let H of[...K?.node?[K.node]:[],...K?.nodes??[]]){let se=a.createElement("li");se.textContent=H.label??H.id,N.appendChild(se)}let I=a.createElement("p");I.style.cssText="margin:0;font-size:0.8125rem;color:var(--graview-ink-muted, inherit)",I.textContent=`This view was stopped. ${v}`,_.append(u,N,I),y.replaceChildren(_)},_e=wt(o,e.store);if(_e.length>0)return queueMicrotask(()=>C("manifest",_e.join(" "))),he();let Le=t=>{if(("source"in t?new TextEncoder().encode(t.source).length:"script"in t?new TextEncoder().encode(t.script).length:0)>M.maxSourceBytes)return["source"];let v="source"in t?bt(t.source):[];return v.length>0?["source",v.join(" ")]:void 0},z=e.worker,Ie=typeof z=="function"?void 0:Le(z);if(Ie)return queueMicrotask(()=>C(...Ie)),he();let Pe=Et(p,()=>Ve(),"blob"),pe=()=>Mt(()=>e.theme?.()??St(f),e.brand,Pe),Ne=()=>{let t=e.brand?.()?.views;k?.theme(t?.css),k?.motion(t?.motion??"none")},Ce="",fe=()=>{Ce=JSON.stringify(pe()),Ne(),b?.push()},Ve=()=>{b&&JSON.stringify(pe())!==Ce&&fe()},Ut=Tt(a,Ve),F,Ft=xe(e.store,o)?xr().then(({computedOn:t})=>{L=t(e.store.schema)}):Promise.resolve(),$,$t=o.pictures?wr().then(({createGuestPictures:t})=>{G||(F=t(p,{as:"blob",view:`"${o.title??o.name}"`,pictures:o.pictures,...e.limits?{limits:e.limits}:{},...e.file?{file:e.file}:{},moved:()=>b?.push(),onLeft:s=>{B?.postMessage({type:"notice",text:s}),e.onProblem?.(s)}}))}):Promise.resolve();h=()=>{Ut(),Pe.dispose(),F?.dispose(),J?.dispose(),$?.dispose(),oe?.dispose()};let B,ee=t=>B?.postMessage(t),De=!1,He=!1,te=()=>f.toggleAttribute("data-worker-view-drawn",!G&&He&&k!==void 0&&c.length===0&&X.size===0&&!F?.waiting()&&!($?.waiting??0)),q=p.performance,X=new Map,re=q.now(),zt=()=>{if(T)return;let t=Math.max(10,Math.min(250,Math.floor(M.pushMs/4)));re=q.now(),T=p.setInterval(()=>{let s=q.now(),v=s-re>t*2?s-re-t:0;re=s;for(let[K,_]of X){let u=_+v;if(X.set(K,u),s-u>=M.pushMs)return C("slow")}},t)},qt=ce(()=>M.drawMs,()=>q.now()),je=()=>{},me=t=>{if(G)return;if(!k)return void c.push(t);let s=k;if(!qt.draw(K=>t[0]==="render"?s.apply(t[1],K):(s.style(t[1]),!0)))return C("slow");t[0]==="render"&&je()},Be=()=>new Set([...e.store.kindsKeptFrom(e.principal),...e.store.modules.disabledKinds]),Ue=()=>ct(e.store.schema,Be()),ge=()=>pt(e.store.schema,e.places?.()??[],{kept:Be(),...e.arrangement?{pages:e.arrangement()}:{}}),Y=ft({sees:t=>e.store.seenBy(e.principal).graph.has(t),places:ge,lists:Ue,schema:e.store.schema,...e.onNavigate?{onNavigate:e.onNavigate}:e.goTo?{onNavigate:t=>kt(e.goTo(),t)}:{},...e.hrefOf?{hrefOf:e.hrefOf}:!e.onNavigate&&e.goTo?{hrefOf:t=>xt(e.goTo(),t)}:{},onLost:t=>{B?.postMessage({type:"notice",text:t}),e.onProblem?.(t)}}),j=new Set,Fe=new Set,J,$e=!1,ze=()=>{$e||($e=!0,vr().then(({createGuestMedia:t})=>{G||(J=t(p,{view:`"${o.title??o.name}"`,pictures:o.pictures!==void 0,shown:()=>x,...e.file?{file:e.file}:{},onProblem:s=>{B?.postMessage({type:"notice",text:s}),e.onProblem?.(s)}}),J.refresh(y))},()=>e.onProblem?.(`The view "${o.title??o.name}" places a video or a full-screen viewer, and the host's player could not be loaded.`)))},qe=!1,Xe=!1,ne=new Map,Ye=()=>{qe||!o.accepts?.length||(qe=!0,br().then(({createGuestDrops:t})=>{G||($=t(p,{shadow:y,manifest:o,store:e.store,principal:e.principal,files:()=>e.files?.(),shown:()=>j,hears:()=>Xe,idOf:s=>k?.renderer.idOf(s),send:ee,change:(s,v)=>{if(!b)return{ok:!1,reason:"refused",message:"The view has gone."};let K=b.change(s,v);return m(),K},handed:(s,v)=>ne.set(s.href,{file:s,drop:v}),onProblem:s=>{B?.postMessage({type:"notice",text:s}),e.onProblem?.(s)},onBusy:()=>te()}),$.refresh())},()=>e.onProblem?.(`The view "${o.title??o.name}" takes files, and the host's drop could not be loaded.`)))},oe,Je=[],Qe=!1,Xt=t=>{Je=t,oe?.bind(t),!(Qe||t.length===0)&&(Qe=!0,kr().then(({createGuestGestures:s,unheardWords:v})=>{if(!G){if(o.gestures!==!0){let K=v(o.title??o.name);return B?.postMessage({type:"notice",text:K}),e.onProblem?.(K)}oe=s(y,{root:()=>y.querySelector("[data-graview-view-root]")??void 0,idOf:K=>k?.renderer.idOf(K),send:ee}),oe.bind(Je)}},()=>{}))},Yt=t=>{let s=e.store.seenBy(e.principal).graph;for(let v of j){let K=s.getNode(v);for(let _ of Object.values(K??{}))for(let u of ht(_))if(u.href===t)return u}},Ze=t=>{if(t.localName==="graview-video")return ze();t.hasAttribute("data-lightbox")&&(t.setAttribute("aria-haspopup","dialog"),ze())};Promise.all([yr(),hr()]).then(([{createOpenDrawing:t,handedLinks:s,judgeLink:v,linkRefusedWords:K},{createPressReader:_,createSaver:u,fillPrefills:N,judgePress:I,markPresses:H,prefillOf:se,quietPictures:Jt}])=>{if(G)return;let Q=_(),nt=(l,O)=>{let V=k?.renderer.idOf(l);V!==void 0&&ee({type:"dom-event",target:V,event:"acted",pressed:O})},we=u({reader:Q,save:(l,O)=>{if(!b)return;let V=b.pressed(I(e.store,o,j,l));m(),nt(O,{as:l.as,...V})}}),ot=()=>we.flush();p.addEventListener("pagehide",ot),R=()=>{p.removeEventListener("pagehide",ot),we.flush()};let Qt=new WeakSet;je=()=>{Y.refresh(y),H(y),Jt(y),N(y,Q,Qt,l=>se(e.store,e.principal,o,j,l)),J?.refresh(y),$?.refresh()};let st,it=new Set,Zt=()=>(st!==x&&([st,it]=[x,s(x)]),it),at=new Set;k=t(y,{origin:e.origin??p.location.origin,link:l=>v(l,{handed:Zt(),...e.links?{origins:e.links.origins}:{}}),...e.asset?{asset:e.asset}:{},...e.images?{imageOrigins:e.images.origins}:{},...o.pictures?{picture:l=>F?.drawn(l)}:{},onRefused:l=>{if(l.reason==="url"&&l.element==="a"&&l.address!==void 0&&!at.has(l.address)){at.add(l.address);let V=K(l.address,e.links?.origins);return B?.postMessage({type:"notice",text:V}),e.onProblem?.(V)}if(l.reason!=="url"||l.element!=="img"||l.address===void 0||Fe.has(l.address))return;Fe.add(l.address);let O=yt(l.address,{...e.images?{origins:e.images.origins}:{},assets:e.asset!==void 0},l.length);B?.postMessage({type:"notice",text:O}),e.onProblem?.(O)},...e.limits?.maxNodes!==void 0?{maxNodes:e.limits.maxNodes}:{},onOverBudget:()=>C("nodes"),send:ee,onFieldSet:l=>Q.filled(l),onAttribute:(l,O)=>{(O==="data-record"||O==="data-place")&&Y.link(l),O==="data-lightbox"&&Ze(l),O==="data-drop"&&Ye()},decorate:l=>{(l.hasAttribute("data-record")||l.hasAttribute("data-place"))&&Y.link(l),Ze(l),l.hasAttribute("data-drop")&&Ye()},before:(l,O,V)=>{Q.heard(l,O),we.heard(l,O,V),Y.pressed(l,O,V);let ve=O.closest("a[href]");ve&&V.contains(ve)&&!ve.hasAttribute("data-graview-link")&&l.type==="click"&&l.stopPropagation();let ie=O.closest("[data-lightbox]"),dt=l.type==="keydown"?l.key:void 0;if(ie&&V.contains(ie)&&l.isTrusted&&(l.type==="click"||(dt==="Enter"||dt===" ")&&ie.localName!=="button")&&(l.preventDefault(),l.stopPropagation(),J?.open(ie)),$?.before(l,O,V))return!1;let be=Q.press(l,O,V);if(!be||!b)return;l.stopPropagation(),l.type==="keydown"&&l.preventDefault();let er=b.pressed(I(e.store,o,j,be));m();let lt={as:be.as,...er},tr=O.closest("[data-act]");return queueMicrotask(()=>nt(tr,lt)),{pressed:lt}}}),Ne();for(let l of c.splice(0))me(l);w(),te()},()=>C("start","the view's drawing could not be loaded"));let ye=t=>S=ue(p,{source:t,name:o.name,limiter:P,readyMs:e.limits?.readyMs??5e3,silentMs:e.limits?.silentMs??5e3,onDropped:()=>W.dropped+=1,onStop:(s,v)=>C(s,v),onError:s=>{De||C("error",s)},onReady:(s,v,K)=>{B=v,g=Vt(Ht(p,K)),Object.assign(M,Dt(D,g)),zt();let _=de({store:e.store,principal:e.principal,view:o.name,nonce:s,send:u=>{u.type==="props"&&typeof u.push=="number"&&(X.set(u.push,q.now()),te()),v.postMessage(u)},props:()=>{let u=Se(e.store,e.principal,{manifest:o,...e.input?{input:e.input()}:{},theme:pe(),places:ut(ge()),...L?{computed:L}:{}}),N=j;return j=new Set([...u.node?[u.node.id]:[],...(u.nodes??[]).map(I=>I.id)]),x&&(N.size!==j.size||[...j].some(I=>!N.has(I)))&&k?.fade(),x=u,u},...F?{hand:F.hand}:{},judgeAct:(u,N)=>{let I=vt(e.store,o,u,N,{shown:j,file:H=>ne.get(H)?.file??Yt(H),dropped:H=>ne.get(H)?.drop});if(I.ok)for(let H of I.spent??[])ne.delete(H);return I},onHears:u=>{u.includes("drop")&&(Xe=!0)},onGestures:Xt,onClicks:u=>Nt(f,u),onRender:u=>{De=!0,me(["render",u])},onPushed:(u,N)=>{if(X.delete(u),N>=M.pushMs)return C("slow");He=!0,te()},onFlood:()=>C("flood"),onStyle:u=>me(["style",u]),places:()=>[...new Set([...ge().map(u=>u.as),...Ue().map(u=>u.slug)])],...e.limits?{limits:e.limits}:{},limiter:P});b=_,v.onmessage=({data:u})=>{if(!S?.answer(u)&&(_.receive(u),m(),!G&&u?.nonce===s&&u.type==="navigate")){let N={...u.where!==void 0?{where:u.where}:{},...u.section!==void 0?{section:u.section}:{}},I=typeof u.place=="string"?{place:u.place,...N}:typeof u.to=="string"&&{record:u.to,...N};I&&Y.go(I)}},fe()}}),et=o.pictures!==void 0||xe(e.store,o),tt=()=>Promise.all([$t.catch(()=>Promise.reject(new Error("the view's pictures could not be loaded"))),Ft.catch(()=>Promise.reject(new Error("the view's computed values could not be worked out")))]),rt=t=>{"source"in t?(et?Promise.all([Te(t.source),tt()]).then(([s])=>s):Te(t.source)).then(s=>{G||ye({script:s})},s=>C("start",s instanceof Error&&s.message.startsWith("the view's")?s.message:"the view's runtime could not be loaded")):et?tt().then(()=>{G||ye(t)},s=>C("start",s instanceof Error?s.message:"the view's pictures could not be loaded")):ye(t)};return typeof z=="function"?Rt(z).then(t=>{if(G)return;let s=Le(t);s?C(...s):rt(t)},t=>C("source",`Its code did not arrive${t instanceof Error&&t.message?`: ${t.message}`:""}.`)):rt(z),he();function he(){return{element:f,shadow:y,get worker(){return S?.worker},update:()=>{b&&fe()},get stats(){return m(),W},get refused(){return k?.refused??[]},get contentHeight(){return d},get pace(){return g},dispose(){G=!0,Oe(),i?.disconnect(),k?.dispose(),f.remove(),A?.remove()}}}}var jt="graview-guest-kit";function rn(r,e){let a=r.ownerDocument,p=a.defaultView;if(!a.getElementById(jt)){let S=a.createElement("style");S.id=jt,S.textContent=We,a.head.appendChild(S)}let o=a.createElement("div");o.className="graview-guest",o.setAttribute("role","group"),o.setAttribute("aria-label",e.title??e.view),o.setAttribute("data-guest-view",e.view),r.appendChild(o);let f={applied:0,refused:0,dropped:0},y=ae(e.limits),A=ce(()=>e.limits?.drawMs??100,()=>p.performance.now()),W,P,M,D=!1,g={applied:0,refused:0,dropped:0},x=()=>{if(!W)return;let S=W.stats;f.applied+=S.applied-g.applied,f.refused+=S.refused-g.refused,f.dropped+=S.dropped-g.dropped,g={...S}},L=()=>{x(),W?.dispose(),W=void 0,M?.stop()},b=(S,k)=>{D||(D=!0,L(),P?.dispose(),e.onFailure?.(S,k))};return M=ue(p,{source:e.worker,name:e.view,limiter:y,readyMs:e.limits?.readyMs??5e3,silentMs:e.limits?.silentMs??5e3,onDropped:()=>f.dropped+=1,onStop:(S,k)=>b(S,k),onReady:(S,k)=>{let G=Ae(o,{...e.kit?{kit:e.kit}:{},...e.links?{links:e.links}:{},onEvent:(c,m)=>k.postMessage({type:"event",listener:c,...m!==void 0?{detail:m}:{}}),...e.limits?.maxNodes!==void 0?{maxNodes:e.limits.maxNodes}:{},onOverBudget:()=>b("budget")});P=G;let n=de({store:e.store,principal:e.principal,view:e.view,nonce:S,send:c=>k.postMessage(c),onRender:c=>{A.draw(m=>G.apply(c,m))||b("slow")},...e.input?{input:e.input}:{},...e.onNavigate?{onNavigate:e.onNavigate}:{},onSize:e.onSize??(c=>o.style.minHeight=`${c}px`),...e.limits?{limits:e.limits}:{},limiter:y});W=n,k.onmessage=c=>{M?.answer(c.data)||(n.receive(c.data),x())},n.push()}}),{element:o,get worker(){return M?.worker},update:()=>W?.push(),get stats(){return x(),f},get refused(){return P?.refused??[]},dispose(){D=!0,L(),P?.dispose(),o.remove()}}}export{Ee as GUEST_KIT,We as GUEST_KIT_CSS,Me as KIT_LINK_TARGETS,Kt as KIT_TONES,Ae as createKitRenderer,_t as hostAttribute,Lt as kitValue,rn as mountGuestWorker,Tr as mountWorkerView};
@@ -1,2 +1,2 @@
1
- var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{a as Ge}from"./chunk.BJUUSIQY.js";import{a as Ke}from"./chunk.PZQNR4KZ.js";import{a as Ve}from"./chunk.T6WHGKWR.js";import{a as Je}from"./chunk.5STU3KYG.js";import{a as pe}from"./chunk.ZN3PUM2I.js";import{c as ue}from"./chunk.AI34V6WV.js";import{E as Oe,G as hn,J as _e,P as We,T as Ue,ba as ze}from"./chunk.M7RESZB6.js";import{$b as De,Db as je,ga as B,id as He,ja as ce,jc as fe,lc as Le,ma as W,pa as Ne,ra as G,sd as qe,ud as Be}from"./chunk.DZZL5IDD.js";import{j as ee}from"./chunk.FQLNBIQ5.js";import{b as xe}from"./chunk.AJZBJBMO.js";var kn=["search-miss","unanswered","refused","tool-invalid"];var _n=new RegExp("[\\u0000-\\u001f\\u007f-\\u009f\\u200b-\\u200f\\u2028-\\u202e\\u2066-\\u2069]","g");var K=e=>e.onBehalfOf?K(e.onBehalfOf):e.id!==void 0?`${e.kind}:${e.id}`:`${e.kind}:?`,ve=e=>e.toLowerCase().replace(/\s+/g," ").replace(/^[\s\p{P}]+|[\s\p{P}]+$/gu,"");var bn=new Set("a an and are at be by can do does for from has have how i in is it me my of on or our the their there this to was we what when where which who why will with you your".split(" "));function ne(e,n,t,i,o){let r=new Map;for(let f of e){let d=n(f);if(d===void 0)continue;let c=r.get(d)??{first:f,people:new Set,times:0,last:f};c.people.add(K(f.by)),c.times+=1,c.last=f,r.set(d,c)}return[...r.entries()].filter(([,f])=>f.people.size>=i).sort(([f,d],[c,a])=>a.people.size-d.people.size||a.times-d.times||f.localeCompare(c)).slice(0,o).map(([f,d])=>({...t(d.last,f),people:d.people.size,times:d.times}))}function wn(e,n={}){let t=Math.max(1,n.minPeople??2),i=n.most??12,o=n.reader?K(n.reader):void 0,r=e.filter(a=>!qe(a.by)&&(o===void 0||K(a.by)!==o)),f=Object.fromEntries(kn.map(a=>{let s=r.filter(u=>u.type===a);return[a,{events:s.length,people:new Set(s.map(u=>K(u.by))).size}]})),d=[],c=new Map;for(let a of r){let s=a.type==="search-miss"?a.words:a.type==="unanswered"?a.question:void 0;if(s!==void 0)for(let u of new Set(ve(s).split(/[^\p{L}\p{N}]+/u))){if(u.length<3||bn.has(u))continue;let g={...a,id:`${a.id}:${u}`};d.push(g),c.set(g,u)}}return{events:r.length,people:new Set(r.map(a=>K(a.by))).size,byType:f,searches:ne(r,a=>a.type==="search-miss"&&ve(a.words)||void 0,(a,s)=>({words:s}),t,i),questions:ne(r,a=>a.type==="unanswered"&&ve(a.question)||void 0,(a,s)=>({question:s}),t,i),words:ne(d,a=>c.get(a),(a,s)=>({word:s}),t,i),refusals:ne(r,a=>a.type==="refused"?`${a.act}|${a.code}`:void 0,a=>({act:a.act,code:a.code}),t,i),tools:ne(r,a=>a.type==="tool-invalid"?`${a.tool}|${a.act??""}`:void 0,a=>{let s=a;return{tool:s.tool,...s.act?{act:s.act}:{},...s.then?{then:s.then}:{}}},1,i)}}var Ye=e=>e.length>3&&e.endsWith("s")&&!e.endsWith("ss")?e.slice(0,-1):e;function An(e){let n=new Set,t=i=>{for(let o of i.toLowerCase().split(/[^\p{L}\p{N}]+/u))o.length>0&&n.add(Ye(o))};for(let i of e.kinds){let o=e.tryDefinition(i);t(i),t(G(o,i)),t(W(e,i));for(let r of[...o?.aliases??[],...Object.values(o?.fieldAliases??{}).flat()])t(r);for(let r of Object.keys(o?.fields?.shape??{}))t(r),t(B(r))}return n}function Qe(e,n,t={}){let i=wn(e,{most:8,...t}),o=An(n),r=i.searches.filter(s=>!s.words.split(/[^\p{L}\p{N}]+/u).some(u=>u.length>0&&o.has(Ye(u)))).map(s=>({words:s.words,people:s.people})),f=i.questions.map(s=>({question:s.question,people:s.people})),d=i.tools.map(s=>({tool:s.tool,...s.act?{act:s.act}:{},...s.then?{then:s.then}:{},times:s.times})),c=s=>`${s} ${s===1?"person":"people"}`;return{said:[...r.length>0?[`Searched for, found nothing, and nothing here is called it: ${r.map(s=>`\u201C${s.words}\u201D (${c(s.people)})`).join(", ")}.`]:[],...f.length>0?[`Asked and not answered: ${f.map(s=>`\u201C${s.question}\u201D (${c(s.people)})`).join(", ")}.`]:[],...d.length>0?[`Tool calls refused as invalid: ${d.map(s=>`${s.tool}${s.act?` (${s.act})`:""} ${s.times===1?"once":`${s.times} times`}${s.then?`, then worked as ${s.then}`:""}`).join("; ")}.`]:[]].join(`
2
- `),unknownWords:r,questions:f,toolMistakes:d}}var Sn=e=>/^(?:aggregate|kind):([^,]+)$/.exec(e)?.[1];function Xe(e,n){let t=e.about??[];if(e.field!==void 0&&e.on!==void 0&&n(e.on))return{on:"field",id:e.on,field:e.field};let i=t.filter(n);if(i.length>1)return{on:"selection",ids:i};if(e.on!==void 0&&n(e.on))return{on:"record",id:e.on};if(i.length===1)return{on:"record",id:i[0]};let o=[e.on,...t].map(r=>r===void 0?void 0:Sn(r)).find(r=>r!==void 0);return e.place!==void 0?{on:"lens",place:e.place,...o?{kind:o}:{}}:o!==void 0?{on:"list",kind:o}:{on:"place",place:"home"}}var Q=e=>e.on==="record"||e.on==="field"?[e.id]:e.on==="selection"?e.ids:e.on==="act"&&e.id!==void 0?[e.id]:[],ye=(e,n)=>e.tryDefinition(n)?.fields?.shape??{},Y=(e,n)=>e.tryDefinition(n)?.edges??{},ge=(e,n)=>new Set(e.tryDefinition(n)?.display?.hide??[]),L=(e,n)=>ce(e.tryDefinition(n.kind),n),$e=(e,n,t)=>Ne(e.tryDefinition(n),t)||B(t),Ce=e=>typeof e=="boolean"?e?"yes":"no":String(e);function me(e,n){let t=e.kindsKeptFrom(n);return new Set(e.schema.kinds.filter(i=>!t.has(i)))}function Re(e,n,t,i){if(!e.permits(n,t).ok)return!1;if(!i)return!0;try{return e.previewAll([n],{author:t}).ops.length>0}catch{return!1}}function he(e,n,t){let i=e,{principal:o}=t,r=t.each??8,f=ee(i)?.store??i,d=f.seenBy(o),c=f.schema,a=me(f,o),s=l=>{let h=d.graph.getNode(l);return h&&a.has(h.kind)?h:void 0},u=f.allMutations(),g=new Map(u.map(l=>[l.name,l])),b=[],C=new Set,A=l=>{C.has(l.id)||(C.add(l.id),b.push(l))},m=l=>l.slice(0,r),x=Q(n).filter(l=>s(l)!==void 0);if(Q(n).length>0&&x.length===0)return{target:n,candidates:[]};let O=x.length===1?s(x[0]):void 0,k=O?.kind??(n.on==="list"?n.kind:n.on==="lens"?n.kind??t.places?.find(l=>l.as===n.place)?.kind:void 0)??(n.on==="selection"?s(x[0])?.kind:void 0);if(k!==void 0&&!a.has(k))return{target:n,candidates:[]};let p=(l,h)=>`act:${l}${Object.keys(h).length>0?`:${Object.values(h).map(R=>String(R)).join(",")}`:""}`,w=(l,h,R,E,$)=>{l.destructive||Object.values(h).some(y=>typeof y=="string"&&f.graph.has(y)&&s(y)===void 0)||Re(f,{name:l.name,args:{...h}},o,E.length===0)&&A({type:"act",id:p(l.name,h),label:R,description:$??l.description??R,mutation:l.name,args:h,asks:E})};if(n.on!=="place"||t.acts)if(t.acts)for(let l of t.acts){let h=g.get(l.mutation);!h||l.destructive||n.on==="act"&&l.mutation!==n.act||w(h,l.args,l.label,(l.open??[]).filter(R=>!R.optional).map(R=>R.name),l.why)}else{let l=O?[O]:[];for(let h of u){if(n.on==="act"&&h.name!==n.act)continue;let R=h.input.shape??{},E=$=>Object.entries(R).filter(([y,v])=>y!==$&&v.safeParse?.(void 0).success===!1).map(([y])=>y);if(h.subject)for(let $ of l)fe(c,h).includes($.kind)&&w(h,{[h.subject.arg]:$.id},`${h.title??B(h.name)}: ${L(c,$)}`,E(h.subject.arg));else k!==void 0&&(h.creates??[]).includes(k)&&w(h,{},h.title??B(h.name),E(void 0))}}let T=b.filter(l=>l.type==="act");b.splice(0,b.length,...m(T));let F=(l,h)=>{let R=Le(c,u).get(l.kind),E=ye(c,l.kind),$=ge(c,l.kind),y=[];for(let[v,D]of Object.entries(E)){if(h!==void 0?v!==h:$.has(v)||l[v]!==void 0)continue;let j=pe(D),J=j?.type==="enum"&&!j.multiple?j.options??[]:j?.type==="boolean"?[!0,!1]:[];if(J.length===0)continue;let _=(R?.get(v)??[]).map(N=>g.get(N)).find(N=>N?.subject!==void 0&&Re(f,{name:N.name,args:{[N.subject.arg]:l.id,[v]:J.find(Se=>Se!==l[v])??J[0]}},o,!0));if(_?.subject)for(let N of J)l[v]!==N&&y.push({type:"fill",id:`fill:${l.id}:${v}:${Ce(N)}`,label:`${$e(c,l.kind,v)}: ${Ce(N)}`,description:`Set ${$e(c,l.kind,v).toLowerCase()} of ${L(c,l)} to ${Ce(N)}`,record:l.id,field:v,value:N,call:{name:_.name,args:{[_.subject.arg]:l.id,[v]:N}}})}for(let[v,D]of Object.entries(Y(c,l.kind))){if(h!==void 0&&v!==h)continue;let j=D.to==="*"?[...a]:D.to.filter(I=>a.has(I)),J=new Set(d.graph.out(l.id,v).map(I=>I.id)),_=u.find(I=>(I.connects??[]).includes(v)&&I.subject!==void 0&&fe(c,I).includes(l.kind));if(!_?.subject)continue;let N=De(_.input).find(I=>I.name!==_.subject.arg);if(!N)continue;let Se=j.flatMap(I=>N.kinds.length===0||N.kinds.includes(I)?d.graph.nodesOfKind(I):[]).filter(I=>I.id!==l.id&&!J.has(I.id)&&s(I.id)!==void 0);for(let I of m(Se)){let Me={name:_.name,args:{[_.subject.arg]:l.id,[N.name]:I.id}};Re(f,Me,o,!0)&&y.push({type:"fill",id:`fill:${l.id}:${v}:${I.id}`,label:`${B(v)}: ${L(c,I)}`,description:`Link ${L(c,l)} to ${L(c,I)}${D.description?` as ${D.description}`:""}`,record:l.id,field:v,value:I.id,call:Me})}}return y};if(n.on==="field"&&O)for(let l of F(O,n.field))A(l);else if(O&&n.on==="record")for(let l of m(F(O)))A(l);let q=l=>{let h=W(c,l).toLowerCase(),R=[{type:"panel",id:`panel:${l}:list`,label:`A list of ${h}`,description:`Every ${G(c.tryDefinition(l),l).toLowerCase()} this viewer may see, as a list`,panel:{lens:"blocks",kind:l}}],E=ge(c,l);for(let[$,y]of Object.entries(ye(c,l))){if(E.has($))continue;let v=pe(y),D=$e(c,l,$).toLowerCase();if(v?.type==="enum")R.push({type:"panel",id:`panel:${l}:group:${$}`,label:`${V(h)} by ${D}`,description:`A list of ${h} grouped by ${D}`,panel:{lens:"blocks",kind:l,group:$}}),R.push({type:"panel",id:`panel:${l}:columns:${$}`,label:`Columns of ${h} by ${D}`,description:`${V(h)} in a column for each ${D}`,panel:{lens:"columns",kind:l,column:$}});else if(v?.type==="number"||v?.type==="integer"||v?.type==="date"||v?.type==="datetime"){let j=v.type==="date"||v.type==="datetime";R.push({type:"panel",id:`panel:${l}:sort:${$}`,label:`${V(h)} by ${D}`,description:`A list of ${h}, the ${j?"latest":"highest"} ${D} first`,panel:{lens:"blocks",kind:l,sort:{by:$,direction:"desc"}}}),j&&R.push({type:"panel",id:`panel:${l}:calendar:${$}`,label:`A calendar of ${h}`,description:`${V(h)} on a calendar by ${D}`,panel:{lens:"calendar",kind:l,start:$}})}}return R},H=n.on==="place"?[...a]:k!==void 0?[k]:[];for(let l of H)for(let h of m(q(l)))A(h);for(let l of m((t.places??[]).filter(h=>h.kind===void 0?n.on==="place":a.has(h.kind)&&(n.on==="place"||h.kind===k))))n.on==="lens"&&l.as===n.place||A({type:"place",id:`place:${l.as}`,label:l.title,description:`Go to ${l.title}`,place:l.as});if(O){let l=[];for(let[h,R]of Object.entries(Y(c,O.kind)))for(let E of d.graph.out(O.id,h))s(E.id)&&l.push({type:"record",id:`record:${E.id}`,label:L(c,E),description:`${V(R.description??B(h))}: ${L(c,E)}`,record:E.id,relation:h});for(let h of c.kinds)for(let[R,E]of Object.entries(Y(c,h)))if(!(E.to!=="*"&&!E.to.includes(O.kind)))for(let $ of d.graph.in(O.id,R))$.kind===h&&s($.id)&&l.push({type:"record",id:`record:${$.id}`,label:L(c,$),description:`${V(E.inverse??B(R))}: ${L(c,$)}`,record:$.id,relation:R});for(let h of m(l))A(h)}else if(n.on==="list"||n.on==="lens")for(let l of m(k!==void 0?d.graph.nodesOfKind(k):[]))s(l.id)&&A({type:"record",id:`record:${l.id}`,label:L(c,l),description:`Open ${L(c,l)}`,record:l.id});else if(n.on==="selection")for(let l of x){let h=s(l);A({type:"record",id:`record:${l}`,label:L(c,h),description:`Open ${L(c,h)}`,record:l})}return{target:n,candidates:b}}var V=e=>e&&`${e[0].toUpperCase()}${e.slice(1)}`,xn={columns:["board","kanban","column","lane","pipeline","stage","funnel"],board:["board","map","floor","layout","seat","slot"],calendar:["calendar","schedule","date","due","month","week","agenda","deadline","day"],timeline:["timeline","gantt","schedule","roadmap","span"],coverage:["coverage","matrix","grid","gap"],plan:["plan","floor","map","region","area"],blocks:["list","table","summary","overview","dashboard","card"]},On=new Set(["a","an","the","of","for","my","our","me","us","to","with","and","in","on","by","that","which","i","we","want","need","show","open","go","draw","make","new","view","views","panel","panels","page","lens","please","all","every","some","see","can","could","would","like","one","what","is","are","do","does","here","there","how","it","this","these","those"]),te=e=>e.length>3&&e.endsWith("ies")?`${e.slice(0,-3)}y`:e.length>3&&e.endsWith("s")&&!e.endsWith("ss")?e.slice(0,-1):e,Te=e=>e.toLowerCase().normalize("NFKD").replace(/[̀-ͯ]/g,"").split(/[^a-z0-9]+/).filter(Boolean);function Ze(e,n,t){let i=e,o=ee(i)?.store??i,r=o.schema,f=me(o,t.principal),d=o.seenBy(t.principal),c=Q(n),a=new Set;for(let p of c){let w=d.graph.getNode(p)?.kind;w!==void 0&&f.has(w)&&a.add(w)}if(c.length>0&&a.size===0)return[];if(n.on==="list"&&a.add(n.kind),n.on==="lens"){let p=n.kind??t.places.find(w=>w.as===n.place)?.kind;p!==void 0&&a.add(p)}let s=new Map;for(let p of r.kinds){if(!f.has(p))continue;let w=r.tryDefinition(p);for(let T of[p,G(w,p),W(r,p)])for(let F of Te(T))s.set(te(F),p)}let u=Te(t.said??"").filter(p=>!On.has(p)),g=new Set,b=[];for(let p of u){let w=s.get(te(p));w!==void 0?g.add(w):b.push(te(p))}let C=g.size>0?g:a;if((t.said??"").trim()!==""&&u.length===0)return[];if(C.size===0&&u.length===0)return[];let A=[];t.places.forEach((p,w)=>{if(p.hidden||n.on==="lens"&&p.as===n.place)return;let T=p.over??(p.kind!==void 0?[p.kind]:[]);if(T.length>0&&!T.some(H=>f.has(H)))return;let F=T.some(H=>C.has(H)),q=!F&&(p.reads??[]).some(H=>C.has(H));C.size>0&&!F&&!q||A.push({place:p,own:F,reads:q,at:w})});let m=p=>new Set(Te(p.title).map(te)),x=new Set(b.filter(p=>A.some(({place:w})=>m(w).has(p)))),O=[];for(let{place:p,own:w,reads:T,at:F}of A){let q=m(p),H=new Set((xn[p.lens??""]??[]).map(te)),l=b.filter($=>q.has($)||H.has($)&&!x.has($)).length,h=b.length-l;if(b.length>0&&l===0)continue;let R=!T&&h===0?"full":"partial",E=(w?4:T?2:1)+l*2-h+(R==="full"?1:0);O.push({view:{place:p.as,title:p.title,...p.kind!==void 0?{kind:p.kind}:{},fit:R},score:E,at:F})}return O.filter((p,w)=>!O.slice(0,w).some(T=>T.view.place===p.view.place&&T.view.title===p.view.title)).sort((p,w)=>w.score-p.score||p.at-w.at).slice(0,t.most??3).map(p=>p.view)}var Ee=new WeakMap;function vn(e){let n=2166136261;for(let t=0;t<e.length;t++)n^=e.charCodeAt(t),n=Math.imul(n,16777619)>>>0;return n.toString(36)}function $n(e,n){let t=e,i=ee(t)?.store??t,o=i.schema,r=me(i,n),d=i.allMutations().filter(A=>!A.destructive&&i.permits({name:A.name,args:{}},n).ok!==!1),c=`${[...r].join(",")}|${d.map(A=>A.name).join(",")}`,a=Ee.get(o)?.get(c);if(a)return a;let s=[...r].map(A=>{let m=ge(o,A),x={};for(let[w,T]of Object.entries(ye(o,A))){if(m.has(w))continue;let F=pe(T);F&&(x[w]=F.type==="enum"?`enum:${(F.options??[]).join("|")}`:F.type)}let O={};for(let[w,T]of Object.entries(Y(o,A)))O[w]=T.to==="*"?[...r]:T.to.filter(F=>r.has(F));let k=o.tryDefinition(A),p=Object.entries(k?.fieldAliases??{}).filter(([w,T])=>w in x&&T.length>0);return{kind:A,noun:G(o.tryDefinition(A),A),plural:W(o,A),fields:x,relations:O,...k?.aliases&&k.aliases.length>0?{aliases:k.aliases}:{},...p.length>0?{fieldAliases:Object.fromEntries(p)}:{}}}),u=d.map(A=>({name:A.name,title:A.title??B(A.name),...A.subject?{on:fe(o,A).filter(m=>r.has(m))}:{}})),g={kinds:s,acts:u},b={version:vn(JSON.stringify(g)),...g},C=Ee.get(o)??new Map;return C.set(c,b),Ee.set(o,C),b}var Cn=e=>e.name??e.id??e.kind;function en(e,n,t){let i=e,{principal:o}=t,r=ee(i)?.store??i,f=r.seenBy(o),d=r.schema,c=me(r,o),a=p=>{let w=f.graph.getNode(p);return w&&c.has(w.kind)?w:void 0},s=p=>({id:p.id,kind:p.kind,label:L(d,p)}),u=Q(n),g=u.length===1?a(u[0]):void 0,b=g?Object.fromEntries(Object.keys(ye(d,g.kind)).filter(p=>!ge(d,g.kind).has(p)&&g[p]!==void 0&&p!=="label").map(p=>[p,g[p]])):{},C={on:n.on,...g?{record:{...s(g),fields:b}}:{},...n.on==="field"&&g?{field:n.field}:{},...n.on==="list"&&c.has(n.kind)?{kind:n.kind}:{},...n.on==="lens"?{place:n.place,...n.kind&&c.has(n.kind)?{kind:n.kind}:{}}:{},...n.on==="place"?{place:n.place}:{},...n.on==="act"?{act:n.act}:{}},A=[...new Set([...n.on==="selection"?n.ids:[],...t.selection??[]])].flatMap(p=>{let w=a(p);return w?[s(w)]:[]}),m=[];if(g){for(let p of Object.keys(Y(d,g.kind)))for(let w of f.graph.out(g.id,p))a(w.id)&&m.push({...s(w),relation:p,direction:"out"});for(let p of d.kinds)for(let w of Object.keys(Y(d,p)))for(let T of f.graph.in(g.id,w))T.kind===p&&a(T.id)&&m.push({...s(T),relation:w,direction:"in"})}let x=f.batches().filter(p=>!p.ops.every(je)).slice(-(t.recent??6)).reverse().map(p=>({intent:p.intent,at:p.at,by:Cn(p.author)})),O=(t.purpose?.jobs??[]).filter(p=>Ge(p,o.roles)&&c.has(p.kind)).map(p=>({name:p.name,ask:p.ask,kind:p.kind})),k=t.purpose&&(t.purpose.for!==void 0||O.length>0)?{...t.purpose.for!==void 0?{for:t.purpose.for}:{},jobs:O}:void 0;return{...t.place!==void 0?{place:t.place}:{},target:C,selection:A,neighbors:m.slice(0,24),recent:x,schema:$n(r,o),...k?{purpose:k}:{},...t.friction?{friction:Qe(t.friction,d,{reader:o})}:{}}}function ie(e){if(!e.off)return e.fast??(e.decide?{model:e.name??"decide",decide:e.decide}:void 0)}function U(e){if(e.off)return;if(e.thinking)return e.thinking;let n=e.name??"model";if(e.complete){let t=e.complete;return{model:n,think:({system:i,prompt:o})=>t({prompt:o,system:i})}}if(e.turn){let t=e.turn;return{model:n,think:async({system:i,prompt:o})=>({text:await t({system:i,messages:[{role:"user",content:o}],tools:[],call:async()=>({error:"No tools here."})})})}}}var Pe=(e,n,t)=>e?n/1e6*(e.inputPerMillion??0)+t/1e6*(e.outputPerMillion??0):void 0,Ie=()=>`ai-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;function Rn(e,n,t=[]){let i=o=>{let r=e.graph.getNode(o);return r?ce(e.schema.tryDefinition(r.kind),r):"a record"};switch(n.on){case"record":return i(n.id);case"field":return`${i(n.id)} \xB7 ${n.field}`;case"selection":return`${n.ids.length} records`;case"list":return e.schema.tryDefinition(n.kind)?W(e.schema,n.kind):n.kind;case"lens":case"place":return t.find(o=>o.as===n.place)?.title??(n.place==="home"?"Home":n.place);case"act":return n.act}}var nn=e=>e.type!=="act"||e.asks.length===0,be=(e,n)=>({id:e.id,type:e.type,label:e.label,...n!==void 0?{confidence:n}:{}});function X(e,n){let t=n.interaction??Ie(),i=he(n.store,n.target,{principal:n.principal,...n.acts?{acts:n.acts}:{},...n.places?{places:n.places}:{}}),o=en(n.store,n.target,{principal:n.principal,...n.place?{place:n.place}:{},...n.selection?{selection:n.selection}:{},...n.purpose?{purpose:n.purpose}:{}}),r=[];return{id:t,catalog:i,state:o,entry:{id:t,at:new Date().toISOString(),by:n.by??n.principal,target:n.target,targetLabel:Rn(n.store,n.target,n.places)},usage:r,meter:f=>{r.push(f),e.meter?.({...f,interaction:t})}}}async function oe(e,n,t,i){let o=await e.decide(n,t),{inputTokens:r,outputTokens:f}=o.usage,d=Pe(e.price,r,f);return i({tier:"fast",model:e.model,inputTokens:r,outputTokens:f,...d!==void 0?{costUsd:d}:{}}),o.answers}async function re(e,n,t,i,o){let r=await e.think({system:n,prompt:t,state:i.state,catalog:i.catalog}),f=r.usage?.inputTokens,d=r.usage?.outputTokens,c=r.usage?.costUsd??(f!==void 0?Pe(e.price,f,d??0):void 0);return o({tier:"thinking",model:e.model,...f!==void 0?{inputTokens:f}:{},...d!==void 0?{outputTokens:d}:{},...c!==void 0?{costUsd:c}:{}}),Ve(r.text)}function se(e,n){let t=new Map(e.map((i,o)=>[`c${o+1}`,i]));return{question:{type:"choice",instructions:n,criteria:Object.fromEntries([...t].map(([i,o])=>[i,`${o.label} \u2014 ${o.description}`]))},of:i=>t.get(i)}}function ae(e,n,t){if(e?.type!=="choice")return[];let i=e,o=Object.entries(i.probabilities).sort((r,f)=>f[1]-r[1]);return o.some(([r])=>r===i.choice)||o.unshift([i.choice,i.confidence]),o.flatMap(([r,f])=>{let d=n(r);return d?[{candidate:d,confidence:f}]:[]}).slice(0,t)}var M=(e,n,t,i)=>({interaction:{...e.entry,ask:{kind:t,said:n??""},offered:[],outcome:"failed",failed:i,usage:[...e.usage]},offers:[]}),Z="AI isn't on here.";async function tn(e,n,t=3){let i=X(e,n),o=n.said??"Suggest",r=i.catalog.candidates.filter(nn).slice(0,24);if(r.length===0)return{interaction:{...i.entry,ask:{kind:"suggest",said:o},offered:[],outcome:"offered",usage:[]},offers:[]};let f=ie(e),d=U(e),c=[];try{if(f){let{question:a,of:s}=se(r,"Which of these would the person most likely want to do next, here?"),u=await oe(f,{...i.state,candidates:r.map(g=>({id:g.id,type:g.type,says:g.description}))},{next:a},i.meter);c=ae(u.next,s,t)}else if(d){let a=await re(d,'You suggest what a person most likely wants to do next in an app. Answer only JSON: {"pick": [candidate ids, best first]}. Pick only ids from the candidates.',JSON.stringify({state:i.state,candidates:r.map(u=>({id:u.id,says:u.description}))}),i,i.meter);c=(Array.isArray(a?.pick)?a.pick.filter(u=>typeof u=="string"):[]).flatMap(u=>r.filter(g=>g.id===u)).slice(0,t).map(u=>({candidate:u}))}else return M(i,o,"suggest",Z)}catch(a){return M(i,o,"suggest",a instanceof Error?a.message:String(a))}return{interaction:{...i.entry,ask:{kind:"suggest",said:o},offered:c.map(({candidate:a,confidence:s})=>be(a,s)),outcome:"offered",usage:[...i.usage]},offers:c.map(({candidate:a})=>a)}}var Tn=e=>`several:${e}`;async function it(e,n,t=2){let i=X(e,{...n,acts:[]}),o=n.said??"Suggest for the chosen",r=n.target.on==="selection"?n.target.ids.length:1,d=[...n.shared.map(s=>({type:"act",id:Tn(s.id),label:s.label,description:`${s.label}, for all ${r} chosen`,mutation:s.mutation,args:s.args,asks:[]})),...i.catalog.candidates.filter(s=>s.type==="panel"||s.type==="place")].slice(0,24),c=ie(e);if(!c)return M(i,o,"suggest",Z);if(d.length===0)return{interaction:{...i.entry,ask:{kind:"suggest",said:o},offered:[],outcome:"offered",usage:[]},offers:[]};let a;try{let{question:s,of:u}=se(d,`Which of these would the person most likely want to do next with the ${r} records they chose together?`),g=await oe(c,{...i.state,candidates:d.map(b=>({id:b.id,type:b.type,says:b.description}))},{next:s},i.meter);a=ae(g.next,u,t).filter((b,C)=>C===0||b.confidence>=En)}catch(s){return M(i,o,"suggest",s instanceof Error?s.message:String(s))}return{interaction:{...i.entry,ask:{kind:"suggest",said:o},offered:a.map(({candidate:s,confidence:u})=>be(s,u)),outcome:"offered",usage:[...i.usage]},offers:a.map(({candidate:s})=>s)}}var En=.25;async function on(e,n){let t=X(e,n),i=n.said??"Fill in",o=t.catalog.candidates.filter(u=>u.type==="fill"),r=new Map;for(let u of o)r.set(u.field,[...r.get(u.field)??[],u]);if(r.size===0)return{interaction:{...t.entry,ask:{kind:"fill",said:i},offered:[],outcome:"offered",usage:[]},offers:[]};let f=ie(e),d=U(e),c=[];try{if(f){let u=[...r].map(([b,C],A)=>({key:`f${A+1}`,field:b,...se(C,`Which value fits "${b}" best for this record?`)})),g=await oe(f,t.state,Object.fromEntries(u.map(b=>[b.key,b.question])),t.meter);for(let b of u){let C=!Pn(n.store,n.target,b.field)&&In(n.store,n.target,b.field)!=="one";c.push(...ae(g[b.key],b.of,C?3:1).filter((A,m)=>m===0||A.confidence>=.4))}}else if(d){let u=await re(d,`You fill in a record's fields in an app. Answer only JSON: {"fills": [candidate ids]}, at most one per field, only ids from the candidates.`,JSON.stringify({state:t.state,candidates:o.map(C=>({id:C.id,says:C.description}))}),t,t.meter),g=Array.isArray(u?.fills)?u.fills.filter(C=>typeof C=="string"):[],b=new Set;for(let C of g){let A=o.find(m=>m.id===C);A?.type==="fill"&&!b.has(A.field)&&(b.add(A.field),c.push({candidate:A}))}}else return M(t,i,"fill",Z)}catch(u){return M(t,i,"fill",u instanceof Error?u.message:String(u))}let a=t.usage.at(-1)?.model,s=de(n.store,{interaction:t.id,target:n.target,basis:i,...a?{model:a}:{},proposals:c.flatMap(({candidate:u,confidence:g})=>u.type==="fill"?[{id:u.id,label:u.label,said:u.description,call:u.call,record:u.record,field:u.field,...g!==void 0?{confidence:g}:{}}]:[])},n.principal);return{interaction:{...t.entry,ask:{kind:"fill",said:i},offered:s.proposals.map(u=>({id:u.id,type:"fill",label:u.label,...u.confidence!==void 0?{confidence:u.confidence}:{}})),outcome:"offered",usage:[...t.usage]},offers:[],...s.proposals.length>0?{ghost:s}:{}}}function Pn(e,n,t){let i=n.on==="record"||n.on==="field"?n.id:void 0,o=i?e.graph.getNode(i)?.kind:void 0,r=(o?e.schema.tryDefinition(o)?.fields?.shape:void 0)??{};return t in r}function In(e,n,t){let i=n.on==="record"||n.on==="field"?n.id:void 0,o=i?e.graph.getNode(i)?.kind:void 0;return o?e.schema.tryDefinition(o)?.edges?.[t]?.cardinality:void 0}async function rn(e,n){let t=X(e,n),i=n.said??"Add one",o=new Set(n.store.allMutations().filter(s=>(s.creates??[]).length>0).map(s=>s.name)),r=t.catalog.candidates.filter(s=>s.type==="act"&&s.asks.length>0&&o.has(s.mutation));if(r.length===0)return M(t,i,"record","Nothing here makes a record.");let f=U(e);if(!f)return M(t,i,"record",Z);let d;try{let s=await re(f,'You propose one new record for an app by filling in an act. Answer only JSON: {"act": a candidate id, "args": {argument: value}}. Use only the candidates, and fill every argument the act asks for with a value that fits the state.',JSON.stringify({ask:i,state:t.state,candidates:r.map(b=>({id:b.id,says:b.description,asks:b.asks}))}),t,t.meter),u=r.find(b=>b.id===s?.act),g=typeof s?.args=="object"&&s.args!==null?s.args:{};u&&(d={act:u,args:Object.fromEntries(Object.entries(g).filter(([b])=>u.asks.includes(b)))})}catch(s){return M(t,i,"record",s instanceof Error?s.message:String(s))}if(!d)return M(t,i,"record","The model named no act this app has here.");let c=t.usage.at(-1)?.model,a=de(n.store,{interaction:t.id,target:n.target,basis:i,...c?{model:c}:{},proposals:[{id:d.act.id,label:d.act.label,said:d.act.description,call:{name:d.act.mutation,args:{...d.act.args,...d.args}}}]},n.principal);return a.proposals.length===0?M(t,i,"record","What the model proposed could not be made here."):{interaction:{...t.entry,ask:{kind:"record",said:i},offered:a.proposals.map(s=>({id:s.id,type:"act",label:s.said})),outcome:"offered",usage:[...t.usage]},offers:[d.act],ghost:a}}async function sn(e,n){let t=X(e,n),i=n.said??"Make a panel",o=t.catalog.candidates.filter(s=>s.type==="panel");if(o.length===0)return M(t,i,"panel","Nothing here can be drawn as a panel.");let r=ie(e),f=U(e),d;try{if(f){let s=await re(f,'You choose a panel to draw in an app. Answer only JSON: {"panel": a candidate id, "title": a short title}. Choose only among the candidates.',JSON.stringify({ask:i,state:t.state,candidates:o.map(g=>({id:g.id,says:g.description}))}),t,t.meter),u=o.find(g=>g.id===s?.panel);u&&(d={panel:u,...typeof s?.title=="string"&&s.title.trim()?{title:s.title.trim().slice(0,60)}:{}})}else if(r){let{question:s,of:u}=se(o,`Which panel answers this best: ${i}`),g=ae((await oe(r,t.state,{panel:s},t.meter)).panel,u,1)[0];g?.candidate.type==="panel"&&(d={panel:g.candidate,confidence:g.confidence})}else return M(t,i,"panel",Z)}catch(s){return M(t,i,"panel",s instanceof Error?s.message:String(s))}if(!d)return M(t,i,"panel","The model named no panel this app can draw.");let c=d.title??d.panel.label,a={title:c,recipe:{...d.panel.panel,title:c}};return{interaction:{...t.entry,ask:{kind:"panel",said:i},offered:[be(d.panel,d.confidence)],outcome:"drawn",panel:a,usage:[...t.usage]},offers:[d.panel],panel:a}}function Fn(e){return e.off?void 0:e.answer}var Mn=`You answer a person's question about what they are looking at in an app, from the state given and nothing else. Answer only JSON: {"answer": one to three short sentences, "pick": [candidate ids that act on the answer, best first, at most three]}. Pick only ids from the candidates, and none when nothing fits. Never say an id to the person.`;async function ot(e,n){let t=X(e,n),i=n.said.trim(),o=t.catalog.candidates.filter(m=>nn(m)||m.type==="panel"||m.type==="place"||m.type==="record").slice(0,32),r=Fn(e),f=U(e),d=ie(e),c="",a=[],s=m=>m.flatMap(x=>o.filter(O=>O.id===x)).slice(0,3).map(x=>({candidate:x}));try{if(r){let m=await r.answer({said:i,target:n.target,targetLabel:t.entry.targetLabel,state:t.state,catalog:{target:t.catalog.target,candidates:o},...n.follows?{follows:n.follows}:{}}),x=m.usage?.inputTokens,O=m.usage?.outputTokens,k=m.usage?.costUsd??(x!==void 0?Pe(r.price,x,O??0):void 0);t.meter({tier:"thinking",model:r.model,...x!==void 0?{inputTokens:x}:{},...O!==void 0?{outputTokens:O}:{},...k!==void 0?{costUsd:k}:{}}),c=typeof m.text=="string"?m.text.trim():"",a=s(m.pick??[])}else if(f){let m=await re(f,Mn,JSON.stringify({ask:i,about:t.entry.targetLabel,...n.follows?{follows:n.follows}:{},state:t.state,candidates:o.map(x=>({id:x.id,says:x.description}))}),t,t.meter);c=typeof m?.answer=="string"?m.answer.trim():"",a=s(Array.isArray(m?.pick)?m.pick:[])}else if(d&&o.length>0){let{question:m,of:x}=se(o,`Which of these best answers, or acts on: ${i}`),O=await oe(d,{...t.state,asked:i,candidates:o.map(k=>({id:k.id,type:k.type,says:k.description}))},{answer:m},t.meter);a=ae(O.answer,x,3),c=a.length>0?`These fit \u201C${i}\u201D.`:""}else return M(t,i,"ask",Z)}catch(m){return M(t,i,"ask",m instanceof Error?m.message:String(m))}if(!c&&a.length===0){let m=n.target.on==="place"||n.target.on==="lens"?n.target.place:void 0,x=n.target.on==="list"||n.target.on==="lens"?n.target.kind:void 0;return Be(n.store,{type:"unanswered",question:i,...m?{place:m}:{},...x?{kind:x}:{}},n.principal),M(t,i,"ask","The AI had no answer to that here.")}let u=t.usage.at(-1)?.model,g=a.flatMap(({candidate:m,confidence:x})=>{let O=ke(m);return O?[{...O,...x!==void 0?{confidence:x}:{}}]:[]}),b=g.length>0?de(n.store,{interaction:t.id,target:n.target,basis:i,...u?{model:u}:{},proposals:g},n.principal):void 0,C=a.map(({candidate:m})=>m).filter(m=>ke(m)===void 0),A=[...C.map(m=>be(m,a.find(x=>x.candidate===m)?.confidence)),...(b?.proposals??[]).map(m=>({id:m.id,type:m.field!==void 0?"fill":"act",label:m.label,...m.confidence!==void 0?{confidence:m.confidence}:{}}))];return{interaction:{...t.entry,ask:{kind:"ask",said:i},offered:A,outcome:"offered",...c?{answer:c}:{},usage:[...t.usage]},offers:C,...b&&b.proposals.length>0?{ghost:b}:{},...c?{answer:c}:{}}}function de(e,n,t){let i=n.proposals.flatMap(o=>{try{let r=e.previewAll([o.call],{author:t}),f=r.ops.map(d=>d.intent).join("; ");return r.ops.length>0?[{...o,said:f||o.said}]:[]}catch{return[]}});return{...n,proposals:i}}function ke(e){if(e.type==="fill")return{id:e.id,label:e.label,said:e.description,call:e.call,record:e.record,field:e.field};if(e.type==="act"&&e.asks.length===0)return{id:e.id,label:e.label,said:e.description,call:{name:e.mutation,args:{...e.args}}}}function an(e,n,t){let i=n.proposals.filter(r=>t.ids===void 0||t.ids.includes(r.id));if(i.length===0)return{ok:!1,refused:"Nothing was chosen."};let o=i.flatMap(r=>r.confidence===void 0?[]:[r.confidence]);try{let f=e.applyAll(i.map(d=>d.call),{author:t.author,via:`ai:${n.interaction}`,intent:n.basis,lineage:{basis:`Asked \u201C${n.basis}\u201D`,...n.model?{model:n.model}:{},...o.length>0?{confidence:Math.min(...o)}:{},interaction:n.interaction}}).ops[0]?.batch;return f?{ok:!0,batch:f,accepted:i.map(d=>d.id)}:{ok:!1,refused:"That changes nothing now."}}catch(r){return{ok:!1,refused:r instanceof Error?r.message:String(r)}}}function dn(e,n,t){let i=e.ask.kind==="suggest"?n.length>0:e.offered.length>0&&e.offered.every(o=>n.includes(o.id));return{...e,outcome:i?"accepted":"partly",accepted:n,batches:[...e.batches??[],t]}}var ln=e=>({...e,outcome:"dismissed"});var P=xe(hn(),1);var S=xe(Ue(),1);function fn(e,n,t){let i=n.on==="selection"?n.ids:n.on==="record"||n.on==="field"?[n.id]:[],o=i.length>0?Ke(e.store,i,{principal:e.principal,...i.length===1?{focus:i[0]}:{}}).affordances.map(r=>({mutation:r.mutation,label:r.label,args:r.args,open:r.open,why:r.why,...r.destructive?{destructive:!0}:{}})):void 0;return{store:e.store,target:n,principal:e.principal,interaction:Ie(),places:e.places,selection:e.selection,...o?{acts:o}:{},...e.place?{place:e.place}:{},...t?{said:t}:{},...e.app.purpose?{purpose:e.app.purpose}:{}}}async function un(e,n,t){let i=await (__graviewPreload(import.meta.url,["./chunk.ROZTJ6IY.js","./chunk.BIDL7GQD.js","./chunk.G4JJXA63.js","./chunk.M4AYA2PL.js","./chunk.H5S7OL2U.js","./chunk.T6WHGKWR.js","./chunk.XOZU4OFA.js","./chunk.Y2YYH3JN.js","./chunk.Q5WEOX3Q.js","./chunk.CGALLZ54.js","./chunk.WKI5INH7.js","./chunk.NOGGSLVG.js","./chunk.WVUJXDXZ.js","./chunk.SGCW2XRC.js","./chunk.ZN3PUM2I.js","./chunk.QIPASE42.js","./chunk.EVBCEEQ4.js","./chunk.OWT3VVOT.js","./chunk.NHTGAP3G.js","./chunk.NUYA4BWI.js","./chunk.OKZT2QBM.js","./chunk.ACTXR2MI.js","./chunk.DZZL5IDD.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.MGALQLRW.js")),o=i.recipeDraft(n.recipe,{app:e.app,sight:i.draftSight(e.app,e.principal)});if(i.isDraftFailure(o))return o.failed;t?.(),e.seatTalk.setDraft(o,null),e.goTo.draft?.(),pn()}function pn(e=180){if(typeof document>"u")return;let n=document.querySelector('[data-testid="draft-keep"]'),t=document.activeElement,i=!t||t===document.body||t.closest?.("[inert]")!==null;if(n){i&&n.focus();return}e>0&&requestAnimationFrame(()=>pn(e-1))}async function le(e,n,t,i,o){let r=fn(e,t,i),f=n==="suggest"?await tn(e.ai,r):n==="fill"?await on(e.ai,r):n==="record"?await rn(e.ai,r):await sn(e.ai,r);if(f.interaction.outcome==="failed")return n!=="suggest"&&e.desk.record(f.interaction),f;let d=c=>{let a={...f.interaction,outcome:"failed",failed:c};return e.desk.record(a),{...f,interaction:a}};if(n==="fill"||n==="record"){if(!f.ghost||f.ghost.proposals.length===0)return d("Nothing here could be filled in.");o?.(),e.desk.setGhost({ghost:f.ghost}),e.desk.record(f.interaction)}if(n==="panel"&&f.panel){let c=await un(e,f.panel,o);if(c)return d(c);e.desk.record(f.interaction)}return f}var Fe=new WeakMap,Nn=64,cn=new WeakMap;function jn(e){let n=cn.get(e);if(!n){let t=n={n:0};cn.set(e,t),e.subscribe(()=>void(t.n+=1))}return n.n}var yn=(e,n)=>{let t=Q(n);return t.length>0?t.map(i=>e.graph.getNode(i)):[jn(e)]},gn=(e,n,t)=>JSON.stringify({target:n,seat:e.principal,by:t}),mn=(e,n,t)=>{let i=yn(e.store,n);return t.schema===e.store.schema&&t.ai===e.ai&&i.length===t.depends.length&&i.every((o,r)=>o===t.depends[r])};function Dn(e,n,t="menu"){let i=Fe.get(e.store)?.get(gn(e,n,t));return i?.result!==void 0&&mn(e,n,i)?i.result:void 0}function Ln(e,n,t){let i=Fe.get(e.store);i||Fe.set(e.store,i=new Map);let o=gn(e,n,t?.by??"menu"),r=i.get(o);if(r&&mn(e,n,r))return r.result?Promise.resolve(r.result):r.asked;let f=t?t.ask():le(e,"suggest",n),d={schema:e.store.schema,ai:e.ai,depends:yn(e.store,n),asked:f};i.delete(o),i.set(o,d),i.size>Nn&&i.delete(i.keys().next().value);let c=i;return f.then(a=>{a.interaction.outcome!=="failed"?d.result=a:c.get(o)===d&&c.delete(o)}),f}async function Hn(e,n,t,i){let o=n.interaction,r=ke(t);if(r){let f=o.usage?.at(-1)?.model,d=o.offered.find(a=>a.id===t.id)?.confidence,c=de(e.store,{interaction:o.id,target:o.target,basis:`${o.ask.said}: ${t.label}`,...f?{model:f}:{},proposals:[{...r,...d!==void 0?{confidence:d}:{}}]},e.principal);if(c.proposals.length===0){let a="That can't be done now.";return e.desk.record({...o,outcome:"failed",failed:a}),a}i?.(),e.desk.setGhost({ghost:c}),e.desk.record(o);return}if(t.type==="panel"){let f=t.label,d={title:f,recipe:{...t.panel,title:f}},c=await un(e,d,i);return e.desk.record(c?{...o,outcome:"failed",failed:c}:{...o,outcome:"drawn",accepted:[t.id],panel:d}),c}i?.(),t.type==="place"?e.goTo.place(t.place):t.type==="record"&&e.goTo.record(t.record),e.desk.record({...o,outcome:"accepted",accepted:[t.id]})}async function yt(e,n){if(n.ask.kind==="ask")return ue(e.desk,{target:n.target,asked:n.ask.said}),null;let t=n.ask.kind==="panel"||n.ask.kind==="record"?n.ask.kind:"fill";return le(e,t,n.target,n.ask.said)}var z={padding:"5px 10px",fontSize:"0.875rem",borderRadius:8,width:"100%",textAlign:"left",borderWidth:1,borderStyle:"solid",borderColor:"transparent",background:"none",boxShadow:"none"},we={margin:0,padding:"4px 10px",fontSize:"0.8125rem",color:"var(--graview-ink-muted)"};function gt({target:e,close:n}){let t=Je(),i=(0,P.useMemo)(()=>Xe(e,y=>t.store.graph.has(y)),[e,t.store]),o=(0,P.useMemo)(()=>{let y=fn(t,i);return he(t.store,i,{principal:t.principal,places:t.places,...y.acts?{acts:y.acts}:{}})},[t,i]),r=o.candidates.some(y=>y.type==="fill"),f=o.candidates.some(y=>y.type==="panel"),d=(0,P.useMemo)(()=>f?Ze(t.store,i,{principal:t.principal,places:t.places,most:1}):[],[f,t,i]),c=(0,P.useMemo)(()=>new Set(t.store.allMutations().filter(y=>(y.creates??[]).length>0).map(y=>y.name)),[t.store]),a=U(t.ai)!==void 0&&o.candidates.some(y=>y.type==="act"&&y.asks.length>0&&c.has(y.mutation)),s=Oe(t.ai),u=Dn(t,i),g=JSON.stringify(i),[b,C]=(0,P.useState)(!1),[A,m]=(0,P.useState)(null),[x,O]=(0,P.useState)(s&&u===void 0);(0,P.useEffect)(()=>{if(u!==void 0||!(s||b))return;let y=!0;return O(!0),Ln(t,i).then(v=>{y&&(m(v),O(!1))}),()=>{y=!1}},[g,b]);let k=u??A,p=(k?.offers??[]).filter(y=>!(y.type==="place"&&d.some(v=>v.place===y.place))).slice(0,Math.max(0,3-d.length)),w=k?.interaction.outcome==="failed"?k.interaction.failed??"The AI could not suggest anything here.":null,T=(0,P.useRef)(!1),F=(0,P.useRef)(null);(0,P.useLayoutEffect)(()=>{k===null||!T.current||(T.current=!1,F.current?.querySelector("button")?.focus())},[k]);let q=(0,P.useRef)(!0);(0,P.useEffect)(()=>()=>{q.current=!1},[]);let[H,l]=(0,P.useState)(!1),[h,R]=(0,P.useState)(null),E=y=>{if(H)return;l(!0),R(null);let v=!1;y(()=>{v=!0,n()}).then(j=>{q.current&&(l(!1),j?R(j):v||n())},j=>{q.current&&(l(!1),R(j instanceof Error?j.message:String(j)))})},$=y=>y.interaction.outcome==="failed"?y.interaction.failed??"The AI could not do that here.":void 0;return(0,S.jsxs)("div",{ref:F,"data-testid":"inline-ai",style:{display:"grid",gap:2},children:[x&&!b?(0,S.jsx)("p",{role:"status","data-testid":"inline-ai-thinking",style:we,children:"Thinking\u2026"}):H?(0,S.jsx)("p",{role:"status","data-testid":"inline-ai-asking",style:we,children:"Asking\u2026"}):h?(0,S.jsx)("p",{role:"alert","data-testid":"inline-ai-failed",style:{...we,color:"var(--graview-warn)"},children:h}):w?(0,S.jsx)("p",{role:"status",style:we,children:w}):null,(0,S.jsxs)("ul",{style:{margin:0,padding:0,listStyle:"none",display:"flex",flexDirection:"column",gap:2},children:[p.map(y=>(0,S.jsx)("li",{children:(0,S.jsxs)("button",{type:"button","data-menu-item":`ai-offer:${y.id}`,"data-ai-offer":y.id,"data-ai-offer-type":y.type,onClick:()=>E(v=>Hn(t,k,y,v)),style:z,children:[y.label,(0,S.jsxs)("span",{style:{color:"var(--graview-ink-faint)"},children:[" \xB7 ",y.type==="panel"?"a panel":y.type==="place"?"go there":y.type==="record"?"open it":"suggested"]})]})},y.id)),!s&&k===null?(0,S.jsx)("li",{children:(0,S.jsx)("button",{type:"button","data-menu-item":"ai-suggest","aria-disabled":b||void 0,onClick:y=>{b||(T.current=document.activeElement===y.currentTarget,C(!0))},style:z,children:b?"Thinking\u2026":"Suggest\u2026"})}):null,r?(0,S.jsx)("li",{children:(0,S.jsx)("button",{type:"button","data-menu-item":"ai-fill",onClick:()=>E(async y=>$(await le(t,"fill",i,"Fill in",y))),style:z,children:"Fill in with AI"})}):null,a?(0,S.jsx)("li",{children:(0,S.jsx)("button",{type:"button","data-menu-item":"ai-record",onClick:()=>E(async y=>$(await le(t,"record",i,"Add one",y))),style:z,children:"Add one with AI"})}):null,d.map(y=>(0,S.jsx)("li",{children:(0,S.jsx)("button",{type:"button","data-menu-item":`ai-open:${y.place}`,"data-ai-existing":y.fit,onClick:()=>{n(),t.goTo.place(y.place),y.fit==="partial"&&ue(t.desk,{target:{on:"lens",place:y.place,...y.kind?{kind:y.kind}:{}}})},style:z,children:y.fit==="full"?`Open ${y.title}`:`Open and adjust ${y.title}`})},y.place)),f?(0,S.jsx)("li",{children:(0,S.jsx)("button",{type:"button","data-menu-item":"ai-panel",onClick:()=>E(async y=>$(await le(t,"panel",i,"Draw a panel",y))),style:z,children:d.length>0?"Draw a new view":"Draw a panel"})}):null,(0,S.jsx)("li",{children:(0,S.jsx)("button",{type:"button","data-menu-item":"ai-ask",onClick:()=>{let y=document.activeElement;n(),ue(t.desk,{target:i,returnTo:y instanceof HTMLElement&&y!==document.body?y:null})},style:z,children:"Ask about this\u2026"})})]})]})}var Ae={display:"inline-flex",alignItems:"center",minHeight:28,padding:"2px 10px",fontSize:"0.8125rem",borderRadius:8};function mt({placement:e="picture"}){let{store:n,principal:t,aiDesk:i}=ze(),o=We(n,t),{ghost:r,entries:f}=_e(i),[d,c]=(0,P.useState)(new Set);(0,P.useEffect)(()=>c(new Set),[r?.ghost.interaction]);let a=(0,P.useRef)(null),s=(0,P.useRef)(null),u=r?.batch;if((0,P.useEffect)(()=>{u!==void 0&&s.current?.focus()},[u]),!r)return null;let{ghost:g}=r,b=f.find(k=>k.id===g.interaction),C=()=>{let k=g.target.on==="record"||g.target.on==="field"?g.target.id:void 0,p=a.current?.closest("[data-graview-face], main")?.parentElement??document,w=(k?p.querySelector(`[data-graview-view="${CSS.escape(k)}"][tabindex]`):null)??document.querySelector("[data-graview-page-title]")??a.current?.closest("main")??document.querySelector("main");w&&!w.hasAttribute("tabindex")&&w.setAttribute("tabindex","-1"),w?.focus({preventScroll:!0}),i.setGhost(null)},A=g.proposals.filter(k=>!d.has(k.id)).map(k=>k.id),m=()=>{let k=an(o,g,{author:t,ids:A});if(!k.ok){i.setGhost({...r,refused:k.refused});return}b&&i.record(dn(b,k.accepted,k.batch)),i.setGhost({ghost:g,batch:k.batch,took:k.accepted.length,...r.onCard?{onCard:!0}:{}})},x=()=>{b&&r.batch===void 0&&i.record(ln(b)),C()},O=()=>{if(r.batch!==void 0)try{o.undo(r.batch,{author:t}),C()}catch(k){i.setGhost({...r,refused:k instanceof Error?k.message:String(k)})}};return(0,S.jsxs)("section",{ref:a,"data-testid":"ai-ghost","data-interaction":g.interaction,"aria-label":"Proposed by AI",style:{...e==="card"?{position:"static"}:{position:e==="page"?"fixed":"absolute",insetInline:"max(12px, calc(50% - 220px))",bottom:"calc(var(--graview-foot-room, 0px) + 72px)",zIndex:He("toast"),boxShadow:"var(--graview-lift-high)"},display:"grid",gap:8,padding:12,borderRadius:12,border:"1px dashed var(--graview-accent)",background:"var(--graview-float)",fontSize:"0.875rem"},children:[(0,S.jsx)("p",{style:{margin:0,color:"var(--graview-ink-muted)"},children:r.batch!==void 0?`Done: ${r.took===1?"one change":`${r.took} changes`}, as one.`:`Proposed by AI \xB7 ${g.basis}`}),r.batch===void 0?(0,S.jsx)("ul",{style:{margin:0,padding:0,listStyle:"none",display:"grid",gap:4},children:g.proposals.map(k=>(0,S.jsx)("li",{"data-ghost-proposal":k.id,children:(0,S.jsxs)("label",{style:{display:"flex",alignItems:"baseline",gap:8,cursor:"pointer"},children:[(0,S.jsx)("input",{type:"checkbox",checked:!d.has(k.id),onChange:p=>{let w=new Set(d);p.target.checked?w.delete(k.id):w.add(k.id),c(w)}}),(0,S.jsx)("span",{style:{fontStyle:"italic",color:"var(--graview-ink)"},children:k.said}),k.confidence!==void 0?(0,S.jsxs)("span",{style:{color:"var(--graview-ink-faint)"},children:[Math.round(k.confidence*100),"% sure"]}):null]})},k.id))}):null,r.refused?(0,S.jsx)("p",{role:"alert",style:{margin:0,color:"var(--graview-warn)"},children:r.refused}):null,(0,S.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:r.batch===void 0?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)("button",{type:"button","data-testid":"ghost-accept",disabled:A.length===0,onClick:m,style:Ae,children:A.length===g.proposals.length?"Accept":`Accept ${A.length} of ${g.proposals.length}`}),(0,S.jsx)("button",{type:"button","data-testid":"ghost-dismiss",onClick:x,style:Ae,children:"Dismiss"})]}):(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)("button",{type:"button",ref:s,"data-testid":"ghost-undo",onClick:O,style:Ae,children:"Undo"}),(0,S.jsx)("button",{type:"button","data-testid":"ghost-close",onClick:C,style:Ae,children:"Close"})]})})]})}export{Xe as a,Q as b,he as c,Ze as d,ie as e,Ie as f,Rn as g,Tn as h,it as i,ot as j,fn as k,un as l,le as m,Dn as n,Ln as o,Hn as p,yt as q,gt as r,mt as s};
1
+ var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{a as Ge}from"./chunk.BJUUSIQY.js";import{a as Ke}from"./chunk.TQ2G4AM4.js";import{a as Ve}from"./chunk.LDMBJC3B.js";import{a as Je}from"./chunk.GH5UBSQI.js";import{a as pe}from"./chunk.2JEN2RCB.js";import{c as ue}from"./chunk.3FKKH2XU.js";import{E as Oe,G as hn,J as _e,R as We,V as Ue,da as ze}from"./chunk.VLX7YWVH.js";import{Cd as qe,Ed as Be,Ib as je,ec as De,ga as B,la as ce,oa as W,oc as fe,qc as Le,ra as Ne,sd as He,ta as G}from"./chunk.IQGSEAQ2.js";import{j as ee}from"./chunk.FQLNBIQ5.js";import{b as xe}from"./chunk.AJZBJBMO.js";var kn=["search-miss","unanswered","refused","tool-invalid"];var _n=new RegExp("[\\u0000-\\u001f\\u007f-\\u009f\\u200b-\\u200f\\u2028-\\u202e\\u2066-\\u2069]","g");var K=e=>e.onBehalfOf?K(e.onBehalfOf):e.id!==void 0?`${e.kind}:${e.id}`:`${e.kind}:?`,ve=e=>e.toLowerCase().replace(/\s+/g," ").replace(/^[\s\p{P}]+|[\s\p{P}]+$/gu,"");var bn=new Set("a an and are at be by can do does for from has have how i in is it me my of on or our the their there this to was we what when where which who why will with you your".split(" "));function ne(e,n,t,i,o){let r=new Map;for(let f of e){let d=n(f);if(d===void 0)continue;let c=r.get(d)??{first:f,people:new Set,times:0,last:f};c.people.add(K(f.by)),c.times+=1,c.last=f,r.set(d,c)}return[...r.entries()].filter(([,f])=>f.people.size>=i).sort(([f,d],[c,a])=>a.people.size-d.people.size||a.times-d.times||f.localeCompare(c)).slice(0,o).map(([f,d])=>({...t(d.last,f),people:d.people.size,times:d.times}))}function wn(e,n={}){let t=Math.max(1,n.minPeople??2),i=n.most??12,o=n.reader?K(n.reader):void 0,r=e.filter(a=>!qe(a.by)&&(o===void 0||K(a.by)!==o)),f=Object.fromEntries(kn.map(a=>{let s=r.filter(u=>u.type===a);return[a,{events:s.length,people:new Set(s.map(u=>K(u.by))).size}]})),d=[],c=new Map;for(let a of r){let s=a.type==="search-miss"?a.words:a.type==="unanswered"?a.question:void 0;if(s!==void 0)for(let u of new Set(ve(s).split(/[^\p{L}\p{N}]+/u))){if(u.length<3||bn.has(u))continue;let g={...a,id:`${a.id}:${u}`};d.push(g),c.set(g,u)}}return{events:r.length,people:new Set(r.map(a=>K(a.by))).size,byType:f,searches:ne(r,a=>a.type==="search-miss"&&ve(a.words)||void 0,(a,s)=>({words:s}),t,i),questions:ne(r,a=>a.type==="unanswered"&&ve(a.question)||void 0,(a,s)=>({question:s}),t,i),words:ne(d,a=>c.get(a),(a,s)=>({word:s}),t,i),refusals:ne(r,a=>a.type==="refused"?`${a.act}|${a.code}`:void 0,a=>({act:a.act,code:a.code}),t,i),tools:ne(r,a=>a.type==="tool-invalid"?`${a.tool}|${a.act??""}`:void 0,a=>{let s=a;return{tool:s.tool,...s.act?{act:s.act}:{},...s.then?{then:s.then}:{}}},1,i)}}var Ye=e=>e.length>3&&e.endsWith("s")&&!e.endsWith("ss")?e.slice(0,-1):e;function An(e){let n=new Set,t=i=>{for(let o of i.toLowerCase().split(/[^\p{L}\p{N}]+/u))o.length>0&&n.add(Ye(o))};for(let i of e.kinds){let o=e.tryDefinition(i);t(i),t(G(o,i)),t(W(e,i));for(let r of[...o?.aliases??[],...Object.values(o?.fieldAliases??{}).flat()])t(r);for(let r of Object.keys(o?.fields?.shape??{}))t(r),t(B(r))}return n}function Qe(e,n,t={}){let i=wn(e,{most:8,...t}),o=An(n),r=i.searches.filter(s=>!s.words.split(/[^\p{L}\p{N}]+/u).some(u=>u.length>0&&o.has(Ye(u)))).map(s=>({words:s.words,people:s.people})),f=i.questions.map(s=>({question:s.question,people:s.people})),d=i.tools.map(s=>({tool:s.tool,...s.act?{act:s.act}:{},...s.then?{then:s.then}:{},times:s.times})),c=s=>`${s} ${s===1?"person":"people"}`;return{said:[...r.length>0?[`Searched for, found nothing, and nothing here is called it: ${r.map(s=>`\u201C${s.words}\u201D (${c(s.people)})`).join(", ")}.`]:[],...f.length>0?[`Asked and not answered: ${f.map(s=>`\u201C${s.question}\u201D (${c(s.people)})`).join(", ")}.`]:[],...d.length>0?[`Tool calls refused as invalid: ${d.map(s=>`${s.tool}${s.act?` (${s.act})`:""} ${s.times===1?"once":`${s.times} times`}${s.then?`, then worked as ${s.then}`:""}`).join("; ")}.`]:[]].join(`
2
+ `),unknownWords:r,questions:f,toolMistakes:d}}var Sn=e=>/^(?:aggregate|kind):([^,]+)$/.exec(e)?.[1];function Xe(e,n){let t=e.about??[];if(e.field!==void 0&&e.on!==void 0&&n(e.on))return{on:"field",id:e.on,field:e.field};let i=t.filter(n);if(i.length>1)return{on:"selection",ids:i};if(e.on!==void 0&&n(e.on))return{on:"record",id:e.on};if(i.length===1)return{on:"record",id:i[0]};let o=[e.on,...t].map(r=>r===void 0?void 0:Sn(r)).find(r=>r!==void 0);return e.place!==void 0?{on:"lens",place:e.place,...o?{kind:o}:{}}:o!==void 0?{on:"list",kind:o}:{on:"place",place:"home"}}var Q=e=>e.on==="record"||e.on==="field"?[e.id]:e.on==="selection"?e.ids:e.on==="act"&&e.id!==void 0?[e.id]:[],ye=(e,n)=>e.tryDefinition(n)?.fields?.shape??{},Y=(e,n)=>e.tryDefinition(n)?.edges??{},ge=(e,n)=>new Set(e.tryDefinition(n)?.display?.hide??[]),L=(e,n)=>ce(e.tryDefinition(n.kind),n),$e=(e,n,t)=>Ne(e.tryDefinition(n),t)||B(t),Ce=e=>typeof e=="boolean"?e?"yes":"no":String(e);function me(e,n){let t=e.kindsKeptFrom(n);return new Set(e.schema.kinds.filter(i=>!t.has(i)))}function Re(e,n,t,i){if(!e.permits(n,t).ok)return!1;if(!i)return!0;try{return e.previewAll([n],{author:t}).ops.length>0}catch{return!1}}function he(e,n,t){let i=e,{principal:o}=t,r=t.each??8,f=ee(i)?.store??i,d=f.seenBy(o),c=f.schema,a=me(f,o),s=l=>{let h=d.graph.getNode(l);return h&&a.has(h.kind)?h:void 0},u=f.allMutations(),g=new Map(u.map(l=>[l.name,l])),b=[],C=new Set,A=l=>{C.has(l.id)||(C.add(l.id),b.push(l))},m=l=>l.slice(0,r),x=Q(n).filter(l=>s(l)!==void 0);if(Q(n).length>0&&x.length===0)return{target:n,candidates:[]};let O=x.length===1?s(x[0]):void 0,k=O?.kind??(n.on==="list"?n.kind:n.on==="lens"?n.kind??t.places?.find(l=>l.as===n.place)?.kind:void 0)??(n.on==="selection"?s(x[0])?.kind:void 0);if(k!==void 0&&!a.has(k))return{target:n,candidates:[]};let p=(l,h)=>`act:${l}${Object.keys(h).length>0?`:${Object.values(h).map(R=>String(R)).join(",")}`:""}`,w=(l,h,R,E,$)=>{l.destructive||Object.values(h).some(y=>typeof y=="string"&&f.graph.has(y)&&s(y)===void 0)||Re(f,{name:l.name,args:{...h}},o,E.length===0)&&A({type:"act",id:p(l.name,h),label:R,description:$??l.description??R,mutation:l.name,args:h,asks:E})};if(n.on!=="place"||t.acts)if(t.acts)for(let l of t.acts){let h=g.get(l.mutation);!h||l.destructive||n.on==="act"&&l.mutation!==n.act||w(h,l.args,l.label,(l.open??[]).filter(R=>!R.optional).map(R=>R.name),l.why)}else{let l=O?[O]:[];for(let h of u){if(n.on==="act"&&h.name!==n.act)continue;let R=h.input.shape??{},E=$=>Object.entries(R).filter(([y,v])=>y!==$&&v.safeParse?.(void 0).success===!1).map(([y])=>y);if(h.subject)for(let $ of l)fe(c,h).includes($.kind)&&w(h,{[h.subject.arg]:$.id},`${h.title??B(h.name)}: ${L(c,$)}`,E(h.subject.arg));else k!==void 0&&(h.creates??[]).includes(k)&&w(h,{},h.title??B(h.name),E(void 0))}}let T=b.filter(l=>l.type==="act");b.splice(0,b.length,...m(T));let F=(l,h)=>{let R=Le(c,u).get(l.kind),E=ye(c,l.kind),$=ge(c,l.kind),y=[];for(let[v,D]of Object.entries(E)){if(h!==void 0?v!==h:$.has(v)||l[v]!==void 0)continue;let j=pe(D),J=j?.type==="enum"&&!j.multiple?j.options??[]:j?.type==="boolean"?[!0,!1]:[];if(J.length===0)continue;let _=(R?.get(v)??[]).map(N=>g.get(N)).find(N=>N?.subject!==void 0&&Re(f,{name:N.name,args:{[N.subject.arg]:l.id,[v]:J.find(Se=>Se!==l[v])??J[0]}},o,!0));if(_?.subject)for(let N of J)l[v]!==N&&y.push({type:"fill",id:`fill:${l.id}:${v}:${Ce(N)}`,label:`${$e(c,l.kind,v)}: ${Ce(N)}`,description:`Set ${$e(c,l.kind,v).toLowerCase()} of ${L(c,l)} to ${Ce(N)}`,record:l.id,field:v,value:N,call:{name:_.name,args:{[_.subject.arg]:l.id,[v]:N}}})}for(let[v,D]of Object.entries(Y(c,l.kind))){if(h!==void 0&&v!==h)continue;let j=D.to==="*"?[...a]:D.to.filter(I=>a.has(I)),J=new Set(d.graph.out(l.id,v).map(I=>I.id)),_=u.find(I=>(I.connects??[]).includes(v)&&I.subject!==void 0&&fe(c,I).includes(l.kind));if(!_?.subject)continue;let N=De(_.input).find(I=>I.name!==_.subject.arg);if(!N)continue;let Se=j.flatMap(I=>N.kinds.length===0||N.kinds.includes(I)?d.graph.nodesOfKind(I):[]).filter(I=>I.id!==l.id&&!J.has(I.id)&&s(I.id)!==void 0);for(let I of m(Se)){let Me={name:_.name,args:{[_.subject.arg]:l.id,[N.name]:I.id}};Re(f,Me,o,!0)&&y.push({type:"fill",id:`fill:${l.id}:${v}:${I.id}`,label:`${B(v)}: ${L(c,I)}`,description:`Link ${L(c,l)} to ${L(c,I)}${D.description?` as ${D.description}`:""}`,record:l.id,field:v,value:I.id,call:Me})}}return y};if(n.on==="field"&&O)for(let l of F(O,n.field))A(l);else if(O&&n.on==="record")for(let l of m(F(O)))A(l);let q=l=>{let h=W(c,l).toLowerCase(),R=[{type:"panel",id:`panel:${l}:list`,label:`A list of ${h}`,description:`Every ${G(c.tryDefinition(l),l).toLowerCase()} this viewer may see, as a list`,panel:{lens:"blocks",kind:l}}],E=ge(c,l);for(let[$,y]of Object.entries(ye(c,l))){if(E.has($))continue;let v=pe(y),D=$e(c,l,$).toLowerCase();if(v?.type==="enum")R.push({type:"panel",id:`panel:${l}:group:${$}`,label:`${V(h)} by ${D}`,description:`A list of ${h} grouped by ${D}`,panel:{lens:"blocks",kind:l,group:$}}),R.push({type:"panel",id:`panel:${l}:columns:${$}`,label:`Columns of ${h} by ${D}`,description:`${V(h)} in a column for each ${D}`,panel:{lens:"columns",kind:l,column:$}});else if(v?.type==="number"||v?.type==="integer"||v?.type==="date"||v?.type==="datetime"){let j=v.type==="date"||v.type==="datetime";R.push({type:"panel",id:`panel:${l}:sort:${$}`,label:`${V(h)} by ${D}`,description:`A list of ${h}, the ${j?"latest":"highest"} ${D} first`,panel:{lens:"blocks",kind:l,sort:{by:$,direction:"desc"}}}),j&&R.push({type:"panel",id:`panel:${l}:calendar:${$}`,label:`A calendar of ${h}`,description:`${V(h)} on a calendar by ${D}`,panel:{lens:"calendar",kind:l,start:$}})}}return R},H=n.on==="place"?[...a]:k!==void 0?[k]:[];for(let l of H)for(let h of m(q(l)))A(h);for(let l of m((t.places??[]).filter(h=>h.kind===void 0?n.on==="place":a.has(h.kind)&&(n.on==="place"||h.kind===k))))n.on==="lens"&&l.as===n.place||A({type:"place",id:`place:${l.as}`,label:l.title,description:`Go to ${l.title}`,place:l.as});if(O){let l=[];for(let[h,R]of Object.entries(Y(c,O.kind)))for(let E of d.graph.out(O.id,h))s(E.id)&&l.push({type:"record",id:`record:${E.id}`,label:L(c,E),description:`${V(R.description??B(h))}: ${L(c,E)}`,record:E.id,relation:h});for(let h of c.kinds)for(let[R,E]of Object.entries(Y(c,h)))if(!(E.to!=="*"&&!E.to.includes(O.kind)))for(let $ of d.graph.in(O.id,R))$.kind===h&&s($.id)&&l.push({type:"record",id:`record:${$.id}`,label:L(c,$),description:`${V(E.inverse??B(R))}: ${L(c,$)}`,record:$.id,relation:R});for(let h of m(l))A(h)}else if(n.on==="list"||n.on==="lens")for(let l of m(k!==void 0?d.graph.nodesOfKind(k):[]))s(l.id)&&A({type:"record",id:`record:${l.id}`,label:L(c,l),description:`Open ${L(c,l)}`,record:l.id});else if(n.on==="selection")for(let l of x){let h=s(l);A({type:"record",id:`record:${l}`,label:L(c,h),description:`Open ${L(c,h)}`,record:l})}return{target:n,candidates:b}}var V=e=>e&&`${e[0].toUpperCase()}${e.slice(1)}`,xn={columns:["board","kanban","column","lane","pipeline","stage","funnel"],board:["board","map","floor","layout","seat","slot"],calendar:["calendar","schedule","date","due","month","week","agenda","deadline","day"],timeline:["timeline","gantt","schedule","roadmap","span"],coverage:["coverage","matrix","grid","gap"],plan:["plan","floor","map","region","area"],blocks:["list","table","summary","overview","dashboard","card"]},On=new Set(["a","an","the","of","for","my","our","me","us","to","with","and","in","on","by","that","which","i","we","want","need","show","open","go","draw","make","new","view","views","panel","panels","page","lens","please","all","every","some","see","can","could","would","like","one","what","is","are","do","does","here","there","how","it","this","these","those"]),te=e=>e.length>3&&e.endsWith("ies")?`${e.slice(0,-3)}y`:e.length>3&&e.endsWith("s")&&!e.endsWith("ss")?e.slice(0,-1):e,Te=e=>e.toLowerCase().normalize("NFKD").replace(/[̀-ͯ]/g,"").split(/[^a-z0-9]+/).filter(Boolean);function Ze(e,n,t){let i=e,o=ee(i)?.store??i,r=o.schema,f=me(o,t.principal),d=o.seenBy(t.principal),c=Q(n),a=new Set;for(let p of c){let w=d.graph.getNode(p)?.kind;w!==void 0&&f.has(w)&&a.add(w)}if(c.length>0&&a.size===0)return[];if(n.on==="list"&&a.add(n.kind),n.on==="lens"){let p=n.kind??t.places.find(w=>w.as===n.place)?.kind;p!==void 0&&a.add(p)}let s=new Map;for(let p of r.kinds){if(!f.has(p))continue;let w=r.tryDefinition(p);for(let T of[p,G(w,p),W(r,p)])for(let F of Te(T))s.set(te(F),p)}let u=Te(t.said??"").filter(p=>!On.has(p)),g=new Set,b=[];for(let p of u){let w=s.get(te(p));w!==void 0?g.add(w):b.push(te(p))}let C=g.size>0?g:a;if((t.said??"").trim()!==""&&u.length===0)return[];if(C.size===0&&u.length===0)return[];let A=[];t.places.forEach((p,w)=>{if(p.hidden||n.on==="lens"&&p.as===n.place)return;let T=p.over??(p.kind!==void 0?[p.kind]:[]);if(T.length>0&&!T.some(H=>f.has(H)))return;let F=T.some(H=>C.has(H)),q=!F&&(p.reads??[]).some(H=>C.has(H));C.size>0&&!F&&!q||A.push({place:p,own:F,reads:q,at:w})});let m=p=>new Set(Te(p.title).map(te)),x=new Set(b.filter(p=>A.some(({place:w})=>m(w).has(p)))),O=[];for(let{place:p,own:w,reads:T,at:F}of A){let q=m(p),H=new Set((xn[p.lens??""]??[]).map(te)),l=b.filter($=>q.has($)||H.has($)&&!x.has($)).length,h=b.length-l;if(b.length>0&&l===0)continue;let R=!T&&h===0?"full":"partial",E=(w?4:T?2:1)+l*2-h+(R==="full"?1:0);O.push({view:{place:p.as,title:p.title,...p.kind!==void 0?{kind:p.kind}:{},fit:R},score:E,at:F})}return O.filter((p,w)=>!O.slice(0,w).some(T=>T.view.place===p.view.place&&T.view.title===p.view.title)).sort((p,w)=>w.score-p.score||p.at-w.at).slice(0,t.most??3).map(p=>p.view)}var Ee=new WeakMap;function vn(e){let n=2166136261;for(let t=0;t<e.length;t++)n^=e.charCodeAt(t),n=Math.imul(n,16777619)>>>0;return n.toString(36)}function $n(e,n){let t=e,i=ee(t)?.store??t,o=i.schema,r=me(i,n),d=i.allMutations().filter(A=>!A.destructive&&i.permits({name:A.name,args:{}},n).ok!==!1),c=`${[...r].join(",")}|${d.map(A=>A.name).join(",")}`,a=Ee.get(o)?.get(c);if(a)return a;let s=[...r].map(A=>{let m=ge(o,A),x={};for(let[w,T]of Object.entries(ye(o,A))){if(m.has(w))continue;let F=pe(T);F&&(x[w]=F.type==="enum"?`enum:${(F.options??[]).join("|")}`:F.type)}let O={};for(let[w,T]of Object.entries(Y(o,A)))O[w]=T.to==="*"?[...r]:T.to.filter(F=>r.has(F));let k=o.tryDefinition(A),p=Object.entries(k?.fieldAliases??{}).filter(([w,T])=>w in x&&T.length>0);return{kind:A,noun:G(o.tryDefinition(A),A),plural:W(o,A),fields:x,relations:O,...k?.aliases&&k.aliases.length>0?{aliases:k.aliases}:{},...p.length>0?{fieldAliases:Object.fromEntries(p)}:{}}}),u=d.map(A=>({name:A.name,title:A.title??B(A.name),...A.subject?{on:fe(o,A).filter(m=>r.has(m))}:{}})),g={kinds:s,acts:u},b={version:vn(JSON.stringify(g)),...g},C=Ee.get(o)??new Map;return C.set(c,b),Ee.set(o,C),b}var Cn=e=>e.name??e.id??e.kind;function en(e,n,t){let i=e,{principal:o}=t,r=ee(i)?.store??i,f=r.seenBy(o),d=r.schema,c=me(r,o),a=p=>{let w=f.graph.getNode(p);return w&&c.has(w.kind)?w:void 0},s=p=>({id:p.id,kind:p.kind,label:L(d,p)}),u=Q(n),g=u.length===1?a(u[0]):void 0,b=g?Object.fromEntries(Object.keys(ye(d,g.kind)).filter(p=>!ge(d,g.kind).has(p)&&g[p]!==void 0&&p!=="label").map(p=>[p,g[p]])):{},C={on:n.on,...g?{record:{...s(g),fields:b}}:{},...n.on==="field"&&g?{field:n.field}:{},...n.on==="list"&&c.has(n.kind)?{kind:n.kind}:{},...n.on==="lens"?{place:n.place,...n.kind&&c.has(n.kind)?{kind:n.kind}:{}}:{},...n.on==="place"?{place:n.place}:{},...n.on==="act"?{act:n.act}:{}},A=[...new Set([...n.on==="selection"?n.ids:[],...t.selection??[]])].flatMap(p=>{let w=a(p);return w?[s(w)]:[]}),m=[];if(g){for(let p of Object.keys(Y(d,g.kind)))for(let w of f.graph.out(g.id,p))a(w.id)&&m.push({...s(w),relation:p,direction:"out"});for(let p of d.kinds)for(let w of Object.keys(Y(d,p)))for(let T of f.graph.in(g.id,w))T.kind===p&&a(T.id)&&m.push({...s(T),relation:w,direction:"in"})}let x=f.batches().filter(p=>!p.ops.every(je)).slice(-(t.recent??6)).reverse().map(p=>({intent:p.intent,at:p.at,by:Cn(p.author)})),O=(t.purpose?.jobs??[]).filter(p=>Ge(p,o.roles)&&c.has(p.kind)).map(p=>({name:p.name,ask:p.ask,kind:p.kind})),k=t.purpose&&(t.purpose.for!==void 0||O.length>0)?{...t.purpose.for!==void 0?{for:t.purpose.for}:{},jobs:O}:void 0;return{...t.place!==void 0?{place:t.place}:{},target:C,selection:A,neighbors:m.slice(0,24),recent:x,schema:$n(r,o),...k?{purpose:k}:{},...t.friction?{friction:Qe(t.friction,d,{reader:o})}:{}}}function ie(e){if(!e.off)return e.fast??(e.decide?{model:e.name??"decide",decide:e.decide}:void 0)}function U(e){if(e.off)return;if(e.thinking)return e.thinking;let n=e.name??"model";if(e.complete){let t=e.complete;return{model:n,think:({system:i,prompt:o})=>t({prompt:o,system:i})}}if(e.turn){let t=e.turn;return{model:n,think:async({system:i,prompt:o})=>({text:await t({system:i,messages:[{role:"user",content:o}],tools:[],call:async()=>({error:"No tools here."})})})}}}var Pe=(e,n,t)=>e?n/1e6*(e.inputPerMillion??0)+t/1e6*(e.outputPerMillion??0):void 0,Ie=()=>`ai-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;function Rn(e,n,t=[]){let i=o=>{let r=e.graph.getNode(o);return r?ce(e.schema.tryDefinition(r.kind),r):"a record"};switch(n.on){case"record":return i(n.id);case"field":return`${i(n.id)} \xB7 ${n.field}`;case"selection":return`${n.ids.length} records`;case"list":return e.schema.tryDefinition(n.kind)?W(e.schema,n.kind):n.kind;case"lens":case"place":return t.find(o=>o.as===n.place)?.title??(n.place==="home"?"Home":n.place);case"act":return n.act}}var nn=e=>e.type!=="act"||e.asks.length===0,be=(e,n)=>({id:e.id,type:e.type,label:e.label,...n!==void 0?{confidence:n}:{}});function X(e,n){let t=n.interaction??Ie(),i=he(n.store,n.target,{principal:n.principal,...n.acts?{acts:n.acts}:{},...n.places?{places:n.places}:{}}),o=en(n.store,n.target,{principal:n.principal,...n.place?{place:n.place}:{},...n.selection?{selection:n.selection}:{},...n.purpose?{purpose:n.purpose}:{}}),r=[];return{id:t,catalog:i,state:o,entry:{id:t,at:new Date().toISOString(),by:n.by??n.principal,target:n.target,targetLabel:Rn(n.store,n.target,n.places)},usage:r,meter:f=>{r.push(f),e.meter?.({...f,interaction:t})}}}async function oe(e,n,t,i){let o=await e.decide(n,t),{inputTokens:r,outputTokens:f}=o.usage,d=Pe(e.price,r,f);return i({tier:"fast",model:e.model,inputTokens:r,outputTokens:f,...d!==void 0?{costUsd:d}:{}}),o.answers}async function re(e,n,t,i,o){let r=await e.think({system:n,prompt:t,state:i.state,catalog:i.catalog}),f=r.usage?.inputTokens,d=r.usage?.outputTokens,c=r.usage?.costUsd??(f!==void 0?Pe(e.price,f,d??0):void 0);return o({tier:"thinking",model:e.model,...f!==void 0?{inputTokens:f}:{},...d!==void 0?{outputTokens:d}:{},...c!==void 0?{costUsd:c}:{}}),Ve(r.text)}function se(e,n){let t=new Map(e.map((i,o)=>[`c${o+1}`,i]));return{question:{type:"choice",instructions:n,criteria:Object.fromEntries([...t].map(([i,o])=>[i,`${o.label} \u2014 ${o.description}`]))},of:i=>t.get(i)}}function ae(e,n,t){if(e?.type!=="choice")return[];let i=e,o=Object.entries(i.probabilities).sort((r,f)=>f[1]-r[1]);return o.some(([r])=>r===i.choice)||o.unshift([i.choice,i.confidence]),o.flatMap(([r,f])=>{let d=n(r);return d?[{candidate:d,confidence:f}]:[]}).slice(0,t)}var M=(e,n,t,i)=>({interaction:{...e.entry,ask:{kind:t,said:n??""},offered:[],outcome:"failed",failed:i,usage:[...e.usage]},offers:[]}),Z="AI isn't on here.";async function tn(e,n,t=3){let i=X(e,n),o=n.said??"Suggest",r=i.catalog.candidates.filter(nn).slice(0,24);if(r.length===0)return{interaction:{...i.entry,ask:{kind:"suggest",said:o},offered:[],outcome:"offered",usage:[]},offers:[]};let f=ie(e),d=U(e),c=[];try{if(f){let{question:a,of:s}=se(r,"Which of these would the person most likely want to do next, here?"),u=await oe(f,{...i.state,candidates:r.map(g=>({id:g.id,type:g.type,says:g.description}))},{next:a},i.meter);c=ae(u.next,s,t)}else if(d){let a=await re(d,'You suggest what a person most likely wants to do next in an app. Answer only JSON: {"pick": [candidate ids, best first]}. Pick only ids from the candidates.',JSON.stringify({state:i.state,candidates:r.map(u=>({id:u.id,says:u.description}))}),i,i.meter);c=(Array.isArray(a?.pick)?a.pick.filter(u=>typeof u=="string"):[]).flatMap(u=>r.filter(g=>g.id===u)).slice(0,t).map(u=>({candidate:u}))}else return M(i,o,"suggest",Z)}catch(a){return M(i,o,"suggest",a instanceof Error?a.message:String(a))}return{interaction:{...i.entry,ask:{kind:"suggest",said:o},offered:c.map(({candidate:a,confidence:s})=>be(a,s)),outcome:"offered",usage:[...i.usage]},offers:c.map(({candidate:a})=>a)}}var Tn=e=>`several:${e}`;async function it(e,n,t=2){let i=X(e,{...n,acts:[]}),o=n.said??"Suggest for the chosen",r=n.target.on==="selection"?n.target.ids.length:1,d=[...n.shared.map(s=>({type:"act",id:Tn(s.id),label:s.label,description:`${s.label}, for all ${r} chosen`,mutation:s.mutation,args:s.args,asks:[]})),...i.catalog.candidates.filter(s=>s.type==="panel"||s.type==="place")].slice(0,24),c=ie(e);if(!c)return M(i,o,"suggest",Z);if(d.length===0)return{interaction:{...i.entry,ask:{kind:"suggest",said:o},offered:[],outcome:"offered",usage:[]},offers:[]};let a;try{let{question:s,of:u}=se(d,`Which of these would the person most likely want to do next with the ${r} records they chose together?`),g=await oe(c,{...i.state,candidates:d.map(b=>({id:b.id,type:b.type,says:b.description}))},{next:s},i.meter);a=ae(g.next,u,t).filter((b,C)=>C===0||b.confidence>=En)}catch(s){return M(i,o,"suggest",s instanceof Error?s.message:String(s))}return{interaction:{...i.entry,ask:{kind:"suggest",said:o},offered:a.map(({candidate:s,confidence:u})=>be(s,u)),outcome:"offered",usage:[...i.usage]},offers:a.map(({candidate:s})=>s)}}var En=.25;async function on(e,n){let t=X(e,n),i=n.said??"Fill in",o=t.catalog.candidates.filter(u=>u.type==="fill"),r=new Map;for(let u of o)r.set(u.field,[...r.get(u.field)??[],u]);if(r.size===0)return{interaction:{...t.entry,ask:{kind:"fill",said:i},offered:[],outcome:"offered",usage:[]},offers:[]};let f=ie(e),d=U(e),c=[];try{if(f){let u=[...r].map(([b,C],A)=>({key:`f${A+1}`,field:b,...se(C,`Which value fits "${b}" best for this record?`)})),g=await oe(f,t.state,Object.fromEntries(u.map(b=>[b.key,b.question])),t.meter);for(let b of u){let C=!Pn(n.store,n.target,b.field)&&In(n.store,n.target,b.field)!=="one";c.push(...ae(g[b.key],b.of,C?3:1).filter((A,m)=>m===0||A.confidence>=.4))}}else if(d){let u=await re(d,`You fill in a record's fields in an app. Answer only JSON: {"fills": [candidate ids]}, at most one per field, only ids from the candidates.`,JSON.stringify({state:t.state,candidates:o.map(C=>({id:C.id,says:C.description}))}),t,t.meter),g=Array.isArray(u?.fills)?u.fills.filter(C=>typeof C=="string"):[],b=new Set;for(let C of g){let A=o.find(m=>m.id===C);A?.type==="fill"&&!b.has(A.field)&&(b.add(A.field),c.push({candidate:A}))}}else return M(t,i,"fill",Z)}catch(u){return M(t,i,"fill",u instanceof Error?u.message:String(u))}let a=t.usage.at(-1)?.model,s=de(n.store,{interaction:t.id,target:n.target,basis:i,...a?{model:a}:{},proposals:c.flatMap(({candidate:u,confidence:g})=>u.type==="fill"?[{id:u.id,label:u.label,said:u.description,call:u.call,record:u.record,field:u.field,...g!==void 0?{confidence:g}:{}}]:[])},n.principal);return{interaction:{...t.entry,ask:{kind:"fill",said:i},offered:s.proposals.map(u=>({id:u.id,type:"fill",label:u.label,...u.confidence!==void 0?{confidence:u.confidence}:{}})),outcome:"offered",usage:[...t.usage]},offers:[],...s.proposals.length>0?{ghost:s}:{}}}function Pn(e,n,t){let i=n.on==="record"||n.on==="field"?n.id:void 0,o=i?e.graph.getNode(i)?.kind:void 0,r=(o?e.schema.tryDefinition(o)?.fields?.shape:void 0)??{};return t in r}function In(e,n,t){let i=n.on==="record"||n.on==="field"?n.id:void 0,o=i?e.graph.getNode(i)?.kind:void 0;return o?e.schema.tryDefinition(o)?.edges?.[t]?.cardinality:void 0}async function rn(e,n){let t=X(e,n),i=n.said??"Add one",o=new Set(n.store.allMutations().filter(s=>(s.creates??[]).length>0).map(s=>s.name)),r=t.catalog.candidates.filter(s=>s.type==="act"&&s.asks.length>0&&o.has(s.mutation));if(r.length===0)return M(t,i,"record","Nothing here makes a record.");let f=U(e);if(!f)return M(t,i,"record",Z);let d;try{let s=await re(f,'You propose one new record for an app by filling in an act. Answer only JSON: {"act": a candidate id, "args": {argument: value}}. Use only the candidates, and fill every argument the act asks for with a value that fits the state.',JSON.stringify({ask:i,state:t.state,candidates:r.map(b=>({id:b.id,says:b.description,asks:b.asks}))}),t,t.meter),u=r.find(b=>b.id===s?.act),g=typeof s?.args=="object"&&s.args!==null?s.args:{};u&&(d={act:u,args:Object.fromEntries(Object.entries(g).filter(([b])=>u.asks.includes(b)))})}catch(s){return M(t,i,"record",s instanceof Error?s.message:String(s))}if(!d)return M(t,i,"record","The model named no act this app has here.");let c=t.usage.at(-1)?.model,a=de(n.store,{interaction:t.id,target:n.target,basis:i,...c?{model:c}:{},proposals:[{id:d.act.id,label:d.act.label,said:d.act.description,call:{name:d.act.mutation,args:{...d.act.args,...d.args}}}]},n.principal);return a.proposals.length===0?M(t,i,"record","What the model proposed could not be made here."):{interaction:{...t.entry,ask:{kind:"record",said:i},offered:a.proposals.map(s=>({id:s.id,type:"act",label:s.said})),outcome:"offered",usage:[...t.usage]},offers:[d.act],ghost:a}}async function sn(e,n){let t=X(e,n),i=n.said??"Make a panel",o=t.catalog.candidates.filter(s=>s.type==="panel");if(o.length===0)return M(t,i,"panel","Nothing here can be drawn as a panel.");let r=ie(e),f=U(e),d;try{if(f){let s=await re(f,'You choose a panel to draw in an app. Answer only JSON: {"panel": a candidate id, "title": a short title}. Choose only among the candidates.',JSON.stringify({ask:i,state:t.state,candidates:o.map(g=>({id:g.id,says:g.description}))}),t,t.meter),u=o.find(g=>g.id===s?.panel);u&&(d={panel:u,...typeof s?.title=="string"&&s.title.trim()?{title:s.title.trim().slice(0,60)}:{}})}else if(r){let{question:s,of:u}=se(o,`Which panel answers this best: ${i}`),g=ae((await oe(r,t.state,{panel:s},t.meter)).panel,u,1)[0];g?.candidate.type==="panel"&&(d={panel:g.candidate,confidence:g.confidence})}else return M(t,i,"panel",Z)}catch(s){return M(t,i,"panel",s instanceof Error?s.message:String(s))}if(!d)return M(t,i,"panel","The model named no panel this app can draw.");let c=d.title??d.panel.label,a={title:c,recipe:{...d.panel.panel,title:c}};return{interaction:{...t.entry,ask:{kind:"panel",said:i},offered:[be(d.panel,d.confidence)],outcome:"drawn",panel:a,usage:[...t.usage]},offers:[d.panel],panel:a}}function Fn(e){return e.off?void 0:e.answer}var Mn=`You answer a person's question about what they are looking at in an app, from the state given and nothing else. Answer only JSON: {"answer": one to three short sentences, "pick": [candidate ids that act on the answer, best first, at most three]}. Pick only ids from the candidates, and none when nothing fits. Never say an id to the person.`;async function ot(e,n){let t=X(e,n),i=n.said.trim(),o=t.catalog.candidates.filter(m=>nn(m)||m.type==="panel"||m.type==="place"||m.type==="record").slice(0,32),r=Fn(e),f=U(e),d=ie(e),c="",a=[],s=m=>m.flatMap(x=>o.filter(O=>O.id===x)).slice(0,3).map(x=>({candidate:x}));try{if(r){let m=await r.answer({said:i,target:n.target,targetLabel:t.entry.targetLabel,state:t.state,catalog:{target:t.catalog.target,candidates:o},...n.follows?{follows:n.follows}:{}}),x=m.usage?.inputTokens,O=m.usage?.outputTokens,k=m.usage?.costUsd??(x!==void 0?Pe(r.price,x,O??0):void 0);t.meter({tier:"thinking",model:r.model,...x!==void 0?{inputTokens:x}:{},...O!==void 0?{outputTokens:O}:{},...k!==void 0?{costUsd:k}:{}}),c=typeof m.text=="string"?m.text.trim():"",a=s(m.pick??[])}else if(f){let m=await re(f,Mn,JSON.stringify({ask:i,about:t.entry.targetLabel,...n.follows?{follows:n.follows}:{},state:t.state,candidates:o.map(x=>({id:x.id,says:x.description}))}),t,t.meter);c=typeof m?.answer=="string"?m.answer.trim():"",a=s(Array.isArray(m?.pick)?m.pick:[])}else if(d&&o.length>0){let{question:m,of:x}=se(o,`Which of these best answers, or acts on: ${i}`),O=await oe(d,{...t.state,asked:i,candidates:o.map(k=>({id:k.id,type:k.type,says:k.description}))},{answer:m},t.meter);a=ae(O.answer,x,3),c=a.length>0?`These fit \u201C${i}\u201D.`:""}else return M(t,i,"ask",Z)}catch(m){return M(t,i,"ask",m instanceof Error?m.message:String(m))}if(!c&&a.length===0){let m=n.target.on==="place"||n.target.on==="lens"?n.target.place:void 0,x=n.target.on==="list"||n.target.on==="lens"?n.target.kind:void 0;return Be(n.store,{type:"unanswered",question:i,...m?{place:m}:{},...x?{kind:x}:{}},n.principal),M(t,i,"ask","The AI had no answer to that here.")}let u=t.usage.at(-1)?.model,g=a.flatMap(({candidate:m,confidence:x})=>{let O=ke(m);return O?[{...O,...x!==void 0?{confidence:x}:{}}]:[]}),b=g.length>0?de(n.store,{interaction:t.id,target:n.target,basis:i,...u?{model:u}:{},proposals:g},n.principal):void 0,C=a.map(({candidate:m})=>m).filter(m=>ke(m)===void 0),A=[...C.map(m=>be(m,a.find(x=>x.candidate===m)?.confidence)),...(b?.proposals??[]).map(m=>({id:m.id,type:m.field!==void 0?"fill":"act",label:m.label,...m.confidence!==void 0?{confidence:m.confidence}:{}}))];return{interaction:{...t.entry,ask:{kind:"ask",said:i},offered:A,outcome:"offered",...c?{answer:c}:{},usage:[...t.usage]},offers:C,...b&&b.proposals.length>0?{ghost:b}:{},...c?{answer:c}:{}}}function de(e,n,t){let i=n.proposals.flatMap(o=>{try{let r=e.previewAll([o.call],{author:t}),f=r.ops.map(d=>d.intent).join("; ");return r.ops.length>0?[{...o,said:f||o.said}]:[]}catch{return[]}});return{...n,proposals:i}}function ke(e){if(e.type==="fill")return{id:e.id,label:e.label,said:e.description,call:e.call,record:e.record,field:e.field};if(e.type==="act"&&e.asks.length===0)return{id:e.id,label:e.label,said:e.description,call:{name:e.mutation,args:{...e.args}}}}function an(e,n,t){let i=n.proposals.filter(r=>t.ids===void 0||t.ids.includes(r.id));if(i.length===0)return{ok:!1,refused:"Nothing was chosen."};let o=i.flatMap(r=>r.confidence===void 0?[]:[r.confidence]);try{let f=e.applyAll(i.map(d=>d.call),{author:t.author,via:`ai:${n.interaction}`,intent:n.basis,lineage:{basis:`Asked \u201C${n.basis}\u201D`,...n.model?{model:n.model}:{},...o.length>0?{confidence:Math.min(...o)}:{},interaction:n.interaction}}).ops[0]?.batch;return f?{ok:!0,batch:f,accepted:i.map(d=>d.id)}:{ok:!1,refused:"That changes nothing now."}}catch(r){return{ok:!1,refused:r instanceof Error?r.message:String(r)}}}function dn(e,n,t){let i=e.ask.kind==="suggest"?n.length>0:e.offered.length>0&&e.offered.every(o=>n.includes(o.id));return{...e,outcome:i?"accepted":"partly",accepted:n,batches:[...e.batches??[],t]}}var ln=e=>({...e,outcome:"dismissed"});var P=xe(hn(),1);var S=xe(Ue(),1);function fn(e,n,t){let i=n.on==="selection"?n.ids:n.on==="record"||n.on==="field"?[n.id]:[],o=i.length>0?Ke(e.store,i,{principal:e.principal,...i.length===1?{focus:i[0]}:{}}).affordances.map(r=>({mutation:r.mutation,label:r.label,args:r.args,open:r.open,why:r.why,...r.destructive?{destructive:!0}:{}})):void 0;return{store:e.store,target:n,principal:e.principal,interaction:Ie(),places:e.places,selection:e.selection,...o?{acts:o}:{},...e.place?{place:e.place}:{},...t?{said:t}:{},...e.app.purpose?{purpose:e.app.purpose}:{}}}async function un(e,n,t){let i=await (__graviewPreload(import.meta.url,["./chunk.REXU6ARY.js","./chunk.G4JJXA63.js","./chunk.BIDL7GQD.js","./chunk.TA2JTUNX.js","./chunk.HZPRMHSL.js","./chunk.LDMBJC3B.js","./chunk.XOZU4OFA.js","./chunk.G7YLK4PX.js","./chunk.Q5WEOX3Q.js","./chunk.2E62YCMZ.js","./chunk.DUP2CGVH.js","./chunk.YEXFVDRA.js","./chunk.WVUJXDXZ.js","./chunk.ZA5TDCBC.js","./chunk.2JEN2RCB.js","./chunk.7CLKGKSF.js","./chunk.TMHVYI5R.js","./chunk.R5MLRKAO.js","./chunk.YMXWS4XN.js","./chunk.75JQCTR6.js","./chunk.5IEZF433.js","./chunk.5AD2QHWH.js","./chunk.IQGSEAQ2.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.TP3PZRHE.js")),o=i.recipeDraft(n.recipe,{app:e.app,sight:i.draftSight(e.app,e.principal)});if(i.isDraftFailure(o))return o.failed;t?.(),e.seatTalk.setDraft(o,null),e.goTo.draft?.(),pn()}function pn(e=180){if(typeof document>"u")return;let n=document.querySelector('[data-testid="draft-keep"]'),t=document.activeElement,i=!t||t===document.body||t.closest?.("[inert]")!==null;if(n){i&&n.focus();return}e>0&&requestAnimationFrame(()=>pn(e-1))}async function le(e,n,t,i,o){let r=fn(e,t,i),f=n==="suggest"?await tn(e.ai,r):n==="fill"?await on(e.ai,r):n==="record"?await rn(e.ai,r):await sn(e.ai,r);if(f.interaction.outcome==="failed")return n!=="suggest"&&e.desk.record(f.interaction),f;let d=c=>{let a={...f.interaction,outcome:"failed",failed:c};return e.desk.record(a),{...f,interaction:a}};if(n==="fill"||n==="record"){if(!f.ghost||f.ghost.proposals.length===0)return d("Nothing here could be filled in.");o?.(),e.desk.setGhost({ghost:f.ghost}),e.desk.record(f.interaction)}if(n==="panel"&&f.panel){let c=await un(e,f.panel,o);if(c)return d(c);e.desk.record(f.interaction)}return f}var Fe=new WeakMap,Nn=64,cn=new WeakMap;function jn(e){let n=cn.get(e);if(!n){let t=n={n:0};cn.set(e,t),e.subscribe(()=>void(t.n+=1))}return n.n}var yn=(e,n)=>{let t=Q(n);return t.length>0?t.map(i=>e.graph.getNode(i)):[jn(e)]},gn=(e,n,t)=>JSON.stringify({target:n,seat:e.principal,by:t}),mn=(e,n,t)=>{let i=yn(e.store,n);return t.schema===e.store.schema&&t.ai===e.ai&&i.length===t.depends.length&&i.every((o,r)=>o===t.depends[r])};function Dn(e,n,t="menu"){let i=Fe.get(e.store)?.get(gn(e,n,t));return i?.result!==void 0&&mn(e,n,i)?i.result:void 0}function Ln(e,n,t){let i=Fe.get(e.store);i||Fe.set(e.store,i=new Map);let o=gn(e,n,t?.by??"menu"),r=i.get(o);if(r&&mn(e,n,r))return r.result?Promise.resolve(r.result):r.asked;let f=t?t.ask():le(e,"suggest",n),d={schema:e.store.schema,ai:e.ai,depends:yn(e.store,n),asked:f};i.delete(o),i.set(o,d),i.size>Nn&&i.delete(i.keys().next().value);let c=i;return f.then(a=>{a.interaction.outcome!=="failed"?d.result=a:c.get(o)===d&&c.delete(o)}),f}async function Hn(e,n,t,i){let o=n.interaction,r=ke(t);if(r){let f=o.usage?.at(-1)?.model,d=o.offered.find(a=>a.id===t.id)?.confidence,c=de(e.store,{interaction:o.id,target:o.target,basis:`${o.ask.said}: ${t.label}`,...f?{model:f}:{},proposals:[{...r,...d!==void 0?{confidence:d}:{}}]},e.principal);if(c.proposals.length===0){let a="That can't be done now.";return e.desk.record({...o,outcome:"failed",failed:a}),a}i?.(),e.desk.setGhost({ghost:c}),e.desk.record(o);return}if(t.type==="panel"){let f=t.label,d={title:f,recipe:{...t.panel,title:f}},c=await un(e,d,i);return e.desk.record(c?{...o,outcome:"failed",failed:c}:{...o,outcome:"drawn",accepted:[t.id],panel:d}),c}i?.(),t.type==="place"?e.goTo.place(t.place):t.type==="record"&&e.goTo.record(t.record),e.desk.record({...o,outcome:"accepted",accepted:[t.id]})}async function yt(e,n){if(n.ask.kind==="ask")return ue(e.desk,{target:n.target,asked:n.ask.said}),null;let t=n.ask.kind==="panel"||n.ask.kind==="record"?n.ask.kind:"fill";return le(e,t,n.target,n.ask.said)}var z={padding:"5px 10px",fontSize:"0.875rem",borderRadius:8,width:"100%",textAlign:"left",borderWidth:1,borderStyle:"solid",borderColor:"transparent",background:"none",boxShadow:"none"},we={margin:0,padding:"4px 10px",fontSize:"0.8125rem",color:"var(--graview-ink-muted)"};function gt({target:e,close:n}){let t=Je(),i=(0,P.useMemo)(()=>Xe(e,y=>t.store.graph.has(y)),[e,t.store]),o=(0,P.useMemo)(()=>{let y=fn(t,i);return he(t.store,i,{principal:t.principal,places:t.places,...y.acts?{acts:y.acts}:{}})},[t,i]),r=o.candidates.some(y=>y.type==="fill"),f=o.candidates.some(y=>y.type==="panel"),d=(0,P.useMemo)(()=>f?Ze(t.store,i,{principal:t.principal,places:t.places,most:1}):[],[f,t,i]),c=(0,P.useMemo)(()=>new Set(t.store.allMutations().filter(y=>(y.creates??[]).length>0).map(y=>y.name)),[t.store]),a=U(t.ai)!==void 0&&o.candidates.some(y=>y.type==="act"&&y.asks.length>0&&c.has(y.mutation)),s=Oe(t.ai),u=Dn(t,i),g=JSON.stringify(i),[b,C]=(0,P.useState)(!1),[A,m]=(0,P.useState)(null),[x,O]=(0,P.useState)(s&&u===void 0);(0,P.useEffect)(()=>{if(u!==void 0||!(s||b))return;let y=!0;return O(!0),Ln(t,i).then(v=>{y&&(m(v),O(!1))}),()=>{y=!1}},[g,b]);let k=u??A,p=(k?.offers??[]).filter(y=>!(y.type==="place"&&d.some(v=>v.place===y.place))).slice(0,Math.max(0,3-d.length)),w=k?.interaction.outcome==="failed"?k.interaction.failed??"The AI could not suggest anything here.":null,T=(0,P.useRef)(!1),F=(0,P.useRef)(null);(0,P.useLayoutEffect)(()=>{k===null||!T.current||(T.current=!1,F.current?.querySelector("button")?.focus())},[k]);let q=(0,P.useRef)(!0);(0,P.useEffect)(()=>()=>{q.current=!1},[]);let[H,l]=(0,P.useState)(!1),[h,R]=(0,P.useState)(null),E=y=>{if(H)return;l(!0),R(null);let v=!1;y(()=>{v=!0,n()}).then(j=>{q.current&&(l(!1),j?R(j):v||n())},j=>{q.current&&(l(!1),R(j instanceof Error?j.message:String(j)))})},$=y=>y.interaction.outcome==="failed"?y.interaction.failed??"The AI could not do that here.":void 0;return(0,S.jsxs)("div",{ref:F,"data-testid":"inline-ai",style:{display:"grid",gap:2},children:[x&&!b?(0,S.jsx)("p",{role:"status","data-testid":"inline-ai-thinking",style:we,children:"Thinking\u2026"}):H?(0,S.jsx)("p",{role:"status","data-testid":"inline-ai-asking",style:we,children:"Asking\u2026"}):h?(0,S.jsx)("p",{role:"alert","data-testid":"inline-ai-failed",style:{...we,color:"var(--graview-warn)"},children:h}):w?(0,S.jsx)("p",{role:"status",style:we,children:w}):null,(0,S.jsxs)("ul",{style:{margin:0,padding:0,listStyle:"none",display:"flex",flexDirection:"column",gap:2},children:[p.map(y=>(0,S.jsx)("li",{children:(0,S.jsxs)("button",{type:"button","data-menu-item":`ai-offer:${y.id}`,"data-ai-offer":y.id,"data-ai-offer-type":y.type,onClick:()=>E(v=>Hn(t,k,y,v)),style:z,children:[y.label,(0,S.jsxs)("span",{style:{color:"var(--graview-ink-faint)"},children:[" \xB7 ",y.type==="panel"?"a panel":y.type==="place"?"go there":y.type==="record"?"open it":"suggested"]})]})},y.id)),!s&&k===null?(0,S.jsx)("li",{children:(0,S.jsx)("button",{type:"button","data-menu-item":"ai-suggest","aria-disabled":b||void 0,onClick:y=>{b||(T.current=document.activeElement===y.currentTarget,C(!0))},style:z,children:b?"Thinking\u2026":"Suggest\u2026"})}):null,r?(0,S.jsx)("li",{children:(0,S.jsx)("button",{type:"button","data-menu-item":"ai-fill",onClick:()=>E(async y=>$(await le(t,"fill",i,"Fill in",y))),style:z,children:"Fill in with AI"})}):null,a?(0,S.jsx)("li",{children:(0,S.jsx)("button",{type:"button","data-menu-item":"ai-record",onClick:()=>E(async y=>$(await le(t,"record",i,"Add one",y))),style:z,children:"Add one with AI"})}):null,d.map(y=>(0,S.jsx)("li",{children:(0,S.jsx)("button",{type:"button","data-menu-item":`ai-open:${y.place}`,"data-ai-existing":y.fit,onClick:()=>{n(),t.goTo.place(y.place),y.fit==="partial"&&ue(t.desk,{target:{on:"lens",place:y.place,...y.kind?{kind:y.kind}:{}}})},style:z,children:y.fit==="full"?`Open ${y.title}`:`Open and adjust ${y.title}`})},y.place)),f?(0,S.jsx)("li",{children:(0,S.jsx)("button",{type:"button","data-menu-item":"ai-panel",onClick:()=>E(async y=>$(await le(t,"panel",i,"Draw a panel",y))),style:z,children:d.length>0?"Draw a new view":"Draw a panel"})}):null,(0,S.jsx)("li",{children:(0,S.jsx)("button",{type:"button","data-menu-item":"ai-ask",onClick:()=>{let y=document.activeElement;n(),ue(t.desk,{target:i,returnTo:y instanceof HTMLElement&&y!==document.body?y:null})},style:z,children:"Ask about this\u2026"})})]})]})}var Ae={display:"inline-flex",alignItems:"center",minHeight:28,padding:"2px 10px",fontSize:"0.8125rem",borderRadius:8};function mt({placement:e="picture"}){let{store:n,principal:t,aiDesk:i}=ze(),o=We(n,t),{ghost:r,entries:f}=_e(i),[d,c]=(0,P.useState)(new Set);(0,P.useEffect)(()=>c(new Set),[r?.ghost.interaction]);let a=(0,P.useRef)(null),s=(0,P.useRef)(null),u=r?.batch;if((0,P.useEffect)(()=>{u!==void 0&&s.current?.focus()},[u]),!r)return null;let{ghost:g}=r,b=f.find(k=>k.id===g.interaction),C=()=>{let k=g.target.on==="record"||g.target.on==="field"?g.target.id:void 0,p=a.current?.closest("[data-graview-face], main")?.parentElement??document,w=(k?p.querySelector(`[data-graview-view="${CSS.escape(k)}"][tabindex]`):null)??document.querySelector("[data-graview-page-title]")??a.current?.closest("main")??document.querySelector("main");w&&!w.hasAttribute("tabindex")&&w.setAttribute("tabindex","-1"),w?.focus({preventScroll:!0}),i.setGhost(null)},A=g.proposals.filter(k=>!d.has(k.id)).map(k=>k.id),m=()=>{let k=an(o,g,{author:t,ids:A});if(!k.ok){i.setGhost({...r,refused:k.refused});return}b&&i.record(dn(b,k.accepted,k.batch)),i.setGhost({ghost:g,batch:k.batch,took:k.accepted.length,...r.onCard?{onCard:!0}:{}})},x=()=>{b&&r.batch===void 0&&i.record(ln(b)),C()},O=()=>{if(r.batch!==void 0)try{o.undo(r.batch,{author:t}),C()}catch(k){i.setGhost({...r,refused:k instanceof Error?k.message:String(k)})}};return(0,S.jsxs)("section",{ref:a,"data-testid":"ai-ghost","data-interaction":g.interaction,"aria-label":"Proposed by AI",style:{...e==="card"?{position:"static"}:{position:e==="page"?"fixed":"absolute",insetInline:"max(12px, calc(50% - 220px))",bottom:"calc(var(--graview-foot-room, 0px) + 72px)",zIndex:He("toast"),boxShadow:"var(--graview-lift-high)"},display:"grid",gap:8,padding:12,borderRadius:12,border:"1px dashed var(--graview-accent)",background:"var(--graview-float)",fontSize:"0.875rem"},children:[(0,S.jsx)("p",{style:{margin:0,color:"var(--graview-ink-muted)"},children:r.batch!==void 0?`Done: ${r.took===1?"one change":`${r.took} changes`}, as one.`:`Proposed by AI \xB7 ${g.basis}`}),r.batch===void 0?(0,S.jsx)("ul",{style:{margin:0,padding:0,listStyle:"none",display:"grid",gap:4},children:g.proposals.map(k=>(0,S.jsx)("li",{"data-ghost-proposal":k.id,children:(0,S.jsxs)("label",{style:{display:"flex",alignItems:"baseline",gap:8,cursor:"pointer"},children:[(0,S.jsx)("input",{type:"checkbox",checked:!d.has(k.id),onChange:p=>{let w=new Set(d);p.target.checked?w.delete(k.id):w.add(k.id),c(w)}}),(0,S.jsx)("span",{style:{fontStyle:"italic",color:"var(--graview-ink)"},children:k.said}),k.confidence!==void 0?(0,S.jsxs)("span",{style:{color:"var(--graview-ink-faint)"},children:[Math.round(k.confidence*100),"% sure"]}):null]})},k.id))}):null,r.refused?(0,S.jsx)("p",{role:"alert",style:{margin:0,color:"var(--graview-warn)"},children:r.refused}):null,(0,S.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:r.batch===void 0?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)("button",{type:"button","data-testid":"ghost-accept",disabled:A.length===0,onClick:m,style:Ae,children:A.length===g.proposals.length?"Accept":`Accept ${A.length} of ${g.proposals.length}`}),(0,S.jsx)("button",{type:"button","data-testid":"ghost-dismiss",onClick:x,style:Ae,children:"Dismiss"})]}):(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)("button",{type:"button",ref:s,"data-testid":"ghost-undo",onClick:O,style:Ae,children:"Undo"}),(0,S.jsx)("button",{type:"button","data-testid":"ghost-close",onClick:C,style:Ae,children:"Close"})]})})]})}export{Xe as a,Q as b,he as c,Ze as d,ie as e,Ie as f,Rn as g,Tn as h,it as i,ot as j,fn as k,un as l,le as m,Dn as n,Ln as o,Hn as p,yt as q,gt as r,mt as s};
@@ -1,4 +1,4 @@
1
- import{a as H,b as ee,d as te}from"./chunk.L3WTKQQL.js";import"./chunk.QDWSU47A.js";import{ja as U,ma as X,oc as Q,ra as Y,va as z}from"./chunk.DZZL5IDD.js";import"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";function ue(t){let n=t?.indexOf(":")??-1;if(!(!t||n<=0||n===t.length-1))return{relation:t.slice(0,n),record:t.slice(n+1)}}function re(t,n){if(t.length===0)return!0;let d=`${n.split("/")[0]}/*`;return t.some(a=>a==="*"||a==="*/*"||a===n||a===d)}function ie(t,n){let d=n.startsWith("image/")?"image":n.startsWith("video/")?"video":"file";return t.find(a=>a.as===d)??t.find(a=>a.as==="file")}function pe(t,n){let d=new Set(t.map(w=>w.as==="image"?"image/":w.as==="video"?"video/":""));if(d.has("")||n.kinds.length===0)return n.kinds.join(",");let a=[];for(let w of d){let p=n.kinds.filter(l=>l.startsWith(w));a.push(...p.length>0?p:[`${w}*`])}return a.join(",")}var W=t=>t.input?.shape??{},ae=(t,n)=>W(t)[n]?.safeParse(void 0).success===!1;function se(t,n){let d=new Set(H(t.input).map(a=>a.name));return Object.keys(W(t)).filter(a=>!n.has(a)&&!d.has(a)&&ae(t,a)&&W(t)[a].safeParse("a name").success&&!W(t)[a].safeParse(1).success)}var me=t=>t.replace(/\.[a-z0-9]{1,5}$/i,"")||t,oe=(t,n)=>{let d=Number.isFinite(Date.parse(n))?new Date(Date.parse(n)).toISOString():n;return[n,d,d.replace(/\.\d{3}Z$/,"Z"),n.slice(0,10)].find(a=>t.safeParse(a).success)},ge="2026-01-01T00:00:00.000Z";function ne(t,n){let d=W(t),a=new Set(se(t,n)),w=Object.keys(d).filter(l=>!n.has(l)&&!a.has(l)&&ae(t,l)),p=w.filter(l=>oe(d[l],ge)!==void 0);return{timed:p,left:w.filter(l=>!p.includes(l))}}function de(t,n,d,a,w){let p=e=>({ok:!1,says:e}),{kind:l}=a,R=(d.accepts??[]).filter(e=>e.kind===l&&(a.field===void 0||e.field===a.field));if(R.length===0)return p(a.field===void 0?`The view's accepts names no field of "${l}", so nothing dropped there can become one.`:`The view's accepts does not name ${l}'s "${a.field}".`);let k=w.files;if(!k||!(k.maxBytes>0))return p("This host takes no files.");let O=R.flatMap(e=>{let r=te(t,e.kind,e.field);return r?[{field:e.field,...r}]:[]}),v=O.filter(e=>e.as==="file"||k.kinds.length===0||k.kinds.some(r=>r==="*"||r==="*/*"||r.startsWith(e.as==="image"?"image/":"video/")));if(v.length===0)return p(`This host takes none of what ${l}'s ${O.map(e=>`"${e.field}"`).join(" or ")} holds.`);let c=a.connect===void 0?void 0:ue(a.connect);if(a.connect!==void 0&&(!c||w.shown.has(a.connect)))return p(`data-drop-connect is "<relation>:<record id>", not "${a.connect}".`);if(c&&!w.shown.has(c.record))return p(`data-drop-connect names "${c.record}", which this view was not shown.`);let m=c?t.seenBy(n).graph.getNode(c.record):void 0;if(c&&!m)return p(`data-drop-connect names "${c.record}", which this seat does not see.`);let $=e=>Object.hasOwn(t.schema.tryDefinition(e)?.edges??{},c.relation),D=c?$(l):!1;if(c&&!D&&!$(m.kind))return p(`Neither a "${l}" nor a "${m.kind}" has the relation "${c.relation}".`);let K=t.allMutations(),S=e=>t.permits(e,n).ok,J=e=>v.every(r=>Object.hasOwn(W(e),r.field)),V=K.filter(e=>(e.creates??[]).includes(l)&&J(e)),F=Y(t.schema.tryDefinition(l),l),T=X(t.schema,l).toLowerCase(),E=m?U(t.schema.tryDefinition(m.kind),m):void 0,B=e=>`${e===1?`a ${F}`:`${e} ${T}`}${E?` to ${E}`:""}`,q=e=>`Add ${B(e)}`,C=e=>`Added ${B(e)}.`,N=`Drop to add ${T}${E?` to ${E}`:""}.`,I=(e,r,h,g)=>{let A=new Set(Object.keys(r)),b=z(h.at)??g??new Date().toISOString();for(let L of ne(e,A).timed)r[L]=oe(W(e)[L],b);for(let L of se(e,A))r[L]=me(h.name);return r},Z=(e,...r)=>new Set([...v.map(h=>h.field),...r,...H(e.input).map(h=>h.name)]),x=(e,...r)=>ne(e,Z(e,...r)).left,i=(e,r)=>p(`"${e.title??e.name}" asks for ${r.map(h=>`"${h}"`).join(" and ")}, which no dropped file says, so nothing dropped here can become a ${F}.`),o=(e,r)=>e.list?[r]:r,f={ok:!0,kind:l,fields:v,accept:pe(v,k),...c?{connect:c}:{},intent:q,invite:N,added:C};if(!c){let e=V.find(r=>!r.subject&&S({name:r.name,args:{}}));return e?x(e).length>0?i(e,x(e)):{...f,calls:r=>[{name:e.name,args:I(e,{[r.field]:o(v.find(h=>h.field===r.field),r.value)},r.value,r.at)}]}:p(`This seat may not make a "${l}" here.`)}let s=V.find(e=>e.subject&&(e.subject.kinds==="*"||e.subject.kinds.includes(m.kind))&&(e.connects??[]).includes(c.relation)&&S({name:e.name,args:{[e.subject.arg]:c.record}}));if(s){let e=s.subject.arg;return x(s,e).length>0?i(s,x(s,e)):{...f,calls:r=>[{name:s.name,args:I(s,{[e]:c.record,[r.field]:o(v.find(h=>h.field===r.field),r.value)},r.value,r.at)}]}}let u=V.find(e=>!e.subject&&S({name:e.name,args:{}}));if(!u)return p(`This seat may not make a "${l}" here.`);if(x(u).length>0)return i(u,x(u));let y=D?l:m.kind,P=D?m.kind:l,M=K.find(e=>{if(!(e.connects??[]).includes(c.relation)||!e.subject)return!1;let r=e.subject.kinds;if(r!=="*"&&!r.includes(y))return!1;let h=H(e.input).find(g=>g.name!==e.subject.arg&&(g.kinds.includes("*")||g.kinds.includes(P)));return h?S({name:e.name,args:D?{[h.name]:c.record}:{[e.subject.arg]:c.record}}):!1});if(!M)return p(`This seat may not link a "${l}" to ${c.record} by "${c.relation}".`);let G=M.subject.arg,_=H(M.input).find(e=>e.name!==G&&(e.kinds.includes("*")||e.kinds.includes(P))).name;return{...f,calls:(e,r)=>[{name:u.name,args:I(u,{[e.field]:o(v.find(h=>h.field===e.field),e.value)},e.value,e.at)},{name:M.name,args:D?{[G]:Q(r*2),[_]:c.record}:{[G]:c.record,[_]:Q(r*2)}}]}}var le=t=>t.type.startsWith("image/"),ye=t=>t.type.startsWith("video/"),he=`
1
+ import{a as H,b as ee,d as te}from"./chunk.DN7UCBOA.js";import"./chunk.DMENNIHT.js";import{la as U,oa as X,ta as Y,tc as Q,xa as z}from"./chunk.IQGSEAQ2.js";import"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";function ue(t){let n=t?.indexOf(":")??-1;if(!(!t||n<=0||n===t.length-1))return{relation:t.slice(0,n),record:t.slice(n+1)}}function re(t,n){if(t.length===0)return!0;let d=`${n.split("/")[0]}/*`;return t.some(a=>a==="*"||a==="*/*"||a===n||a===d)}function ie(t,n){let d=n.startsWith("image/")?"image":n.startsWith("video/")?"video":"file";return t.find(a=>a.as===d)??t.find(a=>a.as==="file")}function pe(t,n){let d=new Set(t.map(w=>w.as==="image"?"image/":w.as==="video"?"video/":""));if(d.has("")||n.kinds.length===0)return n.kinds.join(",");let a=[];for(let w of d){let p=n.kinds.filter(l=>l.startsWith(w));a.push(...p.length>0?p:[`${w}*`])}return a.join(",")}var W=t=>t.input?.shape??{},ae=(t,n)=>W(t)[n]?.safeParse(void 0).success===!1;function se(t,n){let d=new Set(H(t.input).map(a=>a.name));return Object.keys(W(t)).filter(a=>!n.has(a)&&!d.has(a)&&ae(t,a)&&W(t)[a].safeParse("a name").success&&!W(t)[a].safeParse(1).success)}var me=t=>t.replace(/\.[a-z0-9]{1,5}$/i,"")||t,oe=(t,n)=>{let d=Number.isFinite(Date.parse(n))?new Date(Date.parse(n)).toISOString():n;return[n,d,d.replace(/\.\d{3}Z$/,"Z"),n.slice(0,10)].find(a=>t.safeParse(a).success)},ge="2026-01-01T00:00:00.000Z";function ne(t,n){let d=W(t),a=new Set(se(t,n)),w=Object.keys(d).filter(l=>!n.has(l)&&!a.has(l)&&ae(t,l)),p=w.filter(l=>oe(d[l],ge)!==void 0);return{timed:p,left:w.filter(l=>!p.includes(l))}}function de(t,n,d,a,w){let p=e=>({ok:!1,says:e}),{kind:l}=a,R=(d.accepts??[]).filter(e=>e.kind===l&&(a.field===void 0||e.field===a.field));if(R.length===0)return p(a.field===void 0?`The view's accepts names no field of "${l}", so nothing dropped there can become one.`:`The view's accepts does not name ${l}'s "${a.field}".`);let k=w.files;if(!k||!(k.maxBytes>0))return p("This host takes no files.");let O=R.flatMap(e=>{let r=te(t,e.kind,e.field);return r?[{field:e.field,...r}]:[]}),v=O.filter(e=>e.as==="file"||k.kinds.length===0||k.kinds.some(r=>r==="*"||r==="*/*"||r.startsWith(e.as==="image"?"image/":"video/")));if(v.length===0)return p(`This host takes none of what ${l}'s ${O.map(e=>`"${e.field}"`).join(" or ")} holds.`);let c=a.connect===void 0?void 0:ue(a.connect);if(a.connect!==void 0&&(!c||w.shown.has(a.connect)))return p(`data-drop-connect is "<relation>:<record id>", not "${a.connect}".`);if(c&&!w.shown.has(c.record))return p(`data-drop-connect names "${c.record}", which this view was not shown.`);let m=c?t.seenBy(n).graph.getNode(c.record):void 0;if(c&&!m)return p(`data-drop-connect names "${c.record}", which this seat does not see.`);let $=e=>Object.hasOwn(t.schema.tryDefinition(e)?.edges??{},c.relation),D=c?$(l):!1;if(c&&!D&&!$(m.kind))return p(`Neither a "${l}" nor a "${m.kind}" has the relation "${c.relation}".`);let K=t.allMutations(),S=e=>t.permits(e,n).ok,J=e=>v.every(r=>Object.hasOwn(W(e),r.field)),V=K.filter(e=>(e.creates??[]).includes(l)&&J(e)),F=Y(t.schema.tryDefinition(l),l),T=X(t.schema,l).toLowerCase(),E=m?U(t.schema.tryDefinition(m.kind),m):void 0,B=e=>`${e===1?`a ${F}`:`${e} ${T}`}${E?` to ${E}`:""}`,q=e=>`Add ${B(e)}`,C=e=>`Added ${B(e)}.`,N=`Drop to add ${T}${E?` to ${E}`:""}.`,I=(e,r,h,g)=>{let A=new Set(Object.keys(r)),b=z(h.at)??g??new Date().toISOString();for(let L of ne(e,A).timed)r[L]=oe(W(e)[L],b);for(let L of se(e,A))r[L]=me(h.name);return r},Z=(e,...r)=>new Set([...v.map(h=>h.field),...r,...H(e.input).map(h=>h.name)]),x=(e,...r)=>ne(e,Z(e,...r)).left,i=(e,r)=>p(`"${e.title??e.name}" asks for ${r.map(h=>`"${h}"`).join(" and ")}, which no dropped file says, so nothing dropped here can become a ${F}.`),o=(e,r)=>e.list?[r]:r,f={ok:!0,kind:l,fields:v,accept:pe(v,k),...c?{connect:c}:{},intent:q,invite:N,added:C};if(!c){let e=V.find(r=>!r.subject&&S({name:r.name,args:{}}));return e?x(e).length>0?i(e,x(e)):{...f,calls:r=>[{name:e.name,args:I(e,{[r.field]:o(v.find(h=>h.field===r.field),r.value)},r.value,r.at)}]}:p(`This seat may not make a "${l}" here.`)}let s=V.find(e=>e.subject&&(e.subject.kinds==="*"||e.subject.kinds.includes(m.kind))&&(e.connects??[]).includes(c.relation)&&S({name:e.name,args:{[e.subject.arg]:c.record}}));if(s){let e=s.subject.arg;return x(s,e).length>0?i(s,x(s,e)):{...f,calls:r=>[{name:s.name,args:I(s,{[e]:c.record,[r.field]:o(v.find(h=>h.field===r.field),r.value)},r.value,r.at)}]}}let u=V.find(e=>!e.subject&&S({name:e.name,args:{}}));if(!u)return p(`This seat may not make a "${l}" here.`);if(x(u).length>0)return i(u,x(u));let y=D?l:m.kind,P=D?m.kind:l,M=K.find(e=>{if(!(e.connects??[]).includes(c.relation)||!e.subject)return!1;let r=e.subject.kinds;if(r!=="*"&&!r.includes(y))return!1;let h=H(e.input).find(g=>g.name!==e.subject.arg&&(g.kinds.includes("*")||g.kinds.includes(P)));return h?S({name:e.name,args:D?{[h.name]:c.record}:{[e.subject.arg]:c.record}}):!1});if(!M)return p(`This seat may not link a "${l}" to ${c.record} by "${c.relation}".`);let G=M.subject.arg,_=H(M.input).find(e=>e.name!==G&&(e.kinds.includes("*")||e.kinds.includes(P))).name;return{...f,calls:(e,r)=>[{name:u.name,args:I(u,{[e.field]:o(v.find(h=>h.field===e.field),e.value)},e.value,e.at)},{name:M.name,args:D?{[G]:Q(r*2),[_]:c.record}:{[G]:c.record,[_]:Q(r*2)}}]}}var le=t=>t.type.startsWith("image/"),ye=t=>t.type.startsWith("video/"),he=`
2
2
  [data-graview-drop-over] { outline: 2px dashed var(--graview-accent, Highlight) !important; outline-offset: 2px !important; background-color: color-mix(in srgb, var(--graview-accent, Highlight) 10%, transparent) !important; }
3
3
  [data-graview-drop-status], [data-graview-drop-refused] { margin: 4px 0 0; font: 0.8125rem/1.4 var(--graview-font-body, system-ui, sans-serif); color: var(--graview-ink-muted, GrayText); }
4
4
  [data-graview-drop-refused] { color: var(--graview-warn, var(--graview-ink, CanvasText)); }
@@ -1 +1 @@
1
- import{C as O}from"./chunk.DZZL5IDD.js";var k=3,A=k+1,P=A+1,z=(o,r)=>o<r?-1:o>r?1:0;function L(o){return(o??0)>4?k:2}function N(o,r,a){let n=[];for(let d of Object.values(o.tryDefinition(r)?.edges??{}))if(d.to!=="*")for(let i of d.to)i!==r&&a.includes(i)&&!n.includes(i)&&n.push(i);return n}function W(o,r={}){let a=[...o.kinds],n=[...(r.order??[]).filter(e=>a.includes(e)),...a.filter(e=>!(r.order??[]).includes(e)).sort(z)].filter((e,t,s)=>s.indexOf(e)===t),d=e=>n.indexOf(e),i=new Map,g=[],h=(e,t,s)=>{i.set(e,{col:t,row:s,side:L(r.counts?.[e])}),g.push({col:t,row:s})};for(let e of n){let t=o.tryDefinition(e)?.plot??r.plots?.[e];t&&h(e,t.col,t.row)}let l=new Map(n.map(e=>[e,N(o,e,a)])),b=new Set(n.filter(e=>l.get(e).length>0||n.some(t=>l.get(t).includes(e)))),v=new Map,C=new Set,D=e=>{let t=v.get(e);if(t!==void 0)return t;if(C.has(e))return-1;C.add(e);let s=0;for(let c of l.get(e))s=Math.max(s,D(c)+1);return C.delete(e),v.set(e,s),s};for(let e of n)b.has(e)&&D(e);let f=[];for(let e of n)b.has(e)&&(f[v.get(e)]??=[]).push(e);let I=new Map,T=Math.max(1,Math.ceil(Math.sqrt(f.length))),H=Math.max(1,...f.map(e=>e?.length??0)),w=Math.max(P,Math.round(r.pitch??P)),R=(e,t)=>r.upright?{col:e%T*w,row:(Math.floor(e/T)*(H+1)+t)*w}:{col:t*w,row:e===0?0:-e*w},$=e=>!g.some(t=>V(t,e)),S=(e,t,s)=>{let c=s;for(;!$(R(t,c))&&c<s+64;)c++;return i.has(e)||h(e,R(t,c).col,R(t,c).row),c},x=0;f.forEach((e=[],t)=>{let s=u=>{let m=l.get(u).map(p=>I.get(p)).filter(p=>p!==void 0);return m.length>0?m.reduce((p,q)=>p+q,0)/m.length:1/0},c=[...e].sort((u,m)=>s(u)-s(m)||d(u)-d(m)),y=0;for(let u of c)i.has(u)||(y=S(u,t,y),I.set(u,y),x=Math.max(x,y+1),y++)});let j=n.filter(e=>!b.has(e)&&!i.has(e)),M=Math.max(r.upright?x:f.length,Math.ceil(Math.sqrt(j.length*2)),1),E=b.size>0?1:0;return j.forEach((e,t)=>{r.upright?S(e,f.length+E+Math.floor(t/M),t%M):S(e,t%M,x+E+Math.floor(t/M))}),i}function V(o,r){return Math.abs(o.col-r.col)<A&&Math.abs(o.row-r.row)<A}function X(o,r,a,n=.5){return{x:(o-r)*a/2,y:(o+r)*a*n/2}}var G=1,B=/^(done|completed?|closed|finished|shipped|sent|won|lost|passed|declined|dropped|answered|resolved|fixed|archived|cancell?ed|retired|released|published|delivered|paid|merged|rejected|written[-_ ]?up|out)$/i,F=/^(doing|in[-_ ]?progress|active|building|started|working|in[-_ ]?review|review(ing)?|fixing|ongoing|underway|testing|drafting|writing|running)$/i;function _(o,r,a){let n=O(o.tryDefinition(r)?.fields.shape?.[a]);for(;n&&n.innerType!==void 0&&n.type!=="enum";)n=O(n.innerType);if(n?.type!=="enum")return;let d=(n.entries?Object.values(n.entries):n.values??[]).filter(i=>typeof i=="string");return d.length>0?d:void 0}function J(o,r){let a=o.tryDefinition(r);if(!a)return;let n=a.lifecycle,d=Object.keys(a.fields.shape??{}),i=[n?.field,...d.filter(l=>/^(status|stage|state|phase)$/i.test(l))].find(l=>l!==void 0&&_(o,r,l)!==void 0);if(!i)return;let g=_(o,r,i),h=n?.field===i&&Array.isArray(n.retired)?n.retired:[];return{field:i,values:g,tiers:g.map(l=>h.includes(l)||B.test(l)?"done":F.test(l)?"active":"waiting")}}export{P as a,W as b,X as c,G as d,J as e};
1
+ import{C as O}from"./chunk.IQGSEAQ2.js";var k=3,A=k+1,P=A+1,z=(o,r)=>o<r?-1:o>r?1:0;function L(o){return(o??0)>4?k:2}function N(o,r,a){let n=[];for(let d of Object.values(o.tryDefinition(r)?.edges??{}))if(d.to!=="*")for(let i of d.to)i!==r&&a.includes(i)&&!n.includes(i)&&n.push(i);return n}function W(o,r={}){let a=[...o.kinds],n=[...(r.order??[]).filter(e=>a.includes(e)),...a.filter(e=>!(r.order??[]).includes(e)).sort(z)].filter((e,t,s)=>s.indexOf(e)===t),d=e=>n.indexOf(e),i=new Map,g=[],h=(e,t,s)=>{i.set(e,{col:t,row:s,side:L(r.counts?.[e])}),g.push({col:t,row:s})};for(let e of n){let t=o.tryDefinition(e)?.plot??r.plots?.[e];t&&h(e,t.col,t.row)}let l=new Map(n.map(e=>[e,N(o,e,a)])),b=new Set(n.filter(e=>l.get(e).length>0||n.some(t=>l.get(t).includes(e)))),v=new Map,C=new Set,D=e=>{let t=v.get(e);if(t!==void 0)return t;if(C.has(e))return-1;C.add(e);let s=0;for(let c of l.get(e))s=Math.max(s,D(c)+1);return C.delete(e),v.set(e,s),s};for(let e of n)b.has(e)&&D(e);let f=[];for(let e of n)b.has(e)&&(f[v.get(e)]??=[]).push(e);let I=new Map,T=Math.max(1,Math.ceil(Math.sqrt(f.length))),H=Math.max(1,...f.map(e=>e?.length??0)),w=Math.max(P,Math.round(r.pitch??P)),R=(e,t)=>r.upright?{col:e%T*w,row:(Math.floor(e/T)*(H+1)+t)*w}:{col:t*w,row:e===0?0:-e*w},$=e=>!g.some(t=>V(t,e)),S=(e,t,s)=>{let c=s;for(;!$(R(t,c))&&c<s+64;)c++;return i.has(e)||h(e,R(t,c).col,R(t,c).row),c},x=0;f.forEach((e=[],t)=>{let s=u=>{let m=l.get(u).map(p=>I.get(p)).filter(p=>p!==void 0);return m.length>0?m.reduce((p,q)=>p+q,0)/m.length:1/0},c=[...e].sort((u,m)=>s(u)-s(m)||d(u)-d(m)),y=0;for(let u of c)i.has(u)||(y=S(u,t,y),I.set(u,y),x=Math.max(x,y+1),y++)});let j=n.filter(e=>!b.has(e)&&!i.has(e)),M=Math.max(r.upright?x:f.length,Math.ceil(Math.sqrt(j.length*2)),1),E=b.size>0?1:0;return j.forEach((e,t)=>{r.upright?S(e,f.length+E+Math.floor(t/M),t%M):S(e,t%M,x+E+Math.floor(t/M))}),i}function V(o,r){return Math.abs(o.col-r.col)<A&&Math.abs(o.row-r.row)<A}function X(o,r,a,n=.5){return{x:(o-r)*a/2,y:(o+r)*a*n/2}}var G=1,B=/^(done|completed?|closed|finished|shipped|sent|won|lost|passed|declined|dropped|answered|resolved|fixed|archived|cancell?ed|retired|released|published|delivered|paid|merged|rejected|written[-_ ]?up|out)$/i,F=/^(doing|in[-_ ]?progress|active|building|started|working|in[-_ ]?review|review(ing)?|fixing|ongoing|underway|testing|drafting|writing|running)$/i;function _(o,r,a){let n=O(o.tryDefinition(r)?.fields.shape?.[a]);for(;n&&n.innerType!==void 0&&n.type!=="enum";)n=O(n.innerType);if(n?.type!=="enum")return;let d=(n.entries?Object.values(n.entries):n.values??[]).filter(i=>typeof i=="string");return d.length>0?d:void 0}function J(o,r){let a=o.tryDefinition(r);if(!a)return;let n=a.lifecycle,d=Object.keys(a.fields.shape??{}),i=[n?.field,...d.filter(l=>/^(status|stage|state|phase)$/i.test(l))].find(l=>l!==void 0&&_(o,r,l)!==void 0);if(!i)return;let g=_(o,r,i),h=n?.field===i&&Array.isArray(n.retired)?n.retired:[];return{field:i,values:g,tiers:g.map(l=>h.includes(l)||B.test(l)?"done":F.test(l)?"active":"waiting")}}export{P as a,W as b,X as c,G as d,J as e};
@@ -1 +1 @@
1
- var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{a as y}from"./chunk.UQQKDBIH.js";import{j as g}from"./chunk.AI34V6WV.js";import{G as R,Ia as m,T as c}from"./chunk.M7RESZB6.js";import{a as f}from"./chunk.SDO3U72B.js";import{ra as p}from"./chunk.DZZL5IDD.js";import{b as u}from"./chunk.AJZBJBMO.js";var o=u(R(),1);var r=u(c(),1),S,h=()=>S??=m(f(()=>(__graviewPreload(import.meta.url,["./chunk.NOGGSLVG.js","./chunk.EVBCEEQ4.js","./chunk.OWT3VVOT.js","./chunk.NHTGAP3G.js","./chunk.DZZL5IDD.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.AFNSAQEQ.js"))));function L(e){let[n,t]=(0,o.useState)(()=>h().current);return(0,o.useEffect)(()=>{if(!e||n)return;let i=!0;return h().load().then(a=>i&&t(a),()=>{}),()=>{i=!1}},[e,n]),n}function D(e,n){let t=L(n.length>0);return(0,o.useMemo)(()=>t?t.withLines(e,n):n,[t,e,n])}function I(e,n){let t=L(n.some(i=>i.shape));return(0,o.useMemo)(()=>{let i=new Map;if(!t)return i;for(let a of n){let l=t.ruleLine(a,e);l&&i.set(a.name,l)}return i},[t,e,n])}function M(e){let n=e.line;if(!(!n||e.message.endsWith(` \u2014 ${n.text}`)||e.message===b(e)))return e.message}function b(e){let n=e.line;return n?n.record!==void 0?`${n.record} \u2014 ${n.text}`:n.text:e.message}var P={name:{},op:{color:"var(--graview-ink-muted)",fontWeight:500},value:{fontWeight:600,fontVariantNumeric:"tabular-nums"},word:{color:"var(--graview-ink-muted)"},open:{color:"var(--graview-ink-faint)"},close:{color:"var(--graview-ink-faint)"}};function w({parts:e}){return(0,r.jsx)(r.Fragment,{children:e.map((n,t)=>(0,r.jsxs)("span",{children:[n.space?" ":"",(0,r.jsx)("span",{"data-graview-rule-part":n.as,style:P[n.as],children:n.text})]},t))})}function x(e,n){let t=p(e?.tryDefinition(n),n);return t.charAt(0).toUpperCase()+t.slice(1)}function C({line:e,schema:n,brand:t,lead:i=e.record===void 0?"kind":"record",stacked:a=!1,style:l}){let d=e.kind,s=i==="kind"?d?x(n,d):void 0:i==="record"?e.record:void 0,k=i==="kind"&&s?`${s}: ${e.said}`:i==="record"&&s?`${s} \u2014 ${e.said}`:e.said;return(0,r.jsxs)("span",{"data-graview-rule-line":"",style:{overflowWrap:"anywhere",...l},children:[(0,r.jsx)("span",{style:g,children:k}),(0,r.jsxs)("span",{"aria-hidden":"true",children:[i!=="none"&&d?(0,r.jsx)("span",{style:{display:"inline-flex",verticalAlign:"-0.1em",marginRight:"0.4em"},children:(0,r.jsx)(y,{kind:d,...n?{schema:n}:{},...t?{brand:t}:{},size:13})}):null,s?(0,r.jsxs)("span",{"data-graview-rule-head":"",style:{fontWeight:600,marginRight:i==="record"||a?0:"0.6em"},children:[s,i==="record"&&!a?(0,r.jsx)("span",{style:{color:"var(--graview-ink-faint)",fontWeight:400},children:" \u2014 "}):null]}):null,a&&s?(0,r.jsx)("br",{}):null,(0,r.jsx)(w,{parts:e.parts}),e.when&&e.when.length>0?(0,r.jsxs)("span",{"data-graview-rule-when":"",style:{color:"var(--graview-ink-faint)"},children:[", when ",(0,r.jsx)(w,{parts:e.when})]}):null]})]})}function z(e){return e.line?e.label&&e.label.trim().length>0?e.label:void 0:e.label&&e.label!==e.message&&!e.message.startsWith(e.label)?e.label:void 0}export{D as a,I as b,M as c,C as d,z as e};
1
+ var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{a as y}from"./chunk.2VYGDY5Z.js";import{k as g}from"./chunk.3FKKH2XU.js";import{G as R,Ka as m,V as c}from"./chunk.VLX7YWVH.js";import{a as f}from"./chunk.SDO3U72B.js";import{ta as p}from"./chunk.IQGSEAQ2.js";import{b as u}from"./chunk.AJZBJBMO.js";var o=u(R(),1);var r=u(c(),1),S,h=()=>S??=m(f(()=>(__graviewPreload(import.meta.url,["./chunk.YEXFVDRA.js","./chunk.TMHVYI5R.js","./chunk.R5MLRKAO.js","./chunk.YMXWS4XN.js","./chunk.IQGSEAQ2.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.E4TXLT25.js"))));function L(e){let[n,t]=(0,o.useState)(()=>h().current);return(0,o.useEffect)(()=>{if(!e||n)return;let i=!0;return h().load().then(a=>i&&t(a),()=>{}),()=>{i=!1}},[e,n]),n}function D(e,n){let t=L(n.length>0);return(0,o.useMemo)(()=>t?t.withLines(e,n):n,[t,e,n])}function I(e,n){let t=L(n.some(i=>i.shape));return(0,o.useMemo)(()=>{let i=new Map;if(!t)return i;for(let a of n){let l=t.ruleLine(a,e);l&&i.set(a.name,l)}return i},[t,e,n])}function M(e){let n=e.line;if(!(!n||e.message.endsWith(` \u2014 ${n.text}`)||e.message===b(e)))return e.message}function b(e){let n=e.line;return n?n.record!==void 0?`${n.record} \u2014 ${n.text}`:n.text:e.message}var P={name:{},op:{color:"var(--graview-ink-muted)",fontWeight:500},value:{fontWeight:600,fontVariantNumeric:"tabular-nums"},word:{color:"var(--graview-ink-muted)"},open:{color:"var(--graview-ink-faint)"},close:{color:"var(--graview-ink-faint)"}};function w({parts:e}){return(0,r.jsx)(r.Fragment,{children:e.map((n,t)=>(0,r.jsxs)("span",{children:[n.space?" ":"",(0,r.jsx)("span",{"data-graview-rule-part":n.as,style:P[n.as],children:n.text})]},t))})}function x(e,n){let t=p(e?.tryDefinition(n),n);return t.charAt(0).toUpperCase()+t.slice(1)}function C({line:e,schema:n,brand:t,lead:i=e.record===void 0?"kind":"record",stacked:a=!1,style:l}){let d=e.kind,s=i==="kind"?d?x(n,d):void 0:i==="record"?e.record:void 0,k=i==="kind"&&s?`${s}: ${e.said}`:i==="record"&&s?`${s} \u2014 ${e.said}`:e.said;return(0,r.jsxs)("span",{"data-graview-rule-line":"",style:{overflowWrap:"anywhere",...l},children:[(0,r.jsx)("span",{style:g,children:k}),(0,r.jsxs)("span",{"aria-hidden":"true",children:[i!=="none"&&d?(0,r.jsx)("span",{style:{display:"inline-flex",verticalAlign:"-0.1em",marginRight:"0.4em"},children:(0,r.jsx)(y,{kind:d,...n?{schema:n}:{},...t?{brand:t}:{},size:13})}):null,s?(0,r.jsxs)("span",{"data-graview-rule-head":"",style:{fontWeight:600,marginRight:i==="record"||a?0:"0.6em"},children:[s,i==="record"&&!a?(0,r.jsx)("span",{style:{color:"var(--graview-ink-faint)",fontWeight:400},children:" \u2014 "}):null]}):null,a&&s?(0,r.jsx)("br",{}):null,(0,r.jsx)(w,{parts:e.parts}),e.when&&e.when.length>0?(0,r.jsxs)("span",{"data-graview-rule-when":"",style:{color:"var(--graview-ink-faint)"},children:[", when ",(0,r.jsx)(w,{parts:e.when})]}):null]})]})}function z(e){return e.line?e.label&&e.label.trim().length>0?e.label:void 0:e.label&&e.label!==e.message&&!e.message.startsWith(e.label)?e.label:void 0}export{D as a,I as b,M as c,C as d,z as e};
@@ -1 +1 @@
1
- import"./chunk.AI34V6WV.js";import"./chunk.G4ULQK64.js";import{G as W,T as x}from"./chunk.M7RESZB6.js";import"./chunk.SDO3U72B.js";import"./chunk.DZZL5IDD.js";import"./chunk.FQLNBIQ5.js";import{b as D}from"./chunk.AJZBJBMO.js";var g=D(W(),1);var o=D(x(),1),v=864e5,l=t=>Date.UTC(+t.slice(0,4),+t.slice(5,7)-1,+t.slice(8,10)),I=t=>new Date(t).toISOString().slice(0,10),s=(t,i)=>I(l(t)+i*v),m=(t,i)=>{let a=new Date(l(t)),u=a.getUTCMonth()+i,d=Date.UTC(a.getUTCFullYear(),u,1),w=new Date(Date.UTC(a.getUTCFullYear(),u+1,0)).getUTCDate();return I(d+(Math.min(a.getUTCDate(),w)-1)*v)};function p(t,i,a){try{return new Intl.DateTimeFormat(t??"en-US",{...i,timeZone:"UTC"}).format(a)}catch{return new Intl.DateTimeFormat("en-US",{...i,timeZone:"UTC"}).format(a)}}function F(t){try{let i=new Intl.Locale(t??"en-US"),a=i.getWeekInfo?.().firstDay??i.weekInfo?.firstDay;if(a!==void 0)return a%7}catch{return 0}return/^en-US|^en$|-(US|CA|JP|BR|IL|MX|PH)$/.test(t??"en-US")?0:1}function H({id:t,label:i,selected:a,today:u,locale:d,onPick:w,onClose:T}){let[r,f]=(0,g.useState)(a??u),U=(0,g.useRef)(null),y=F(d),b=`${r.slice(0,7)}-01`,M=(new Date(l(b)).getUTCDay()-y+7)%7,P=s(b,-M),A=Array.from({length:6},(e,n)=>Array.from({length:7},(S,c)=>s(P,n*7+c))),$=p(d,{month:"long",year:"numeric"},l(b)),h=(0,g.useRef)(!0);(0,g.useEffect)(()=>{h.current&&U.current?.querySelector(`[data-day="${r}"]`)?.focus(),h.current=!1},[r]);let E=e=>{let n={ArrowLeft:()=>s(r,-1),ArrowRight:()=>s(r,1),ArrowUp:()=>s(r,-7),ArrowDown:()=>s(r,7),PageUp:()=>m(r,e.shiftKey?-12:-1),PageDown:()=>m(r,e.shiftKey?12:1),Home:()=>s(r,-((new Date(l(r)).getUTCDay()-y+7)%7)),End:()=>s(r,6-(new Date(l(r)).getUTCDay()-y+7)%7)};n[e.key]?(e.preventDefault(),h.current=!0,f(n[e.key]())):e.key==="Escape"&&(e.preventDefault(),e.stopPropagation(),T())},R=Array.from({length:7},(e,n)=>l("1970-01-04")+(y+n)%7*v),C={minWidth:32,minHeight:32,padding:"0 8px",borderRadius:6};return(0,o.jsxs)("div",{id:t,role:"group","aria-label":`Pick a date for ${i}`,"data-graview-part":"when-month",onKeyDown:e=>{e.key==="Escape"&&(e.preventDefault(),e.stopPropagation(),T())},style:{flexBasis:"100%",width:"min(100%, 20rem)",boxSizing:"border-box",padding:8,border:"1px solid var(--graview-edge)",borderRadius:8,background:"var(--graview-panel)",color:"var(--graview-ink)"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:6,marginBottom:6},children:[(0,o.jsx)("button",{type:"button","aria-label":"Previous month",onClick:()=>f(m(r,-1)),style:C,children:"\u2039"}),(0,o.jsx)("span",{id:`${t}-title`,"aria-live":"polite",style:{fontWeight:600,fontSize:"0.875rem"},children:$}),(0,o.jsx)("button",{type:"button","aria-label":"Next month",onClick:()=>f(m(r,1)),style:C,children:"\u203A"})]}),(0,o.jsxs)("table",{ref:U,role:"grid","aria-labelledby":`${t}-title`,onKeyDown:E,style:{width:"100%",borderCollapse:"collapse",tableLayout:"fixed",fontSize:"0.8125rem"},children:[(0,o.jsx)("thead",{children:(0,o.jsx)("tr",{children:R.map(e=>(0,o.jsx)("th",{scope:"col",abbr:p(d,{weekday:"long"},e),style:{fontWeight:500,color:"var(--graview-ink-faint)",padding:"2px 0"},children:p(d,{weekday:"narrow"},e)},e))})}),(0,o.jsx)("tbody",{children:A.map(e=>(0,o.jsx)("tr",{children:e.map(n=>{let S=n.slice(0,7)===b.slice(0,7),c=n===a,k=n===u;return(0,o.jsx)("td",{role:"gridcell","aria-selected":c||void 0,style:{padding:1,textAlign:"center"},children:(0,o.jsx)("button",{type:"button","data-day":n,tabIndex:n===r?0:-1,"aria-label":`${p(d,{weekday:"long",year:"numeric",month:"long",day:"numeric"},l(n))}${k?", today":""}${c?", selected":""}`,...k?{"aria-current":"date"}:{},onClick:()=>w(n),onFocus:()=>n!==r&&f(n),style:{width:"100%",minHeight:36,padding:0,borderRadius:6,border:k?"1px solid var(--graview-accent)":"1px solid transparent",background:c?"var(--graview-accent)":"transparent",color:c?"var(--graview-accent-ink)":S?"var(--graview-ink)":"var(--graview-ink-faint)",fontWeight:c?600:400},children:Number(n.slice(8,10))})},n)})},e[0]))})]})]})}export{H as WhenMonth};
1
+ import"./chunk.3FKKH2XU.js";import"./chunk.DLWFULWE.js";import{G as W,V as x}from"./chunk.VLX7YWVH.js";import"./chunk.SDO3U72B.js";import"./chunk.IQGSEAQ2.js";import"./chunk.FQLNBIQ5.js";import{b as D}from"./chunk.AJZBJBMO.js";var g=D(W(),1);var o=D(x(),1),v=864e5,l=t=>Date.UTC(+t.slice(0,4),+t.slice(5,7)-1,+t.slice(8,10)),I=t=>new Date(t).toISOString().slice(0,10),s=(t,i)=>I(l(t)+i*v),m=(t,i)=>{let a=new Date(l(t)),u=a.getUTCMonth()+i,d=Date.UTC(a.getUTCFullYear(),u,1),w=new Date(Date.UTC(a.getUTCFullYear(),u+1,0)).getUTCDate();return I(d+(Math.min(a.getUTCDate(),w)-1)*v)};function p(t,i,a){try{return new Intl.DateTimeFormat(t??"en-US",{...i,timeZone:"UTC"}).format(a)}catch{return new Intl.DateTimeFormat("en-US",{...i,timeZone:"UTC"}).format(a)}}function F(t){try{let i=new Intl.Locale(t??"en-US"),a=i.getWeekInfo?.().firstDay??i.weekInfo?.firstDay;if(a!==void 0)return a%7}catch{return 0}return/^en-US|^en$|-(US|CA|JP|BR|IL|MX|PH)$/.test(t??"en-US")?0:1}function H({id:t,label:i,selected:a,today:u,locale:d,onPick:w,onClose:T}){let[r,f]=(0,g.useState)(a??u),U=(0,g.useRef)(null),y=F(d),b=`${r.slice(0,7)}-01`,M=(new Date(l(b)).getUTCDay()-y+7)%7,P=s(b,-M),A=Array.from({length:6},(e,n)=>Array.from({length:7},(S,c)=>s(P,n*7+c))),$=p(d,{month:"long",year:"numeric"},l(b)),h=(0,g.useRef)(!0);(0,g.useEffect)(()=>{h.current&&U.current?.querySelector(`[data-day="${r}"]`)?.focus(),h.current=!1},[r]);let E=e=>{let n={ArrowLeft:()=>s(r,-1),ArrowRight:()=>s(r,1),ArrowUp:()=>s(r,-7),ArrowDown:()=>s(r,7),PageUp:()=>m(r,e.shiftKey?-12:-1),PageDown:()=>m(r,e.shiftKey?12:1),Home:()=>s(r,-((new Date(l(r)).getUTCDay()-y+7)%7)),End:()=>s(r,6-(new Date(l(r)).getUTCDay()-y+7)%7)};n[e.key]?(e.preventDefault(),h.current=!0,f(n[e.key]())):e.key==="Escape"&&(e.preventDefault(),e.stopPropagation(),T())},R=Array.from({length:7},(e,n)=>l("1970-01-04")+(y+n)%7*v),C={minWidth:32,minHeight:32,padding:"0 8px",borderRadius:6};return(0,o.jsxs)("div",{id:t,role:"group","aria-label":`Pick a date for ${i}`,"data-graview-part":"when-month",onKeyDown:e=>{e.key==="Escape"&&(e.preventDefault(),e.stopPropagation(),T())},style:{flexBasis:"100%",width:"min(100%, 20rem)",boxSizing:"border-box",padding:8,border:"1px solid var(--graview-edge)",borderRadius:8,background:"var(--graview-panel)",color:"var(--graview-ink)"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:6,marginBottom:6},children:[(0,o.jsx)("button",{type:"button","aria-label":"Previous month",onClick:()=>f(m(r,-1)),style:C,children:"\u2039"}),(0,o.jsx)("span",{id:`${t}-title`,"aria-live":"polite",style:{fontWeight:600,fontSize:"0.875rem"},children:$}),(0,o.jsx)("button",{type:"button","aria-label":"Next month",onClick:()=>f(m(r,1)),style:C,children:"\u203A"})]}),(0,o.jsxs)("table",{ref:U,role:"grid","aria-labelledby":`${t}-title`,onKeyDown:E,style:{width:"100%",borderCollapse:"collapse",tableLayout:"fixed",fontSize:"0.8125rem"},children:[(0,o.jsx)("thead",{children:(0,o.jsx)("tr",{children:R.map(e=>(0,o.jsx)("th",{scope:"col",abbr:p(d,{weekday:"long"},e),style:{fontWeight:500,color:"var(--graview-ink-faint)",padding:"2px 0"},children:p(d,{weekday:"narrow"},e)},e))})}),(0,o.jsx)("tbody",{children:A.map(e=>(0,o.jsx)("tr",{children:e.map(n=>{let S=n.slice(0,7)===b.slice(0,7),c=n===a,k=n===u;return(0,o.jsx)("td",{role:"gridcell","aria-selected":c||void 0,style:{padding:1,textAlign:"center"},children:(0,o.jsx)("button",{type:"button","data-day":n,tabIndex:n===r?0:-1,"aria-label":`${p(d,{weekday:"long",year:"numeric",month:"long",day:"numeric"},l(n))}${k?", today":""}${c?", selected":""}`,...k?{"aria-current":"date"}:{},onClick:()=>w(n),onFocus:()=>n!==r&&f(n),style:{width:"100%",minHeight:36,padding:0,borderRadius:6,border:k?"1px solid var(--graview-accent)":"1px solid transparent",background:c?"var(--graview-accent)":"transparent",color:c?"var(--graview-accent-ink)":S?"var(--graview-ink)":"var(--graview-ink-faint)",fontWeight:c?600:400},children:Number(n.slice(8,10))})},n)})},e[0]))})]})]})}export{H as WhenMonth};