graview 0.1.48 → 0.1.49

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 (171) 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.TKMQROXF.js → chunk.2CO2EJQA.js} +1 -1
  5. package/dist/preview/{chunk.D5ETRTAF.js → chunk.2N6RQ427.js} +1 -1
  6. package/dist/preview/{chunk.FOP5RBGF.js → chunk.2OLZ6BYI.js} +1 -1
  7. package/dist/preview/{chunk.X7N3JUO4.js → chunk.2OXXGN7C.js} +2 -2
  8. package/dist/preview/{chunk.QII2C5OV.js → chunk.2QKSWK4U.js} +1 -1
  9. package/dist/preview/chunk.35FUGOSG.js +1 -0
  10. package/dist/preview/{chunk.X7JMJSLU.js → chunk.3EW6L5DY.js} +1 -1
  11. package/dist/preview/chunk.3NEALGMI.js +1 -0
  12. package/dist/preview/{chunk.2UIUMG23.js → chunk.423SZS7C.js} +3 -3
  13. package/dist/preview/{chunk.HKA5T7DL.js → chunk.4D26JY5U.js} +1 -1
  14. package/dist/preview/{chunk.5A4AOFOA.js → chunk.4HUB3N7I.js} +1 -1
  15. package/dist/preview/chunk.4K7I7WYF.js +1 -0
  16. package/dist/preview/{chunk.OZGETOTK.js → chunk.4OTESF7W.js} +1 -1
  17. package/dist/preview/{chunk.NWT5FPEK.js → chunk.4Q5KWYVY.js} +18 -18
  18. package/dist/preview/{chunk.LNON6P7K.js → chunk.4QINLTDZ.js} +1 -1
  19. package/dist/preview/{chunk.UJRBOUGC.js → chunk.4SEY7VWZ.js} +1 -1
  20. package/dist/preview/{chunk.37CJSWLL.js → chunk.4XKACWLT.js} +1 -1
  21. package/dist/preview/chunk.52QB4YW2.js +1 -0
  22. package/dist/preview/{chunk.HG4DDNPG.js → chunk.54PZWX23.js} +1 -1
  23. package/dist/preview/{chunk.FPYL6REZ.js → chunk.5YFO6D7J.js} +1 -1
  24. package/dist/preview/chunk.6EGHJCEM.js +1 -0
  25. package/dist/preview/{chunk.XTMOFRHL.js → chunk.6EHE26ZS.js} +1 -1
  26. package/dist/preview/{chunk.3BAHAK6W.js → chunk.6RLFO5GA.js} +1 -1
  27. package/dist/preview/chunk.6WRA3Y7D.js +1 -0
  28. package/dist/preview/{chunk.BDHKWVNX.js → chunk.7C4IR4S7.js} +1 -1
  29. package/dist/preview/{chunk.MZLWLIKR.js → chunk.7JLYEZW4.js} +1 -1
  30. package/dist/preview/{chunk.GACKGEUY.js → chunk.7JW5SHRR.js} +1 -1
  31. package/dist/preview/{chunk.I7QIHN66.js → chunk.7MJGZHTS.js} +1 -1
  32. package/dist/preview/{chunk.KW65F4WA.js → chunk.7MWLDDFL.js} +1 -1
  33. package/dist/preview/{chunk.IRHSTUZM.js → chunk.7SGQ3HFG.js} +1 -1
  34. package/dist/preview/{chunk.N4M54YK6.js → chunk.A7HMVWMG.js} +1 -1
  35. package/dist/preview/{chunk.UGJSMNVO.js → chunk.AGVFW6WC.js} +1 -1
  36. package/dist/preview/{chunk.NQZ73QV7.js → chunk.AOEXSQDG.js} +1 -1
  37. package/dist/preview/{chunk.GUMJEVVP.js → chunk.AP22NNIM.js} +1 -1
  38. package/dist/preview/{chunk.PPRSGM64.js → chunk.AVDXG57A.js} +1 -1
  39. package/dist/preview/{chunk.EMQ5POGB.js → chunk.B2BLZDBD.js} +1 -1
  40. package/dist/preview/chunk.B445DZOY.js +1 -0
  41. package/dist/preview/{chunk.GNBN3BK7.js → chunk.BH365UJ5.js} +1 -1
  42. package/dist/preview/{chunk.PMJUGHW4.js → chunk.BJR6E2CT.js} +1 -1
  43. package/dist/preview/{chunk.GT3F6FQ6.js → chunk.BNU3KXKL.js} +1 -1
  44. package/dist/preview/{chunk.GH2SWMCW.js → chunk.BTORFVKO.js} +1 -1
  45. package/dist/preview/{chunk.76W2FXEC.js → chunk.BU6V76EF.js} +1 -1
  46. package/dist/preview/{chunk.QQTRAY5W.js → chunk.BVXOLZQ3.js} +1 -1
  47. package/dist/preview/{chunk.VQAQQW4Q.js → chunk.C75I24Z5.js} +1 -1
  48. package/dist/preview/{chunk.J6ANRF6E.js → chunk.CXIIRL67.js} +1 -1
  49. package/dist/preview/{chunk.SKJJBLXF.js → chunk.D25QV6DK.js} +1 -1
  50. package/dist/preview/{chunk.TMDI7KRS.js → chunk.D4IKO5YA.js} +3 -3
  51. package/dist/preview/{chunk.MAFFUPCR.js → chunk.D4K23FUB.js} +1 -1
  52. package/dist/preview/{chunk.ZH4NWRWB.js → chunk.D53IGR45.js} +1 -1
  53. package/dist/preview/chunk.D66RI4QS.js +1 -0
  54. package/dist/preview/{chunk.KVEDIBXS.js → chunk.DFGXNFFE.js} +1 -1
  55. package/dist/preview/{chunk.QPICKSSM.js → chunk.DSNHE4MZ.js} +1 -1
  56. package/dist/preview/{chunk.NFDLCUCC.js → chunk.DTRNDSMS.js} +1 -1
  57. package/dist/preview/{chunk.4KX53HCV.js → chunk.DV4GSLGX.js} +2 -2
  58. package/dist/preview/{chunk.DPHTUTOS.js → chunk.EJAVIZ7Y.js} +1 -1
  59. package/dist/preview/{chunk.YDL5BSTG.js → chunk.EM5CGFNB.js} +1 -1
  60. package/dist/preview/chunk.EPTUOPPC.js +1 -0
  61. package/dist/preview/{chunk.44G5A53D.js → chunk.ERWBI2NK.js} +1 -1
  62. package/dist/preview/chunk.EYSQPXVE.js +2 -0
  63. package/dist/preview/{chunk.DAUC2DFY.js → chunk.FIS27KW4.js} +1 -1
  64. package/dist/preview/chunk.FNK2ZZ5E.js +1 -0
  65. package/dist/preview/{chunk.RQBEQYB2.js → chunk.FOYVTN5B.js} +1 -1
  66. package/dist/preview/{chunk.I5TOMBIF.js → chunk.FUMQLGNM.js} +1 -1
  67. package/dist/preview/chunk.G25JEYCC.js +1 -0
  68. package/dist/preview/{chunk.2VTMTW7K.js → chunk.G3Q5CYEM.js} +1 -1
  69. package/dist/preview/{chunk.7LL7OSBY.js → chunk.GEY4MA4D.js} +2 -2
  70. package/dist/preview/{chunk.KVJFY7N5.js → chunk.GRLPNTUW.js} +1 -1
  71. package/dist/preview/{chunk.6TKILWRM.js → chunk.H42WBU5C.js} +1 -1
  72. package/dist/preview/{chunk.TBRJOKIK.js → chunk.IQHVVQEA.js} +1 -1
  73. package/dist/preview/{chunk.DWPU56S5.js → chunk.IVHPJUFM.js} +1 -1
  74. package/dist/preview/{chunk.QO7MDWID.js → chunk.IWEPDTVG.js} +1 -1
  75. package/dist/preview/{chunk.PVEPU6EA.js → chunk.IYLOA3MV.js} +1 -1
  76. package/dist/preview/chunk.JBG5UQLM.js +1 -0
  77. package/dist/preview/{chunk.DOBQ4LO4.js → chunk.KDTNKKOY.js} +1 -1
  78. package/dist/preview/chunk.KJBXNMIU.js +21 -0
  79. package/dist/preview/chunk.KLAEKRCA.js +1 -0
  80. package/dist/preview/{chunk.Z4UM4CMT.js → chunk.KQSD5MLY.js} +1 -1
  81. package/dist/preview/{chunk.ETR6AV47.js → chunk.KVEDMKUN.js} +1 -1
  82. package/dist/preview/{chunk.5Y3Q7ONN.js → chunk.LD6S2FL5.js} +1 -1
  83. package/dist/preview/{chunk.DFK2NA6L.js → chunk.LUL6PFIQ.js} +1 -1
  84. package/dist/preview/chunk.MCFLCC42.js +12 -0
  85. package/dist/preview/{chunk.2GLJH253.js → chunk.MJ4XTNTL.js} +1 -1
  86. package/dist/preview/{chunk.CJ23XTSW.js → chunk.MU5WUTVF.js} +1 -1
  87. package/dist/preview/{chunk.P6FQAILU.js → chunk.MUHFZXPS.js} +1 -1
  88. package/dist/preview/{chunk.NLBIX7LH.js → chunk.N2S3TMBC.js} +1 -1
  89. package/dist/preview/{chunk.DUWYF7BO.js → chunk.N2S45SSL.js} +1 -1
  90. package/dist/preview/{chunk.PCEYZQAW.js → chunk.NBJ4C33P.js} +1 -1
  91. package/dist/preview/{chunk.E5GM2SMO.js → chunk.NQ7SRWXA.js} +1 -1
  92. package/dist/preview/chunk.NQDGUIUQ.js +1 -0
  93. package/dist/preview/{chunk.QQCDCRR2.js → chunk.NUUT37ER.js} +1 -1
  94. package/dist/preview/{chunk.LXCJVZF3.js → chunk.O3ONLQUF.js} +1 -1
  95. package/dist/preview/{chunk.QGE6YKSU.js → chunk.OFBESPHJ.js} +1 -1
  96. package/dist/preview/chunk.OKHEZJBX.js +1 -0
  97. package/dist/preview/{chunk.LPD74WBI.js → chunk.OL5D7YTW.js} +1 -1
  98. package/dist/preview/{chunk.ENPCLMP2.js → chunk.ON35FJ5H.js} +1 -1
  99. package/dist/preview/{chunk.GVNYPFIM.js → chunk.OS75HEZP.js} +1 -1
  100. package/dist/preview/{chunk.6VAFNCR4.js → chunk.OTF3NNTI.js} +1 -1
  101. package/dist/preview/{chunk.OVO6L5IP.js → chunk.P2AC6JRL.js} +1 -1
  102. package/dist/preview/chunk.PBCT33FF.js +1 -0
  103. package/dist/preview/{chunk.PTXLOFQW.js → chunk.PCVU3LY3.js} +1 -1
  104. package/dist/preview/chunk.PFEKS3KO.js +5 -0
  105. package/dist/preview/chunk.PFR3FQBR.js +1 -0
  106. package/dist/preview/{chunk.NTLHEHOM.js → chunk.Q4KNNJFL.js} +1 -1
  107. package/dist/preview/{chunk.PQVUQVRL.js → chunk.QBHVBL42.js} +1 -1
  108. package/dist/preview/{chunk.G7WDMUDV.js → chunk.QPNFWP4Z.js} +1 -1
  109. package/dist/preview/{chunk.OFRGDJYX.js → chunk.QQE7N7LB.js} +1 -1
  110. package/dist/preview/{chunk.MVRG75ZD.js → chunk.QQRLUBWQ.js} +1 -1
  111. package/dist/preview/{chunk.2QNGGF55.js → chunk.QWX2N2VD.js} +2 -2
  112. package/dist/preview/chunk.R5IRHCLZ.js +1 -0
  113. package/dist/preview/{chunk.YVOABA2U.js → chunk.REANMQ6K.js} +1 -1
  114. package/dist/preview/{chunk.MVSV7T6E.js → chunk.RI624PFK.js} +1 -1
  115. package/dist/preview/{chunk.W72TTRLX.js → chunk.RMWLV3PR.js} +6 -6
  116. package/dist/preview/{chunk.DHAK6PPX.js → chunk.RSR2M7ZO.js} +2 -2
  117. package/dist/preview/{chunk.EXEZBZGW.js → chunk.SGJSJGSR.js} +1 -1
  118. package/dist/preview/{chunk.NR5ODXMO.js → chunk.SIVMZNHZ.js} +1 -1
  119. package/dist/preview/{chunk.4VW6THJF.js → chunk.SPZVEQC5.js} +1 -1
  120. package/dist/preview/chunk.SR2345SW.js +1 -0
  121. package/dist/preview/chunk.ST4JHXPS.js +1 -0
  122. package/dist/preview/{chunk.KTFUVR4V.js → chunk.TABIRLQS.js} +1 -1
  123. package/dist/preview/{chunk.SFAAM4KE.js → chunk.TBA4GF34.js} +1 -1
  124. package/dist/preview/{chunk.HDE2MGGU.js → chunk.THENABJU.js} +1 -1
  125. package/dist/preview/{chunk.KA44WNB4.js → chunk.TM6JVVGW.js} +1 -1
  126. package/dist/preview/{chunk.CH5ROV7N.js → chunk.TSHBXCMU.js} +1 -1
  127. package/dist/preview/{chunk.J2V76Z6G.js → chunk.UL43GFVC.js} +1 -1
  128. package/dist/preview/{chunk.5IPH2SCE.js → chunk.UTRIPGW6.js} +1 -1
  129. package/dist/preview/{chunk.Y4MQGEUS.js → chunk.VSWEKNKS.js} +2 -2
  130. package/dist/preview/chunk.VV3PNZPI.js +1 -0
  131. package/dist/preview/chunk.W6CGAPNQ.js +1 -0
  132. package/dist/preview/{chunk.V2GSBYDK.js → chunk.WQN7EFW3.js} +2 -2
  133. package/dist/preview/{chunk.ODRL5OWR.js → chunk.X4MTZKL3.js} +1 -1
  134. package/dist/preview/{chunk.3UD7GG5B.js → chunk.XJ7YGW6Y.js} +1 -1
  135. package/dist/preview/{chunk.5IM645XQ.js → chunk.XMOIMPUC.js} +1 -1
  136. package/dist/preview/{chunk.7VT3TRHR.js → chunk.XN7PIWVC.js} +1 -1
  137. package/dist/preview/{chunk.3RP3N2JP.js → chunk.XXZFWZ4C.js} +1 -1
  138. package/dist/preview/{chunk.V4BCB7N2.js → chunk.YECMUK4X.js} +1 -1
  139. package/dist/preview/{chunk.SA34Y3X5.js → chunk.YSFNPYCD.js} +1 -1
  140. package/dist/preview/{chunk.RLXKDXPB.js → chunk.YXOJKGRC.js} +1 -1
  141. package/dist/preview/{chunk.EZJNUFNQ.js → chunk.ZBL47SFK.js} +1 -1
  142. package/dist/preview/{chunk.HC5N3CT2.js → chunk.ZILULTJJ.js} +1 -1
  143. package/dist/preview/index.html +49 -49
  144. package/dist/preview/page.js +2 -2
  145. package/package.json +6 -6
  146. package/dist/preview/chunk.4GQA3AJU.js +0 -1
  147. package/dist/preview/chunk.4TJOS4C7.js +0 -5
  148. package/dist/preview/chunk.664PBQAQ.js +0 -1
  149. package/dist/preview/chunk.72OZLWJL.js +0 -1
  150. package/dist/preview/chunk.72W6S746.js +0 -1
  151. package/dist/preview/chunk.7FRPNQU4.js +0 -1
  152. package/dist/preview/chunk.7QZYFLBS.js +0 -1
  153. package/dist/preview/chunk.B2IIEVBF.js +0 -21
  154. package/dist/preview/chunk.DQ7M3LFV.js +0 -1
  155. package/dist/preview/chunk.FQYOTK34.js +0 -1
  156. package/dist/preview/chunk.GTPC6JOW.js +0 -2
  157. package/dist/preview/chunk.ILZYRJDS.js +0 -1
  158. package/dist/preview/chunk.LGSFGNWE.js +0 -1
  159. package/dist/preview/chunk.MTXEURFE.js +0 -1
  160. package/dist/preview/chunk.NX7IIZLO.js +0 -1
  161. package/dist/preview/chunk.O45VO36H.js +0 -1
  162. package/dist/preview/chunk.OAIWGWGU.js +0 -3
  163. package/dist/preview/chunk.SAHNXAV3.js +0 -1
  164. package/dist/preview/chunk.SUPWMV2F.js +0 -1
  165. package/dist/preview/chunk.TPG6IY4M.js +0 -1
  166. package/dist/preview/chunk.V3N34DSU.js +0 -1
  167. package/dist/preview/chunk.X5G7FOPY.js +0 -12
  168. package/dist/preview/chunk.YEVA72L2.js +0 -1
  169. package/dist/preview/chunk.YLWON7X3.js +0 -1
  170. package/dist/preview/chunk.YUH43J2K.js +0 -1
  171. package/dist/preview/chunk.ZXZNAG35.js +0 -1
@@ -1,21 +0,0 @@
1
- var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{a as dt,b as gt,c as mt,d as yt,e as ht,f as wt,g as vt}from"./chunk.GVNYPFIM.js";import{a as ft,b as Se,c as bt}from"./chunk.ETR6AV47.js";import{g as lt}from"./chunk.BRDAO2OF.js";import{e as pt}from"./chunk.I5TOMBIF.js";import{c as ut,f as ct,g as xe}from"./chunk.QQTRAY5W.js";import{b as ie,d as ae}from"./chunk.DOBQ4LO4.js";import{a as ke,e as at}from"./chunk.BBLIT7S7.js";import{a as oe,f as ot,h as it}from"./chunk.6TKILWRM.js";import"./chunk.PXQVXBNG.js";import"./chunk.G446PWV6.js";import{a as D}from"./chunk.SDO3U72B.js";import"./chunk.4TJOS4C7.js";import"./chunk.2AZTW66C.js";import"./chunk.AJZBJBMO.js";var kt=["good","warn","bad","neutral","accent"],xt=["value","max","aria-label","placeholder","disabled"],St=["click","change"],Te=["_blank","_self"],Tt=["section","div","span","strong","p","hr","a","button","input","progress"],de={type:{oneOf:kt}},Me={"gv-card":{host:"section",properties:{tone:de},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:de},events:{},children:"text"},"gv-badge":{host:"span",properties:{tone:de},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:de,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"}},Ee=1e4;var Dt=0,jt=1,Bt=2,Ut=3,Mt=1,$t=2,Ft=3,zt=1,qt=3,Xt=8,Ke="~",Re=(n,e)=>Object.prototype.hasOwnProperty.call(n,e),J=n=>typeof n=="object"&&n!==null&&!Array.isArray(n);function Et(n,e){return e.type==="url"?"href":e.as??`data-gv-${n.toLowerCase()}`}var Yt=2e3;function Kt(n,e){if(e==null)return{ok:!0,value:null};let d=n.type;if(d==="boolean")return typeof e=="boolean"?{ok:!0,value:e}:{ok:!1,reason:"value"};if(d==="number")return typeof e=="number"&&Number.isFinite(e)?{ok:!0,value:String(e)}:{ok:!1,reason:"value"};if(typeof e!="string"||e.length>Yt)return{ok:!1,reason:d==="url"?"url":"value"};if(typeof d=="object")return d.oneOf.includes(e)?{ok:!0,value:e}:{ok:!1,reason:"value"};if(d==="url"){let m;try{m=new URL(e)}catch{return{ok:!1,reason:"url"}}return m.protocol!=="https:"||m.hostname===""||!/^https:\/\//i.test(e)?{ok:!1,reason:"url"}:{ok:!0,value:m.href}}return{ok:!0,value:e}}function Jt(n){let e=n.host==="a";return Tt.includes(n.host)&&(n.target===void 0||e&&Te.includes(n.target))&&Object.values(n.properties).every(d=>d.type!=="url"||e)&&Object.values(n.properties).every(d=>d.as===void 0||d.type!=="url"&&xt.includes(d.as))&&Object.values(n.events).every(d=>St.includes(d.from))}function Ge(n,e){let d=e.kit??Me,m=e.maxNodes??2e3,s=n.ownerDocument,y=[],w=new Map,W={dom:n,name:Ke,component:{host:"div",properties:{},events:{},children:"any"},children:[],listeners:new Map,id:Ke};w.set(Ke,W);let R=e.links?new Set(e.links.origins.flatMap(r=>{try{let l=new URL(r);return l.protocol==="https:"&&l.hostname!==""?[l.origin]:[]}catch{return[]}})):void 0,_=0,E=0,O=!1,p=r=>{y.push(r),y.length>200&&y.shift()},K=()=>({dom:s.createComment(""),children:[],refused:!0,listeners:new Map}),M=(r,l,h)=>{let u=r.component;if(!Re(u.properties,l))return p({reason:"property",element:r.name,name:l});let o=u.properties[l],g=Kt(o,h),v=g.ok&&o.type==="url"&&R&&typeof g.value=="string"&&!R.has(new URL(g.value).origin)?{ok:!1,reason:"url"}:g,T=r.dom,f=Et(l,o);if(!v.ok)return T.removeAttribute(f),p({reason:v.reason,element:r.name,name:l});let L=v.value;L===null||L===!1?T.removeAttribute(f):T.setAttribute(f,L===!0?"":L),f==="value"&&"value"in T&&(T.value=typeof L=="string"?L:""),f==="disabled"&&"disabled"in T&&(T.disabled=L!==null&&L!==!1)},k=(r,l,h)=>{let u=r.component;if(!Re(u.events,l))return p({reason:"event",element:r.name,name:l});let o=r.listeners.get(l);if(o&&(o(),r.listeners.delete(l),E-=1),h==null)return;if(!J(h)||typeof h.listener!="number")return p({reason:"value",element:r.name,name:l});let g=h.listener,v=u.events[l],T=r.dom,f=()=>e.onEvent(g,v.detail==="value"?String(T.value??""):void 0);T.addEventListener(v.from,f),r.listeners.set(l,()=>T.removeEventListener(v.from,f)),E+=1},x=r=>{if(!r.refused){_-=1,r.id!==void 0&&w.delete(r.id);for(let l of r.listeners.values())l();E-=r.listeners.size,r.listeners.clear();for(let l of r.children)x(l)}},A=(r,l)=>{if(!J(r)||typeof r.id!="string"||w.has(r.id))return p({reason:"record"}),K();if(_>=m)return p({reason:"budget"}),O||(O=!0,e.onOverBudget?.()),K();let h=r.id,u=l.component.children;if(r.type===Xt)return K();if(r.type===qt){if(u==="none")return p({reason:"child",element:l.name}),K();let f={dom:s.createTextNode(String(r.data??"").slice(0,Ee)),children:[],text:!0,listeners:new Map,id:h};return w.set(h,f),_+=1,f}if(r.type!==zt)return p({reason:"record"}),K();let o=String(r.element);if(!Re(d,o)||!Jt(d[o]))return p({reason:"element",element:o}),K();if(u!=="any")return p({reason:"child",element:o}),K();let g=d[o],v=s.createElement(g.host);v.setAttribute("data-gv",o.replace(/^gv-/,"")),v.className=`graview-guest-${o.replace(/^gv-/,"")}`,g.host==="a"&&(v.setAttribute("rel","noopener noreferrer"),v.setAttribute("target",g.target??"_blank"),v.setAttribute("referrerpolicy","no-referrer")),g.host==="button"&&v.setAttribute("type","button");let T={dom:v,name:o,component:g,children:[],listeners:new Map,id:h};if(w.set(h,T),_+=1,J(r.properties))for(let[f,L]of Object.entries(r.properties))M(T,f,L);if(J(r.attributes))for(let f of Object.keys(r.attributes))p({reason:"attribute",element:o,name:f});if(J(r.eventListeners))for(let[f,L]of Object.entries(r.eventListeners))k(T,f,L);if(Array.isArray(r.children))for(let f of r.children){let L=A(f,T);T.children.push(L),v.appendChild(L.dom)}return T},N=r=>{if(!Array.isArray(r))return p({reason:"record"});let[l,h]=r,u=typeof h=="string"?w.get(h):void 0;if(!u)return p({reason:"record"});switch(l){case Dt:{if(u.text)return p({reason:"record"});let o=Number(r[3]),g=Number.isInteger(o)&&o>=0&&o<=u.children.length?o:u.children.length,v=A(r[2],u);u.dom.insertBefore(v.dom,u.children[g]?.dom??null),u.children.splice(g,0,v);return}case jt:{let o=Number(r[2]),g=u.children[o];if(!g)return p({reason:"record"});u.children.splice(o,1),g.dom.parentNode?.removeChild(g.dom),x(g);return}case Bt:if(!u.text)return p({reason:"record"});u.dom.data=String(r[2]??"").slice(0,Ee);return;case Ut:{if(u===W||u.text)return p({reason:"record"});let o=String(r[2]),g=r[4]??Mt;return g===Mt?M(u,o,r[3]):g===Ft?k(u,o,r[3]):p(g===$t?{reason:"attribute",element:u.name,name:o}:{reason:"record"})}default:return p({reason:"record"})}};return{apply(r,l){if(!Array.isArray(r))return p({reason:"record"}),!0;for(let h=0;h<r.length;h+=1){if(l&&h%32===0&&l())return!1;N(r[h])}return!0},get refused(){return y},get size(){return _},get listening(){return E},dispose(){for(let r of W.children)x(r);W.children.length=0,n.replaceChildren()}}}var We=`
2
- .graview-guest { display: flex; flex-direction: column; gap: 8px; min-width: 0; color: var(--graview-ink, inherit); font: inherit; }
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
- .graview-guest-group { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
5
- .graview-guest-group[data-gv-direction="row"] { flex-direction: row; flex-wrap: wrap; align-items: center; }
6
- .graview-guest-title { font-weight: 600; font-size: 1rem; overflow-wrap: anywhere; }
7
- .graview-guest-text { margin: 0; font-size: 0.875rem; line-height: 1.45; overflow-wrap: anywhere; }
8
- .graview-guest-badge { align-self: flex-start; padding: 1px 8px; border: 1px solid currentColor; border-radius: 999px; font-size: 0.8125rem; font-weight: 600; }
9
- .graview-guest-field { font-size: 0.875rem; overflow-wrap: anywhere; }
10
- .graview-guest-field[data-gv-label]::before { content: attr(data-gv-label) " "; color: var(--graview-ink-muted, inherit); }
11
- .graview-guest-progress { width: 100%; }
12
- .graview-guest-divider { width: 100%; margin: 2px 0; border: 0; border-top: 1px solid var(--graview-edge, #d0d0d0); }
13
- .graview-guest-link { color: var(--graview-accent, inherit); text-decoration: underline; }
14
- .graview-guest-button { align-self: flex-start; font: inherit; padding: 4px 12px; border-radius: 8px; border: 1px solid var(--graview-edge, #d0d0d0); background: var(--graview-panel, transparent); color: inherit; cursor: pointer; }
15
- .graview-guest-input { font: inherit; padding: 4px 8px; border-radius: 6px; border: 1px solid var(--graview-edge, #d0d0d0); }
16
- .graview-guest [data-gv-tone="good"] { color: var(--graview-good, inherit); }
17
- .graview-guest [data-gv-tone="bad"] { color: var(--graview-bad, inherit); }
18
- .graview-guest [data-gv-tone="warn"] { color: var(--graview-warn, inherit); }
19
- .graview-guest [data-gv-tone="accent"] { color: var(--graview-accent, inherit); }
20
- .graview-guest [data-gv-tone="neutral"] { color: var(--graview-ink-muted, inherit); }
21
- `;var Rt=new WeakSet;function Qt(n,e){if(n.startsWith("blob:"))return"blob:";try{return new URL(n,e.location.href).origin}catch{return n}}function Gt(n,e,d){let m=Qt(e,n),s=`this page's Content-Security-Policy${d?` (${d})`:""} does not allow a worker from ${m}: it needs worker-src ${m}`;return Rt.has(n)||(Rt.add(n),n.console?.warn?.(`Graview: worker views cannot start on this page, because ${s}. A host that will not allow ${m} serves each view's whole script from its own origin and passes worker: { url } (the @graview/guest README, "What the host page allows").`)),s}function Zt(n,e){return n===""?!0:e.startsWith("blob:")?n.startsWith("blob"):e.startsWith(n)||n.startsWith(e)}function le(n,e){let d="script"in e.source?n.URL.createObjectURL(new n.Blob([e.source.script],{type:"text/javascript"})):void 0,m="script"in e.source?d:e.source.url,s,y,w=!1,W=!1,R=0,_=0,E="",O=0,p=0,K=n.performance,M=K.now(),k,x=u=>{let o=u,g=String(o.effectiveDirective||o.violatedDirective||"").split(" ")[0];/^(worker-src|script-src|script-src-elem|child-src|default-src)$/.test(g)&&Zt(String(o.blockedURI??""),m)&&(k=g)},A=n.document;A?.addEventListener("securitypolicyviolation",x);let N=()=>A?.removeEventListener("securitypolicyviolation",x),r=()=>{W||(W=!0,y?.close(),s?.terminate(),s=void 0,n.clearTimeout(R),n.clearInterval(_),N(),d&&n.URL.revokeObjectURL(d))},l=(u,o)=>{W||(r(),e.onStop(u,o))},h=()=>{n.clearTimeout(R),N(),E=dt();let u=new n.MessageChannel;y=u.port1;let o=Math.max(1,e.silentMs),g=Math.max(10,Math.min(1e3,Math.floor(o/4)));M=K.now();let v=M;_=n.setInterval(()=>{let f=K.now();if(f-v>g*2&&(M+=f-v-g),v=f,f-M>=o)return l("silent");O+=1,u.port1.postMessage({type:"heartbeat",beat:O})},g);let T={graview:"host-hello",protocol:1,nonce:E,view:e.name};s.postMessage(T,[u.port2]),e.onReady(E,u.port1)};try{s=new n.Worker(m,{name:e.name})}catch(u){s=void 0;let o=u,g=o?.name==="SecurityError"?Gt(n,m,k):`the worker could not be made: ${String(o?.message??u)}`;queueMicrotask(()=>l("start",g))}return s&&(R=n.setTimeout(()=>l("start",`it never said it was ready in ${e.readyMs.toLocaleString("en-US")} ms`),e.readyMs),s.onerror=u=>{let o=typeof u.message=="string"&&u.message!==""?u.message:void 0;if(w)return void e.onError?.(o??"an error");n.clearTimeout(R),n.setTimeout(()=>!w&&l("start",k?Gt(n,m,k):o?`it failed before it said ready: ${o}`:"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)},s.onmessage=u=>{if(!e.limiter.message()||w||!at(u.data)||u.data.protocol!==1){e.onDropped();return}w=!0,h()}),{get worker(){return s},answer(u){let o=u;return typeof o!="object"||o===null||o.type!=="heartbeat"||o.nonce!==E?!1:(typeof o.beat=="number"&&o.beat>p&&o.beat<=O&&(p=o.beat,M=K.now()),!0)},stop:r}}function ue(n,e){let d=e(),m=0;return{draw(s){let y=e();y-d>=1e3&&(d=y,m=0);let w=s(()=>m+(e()-y)>=n);return m+=e()-y,w&&m<n}}}var er=D(()=>(__graviewPreload(import.meta.url,["./chunk.BRDAO2OF.js","./chunk.AJZBJBMO.js"]),import("./chunk.X5G7FOPY.js"))),tr=D(()=>(__graviewPreload(import.meta.url,["./chunk.I5TOMBIF.js","./chunk.QQTRAY5W.js","./chunk.DOBQ4LO4.js","./chunk.G446PWV6.js","./chunk.4TJOS4C7.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.LXCJVZF3.js"))),rr=D(()=>(__graviewPreload(import.meta.url,["./chunk.AJZBJBMO.js"]),import("./chunk.SHNYYBNW.js"))),nr=D(()=>(__graviewPreload(import.meta.url,["./chunk.WVUJXDXZ.js","./chunk.TPG6IY4M.js","./chunk.NFDLCUCC.js","./chunk.X7JMJSLU.js","./chunk.PPRSGM64.js","./chunk.5Y3Q7ONN.js","./chunk.KTFUVR4V.js","./chunk.DPHTUTOS.js","./chunk.4TJOS4C7.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.D5ETRTAF.js"))),sr=D(()=>(__graviewPreload(import.meta.url,["./chunk.QQTRAY5W.js","./chunk.DOBQ4LO4.js","./chunk.4TJOS4C7.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.J2V76Z6G.js"))),or=D(()=>(__graviewPreload(import.meta.url,["./chunk.BBLIT7S7.js","./chunk.AJZBJBMO.js"]),import("./chunk.RRCPEHM4.js")));function ir(n,e,d){switch(n){case"manifest":return d??"Its manifest names something this app does not have.";case"source":return d??`Its code is longer than the ${e.maxSourceBytes.toLocaleString("en-US")} bytes a view may be.`;case"start":return`It could not start${d?`: ${d}.`:"."}`;case"error":return`It failed before it drew anything${d?`: ${d}`:"."}`;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 ar(n,e){let d=n.ownerDocument,m=d.defaultView,{manifest:s}=e,y=d.createElement("div");y.className="graview-worker-view",y.setAttribute("role","region"),y.setAttribute("aria-label",s.title??s.name),y.setAttribute("data-worker-view",s.name),y.style.cssText="display:block;position:relative;contain:layout paint style;isolation:isolate;overflow:clip;min-width:0",n.appendChild(y);let w=y.attachShadow({mode:"open"}),W=e.author?d.createElement("p"):void 0;W&&(W.className="graview-worker-view-author",W.setAttribute("data-worker-view-author",s.name),W.style.cssText="margin:4px 0 0;font-size:0.75rem;color:var(--graview-ink-muted, inherit)",W.textContent=e.author,n.appendChild(W));let R={applied:0,refused:0,dropped:0},_=ie(e.limits),E={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},O,p,K,M,k=!1,x={applied:0,refused:0,dropped:0},A=[],N=()=>{if(!p)return;let t=p.stats;R.applied+=t.applied-x.applied,R.refused+=t.refused-x.refused,R.dropped+=t.dropped-x.dropped,x={...t}},r=()=>{},l,h,u=()=>{let t=w.querySelector("[data-graview-view-root]"),c=m.ResizeObserver;h||!t||typeof c!="function"||(h=new c(b=>{let S=b[b.length-1]?.borderBoxSize?.[0],i=Math.ceil(S?S.blockSize:t.offsetHeight);i!==l&&(l=i,y.setAttribute("data-graview-content-height",String(i)),e.onContentHeight?.(i))}),h.observe(t))},o=()=>{h&&(h.disconnect(),h=void 0,l=void 0,y.removeAttribute("data-graview-content-height"),e.onContentHeight?.(void 0))},g=0,v=()=>{},T=()=>{v(),v=()=>{},N(),p?.dispose(),p=void 0,K?.stop(),r(),m.clearInterval(g)},f=(t,c)=>{if(k)return;k=!0,T(),o(),M?.dispose();let b=ir(t,E,c);y.removeAttribute("data-worker-view-drawn"),y.setAttribute("data-worker-view-failed",t),e.fallback!==!1&&(e.fallback??L)(y,t,b),e.onFailure?.(t,b)},L=(t,c,b)=>{let S=O??(()=>{try{return xe(e.store,e.principal,{manifest:s,...e.input?{input:e.input()}:{}})}catch{return}})(),i=d.createElement("div");i.setAttribute("data-graview-fallback",c),i.style.cssText="padding:12px;display:grid;gap:6px;color:var(--graview-ink, inherit);font-family:var(--graview-font-body, inherit)";let I=d.createElement("strong");I.textContent=s.title??s.name;let V=d.createElement("ul");V.style.cssText="margin:0;padding-left:1.2em";for(let re of[...S?.node?[S.node]:[],...S?.nodes??[]]){let ne=d.createElement("li");ne.textContent=re.label??re.id,V.appendChild(ne)}let U=d.createElement("p");U.style.cssText="margin:0;font-size:0.8125rem;color:var(--graview-ink-muted, inherit)",U.textContent=`This view was stopped. ${b}`,i.append(I,V,U),w.replaceChildren(i)},Oe=ct(s,e.store);if(Oe.length>0)return queueMicrotask(()=>f("manifest",Oe.join(" "))),he();let Ae=t=>{if(("source"in t?new TextEncoder().encode(t.source).length:"script"in t?new TextEncoder().encode(t.script).length:0)>E.maxSourceBytes)return["source"];let b="source"in t?ft(t.source):[];return b.length>0?["source",b.join(" ")]:void 0},$=e.worker,Le=typeof $=="function"?void 0:Ae($);if(Le)return queueMicrotask(()=>f(...Le)),he();let _e=vt(m,()=>Ne(),"blob"),ce=()=>wt(()=>e.theme?.()??yt(y),e.brand,_e),Ie="",pe=()=>{Ie=JSON.stringify(ce()),p?.push()},Ne=()=>{p&&JSON.stringify(ce())!==Ie&&pe()},Ot=ht(d,Ne),j,B,Pe=s.pictures?rr().then(({createGuestPictures:t})=>{k||(j=t(m,{as:"blob",view:`"${s.title??s.name}"`,pictures:s.pictures,...e.limits?{limits:e.limits}:{},...e.file?{file:e.file}:{},moved:()=>p?.push(),onLeft:c=>{C?.postMessage({type:"notice",text:c}),e.onProblem?.(c)}}))}):Promise.resolve();r=()=>{Ot(),_e.dispose(),j?.dispose(),X?.dispose(),B?.dispose(),te?.dispose()};let C,Q=t=>C?.postMessage(t),Ve=!1,Ce=!1,Z=()=>y.toggleAttribute("data-worker-view-drawn",!k&&Ce&&M!==void 0&&A.length===0&&z.size===0&&!j?.waiting()&&!(B?.waiting??0)),F=m.performance,z=new Map,ee=F.now(),fe=Math.max(10,Math.min(250,Math.floor(E.pushMs/4))),At=()=>{g||(ee=F.now(),g=m.setInterval(()=>{let t=F.now(),c=t-ee>fe*2?t-ee-fe:0;ee=t;for(let[b,S]of z){let i=S+c;if(z.set(b,i),t-i>=E.pushMs)return f("slow")}},fe))},Lt=ue(E.drawMs,()=>F.now()),He=()=>{},ge=t=>{if(k)return;if(!M)return void A.push(t);let c=M;if(!Lt.draw(S=>t[0]==="render"?c.apply(t[1],S):(c.style(t[1]),!0)))return f("slow");t[0]==="render"&&He()},De=()=>ot(e.store.schema,new Set([...e.store.kindsKeptFrom(e.principal),...e.store.modules.disabledKinds])),q=it({sees:t=>e.store.seenBy(e.principal).graph.has(t),places:()=>oe(e.places?.()??[]),lists:De,schema:e.store.schema,...e.onNavigate?{onNavigate:e.onNavigate}:e.goTo?{onNavigate:t=>gt(e.goTo(),t)}:{},...e.hrefOf?{hrefOf:e.hrefOf}:!e.onNavigate&&e.goTo?{hrefOf:t=>mt(e.goTo(),t)}:{},onLost:t=>{C?.postMessage({type:"notice",text:t}),e.onProblem?.(t)}}),H=new Set,je=new Set,X,Be=!1,Ue=()=>{Be||(Be=!0,nr().then(({createGuestMedia:t})=>{k||(X=t(m,{view:`"${s.title??s.name}"`,pictures:s.pictures!==void 0,shown:()=>O,...e.file?{file:e.file}:{},onProblem:c=>{C?.postMessage({type:"notice",text:c}),e.onProblem?.(c)}}),X.refresh(w))},()=>e.onProblem?.(`The view "${s.title??s.name}" places a video or a full-screen viewer, and the host's player could not be loaded.`)))},$e=!1,Fe=!1,me=new Map,ze=()=>{$e||!s.accepts?.length||($e=!0,sr().then(({createGuestDrops:t})=>{k||(B=t(m,{shadow:w,manifest:s,store:e.store,principal:e.principal,files:()=>e.files?.(),shown:()=>H,hears:()=>Fe,idOf:c=>M?.renderer.idOf(c),send:Q,change:(c,b)=>{if(!p)return{ok:!1,reason:"refused",message:"The view has gone."};let S=p.change(c,b);return N(),S},handed:c=>me.set(c.href,c),onProblem:c=>{C?.postMessage({type:"notice",text:c}),e.onProblem?.(c)},onBusy:()=>Z()}),B.refresh())},()=>e.onProblem?.(`The view "${s.title??s.name}" takes files, and the host's drop could not be loaded.`)))},te,qe=[],Xe=!1,_t=t=>{qe=t,te?.bind(t),!(Xe||t.length===0)&&(Xe=!0,or().then(({createGuestGestures:c,unheardWords:b})=>{if(!k){if(s.gestures!==!0){let S=b(s.title??s.name);return C?.postMessage({type:"notice",text:S}),e.onProblem?.(S)}te=c(w,{root:()=>w.querySelector("[data-graview-view-root]")??void 0,idOf:S=>M?.renderer.idOf(S),send:Q}),te.bind(qe)}},()=>{}))},It=t=>{let c=e.store.seenBy(e.principal).graph;for(let b of H){let S=c.getNode(b);for(let i of Object.values(S??{}))for(let I of ut(i))if(I.href===t)return I}},Ye=t=>{if(t.localName==="graview-video")return Ue();t.hasAttribute("data-lightbox")&&(t.setAttribute("aria-haspopup","dialog"),Ue())};Promise.all([er(),tr()]).then(([{createOpenDrawing:t,handedLinks:c,judgeLink:b,linkRefusedWords:S},{createPressReader:i,createSaver:I,fillPrefills:V,judgePress:U,markPresses:re,prefillOf:ne,quietPictures:Nt}])=>{if(k)return;let Y=i(),Qe=(a,G)=>{let P=M?.renderer.idOf(a);P!==void 0&&Q({type:"dom-event",target:P,event:"acted",pressed:G})},we=I({reader:Y,save:(a,G)=>{if(!p)return;let P=p.pressed(U(e.store,s,H,a));N(),Qe(G,{as:a.as,...P})}}),Ze=()=>we.flush();m.addEventListener("pagehide",Ze),v=()=>{m.removeEventListener("pagehide",Ze),we.flush()};let Pt=new WeakSet;He=()=>{q.refresh(w),re(w),Nt(w),V(w,Y,Pt,a=>ne(e.store,e.principal,s,H,a)),X?.refresh(w),B?.refresh()};let et,tt=new Set,Vt=()=>(et!==O&&([et,tt]=[O,c(O)]),tt),rt=new Set;M=t(w,{origin:e.origin??m.location.origin,link:a=>b(a,{handed:Vt(),...e.links?{origins:e.links.origins}:{}}),...e.asset?{asset:e.asset}:{},...e.images?{imageOrigins:e.images.origins}:{},...s.pictures?{picture:a=>j?.drawn(a)}:{},onRefused:a=>{if(a.reason==="url"&&a.element==="a"&&a.address!==void 0&&!rt.has(a.address)){rt.add(a.address);let P=S(a.address,e.links?.origins);return C?.postMessage({type:"notice",text:P}),e.onProblem?.(P)}if(a.reason!=="url"||a.element!=="img"||a.address===void 0||je.has(a.address))return;je.add(a.address);let G=lt(a.address,{...e.images?{origins:e.images.origins}:{},assets:e.asset!==void 0},a.length);C?.postMessage({type:"notice",text:G}),e.onProblem?.(G)},...e.limits?.maxNodes!==void 0?{maxNodes:e.limits.maxNodes}:{},onOverBudget:()=>f("nodes"),send:Q,onFieldSet:a=>Y.filled(a),onAttribute:(a,G)=>{(G==="data-record"||G==="data-place")&&q.link(a),G==="data-lightbox"&&Ye(a),G==="data-drop"&&ze()},decorate:a=>{(a.hasAttribute("data-record")||a.hasAttribute("data-place"))&&q.link(a),Ye(a),a.hasAttribute("data-drop")&&ze()},before:(a,G,P)=>{Y.heard(a,G),we.heard(a,G,P),q.pressed(a,G,P);let ve=G.closest("a[href]");ve&&P.contains(ve)&&!ve.hasAttribute("data-graview-link")&&a.type==="click"&&a.stopPropagation();let se=G.closest("[data-lightbox]"),nt=a.type==="keydown"?a.key:void 0;if(se&&P.contains(se)&&a.isTrusted&&(a.type==="click"||(nt==="Enter"||nt===" ")&&se.localName!=="button")&&(a.preventDefault(),a.stopPropagation(),X?.open(se)),B?.before(a,G,P))return!1;let be=Y.press(a,G,P);if(!be||!p)return;a.stopPropagation(),a.type==="keydown"&&a.preventDefault();let Ct=p.pressed(U(e.store,s,H,be));N();let st={as:be.as,...Ct},Ht=G.closest("[data-act]");return queueMicrotask(()=>Qe(Ht,st)),{pressed:st}}});for(let a of A.splice(0))ge(a);u(),Z()},()=>f("start","the view's drawing could not be loaded"));let ye=t=>K=le(m,{source:t,name:s.name,limiter:_,readyMs:e.limits?.readyMs??5e3,silentMs:e.limits?.silentMs??5e3,onDropped:()=>R.dropped+=1,onStop:(c,b)=>f(c,b),onError:c=>{Ve||f("error",c)},onReady:(c,b)=>{C=b,At();let S=ae({store:e.store,principal:e.principal,view:s.name,nonce:c,send:i=>{i.type==="props"&&typeof i.push=="number"&&(z.set(i.push,F.now()),Z()),b.postMessage(i)},props:()=>{let i=xe(e.store,e.principal,{manifest:s,...e.input?{input:e.input()}:{},theme:ce(),...e.places?{places:oe(e.places())}:{}});return H=new Set([...i.node?[i.node.id]:[],...(i.nodes??[]).map(I=>I.id)]),O=i,i},...j?{hand:j.hand}:{},judgeAct:(i,I)=>pt(e.store,s,i,I,{shown:H,file:V=>me.get(V)??It(V),dropped:V=>me.has(V)}),onHears:i=>{i.includes("drop")&&(Fe=!0)},onGestures:_t,onRender:i=>{Ve=!0,ge(["render",i])},onPushed:(i,I)=>{if(z.delete(i),I>=E.pushMs)return f("slow");Ce=!0,Z()},onFlood:()=>f("flood"),onStyle:i=>ge(["style",i]),places:()=>[...new Set([...oe(e.places?.()??[]).map(i=>i.as),...De().map(i=>i.slug)])],...e.limits?{limits:e.limits}:{},limiter:_});p=S,b.onmessage=({data:i})=>{if(!K?.answer(i)&&(S.receive(i),N(),!k&&i?.nonce===c&&i.type==="navigate")){let I={...i.where!==void 0?{where:i.where}:{},...i.section!==void 0?{section:i.section}:{}},V=typeof i.place=="string"?{place:i.place,...I}:typeof i.to=="string"&&{record:i.to,...I};V&&q.go(V)}},pe()}}),Je=t=>{"source"in t?(s.pictures?Promise.all([Se(t.source),Pe]).then(([c])=>c):Se(t.source)).then(c=>{k||ye({script:c})},()=>f("start","the view's runtime could not be loaded")):s.pictures?Pe.then(()=>{k||ye(t)},()=>f("start","the view's pictures could not be loaded")):ye(t)};return typeof $=="function"?bt($).then(t=>{if(k)return;let c=Ae(t);c?f(...c):Je(t)},t=>f("source",`Its code did not arrive${t instanceof Error&&t.message?`: ${t.message}`:""}.`)):Je($),he();function he(){return{element:y,shadow:w,get worker(){return K?.worker},update:()=>{p&&pe()},get stats(){return N(),R},get refused(){return M?.refused??[]},get contentHeight(){return l},dispose(){k=!0,T(),h?.disconnect(),M?.dispose(),y.remove(),W?.remove()}}}}var Wt="graview-guest-kit";function Ir(n,e){let d=n.ownerDocument,m=d.defaultView;if(!d.getElementById(Wt)){let x=d.createElement("style");x.id=Wt,x.textContent=We,d.head.appendChild(x)}let s=d.createElement("div");s.className="graview-guest",s.setAttribute("role","group"),s.setAttribute("aria-label",e.title??e.view),s.setAttribute("data-guest-view",e.view),n.appendChild(s);let y={applied:0,refused:0,dropped:0},w=ie(e.limits),W=ue(e.limits?.drawMs??100,()=>m.performance.now()),R,_,E,O=!1,p={applied:0,refused:0,dropped:0},K=()=>{if(!R)return;let x=R.stats;y.applied+=x.applied-p.applied,y.refused+=x.refused-p.refused,y.dropped+=x.dropped-p.dropped,p={...x}},M=()=>{K(),R?.dispose(),R=void 0,E?.stop()},k=(x,A)=>{O||(O=!0,M(),_?.dispose(),e.onFailure?.(x,A))};return E=le(m,{source:e.worker,name:e.view,limiter:w,readyMs:e.limits?.readyMs??5e3,silentMs:e.limits?.silentMs??5e3,onDropped:()=>y.dropped+=1,onStop:(x,A)=>k(x,A),onReady:(x,A)=>{let N=Ge(s,{...e.kit?{kit:e.kit}:{},...e.links?{links:e.links}:{},onEvent:(l,h)=>A.postMessage({type:"event",listener:l,...h!==void 0?{detail:h}:{}}),...e.limits?.maxNodes!==void 0?{maxNodes:e.limits.maxNodes}:{},onOverBudget:()=>k("budget")});_=N;let r=ae({store:e.store,principal:e.principal,view:e.view,nonce:x,send:l=>A.postMessage(l),onRender:l=>{W.draw(h=>N.apply(l,h))||k("slow")},...e.input?{input:e.input}:{},...e.onNavigate?{onNavigate:e.onNavigate}:{},onSize:e.onSize??(l=>s.style.minHeight=`${l}px`),...e.limits?{limits:e.limits}:{},limiter:w});R=r,A.onmessage=l=>{E?.answer(l.data)||(r.receive(l.data),K())},r.push()}}),{element:s,get worker(){return E?.worker},update:()=>R?.push(),get stats(){return K(),y},get refused(){return _?.refused??[]},dispose(){O=!0,M(),_?.dispose(),s.remove()}}}export{Me as GUEST_KIT,We as GUEST_KIT_CSS,Te as KIT_LINK_TARGETS,kt as KIT_TONES,Ge as createKitRenderer,Et as hostAttribute,Kt as kitValue,Ir as mountGuestWorker,ar as mountWorkerView};
@@ -1 +0,0 @@
1
- import{a}from"./chunk.VQAQQW4Q.js";import"./chunk.DWPU56S5.js";import"./chunk.7FRPNQU4.js";import"./chunk.BDHKWVNX.js";import"./chunk.ZH4NWRWB.js";import"./chunk.GUMJEVVP.js";import"./chunk.SAHNXAV3.js";import"./chunk.UT6642FC.js";import{b as n}from"./chunk.76W2FXEC.js";import"./chunk.LPD74WBI.js";import"./chunk.TI4OSTQV.js";import"./chunk.GZHZLJBF.js";import"./chunk.RQBEQYB2.js";import"./chunk.OJGHDWI6.js";import"./chunk.6VAFNCR4.js";import"./chunk.N4M54YK6.js";import"./chunk.KVJFY7N5.js";import"./chunk.DPHTUTOS.js";import"./chunk.2UIUMG23.js";import{R as i}from"./chunk.KA44WNB4.js";import"./chunk.SDO3U72B.js";import"./chunk.4TJOS4C7.js";import"./chunk.2AZTW66C.js";import{b as o}from"./chunk.AJZBJBMO.js";var e=o(i(),1);function g({entries:d,style:l,headingStyle:p,className:r}){return(0,e.jsxs)("section",{...r?{className:r}:{},"data-testid":"record-ai","aria-label":"What AI did here",style:{display:"grid",gap:10,...l},children:[(0,e.jsx)("h2",{style:p??{margin:0,fontSize:"1rem"},children:"What AI did here"}),(0,e.jsx)("ol",{style:{margin:0,padding:0,listStyle:"none",display:"grid",gap:8,fontSize:"0.875rem"},children:d.slice(0,8).map(t=>(0,e.jsx)(n,{entry:t,undo:s=>(0,e.jsx)(a,{batch:s})},t.id))})]})}export{g as RecordInteractions};
@@ -1 +0,0 @@
1
- import{a,b,c,d,e,f,g,h,i,j,k}from"./chunk.GTPC6JOW.js";import"./chunk.NQZ73QV7.js";import"./chunk.SUPWMV2F.js";import"./chunk.TPG6IY4M.js";import"./chunk.NFDLCUCC.js";import"./chunk.X7JMJSLU.js";import"./chunk.PPRSGM64.js";import"./chunk.5Y3Q7ONN.js";import"./chunk.KTFUVR4V.js";import"./chunk.KVJFY7N5.js";import"./chunk.DPHTUTOS.js";import"./chunk.4TJOS4C7.js";import"./chunk.2AZTW66C.js";import"./chunk.AJZBJBMO.js";export{g as columnActs,d as columnChoices,c as columnMoves,b as columnOf,e as columnReach,f as columnSteps,j as describePlace,k as placeText,h as resolveFor,i as shadowedPageSlots,a as statusColumns};
@@ -1,2 +0,0 @@
1
- import{a as Ge}from"./chunk.NQZ73QV7.js";import{a as Me,c as Oe,e as Be}from"./chunk.SUPWMV2F.js";import{e as Pe,f as Ce,j as Re,k as re,l as Fe}from"./chunk.TPG6IY4M.js";import{f as Se}from"./chunk.5Y3Q7ONN.js";import{d as _,e as je,k as ne}from"./chunk.KVJFY7N5.js";import{b as De,e as Ae}from"./chunk.DPHTUTOS.js";import{$ as ue,$c as $e,Bb as fe,C as Q,I as de,Jc as ve,Ob as te,Pb as ge,ca as T,da as K,ea as me,fa as Z,ga as ee,ha as pe,hc as he,jc as ye,jd as ke,ka as q,lc as we,ma as z,qc as U,rc as be,rd as xe}from"./chunk.4TJOS4C7.js";function ze(r,e,t){let s=r.tryDefinition(e)?.fields.shape,n=Q(s?.[t]),a=!1,o=!1;for(;n&&(n.type==="optional"||n.type==="default"||n.type==="nullable"||n.type==="prefault");)(n.type==="optional"||n.type==="nullable")&&(a=!0),(n.type==="default"||n.type==="prefault")&&(o=!0),n=Q(n.innerType);if(n?.type!=="enum")return;let p=(n.entries?Object.values(n.entries):n.values??[]).filter(u=>typeof u=="string");return p.length>0?{values:p,empty:a&&!o}:void 0}function E(r,e,t){let s=ze(r,e,t);if(!s)return[];let n=r.tryDefinition(e),a=s.values.map(o=>({value:o,label:De(n,t,o)}));return s.empty&&a.push({value:null,label:`No ${q(n,t).toLowerCase()}`}),a}function X(r,e,t){let s=r[e];return typeof s=="string"&&t.some(n=>n.value===s)?s:null}function oe(r,e,t,s,n=E(r.schema,t.kind,s)){return Ie(r,e,t,s,n).flatMap(a=>a.move?[a.move]:[])}function Ie(r,e,t,s,n=E(r.schema,t.kind,s)){let a=Ne(r.schema,r.allMutations(),t.kind,s,n),o=X(t,s,n),p=z(r.schema.tryDefinition(t.kind),t.kind),u=[];for(let{value:A,label:R,by:F,acts:M}of a){if(A===o)continue;let x,G,I;for(let l of M){let w=F==="step"?{[l.subject.arg]:t.id}:{[l.subject.arg]:t.id,[s]:A},S={name:l.name,args:w};if(!l.input.safeParse(w).success){I??=`${l.title??l.name} asks for more than the ${p} itself.`;continue}let k=r.permits(S,e);if(!k.ok){G??=k.refusal?.message??`You may not ${l.title??l.name}.`;continue}try{fe(r.graph,l,w)}catch(f){G??=f instanceof Error?f.message:String(f);continue}x={to:A,call:S,title:l.title??l.name};break}u.push(x?{to:A,label:R,move:x}:{to:A,label:R,why:G??I??`Nothing in this app moves a ${p} to ${R}.`})}return u}function Ne(r,e,t,s,n=E(r,t,s)){let a=Ve(r,e,t,s),o=Ke(r,e,t,s);return n.flatMap(p=>{if(p.value===null)return[];let u=a.filter(A=>A.sets?.[s]===p.value);return[{value:p.value,label:p.label,by:u.length>0?"step":o.length>0?"value":"none",acts:u.length>0?u:o}]})}function Ve(r,e,t,s){return e.filter(n=>n.subject!==void 0&&n.derived===void 0&&typeof n.sets?.[s]=="string"&&te(r,n).includes(t))}function Ke(r,e,t,s){let n=r.tryDefinition(t);return n?e.filter(a=>{if(!a.subject||!te(r,a).includes(t)||!ge(a,n).includes(s))return!1;let o=a.input.shape;return o!==void 0&&s in o}).sort((a,o)=>+(a.derived!==void 0)-+(o.derived!==void 0)):[]}var se=(r,e)=>e&&r[e]!==void 0?String(r[e]):"";function Xe(r,e,t){let s=l=>r.tryDefinition(l)?e.nodesOfKind(l).filter(w=>T(r.tryDefinition(l),w)):[],n=s(t.rows),a=s(t.columns),o=new Set(n.map(l=>l.id)),p=new Set(a.map(l=>l.id)),u=e.allEdges(),A=[],R=t.link;if(typeof R=="string"){let l=f=>r.tryDefinition(f)?.edges?.[R]?.to,w=(l(t.columns)??[]).some(f=>f===t.rows||f==="*"),S=(l(t.rows)??[]).some(f=>f===t.columns||f==="*"),k=w||!S;for(let f of u){if(f.kind!==R)continue;let P=k?f.to:f.from,i=k?f.from:f.to;o.has(P)&&p.has(i)&&A.push({rowId:P,columnId:i,via:[]})}}else{let l=new Map(R.path.map(S=>[S,new Map]));for(let S of u){let k=l.get(S.kind);if(!k)continue;let f=k.get(S.from);f?f.push(S.to):k.set(S.from,[S.to]);let P=k.get(S.to);P?P.push(S.from):k.set(S.to,[S.from])}let w=new Set;for(let S of a){let k=[{id:S.id,via:[]}];for(let f of R.path){let P=[],i=new Set;for(let $ of k)for(let b of l.get(f).get($.id)??[])i.has(`${$.id}|${b}`)||(i.add(`${$.id}|${b}`),P.push({id:b,via:[...$.via,$.id]}));k=P}for(let f of k){let P=`${f.id}|${S.id}`;!o.has(f.id)||w.has(P)||(w.add(P),A.push({rowId:f.id,columnId:S.id,via:f.via.slice(1)}))}}}let F=t.groupOrder??[],M=l=>F.indexOf(l)===-1?F.length:F.indexOf(l),x=(l,w)=>w==="label"?K(r.tryDefinition(l.kind),l):l[w],G=U(n,t.sort,x).map(l=>{let w=l;return{node:l,label:K(r.tryDefinition(l.kind),l),group:se(w,t.rowGroup),ref:se(w,t.rowRef)}}).sort((l,w)=>M(l.group)-M(w.group)||(t.sort!==void 0?0:l.ref<w.ref?-1:l.ref>w.ref?1:0)),I=U(a,t.columnSort,x).map(l=>({node:l,label:K(r.tryDefinition(l.kind),l),group:se(l,t.columnGroup)})).sort((l,w)=>l.group<w.group?-1:l.group>w.group?1:t.columnSort!==void 0?0:l.node.id<w.node.id?-1:l.node.id>w.node.id?1:0);return{rows:G,columns:I,cells:A}}function We(r,e,t){let{rows:s,columns:n,cells:a}=Xe(r,e,t),o=(i,$)=>ee(r,i,$),p=i=>ee(r,i,1).replace(/^1 /,""),u=i=>({id:i.id,kind:i.kind,title:K(r.tryDefinition(i.kind),i),parts:[]}),A=i=>{let $=e.getNode(i);if(!$)return null;let b=r.tryDefinition($.kind),C=K(b,$),N=_($,b,{limit:3,said:[C],glance:!0}).map(V=>V.alone.startsWith(V.label)?`${V.label.toLowerCase()}${V.alone.slice(V.label.length)}`:V.alone);return[C,...N].join(", ")},R=typeof t.link=="string"?[]:t.link.path.slice(0,-1).flatMap((i,$,b)=>{let C=ve(r,t.columns,b.slice(0,$+1));return C.ok?[...C.reached]:[]}),F=be(r,t,{rows:s.length,columns:n.length,cells:a.length});if(F)return[{t:"text",text:`${o(t.rows,s.length)} against ${o(t.columns,n.length)}.`},{t:"text",text:F}];let M=[{t:"text",text:`${o(t.rows,s.length)} against ${o(t.columns,n.length)}${R.length>0?`, through ${[...new Set(R)].map(i=>o(i,2).replace(/^2 /,"")).join(" and ")}`:""}${n.length>0?`: ${n.map(i=>i.label).join(", ")}`:""}.`}],x=new Map(n.map(i=>[i.node.id,i.label])),G=new Map(n.map((i,$)=>[i.node.id,$])),I=new Map,l=new Map;for(let i of a){let $=I.get(i.rowId);$?$.push(i):I.set(i.rowId,[i]);let b=l.get(i.columnId);b?b.add(i.rowId):l.set(i.columnId,new Set([i.rowId]))}for(let i of s){let b=[...I.get(i.node.id)??[]].sort((C,N)=>G.get(C.columnId)-G.get(N.columnId)).map(C=>{let N=C.via.map(A).filter(V=>V!==null);return`${x.get(C.columnId)}${N.length>0?` (${N.join("; ")})`:""}`});M.push({t:"field",label:i.label,text:b.length>0?b.join(", "):"none"})}M.push({t:"list",as:"name",columns:1,groups:n.map(i=>{let $=l.get(i.node.id)??new Set,b=s.filter(C=>$.has(C.node.id)).map(C=>u(C.node));return{heading:`${i.label} (${b.length})`,items:b}})});let w=new Set(a.map(i=>i.rowId)),S=new Set(a.map(i=>i.columnId)),k=s.filter(i=>!w.has(i.node.id)),f=n.filter(i=>!S.has(i.node.id)),P=t.rows===t.columns;return k.length>0&&M.push({t:"text",text:`${P?`${k.length} with none across`:`${o(t.rows,k.length)} with no ${p(t.columns)}`}: ${k.map(i=>i.label).join(", ")}.`}),f.length>0&&M.push({t:"text",text:`${P?`${f.length} with none down`:`${o(t.columns,f.length)} on no ${p(t.rows)}`}: ${f.map(i=>i.label).join(", ")}.`}),M}function ie(r,e,t,s={}){let{app:n,blocks:a=t?n?.viewSpecs?.[t.kind]?.[s.slot??"page"]:n?.home}=s;if(!a?.length)return[];let o=s.firstHeading??(t||s.blocks?void 0:1),p=Fe(r,e,t,{...s,money:s.money??n?.brand,firstHeading:o});return t&&!p.node?[]:Ce(typeof a[0]?.t=="string"?a:Pe(a),p)}function Y(r,e,t){let s=!(e.optional||e.control==="boolean"),n=e.control==="node"&&!e.kinds.includes("*")?e.kinds.map(o=>Z(z(r.tryDefinition(o),o))).join(" or "):t(e.name).label,a={name:e.name,label:n,required:s};switch(e.control){case"text":return{...a,input:e.holds==="duration"?"length of time":e.holds??(e.markdown?"Markdown text":e.long?"long text":e.app?"app address":"text")};case"date":return{...a,input:e.time||e.instant?"date and time":"date"};case"number":return{...a,input:e.amount?"amount":"number",...e.min===void 0?{}:{min:e.min},...e.max===void 0?{}:{max:e.max}};case"choice":return{...a,input:"choice",choices:(e.options??[]).map(o=>t(e.name).option(o))};case"boolean":return{...a,input:"yes or no"};case"node":return{...a,input:"record",kinds:e.kinds};case"linked":return{...a,input:"record in another app"};case"file":return{...a,input:e.image?"picture":e.video?"video":"file"};case"repeat":return{...a,input:"how it repeats"};case"list":return{...a,input:`list of ${Y(r,e.item,t).input}`};case"group":return{...a,input:"group",fields:e.fields.map(o=>Y(r,o,t))};case"variant":return{...a,input:"one of",choices:e.options.map(o=>Z(o.value))};default:return{...a,input:"answer"}}}function Te(r,e,t){let s=Oe(r,e,t),n=r.schema,a=Me(t.input).filter(p=>p.name!==t.subject?.arg&&!s.has(p.name)),o=me(t);return{act:t.name,title:o,submit:o,fields:a.map(p=>Y(n,p,u=>ne(n,t,u)))}}function He(r,e){return{act:e.act.name,title:e.title,submit:e.submit,visitor:e.name,fields:e.fields.map(t=>Y(r,t,s=>ne(r,e.act,s)))}}function Ee(r,e,t){return r.permittedMutations(e).filter(s=>!s.derived&&!s.subject&&(s.creates??[]).includes(t))}function Le(r,e=""){let t=[`${e}Form "${r.title}" (${r.visitor?`the visitor form ${r.visitor}, running `:""}act ${r.act}), button "${r.submit}":`],s=(n,a)=>{for(let o of n){let p=o.choices?`${o.input}: ${o.choices.join(", ")}`:o.kinds?`${o.input} (${o.kinds.join(" or ")})`:o.input,u=o.min!==void 0||o.max!==void 0?`, ${o.min??"\u2026"} to ${o.max??"\u2026"}`:"";t.push(`${a}- ${o.label}${o.required?" *":""} (${o.name}) \u2014 ${p}${u}`),o.fields&&s(o.fields,`${a} `)}};return s(r.fields,`${e} `),r.fields.length===0&&t.push(`${e} (asks nothing)`),t}function Ue(r,e){let t=r.viewSpecs??{};return e.filter(s=>s.cardinality==="one"&&s.replaces==="page"&&(t[s.attach]?.page?.length??0)>0).map(s=>{let n=L(r.schema,s.attach,1);return{at:`views.${s.attach}.page`,says:`The view "${s.name}" replaces ${Ye(n)}'s page, so its page slot is never drawn: leave out replaces to draw the slot under the view, or draw what the slot says in the view.`}})}var Ye=r=>`${/^[aeiou]/i.test(r)?"an":"a"} ${r}`,Je=240,Ze=10,Qe=1160,et=40,_e=640,tt=3,nt=r=>Math.max(1,Math.floor((Math.min(r,Qe)-et+Ze)/(Je+Ze)));function rt(r,e,t,s){let{app:n}=s,a=s.width??1440,o=s.today??r.today()??de(n.brand?.timeZone),p=r.seenBy(e),u=p.schema,A=p.graph,R=Ge(n,s.views?{views:s.views}:{}),F=typeof t=="string"?t.trim():t.slug,M=typeof t=="string"?R.find(c=>c.slug===F||c.title===F||c.address===F):R.find(c=>c.slug===t.slug&&c.kind===t.kind)??t,x=!M&&typeof t=="string"?A.getNode(F):void 0,G=!M&&!x?/^\/?forms\/(.+)$/.exec(F)?.[1]:void 0,I=G!==void 0?Be(n,G):void 0;if(I)return{ok:!0,description:ot(u,I,a)};if(!M&&!x)return{ok:!1,error:`"${F}" is not a place this app has, nor a record this seat can see.`,places:[...R.map(c=>c.slug),...Object.keys(n.forms??{}).map(c=>`forms/${c}`)]};let l=[],w=n.viewSpecs??{},S=nt(a),k=(c,y)=>ie(p,null,c,{app:n,today:o,...y}),f=(c,y,g)=>{let m=u.tryDefinition(c.kind),D=K(m,c);if(y==="name")return{id:c.id,kind:c.kind,title:D,parts:[]};if(w[c.kind]?.[y]){let O=k(c,{slot:y}),[B,...h]=O,j=B?.t==="title"||y==="row"&&B?.t==="headline";return{id:c.id,kind:c.kind,title:j?B.text:D,parts:P(j?h:O,g,`views.${c.kind}.${y}`,` (${c.id})`,j?1:0)}}if(y==="row")return{id:c.id,kind:c.kind,title:D,parts:[]};let d=m?.computed?re(u,A,c):c,W=_(d,m,{limit:3,said:[D],glance:!0,locale:n.brand?.locale,timeZone:n.brand?.timeZone});return{id:c.id,kind:c.kind,title:D,parts:W.map(O=>({t:"text",text:O.alone}))}};function P(c,y,g,m="",D=0){let v=[];return c.forEach((d,W)=>{let O=`${g}.${W+D}`;switch("problem"in d&&d.problem&&l.push({at:`${O}${m}`,says:d.problem}),d.t){case"title":v.push({t:"heading",level:3,text:d.text});return;case"text":v.push({t:"text",text:d.markdown?Ae(d.text):d.runs?it(d.runs):d.text,...d.tone?{tone:d.tone}:{}});return;case"badge":v.push({t:"badge",text:d.text});return;case"field":case"image":v.push({t:"field",label:d.label,text:d.text});return;case"progress":v.push({t:"progress",label:d.label,text:d.text});return;case"group":v.push(...P(d.blocks,y,`${O}.group`,m));return;case"when":v.push(...P(d.blocks,y,`${O}.show`,m));return;case"divider":case"figure":return;case"headline":v.push({t:"heading",level:d.level,text:d.text});return;case"number":v.push({t:"figure",text:d.text,...d.label?{label:d.label}:{}});return;case"list":{if(d.failed){v.push({t:"text",text:"\u2014"});return}if(d.members.length===0){d.empty&&v.push({t:"list",as:d.as,columns:1,groups:[],empty:d.empty});return}let B=y+1,h=B>tt?"name":d.as,j=(d.groups??[{value:null,members:d.members}]).map(H=>({..."heading"in H&&H.heading?{heading:H.heading,count:(d.everyGroup?.find(J=>J.value===H.value)??H).members.length}:{},items:H.members.map(J=>f(J,h,B))}));v.push({t:"list",as:h,columns:h==="card"?S:1,groups:j,...d.more>0?{more:d.more}:{}});return}}}),v}let i=[],$,b,C,N=[];if(x){b="record";let c=u.tryDefinition(x.kind),y=K(c,x);C={slug:x.id,title:y,kind:x.kind,address:$e(u,x.kind,x.id)};let g=w[x.kind]?.page,m=s.views?.find(D=>D.attach===x.kind&&D.cardinality==="one");if(m&&i.push({t:"view",name:m.name,...m.title?{title:m.title}:{},...m.replaces==="page"?{replaces:!0}:{},...m.parts?{parts:m.parts}:{}}),m?.replaces==="page")b=`view:${m.name}`,l.push(...Ue(n,[m]));else{g&&i.push(...P(k(x,{slot:"page"}),1,`views.${x.kind}.page`));let D=c?.computed?re(u,A,x):x;for(let v of je(c,_(D,c,{said:[y],locale:n.brand?.locale,timeZone:n.brand?.timeZone}))){v.title&&i.push({t:"heading",level:2,text:v.title});for(let d of v.fields)i.push({t:"field",label:d.label,text:d.value,...d.long?{long:!0}:{},...d.markdown?{markdown:!0}:{}})}}}else{let c=M;C={slug:c.slug,title:c.title,kind:c.kind,address:c.address};let y=c.lens?ke(n).drawn.find(g=>g.as===c.slug&&(c.kind===null||g.kinds.includes(c.kind))):void 0;if(c.kind!==null&&y?.create!==!1&&c.view===void 0&&(N=Ee(r,e,c.kind).map(g=>Te(r,e,g))),c.view!==void 0&&!y){let g=s.views?.find(m=>m.name===c.view);b=`view:${c.view}`,i.push({t:"view",name:c.view,title:g?.title??c.title,...typeof g?.flows=="boolean"?{flows:g.flows}:{},...g?.parts?{parts:g.parts}:{}})}else if(c.kind===null){let g=n.brand,m=g?.name??n.name,D=we(g)?.light,v=D&&ye(D)?D:void 0;if($={name:m,...g?.subtitle&&g.subtitleDrawn!==!1?{subtitle:g.subtitle}:{},...v?{logo:{alt:g?.logoAlt??m,...he(v)?{drawn:"inline SVG"}:{drawn:"image",src:v}}}:{}},n.home)b="blocks",i=P(k(null,{}),0,"views.home");else{b="derived";let d=r.kindsKeptFrom(e),W=new Set([...n.pages?.hide??[],...d,...r.modules.disabledKinds]),O=xe(u.kinds,n.pages?.order).filter(B=>!W.has(B));i.push({t:"heading",level:1,text:n.name??"Home"});for(let B of O){let h=A.nodesOfKind(B).filter(j=>T(u.tryDefinition(B),j)).length;h>0&&i.push({t:"text",text:`${h} ${L(u,B,h)}`})}}}else if(y?.lens==="blocks")b="lens:blocks",i=P(k(null,{blocks:y.options.blocks??[]}),0,`lenses.${y.index}.options.blocks`);else if(y?.lens==="columns"){b="lens:columns";let g=y.options.bindings??{};for(let m of Object.keys(g)){let D=g[m]?.column;if(!D)continue;let v=E(u,m,D),d=U(A.nodesOfKind(m).filter(h=>T(u.tryDefinition(m),h)),y.options.sort,(h,j)=>j==="label"?K(u.tryDefinition(h.kind),h):h[j]);Object.keys(g).length>1&&i.push({t:"heading",level:2,text:L(u,m,2).replace(/^./,h=>h.toUpperCase())}),i.push({t:"text",text:`${d.length} ${L(u,m,d.length)} in columns by ${q(u.tryDefinition(m),D).toLowerCase()}.`});let W=v.map(h=>({column:h,items:d.filter(j=>X(j,D,v)===h.value).map(j=>f(j,"card",1))})).filter(({column:h,items:j})=>h.value!==null||j.length>0).map(({column:h,items:j})=>({heading:`${h.label} (${j.length})`,items:j}));i.push({t:"list",as:"card",columns:1,groups:W});let O=new Map;for(let h of d)for(let j of oe(r,e,h,D,v))O.set(j.to,(O.get(j.to)??new Set).add(`"${j.title}"`));let B=v.filter(h=>h.value!==null&&O.has(h.value)).map(h=>`to ${h.label} by ${[...O.get(h.value)].join(" or ")}`);i.push({t:"text",text:B.length>0?`Moves: ${B.join("; ")}.`:"Moves: none for this seat."})}}else if(y?.lens==="coverage")b="lens:coverage",i=We(u,A,y.options);else if(y){b=`lens:${y.lens}`;let g=y.kinds.flatMap(m=>A.nodesOfKind(m).filter(D=>T(u.tryDefinition(m),D)));i.push({t:"text",text:`A ${y.lens} of ${g.length} ${y.kinds.map(m=>L(u,m,g.length)).join(" and ")}.`}),i.push({t:"list",as:"name",columns:1,groups:[{items:g.map(m=>f(m,"name",1))}]})}else{b="derived";let g=A.nodesOfKind(c.kind).filter(m=>T(u.tryDefinition(c.kind),m));i.push({t:"heading",level:1,text:c.title}),g.length===0?i.push({t:"list",as:"row",columns:1,groups:[],empty:`No ${L(u,c.kind,0)} yet.`}):i.push({t:"list",as:"row",columns:1,groups:[{items:g.map(m=>f(m,"row",1))}]})}}let V=e.kind==="system"?"the system":(e.roles??[]).length>0?(e.roles??[]).join(", "):e.kind,qe=a<_e?"phone":"wide",le=C.kind===null?st(u,A):[],ce={...$?{masthead:$}:{},...le.length>0?{facts:le}:{},place:C,seat:V,width:a,variant:qe,drawnBy:b,parts:i,...N.length>0?{forms:N}:{},problems:l};return{ok:!0,description:{...ce,text:ae(ce)}}}function ot(r,e,t){let s=[{t:"heading",level:1,text:e.title},...e.intro?[{t:"text",text:e.intro}]:[]],n={place:{slug:`forms/${e.name}`,title:e.title,kind:null,address:`/forms/${e.name}`},seat:`a visitor (${e.role})`,width:t,variant:t<_e?"phone":"wide",drawnBy:"form",parts:s,forms:[He(r,e)],problems:[]};return{...n,text:ae(n)}}function st(r,e){let t=Re(r,e,null),s=n=>Array.isArray(n)?n.map(s).join(", "):n===null?"nothing":typeof n=="boolean"?n?"yes":"no":typeof n=="object"?n.label:String(n);return[...Se(r)].map(([n,a])=>{let o=a.label??Z(n);return Object.hasOwn(t.values,n)?{name:n,label:o,value:s(t.values[n])}:{name:n,label:o,refused:t.refused[n]??"it could not be worked out"}})}function L(r,e,t){let s=r.tryDefinition(e);if(t===1)return s?.noun??e;let n=pe(r,e);return ue(n)}function ae(r){let e=[`${r.place.title} (${r.place.address}) \u2014 as ${r.seat}, ${r.width} wide (${r.variant}).`],t=r.masthead;t&&e.push(`Masthead: ${t.logo?`the logo ("${t.logo.alt}", ${t.logo.drawn==="image"?t.logo.src:"inline SVG"}), `:""}${t.name}${t.subtitle?` \u2014 ${t.subtitle}`:""}`);let s=(n,a)=>{for(let o of n)switch(o.t){case"heading":e.push(`${a}${"#".repeat(o.level)} ${o.text}`);break;case"text":e.push(`${a}${o.text}`);break;case"badge":e.push(`${a}[${o.text}]`);break;case"field":case"progress":e.push(`${a}${o.label}: ${o.text}`);break;case"figure":e.push(`${a}${o.text}${o.label?` \u2014 ${o.label}`:""}`);break;case"list":if(o.groups.length===0){o.empty&&e.push(`${a}(${o.empty})`);break}for(let p of o.groups){p.heading&&e.push(`${a}${p.heading}${p.count!==void 0?` (${p.count})`:""}:`);for(let u of p.items)e.push(`${a}${p.heading?" ":""}- ${u.title}`),s(u.parts,`${a}${p.heading?" ":" "}`)}o.as==="card"&&o.columns>1&&e.push(`${a}(cards, ${o.columns} across)`),o.more&&e.push(`${a}and ${o.more} more`);break;case"view":e.push(`${a}[the view "${o.title??o.name}"${o.replaces?", in place of the page":""}${o.flows===!0?", flowing with the page":o.flows===!1?", in a frame of its own":""}]`),o.parts&&s(o.parts,`${a} `);break}};s(r.parts,"");for(let n of r.forms??[])e.push(...Le(n));if(r.facts){e.push("Facts of the whole graph (what fact('<name>') reads):");for(let n of r.facts)e.push(`- ${n.label} (${n.name}): ${n.value??`not worked out \u2014 ${n.refused}`}`)}if(r.problems.length>0){e.push("Problems:");for(let n of r.problems)e.push(`- ${n.at}: ${n.says}`)}return e.join(`
2
- `)}function it(r){return r.map((e,t)=>(t===0?"":e.field===void 0&&r[t-1].field===void 0?" \xB7 ":" ")+e.text).join("")}export{E as a,X as b,oe as c,Ie as d,Ne as e,Ve as f,Ke as g,ie as h,Ue as i,rt as j,ae as k};
@@ -1 +0,0 @@
1
- import{i as n}from"./chunk.GNBN3BK7.js";import"./chunk.XTMOFRHL.js";import"./chunk.NLBIX7LH.js";import"./chunk.GACKGEUY.js";import"./chunk.2GLJH253.js";import"./chunk.GUMJEVVP.js";import"./chunk.4VW6THJF.js";import"./chunk.SAHNXAV3.js";import"./chunk.DHAK6PPX.js";import"./chunk.DUWYF7BO.js";import"./chunk.UGJSMNVO.js";import"./chunk.NR5ODXMO.js";import"./chunk.WVUJXDXZ.js";import{e as p}from"./chunk.TPG6IY4M.js";import"./chunk.NFDLCUCC.js";import"./chunk.X7JMJSLU.js";import"./chunk.PPRSGM64.js";import"./chunk.5Y3Q7ONN.js";import"./chunk.KTFUVR4V.js";import"./chunk.GZHZLJBF.js";import"./chunk.RQBEQYB2.js";import"./chunk.OJGHDWI6.js";import"./chunk.6VAFNCR4.js";import"./chunk.N4M54YK6.js";import"./chunk.KVJFY7N5.js";import"./chunk.DPHTUTOS.js";import"./chunk.2UIUMG23.js";import{R as m}from"./chunk.KA44WNB4.js";import"./chunk.SDO3U72B.js";import"./chunk.4TJOS4C7.js";import"./chunk.2AZTW66C.js";import{b as t}from"./chunk.AJZBJBMO.js";var i=t(m(),1),a=new WeakMap;function s(o){let e=a.get(o);if(!e){let r=p(o);e=c=>c.mode==="fullscreen"?(0,i.jsx)(n,{blocks:r,slot:"home",heading:2,firstHeading:1}):(0,i.jsx)(n,{blocks:r,slot:"home",heading:3,firstHeading:2}),a.set(o,e)}return e}export{s as homeView};
@@ -1 +0,0 @@
1
- import{a,b}from"./chunk.76W2FXEC.js";import"./chunk.LPD74WBI.js";import"./chunk.2UIUMG23.js";import"./chunk.KA44WNB4.js";import"./chunk.SDO3U72B.js";import"./chunk.4TJOS4C7.js";import"./chunk.2AZTW66C.js";import"./chunk.AJZBJBMO.js";export{a as ActivityFilter,b as InteractionRow};
@@ -1 +0,0 @@
1
- var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{c as $e,d as Pe,e as De}from"./chunk.7FRPNQU4.js";import{q as Ee}from"./chunk.NR5ODXMO.js";import{a as Je}from"./chunk.O45VO36H.js";import{d as Y}from"./chunk.SUPWMV2F.js";import{a as I}from"./chunk.MAFFUPCR.js";import{f as Me,g as Z,i as Ne}from"./chunk.KVJFY7N5.js";import{a as be}from"./chunk.DPHTUTOS.js";import{Ab as Ae,Ba as G,Da as me,Db as Oe,Fa as he,Ga as K,Gb as Re,Jb as B,K as fe,Mc as Te,Na as ye,Nc as _e,Oa as ge,Oc as xe,Ra as we,Xa as W,_a as ke,a as ue,ea as U,wb as Se,ya as pe,zb as ve}from"./chunk.4TJOS4C7.js";var E=(n,t,e)=>{(n[t]===void 0||e>n[t])&&(n[t]=e)},z=(n,t,e)=>{(n[t]===void 0||e<n[t])&&(n[t]=e)},X=(n,t)=>{n.format=t,t.includes("int")&&(n.isInt=!0)},ze=(n,t)=>{n.mime=n.mime?n.mime.filter(e=>t.includes(e)):[...t]},Ie=(n,t)=>{n.multipleOf??=[],n.multipleOf.includes(t)||n.multipleOf.push(t)},je=(n,t)=>(n.patterns??=new Set).add(t),nt={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function j(n){let t={},{def:e,bag:r}=n._zod,i=n._zod.traits.has("$ZodCheck")?[n,...e.checks??[]]:e.checks??[];for(let o of i){let a=o._zod.def;switch(a.check){case"greater_than":E(t,a.inclusive?"minimum":"exclusiveMinimum",a.value);break;case"less_than":z(t,a.inclusive?"maximum":"exclusiveMaximum",a.value);break;case"multiple_of":Ie(t,a.value);break;case"number_format":{X(t,a.format);let d=nt[a.format];d&&(E(t,"minimum",d[0]),z(t,"maximum",d[1]));break}case"bigint_format":X(t,a.format);break;case"min_length":case"min_size":E(t,"minimum",a.minimum);break;case"max_length":case"max_size":z(t,"maximum",a.maximum);break;case"length_equals":E(t,"minimum",a.length),z(t,"maximum",a.length);break;case"size_equals":E(t,"minimum",a.size),z(t,"maximum",a.size);break;case"string_format":X(t,a.format),a.pattern&&je(t,a.pattern),(a.format==="base64"||a.format==="base64url")&&(t.contentEncoding=a.format),(a.local||a.precision===-1)&&(t.laxFormat=!0);break;case"mime_type":ze(t,a.mime);break}}r.minimum!==void 0&&E(t,"minimum",r.minimum),r.exclusiveMinimum!==void 0&&E(t,"exclusiveMinimum",r.exclusiveMinimum),r.maximum!==void 0&&z(t,"maximum",r.maximum),r.exclusiveMaximum!==void 0&&z(t,"exclusiveMaximum",r.exclusiveMaximum),r.multipleOf!==void 0&&Ie(t,r.multipleOf),r.format!==void 0&&(t.format??=r.format,r.format.includes("int")&&(t.isInt=!0)),r.mime&&ze(t,r.mime);for(let o of r.patterns??[])je(t,o);return t}var it={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""};function L(n){let t=n._zod.def;return t.type==="pipe"&&t.in._zod.traits.has("$ZodTransform")?L(t.out):t.type==="catch"?L(t.innerType):n._zod.optin}var rt=new Set(["promise","optional","nonoptional","nullable","readonly","default","prefault","catch"]);function _(n,t=new Set){if(t.has(n))return!1;t.add(n);let e=n._zod.def,r=e.type;return r==="transform"?!0:r==="array"?_(e.element,t):r==="set"?_(e.valueType,t):r==="lazy"?_(e.getter(),t):rt.has(r)?_(e.innerType,t):r==="intersection"?_(e.left,t)||_(e.right,t):r==="record"||r==="map"?_(e.keyType,t)||_(e.valueType,t):r==="pipe"?n._zod.traits.has("$ZodCodec")||_(e.in,t)||_(e.out,t):r==="object"?Object.values(e.shape).some(i=>_(i,t)):r==="union"?e.options.some(i=>_(i,t)):r==="tuple"?e.items.some(i=>_(i,t))||(e.rest?_(e.rest,t):!1):!1}function ot(n){let t=Object.values(n).filter(e=>typeof e=="number");return Object.entries(n).filter(([e])=>t.indexOf(+e)===-1).map(([,e])=>e)}function Fe(n){let t=n.anyOf;if(!Array.isArray(t)||t.length===0||n.type!==void 0)return;let e=[];for(let r of t){if(!r||typeof r!="object")return;Fe(r);let i=Object.keys(r);if(i.length!==1||i[0]!=="type")return;for(let o of[r.type].flat()){if(typeof o!="string")return;e.includes(o)||e.push(o)}}delete n.anyOf,n.type=e.length===1?e[0]:e}var qe=new Set(["type","properties","required","additionalProperties"]),He=n=>{let t=n.additionalProperties;return t&&typeof t=="object"&&Object.keys(t).length?t:null},Le=(n,t)=>JSON.stringify(n)===JSON.stringify(t);function Q(n){for(let i of n){if(typeof i!="object"||i.type!=="object")return null;for(let o in i)if(!qe.has(o))return null}let t={},e=new Set;for(let i of n){for(let o in i.properties){if(Object.prototype.hasOwnProperty.call(t,o))continue;let a=[];for(let d of n){let s=d.properties?.[o]??He(d);s&&!a.some(g=>Le(g,s))&&a.push(s)}t[o]=a.length===1?a[0]:Q(a)??{allOf:a}}for(let o of i.required??[])e.add(o)}let r={type:"object",properties:t};if(e.size&&(r.required=[...e]),n.every(i=>i.additionalProperties===!1))r.additionalProperties=!1;else{let i=[];for(let o of n){let a=He(o);a&&!i.some(d=>Le(d,a))&&i.push(a)}i.length===1?r.additionalProperties=i[0]:i.length>1&&(r.additionalProperties={allOf:i})}return r}function at(n){let t=n.allOf;if(!Array.isArray(t)||t.length<2)return;for(let i of qe)if(i in n)return;let e=t.filter(i=>Array.isArray(i.oneOf)||Array.isArray(i.anyOf)),r;if(!e.length)r=Q(t);else{let i=e[0],o=Array.isArray(i.oneOf)?"oneOf":"anyOf";if(Object.keys(i).length!==1)return;let a=t.filter(s=>s!==i),d=i[o].map(s=>Q([...a,s]));if(d.some(s=>!s))return;r={[o]:d}}r&&(delete n.allOf,Object.assign(n,r))}function We(n){let t=n;for(let b of["anyOf","oneOf"]){let T=t[b];if(!Array.isArray(T))continue;let O=T.map(We);O.some((v,p)=>v!==T[p])&&(t={...t,[b]:O})}let e=[t.type].flat(),r=!e.includes("string")&&e.some(b=>b==="number"||b==="integer"),i=t.enum??(t.const!==void 0?[t.const]:void 0);if(!r&&!i?.some(b=>typeof b=="number"))return t;let{minimum:o,maximum:a,exclusiveMinimum:d,exclusiveMaximum:s,multipleOf:g,format:c,id:w,...h}=t;return h.enum?h.enum=h.enum.map(b=>typeof b=="number"?String(b):b):typeof h.const=="number"&&(h.const=String(h.const)),r&&(h.type="string",i||(h.pattern=e.includes("number")?"^-?\\d+(?:\\.\\d+)?$":"^-?\\d+$")),h}var C=class{constructor(t,e){this.override=t;this.refs=e}done=new Map;path=[];cyclic=new Map;write(t,e=!1){let r=this.refs.get(t);if(r!==void 0&&!e)return{$ref:r};if(this.path.includes(t))return this.cyclic.has(t)||this.cyclic.set(t,""),{};let i=this.done.get(t);if(i)return i;this.path.push(t);try{let o=this.written(t);return this.done.set(t,o),o}finally{this.path.pop()}}written(t){let e={},r,i=t._zod.toJSONSchema?.();i?Object.assign(e,i):r=this.process(t,e);let o=ue.get(t);if(o)for(let d of Object.keys(o))e[d]=o[d];_(t)&&(delete e.examples,delete e.default),"_prefault"in e&&(e.default??=e._prefault,delete e._prefault);let a=e;if(r){let d=this.write(r);a={...e};for(let s of Object.keys(d))s in e||(a[s]=d[s])}return this.override({zodSchema:t,jsonSchema:a}),Fe(a),t._zod.def.type==="intersection"&&at(a),a}process(t,e){let r=t._zod.def;switch(r.type){case"string":{e.type="string";let{minimum:i,maximum:o,format:a,patterns:d,contentEncoding:s,laxFormat:g}=j(t);if(typeof i=="number"&&(e.minLength=i),typeof o=="number"&&(e.maxLength=o),a&&(e.format=it[a]??a,(e.format===""||a==="time"||g)&&delete e.format),s&&(e.contentEncoding=s),d&&d.size>0){let c=[...d];c.length===1?e.pattern=c[0].source:e.allOf=c.map(w=>({pattern:w.source}))}return}case"number":{let{minimum:i,maximum:o,multipleOf:a,exclusiveMinimum:d,exclusiveMaximum:s,isInt:g}=j(t);if(e.type=g?"integer":"number",typeof d=="number"&&d>=(i??Number.NEGATIVE_INFINITY)?e.exclusiveMinimum=d:typeof i=="number"&&(e.minimum=i),typeof s=="number"&&s<=(o??Number.POSITIVE_INFINITY)?e.exclusiveMaximum=s:typeof o=="number"&&(e.maximum=o),a){let[c,...w]=new Set(a.filter(h=>Number.isFinite(h)&&h!==0).map(Math.abs));c!==void 0&&(e.multipleOf=c),w.length&&(e.allOf=[...e.allOf??[],...w.map(h=>({multipleOf:h}))])}return}case"boolean":case"success":e.type="boolean";return;case"null":e.type="null";return;case"never":e.not={};return;case"enum":{let i=ot(r.entries);i.length===0?e.not={}:(i.every(o=>typeof o=="number")&&(e.type="number"),i.every(o=>typeof o=="string")&&(e.type="string"),e.enum=i);return}case"literal":{let i=r.values.filter(o=>o!==void 0).map(o=>typeof o=="bigint"?Number(o):o);if(r.values.length===0)e.not={};else if(i.length===1)e.type=i[0]===null?"null":typeof i[0],e.const=i[0];else if(i.length>1){for(let o of["number","string","boolean"])i.every(a=>typeof a===o)&&(e.type=o);i.every(o=>o===null)&&(e.type="null"),e.enum=i}return}case"template_literal":e.type="string",e.pattern=t._zod.pattern.source;return;case"file":{e.type="string",e.format="binary",e.contentEncoding="binary";let{minimum:i,maximum:o,mime:a}=j(t);i!==void 0&&(e.minLength=i),o!==void 0&&(e.maxLength=o),a&&(a.length===0?e.not={}:a.length===1?e.contentMediaType=a[0]:e.anyOf=a.map(d=>({contentMediaType:d})));return}case"array":{let{minimum:i,maximum:o}=j(t);typeof i=="number"&&(e.minItems=i),typeof o=="number"&&(e.maxItems=o),e.type="array",e.items=this.write(r.element);return}case"object":{let i=r.shape;e.type="object";let o={};e.properties=o;for(let d in i)Object.defineProperty(o,d,{value:this.write(i[d]),writable:!0,enumerable:!0,configurable:!0});let a=Object.keys(i).filter(d=>L(i[d])===void 0);a.length>0&&(e.required=a),r.catchall?._zod.def.type==="never"?e.additionalProperties=!1:r.catchall&&(e.additionalProperties=this.write(r.catchall));return}case"union":e[r.inclusive===!1?"oneOf":"anyOf"]=r.options.map(i=>this.write(i));return;case"intersection":{let i=d=>"allOf"in d&&Object.keys(d).length===1,o=this.write(r.left),a=this.write(r.right);e.allOf=[...i(o)?o.allOf:[o],...i(a)?a.allOf:[a]];return}case"tuple":{let i=r.items;e.type="array",e.prefixItems=i.map(s=>this.write(s)),r.rest?e.items=this.write(r.rest):e.items=!1;let o=i.length;for(;o>0&&L(i[o-1])!==void 0;)o-=1;o>0&&(e.minItems=o),r.rest||(e.maxItems=i.length);let{minimum:a,maximum:d}=j(t);typeof a=="number"&&(e.minItems=a),typeof d=="number"&&(e.maxItems=d);return}case"record":{let i=r.keyType;e.type="object";let o=j(i).patterns;if(r.mode==="loose"&&o&&o.size>0){let d=this.write(r.valueType),s={};for(let g of o)s[g.source]=d;e.patternProperties=s}else e.propertyNames=We(this.write(i)),e.additionalProperties=this.write(r.valueType);let a=i._zod.values;if(a&&!r.partial&&L(r.valueType)===void 0){let d=[...a].filter(s=>typeof s=="string"||typeof s=="number");d.length>0&&(e.required=d.map(String))}return}case"nullable":e.anyOf=[this.write(r.innerType),{type:"null"}];return;case"default":case"prefault":{let i=r.defaultValue,o,a=!1,d=JSON.stringify(i,(s,g)=>typeof g=="bigint"?(a=!0,null):g);return!a&&d!==void 0&&(o=JSON.parse(d)),a||(e[r.type==="default"?"default":"_prefault"]=o),r.innerType}case"catch":{try{e.default=r.catchValue(void 0)}catch{}return r.innerType}case"readonly":return e.readOnly=!0,r.innerType;case"pipe":return r.in._zod.traits.has("$ZodTransform")?r.out:r.in;case"lazy":return t._zod.innerType;case"optional":case"nonoptional":case"promise":return r.innerType;default:return}}};function Be(n,t=()=>{}){let e=n,r=new C(t,new Map),i=r.write(e,!0);if(r.cyclic.size>0){let o=new Map,a=0,d=[];for(let g of r.cyclic.keys())if(g===e)o.set(g,"#");else{let c=`__schema${a++}`;o.set(g,`#/$defs/${c}`),d.push([g,c])}r=new C(t,o),i=r.write(e,!0);let s={};for(let[g,c]of d)s[c]=r.write(g,!0);d.length>0&&(i={...i,$defs:s})}return JSON.parse(JSON.stringify({$schema:"https://json-schema.org/draft/2020-12/schema",...i}))}function Ce(n){return Be(n,ct)}var st={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string"},dt={phone:"A phone number as it is written, like +1 555 123 4567 or 020 7946 0958 ext. 12.",place:"An address or a place's name, as a person would search a map for it.",duration:"A length of time in whole minutes: 90 is 1 h 30 min."};function ct(n){pe(n.zodSchema)&&(n.jsonSchema["x-graview-app-link"]=!0);let t=he(n.zodSchema);if(t&&(n.jsonSchema.type==="string"||n.jsonSchema.type==="array")){n.jsonSchema["x-graview-linked"]={address:t.address,kinds:[...t.kinds],cardinality:t.cardinality};let s=t.kinds.join(" or "),g=`${t.cardinality==="many"?"Records":"A record"}: a ${s} in the app ${t.address}, as "${t.kinds[0]}:<id>" \u2014 an id found there with find_linked. Linking never changes that app.`,c=n.jsonSchema.description;typeof c=="string"&&c.includes(g)||(n.jsonSchema.description=`${typeof c=="string"&&c?`${c.replace(/\.?$/,".")} `:""}${g}`)}if(we(n.zodSchema)&&(n.jsonSchema["x-graview-repeat"]=!0,!n.jsonSchema.type&&!n.jsonSchema.anyOf&&!n.jsonSchema.oneOf&&Object.assign(n.jsonSchema,lt())),be(n.zodSchema)){n.jsonSchema.contentMediaType="text/markdown";let s=n.jsonSchema.description;typeof s=="string"&&s.endsWith("Written in Markdown.")||(n.jsonSchema.description=`${typeof s=="string"&&s?`${s.replace(/\.?$/,".")} `:""}Written in Markdown.`)}let e=Re(n.zodSchema);if(e){let s=n.jsonSchema;s["x-graview-type"]=e,e==="duration"&&(s["x-graview-unit"]="minutes"),s.description??=dt[e]}let r=Oe(n.zodSchema,!1);if(r){let s=Me(r);n.jsonSchema["x-graview-format"]=s.format??"unit",s.currency&&(n.jsonSchema["x-graview-currency"]=s.currency),s.unit&&s.format!=="money"&&(n.jsonSchema["x-graview-unit"]=s.unit);let g=n.jsonSchema.description;n.jsonSchema.description=typeof g=="string"&&g.length>0?`${g} ${Z(s)}`:Z(s)}let i=n.zodSchema._zod?.def;if(!i||i.type!=="string"||typeof i.format!="string"||i.format==="regex")return;let o=n.jsonSchema,a=(i.checks??[]).map(s=>s._zod?.def).filter(s=>s?.format==="regex"&&s.pattern instanceof RegExp).map(s=>s.pattern.source);delete o.pattern;let d=o.allOf;Array.isArray(d)&&d.every(s=>typeof s=="object"&&s!==null&&Object.keys(s).length===1&&"pattern"in s)&&delete o.allOf,o.format=st[i.format]??i.format,a.length===1?o.pattern=a[0]:a.length>1&&(o.allOf=a.map(s=>({pattern:s})))}function ee(n){let t=B(n.input),e=Ce(n.input),r=e.properties??{};if(ve(n)){let i=n.creates.join(" | ");r.id={type:"string",minLength:1,description:`Optional: the id for the ${i} this makes. Refused if the graph already has it; left out, one is minted from the label.`},e.properties=r}Ae(n)&&(e.additionalProperties=!1);for(let i of t){let o=r[i.name];if(!o)continue;let a=i.kinds.includes("*")?"any node kind":i.kinds.join(" | ");o.description=[o.description,`Id of a node (${a}).`].filter(Boolean).join(" ")}return{name:n.name,...n.title===void 0?{}:{title:n.title},description:n.description??n.title??n.name,inputSchema:e,nodeRefs:t}}function lt(){let n={type:"string",pattern:"^\\d{4}-\\d{2}-\\d{2}$"},t=(e,r)=>({type:"integer",minimum:e,maximum:r});return{type:"object",description:'How the date beside it repeats; the date is the first occurrence. "on" is weekdays for "week", days of the month (-1 the last) for "month".',properties:{every:{type:"string",enum:[...ge]},interval:t(1,99),on:{type:"array",minItems:1,maxItems:31,items:{anyOf:[{type:"string",enum:[...ye]},t(-1,31)]}},until:n,count:t(1,1e3),except:{type:"array",maxItems:500,items:n},continues:{type:"string",maxLength:200}},required:["every"],additionalProperties:!1}}function Ve(n){let t=new Set;for(let e=n;e;e=e.onBehalfOf)e.id!==void 0&&t.add(`${e.kind}:${e.id}`);return t}function V(n,t){let e=Ve(t),r=c=>{if(c.kind==="rule")return!1;let w=Ve(c);if(w.size===0)return!1;for(let h of w)if(e.has(h))return!1;return!0},i,o=()=>{if(i)return i;i=new Map;for(let c of n.log.live()){if(c.undoes!==void 0)continue;let w=r(c.author)?c.author:void 0;for(let h of c.primitives){h.op==="remove-node"&&i.delete(h.node.id);let b=h.op==="add-node"?h.node.id:h.op==="patch-node"?h.id:void 0;if(b===void 0)continue;let T=h.op==="add-node"?Object.keys(h.node):Object.keys(h.after),O=i.get(b);(h.op==="add-node"||!O)&&i.set(b,O=new Map);for(let v of T)v==="id"||v==="kind"||(w?O.set(v,w):O.delete(v))}}return i},a=n.schema,d=new Map,s=(c,w)=>{let h=`${c}\0${w}`,b=d.get(h);if(b===void 0){let T=a.tryDefinition(c)?.fields?.shape;b=T!==void 0&&w in T&&Ne(T[w]).type==="text",d.set(h,b)}return b},g=c=>n.graph.getNode(c)?.kind;return{prose:s,say:c=>W(c,{graph:n.graph,schema:a}),fieldBy(c,w){let h=g(c);if(!(h===void 0||!s(h,w)))return o().get(c)?.get(w)},recordBy(c){let w=g(c),h=o().get(c);if(w===void 0||!h)return;let b;for(let[T,O]of h)s(w,T)&&(b=O);return b}}}var te=(n,t,e)=>({untrusted:!0,authoredBy:e.say(t),text:n}),ut="the host's ranker";function Ue(n,t){return{...n,hits:n.hits.map(e=>{if(e.about!=="node")return e;e.why.by==="meaning"&&e.why.matched!==void 0&&(e={...e,why:{...e.why,matched:{untrusted:!0,authoredBy:ut,text:e.why.matched}}});let r=t.recordBy(e.id);if(!r)return e;let i=t.prose(e.kind,e.why.field)?t.fieldBy(e.id,e.why.field):r;return{...e,label:te(e.label,r,t),...e.apart!==void 0?{apart:te(e.apart,r,t)}:{},why:i?{...e.why,fragment:te(e.why.fragment,i,t)}:e.why}})}}var ne=(n,t,e)=>({title:n,readOnlyHint:t,destructiveHint:!1,idempotentHint:e,openWorldHint:!1}),ft={name:"subscribe",title:"Notify me when something happens",description:`Subscribe the person you act for to be told when something happens in this app \u2014 their host delivers it (an email, a push). on is one of: "act" (an act runs; give act, its declared name, and/or record), "created" (a record of kind is added), "changed" (a record of kind, or the one record, changes), "reaches" (a record of kind, or the one record, comes to satisfy condition, an expression in the app's rule language such as done == true or amount > 100). They are told only of changes someone else made, unless alsoMine is true, and only of records they may see. Returns the subscription and its sentence. Changes nothing in the app.`,inputSchema:{type:"object",properties:{on:{type:"string",enum:["act","created","changed","reaches"],description:"What to be told of."},act:{type:"string",description:"An act's declared name, for on: act."},kind:{type:"string",description:"A kind, for created, changed and reaches."},record:{type:"string",description:"One record, by id or name: for act, changed and reaches."},condition:{type:"string",description:"For reaches: what the record should come to satisfy, in the rule language (done == true)."},alsoMine:{type:"boolean",description:"Also when the person themselves made the change; false when unsaid."}},required:["on"],additionalProperties:!1},mutating:!1,annotations:ne("Notify me when something happens",!1,!1)},pt={name:"unsubscribe",title:"Stop notifying me",description:"Take away one of the person's subscriptions, by the id list_subscriptions or subscribe answered. Changes nothing in the app.",inputSchema:{type:"object",properties:{id:{type:"string",description:"The subscription's id."}},required:["id"],additionalProperties:!1},mutating:!1,annotations:ne("Stop notifying me",!1,!0)},mt={name:"list_subscriptions",title:"What I am notified of",description:`List what the person you act for is told of in this app: each subscription's id and its sentence ("When someone else adds a task").`,inputSchema:{type:"object",properties:{},additionalProperties:!1},mutating:!1,annotations:ne("What I am notified of",!0,!0)},ie=[ft,pt,mt];var q=n=>{let t;return()=>t??=n().catch(e=>{throw t=void 0,e})},ht=q(()=>(__graviewPreload(import.meta.url,["./chunk.GTPC6JOW.js","./chunk.NQZ73QV7.js","./chunk.SUPWMV2F.js","./chunk.TPG6IY4M.js","./chunk.NFDLCUCC.js","./chunk.X7JMJSLU.js","./chunk.PPRSGM64.js","./chunk.5Y3Q7ONN.js","./chunk.KTFUVR4V.js","./chunk.KVJFY7N5.js","./chunk.DPHTUTOS.js","./chunk.4TJOS4C7.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.FQYOTK34.js"))),yt=()=>(__graviewPreload(import.meta.url,["./chunk.MAFFUPCR.js","./chunk.PPRSGM64.js","./chunk.5Y3Q7ONN.js","./chunk.KTFUVR4V.js","./chunk.4TJOS4C7.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.PQVUQVRL.js")).catch(()=>{}),gt=async()=>{(await yt())?.judgeWithLines()},F=q(()=>(__graviewPreload(import.meta.url,["./chunk.WVUJXDXZ.js","./chunk.TPG6IY4M.js","./chunk.NFDLCUCC.js","./chunk.X7JMJSLU.js","./chunk.PPRSGM64.js","./chunk.5Y3Q7ONN.js","./chunk.KTFUVR4V.js","./chunk.DPHTUTOS.js","./chunk.4TJOS4C7.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.ODRL5OWR.js"))),wt=q(()=>(__graviewPreload(import.meta.url,["./chunk.7LL7OSBY.js","./chunk.G4JJXA63.js","./chunk.E5GM2SMO.js","./chunk.NQZ73QV7.js","./chunk.NX7IIZLO.js","./chunk.XOZU4OFA.js","./chunk.SUPWMV2F.js","./chunk.Q5WEOX3Q.js","./chunk.4GQA3AJU.js","./chunk.HG4DDNPG.js","./chunk.MAFFUPCR.js","./chunk.WVUJXDXZ.js","./chunk.TPG6IY4M.js","./chunk.NFDLCUCC.js","./chunk.X7JMJSLU.js","./chunk.PPRSGM64.js","./chunk.5Y3Q7ONN.js","./chunk.KTFUVR4V.js","./chunk.N4M54YK6.js","./chunk.KVJFY7N5.js","./chunk.DPHTUTOS.js","./chunk.4TJOS4C7.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.ZXZNAG35.js"))),bt=q(()=>(__graviewPreload(import.meta.url,["./chunk.DAUC2DFY.js","./chunk.GTPC6JOW.js","./chunk.NQZ73QV7.js","./chunk.O45VO36H.js","./chunk.UT6642FC.js","./chunk.SUPWMV2F.js","./chunk.TPG6IY4M.js","./chunk.NFDLCUCC.js","./chunk.X7JMJSLU.js","./chunk.PPRSGM64.js","./chunk.5Y3Q7ONN.js","./chunk.KTFUVR4V.js","./chunk.N4M54YK6.js","./chunk.KVJFY7N5.js","./chunk.DPHTUTOS.js","./chunk.4TJOS4C7.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.V3N34DSU.js"))),kt=q(()=>(__graviewPreload(import.meta.url,["./chunk.QII2C5OV.js","./chunk.PPRSGM64.js","./chunk.5Y3Q7ONN.js","./chunk.KTFUVR4V.js","./chunk.4TJOS4C7.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.DFK2NA6L.js"))),St=n=>n.definitions.some(t=>K(t).size>0),Ge=n=>({value:G(n),label:n.label,...n.describe?{describe:n.describe}:{},...n.card?{card:n.card}:{},fields:n.fields,...n.app?{app:n.app}:{}});async function vt(n,t,e,r){let i=String(e.relation??""),[o,a]=i.includes(".")?i.split(".",2):[void 0,i],d=n.schema.definitions.flatMap(v=>[...K(v)].map(([p,f])=>({kind:v.kind,name:p,relation:f}))),s=d.filter(v=>v.name===a&&(o===void 0||v.kind===o));if(s.length!==1){let v=d.map(p=>`${p.kind}.${p.name}`).join(", ")||"none";return{ok:!1,error:`${s.length===0?`No relation to another app is called "${i}"`:`"${i}" names a relation of several kinds`}. The relations to other apps are: ${v}.`}}let{kind:g,name:c,relation:w}=s[0];if(!r)return{ok:!1,error:`This seat cannot read ${w.address}: its host reads no other app's records. Nothing was changed.`};let h={kind:t.kind,...t.id===void 0?{}:{id:t.id},...t.roles?{roles:t.roles}:{}},b=typeof e.of=="string"?e.of:void 0;if(b!==void 0){let v=n.graph.getNode(b);if(!v||v.kind!==g)return{ok:!1,error:`No ${g} "${b}".`};let p=me(v[c],w),f=await Promise.all(p.map(k=>Promise.resolve().then(()=>r.resolve(k,h)).catch(()=>null)));return{ok:!0,data:{relation:`${g}.${c}`,app:w.address,records:f.map((k,S)=>k===null?{value:G(p[S]),missing:!0}:"denied"in k?{denied:!0,said:"linked record (no access)"}:Ge(k))},reads:[b]}}let T=typeof e.limit=="number"&&e.limit>0?Math.min(e.limit,20):20,O=await Promise.resolve().then(()=>r.find({address:w.address,kinds:w.kinds,query:String(e.query??""),limit:T},h)).catch(()=>[]);return Array.isArray(O)?{ok:!0,data:{relation:`${g}.${c}`,app:w.address,records:O.map(Ge),link:`edit-${g} with ${c} set to a record's value`}}:{ok:!0,data:{relation:`${g}.${c}`,app:w.address,denied:!0,said:"linked record (no access)"}}}var M=n=>({title:n,readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1}),Ke={description:'Which records: false (the default) the live ones, true only the archived ones, "all" both. An archived record is set aside, not gone: unarchive-<kind> brings it back.',anyOf:[{type:"boolean"},{type:"string",enum:["all"]}]},re={type:"number",description:"Where the page starts; 0 when unsaid."},se=[{name:"search_graph",title:"Find by name",description:"Find things by name: records whose name or readable fields carry the words, and the kinds, places and rules the words name \u2014 each with why it matched. Reach for this before get_graph when you know what something is called. Words match the start of words, case and accents aside; key:value tokens narrow as a list's filter does (done:false, is:any for past records, kind:<kind>). Pass subject (a node id) to get the acts you may run on it as hits too. When few records match exactly, records with a near word follow \u2014 a typo, another form of the word, a meaning \u2014 each with near: true and why.matched, the record's own word that answered.",inputSchema:{type:"object",properties:{query:{type:"string",description:"Words, with optional key:value conditions."},limit:{type:"number",description:"Most hits to return; at most 20."},subject:{type:"string",description:"A node id whose acts to include."},archived:Ke},required:["query"],additionalProperties:!1},mutating:!1,annotations:M("Find by name")},{name:"get_graph",title:"Read the graph",description:"Read the graph, 25 nodes a page: their fields, the edges out of them, and how many more. Start here when you need the shape of the domain rather than one thing in it.",inputSchema:{type:"object",properties:{offset:re,archived:Ke},additionalProperties:!1},mutating:!1,annotations:M("Read the graph")},{name:"get_node",title:"Read one node",description:"Read one node: its fields, its links (id, kind and label, 20 each way a page), the violations that implicate it, and its computed values: read-only fields worked out from what you can see, which no act sets. Use this to check a thing before you change it.",inputSchema:{type:"object",properties:{id:{type:"string",description:"A node's id, or its name."},offset:re},required:["id"],additionalProperties:!1},mutating:!1,annotations:M("Read one node")},{name:"get_violations",title:"List the problems",description:"List the invariant violations the graph currently has, 20 a page, with the repairs that would resolve each one. Read this before proposing work: a rule that is already broken is more urgent than anything you could add.",inputSchema:{type:"object",properties:{offset:re,context:{type:"object",description:"Evaluation context, e.g. { weekStart }."}},additionalProperties:!1},mutating:!1,annotations:M("List the problems")},{name:"get_affordances",title:"Ask what can be done",description:"Ask what can legally be done with a selection, ranked. Prefer these over composing a mutation by hand: they are derived from the schema, the invariants and the shape of the graph, so they cannot name an action that does not exist.",inputSchema:{type:"object",properties:{selection:{type:"array",items:{type:"string"},description:"Node ids."},context:{type:"object"}},required:["selection"],additionalProperties:!1},mutating:!1,annotations:M("Ask what can be done")},{name:"describe_place",title:"Say what a place shows",description:`Say what one place of the app shows you, as a person in your seat would see it: its headings, its figures as drawn, its lists with each record's title and what its card or row says, the headings a list is grouped under, what an empty list says, the forms it offers (each field in the order asked, its label, whether it must be answered, what it takes and its choices), and any block that could not be worked out. Pass a place's slug ("home", a lens's address like "the-offers", a kind's like "offers"), a record's id, or a visitor form's "forms/<name>", and width 390 for a phone. Use it after a change to check what somebody now sees, instead of guessing.`,inputSchema:{type:"object",properties:{place:{type:"string",description:`"home", a place's slug, a record's id, or "forms/<name>" for a visitor form.`},width:{type:"number",description:"The screen's width in CSS pixels; 390 is a phone, 1440 when unsaid."}},required:["place"],additionalProperties:!1},mutating:!1,annotations:M("Say what a place shows")},{name:"preview_mutation",title:"Try an act without applying it",description:"Try a mutation without applying it: get back the diff it would produce and any invariant it would break. Do this when you are unsure, rather than applying and undoing.",inputSchema:{type:"object",properties:{mutation:{type:"string"},args:{type:"object"}},required:["mutation","args"],additionalProperties:!1},mutating:!1,annotations:M("Try an act without applying it")},{name:"undo_batch",title:"Undo a batch",description:"Undo one batch of operations. Fails, naming the blocking operation, when a later operation read what it wrote.",inputSchema:{type:"object",properties:{batch:{type:"string"},include:{type:"array",items:{type:"string"}}},required:["batch"],additionalProperties:!1},mutating:!0,annotations:{title:"Undo a batch",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1}},{name:"list_suggestions",title:"List what is suggested",description:"List the suggestions waiting for a person: changes the app's own actor proposed and did not make, each with its id, what it would do, who suggested it, what it was based on and how sure (0 to 1). Nothing changes until one is accepted (accept_suggestion) or declined (decline_suggestion); a declined one is never suggested again.",inputSchema:{type:"object",properties:{},additionalProperties:!1},mutating:!1,annotations:M("List what is suggested")},{name:"accept_suggestion",title:"Accept a suggestion",description:"Make a waiting suggestion's change, as this seat, carrying what it was based on. Returns the batch (undo_batch takes it back).",inputSchema:{type:"object",properties:{suggestion:{type:"string",description:"The suggestion's id, from list_suggestions."}},required:["suggestion"],additionalProperties:!1},mutating:!0,annotations:{title:"Accept a suggestion",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1}},{name:"decline_suggestion",title:"Decline a suggestion",description:"Decline a waiting suggestion: nothing changes, the decline is kept in the log, and the same change is never suggested or made by the app's own actor again.",inputSchema:{type:"object",properties:{suggestion:{type:"string",description:"The suggestion's id, from list_suggestions."}},required:["suggestion"],additionalProperties:!1},mutating:!0,annotations:{title:"Decline a suggestion",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1}}],Ye={name:"act_on_several",title:"Do one act to several records",description:`Run one act on several records at once, as one change with one undo. act is the act (its tool name or its declared name), records the records it runs on (ids or names; each goes in the act's subject), args what every call shares ("Set stage to Declined" is args { stage: "declined" }). Each record is judged on its own: one this seat may not change is named with why, and the rest still apply. Returns the batch (undo_batch takes it all back), the records changed, those already so, and those refused.`,inputSchema:{type:"object",properties:{act:{type:"string",description:"The act to run on each record."},records:{type:"array",items:{type:"string"},minItems:1,maxItems:200,description:"Ids or names of the records."},args:{type:"object",description:"Arguments every call shares, besides the record."}},required:["act","records"],additionalProperties:!1},mutating:!0,annotations:{title:"Do one act to several records",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1}},de={type:"object",description:"A lens, as draft_view returns one.",properties:{title:{type:"string"},lens:{type:"string"},on:{type:"string"},bindings:{type:"object"},options:{type:"object"}},required:["title","lens","on"]},ce={name:"draft_view",title:"Draw a view",description:'Draw a view of the data from words ("a board of tasks by status", "who covers what") as a lens the app could keep; or check a lens you wrote (lens); or change the one on screen (current, with ask: "only this month"). Returns the lens and its add-lens edit, or one sentence saying why not. Writes nothing.',inputSchema:{type:"object",properties:{ask:{type:"string",description:"What to see, in words."},lens:de,current:de},additionalProperties:!1},mutating:!1,annotations:M("Draw a view")},Xe={name:"keep_lens",title:"Keep a view as a lens",description:"Keep a lens draft_view drew as one of the app's places: checked again, then written as the add-lens edit. Returns the remove-lens edit that takes it back.",inputSchema:{...de,additionalProperties:!1},mutating:!0,annotations:{title:"Keep a view as a lens",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1}},Qe={name:"find_linked",title:"Find a record in another app",description:`A relation may go to a kind in another app (describe_app lists them under "Linked from other apps"). With relation and words, list the records there this seat may link \u2014 each with the value to link it by ("house:h1"), its name and its describe line. With of (a record id here), read the records that record links, as this seat may see them there. Linking one is the record's edit (edit-<kind>) with the relation set to the value. Another app this seat may not open answers denied, and nothing of it. Writes nothing; never changes the other app.`,inputSchema:{type:"object",properties:{relation:{type:"string",description:"The relation, by name (forHouse) or as <kind>.<relation> (scenario.forHouse)."},query:{type:"string",description:"Words to find by, in the other app's names; empty for the first few."},of:{type:"string",description:"A record here whose linked records to read, instead of finding."},limit:{type:"number",description:"Most records to return; at most 20."}},required:["relation"],additionalProperties:!1},mutating:!1,annotations:M("Find a record in another app")};function At(n,t){return n===void 0?[]:n==="keep"&&!t?[ce,Xe]:[ce]}var Ot="An argument that names a record takes its id or its name.",et=[...se.map(n=>n.name),Ye.name,ce.name,Xe.name,Qe.name,...ie.map(n=>n.name)],tt=64;function N(n){let{line:t,...e}=n;return e}function Ze(n){return{...n,...n.introduces?{introduces:n.introduces.map(N)}:{},...n.resolves?{resolves:n.resolves.map(N)}:{},...n.violationsAfter?{violationsAfter:n.violationsAfter.map(N)}:{}}}function Rt(n){let t=n.normalize("NFKD").replace(/\p{M}/gu,"").replace(/[^A-Za-z0-9_-]/g,"_");return t.length===0&&(t="act"),/^[A-Za-z_]/.test(t)||(t=`act_${t}`),t.slice(0,tt)}function Tt(n){let t=new Set(et),e=new Map;for(let r of n){let i=Rt(r),o=i;for(let a=2;t.has(o);a+=1)o=`${i.slice(0,tt-`_${a}`.length)}_${a}`;t.add(o),e.set(r,o)}return e}function _t(n,t){if(t.size===0)return n;let e=Object.fromEntries(Object.entries(n.properties??{}).filter(([i])=>!t.has(i))),r=(n.required??[]).filter(i=>!t.has(i));return{...n,properties:e,...n.required?{required:r}:{}}}function xt(n,t,e){let r=ee(n),i=U(n),o=r.nodeRefs.length>0?`${r.description}${/[.!?]$/.test(r.description)?"":"."} ${Ot}`:r.description;return{name:t,title:i,description:o,inputSchema:_t(r.inputSchema,e),mutating:!0,annotations:{title:i,readOnlyHint:!1,destructiveHint:n.destructive===!0||(n.severs?.length??0)>0,idempotentHint:n.idempotent===!0,openWorldHint:!1},act:n.name}}function le(n){if(n===null||typeof n!="object")return JSON.stringify(n)??"null";if(Array.isArray(n))return`[${n.map(le).join(",")}]`;let t=n;return`{${Object.keys(t).filter(e=>t[e]!==void 0).sort().map(e=>`${JSON.stringify(e)}:${le(t[e])}`).join(",")}}`}function Mt(n){return`sha256:${Te(le(n))}`}function Nt(n,t,e,r,i,o=!1,a=!1){let d=Tt(n.map(c=>c.name)),s=[...At(r,e),...o?[Qe]:[],...a?ie:[]];return{definitions:e?[...se.filter(c=>!c.mutating),...s]:[...se,Ye,...s,...n.filter(c=>t.has(c.name)).map(c=>xt(c,d.get(c.name),i(c)))],names:d}}function mn(n,t={}){let e=t.author??{kind:"agent"},r=n.allMutations(),i=new Set(n.permittedMutations(e).map(p=>p.name)),{definitions:o,names:a}=Nt(r,i,t.readOnly===!0,t.drafts?t.drafts.keep?"keep":"draw":void 0,p=>Y(n.schema,n.policy,e,p),St(n.schema),t.subscriptions!==void 0),d=Mt(o),s={app:t.app?.brand?.locale,appTimeZone:t.app?.brand?.timeZone},g=p=>fe(s,p),c=p=>{if(!et.includes(p)){for(let[f,k]of a)if(k===p)return f;return a.has(p)?p:_e(p,a.keys())}},w=p=>{let f=xe(p,a.keys());return f?` Did you mean "${f}"?`:""},h=p=>{let f=o.find(S=>S.name===p)??o.find(S=>S.act===p);if(f)return f;let k=c(p);return k===void 0?void 0:o.find(S=>S.act===k)},b=(p,f)=>{let k=r.find(l=>l.name===p);if(!k)return{args:f,resolved:[]};let S={...f},u=[];for(let l of B(k.input)){let m=S[l.name];if(typeof m!="string"||m.trim()==="")continue;let y=n.resolveRef(l,m,e);if(!y.ok){let A=y.reason==="none"?` Nothing was changed. Use search_graph to look it up, then pass its id as ${l.name}.`:" Nothing was changed.";return{ok:!1,error:`${y.message}${A}`,argument:l.name,candidates:y.candidates}}y.by!=="id"&&(S[l.name]=y.id,u.push({argument:l.name,given:m,id:y.id,label:y.label}))}return{args:S,resolved:u}},T=async(p,f)=>{try{await gt();let k=h(p);if(!k){let u=c(p);if(u){let l=n.permits({name:u,args:f},e);if(!l.ok)return{ok:!1,error:l.refusal.message,reason:"forbidden"}}return{ok:!1,error:`Unknown tool "${p}".${w(p)} Available: ${o.map(l=>l.name).join(", ")}`}}if(k.mutating&&t.readOnly)return{ok:!1,error:`"${p}" changes the graph, and this seat is read-only.`,reason:"forbidden"};if(k.act!==void 0){let u=b(k.act,f);if("ok"in u)return u;let l=k.act,m=g(()=>I(n,e,n.apply({name:l,args:u.args},{...t.author?{author:t.author}:{},...oe(t.via)})));return{ok:!0,data:{batch:m.batch,intent:m.intent,introduces:m.introduces.map(N),resolves:m.resolves.map(N),...u.resolved.length>0?{resolved:u.resolved}:{}},diff:m.diff}}let S=n.seenBy(e);switch(k.name){case"search_graph":{let u=typeof t.places=="function"?t.places():t.places,l=typeof f.subject=="string"?f.subject:void 0,m=Ee(S,String(f.query??""),{principal:e,rank:t.near,archived:ke(f.archived),limit:typeof f.limit=="number"&&f.limit>0?Math.min(f.limit,20):20,...u?{places:u}:{},...l?{subject:l,from:[l]}:{}}),y=m.later?await m.later:m;return{ok:!0,data:(await F()).searchRead(y,Ue(y,V(S,e))),reads:y.hits.flatMap(A=>A.about==="node"?[A.id]:[])}}case"get_graph":return{ok:!0,...(await F()).graphRead(S,V(S,e),f)};case"get_node":{let u=String(f.id??""),l=u,m;if(!S.graph.getNode(u)){let A=u.trim()===""?void 0:n.resolveRef({name:"id",kinds:["*"]},u,e);if(A?.ok)l=A.id,m={argument:"id",given:u,id:l,label:A.label};else return A?.reason==="ambiguous"?{ok:!1,error:A.message,argument:"id",candidates:A.candidates}:{ok:!1,error:`No node "${u}".`}}let y=(await F()).nodeRead(S,V(S,e),l,f);return{ok:!0,data:m?{...y.data,resolved:[m]}:y.data,reads:y.reads}}case"describe_place":{let u=t.app??{name:"",schema:n.schema},l=typeof f.width=="number"&&Number.isFinite(f.width)&&f.width>0?f.width:1440,{describePlace:m}=await ht(),y=m(n,e,String(f.place??""),{app:u,width:l});if(!y.ok)return{ok:!1,error:`${y.error} The places are: ${y.places.join(", ")}.`};let A=new Set,$=H=>{for(let D of H)for(let x of D.groups??[])for(let P of x.items)A.add(P.id),$(P.parts)};return $(y.description.parts),{ok:!0,data:y.description,reads:[...A]}}case"find_linked":return vt(S,e,f,t.linked);case"draft_view":case"keep_lens":{let u=t.app??{name:"",schema:n.schema};return(await wt()).runDraftTool(k.name,f,{app:u,principal:e,...t.drafts?{drafts:t.drafts}:{}})}case"get_violations":{let u=S.violations(f.context);return{ok:!0,...(await F()).violationsRead(u,f)}}case"get_affordances":{let u=f.selection??[];return{ok:!0,data:Je(S,u,{...typeof t.derive=="function"?t.derive():t.derive,...t.author?{principal:t.author}:{},...f.context?{context:f.context}:{}}),reads:u.filter(m=>S.graph.has(m))}}case"preview_mutation":{let u=String(f.mutation),l=c(u)??u,m=b(l,f.args??{});if("ok"in m)return m;let y=n.missingFor({name:l,args:m.args},e);if(y)return{ok:!1,error:y.message,reason:"missing"};let A=I(n,e,n.preview({name:l,args:m.args},void 0,{author:e})),$=Ze(A);return{ok:!0,data:m.resolved.length>0?{...$,resolved:m.resolved}:$}}case"act_on_several":{let u=String(f.act??""),l=c(u)??u,m=r.find(R=>R.name===l);if(!m||!i.has(l)){let R=m?n.permits({name:l,args:{}},e):void 0;return R&&!R.ok?{ok:!1,error:R.refusal.message,reason:"forbidden"}:{ok:!1,error:`There is no act "${u}" this seat may run.${w(u)} Nothing was changed.`,reason:"invalid"}}let y=m.subject;if(!y)return{ok:!1,error:`"${U(m)}" does not act on a record, so it cannot be run on several. Nothing was changed.`,reason:"invalid"};let A=Array.isArray(f.records)?f.records.filter(R=>typeof R=="string"&&R.trim()!==""):[];if(A.length===0)return{ok:!1,error:"Name at least one record. Nothing was changed.",reason:"invalid"};let $=[],H=[];for(let R of A.slice(0,200)){let J=n.resolveRef({name:y.arg,kinds:y.kinds},R,e);if(!J.ok)return{ok:!1,error:`${J.message} Nothing was changed.`,argument:"records",candidates:J.candidates};$.push(J.id),J.by!=="id"&&H.push({argument:"records",given:R,id:J.id,label:J.label})}let D=b(l,{...f.args??{}});if("ok"in D)return D;let x=(await bt()).actOnSeveral(n,{mutation:l,subject:y.arg,args:D.args},$,{author:e,...oe(t.via)}),P=x.result?I(n,e,x.result):void 0;return{ok:!0,data:{...x.batch?{batch:x.batch,intent:x.intent}:{},applied:x.applied,unchanged:x.unchanged,refused:x.refused.map(R=>({record:R.id,label:R.label,error:R.message,reason:R.reason})),...x.allOrNothing?{keptNone:!0}:{},...P?{introduces:P.introduces.map(N),resolves:P.resolves.map(N)}:{},...H.length>0||D.resolved.length>0?{resolved:[...H,...D.resolved]}:{}},...P?{diff:P.diff}:{}}}case"subscribe":case"unsubscribe":case"list_subscriptions":{let u=await(await kt()).runSubscriptionTool(k.name,f,{store:n,principal:t.subscriber??e,app:t.app?.name??"app",subscriptions:t.subscriptions});return u.ok?{ok:!0,data:u.data}:{ok:!1,error:u.error}}case"list_suggestions":{let u=$e(n,e).map(l=>{let m=W(l.author,{graph:S.graph,schema:n.schema});return{id:l.id,intent:l.intent,by:m,at:l.at,about:l.about,...l.lineage?{basis:{untrusted:!0,authoredBy:m,text:l.lineage.basis},...l.lineage.confidence!==void 0?{confidence:l.lineage.confidence}:{}}:{}}});return{ok:!0,data:{suggestions:u},reads:[...new Set(u.flatMap(l=>l.about))]}}case"accept_suggestion":case"decline_suggestion":{let u=String(f.suggestion??""),l={author:e,...oe(t.via)},m=k.name==="accept_suggestion"?Pe(n,u,l):De(n,u,l),y=I(n,e,m);return{ok:!0,data:{batch:y.batch,intent:y.intent,introduces:y.introduces.map(N),resolves:y.resolves.map(N)},diff:y.diff}}case"undo_batch":{let u=String(f.batch),l=f.include??[],m=S.canUndo([u,...l]);if(!m.ok)return{ok:!1,error:m.message};let y=I(n,e,n.undo([u,...l],{...t.author?{author:t.author}:{}}));return{ok:!0,data:Ze(y),diff:y.diff}}default:return{ok:!1,error:`Unknown tool "${p}".`}}}catch(k){let{reason:S,wouldNeed:u}=Se(k);return{ok:!1,error:k instanceof Error?k.message:String(k),reason:S,...u?{wouldNeed:u}:{}}}},O=new Set,v=p=>{for(let f of O)f(p)};return{definitions:o,hash:d,...t.author?{author:t.author}:{},onDiff(p){return n.subscribe(p)},onCall(p){return O.add(p),()=>O.delete(p)},async call(p,f){let k=h(p)?.mutating??!1,S={name:p,args:f,mutating:k,at:new Date().toISOString()};v({...S,phase:"running"});let u=m=>(v(m.ok?{...S,phase:"ok",...!k&&m.reads?{reads:m.reads}:{}}:{...S,phase:"failed",error:m.error}),m),l=await T(p,f);return u(l.ok&&!k?{...l,data:(await F()).withinReadChars(p,l.data)}:l)}}}function oe(n){let t=typeof n=="function"?n():n;return t?{via:t}:{}}export{le as a,mn as b};
@@ -1 +0,0 @@
1
- import{a as f}from"./chunk.SUPWMV2F.js";import{da as d}from"./chunk.4TJOS4C7.js";function v(n){let o=n.indexOf("{"),a=n.indexOf("["),t=a!==-1&&(o===-1||a<o)?a:o;if(t===-1)return;let e=n[t],r=e==="["?"]":"}",i=0,u=!1,l=!1;for(let s=t;s<n.length;s++){let c=n[s];if(u){l?l=!1:c==="\\"?l=!0:c==='"'&&(u=!1);continue}if(c==='"')u=!0;else if(c===e)i+=1;else if(c===r&&(i-=1,i===0))try{return JSON.parse(n.slice(t,s+1))}catch{return}}}function P(n,o){let a;try{a=n.mutation(o.mutation)}catch{return o}let t={...o.args},e=!1;for(let r of f(a.input)){if(r.control!=="node")continue;let i=t[r.name];if(typeof i!="string"||i.length===0||n.graph.getNode(i))continue;let u=i.trim().toLowerCase(),l=[...n.graph.allNodes()].filter(s=>(r.kinds.includes("*")||r.kinds.includes(s.kind))&&d(n.schema.tryDefinition(s.kind),s).trim().toLowerCase()===u);l.length===1&&(t[r.name]=l[0].id,e=!0)}return e?{...o,args:t}:o}function x(n,o,a){let t=a===void 0?null:new Set(a),e=[];for(let r of o){if(typeof r.mutation!="string")continue;let i=!0;try{n.mutation(r.mutation)}catch{i=!1}i?t&&!t.has(r.mutation)&&e.push({proposal:r,why:"not-allowed"}):e.push({proposal:r,why:"unknown"})}return e}function b(n,o,a){let t=a===void 0?null:new Set(a);return o.filter(e=>{if(typeof e.mutation!="string"||t&&!t.has(e.mutation))return!1;try{n.mutation(e.mutation)}catch{return!1}return e.args!==null&&typeof e.args=="object"})}export{v as a,P as b,x as c,b as d};
@@ -1 +0,0 @@
1
- import{b as rn,c as an}from"./chunk.UT6642FC.js";import{j as N}from"./chunk.KVJFY7N5.js";import{c as J}from"./chunk.DPHTUTOS.js";import{Ib as sn,Jb as E,Kc as on,Xb as V,Ya as H,_b as Q,da as F,ea as K,fa as q,ga as nn,ha as en,ka as tn,la as z,ma as B}from"./chunk.4TJOS4C7.js";function dn(){return{name:"insight",derive({store:n,nodes:d,kindSelection:t}){let f=[],y=l=>F(n.schema.tryDefinition(l.kind),l);for(let l of d){if([...n.schema.edgeKinds].reduce((c,S)=>c+n.graph.out(l.id,S).length+n.graph.in(l.id,S).length,0)===0){f.push({id:`insight:island:${l.id}`,text:`${y(l)} is connected to nothing yet`,nodeIds:[l.id]});continue}for(let c of n.schema.edgeKinds){let S=n.graph.in(l.id,c).length;if(S<3)continue;let s=[...n.graph.allEdges()].filter(a=>a.kind===c),e=s.length;e>=4&&S/e>.6&&f.push({id:`insight:load:${l.id}:${c}`,text:`${y(l)} ${mn(n,s,c,S)}`,nodeIds:[l.id]})}}for(let l of t){if(n.graph.nodesOfKind(l).length>0)continue;let A=n.schema.definitions.filter(c=>c.kind!==l).filter(c=>Object.values(c.edges).some(S=>S.to!=="*"&&S.to.includes(l))).map(c=>c.plural??`${c.kind}s`);A.length>0&&f.push({id:`insight:gap:${l}`,text:`Nothing here yet, though ${A.join(" and ")} expect to connect to these`,nodeIds:[]})}return{observations:f}}}}function mn(n,d,t,f){let y=new Set(d.map(s=>n.graph.getNode(s.from)?.kind).filter(s=>s!==void 0)),l=y.size===1?[...y][0]:void 0,A=d.length,c=J(n.schema,l??[...y][0]??"",t,"in"),S=s=>l?nn(n.schema,l,s):String(s);return f===A?`${c}: all ${S(f)}`:`${c}: ${f} of the ${S(A)}`}function cn(n){let d=new Map;if(n.length===0)return d;let t=n.slice(-512),f=new Set;for(let l of t)l.undoes&&f.add(l.undoes);let y=n[n.length-1].seq;for(let l of t){if(!l.mutation||f.has(l.id))continue;let A=Math.pow(.5,(y-l.seq)/64);d.set(l.mutation.name,(d.get(l.mutation.name)??0)+A)}return d}function un(n){return 8*(n/(n+1))}var kn=100;function fn(){return{name:"invariant",derive({store:n,selection:d,nodes:t,violations:f}){let y=s=>F(n.schema.tryDefinition(s.kind),s),l=new Set(d),A=f.filter(s=>s.nodeIds.some(e=>l.has(e))||s.subjectId!==void 0&&l.has(s.subjectId)),c=[],S=[];A.forEach((s,e)=>{S.push({id:`violation:${s.invariant}:${e}`,text:s.message,nodeIds:s.nodeIds}),s.repairs.forEach((a,h)=>{c.push({id:`invariant:${s.invariant}:${e}:${h}`,label:a.label,provider:"invariant",mutation:a.mutation,args:a.args??{},open:(a.missing??[]).map(m=>{let o=n.allMutations().find(g=>g.name===a.mutation);if(!o)return{name:m};let r=E(o.input).find(g=>g.name===m),k=r?r.kinds.includes("*")?n.graph.allNodes().map(g=>g.id):r.kinds.flatMap(g=>n.graph.nodesOfKind(g).map($=>$.id)):void 0;return{name:m,shape:N(o.input,m),...r?{kinds:r.kinds}:{},...k?{candidates:k}:{}}}),score:kn-h-(a.missing?.length??0),why:s.message,nodeIds:s.nodeIds,...s.subjectId===void 0?{}:{subjectId:s.subjectId}})})});for(let s of t){let e=n.allInvariants().filter(a=>{if(a.scope==="graph")return!1;let h=a.scope;return h.kind!==s.kind?!1:h.match?h.match(s):!0});e.length!==0&&(A.some(a=>a.subjectId===s.id||a.nodeIds.includes(s.id))||S.push({id:`holds:${s.id}`,text:`${y(s)} holds \u2014 nothing currently breaks ${e.length===1?"it":`any of its ${e.length} rules`}`,nodeIds:[s.id]}))}return{affordances:c,observations:S}}}}var U=40;function ln(){return{name:"schema",derive({store:n,selection:d,nodes:t,kindSelection:f,edgeSelection:y,principal:l}){let A=(e,a)=>l!==void 0&&!n.permits({name:e,args:a},l).ok,c=[];if(t.length===0&&y.length>0){for(let e of y){let a=n.graph.getNode(e.from),h=n.graph.getNode(e.to);if(!a||!h)continue;let m=an(n,e);m?.provisional&&c.push({id:`schema:edge:${V}:${e.kind}:${e.from}:${e.to}`,label:"Keep this link",provider:"schema",mutation:V,args:{kind:e.kind,from:e.from,to:e.to},open:[],score:64,why:rn(m),nodeIds:[e.from,e.to]});for(let o of n.allMutations()){let r=(o.connects??[]).includes(e.kind),k=(o.severs??[]).includes(e.kind);if(!r&&!k||o.derived?.relation!==void 0&&o.derived.kind!==a.kind)continue;let g={},$=[],j=E(o.input);for(let p of j){let w=p.kinds.includes("*")||p.kinds.includes(a.kind),P=p.kinds.includes("*")||p.kinds.includes(h.kind),v=w&&!j.some(I=>I!==p&&(I.kinds.includes(a.kind)||I.kinds.includes("*")));w&&!P?g[p.name]=e.from:P&&!w?g[p.name]=e.to:w&&P&&v?g[p.name]=e.from:$.push({name:p.name,kinds:p.kinds,candidates:[e.from,e.to],shape:N(o.input,p.name)})}for(let p of G(o.input,""))p in g||$.some(w=>w.name===p)||$.push({name:p,shape:N(o.input,p)});$.every(p=>p.optional===!0?!0:p.kinds!==void 0?(p.candidates?.length??0)>0:(p.candidates?.length??0)>0||p.shape!==void 0&&p.shape.type!=="unknown")&&(r&&!k&&$.length===0||c.push({id:`schema:edge:${o.name}:${e.kind}:${e.from}:${e.to}`,label:K(o),provider:"schema",mutation:o.name,args:g,open:$,...o.destructive?{destructive:!0}:{},score:(k?62:58)-$.length,why:`this line is "${J(n.schema,n.graph.getNode(e.from)?.kind??"",e.kind,"out")}"`,nodeIds:[e.from,e.to]}))}}return{affordances:c}}if(t.length===0&&f.length>0){let e=new Set(f),a=[];for(let h of n.allMutations()){if(!(h.creates??[]).some(r=>e.has(r)))continue;let m=[];for(let r of E(h.input)){let k=r.kinds.includes("*")?n.graph.allNodes().map(g=>g.id):r.kinds.flatMap(g=>n.graph.nodesOfKind(g).map($=>$.id));m.push({name:r.name,kinds:r.kinds,candidates:k,shape:N(h.input,r.name),...r.optional?{optional:!0}:{}})}for(let r of G(h.input,""))m.some(k=>k.name===r)||m.push({name:r,shape:N(h.input,r)});if(!m.every(r=>r.optional===!0?!0:r.kinds!==void 0?(r.candidates?.length??0)>0:(r.candidates?.length??0)>0||r.shape!==void 0&&r.shape.type!=="unknown")&&!A(h.name,{})){let r=m.filter(k=>k.optional!==!0&&k.kinds!==void 0&&!k.kinds.includes("*")&&(k.candidates?.length??0)===0);if(r.length>0){let k=[...new Set(r.flatMap(g=>g.kinds??[]))].map(g=>z(B(n.schema.tryDefinition(g),g)));a.push({id:`schema:waits:${h.name}`,text:`"${h.title??h.name}" cannot begin until there is ${k.length===1?k[0]:`${k.slice(0,-1).join(", ")} and ${k[k.length-1]}`}.`,nodeIds:[]})}continue}c.push({id:`schema:add:${h.name}`,label:K(h),provider:"schema",mutation:h.name,args:{},open:m,score:U-m.length,why:`this makes ${(h.creates??[]).filter(r=>e.has(r)).map(r=>z(B(n.schema.tryDefinition(r),r))).join(", ")}`,nodeIds:[]})}return{affordances:c,observations:a}}if(t.length===0)return{};let S=new Set(t.map(e=>e.kind)),s=(e,a,h)=>{let m=[];for(let o of n.graph.allEdges()){if(!a.includes(o.kind))continue;let r=o.from===e?o.to:o.to===e?o.from:null;if(!r)continue;let k=n.graph.getNode(r);k&&(!h.includes("*")&&!h.includes(k.kind)||m.includes(r)||m.push(r))}return m};for(let e of n.allMutations()){let a=e.subject;if(!a||!(a.kinds==="*"?!0:[...S].every(u=>a.kinds.includes(u))))continue;let m=e.derived?.act;if((m==="archive"||m==="merge")&&t.some(u=>H(u))||m==="unarchive"&&!t.some(u=>H(u))||m==="leave-alone"&&t.every(u=>Q(n,u.id))||m==="allow-tidying"&&!t.some(u=>Q(n,u.id)))continue;let o=t.length===1?t[0].id:null,r=e.severs??[],k=e.connects??[];if(o&&r.length>0&&k.length===0&&s(o,r,["*"]).length===0)continue;let g=[];for(let u of E(e.input)){if(u.name===a.arg)continue;let p=u.kinds.includes("*")?n.graph.allNodes().map(w=>w.id):u.kinds.flatMap(w=>n.graph.nodesOfKind(w).map(P=>P.id));if(o&&k.length>0){let w=new Set(s(o,k,u.kinds));p=p.filter(P=>!w.has(P))}else o&&r.length>0&&(p=s(o,r,u.kinds));g.push({name:u.name,kinds:u.kinds,candidates:p.filter(w=>!d.includes(w)),shape:N(e.input,u.name),...u.optional?{optional:!0}:{}})}for(let u of G(e.input,a.arg))g.some(p=>p.name===u)||g.push({name:u,shape:N(e.input,u)});if(g.length===0&&o){let u=yn(e.input,a.arg);if(u.length>0&&!vn(n,e.name,{[a.arg]:o}))for(let p of u){let w=E(e.input).find(P=>P.name===p);g.push({name:p,optional:!0,...w?{kinds:w.kinds}:{},shape:N(e.input,p)})}}if(!g.every(u=>u.optional===!0?!0:u.kinds!==void 0?(u.candidates?.length??0)>0:(u.candidates?.length??0)>0||u.shape!==void 0&&u.shape.type!=="unknown")&&!A(e.name,o?{[a.arg]:o}:{}))continue;let j=t.map(u=>({[a.arg]:u.id}));g.length===0&&!j.some(u=>n.wouldChange({name:e.name,args:u}))||c.push({id:`schema:${e.name}`,label:t.length>1?`${K(e)} (${t.length})`:K(e),provider:"schema",mutation:e.name,args:j[0]??{},open:g,...e.destructive?{destructive:!0}:{},...e.derived?.act==="archive"||e.derived?.act==="merge"||e.derived?.act==="leave-alone"||e.derived?.act==="allow-tidying"?{setsAside:!0}:{},...r.length>0||k.length>0?{ties:!0}:{},...t.length>1?{batch:j}:{},score:U-g.length,why:t.length>1?`all ${t.length} selected nodes are ${[...S].map(u=>en(n.schema,u).toLowerCase()).join(" or ")}`:`this is ${z(B(n.schema.tryDefinition(t[0].kind),t[0].kind))}`,nodeIds:t.map(u=>u.id)})}if(t.length===1){let e=t[0];for(let a of n.allMutations()){let h=a.subject,m=a.severs??[],o=a.connects??[];if(!h||m.length===0&&o.length===0)continue;let r=h.kinds==="*"?"*":h.kinds;if(r==="*"||r.includes(e.kind))continue;let k=E(a.input),g=k.find(v=>v.name!==h.arg&&(v.kinds.includes("*")||v.kinds.includes(e.kind)));if(!g)continue;let $=r,j=$.includes("*")?n.graph.allNodes().map(v=>v.id):$.flatMap(v=>n.graph.nodesOfKind(v).map(I=>I.id)),u=new Set(s(e.id,o.length>0?o:m,$)),p=o.length>0?j.filter(v=>!u.has(v)):j.filter(v=>u.has(v));if(p.length===0)continue;let w=[{name:h.arg,kinds:$,candidates:p,shape:N(a.input,h.arg)}];for(let v of k){if(v.name===g.name||v.name===h.arg)continue;let I=v.kinds.includes("*")?n.graph.allNodes().map(D=>D.id):v.kinds.flatMap(D=>n.graph.nodesOfKind(D).map(O=>O.id));w.push({name:v.name,kinds:v.kinds,candidates:I,shape:N(a.input,v.name),...v.optional?{optional:!0}:{}})}for(let v of G(a.input,g.name))v===h.arg||w.some(I=>I.name===v)||w.push({name:v,shape:N(a.input,v)});w.every(v=>v.optional===!0?!0:v.kinds!==void 0?(v.candidates?.length??0)>0:(v.candidates?.length??0)>0||v.shape!==void 0&&v.shape.type!=="unknown")&&c.push({id:`schema:tie:${a.name}:${e.id}`,label:a.fromTheOtherEnd??K(a),provider:"schema",mutation:a.name,args:{[g.name]:e.id},open:w,ties:!0,...a.destructive?{destructive:!0}:{},score:U-w.length+2,why:`${m.length>0?"this one is on":"this one could join"} ${w[0].candidates.length===1?"it":"one of these"}`,nodeIds:[e.id]})}}return{affordances:c}}}}function yn(n,d){let t=n.shape;return t?Object.entries(t).filter(([f,y])=>f!==d&&y.safeParse(void 0).success).map(([f])=>f):[]}function vn(n,d,t){try{return n.preview({name:d,args:t}),!0}catch{return!1}}function G(n,d){let t=n.shape;return t?Object.entries(t).filter(([f,y])=>f!==d&&!y.safeParse(void 0).success).map(([f])=>f):[]}var bn=70,Sn=80,wn=new Set(["id","kind"]);function hn(){return{name:"structure",derive({store:n,nodes:d}){let t=c=>F(n.schema.tryDefinition(c.kind),c);if(d.length<2)return{};let f=[],y=[],l=d.map(c=>c.id);for(let c of n.schema.edgeKinds){let S=An(d.map(e=>new Set([...n.graph.out(e.id,c).map(a=>a.id),...n.graph.in(e.id,c).map(a=>a.id)])));for(let e of S){let a=n.graph.getNode(e);a&&f.push({id:`shared:${c}:${e}`,text:`all ${d.length} share "${t(a)}" (${q(c).toLowerCase()})`,nodeIds:[...l,e]})}let s=new Map;for(let e of d)for(let a of[...n.graph.out(e.id,c),...n.graph.in(e.id,c)])s.set(a.id,(s.get(a.id)??0)+1);for(let[e,a]of s){if(a!==d.length-1||d.length<3||l.includes(e))continue;let h=n.graph.getNode(e);if(!h)continue;let m=d.find(o=>![...n.graph.out(o.id,c),...n.graph.in(o.id,c)].some(r=>r.id===e));if(m&&(f.push({id:`near-shared:${c}:${e}`,text:`all but "${t(m)}" share "${t(h)}" (${q(c).toLowerCase()})`,nodeIds:[...l,e]}),!(!n.schema.edgeAllowed(c,m.kind,h.kind)&&!n.schema.edgeAllowed(c,h.kind,m.kind))))for(let o of n.allMutations()){let r=o.subject;if(!r||r.kinds!=="*"&&!r.kinds.includes(m.kind)||(o.connects!==void 0||o.severs!==void 0)&&!(o.connects??[]).includes(c))continue;let g=$n(o.input,h.kind);g&&y.push({id:`structure:join:${o.name}:${m.id}:${e}`,label:`${K(o)}: bring "${t(m)}" in line with the others`,provider:"structure",mutation:o.name,args:{[r.arg]:m.id,[g]:e},open:[],score:bn,why:`every other selected node is connected to "${t(h)}"`,nodeIds:[m.id,e]})}}}let A=new Map;for(let c of d)A.set(c.kind,[...A.get(c.kind)??[],c]);for(let[c,S]of A){if(S.length<2)continue;let s=S,e=S.map(o=>o.id),a=A.size>1?`${c}:`:"",h=new Set;for(let o of s)for(let r of Object.keys(o))wn.has(r)||h.add(r);let m=o=>n.schema.definitions.find(r=>r.kind===o);for(let o of[...h].sort()){let r=m(s[0].kind),k=tn(r,o).toLowerCase(),g=r?.display?.format?.[o],$=O=>{if(!g)return O;try{return String(g(JSON.parse(O)))}catch{return O}},j=s.map(O=>O[o]),u=new Map;if(j.forEach((O,R)=>{let L=JSON.stringify(O??null),x=u.get(L);x?x.push(s[R]):u.set(L,[s[R]])}),u.size===1){let O=[...u.keys()][0];if(O==="null")continue;f.push({id:`agree:${a}${o}`,text:`all ${s.length} share the ${k} ${$(O)}`,nodeIds:e});continue}if(s.length<3||u.size!==2)continue;let p=[...u.entries()].sort((O,R)=>R[1].length-O[1].length),[w,P]=p[0],[,v]=p[1];if(v.length!==1||w==="null")continue;let I=v[0],D=JSON.parse(w);f.push({id:`odd-one-out:${a}${o}`,text:`${P.length} share the ${k} ${$(w)}; "${t(I)}" does not`,nodeIds:e});for(let O of n.allMutations()){let R=O.subject;if(!R||R.kinds!=="*"&&!R.kinds.includes(I.kind))continue;let L=gn(O.input);if(!L||!(o in L))continue;let x={[R.arg]:I.id,[o]:D},T=!0;for(let[C,Z]of Object.entries(L)){if(C in x||Z.safeParse(void 0).success)continue;let i=I[C];if(i===void 0){T=!1;break}x[C]=i}!T||!O.input.safeParse(x).success||y.push({id:`structure:align:${O.name}:${o}:${I.id}`,label:`Align the ${k} of "${t(I)}" with the other ${P.length}`,provider:"structure",mutation:O.name,args:x,open:[],score:Sn,why:`${P.length} of ${s.length} share the ${k} ${$(w)}`,nodeIds:e})}}}return{affordances:y,observations:f}}}}function An(n){if(n.length===0)return[];let[d,...t]=n;return[...d].filter(f=>t.every(y=>y.has(f))).sort()}function gn(n){return n.shape??null}function $n(n,d){let t=gn(n);if(!t)return null;for(let[f]of Object.entries(t)){let y=sn(t[f]);if(y&&(y.includes("*")||y.includes(d)))return f}return null}function On(){return[fn(),hn(),ln(),dn()]}function Vn(n,d,t={}){let f=pn(),y=t.providers??On(),l=d.map(i=>n.graph.getNode(i)).filter(i=>i!==void 0),A={store:n,selection:d,nodes:l,kindSelection:t.kindSelection??[],edgeSelection:t.edgeSelection??[],violations:n.violations(t.context),context:t.context??{},principal:t.principal??{kind:"human"}},c=[],S=[];for(let i of y){let b=i.derive(A);c.push(...b.affordances??[]),S.push(...b.observations??[])}let s=new Set(n.allMutations().filter(i=>i.pinned).map(i=>i.name)),e=new Set(t.pins?.pinned??[]),a=new Set(t.pins?.unpinned??[]),h=i=>e.has(i.mutation)?"user":s.has(i.mutation)&&!a.has(i.mutation)?"declared":void 0,m=i=>{let b=h(i);return b?{...i,pinned:b}:i},o=new Map;for(let[i,b]of cn(n.log.all()))o.set(i,un(b));let r=i=>i.pinned==="user"?0:i.pinned==="declared"?1:2,k=i=>i.score+(o.get(i.mutation)??0),g=new Map(n.allMutations().map(i=>[i.name,i])),$=new Map,j=i=>{let b=g.get(i.mutation);if(!b)return[];let M=$.get(i.mutation);M||(M=E(b.input).map(W=>W.name),$.set(i.mutation,M));let _=[];for(let W of i.batch??[i.args])for(let X of M){let Y=W[X]??i.args[X];typeof Y=="string"&&_.push(Y)}return _},u=t.focus,p=4,w=i=>i.open.length>0?1:0,P=i=>{if(u===void 0)return p;let b=j(i);return b.length>0?b.includes(u)?v(i,0):p:i.nodeIds.includes(u)||i.subjectId===u?v(i,1):p},v=(i,b)=>i.provider==="invariant"?b:2+w(i),I=i=>i.setsAside?1:0,D=In(c).map(m),O=new Map(D.map((i,b)=>[i,b])),R=D.sort((i,b)=>{let M=Number(i.destructive??!1)-Number(b.destructive??!1);if(M!==0)return M;let _=I(i)-I(b);if(_!==0)return _;let W=P(i)-P(b);return W!==0?W:P(i)<2?O.get(i)-O.get(b):+(b.provider==="invariant")-+(i.provider==="invariant")||r(i)-r(b)||k(b)-k(i)||i.id.localeCompare(b.id)}),L=t.principal??{kind:"human"},x=[],T=[];for(let i of R){let b=n.permits({name:i.mutation,args:{...i.args,...i.batch?.[0]??{}}},L);if(b.ok)x.push(i);else{let M=jn(n,i,L);if(M==="done")continue;M?x.push(M):T.push({...i,refusal:b.refusal})}}let C=x.map((i,b)=>({...i,rank:b})),Z=T.map((i,b)=>({...i,rank:x.length+b}));return{affordances:t.limit===void 0?C:C.slice(0,t.limit),withheld:Z,observations:Pn(S),ms:pn()-f}}function In(n){let d=new Map;for(let t of n){let f=[t.mutation,JSON.stringify(t.args),JSON.stringify(t.batch??null)].join("|"),y=d.get(f);(!y||t.score>y.score)&&d.set(f,t)}return[...d.values()]}function Pn(n){let d=new Map;for(let t of n)d.set(t.text,t);return[...d.values()]}function pn(){return typeof performance<"u"?performance.now():Date.now()}function Qn(n,d,t={},f={}){let y=(d.batch??[d.args]).map(A=>({name:d.mutation,args:{...d.args,...A,...t}})),l=n.allMutations().find(A=>A.name===d.mutation);return n.applyAll(y,{...l?.describe?{}:{intent:d.label},...f.author?{author:f.author}:{}})}function Un(n,d,t={},f={}){try{return n.preview({name:d.mutation,args:{...d.args,...t}})}catch(y){throw f.pressed&&on(y,f.pressed.author?.id),y}}function jn(n,d,t){let f=n.allMutations().find(s=>s.name===d.mutation)?.subject,y=f!==void 0&&d.args[f.arg]===void 0,l=y?d.open.find(s=>s.name===f.arg):d.open.find(s=>s.name!==f?.arg&&s.candidates);if(!l?.candidates)return;let A=s=>n.permits({name:d.mutation,args:{...d.args,...d.batch?.[0]??{},[l.name]:s}},t).ok,c=l.candidates.filter(A),S=t.id===void 0?void 0:n.graph.getNode(t.id);if(c.length===0){let s=y?f.kinds:"*";return S!==void 0&&(s==="*"||s.includes(S.kind))&&A(S.id)?"done":void 0}return c.length===1&&c[0]===t.id?{...d,args:{...d.args,[l.name]:t.id},open:d.open.filter(s=>s!==l)}:{...d,open:d.open.map(s=>s===l?{...s,candidates:c}:s)}}export{Vn as a,Qn as b,Un as c};
@@ -1,3 +0,0 @@
1
- var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{a as Ue}from"./chunk.O45VO36H.js";import{a as Be}from"./chunk.NX7IIZLO.js";import{a as We}from"./chunk.LPD74WBI.js";import{a as X}from"./chunk.TI4OSTQV.js";import{a as fe}from"./chunk.NFDLCUCC.js";import{e as ce}from"./chunk.2UIUMG23.js";import{E as we,G as ln,J as He,P as Le,R as Fe,_ as Je}from"./chunk.KA44WNB4.js";import{Jb as Ne,Ob as le,Qb as je,da as ae,fa as U,ha as q,ka as Ee,ma as de,rb as Me,xc as De}from"./chunk.4TJOS4C7.js";import{b as Se}from"./chunk.AJZBJBMO.js";var cn=e=>/^(?:aggregate|kind):([^,]+)$/.exec(e)?.[1];function Ge(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(s=>s===void 0?void 0:cn(s)).find(s=>s!==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 V=e=>e.on==="record"||e.on==="field"?[e.id]:e.on==="selection"?e.ids:e.on==="act"&&e.id!==void 0?[e.id]:[],ue=(e,n)=>e.tryDefinition(n)?.fields?.shape??{},K=(e,n)=>e.tryDefinition(n)?.edges??{},pe=(e,n)=>new Set(e.tryDefinition(n)?.display?.hide??[]),H=(e,n)=>ae(e.tryDefinition(n.kind),n),xe=(e,n,t)=>Ee(e.tryDefinition(n),t)||U(t),Oe=e=>typeof e=="boolean"?e?"yes":"no":String(e);function ge(e,n){let t=e.kindsKeptFrom(n);return new Set(e.schema.kinds.filter(i=>!t.has(i)))}function Ce(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 ye(e,n,t){let i=e,{principal:o}=t,s=t.each??8,c=X(i)?.store??i,d=c.seenBy(o),l=c.schema,p=ge(c,o),a=r=>{let y=d.graph.getNode(r);return y&&p.has(y.kind)?y:void 0},f=c.allMutations(),h=new Map(f.map(r=>[r.name,r])),b=[],P=new Set,S=r=>{P.has(r.id)||(P.add(r.id),b.push(r))},m=r=>r.slice(0,s),C=V(n).filter(r=>a(r)!==void 0);if(V(n).length>0&&C.length===0)return{target:n,candidates:[]};let k=C.length===1?a(C[0]):void 0,g=k?.kind??(n.on==="list"?n.kind:n.on==="lens"?n.kind??t.places?.find(r=>r.as===n.place)?.kind:void 0)??(n.on==="selection"?a(C[0])?.kind:void 0);if(g!==void 0&&!p.has(g))return{target:n,candidates:[]};let A=(r,y)=>`act:${r}${Object.keys(y).length>0?`:${Object.values(y).map(T=>String(T)).join(",")}`:""}`,w=(r,y,T,v,$)=>{r.destructive||Object.values(y).some(u=>typeof u=="string"&&c.graph.has(u)&&a(u)===void 0)||Ce(c,{name:r.name,args:{...y}},o,v.length===0)&&S({type:"act",id:A(r.name,y),label:T,description:$??r.description??T,mutation:r.name,args:y,asks:v})};if(n.on!=="place"||t.acts)if(t.acts)for(let r of t.acts){let y=h.get(r.mutation);!y||r.destructive||n.on==="act"&&r.mutation!==n.act||w(y,r.args,r.label,(r.open??[]).filter(T=>!T.optional).map(T=>T.name),r.why)}else{let r=k?[k]:[];for(let y of f){if(n.on==="act"&&y.name!==n.act)continue;let T=y.input.shape??{},v=$=>Object.entries(T).filter(([u,O])=>u!==$&&O.safeParse?.(void 0).success===!1).map(([u])=>u);if(y.subject)for(let $ of r)le(l,y).includes($.kind)&&w(y,{[y.subject.arg]:$.id},`${y.title??U(y.name)}: ${H(l,$)}`,v(y.subject.arg));else g!==void 0&&(y.creates??[]).includes(g)&&w(y,{},y.title??U(y.name),v(void 0))}}let M=b.filter(r=>r.type==="act");b.splice(0,b.length,...m(M));let L=(r,y)=>{let T=je(l,f).get(r.kind),v=ue(l,r.kind),$=pe(l,r.kind),u=[];for(let[O,j]of Object.entries(v)){if(y!==void 0?O!==y:$.has(O)||r[O]!==void 0)continue;let D=fe(j),z=D?.type==="enum"?D.options??[]:D?.type==="boolean"?[!0,!1]:[];if(z.length===0)continue;let W=(T?.get(O)??[]).map(N=>h.get(N)).find(N=>N?.subject!==void 0&&Ce(c,{name:N.name,args:{[N.subject.arg]:r.id,[O]:z.find(Ae=>Ae!==r[O])??z[0]}},o,!0));if(W?.subject)for(let N of z)r[O]!==N&&u.push({type:"fill",id:`fill:${r.id}:${O}:${Oe(N)}`,label:`${xe(l,r.kind,O)}: ${Oe(N)}`,description:`Set ${xe(l,r.kind,O).toLowerCase()} of ${H(l,r)} to ${Oe(N)}`,record:r.id,field:O,value:N,call:{name:W.name,args:{[W.subject.arg]:r.id,[O]:N}}})}for(let[O,j]of Object.entries(K(l,r.kind))){if(y!==void 0&&O!==y)continue;let D=j.to==="*"?[...p]:j.to.filter(R=>p.has(R)),z=new Set(d.graph.out(r.id,O).map(R=>R.id)),W=f.find(R=>(R.connects??[]).includes(O)&&R.subject!==void 0&&le(l,R).includes(r.kind));if(!W?.subject)continue;let N=Ne(W.input).find(R=>R.name!==W.subject.arg);if(!N)continue;let Ae=D.flatMap(R=>N.kinds.length===0||N.kinds.includes(R)?d.graph.nodesOfKind(R):[]).filter(R=>R.id!==r.id&&!z.has(R.id)&&a(R.id)!==void 0);for(let R of m(Ae)){let Re={name:W.name,args:{[W.subject.arg]:r.id,[N.name]:R.id}};Ce(c,Re,o,!0)&&u.push({type:"fill",id:`fill:${r.id}:${O}:${R.id}`,label:`${U(O)}: ${H(l,R)}`,description:`Link ${H(l,r)} to ${H(l,R)}${j.description?` as ${j.description}`:""}`,record:r.id,field:O,value:R.id,call:Re})}}return u};if(n.on==="field"&&k)for(let r of L(k,n.field))S(r);else if(k&&n.on==="record")for(let r of m(L(k)))S(r);let J=r=>{let y=q(l,r).toLowerCase(),T=[{type:"panel",id:`panel:${r}:list`,label:`A list of ${y}`,description:`Every ${de(l.tryDefinition(r),r).toLowerCase()} this viewer may see, as a list`,panel:{lens:"blocks",kind:r}}],v=pe(l,r);for(let[$,u]of Object.entries(ue(l,r))){if(v.has($))continue;let O=fe(u),j=xe(l,r,$).toLowerCase();if(O?.type==="enum")T.push({type:"panel",id:`panel:${r}:group:${$}`,label:`${_(y)} by ${j}`,description:`A list of ${y} grouped by ${j}`,panel:{lens:"blocks",kind:r,group:$}}),T.push({type:"panel",id:`panel:${r}:columns:${$}`,label:`Columns of ${y} by ${j}`,description:`${_(y)} in a column for each ${j}`,panel:{lens:"columns",kind:r,column:$}});else if(O?.type==="number"||O?.type==="integer"||O?.type==="date"||O?.type==="datetime"){let D=O.type==="date"||O.type==="datetime";T.push({type:"panel",id:`panel:${r}:sort:${$}`,label:`${_(y)} by ${j}`,description:`A list of ${y}, the ${D?"latest":"highest"} ${j} first`,panel:{lens:"blocks",kind:r,sort:{by:$,direction:"desc"}}}),D&&T.push({type:"panel",id:`panel:${r}:calendar:${$}`,label:`A calendar of ${y}`,description:`${_(y)} on a calendar by ${j}`,panel:{lens:"calendar",kind:r,start:$}})}}return T},F=n.on==="place"?[...p]:g!==void 0?[g]:[];for(let r of F)for(let y of m(J(r)))S(y);for(let r of m((t.places??[]).filter(y=>y.kind===void 0?n.on==="place":p.has(y.kind)&&(n.on==="place"||y.kind===g))))n.on==="lens"&&r.as===n.place||S({type:"place",id:`place:${r.as}`,label:r.title,description:`Go to ${r.title}`,place:r.as});if(k){let r=[];for(let[y,T]of Object.entries(K(l,k.kind)))for(let v of d.graph.out(k.id,y))a(v.id)&&r.push({type:"record",id:`record:${v.id}`,label:H(l,v),description:`${_(T.description??U(y))}: ${H(l,v)}`,record:v.id,relation:y});for(let y of l.kinds)for(let[T,v]of Object.entries(K(l,y)))if(!(v.to!=="*"&&!v.to.includes(k.kind)))for(let $ of d.graph.in(k.id,T))$.kind===y&&a($.id)&&r.push({type:"record",id:`record:${$.id}`,label:H(l,$),description:`${_(v.inverse??U(T))}: ${H(l,$)}`,record:$.id,relation:T});for(let y of m(r))S(y)}else if(n.on==="list"||n.on==="lens")for(let r of m(g!==void 0?d.graph.nodesOfKind(g):[]))a(r.id)&&S({type:"record",id:`record:${r.id}`,label:H(l,r),description:`Open ${H(l,r)}`,record:r.id});else if(n.on==="selection")for(let r of C){let y=a(r);S({type:"record",id:`record:${r}`,label:H(l,y),description:`Open ${H(l,y)}`,record:r})}return{target:n,candidates:b}}var _=e=>e&&`${e[0].toUpperCase()}${e.slice(1)}`,fn={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"]},un=new Set(["a","an","the","of","for","my","our","me","us","to","with","and","in","on","by","that","which","i","we","want","need","show","open","go","draw","make","new","view","views","panel","panels","page","lens","please","all","every","some","see","can","could","would","like","one","what","is","are","do","does","here","there","how","it","this","these","those"]),Z=e=>e.length>3&&e.endsWith("ies")?`${e.slice(0,-3)}y`:e.length>3&&e.endsWith("s")&&!e.endsWith("ss")?e.slice(0,-1):e,$e=e=>e.toLowerCase().normalize("NFKD").replace(/[̀-ͯ]/g,"").split(/[^a-z0-9]+/).filter(Boolean);function ze(e,n,t){let i=e,o=X(i)?.store??i,s=o.schema,c=ge(o,t.principal),d=o.seenBy(t.principal),l=V(n),p=new Set;for(let A of l){let w=d.graph.getNode(A)?.kind;w!==void 0&&c.has(w)&&p.add(w)}if(l.length>0&&p.size===0)return[];if(n.on==="list"&&p.add(n.kind),n.on==="lens"){let A=n.kind??t.places.find(w=>w.as===n.place)?.kind;A!==void 0&&p.add(A)}let a=new Map;for(let A of s.kinds){if(!c.has(A))continue;let w=s.tryDefinition(A);for(let M of[A,de(w,A),q(s,A)])for(let L of $e(M))a.set(Z(L),A)}let f=$e(t.said??"").filter(A=>!un.has(A)),h=new Set,b=[];for(let A of f){let w=a.get(Z(A));w!==void 0?h.add(w):b.push(Z(A))}let P=h.size>0?h:p;if((t.said??"").trim()!==""&&f.length===0)return[];if(P.size===0&&f.length===0)return[];let S=[];t.places.forEach((A,w)=>{if(A.hidden||n.on==="lens"&&A.as===n.place)return;let M=A.over??(A.kind!==void 0?[A.kind]:[]);if(M.length>0&&!M.some(F=>c.has(F)))return;let L=M.some(F=>P.has(F)),J=!L&&(A.reads??[]).some(F=>P.has(F));P.size>0&&!L&&!J||S.push({place:A,own:L,reads:J,at:w})});let m=A=>new Set($e(A.title).map(Z)),C=new Set(b.filter(A=>S.some(({place:w})=>m(w).has(A)))),k=[];for(let{place:A,own:w,reads:M,at:L}of S){let J=m(A),F=new Set((fn[A.lens??""]??[]).map(Z)),r=b.filter($=>J.has($)||F.has($)&&!C.has($)).length,y=b.length-r;if(b.length>0&&r===0)continue;let T=!M&&y===0?"full":"partial",v=(w?4:M?2:1)+r*2-y+(T==="full"?1:0);k.push({view:{place:A.as,title:A.title,...A.kind!==void 0?{kind:A.kind}:{},fit:T},score:v,at:L})}return k.filter((A,w)=>!k.slice(0,w).some(M=>M.view.place===A.view.place&&M.view.title===A.view.title)).sort((A,w)=>w.score-A.score||A.at-w.at).slice(0,t.most??3).map(A=>A.view)}var Pe=new WeakMap;function pn(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 gn(e,n){let t=e,i=X(t)?.store??t,o=i.schema,s=ge(i,n),d=i.allMutations().filter(S=>!S.destructive&&i.permits({name:S.name,args:{}},n).ok!==!1),l=`${[...s].join(",")}|${d.map(S=>S.name).join(",")}`,p=Pe.get(o)?.get(l);if(p)return p;let a=[...s].map(S=>{let m=pe(o,S),C={};for(let[g,A]of Object.entries(ue(o,S))){if(m.has(g))continue;let w=fe(A);w&&(C[g]=w.type==="enum"?`enum:${(w.options??[]).join("|")}`:w.type)}let k={};for(let[g,A]of Object.entries(K(o,S)))k[g]=A.to==="*"?[...s]:A.to.filter(w=>s.has(w));return{kind:S,noun:de(o.tryDefinition(S),S),plural:q(o,S),fields:C,relations:k}}),f=d.map(S=>({name:S.name,title:S.title??U(S.name),...S.subject?{on:le(o,S).filter(m=>s.has(m))}:{}})),h={kinds:a,acts:f},b={version:pn(JSON.stringify(h)),...h},P=Pe.get(o)??new Map;return P.set(l,b),Pe.set(o,P),b}var yn=e=>e.name??e.id??e.kind;function qe(e,n,t){let i=e,{principal:o}=t,s=X(i)?.store??i,c=s.seenBy(o),d=s.schema,l=ge(s,o),p=k=>{let g=c.graph.getNode(k);return g&&l.has(g.kind)?g:void 0},a=k=>({id:k.id,kind:k.kind,label:H(d,k)}),f=V(n),h=f.length===1?p(f[0]):void 0,b=h?Object.fromEntries(Object.keys(ue(d,h.kind)).filter(k=>!pe(d,h.kind).has(k)&&h[k]!==void 0&&k!=="label").map(k=>[k,h[k]])):{},P={on:n.on,...h?{record:{...a(h),fields:b}}:{},...n.on==="field"&&h?{field:n.field}:{},...n.on==="list"&&l.has(n.kind)?{kind:n.kind}:{},...n.on==="lens"?{place:n.place,...n.kind&&l.has(n.kind)?{kind:n.kind}:{}}:{},...n.on==="place"?{place:n.place}:{},...n.on==="act"?{act:n.act}:{}},S=[...new Set([...n.on==="selection"?n.ids:[],...t.selection??[]])].flatMap(k=>{let g=p(k);return g?[a(g)]:[]}),m=[];if(h){for(let k of Object.keys(K(d,h.kind)))for(let g of c.graph.out(h.id,k))p(g.id)&&m.push({...a(g),relation:k,direction:"out"});for(let k of d.kinds)for(let g of Object.keys(K(d,k)))for(let A of c.graph.in(h.id,g))A.kind===k&&p(A.id)&&m.push({...a(A),relation:g,direction:"in"})}let C=c.batches().filter(k=>!k.ops.every(Me)).slice(-(t.recent??6)).reverse().map(k=>({intent:k.intent,at:k.at,by:yn(k.author)}));return{...t.place!==void 0?{place:t.place}:{},target:P,selection:S,neighbors:m.slice(0,24),recent:C,schema:gn(s,o)}}function ee(e){if(!e.off)return e.fast??(e.decide?{model:e.name??"decide",decide:e.decide}:void 0)}function B(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:async({system:i,prompt:o})=>({text:await t(`${i}
2
-
3
- ${o}`)})}}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 Te=(e,n,t)=>e?n/1e6*(e.inputPerMillion??0)+t/1e6*(e.outputPerMillion??0):void 0,ve=()=>`ai-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;function hn(e,n,t=[]){let i=o=>{let s=e.graph.getNode(o);return s?ae(e.schema.tryDefinition(s.kind),s):"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)?q(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 _e=e=>e.type!=="act"||e.asks.length===0,me=(e,n)=>({id:e.id,type:e.type,label:e.label,...n!==void 0?{confidence:n}:{}});function Q(e,n){let t=n.interaction??ve(),i=ye(n.store,n.target,{principal:n.principal,...n.acts?{acts:n.acts}:{},...n.places?{places:n.places}:{}}),o=qe(n.store,n.target,{principal:n.principal,...n.place?{place:n.place}:{},...n.selection?{selection:n.selection}:{}}),s=[];return{id:t,catalog:i,state:o,entry:{id:t,at:new Date().toISOString(),by:n.by??n.principal,target:n.target,targetLabel:hn(n.store,n.target,n.places)},usage:s,meter:c=>{s.push(c),e.meter?.({...c,interaction:t})}}}async function ne(e,n,t,i){let o=await e.decide(n,t),{inputTokens:s,outputTokens:c}=o.usage,d=Te(e.price,s,c);return i({tier:"fast",model:e.model,inputTokens:s,outputTokens:c,...d!==void 0?{costUsd:d}:{}}),o.answers}async function te(e,n,t,i,o){let s=await e.think({system:n,prompt:t,state:i.state,catalog:i.catalog}),c=s.usage?.inputTokens,d=s.usage?.outputTokens,l=s.usage?.costUsd??(c!==void 0?Te(e.price,c,d??0):void 0);return o({tier:"thinking",model:e.model,...c!==void 0?{inputTokens:c}:{},...d!==void 0?{outputTokens:d}:{},...l!==void 0?{costUsd:l}:{}}),Be(s.text)}function ie(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 oe(e,n,t){if(e?.type!=="choice")return[];let i=e,o=Object.entries(i.probabilities).sort((s,c)=>c[1]-s[1]);return o.some(([s])=>s===i.choice)||o.unshift([i.choice,i.confidence]),o.flatMap(([s,c])=>{let d=n(s);return d?[{candidate:d,confidence:c}]:[]}).slice(0,t)}var E=(e,n,t,i)=>({interaction:{...e.entry,ask:{kind:t,said:n??""},offered:[],outcome:"failed",failed:i,usage:[...e.usage]},offers:[]}),Y="AI isn't on here.";async function Ke(e,n,t=3){let i=Q(e,n),o=n.said??"Suggest",s=i.catalog.candidates.filter(_e).slice(0,24);if(s.length===0)return{interaction:{...i.entry,ask:{kind:"suggest",said:o},offered:[],outcome:"offered",usage:[]},offers:[]};let c=ee(e),d=B(e),l=[];try{if(c){let{question:p,of:a}=ie(s,"Which of these would the person most likely want to do next, here?"),f=await ne(c,{...i.state,candidates:s.map(h=>({id:h.id,type:h.type,says:h.description}))},{next:p},i.meter);l=oe(f.next,a,t)}else if(d){let p=await te(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:s.map(f=>({id:f.id,says:f.description}))}),i,i.meter);l=(Array.isArray(p?.pick)?p.pick.filter(f=>typeof f=="string"):[]).flatMap(f=>s.filter(h=>h.id===f)).slice(0,t).map(f=>({candidate:f}))}else return E(i,o,"suggest",Y)}catch(p){return E(i,o,"suggest",p instanceof Error?p.message:String(p))}return{interaction:{...i.entry,ask:{kind:"suggest",said:o},offered:l.map(({candidate:p,confidence:a})=>me(p,a)),outcome:"offered",usage:[...i.usage]},offers:l.map(({candidate:p})=>p)}}var mn=e=>`several:${e}`;async function Fn(e,n,t=2){let i=Q(e,{...n,acts:[]}),o=n.said??"Suggest for the chosen",s=n.target.on==="selection"?n.target.ids.length:1,d=[...n.shared.map(a=>({type:"act",id:mn(a.id),label:a.label,description:`${a.label}, for all ${s} chosen`,mutation:a.mutation,args:a.args,asks:[]})),...i.catalog.candidates.filter(a=>a.type==="panel"||a.type==="place")].slice(0,24),l=ee(e);if(!l)return E(i,o,"suggest",Y);if(d.length===0)return{interaction:{...i.entry,ask:{kind:"suggest",said:o},offered:[],outcome:"offered",usage:[]},offers:[]};let p;try{let{question:a,of:f}=ie(d,`Which of these would the person most likely want to do next with the ${s} records they chose together?`),h=await ne(l,{...i.state,candidates:d.map(b=>({id:b.id,type:b.type,says:b.description}))},{next:a},i.meter);p=oe(h.next,f,t).filter((b,P)=>P===0||b.confidence>=kn)}catch(a){return E(i,o,"suggest",a instanceof Error?a.message:String(a))}return{interaction:{...i.entry,ask:{kind:"suggest",said:o},offered:p.map(({candidate:a,confidence:f})=>me(a,f)),outcome:"offered",usage:[...i.usage]},offers:p.map(({candidate:a})=>a)}}var kn=.25;async function Ve(e,n){let t=Q(e,n),i=n.said??"Fill in",o=t.catalog.candidates.filter(f=>f.type==="fill"),s=new Map;for(let f of o)s.set(f.field,[...s.get(f.field)??[],f]);if(s.size===0)return{interaction:{...t.entry,ask:{kind:"fill",said:i},offered:[],outcome:"offered",usage:[]},offers:[]};let c=ee(e),d=B(e),l=[];try{if(c){let f=[...s].map(([b,P],S)=>({key:`f${S+1}`,field:b,...ie(P,`Which value fits "${b}" best for this record?`)})),h=await ne(c,t.state,Object.fromEntries(f.map(b=>[b.key,b.question])),t.meter);for(let b of f){let P=!bn(n.store,n.target,b.field)&&An(n.store,n.target,b.field)!=="one";l.push(...oe(h[b.key],b.of,P?3:1).filter((S,m)=>m===0||S.confidence>=.4))}}else if(d){let f=await te(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(P=>({id:P.id,says:P.description}))}),t,t.meter),h=Array.isArray(f?.fills)?f.fills.filter(P=>typeof P=="string"):[],b=new Set;for(let P of h){let S=o.find(m=>m.id===P);S?.type==="fill"&&!b.has(S.field)&&(b.add(S.field),l.push({candidate:S}))}}else return E(t,i,"fill",Y)}catch(f){return E(t,i,"fill",f instanceof Error?f.message:String(f))}let p=t.usage.at(-1)?.model,a=se(n.store,{interaction:t.id,target:n.target,basis:i,...p?{model:p}:{},proposals:l.flatMap(({candidate:f,confidence:h})=>f.type==="fill"?[{id:f.id,label:f.label,said:f.description,call:f.call,record:f.record,field:f.field,...h!==void 0?{confidence:h}:{}}]:[])},n.principal);return{interaction:{...t.entry,ask:{kind:"fill",said:i},offered:a.proposals.map(f=>({id:f.id,type:"fill",label:f.label,...f.confidence!==void 0?{confidence:f.confidence}:{}})),outcome:"offered",usage:[...t.usage]},offers:[],...a.proposals.length>0?{ghost:a}:{}}}function bn(e,n,t){let i=n.on==="record"||n.on==="field"?n.id:void 0,o=i?e.graph.getNode(i)?.kind:void 0,s=(o?e.schema.tryDefinition(o)?.fields?.shape:void 0)??{};return t in s}function An(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 Qe(e,n){let t=Q(e,n),i=n.said??"Add one",o=new Set(n.store.allMutations().filter(a=>(a.creates??[]).length>0).map(a=>a.name)),s=t.catalog.candidates.filter(a=>a.type==="act"&&a.asks.length>0&&o.has(a.mutation));if(s.length===0)return E(t,i,"record","Nothing here makes a record.");let c=B(e);if(!c)return E(t,i,"record",Y);let d;try{let a=await te(c,'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:s.map(b=>({id:b.id,says:b.description,asks:b.asks}))}),t,t.meter),f=s.find(b=>b.id===a?.act),h=typeof a?.args=="object"&&a.args!==null?a.args:{};f&&(d={act:f,args:Object.fromEntries(Object.entries(h).filter(([b])=>f.asks.includes(b)))})}catch(a){return E(t,i,"record",a instanceof Error?a.message:String(a))}if(!d)return E(t,i,"record","The model named no act this app has here.");let l=t.usage.at(-1)?.model,p=se(n.store,{interaction:t.id,target:n.target,basis:i,...l?{model:l}:{},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 p.proposals.length===0?E(t,i,"record","What the model proposed could not be made here."):{interaction:{...t.entry,ask:{kind:"record",said:i},offered:p.proposals.map(a=>({id:a.id,type:"act",label:a.said})),outcome:"offered",usage:[...t.usage]},offers:[d.act],ghost:p}}async function Ye(e,n){let t=Q(e,n),i=n.said??"Make a panel",o=t.catalog.candidates.filter(a=>a.type==="panel");if(o.length===0)return E(t,i,"panel","Nothing here can be drawn as a panel.");let s=ee(e),c=B(e),d;try{if(c){let a=await te(c,'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(h=>({id:h.id,says:h.description}))}),t,t.meter),f=o.find(h=>h.id===a?.panel);f&&(d={panel:f,...typeof a?.title=="string"&&a.title.trim()?{title:a.title.trim().slice(0,60)}:{}})}else if(s){let{question:a,of:f}=ie(o,`Which panel answers this best: ${i}`),h=oe((await ne(s,t.state,{panel:a},t.meter)).panel,f,1)[0];h?.candidate.type==="panel"&&(d={panel:h.candidate,confidence:h.confidence})}else return E(t,i,"panel",Y)}catch(a){return E(t,i,"panel",a instanceof Error?a.message:String(a))}if(!d)return E(t,i,"panel","The model named no panel this app can draw.");let l=d.title??d.panel.label,p={title:l,recipe:{...d.panel.panel,title:l}};return{interaction:{...t.entry,ask:{kind:"panel",said:i},offered:[me(d.panel,d.confidence)],outcome:"drawn",panel:p,usage:[...t.usage]},offers:[d.panel],panel:p}}function Sn(e){return e.off?void 0:e.answer}var wn=`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 Jn(e,n){let t=Q(e,n),i=n.said.trim(),o=t.catalog.candidates.filter(m=>_e(m)||m.type==="panel"||m.type==="place"||m.type==="record").slice(0,32),s=Sn(e),c=B(e),d=ee(e),l="",p=[],a=m=>m.flatMap(C=>o.filter(k=>k.id===C)).slice(0,3).map(C=>({candidate:C}));try{if(s){let m=await s.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}:{}}),C=m.usage?.inputTokens,k=m.usage?.outputTokens,g=m.usage?.costUsd??(C!==void 0?Te(s.price,C,k??0):void 0);t.meter({tier:"thinking",model:s.model,...C!==void 0?{inputTokens:C}:{},...k!==void 0?{outputTokens:k}:{},...g!==void 0?{costUsd:g}:{}}),l=typeof m.text=="string"?m.text.trim():"",p=a(m.pick??[])}else if(c){let m=await te(c,wn,JSON.stringify({ask:i,about:t.entry.targetLabel,...n.follows?{follows:n.follows}:{},state:t.state,candidates:o.map(C=>({id:C.id,says:C.description}))}),t,t.meter);l=typeof m?.answer=="string"?m.answer.trim():"",p=a(Array.isArray(m?.pick)?m.pick:[])}else if(d&&o.length>0){let{question:m,of:C}=ie(o,`Which of these best answers, or acts on: ${i}`),k=await ne(d,{...t.state,asked:i,candidates:o.map(g=>({id:g.id,type:g.type,says:g.description}))},{answer:m},t.meter);p=oe(k.answer,C,3),l=p.length>0?`These fit \u201C${i}\u201D.`:""}else return E(t,i,"ask",Y)}catch(m){return E(t,i,"ask",m instanceof Error?m.message:String(m))}if(!l&&p.length===0)return E(t,i,"ask","The AI had no answer to that here.");let f=t.usage.at(-1)?.model,h=p.flatMap(({candidate:m,confidence:C})=>{let k=he(m);return k?[{...k,...C!==void 0?{confidence:C}:{}}]:[]}),b=h.length>0?se(n.store,{interaction:t.id,target:n.target,basis:i,...f?{model:f}:{},proposals:h},n.principal):void 0,P=p.map(({candidate:m})=>m).filter(m=>he(m)===void 0),S=[...P.map(m=>me(m,p.find(C=>C.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:S,outcome:"offered",...l?{answer:l}:{},usage:[...t.usage]},offers:P,...b&&b.proposals.length>0?{ghost:b}:{},...l?{answer:l}:{}}}function se(e,n,t){let i=n.proposals.flatMap(o=>{try{let s=e.previewAll([o.call],{author:t}),c=s.ops.map(d=>d.intent).join("; ");return s.ops.length>0?[{...o,said:c||o.said}]:[]}catch{return[]}});return{...n,proposals:i}}function he(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 Xe(e,n,t){let i=n.proposals.filter(s=>t.ids===void 0||t.ids.includes(s.id));if(i.length===0)return{ok:!1,refused:"Nothing was chosen."};let o=i.flatMap(s=>s.confidence===void 0?[]:[s.confidence]);try{let c=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 c?{ok:!0,batch:c,accepted:i.map(d=>d.id)}:{ok:!1,refused:"That changes nothing now."}}catch(s){return{ok:!1,refused:s instanceof Error?s.message:String(s)}}}function Ze(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 en=e=>({...e,outcome:"dismissed"});var I=Se(ln(),1);var x=Se(Fe(),1);function tn(e,n,t){let i=n.on==="selection"?n.ids:n.on==="record"||n.on==="field"?[n.id]:[],o=i.length>0?Ue(e.store,i,{principal:e.principal,...i.length===1?{focus:i[0]}:{}}).affordances.map(s=>({mutation:s.mutation,label:s.label,args:s.args,open:s.open,why:s.why,...s.destructive?{destructive:!0}:{}})):void 0;return{store:e.store,target:n,principal:e.principal,interaction:ve(),places:e.places,selection:e.selection,...o?{acts:o}:{},...e.place?{place:e.place}:{},...t?{said:t}:{}}}async function on(e,n,t){let i=await (__graviewPreload(import.meta.url,["./chunk.7LL7OSBY.js","./chunk.G4JJXA63.js","./chunk.E5GM2SMO.js","./chunk.NQZ73QV7.js","./chunk.NX7IIZLO.js","./chunk.XOZU4OFA.js","./chunk.SUPWMV2F.js","./chunk.Q5WEOX3Q.js","./chunk.4GQA3AJU.js","./chunk.HG4DDNPG.js","./chunk.MAFFUPCR.js","./chunk.WVUJXDXZ.js","./chunk.TPG6IY4M.js","./chunk.NFDLCUCC.js","./chunk.X7JMJSLU.js","./chunk.PPRSGM64.js","./chunk.5Y3Q7ONN.js","./chunk.KTFUVR4V.js","./chunk.N4M54YK6.js","./chunk.KVJFY7N5.js","./chunk.DPHTUTOS.js","./chunk.4TJOS4C7.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.ZXZNAG35.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?.(),sn()}function sn(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(()=>sn(e-1))}async function re(e,n,t,i,o){let s=tn(e,t,i),c=n==="suggest"?await Ke(e.ai,s):n==="fill"?await Ve(e.ai,s):n==="record"?await Qe(e.ai,s):await Ye(e.ai,s);if(c.interaction.outcome==="failed")return n!=="suggest"&&e.desk.record(c.interaction),c;let d=l=>{let p={...c.interaction,outcome:"failed",failed:l};return e.desk.record(p),{...c,interaction:p}};if(n==="fill"||n==="record"){if(!c.ghost||c.ghost.proposals.length===0)return d("Nothing here could be filled in.");o?.(),e.desk.setGhost({ghost:c.ghost}),e.desk.record(c.interaction)}if(n==="panel"&&c.panel){let l=await on(e,c.panel,o);if(l)return d(l);e.desk.record(c.interaction)}return c}var Ie=new WeakMap,xn=64,nn=new WeakMap;function On(e){let n=nn.get(e);if(!n){let t=n={n:0};nn.set(e,t),e.subscribe(()=>void(t.n+=1))}return n.n}var rn=(e,n)=>{let t=V(n);return t.length>0?t.map(i=>e.graph.getNode(i)):[On(e)]},an=(e,n,t)=>JSON.stringify({target:n,seat:e.principal,by:t}),dn=(e,n,t)=>{let i=rn(e.store,n);return t.schema===e.store.schema&&t.ai===e.ai&&i.length===t.depends.length&&i.every((o,s)=>o===t.depends[s])};function Cn(e,n,t="menu"){let i=Ie.get(e.store)?.get(an(e,n,t));return i?.result!==void 0&&dn(e,n,i)?i.result:void 0}function $n(e,n,t){let i=Ie.get(e.store);i||Ie.set(e.store,i=new Map);let o=an(e,n,t?.by??"menu"),s=i.get(o);if(s&&dn(e,n,s))return s.result?Promise.resolve(s.result):s.asked;let c=t?t.ask():re(e,"suggest",n),d={schema:e.store.schema,ai:e.ai,depends:rn(e.store,n),asked:c};i.delete(o),i.set(o,d),i.size>xn&&i.delete(i.keys().next().value);let l=i;return c.then(p=>{p.interaction.outcome!=="failed"?d.result=p:l.get(o)===d&&l.delete(o)}),c}async function Pn(e,n,t,i){let o=n.interaction,s=he(t);if(s){let c=o.usage?.at(-1)?.model,d=o.offered.find(p=>p.id===t.id)?.confidence,l=se(e.store,{interaction:o.id,target:o.target,basis:`${o.ask.said}: ${t.label}`,...c?{model:c}:{},proposals:[{...s,...d!==void 0?{confidence:d}:{}}]},e.principal);if(l.proposals.length===0){let p="That can't be done now.";return e.desk.record({...o,outcome:"failed",failed:p}),p}i?.(),e.desk.setGhost({ghost:l}),e.desk.record(o);return}if(t.type==="panel"){let c=t.label,d={title:c,recipe:{...t.panel,title:c}},l=await on(e,d,i);return e.desk.record(l?{...o,outcome:"failed",failed:l}:{...o,outcome:"drawn",accepted:[t.id],panel:d}),l}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 Yn(e,n){if(n.ask.kind==="ask")return ce(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 re(e,t,n.target,n.ask.said)}var G={padding:"5px 10px",fontSize:"0.875rem",borderRadius:8,width:"100%",textAlign:"left",borderWidth:1,borderStyle:"solid",borderColor:"transparent",background:"none",boxShadow:"none"},ke={margin:0,padding:"4px 10px",fontSize:"0.8125rem",color:"var(--graview-ink-muted)"};function Xn({target:e,close:n}){let t=We(),i=(0,I.useMemo)(()=>Ge(e,u=>t.store.graph.has(u)),[e,t.store]),o=(0,I.useMemo)(()=>{let u=tn(t,i);return ye(t.store,i,{principal:t.principal,places:t.places,...u.acts?{acts:u.acts}:{}})},[t,i]),s=o.candidates.some(u=>u.type==="fill"),c=o.candidates.some(u=>u.type==="panel"),d=(0,I.useMemo)(()=>c?ze(t.store,i,{principal:t.principal,places:t.places,most:1}):[],[c,t,i]),l=(0,I.useMemo)(()=>new Set(t.store.allMutations().filter(u=>(u.creates??[]).length>0).map(u=>u.name)),[t.store]),p=B(t.ai)!==void 0&&o.candidates.some(u=>u.type==="act"&&u.asks.length>0&&l.has(u.mutation)),a=we(t.ai),f=Cn(t,i),h=JSON.stringify(i),[b,P]=(0,I.useState)(!1),[S,m]=(0,I.useState)(null),[C,k]=(0,I.useState)(a&&f===void 0);(0,I.useEffect)(()=>{if(f!==void 0||!(a||b))return;let u=!0;return k(!0),$n(t,i).then(O=>{u&&(m(O),k(!1))}),()=>{u=!1}},[h,b]);let g=f??S,A=(g?.offers??[]).filter(u=>!(u.type==="place"&&d.some(O=>O.place===u.place))).slice(0,Math.max(0,3-d.length)),w=g?.interaction.outcome==="failed"?g.interaction.failed??"The AI could not suggest anything here.":null,M=(0,I.useRef)(!1),L=(0,I.useRef)(null);(0,I.useLayoutEffect)(()=>{g===null||!M.current||(M.current=!1,L.current?.querySelector("button")?.focus())},[g]);let J=(0,I.useRef)(!0);(0,I.useEffect)(()=>()=>{J.current=!1},[]);let[F,r]=(0,I.useState)(!1),[y,T]=(0,I.useState)(null),v=u=>{if(F)return;r(!0),T(null);let O=!1;u(()=>{O=!0,n()}).then(D=>{J.current&&(r(!1),D?T(D):O||n())},D=>{J.current&&(r(!1),T(D instanceof Error?D.message:String(D)))})},$=u=>u.interaction.outcome==="failed"?u.interaction.failed??"The AI could not do that here.":void 0;return(0,x.jsxs)("div",{ref:L,"data-testid":"inline-ai",style:{display:"grid",gap:2},children:[C&&!b?(0,x.jsx)("p",{role:"status","data-testid":"inline-ai-thinking",style:ke,children:"Thinking\u2026"}):F?(0,x.jsx)("p",{role:"status","data-testid":"inline-ai-asking",style:ke,children:"Asking\u2026"}):y?(0,x.jsx)("p",{role:"alert","data-testid":"inline-ai-failed",style:{...ke,color:"var(--graview-warn)"},children:y}):w?(0,x.jsx)("p",{role:"status",style:ke,children:w}):null,(0,x.jsxs)("ul",{style:{margin:0,padding:0,listStyle:"none",display:"flex",flexDirection:"column",gap:2},children:[A.map(u=>(0,x.jsx)("li",{children:(0,x.jsxs)("button",{type:"button","data-menu-item":`ai-offer:${u.id}`,"data-ai-offer":u.id,"data-ai-offer-type":u.type,onClick:()=>v(O=>Pn(t,g,u,O)),style:G,children:[u.label,(0,x.jsxs)("span",{style:{color:"var(--graview-ink-faint)"},children:[" \xB7 ",u.type==="panel"?"a panel":u.type==="place"?"go there":u.type==="record"?"open it":"suggested"]})]})},u.id)),!a&&g===null?(0,x.jsx)("li",{children:(0,x.jsx)("button",{type:"button","data-menu-item":"ai-suggest","aria-disabled":b||void 0,onClick:u=>{b||(M.current=document.activeElement===u.currentTarget,P(!0))},style:G,children:b?"Thinking\u2026":"Suggest\u2026"})}):null,s?(0,x.jsx)("li",{children:(0,x.jsx)("button",{type:"button","data-menu-item":"ai-fill",onClick:()=>v(async u=>$(await re(t,"fill",i,"Fill in",u))),style:G,children:"Fill in with AI"})}):null,p?(0,x.jsx)("li",{children:(0,x.jsx)("button",{type:"button","data-menu-item":"ai-record",onClick:()=>v(async u=>$(await re(t,"record",i,"Add one",u))),style:G,children:"Add one with AI"})}):null,d.map(u=>(0,x.jsx)("li",{children:(0,x.jsx)("button",{type:"button","data-menu-item":`ai-open:${u.place}`,"data-ai-existing":u.fit,onClick:()=>{n(),t.goTo.place(u.place),u.fit==="partial"&&ce(t.desk,{target:{on:"lens",place:u.place,...u.kind?{kind:u.kind}:{}}})},style:G,children:u.fit==="full"?`Open ${u.title}`:`Open and adjust ${u.title}`})},u.place)),c?(0,x.jsx)("li",{children:(0,x.jsx)("button",{type:"button","data-menu-item":"ai-panel",onClick:()=>v(async u=>$(await re(t,"panel",i,"Draw a panel",u))),style:G,children:d.length>0?"Draw a new view":"Draw a panel"})}):null,(0,x.jsx)("li",{children:(0,x.jsx)("button",{type:"button","data-menu-item":"ai-ask",onClick:()=>{let u=document.activeElement;n(),ce(t.desk,{target:i,returnTo:u instanceof HTMLElement&&u!==document.body?u:null})},style:G,children:"Ask about this\u2026"})})]})]})}var be={display:"inline-flex",alignItems:"center",minHeight:28,padding:"2px 10px",fontSize:"0.8125rem",borderRadius:8};function Zn({placement:e="picture"}){let{store:n,principal:t,aiDesk:i}=Je(),o=Le(n,t),{ghost:s,entries:c}=He(i),[d,l]=(0,I.useState)(new Set);(0,I.useEffect)(()=>l(new Set),[s?.ghost.interaction]);let p=(0,I.useRef)(null),a=(0,I.useRef)(null),f=s?.batch;if((0,I.useEffect)(()=>{f!==void 0&&a.current?.focus()},[f]),!s)return null;let{ghost:h}=s,b=c.find(g=>g.id===h.interaction),P=()=>{let g=h.target.on==="record"||h.target.on==="field"?h.target.id:void 0,A=p.current?.closest("[data-graview-face], main")?.parentElement??document,w=(g?A.querySelector(`[data-graview-view="${CSS.escape(g)}"][tabindex]`):null)??document.querySelector("[data-graview-page-title]")??p.current?.closest("main")??document.querySelector("main");w&&!w.hasAttribute("tabindex")&&w.setAttribute("tabindex","-1"),w?.focus({preventScroll:!0}),i.setGhost(null)},S=h.proposals.filter(g=>!d.has(g.id)).map(g=>g.id),m=()=>{let g=Xe(o,h,{author:t,ids:S});if(!g.ok){i.setGhost({...s,refused:g.refused});return}b&&i.record(Ze(b,g.accepted,g.batch)),i.setGhost({ghost:h,batch:g.batch,took:g.accepted.length,...s.onCard?{onCard:!0}:{}})},C=()=>{b&&s.batch===void 0&&i.record(en(b)),P()},k=()=>{if(s.batch!==void 0)try{o.undo(s.batch,{author:t}),P()}catch(g){i.setGhost({...s,refused:g instanceof Error?g.message:String(g)})}};return(0,x.jsxs)("section",{ref:p,"data-testid":"ai-ghost","data-interaction":h.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:De("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,x.jsx)("p",{style:{margin:0,color:"var(--graview-ink-muted)"},children:s.batch!==void 0?`Done: ${s.took===1?"one change":`${s.took} changes`}, as one.`:`Proposed by AI \xB7 ${h.basis}`}),s.batch===void 0?(0,x.jsx)("ul",{style:{margin:0,padding:0,listStyle:"none",display:"grid",gap:4},children:h.proposals.map(g=>(0,x.jsx)("li",{"data-ghost-proposal":g.id,children:(0,x.jsxs)("label",{style:{display:"flex",alignItems:"baseline",gap:8,cursor:"pointer"},children:[(0,x.jsx)("input",{type:"checkbox",checked:!d.has(g.id),onChange:A=>{let w=new Set(d);A.target.checked?w.delete(g.id):w.add(g.id),l(w)}}),(0,x.jsx)("span",{style:{fontStyle:"italic",color:"var(--graview-ink)"},children:g.said}),g.confidence!==void 0?(0,x.jsxs)("span",{style:{color:"var(--graview-ink-faint)"},children:[Math.round(g.confidence*100),"% sure"]}):null]})},g.id))}):null,s.refused?(0,x.jsx)("p",{role:"alert",style:{margin:0,color:"var(--graview-warn)"},children:s.refused}):null,(0,x.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:s.batch===void 0?(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)("button",{type:"button","data-testid":"ghost-accept",disabled:S.length===0,onClick:m,style:be,children:S.length===h.proposals.length?"Accept":`Accept ${S.length} of ${h.proposals.length}`}),(0,x.jsx)("button",{type:"button","data-testid":"ghost-dismiss",onClick:C,style:be,children:"Dismiss"})]}):(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)("button",{type:"button",ref:a,"data-testid":"ghost-undo",onClick:k,style:be,children:"Undo"}),(0,x.jsx)("button",{type:"button","data-testid":"ghost-close",onClick:P,style:be,children:"Close"})]})})]})}export{Ge as a,V as b,ye as c,ze as d,ee as e,ve as f,hn as g,mn as h,Fn as i,Jn as j,tn as k,on as l,re as m,Cn as n,$n as o,Pn as p,Yn as q,Xn as r,Zn as s};
@@ -1 +0,0 @@
1
- var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{Da as o,G as k,R as n}from"./chunk.KA44WNB4.js";import{a as t}from"./chunk.SDO3U72B.js";import{b as p}from"./chunk.AJZBJBMO.js";var f=o(t(()=>(__graviewPreload(import.meta.url,["./chunk.WVUJXDXZ.js","./chunk.TPG6IY4M.js","./chunk.NFDLCUCC.js","./chunk.X7JMJSLU.js","./chunk.PPRSGM64.js","./chunk.5Y3Q7ONN.js","./chunk.KTFUVR4V.js","./chunk.GZHZLJBF.js","./chunk.RQBEQYB2.js","./chunk.OJGHDWI6.js","./chunk.6VAFNCR4.js","./chunk.N4M54YK6.js","./chunk.KVJFY7N5.js","./chunk.DPHTUTOS.js","./chunk.2UIUMG23.js","./chunk.KA44WNB4.js","./chunk.SDO3U72B.js","./chunk.4TJOS4C7.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.RLXKDXPB.js")))),y=f.part((e,r)=>e.drawFiles(r),{quiet:!0});var d=o(t(()=>(__graviewPreload(import.meta.url,["./chunk.GZHZLJBF.js","./chunk.RQBEQYB2.js","./chunk.OJGHDWI6.js","./chunk.6VAFNCR4.js","./chunk.N4M54YK6.js","./chunk.KVJFY7N5.js","./chunk.DPHTUTOS.js","./chunk.2UIUMG23.js","./chunk.KA44WNB4.js","./chunk.SDO3U72B.js","./chunk.4TJOS4C7.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.3UD7GG5B.js")))),I=d.part((e,r)=>e.drawLinkedRecord(r),{quiet:!0}),w=d.part((e,r)=>e.drawLinkedPicker(r),{what:"Picking a linked record"});var s=p(n(),1),m=o(t(()=>(__graviewPreload(import.meta.url,["./chunk.GZHZLJBF.js","./chunk.RQBEQYB2.js","./chunk.OJGHDWI6.js","./chunk.6VAFNCR4.js","./chunk.N4M54YK6.js","./chunk.KVJFY7N5.js","./chunk.DPHTUTOS.js","./chunk.2UIUMG23.js","./chunk.KA44WNB4.js","./chunk.SDO3U72B.js","./chunk.4TJOS4C7.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.OZGETOTK.js")))),E=m.part((e,r)=>(0,s.jsx)(e.RepeatPicker,{...r}),{quiet:!0}),W=m.part((e,r)=>(0,s.jsx)(e.RepeatEditor,{...r}),{quiet:!0});var a=p(k(),1),i=p(n(),1),c=o(t(()=>(__graviewPreload(import.meta.url,["./chunk.N4M54YK6.js","./chunk.KVJFY7N5.js","./chunk.DPHTUTOS.js","./chunk.2UIUMG23.js","./chunk.KA44WNB4.js","./chunk.SDO3U72B.js","./chunk.4TJOS4C7.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.PTXLOFQW.js")))),l=c.part((e,r)=>(0,i.jsx)(e.WhenInput,{...r}),{quiet:!0});function M(e){return(0,i.jsx)(a.Suspense,{fallback:(0,i.jsx)("span",{"data-graview-when-arriving":"",style:{display:"inline-block",minHeight:24}}),children:(0,i.jsx)(l,{...e})})}var N=()=>c.load().then(()=>{},()=>{});export{y as a,I as b,w as c,E as d,W as e,M as f,N as g};
@@ -1 +0,0 @@
1
- import{h,i as K}from"./chunk.KVJFY7N5.js";import{a as M,f as q}from"./chunk.DPHTUTOS.js";import{$a as L,Ac as k,C as y,Fa as O,Ib as N,Ob as T,Pb as v,Qa as D,Ra as P,fa as S,lb as V,mb as I,nb as g,va as R,ya as j,zc as Z}from"./chunk.4TJOS4C7.js";var $=n=>n.safeParse?.(void 0).success??!1,B=n=>h(n).shape,x=n=>{let t=h(n);if(y(t)?.type!=="literal")return;let o=y(t)?.values;return o&&o.length===1&&typeof o[0]=="string"?o[0]:void 0};function b(n,t){let o=$(t),e=h(t),r=y(e)?.type,c=N(t);if(c)return{control:"node",name:n,optional:o,kinds:c};let m=O(t);if(m)return{control:"linked",name:n,optional:o,relation:m};if(P(t)){let d=D(n);return{control:"repeat",name:n,optional:o,...d?{of:d}:{}}}if(r==="boolean")return{control:"boolean",name:n,optional:o};let f=R(e);if(f)return{control:"file",name:n,optional:o,...f==="image"?{image:!0}:f==="video"?{video:!0}:{}};if(r==="object"){let d=e.shape??{};return{control:"group",name:n,optional:o,fields:Object.entries(d).map(([a,l])=>b(a,l))}}if(r==="union"){let d=y(e)?.options??[],a=d.map(s=>B(s));if(a.every(s=>s!==void 0)){let s=Object.keys(a[0]??{}).find(u=>a.every(p=>x(p?.[u])!==void 0));if(s)return{control:"variant",name:n,optional:o,tag:s,options:d.map((u,p)=>({value:x(a[p]?.[s])??"",fields:Object.entries(a[p]??{}).filter(([w])=>w!==s).map(([w,_])=>b(w,_))}))}}let l=d.map(s=>x(s));return l.every(s=>s!==void 0)?{control:"choice",name:n,optional:o,options:l}:{control:"opaque",name:n,optional:o}}if(r==="array"){let d=y(e)?.element;return d!==void 0?{control:"list",name:n,optional:o,item:b(n,d)}:{control:"opaque",name:n,optional:o}}let i=K(t);return i.type==="text"?{control:"text",name:n,optional:o,...i.long?{long:!0}:{},...j(e)?{app:!0}:{},...M(e)?{markdown:!0}:{},...i.holds?{holds:i.holds}:{}}:i.type==="number"&&i.duration?{control:"text",name:n,optional:o,holds:"duration"}:i.type==="date"?{control:"date",name:n,optional:o,...i.time?{time:!0}:{},...i.instant?{instant:!0}:{}}:i.type==="number"?{control:"number",name:n,optional:o,...i.min===void 0?{}:{min:i.min},...i.max===void 0?{}:{max:i.max},...i.step===void 0?{}:{step:i.step},...i.amount?{amount:i.amount}:{}}:i.type==="choice"?{control:"choice",name:n,optional:o,options:i.options}:{control:"opaque",name:n,optional:o}}function z(n){let t=n.shape;return t?Object.entries(t).map(([o,e])=>b(o,e)):[]}function J(n,t){let o={...t};for(let e of n){let r=t[e.name];r===void 0&&!e.optional&&(e.control==="list"||e.control==="boolean")&&(o[e.name]=e.control==="list"?[]:!1),e.control==="text"&&e.holds&&typeof r=="string"&&(o[e.name]=r.trim()===""?void 0:e.holds==="duration"?q(r)??r:r.trim()),e.control==="group"&&r!==void 0&&typeof r=="object"&&r!==null&&(o[e.name]=J(e.fields,r))}return o}var A="visitor";function un(n,t,o,e){let r=Z.keptFrom?.(n,t),c=new Set;if(!r)return c;let m=Object.keys(o.input.shape??{});for(let a of o.creates??[]){let l=r({id:"\0new",kind:a});for(let s of m)l?.(s)&&c.add(s)}let f=e===void 0?void 0:n.graph.getNode(e),i=f&&n.schema.tryDefinition(f.kind),d=f&&r(f);if(i&&d)for(let a of v(o,i))d(a)&&m.includes(a)&&c.add(a);return c}function E(n,t,o,e){let r=new Set,c=t?.sees??[];if(I(o)||!c.some(k))return r;let m=V(o),f=(l,s)=>{let u=c.filter(p=>p.kinds.includes(l)&&g(p,m));return u.some(k)?L.has(s)||u.some(p=>!k(p)||(p.fields===void 0||p.fields.includes(s))&&!p.hide?.includes(s)):!0},i=Object.keys(e.input.shape??{}),d=new Map,a=(l,s)=>d.set(l,d.get(l)===!0||s);for(let l of e.creates??[]){let s=Object.keys(n.tryDefinition(l)?.fields.shape??{});for(let u of i)s.includes(u)&&a(u,f(l,u))}for(let l of T(n,e)){let s=n.tryDefinition(l);if(s)for(let u of v(e,s))i.includes(u)&&a(u,f(l,u))}for(let[l,s]of d)s||r.add(l);return r}var G=(n,t)=>t.title??S(n);function C(n,t,o){let e=n?.sees;return!e||e.length===0?!0:e.some(r=>r.kinds.includes(o)&&g(r,t)&&!r.own&&!r.via)}function F(n){switch(n.control){case"node":return[n];case"group":return n.fields.flatMap(F);case"variant":return n.options.flatMap(t=>t.fields.flatMap(F));case"list":return F(n.item);default:return[]}}function H(n,t,o,e){return e.has(o.name)?!1:F(o).every(r=>r.kinds.some(c=>c!=="*"&&C(n,t,c)))}var W=n=>({kind:"human",id:"form:",roles:[n]});function bn(n,t,o=n.mutations??[]){let e=n.forms?.[t];if(!e)return;let r=o.find(a=>a.name===e.act);if(!r)return;let c=e.role??A,m=W(c),f=E(n.schema,n.policy,m,r),i=z(r.input),d=e.fields?e.fields.flatMap(a=>i.find(l=>l.name===a)??[]):i.filter(a=>H(n.policy,m,a,f));return{name:t,title:G(t,e),...e.intro?{intro:e.intro}:{},...e.say?{say:e.say}:{},submit:e.submit??r.title??S(r.name),role:c,act:r,fields:d}}function Fn(n,t,o){let e=n.forms?.[t];if(!e)throw new Error(`There is no form called "${t}"${n.forms?`: the forms are ${Object.keys(n.forms).join(", ")}`:": the app declares none"}.`);return{kind:"human",id:o,name:`a visitor via the ${G(t,e)} form`,roles:[e.role??A]}}function wn(n){return{said:"Received \u2014 thank you.",...n.say?{next:n.say}:{}}}export{z as a,J as b,un as c,E as d,bn as e,Fn as f,wn as g};
@@ -1 +0,0 @@
1
- import{a as L}from"./chunk.NFDLCUCC.js";import{a as ie,b as de,c as se,d as le,e as C,f as V,g as ue}from"./chunk.X7JMJSLU.js";import{a as fe}from"./chunk.PPRSGM64.js";import{c as T,e as ae}from"./chunk.5Y3Q7ONN.js";import{a as j,b as Q,c as ee,d as ne,f as E,m as re,n as b,o as te,p as oe,q as B}from"./chunk.KTFUVR4V.js";import{b as x,d as ye,e as pe,g as me,h as ce,i as ge}from"./chunk.DPHTUTOS.js";import{C as P,Da as z,Db as Y,Eb as q,Fb as M,I as W,R as H,U as v,_ as K,da as J,ka as F,ma as X,ra as G,sa as A,ta as Z,ua as O,va as N}from"./chunk.4TJOS4C7.js";var he=e=>e.caption?.trim()||e.name,_=e=>A(e)?`${he(e)}, ${Z(e)}`:he(e);function nn(e){let n=Math.max(0,Math.round(e)),t=a=>String(a).padStart(2,"0"),r=Math.floor(n/3600),o=Math.floor(n%3600/60);return r>0?`${r}:${t(o)}:${t(n%60)}`:`${o}:${t(n%60)}`}function Be(e){let n=e?.fields?.shape??{};return Object.keys(n).filter(t=>{let r=P(n[t]);for(;r?.innerType;)r=P(r.innerType);return N(n[t])!==void 0||r?.type==="array"&&N(r.element)!==void 0})}function rn(e,n){for(let t of Be(n)){let r=O(e[t]).find(o=>G(o)||A(o));if(r)return r}}var R=e=>{try{return e()}catch{return null}},Oe=e=>typeof e=="string"&&ie.includes(e);function Pe(e){if(e!==void 0)return Oe(e)?e:e&&typeof e=="object"&&typeof e.expr=="string"?{expr:R(()=>T(e.expr))}:"neutral"}var ve=4;function Fe(e){let n=typeof e.list=="string"?R(()=>T(e.list)):null,t=e.sort,r=typeof t=="string"?t:t&&typeof t=="object"&&typeof t.by=="string"?t.by:void 0,o=t&&typeof t=="object"?t.direction:void 0,a=n,d;if(n&&r!==void 0)if(o==="choices")d=r;else{let y=R(()=>T(r));a=y?{t:"call",fn:"sort",args:[n,y,{t:"lit",value:o==="desc"?"desc":"asc",at:0}],at:0}:null}let l=typeof e.limit=="number"&&Number.isInteger(e.limit)&&e.limit>=1?Math.min(e.limit,C):void 0,i=e.group,s=typeof i=="string"?i:i&&typeof i=="object"&&typeof i.by=="string"?i.by:void 0,f=i&&typeof i=="object"&&i.headings&&typeof i.headings=="object"?i.headings:{};return{t:"list",source:a,...d?{choiceOrder:d}:{},...l?{limit:l}:{},...s?{group:{by:s,headings:Object.fromEntries(Object.entries(f).filter(y=>typeof y[1]=="string"))}}:{},...typeof e.empty=="string"?{empty:e.empty}:{},as:e.as==="card"?"card":"row"}}function be(e,n=1,t=""){if(!Array.isArray(e)||n>ve)return[];let r={};return e.flatMap(o=>{if(!o||typeof o!="object"||Array.isArray(o))return[];let a=o,d=p=>typeof p=="string"?R(()=>ae(p)):null,l=p=>typeof p=="string"?R(()=>T(p)):null,i=Pe(a.tone),s=typeof a.label=="string"?a.label:void 0,f=p=>Object.hasOwn(a,p),y=typeof a.currency=="string"&&/^[A-Z]{3}$/.test(a.currency)?a.currency:void 0,u=f("list")?"list":f("headline")?"headline":typeof a.figure=="string"?"number":Ne.find(f);if(!u)return[];let m=r[u]=(r[u]??0)+1,c=a.key,k=typeof c=="string"&&c?c:`${t}${u}.${m}`;return[{...(()=>{switch(u){case"list":return Fe(a);case"number":{let p=se.includes(a.as)?a.as:void 0,U=le.includes(a.emphasis)?a.emphasis:void 0;return{t:u,value:l(a.figure),...p?{as:p}:{},...y?{currency:y}:{},...s?{label:d(s)}:{},...U?{emphasis:U}:{}}}case"headline":case"title":return{t:u,parts:d(a[u])};case"text":case"badge":return{t:u,parts:d(a[u]),...i?{tone:i}:{}};case"field":{let p=de.includes(a.as)?a.as:void 0;return{t:u,field:String(a.field),...p?{as:p}:{},...y?{currency:y}:{},...s?{label:s}:{}}}case"image":return{t:u,field:String(a.image),as:a.as==="gallery"?"gallery":"thumb",...s?{label:s}:{}};case"progress":{let p=a.progress??{};return{t:u,value:l(p.value),max:l(p.max),...s?{label:d(s)}:{}}}case"group":return{t:u,blocks:be(a.group,n+1,`${k}.`),direction:a.direction==="row"?"row":"column"};case"when":return{t:u,when:l(a.when),show:be(a.show,n+1,`${k}.`)};default:return{t:u}}})(),key:k}]})}var Ne=["title","text","badge","field","image","progress","group","when","divider","figure"],g="\u2014",Me=500;function w(e,n){if(!e)return{ok:!1,problem:"an expression that does not parse"};try{return{ok:!0,value:E(e,{graph:n.graph??re,subject:n.node,kinds:n.kinds,today:n.today,budget:n.budget??Me})}}catch(t){return{ok:!1,problem:t instanceof Error?t.message:String(t)}}}var Ce=(e,n,t)=>!e.format&&e.expr?.t==="ident"&&typeof t=="string"&&n.fields[e.expr.name]?.format==="markdown";function S(e,n,t){if(!e)return{text:g,problem:"a template that does not parse"};let r,o;return{text:e.map(d=>{if(d.text!==void 0)return d.text;let l=w(d.expr??null,n);if(!l.ok)return r??=`{${d.source??""}}: ${l.problem}`,g;if(Ce(d,n,l.value))return n.glance?ye(l.value,{markdown:!0}):t&&e.length===1?(o=!0,l.value):pe(l.value);let i=!d.format&&d.expr?.t==="ident"&&typeof l.value=="number"?Te(n,d.expr.name):void 0;return te(d,i?M(l.value,i):b(l.value,d.format,n.today,d.formatArgs,n.money,B(n.schema)))}).join(""),...r?{problem:r}:{},...o?{markdown:o}:{}}}var Ve=" \xB7 ";function Le(e,n){if(!e||!n.node)return;let t=[[]];for(let d of e){if(d.text===void 0){t[t.length-1].push(d);continue}d.text.split(Ve).forEach((i,s)=>{s>0&&t.push([]),i!==""&&t[t.length-1].push({text:i})})}if(t.length<2)return;let r=d=>{let[l]=d;if(!(d.length!==1||!l||l.format||l.expr?.t!=="ident"))return n.fields[l.expr.name]?.type==="enum"?l.expr.name:void 0},o=0,a=t.flatMap(d=>{let l=r(d);if(l){let s=Object.hasOwn(n.node,l)?n.node[l]:void 0;return s==null||s===""?[]:(o++,[{text:x(n.definition,l,s),field:l}])}let i=S(d,n).text.trim();return i===""||i===g?[]:[{text:i}]});return o>0?a:void 0}function we(e,n){if(e===void 0)return;if(typeof e=="string")return e;let t=w(e.expr,n);return t.ok&&Oe(t.value)?t.value:"neutral"}function _e(e){if(typeof e=="string")try{let n=new URL(e);return n.protocol==="http:"||n.protocol==="https:"?n.href:void 0}catch{return}}var je=(e,n)=>{let t=e.fields[n]?.type;return t==="phone"||t==="place"||t==="duration"?t:me(e.definition,n)},Te=(e,n)=>Y(e.definition?.fields?.shape?.[n]);function Ie(e,n,t,r,o){if(n==null||n==="")return g;if(typeof n=="boolean")return n?"yes":"no";if(r)return b(n,r,t.today,[],o?{...t.money,currency:o}:t.money);let a=t.fields[e];if(t.definition?.display?.format?.[e])return x(t.definition,e,n);let d=ce(je(t,e),n,t.money?.locale);if(d!==void 0)return d;if(a?.type==="date")return b(n,"date",t.today,[],t.money);if(a?.type==="datetime"&&typeof n=="string")return H(n,t.money?.locale,t.money?.timeZone);if(a?.type==="enum"&&typeof n=="string")return x(t.definition,e,n);let l=typeof n=="number"?Te(t,e):void 0;if(l)return M(n,l);if(typeof n=="number")return v(n,t.money?.locale,{});let i=O(n);return i[0]?i.map(_).join(", "):Array.isArray(n)?n.map(s=>String(s)).join(", "):typeof n=="object"?g:String(n)}function De(e,n,t,r,o){return typeof e!="number"?String(e):n==="money"?q(e,t?{...o,currency:t}:o):n==="percent"?b(e,n,r,[],o):v(e,o?.locale)}var h=(e,n)=>n?{...e,problem:n}:e;function Se(e){return e.firstHeading===void 0?e:{...e,firstHeading:void 0}}function $e(e,n,t){switch(e.t){case"title":{let r=S(e.parts,n);return h({t:"title",text:r.text},r.problem)}case"text":{let r=S(e.parts,n,!0),o=we(e.tone,n),a=n.glance&&!r.problem?Le(e.parts,n):void 0;return h({t:"text",text:r.text,...o?{tone:o}:{},...r.markdown?{markdown:r.markdown}:{},...a?{runs:a}:{}},r.problem)}case"badge":{let r=S(e.parts,n);return h({t:"badge",text:r.text,tone:we(e.tone,n)??"neutral"},r.problem)}case"field":{let r=e.label??F(n.definition,e.field);if(!n.node)return{t:"field",field:e.field,label:r,text:g,problem:`"${e.field}" names a field, and these blocks are about no one record`};let o=e.as===void 0?n.kinds.get(n.node.kind)?.linked?.get(e.field):void 0;if(o){let y=z(Object.hasOwn(n.node,e.field)?n.node[e.field]:void 0,o);return{t:"field",field:e.field,label:r,text:y.length>0?"linked record":g,...y.length>0?{linked:{relation:o,refs:y}}:{}}}let a=n.kinds.get(n.node.kind)?.computed?.has(e.field),d,l;if(a){let y=w({t:"ident",name:e.field,at:0},n);y.ok?d=y.value!==null&&typeof y.value=="object"?b(y.value,void 0,n.today,[],n.money,B(n.schema)):y.value:l=y.problem}else d=Object.hasOwn(n.node,e.field)?n.node[e.field]:void 0;let i=e.as!==void 0?void 0:n.fields[e.field]?.type==="url"?_e(d):ge(je(n,e.field),d),s=R(()=>Ie(e.field,d,n,e.as,e.currency))??g,f=n.fields[e.field]?.type==="app-link"&&e.as===void 0&&typeof d=="string"?d:void 0;return h({t:"field",field:e.field,label:r,text:s,...i?{href:i}:{},...f?{app:f}:{}},l)}case"image":{let r=O(n.node&&Object.hasOwn(n.node,e.field)?n.node[e.field]:null),o=e.as==="gallery"?r:r.filter(a=>G(a)||A(a)).slice(0,1);return{t:"image",field:e.field,label:e.label??F(n.definition,e.field),as:e.as,files:o,text:o.map(_).join(", ")||g}}case"progress":{let r=w(e.value,n),o=w(e.max,n),a=e.label?S(e.label,n):{text:"Progress"},d=a.text,l=r.ok?o.ok?a.problem:o.problem:r.problem;return r.ok&&o.ok&&typeof r.value=="number"&&typeof o.value=="number"&&Number.isFinite(r.value)&&Number.isFinite(o.value)&&o.value>0?h({t:"progress",label:d,value:r.value,max:o.value,text:`${b(r.value,void 0,n.today)} of ${b(o.value,void 0,n.today)}`},l):h({t:"progress",label:d,text:g},l)}case"group":return{t:"group",direction:e.direction,blocks:ke(e.blocks,Se(n))};case"when":{let r=w(e.when,n),o=r.ok&&r.value===!0;return h({t:"when",shown:o,blocks:o?ke(e.show,Se(n)):[]},r.ok?void 0:r.problem)}case"divider":return{t:"divider"};case"figure":return{t:"figure"};case"headline":{let r=S(e.parts,n),o=Math.min(6,Math.max(1,(t?n.firstHeading:void 0)??n.heading??3));return h({t:"headline",level:o,text:e.parts?oe(e.parts,r.text):r.text},r.problem)}case"number":{let r=w(e.value,n),o=!r.ok||r.value===null||typeof r.value=="object"?g:De(r.value,e.as,e.currency,n.today,n.money),a=e.label?S(e.label,n):void 0;return h({t:"number",text:o,...a?{label:a.text}:{},...e.emphasis?{emphasis:e.emphasis}:{}},r.ok?a?.problem:r.problem)}case"list":return We(e,n)}}function ke(e,n){let t=e.findIndex(r=>r.t==="headline");return e.map((r,o)=>({...$e(r,n,o===t),key:r.key}))}function Re(e,n){let t=n.trim().toLowerCase();return e.some(r=>{switch(r.t){case"title":case"headline":return r.text.trim()!=="";case"text":case"badge":return t!==""&&r.text.toLowerCase().includes(t);case"group":return Re(r.blocks,n);case"when":return r.shown&&Re(r.blocks,n);default:return!1}})}var Ue=new Set(["every","some","sum","min","max","sort"]);function An(e,n){let t=new Set,r=new Set,o=i=>{if(i)switch(i.t){case"ident":t.add(i.name);return;case"list":i.items.forEach(o);return;case"member":return o(i.object);case"unary":return o(i.operand);case"binary":return o(i.left),o(i.right);case"where":return o(i.set);case"call":i.args.forEach((s,f)=>{f===1&&Ue.has(i.fn)||o(s)});return;default:return}},a=i=>{for(let s of i??[])o(s.expr)},d=(i,s)=>{i.forEach((f,y)=>{let u=s[y];if(u)switch(f.t){case"field":case"image":t.add(f.field);return;case"title":case"text":case"badge":case"headline":a(f.parts);return;case"number":o(f.value),a(f.label);return;case"progress":o(f.value),o(f.max);return;case"group":u.t==="group"&&d(f.blocks,u.blocks);return;case"when":u.t==="when"&&u.shown&&d(f.show,u.blocks);return;case"list":if(u.t==="list")for(let m of u.members)r.add(m.id);return;default:return}})};d(e,n);let l=n[0];return{fields:t,records:r,...e[0]?.t==="title"&&l?.t==="title"?{title:l.text}:{}}}function We(e,n){let t=Math.min(6,(n.heading??3)+1),r=w(e.source,n);if(!r.ok)return{t:"list",as:e.as,failed:!0,members:[],headingLevel:t,more:0,problem:r.problem};let o=r.value,a=o instanceof j?o.nodes:o!==null&&typeof o=="object"&&!Array.isArray(o)?[o]:[];e.choiceOrder&&n.schema&&(a=He(a,e.choiceOrder,n.schema));let d=a.length,l=a.slice(0,e.limit??C),i=l.slice(0,V),s=l.slice(V),f=(e.limit===void 0?d:l.length)-i.length,y=c=>e.group&&n.schema&&c.length>0?Ke(c,e.group,n.schema,n.graph):void 0,u=y(i),m=s.length>0?y(l):void 0;return{t:"list",as:e.as,failed:!1,members:i,...s.length>0?{rest:s}:{},...u?{groups:u}:{},...m?{everyGroup:m}:{},headingLevel:t,...i.length===0&&e.empty?{empty:e.empty}:{},more:f,total:d}}function I(e,n,t){let r=e.tryDefinition(n)?.fields?.shape,o=r&&Object.hasOwn(r,t)?L(r[t]):void 0;return o?.type==="enum"?o.options??[]:[]}var D=(e,n)=>Object.hasOwn(e,n)?e[n]:void 0;function He(e,n,t){let r=o=>{let a=I(t,o.kind,n).indexOf(String(D(o,n)));return a<0?Number.MAX_SAFE_INTEGER:a};return e.map((o,a)=>({node:o,i:a,rank:r(o)})).sort((o,a)=>o.rank-a.rank||o.i-a.i).map(o=>o.node)}function Ke(e,n,t,r){let o=e.some(i=>I(t,i.kind,n.by).length>0)?void 0:ue(n.by);if(o&&r)return Je(e,o,n.headings,t,r);let a=[];for(let i of e)for(let s of I(t,i.kind,n.by))a.includes(s)||a.push(s);let d=[];for(let i of a){let s=e.filter(y=>D(y,n.by)===i);if(s.length===0)continue;let f=t.tryDefinition(s[0].kind);d.push({value:i,heading:n.headings[i]??K(x(f,n.by,i)),members:s})}let l=e.filter(i=>!a.includes(String(D(i,n.by))));return l.length>0&&d.push({value:null,members:l}),d}function Je(e,n,t,r,o){let a=u=>n.way??(Object.hasOwn(r.tryDefinition(u.kind)?.edges??{},n.edge)?"out":"in"),d=new Map,l=[],i=B(r),s;for(let u of e){let m=a(u)==="out"?o.out(u.id,n.edge):o.in(u.id,n.edge);m.length===0&&l.push(u);for(let c of m){s??=c.kind;let k=d.get(c.id)??{node:c,members:[]};k.members.push(u),d.set(c.id,k)}}let f=[...d.values()].map(({node:u,members:m})=>({value:u.id,heading:t[u.id]??i(u),members:m})).sort((u,m)=>u.heading.localeCompare(m.heading,void 0,{numeric:!0}));!s&&e[0]&&a(e[0])==="out"&&(s=(r.tryDefinition(e[0].kind)?.edges??{})[n.edge]?.to?.[0]);let y=s&&s!=="*"?X(r.tryDefinition(s),s):void 0;return l.length>0&&f.push({value:null,...y?{heading:`No ${y}`}:{},members:l}),f}function Ae(e){return e.t==="list"||e.t==="headline"||e.t==="number"||e.t==="image"&&e.as==="gallery"?!0:e.t==="group"?e.blocks.some(Ae):e.t==="when"?e.show.some(Ae):!1}function xe(e,n){let t=e.tryDefinition(n)?.fields?.shape??{},r={};for(let[o,a]of Object.entries(t)){let d=L(a);d&&(r[o]=d)}return r}var Ge=new WeakMap;function $(e){let n=Ge.get(e);return n||Ge.set(e,n=fe(e)),n}function Xe(e,n,t,r={}){let o=$(e),a={},d={},l=i=>{if(i instanceof j)return i.nodes.map(s=>l(s));if(Array.isArray(i))return i.map(s=>l(s));if(i!==null&&typeof i=="object"){let s=i;return{id:s.id,kind:s.kind,label:J(e.tryDefinition(s.kind),s)}}return i};for(let[i,s]of o.get(t?t.kind:ee)?.computed??[])try{let f=[],y=E(s,{graph:n,subject:t,kinds:o,...r.today?{today:r.today}:{},...r.budget?{budget:r.budget}:{},...r.linked?{linked:r.linked}:{},onUnread:u=>f.push(u)});f.length>0&&(y===null||y instanceof j&&y.nodes.length===0)?d[i]=Q(f[0]):a[i]=l(y)}catch(f){if(!(f instanceof ne))throw f;d[i]=f.sentence}return{values:a,refused:d}}function Gn(e,n,t){let{values:r}=Xe(e,n,t);if(Object.keys(r).length===0)return t;let o=a=>Array.isArray(a)?a.map(o):a!==null&&typeof a=="object"?a.label:a;return{...t,...Object.fromEntries(Object.entries(r).map(([a,d])=>[a,o(d)]))}}var Ze=500,ze=2e4,Ee=new WeakMap;function Ye(e,n){let t=Ee.get(e);t||Ee.set(e,t=new Map);let r=t.get(n);return r||t.set(n,r=xe(e,n)),r}function Fn(e,n,t,r={}){if(n&&typeof e.seenBy!="function")throw new TypeError("blockContextFor: a seat is read from a store (its `seenBy`); a bare { graph, schema } is read as it is handed, with no principal");let o=n?e.seenBy(n):e,a=n&&t?o.graph.getNode(t.id)??null:t,d=o.schema,l=a&&d.tryDefinition(a.kind),i=!a||(r.slot??"page")==="page",{money:s,firstHeading:f}=r;return{node:a,graph:o.graph,schema:d,kinds:$(d),fields:a?Ye(d,a.kind):{},definition:l||void 0,today:r.today??o.today?.()??W(s?.timeZone),money:s,heading:r.heading??(i?2:3),firstHeading:f,budget:r.budget??(i?ze:Ze),...i?{}:{glance:!0}}}export{he as a,nn as b,Be as c,rn as d,be as e,ke as f,Re as g,An as h,Ae as i,Xe as j,Gn as k,Fn as l};
@@ -1 +0,0 @@
1
- import{a,b}from"./chunk.DAUC2DFY.js";import"./chunk.GTPC6JOW.js";import"./chunk.NQZ73QV7.js";import"./chunk.O45VO36H.js";import"./chunk.UT6642FC.js";import"./chunk.SUPWMV2F.js";import"./chunk.TPG6IY4M.js";import"./chunk.NFDLCUCC.js";import"./chunk.X7JMJSLU.js";import"./chunk.PPRSGM64.js";import"./chunk.5Y3Q7ONN.js";import"./chunk.KTFUVR4V.js";import"./chunk.N4M54YK6.js";import"./chunk.KVJFY7N5.js";import"./chunk.DPHTUTOS.js";import"./chunk.4TJOS4C7.js";import"./chunk.2AZTW66C.js";import"./chunk.AJZBJBMO.js";export{b as actOnSeveral,a as actsForSeveral};
@@ -1,12 +0,0 @@
1
- import{a as D,b as L,c as C,d as M,e as j,f as S,h as T}from"./chunk.BRDAO2OF.js";import"./chunk.AJZBJBMO.js";var $=0,W=1,K=2,z=3,I=1,X=2,_=3,Y=1,J=3,q=8,P="~",R=o=>typeof o=="object"&&o!==null&&!Array.isArray(o),F=new Set(["input","select","textarea","option"]),Q=new Set(["value","checked","selected"]);function H(o,t){let l=o.ownerDocument??o,v=t.maxNodes??5e3,g=[],m=new Map,b=new WeakMap,k={dom:o,name:"div",namespace:"html",children:[],id:P};m.set(P,k);let x=0,A=!1,O=new Map,n=e=>{g.push(e),g.length>200&&g.shift(),t.onRefused?.(e)},i=()=>({dom:l.createComment(""),children:[],refused:!0}),p=(e,d)=>{if(e.namespace==="html"&&e.name&&F.has(e.name))return e.dom;if(d?.namespace==="html"&&d.name==="textarea")return d.dom},y=(e,d,u)=>{let s=e.dom;if(u!=null&&typeof u!="string")return n({reason:"value",element:e.name,name:d});let r=T(e.namespace,e.name,d,u??null,t);if("refused"in r){let h=T(e.namespace,e.name,d,null,t);return"refused"in h||s.removeAttribute(h.name),n(r.refused)}for(let h of r.dropped??[])n(h);let a=e.namespace==="html"&&Q.has(r.name)&&F.has(e.name),c=s,f=a?r.name==="value"?c.value:r.name==="checked"?c.checked:c.selected:void 0;r.value===null?s.removeAttribute(r.name):s.setAttribute(r.name,r.value),t.onAttribute?.(s,r.name),a&&(r.name==="value"&&"value"in c?(c.value=r.value??"",f!==c.value&&t.onFieldSet?.(s)):r.name==="checked"&&"checked"in c?(c.checked=r.value!==null,f!==c.checked&&t.onFieldSet?.(s)):r.name==="selected"&&"selected"in c&&(c.selected=r.value!==null,f!==c.selected&&t.onFieldSet?.(s.parentElement?.closest("select")??s)))},w=e=>{if(!e.refused){x-=1,e.id!==void 0&&m.delete(e.id);for(let d of e.children)w(d)}},E=(e,d)=>{if(!R(e)||typeof e.id!="string"||m.has(e.id))return n({reason:"record"}),i();if(x>=v)return n({reason:"budget"}),A||(A=!0,t.onOverBudget?.()),i();let u=e.id;if(e.type===q)return i();if(e.type===J){if(S(d.namespace,d.name))return n({reason:"child",element:d.name}),i();let f=l.createTextNode(String(e.data??"").slice(0,D)),h={dom:f,children:[],text:!0,id:u,parent:d};return m.set(u,h),b.set(f,u),x+=1,h}if(e.type!==Y)return n({reason:"record"}),i();let s=String(e.element);if(S(d.namespace,d.name))return n({reason:"child",element:s}),i();let r=j(s,d.namespace);if("refused"in r)return n(r.refused),i();let a=l.createElementNS(r.namespace==="svg"?C:L,r.name);r.as&&a.setAttribute("data-graview-as",r.as),r.namespace==="html"&&r.name==="img"&&a.setAttribute("referrerpolicy","no-referrer"),r.namespace==="html"&&r.name==="a"&&(a.setAttribute("target","_blank"),a.setAttribute("rel","noopener noreferrer"),a.setAttribute("referrerpolicy","no-referrer"));let c={dom:a,name:r.name,namespace:r.namespace,children:[],id:u,parent:d};if(m.set(u,c),b.set(a,u),x+=1,R(e.attributes))for(let[f,h]of Object.entries(e.attributes))y(c,f,h);if(t.decorate?.(a,r.name,r.namespace),R(e.properties))for(let f of Object.keys(e.properties))n({reason:"attribute",element:r.name,name:f});if(R(e.eventListeners))for(let f of Object.keys(e.eventListeners))e.eventListeners[f]!=null&&n({reason:"attribute",element:r.name,name:`on${f}`});if(Array.isArray(e.children))for(let f of e.children){let h=E(f,c);c.children.push(h),a.appendChild(h.dom)}return c},N=e=>{if(!Array.isArray(e))return n({reason:"record"});let[d,u]=e,s=typeof u=="string"?m.get(u):void 0;if(!s)return n({reason:"record"});switch(d){case $:{if(s.text)return n({reason:"record"});let r=Number(e[3]),a=Number.isInteger(r)&&r>=0&&r<=s.children.length?r:s.children.length,c=e[2],f=R(c)&&typeof c.id=="string"?O.get(c.id):void 0,h;f&&f.parent?.namespace===s.namespace&&!S(s.namespace,s.name)?(O.delete(c.id),f.parent=s,h=f):h=E(c,s),s.dom.insertBefore(h.dom,s.children[a]?.dom??null),s.children.splice(a,0,h),s.namespace==="html"&&s.name==="textarea"&&t.onFieldSet?.(s.dom);return}case W:{let r=Number(e[2]),a=s.children[r];if(!a)return n({reason:"record"});s.children.splice(r,1),a.dom.parentNode?.removeChild(a.dom),a.id!==void 0&&!a.refused?O.set(a.id,a):w(a);return}case K:{if(!s.text)return n({reason:"record"});s.dom.data=String(e[2]??"").slice(0,D);let r=p(s,s.parent);r&&t.onFieldSet?.(r);return}case z:{if(s===k||s.text)return n({reason:"record"});let r=String(e[2]),a=e[4]??I;return a===X?y(s,r,e[3]):n(a===I||a===_?{reason:"attribute",element:s.name,name:a===_?`on${r}`:r}:{reason:"record"})}default:return n({reason:"record"})}};return{apply(e,d){if(!Array.isArray(e))return n({reason:"record"}),!0;try{for(let u=0;u<e.length;u+=1){if(d&&u%32===0&&d())return!1;N(e[u])}return!0}finally{for(let u of O.values())w(u);O.clear()}},get refused(){return g},get size(){return x},idOf:e=>b.get(e),elementOf(e){let d=m.get(e);return d&&!d.text&&d!==k?d.dom:void 0},dispose(){for(let e of k.children)w(e);for(k.children.length=0;o.firstChild;)o.removeChild(o.firstChild)}}}var B=["https:","mailto:","tel:"];function U(o){if(!(typeof o!="string"||o.length>2e3||/[\s<>"]/.test(o.trim())||o.trim()!==o))try{let t=new URL(o);return!B.includes(t.protocol)||t.protocol==="https:"&&(t.hostname===""||t.username!==""||t.password!=="")?void 0:t.href}catch{return}}function Z(o){let t=new Set,l=v=>{if(typeof v!="string"||!/^(https|mailto|tel):/i.test(v))return;let g=U(v);g&&t.add(g)};for(let v of[...o?.node?[o.node]:[],...o?.nodes??[]])for(let[g,m]of Object.entries(v))g==="id"||g==="kind"||(Array.isArray(m)?m.forEach(l):l(m));return t}function G(o){return(o??[]).flatMap(t=>{try{let l=new URL(t);return l.protocol==="https:"&&l.hostname!==""&&l.username===""&&l.password===""?[l.origin]:[]}catch{return[]}})}function ee(o,t){let l=U(o);if(l&&(t.handed.has(l)||l.startsWith("https:")&&G(t.origins).includes(new URL(l).origin)))return l}function te(o,t){let l=o.length>120?`${o.slice(0,119)}\u2026`:o,v="";try{v=new URL(o).protocol}catch{v=""}if(!B.includes(v))return`The link "${l}" was not drawn: a view links only to an https:, mailto: or tel: address.`;let g=G(t);return`The link "${l}" was not drawn: it is no address this view was handed. A view links out only to an address a record it was shown holds (a url field), as the record holds it${g.length>0?`, or an https: address on ${g.join(", ")}`:""}; a record or a place of this app is <a data-record> or <a data-place>.`}var ne=`
2
- :host { display: block; position: relative; contain: layout paint style; isolation: isolate; overflow: clip; min-width: 0; }
3
- :host(:focus-within) { overflow-clip-margin: 4px; }
4
- [data-graview-view-root] { display: flow-root; color: var(--graview-ink, CanvasText); font-family: var(--graview-font-body, system-ui, sans-serif); line-height: 1.45; }
5
- :where([data-graview-view-root]) :where(button) { font: inherit; color: inherit; background: none; border: 0; padding: 0; margin: 0; text-align: inherit; appearance: none; cursor: pointer; }
6
- :where([data-graview-view-root]) :where(a[data-graview-link]) { color: inherit; text-decoration: none; }
7
- [data-graview-view-root] :is([data-graview-link], [data-graview-press]) { cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: rgb(128 128 128 / 0.16); }
8
- [data-graview-view-root] :focus-visible { outline: max(2px, var(--graview-focus-width, 2px)) solid var(--graview-focus-color, var(--graview-accent, Highlight)) !important; outline-offset: var(--graview-focus-offset, 2px) !important; }
9
- [data-graview-view-root] [data-graview-ring-inside]:focus-visible { outline-offset: calc(-1 * max(2px, var(--graview-focus-width, 2px))) !important; }
10
- [data-graview-view-root] .graview-sr { position: absolute !important; width: 1px !important; height: 1px !important; margin: -1px !important; padding: 0 !important; border: 0 !important; overflow: hidden !important; clip-path: inset(50%) !important; white-space: nowrap !important; }
11
- [data-graview-view-root] a[href]:not([data-graview-link])::after { content: " \u2197" !important; content: " \u2197" / " (opens in a new tab)" !important; }
12
- `,re=4,oe=new Set(["Enter"," ","Escape","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End"]),V=["click","input","change","keydown"];function ue(o,t){let l=o.ownerDocument,v=l.createElement("style");v.setAttribute("data-graview-region",""),v.textContent=ne;let g=l.createElement("style");g.setAttribute("data-graview-view-style","");let m=l.createElement("div");m.setAttribute("data-graview-view-root",""),o.append(v,g,m);let b=H(m,{origin:t.origin,...t.asset?{asset:t.asset}:{},...t.imageOrigins?{imageOrigins:t.imageOrigins}:{},...t.picture?{picture:t.picture}:{},...t.link?{link:t.link}:{},...t.onRefused?{onRefused:t.onRefused}:{},...t.maxNodes!==void 0?{maxNodes:t.maxNodes}:{},...t.onOverBudget?{onOverBudget:t.onOverBudget}:{},decorate:(n,i,p)=>{p==="html"&&i==="button"&&n.setAttribute("type","button"),p==="html"&&(i==="input"||i==="textarea"||i==="select")&&n.setAttribute("autocomplete","off"),t.decorate?.(n,i,p)},...t.onFieldSet?{onFieldSet:t.onFieldSet}:{},...t.onAttribute?{onAttribute:t.onAttribute}:{}}),k=[],x="",A=n=>{for(let i=n.composedPath()[0];i&&i!==m&&i!==o;i=i.parentNode)if(i.nodeType===1&&b.idOf(i)!==void 0)return i},O=n=>{let i=A(n);if(!i||n.type==="keydown"&&!oe.has(n.key))return;let p=t.before?.(n,i,m);if(p===!1)return;let y=i,w=i.namespaceURI==="http://www.w3.org/1999/xhtml"&&["input","select","textarea"].includes(i.localName);t.send({type:"dom-event",target:b.idOf(i),event:n.type,...w?{value:String(y.value??"")}:{},...w&&(y.type==="checkbox"||y.type==="radio")?{checked:y.checked}:{},...n.type==="keydown"?{key:n.key}:{},...p??{}});let E=n.type==="keydown"?n.key:void 0;(E==="Enter"||E===" ")&&i.hasAttribute("data-graview-press")&&n.composedPath()[0]===i&&(n.preventDefault(),t.send({type:"dom-event",target:b.idOf(i),event:"click"}))};for(let n of V)o.addEventListener(n,O);return o.addEventListener("toggle",O,!0),(typeof CSS>"u"||typeof CSS.supports!="function"||!CSS.supports("overflow-clip-margin","4px"))&&o.addEventListener("focusin",n=>{let i=n.composedPath()[0],p=o.host;if(!i||i.nodeType!==1||!m.contains(i))return;let y=p.getBoundingClientRect(),w=i.getBoundingClientRect(),E=re*(p.offsetWidth>0?y.width/p.offsetWidth:1),N=w.left-y.left<E||y.right-w.right<E||w.top-y.top<E||y.bottom-w.bottom<E;i.toggleAttribute("data-graview-ring-inside",N)}),{apply(n,i){let p=o.activeElement,y=p?b.idOf(p):void 0,w=b.apply(n,i);if(y!==void 0&&o.activeElement!==p){let E=b.elementOf(y);E?.isConnected&&typeof E.focus=="function"&&E.focus({preventScroll:!0})}return w},style(n){let i=M(n);k.length=0;for(let p of i.refused)k.push({reason:"css",name:"stylesheet",css:p}),k.length>200&&k.shift();x=i.css,g.textContent=x},renderer:b,get refused(){return[...b.refused,...k]},get css(){return x},dispose(){for(let n of V)o.removeEventListener(n,O);o.removeEventListener("toggle",O,!0),b.dispose(),o.replaceChildren()}}}export{ne as REGION_CSS,ue as createOpenDrawing,Z as handedLinks,ee as judgeLink,te as linkRefusedWords};
@@ -1 +0,0 @@
1
- import{k as a,l as o}from"./chunk.GNBN3BK7.js";import"./chunk.XTMOFRHL.js";import"./chunk.NLBIX7LH.js";import"./chunk.GACKGEUY.js";import"./chunk.2GLJH253.js";import"./chunk.GUMJEVVP.js";import"./chunk.4VW6THJF.js";import"./chunk.SAHNXAV3.js";import"./chunk.DHAK6PPX.js";import"./chunk.DUWYF7BO.js";import"./chunk.UGJSMNVO.js";import"./chunk.NR5ODXMO.js";import"./chunk.WVUJXDXZ.js";import"./chunk.TPG6IY4M.js";import"./chunk.NFDLCUCC.js";import"./chunk.X7JMJSLU.js";import"./chunk.PPRSGM64.js";import"./chunk.5Y3Q7ONN.js";import"./chunk.KTFUVR4V.js";import"./chunk.GZHZLJBF.js";import"./chunk.RQBEQYB2.js";import"./chunk.OJGHDWI6.js";import"./chunk.6VAFNCR4.js";import"./chunk.N4M54YK6.js";import"./chunk.KVJFY7N5.js";import"./chunk.DPHTUTOS.js";import"./chunk.2UIUMG23.js";import{qa as n}from"./chunk.KA44WNB4.js";import"./chunk.SDO3U72B.js";import"./chunk.4TJOS4C7.js";import"./chunk.2AZTW66C.js";import"./chunk.AJZBJBMO.js";var w=new WeakMap;function s(e,i){let t=w.get(e);t||w.set(e,t=new Map);let r=t.get(i);return r||t.set(i,r=a(o(e,n(e)),e,i)),r}export{s as frameworkViews};