graview 0.1.68 → 0.1.69

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 (184) hide show
  1. package/dist/preview/{chunk.ODYJEDIW.js → chunk.26RYER7Y.js} +1 -1
  2. package/dist/preview/{chunk.TRNJKHIA.js → chunk.2AL26ZPJ.js} +1 -1
  3. package/dist/preview/chunk.2WFOKJB4.js +1 -0
  4. package/dist/preview/chunk.3D37E2G5.js +1 -0
  5. package/dist/preview/chunk.3PT3BU6K.js +1 -0
  6. package/dist/preview/{chunk.7ZTGB4O7.js → chunk.3TKIZGC7.js} +1 -1
  7. package/dist/preview/{chunk.AQ2PI6MR.js → chunk.3VNOTHA5.js} +1 -1
  8. package/dist/preview/{chunk.QWLK3GKG.js → chunk.3XTIYX6M.js} +1 -1
  9. package/dist/preview/{chunk.GF3ZCX46.js → chunk.447RWLS7.js} +2 -2
  10. package/dist/preview/{chunk.E423JCOS.js → chunk.47VEV4BX.js} +1 -1
  11. package/dist/preview/{chunk.NRCWMYLH.js → chunk.4FJ4OPSJ.js} +1 -1
  12. package/dist/preview/{chunk.XFH6GHBQ.js → chunk.4O7WYLCK.js} +1 -1
  13. package/dist/preview/{chunk.MSUZAJ2K.js → chunk.4R7H3GIL.js} +2 -2
  14. package/dist/preview/{chunk.EB7PZJEO.js → chunk.4RPKCW4J.js} +1 -1
  15. package/dist/preview/{chunk.YM6SWEUI.js → chunk.523EFGHU.js} +1 -1
  16. package/dist/preview/chunk.5DU6FA5R.js +1 -0
  17. package/dist/preview/{chunk.LFFJB6D3.js → chunk.5MOXQUZH.js} +1 -1
  18. package/dist/preview/chunk.5TWRTGP6.js +1 -0
  19. package/dist/preview/{chunk.AWV57UBJ.js → chunk.66TRDXYR.js} +1 -1
  20. package/dist/preview/{chunk.AYZL3LCR.js → chunk.6BNSDPZE.js} +3 -3
  21. package/dist/preview/chunk.6BR2SUAE.js +1 -0
  22. package/dist/preview/{chunk.32JE2WS7.js → chunk.6TDVNWFU.js} +1 -1
  23. package/dist/preview/{chunk.UAMPR4MD.js → chunk.6XBQDXT6.js} +1 -1
  24. package/dist/preview/{chunk.TVWK3SGD.js → chunk.6ZFYFT5A.js} +1 -1
  25. package/dist/preview/{chunk.N5Z34V7U.js → chunk.7L3I776Z.js} +1 -1
  26. package/dist/preview/chunk.7OLKVOS6.js +1 -0
  27. package/dist/preview/{chunk.MKL4THIV.js → chunk.7T2P42VW.js} +1 -1
  28. package/dist/preview/{chunk.QM54TGU6.js → chunk.AG7WJYM5.js} +2 -2
  29. package/dist/preview/{chunk.ECNGVD25.js → chunk.AHYMIVBX.js} +1 -1
  30. package/dist/preview/chunk.AMAOZVEO.js +1 -0
  31. package/dist/preview/chunk.AMV2ILR6.js +1 -0
  32. package/dist/preview/{chunk.RQG672MJ.js → chunk.AUNQNTKY.js} +1 -1
  33. package/dist/preview/{chunk.HXTKBISQ.js → chunk.AZRICZKT.js} +1 -1
  34. package/dist/preview/{chunk.L7XKYGV7.js → chunk.B422DSYN.js} +1 -1
  35. package/dist/preview/{chunk.XDZDNZ7B.js → chunk.B5EFNTDA.js} +1 -1
  36. package/dist/preview/{chunk.F5GNNVSQ.js → chunk.BO32A3W5.js} +1 -1
  37. package/dist/preview/{chunk.ZLEBOR5T.js → chunk.BQORHDAH.js} +1 -1
  38. package/dist/preview/{chunk.4GVKKBQL.js → chunk.BSQI3KM2.js} +1 -1
  39. package/dist/preview/{chunk.BPNW5KCP.js → chunk.C6CT6F4C.js} +1 -1
  40. package/dist/preview/{chunk.JV432T4Q.js → chunk.CA2SYEYE.js} +1 -1
  41. package/dist/preview/{chunk.64LCHHZB.js → chunk.CCCONK73.js} +1 -1
  42. package/dist/preview/{chunk.GONZB3J3.js → chunk.CDSHUWSK.js} +1 -1
  43. package/dist/preview/{chunk.NFTPJAMJ.js → chunk.CKSRW3LA.js} +1 -1
  44. package/dist/preview/{chunk.LOKGUALC.js → chunk.CLIC2QBA.js} +1 -1
  45. package/dist/preview/{chunk.PLIV3IQK.js → chunk.CLZYNFFH.js} +1 -1
  46. package/dist/preview/{chunk.GKTQ5CZA.js → chunk.CSVDBDRZ.js} +2 -2
  47. package/dist/preview/{chunk.GJTEV6CK.js → chunk.CUEIGKFG.js} +1 -1
  48. package/dist/preview/{chunk.IPGLITWA.js → chunk.CYEPHT7V.js} +1 -1
  49. package/dist/preview/{chunk.BQAFFEOA.js → chunk.D3SWJ7OS.js} +1 -1
  50. package/dist/preview/{chunk.ACNOP2IU.js → chunk.D5JZQZ74.js} +1 -1
  51. package/dist/preview/{chunk.6AANHELP.js → chunk.DHPXRDT5.js} +5 -5
  52. package/dist/preview/{chunk.R3GE37OI.js → chunk.DKUEZPGR.js} +1 -1
  53. package/dist/preview/{chunk.2TUEBU7X.js → chunk.DO3FQM6R.js} +1 -1
  54. package/dist/preview/{chunk.G2BDEWJC.js → chunk.DRAPVGQZ.js} +1 -1
  55. package/dist/preview/{chunk.6WB2TYK7.js → chunk.DU76ASS4.js} +1 -1
  56. package/dist/preview/{chunk.AENP662H.js → chunk.EEUCRZA3.js} +1 -1
  57. package/dist/preview/{chunk.WC5WE34A.js → chunk.EK3JXEZL.js} +1 -1
  58. package/dist/preview/{chunk.2BMZPALF.js → chunk.EL7XXGQY.js} +1 -1
  59. package/dist/preview/{chunk.2KCDLCB2.js → chunk.EP7YT7LT.js} +1 -1
  60. package/dist/preview/{chunk.SS6KL5NT.js → chunk.EQZPEOIW.js} +1 -1
  61. package/dist/preview/{chunk.VW632VNJ.js → chunk.F4CDJBDS.js} +1 -1
  62. package/dist/preview/{chunk.O5FTWXA2.js → chunk.FE3SINPK.js} +1 -1
  63. package/dist/preview/{chunk.JULD4XFB.js → chunk.FIY4RUK5.js} +1 -1
  64. package/dist/preview/{chunk.3VEZ5MOC.js → chunk.FWXW4T4I.js} +1 -1
  65. package/dist/preview/{chunk.FSW535EA.js → chunk.G43YUGNW.js} +1 -1
  66. package/dist/preview/{chunk.QYPU444Y.js → chunk.GF5CZPZ7.js} +1 -1
  67. package/dist/preview/{chunk.4TT3ZHSJ.js → chunk.GPBHUIZQ.js} +1 -1
  68. package/dist/preview/{chunk.YL2RBZFE.js → chunk.GTF6EMVE.js} +1 -1
  69. package/dist/preview/chunk.GVFGS2HY.js +1 -0
  70. package/dist/preview/{chunk.EGSOHTZZ.js → chunk.HCX6KPRF.js} +1 -1
  71. package/dist/preview/{chunk.4YAO3A5Q.js → chunk.HGH27XZG.js} +3 -3
  72. package/dist/preview/{chunk.7WPVLEX2.js → chunk.HMJXB6KC.js} +2 -2
  73. package/dist/preview/chunk.HTEQCRVP.js +1 -0
  74. package/dist/preview/{chunk.VTDOWXCP.js → chunk.HU3KEWFO.js} +1 -1
  75. package/dist/preview/{chunk.DZ6UDZOB.js → chunk.I4H2GS4O.js} +2 -2
  76. package/dist/preview/{chunk.UD7VLXPM.js → chunk.I7KN732Z.js} +1 -1
  77. package/dist/preview/{chunk.YBQ5GVAX.js → chunk.I7OFRF6N.js} +2 -2
  78. package/dist/preview/{chunk.ZKXIZBCN.js → chunk.IAVIYJTL.js} +1 -1
  79. package/dist/preview/{chunk.CNN32262.js → chunk.IO5VFTXC.js} +1 -1
  80. package/dist/preview/{chunk.PIMAG4WT.js → chunk.IPKESOIU.js} +2 -2
  81. package/dist/preview/{chunk.42KHFGN6.js → chunk.IRNEWNUB.js} +1 -1
  82. package/dist/preview/{chunk.XRE7SHLD.js → chunk.ISZFRLNJ.js} +1 -1
  83. package/dist/preview/{chunk.GRTBEA7O.js → chunk.IY3DV52G.js} +1 -1
  84. package/dist/preview/{chunk.VES4XMZX.js → chunk.IYHY4VEC.js} +1 -1
  85. package/dist/preview/{chunk.HWFJQ42Y.js → chunk.J2N7EKMX.js} +1 -1
  86. package/dist/preview/{chunk.IT5DVKXY.js → chunk.J7O23NKZ.js} +2 -2
  87. package/dist/preview/chunk.JDUA5PH2.js +1 -0
  88. package/dist/preview/{chunk.DCLF4WWZ.js → chunk.JHAMSDAI.js} +1 -1
  89. package/dist/preview/{chunk.IKKKHHRN.js → chunk.JN3WZGJY.js} +1 -1
  90. package/dist/preview/{chunk.H4VNIAHN.js → chunk.JPAE6K4E.js} +1 -1
  91. package/dist/preview/{chunk.DGDW54KE.js → chunk.JQEXH23N.js} +1 -1
  92. package/dist/preview/{chunk.MPWLDQOG.js → chunk.KEGL6NBD.js} +1 -1
  93. package/dist/preview/{chunk.EGVM24ND.js → chunk.KHKCTVHD.js} +1 -1
  94. package/dist/preview/{chunk.VV5JAM5W.js → chunk.KKFKSJUN.js} +1 -1
  95. package/dist/preview/{chunk.Q6H5HESF.js → chunk.KLEKC4ZX.js} +1 -1
  96. package/dist/preview/chunk.KVQYOFDV.js +1 -0
  97. package/dist/preview/{chunk.ZLNUZ6LR.js → chunk.KW7PHJYX.js} +1 -1
  98. package/dist/preview/{chunk.PPCDPYYU.js → chunk.LAVLPYSC.js} +1 -1
  99. package/dist/preview/{chunk.FZELUSK5.js → chunk.LGNGFG5V.js} +1 -1
  100. package/dist/preview/{chunk.SADR3MQI.js → chunk.LKM2R5UF.js} +1 -1
  101. package/dist/preview/{chunk.42C3FIKK.js → chunk.LMZ2WMGH.js} +1 -1
  102. package/dist/preview/{chunk.KAM73WVF.js → chunk.MATUPDZ3.js} +1 -1
  103. package/dist/preview/{chunk.Z2X7BFCB.js → chunk.MD3N26BC.js} +2 -2
  104. package/dist/preview/{chunk.TFJA4QV4.js → chunk.MH3AQO2R.js} +1 -1
  105. package/dist/preview/chunk.MHHNO3O2.js +1 -0
  106. package/dist/preview/{chunk.DMZRFXH7.js → chunk.MKN7ADJB.js} +1 -1
  107. package/dist/preview/{chunk.ND3DEDWB.js → chunk.ML5EHDZG.js} +1 -1
  108. package/dist/preview/{chunk.Q4VFLLUT.js → chunk.MUWI54IP.js} +1 -1
  109. package/dist/preview/{chunk.PZQ5P6WK.js → chunk.MV27WMNW.js} +1 -1
  110. package/dist/preview/{chunk.6DMCEBSO.js → chunk.N7A3T5QU.js} +1 -1
  111. package/dist/preview/{chunk.H3IGXHZR.js → chunk.NLZHNPDU.js} +2 -2
  112. package/dist/preview/{chunk.4DXPPM6T.js → chunk.NRECR3NQ.js} +1 -1
  113. package/dist/preview/{chunk.LZ6MSQ5O.js → chunk.NSAGOOJW.js} +1 -1
  114. package/dist/preview/{chunk.LMTG5NPG.js → chunk.O7NYSO6F.js} +1 -1
  115. package/dist/preview/{chunk.2ME4DVBI.js → chunk.OD5QZHRC.js} +1 -1
  116. package/dist/preview/{chunk.QUETLFBJ.js → chunk.P26ATAAI.js} +1 -1
  117. package/dist/preview/{chunk.3JMQKANL.js → chunk.PJL3I2IW.js} +1 -1
  118. package/dist/preview/{chunk.6IR5LBJU.js → chunk.POKGLN4T.js} +1 -1
  119. package/dist/preview/{chunk.IXMIU4D4.js → chunk.PZ3KM3TY.js} +1 -1
  120. package/dist/preview/{chunk.MIOLBZBS.js → chunk.QEBD7SC4.js} +1 -1
  121. package/dist/preview/{chunk.DPHH5ZVL.js → chunk.QK7EUIPL.js} +1 -1
  122. package/dist/preview/{chunk.7TDML5YU.js → chunk.QNC2OKLF.js} +1 -1
  123. package/dist/preview/{chunk.QOQ26NXM.js → chunk.QRNKGPAD.js} +1 -1
  124. package/dist/preview/{chunk.QZP3ARLH.js → chunk.QVCKTDG3.js} +1 -1
  125. package/dist/preview/{chunk.2U6HB4XU.js → chunk.R7POSVUK.js} +1 -1
  126. package/dist/preview/{chunk.UFURYU4R.js → chunk.RNAL35ID.js} +1 -1
  127. package/dist/preview/{chunk.KUCBNMIY.js → chunk.ROYCJXPE.js} +1 -1
  128. package/dist/preview/chunk.RZ73YG5K.js +1 -0
  129. package/dist/preview/{chunk.JLDJZET2.js → chunk.S2NQRD6W.js} +1 -1
  130. package/dist/preview/{chunk.O32F6LGK.js → chunk.SAWASNDO.js} +1 -1
  131. package/dist/preview/{chunk.CFE3MHWZ.js → chunk.SCVKHGO3.js} +1 -1
  132. package/dist/preview/chunk.SM37MNS2.js +1 -0
  133. package/dist/preview/{chunk.DLSS56EU.js → chunk.T2BZBR7S.js} +1 -1
  134. package/dist/preview/{chunk.OQ4ZO3YY.js → chunk.T3PELB6I.js} +1 -1
  135. package/dist/preview/{chunk.TR4YFVZN.js → chunk.TAJBXG5U.js} +1 -1
  136. package/dist/preview/{chunk.3DEWQDP7.js → chunk.TLPCYKLW.js} +1 -1
  137. package/dist/preview/{chunk.7K2V5FUB.js → chunk.TQQDUJLX.js} +1 -1
  138. package/dist/preview/{chunk.CGBOPPNL.js → chunk.TQRC5VAM.js} +1 -1
  139. package/dist/preview/chunk.U563J5IM.js +1 -0
  140. package/dist/preview/{chunk.GRBWXTST.js → chunk.UAEOCWSG.js} +1 -1
  141. package/dist/preview/{chunk.Y7OGJOPA.js → chunk.UHJSZ2XZ.js} +1 -1
  142. package/dist/preview/{chunk.JGRSUTPJ.js → chunk.UPOYRCKI.js} +1 -1
  143. package/dist/preview/{chunk.I63462I3.js → chunk.VBBH5R5T.js} +1 -1
  144. package/dist/preview/chunk.VBYJBW32.js +1 -0
  145. package/dist/preview/{chunk.HH4D3JEI.js → chunk.VEQIH7HR.js} +1 -1
  146. package/dist/preview/chunk.VHLL6VC6.js +1 -0
  147. package/dist/preview/{chunk.VLXLBGMY.js → chunk.VQDL4EEP.js} +1 -1
  148. package/dist/preview/{chunk.UODTUBQ7.js → chunk.VQOYFBEV.js} +1 -1
  149. package/dist/preview/{chunk.H3W5C3XQ.js → chunk.VR553M6J.js} +1 -1
  150. package/dist/preview/{chunk.ENLIIZF2.js → chunk.VXPEXUQF.js} +1 -1
  151. package/dist/preview/{chunk.Z67LBSQO.js → chunk.W3WXI5B3.js} +1 -1
  152. package/dist/preview/{chunk.5JKUT2OM.js → chunk.W43XWQRC.js} +1 -1
  153. package/dist/preview/{chunk.BHJRT57H.js → chunk.WFJCC6G3.js} +1 -1
  154. package/dist/preview/{chunk.I34BWUB4.js → chunk.WJHLE73Y.js} +1 -1
  155. package/dist/preview/{chunk.MK5RPEB2.js → chunk.WQ7K5O2I.js} +1 -1
  156. package/dist/preview/{chunk.EP5JS7ZH.js → chunk.WV6SP6IJ.js} +1 -1
  157. package/dist/preview/{chunk.XXCHO2A5.js → chunk.YJ4PFOPC.js} +1 -1
  158. package/dist/preview/{chunk.JCETQQ7J.js → chunk.YZKHTBTC.js} +1 -1
  159. package/dist/preview/{chunk.CE3NKAF7.js → chunk.ZE5RSKXF.js} +1 -1
  160. package/dist/preview/{chunk.WV45KLXC.js → chunk.ZQYHNFRZ.js} +1 -1
  161. package/dist/preview/{chunk.TOUSIUJF.js → chunk.ZT3ZG52B.js} +1 -1
  162. package/dist/preview/{chunk.O2VXTYUJ.js → chunk.ZU3RPI34.js} +1 -1
  163. package/dist/preview/index.html +55 -55
  164. package/dist/preview/page.js +2 -2
  165. package/package.json +6 -6
  166. package/dist/preview/chunk.3WPCS6KP.js +0 -1
  167. package/dist/preview/chunk.5L4ADKTW.js +0 -1
  168. package/dist/preview/chunk.6ZENHSTQ.js +0 -1
  169. package/dist/preview/chunk.7OL6H4LF.js +0 -1
  170. package/dist/preview/chunk.ARS4HJD2.js +0 -1
  171. package/dist/preview/chunk.C2QKA6XY.js +0 -1
  172. package/dist/preview/chunk.FHQ25SWY.js +0 -1
  173. package/dist/preview/chunk.MBTEOF4R.js +0 -1
  174. package/dist/preview/chunk.N64RVSH3.js +0 -1
  175. package/dist/preview/chunk.PI4RFOBU.js +0 -1
  176. package/dist/preview/chunk.Q42R2KW4.js +0 -1
  177. package/dist/preview/chunk.R66ZVMWB.js +0 -1
  178. package/dist/preview/chunk.RYA7A4NA.js +0 -1
  179. package/dist/preview/chunk.SUG6LIOX.js +0 -1
  180. package/dist/preview/chunk.U7PAFLUM.js +0 -1
  181. package/dist/preview/chunk.WN7SAAH6.js +0 -1
  182. package/dist/preview/chunk.ZMADWPJO.js +0 -1
  183. package/dist/preview/chunk.ZO6VMEPP.js +0 -1
  184. package/dist/preview/chunk.ZUG7U7AT.js +0 -1
@@ -0,0 +1 @@
1
+ import{a,b}from"./chunk.66TRDXYR.js";import"./chunk.I7OFRF6N.js";import"./chunk.4RPKCW4J.js";import"./chunk.4R7H3GIL.js";import"./chunk.CCCONK73.js";import"./chunk.IRNEWNUB.js";import"./chunk.AUNQNTKY.js";import"./chunk.KLEKC4ZX.js";import"./chunk.PJL3I2IW.js";import"./chunk.LMZ2WMGH.js";import"./chunk.OD5QZHRC.js";import"./chunk.YJ4PFOPC.js";import"./chunk.LKM2R5UF.js";import"./chunk.HJCQ6I3S.js";import"./chunk.EL7XXGQY.js";import"./chunk.CDSHUWSK.js";import"./chunk.5MOXQUZH.js";import"./chunk.MKN7ADJB.js";import"./chunk.I4H2GS4O.js";import"./chunk.MUWI54IP.js";import"./chunk.3D37E2G5.js";import"./chunk.WFJCC6G3.js";import"./chunk.BIDL7GQD.js";import"./chunk.IO5VFTXC.js";import"./chunk.7L3I776Z.js";import"./chunk.CLIC2QBA.js";import"./chunk.WV6SP6IJ.js";import"./chunk.Q5WEOX3Q.js";import"./chunk.MATUPDZ3.js";import"./chunk.SAWASNDO.js";import"./chunk.HCX6KPRF.js";import"./chunk.WVUJXDXZ.js";import"./chunk.B422DSYN.js";import"./chunk.ZE5RSKXF.js";import"./chunk.DKUEZPGR.js";import"./chunk.EP7YT7LT.js";import"./chunk.I7KN732Z.js";import"./chunk.TLPCYKLW.js";import"./chunk.MIE4TJRW.js";import"./chunk.SCVKHGO3.js";import"./chunk.RD2FSSLV.js";import"./chunk.AZRICZKT.js";import"./chunk.MH3AQO2R.js";import"./chunk.J2N7EKMX.js";import"./chunk.P26ATAAI.js";import"./chunk.FIY4RUK5.js";import"./chunk.IY3DV52G.js";import"./chunk.NLZHNPDU.js";import"./chunk.QNC2OKLF.js";import"./chunk.FWXW4T4I.js";import"./chunk.SDO3U72B.js";import"./chunk.DHPXRDT5.js";import"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";export{b as declaredLensView,a as formatFor};
@@ -1,4 +1,4 @@
1
- import{a as k}from"./chunk.G4JJXA63.js";import{b as Q}from"./chunk.CNN32262.js";import{a as Z}from"./chunk.JGRSUTPJ.js";import{a as Y}from"./chunk.CE3NKAF7.js";import{c as V}from"./chunk.UD7VLXPM.js";import{ee as P,ge as H,he as T,ie as U,yb as z,zb as B}from"./chunk.6AANHELP.js";var x=n=>"failed"in n;function fn(n,e){let s=n.schema.kinds,t=n.policy?.sees;if(!t?.length||B(e))return{kinds:s};let o=z(e).roles??[],r=new Set(t.filter(i=>i.roles==="*"||o.some(a=>i.roles.includes(a))).flatMap(i=>i.kinds));return{kinds:s.filter(i=>r.has(i))}}function O(n,e){if(!e)return n;let s=new Set(e.kinds.filter(r=>n.tryDefinition(r)!==void 0));if(s.size===n.kinds.length)return n;let t=new Map,o=r=>{if(s.has(r)){if(!t.has(r)){let i=n.tryDefinition(r),a=Object.fromEntries(Object.entries(i?.edges??{}).flatMap(([l,d])=>{if(d.to==="*")return[[l,d]];let c=d.to.filter(u=>s.has(u));return c.length>0?[[l,{...d,to:c}]]:[]}));t.set(r,{...i,edges:a})}return t.get(r)}};return{...n,definitions:n.definitions.filter(r=>s.has(r.kind)),kinds:n.kinds.filter(r=>s.has(r)),tryDefinition:o,definition:r=>{let i=o(r);if(!i)throw new Error(`Unknown node kind "${r}"`);return i}}}var gn=n=>n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),b=n=>gn(n).replace(/[-_]+/g," ").trim();function j(n){let e=[];for(let t of n.kinds){let o=n.tryDefinition(t);if(!o)continue;let r=o.display?.labels??{},i=Object.entries(o.fields?.shape??{}).filter(([d])=>d!=="id"&&d!=="kind").map(([d,c])=>{let u=Y(c);return{name:d,type:u?.type==="enum"&&u.multiple?"list":u?.type,...u?.options?{options:u.options}:{},words:(r[d]??b(d)).toLowerCase()}}),a=Object.entries(o.edges??{}).map(([d,c])=>({name:d,from:t,to:c.to==="*"?n.kinds.filter(u=>u!==t):c.to,words:b(d)})),l=(o.plural??`${b(t)}s`).toLowerCase();e.push({kind:t,plural:l,noun:(o.noun??b(t)).toLowerCase(),fields:i,roles:o.fieldRoles??{},edges:a})}let s=new Map(e.map(t=>[t.kind,t]));return{schema:n,kinds:e,info:t=>s.get(t)}}var $=(n,e)=>e===void 0?void 0:n.fields.find(s=>s.name===e),R=n=>n?.type==="date"||n?.type==="datetime",K=n=>n?.type==="number"||n?.type==="integer"||n?.type==="duration",sn=n=>` ${n.toLowerCase().replace(/[“”"’‘]/g,"'").replace(/[^\p{L}\p{N}' -]+/gu," ").replace(/\s+/g," ").trim()} `,A=(n,e)=>n.includes(` ${e} `),L=n=>n.endsWith("ies")?`${n.slice(0,-3)}y`:n.endsWith("ses")?n.slice(0,-2):n.endsWith("s")?n.slice(0,-1):n;function yn(n,e){let s=[];for(let t of e.kinds){let o=new Set([t.plural,t.noun,`${t.noun}s`,b(t.kind),`${b(t.kind)}s`]),r=-1;for(let i of o){let a=n.indexOf(` ${i} `);a>=0&&(r<0||a<r)&&(r=a)}r>=0&&s.push({info:t,at:r})}return s.sort((t,o)=>t.at-o.at).map(t=>t.info)}function I(n,e,s){let t=e.trim().toLowerCase();if(t.length===0)return;let o=n.fields.filter(r=>!s||s(r));return o.find(r=>r.words===t||b(r.name)===t||r.name.toLowerCase()===t)??o.find(r=>r.words===L(t)||b(r.name)===L(t))??o.find(r=>t.split(" ").some(i=>i.length>2&&(r.words.split(" ").includes(i)||r.words.split(" ").includes(L(i)))))}function rn(n,e,s){let t=e.trim().toLowerCase();if(t.length!==0)return n.edges.find(o=>o.words===t||o.name.toLowerCase()===t)??n.edges.find(o=>o.to.some(r=>{let i=s.info(r);return i!==void 0&&(i.noun===L(t)||i.plural===t||b(r)===L(t))}))??n.edges.find(o=>t.split(" ").some(r=>r.length>2&&o.words.split(" ").includes(r)))}function W(n){return/ (?:grouped |group |split |sorted |organi[sz]ed )?by ([\p{L}\p{N}' -]+?)(?= (?:and|with|for|in|on|only|where|from|this|that|as|sorted|grouped) |\s*$)/u.exec(n)?.[1]?.trim()}var mn=/\bwho\b.*\b(covers?|cover|tends?|owns?|handles?|does|works? on|looks? after|is on|is assigned|staffs?|runs?)\b|\bcoverage\b|\bmatrix\b|\bwho covers\b/,bn=/\bcalendar\b|\bmonth\b|\bagenda\b|\bschedule\b|\bdue\b|\bdeadlines?\b|\bdates?\b|\bwhen\b/,hn=/\btimeline\b|\bover time\b|\bgantt\b|\bspans?\b|\bweek\b/,pn=/\bboard\b|\bkanban\b|\bcolumns?\b|\bpipeline\b|\bstages?\b|\bstatus\b/,wn=/\blaid out\b|\blayout\b|\bseating\b|\bwhere (?:they|it|each) (?:sits?|lies?|stands?)\b|\bfloor\b/,kn=/\bplan\b|\bmap\b|\bregions?\b/,$n=/\blist\b|\btable\b|\bgroup(?:ed)? by\b|\bsort(?:ed)? by\b|\bonly\b|\bjust the\b/;function Sn(n){let e=[];return/\blist\b|\btable\b/.test(n)&&e.push("blocks"),mn.test(n)&&e.push("coverage"),wn.test(n)&&e.push("board"),(/\bfloor plan\b/.test(n)||kn.test(n))&&e.push("plan"),hn.test(n)&&e.push("timeline"),bn.test(n)&&e.push("calendar"),pn.test(n)&&e.push("columns"),$n.test(n)&&!e.includes("blocks")&&e.push("blocks"),e.length===0&&W(n)&&e.push("columns"),e}var on=n=>{let e=s=>s?` and not ${s}`:"";if(/\boverdue\b|\blate\b|\bpast due\b/.test(n))return{cond:(s,t)=>`days(today(), ${s}) < 0${e(t)}`,says:s=>`overdue by ${s.words}`};if(/\btoday\b/.test(n))return{range:"day",cond:s=>`days(today(), ${s}) == 0`,says:s=>`with ${s.words} today`};if(/\bthis week\b|\bnext 7 days\b|\bnext week\b/.test(n))return{range:"week",cond:s=>`days(today(), ${s}) >= 0 and days(today(), ${s}) <= 6`,says:s=>`with ${s.words} in the next week`};if(/\bthis month\b|\bnext 30 days\b|\bnext month\b/.test(n))return{range:"month",cond:s=>`days(today(), ${s}) >= 0 and days(today(), ${s}) <= 30`,says:s=>`with ${s.words} in the next month`};if(/\blast month\b|\bpast month\b/.test(n))return{range:"month",cond:s=>`days(today(), ${s}) >= -30 and days(today(), ${s}) <= 0`,says:s=>`with ${s.words} in the last month`};if(/\bthis year\b/.test(n))return{range:"year",cond:s=>`days(today(), ${s}) >= 0 and days(today(), ${s}) <= 365`,says:s=>`with ${s.words} in the next year`};if(/\bquarter\b/.test(n))return{range:"quarter",cond:s=>`days(today(), ${s}) >= 0 and days(today(), ${s}) <= 91`,says:s=>`with ${s.words} in the next quarter`}},_=n=>{if(/\bagenda\b|\bin order\b/.test(n))return"agenda";if(/\btoday\b|\bday\b/.test(n))return"day";if(/\bweek\b/.test(n))return"week";if(/\bquarter\b/.test(n))return"quarter";if(/\byears\b/.test(n))return"years";if(/\byear\b/.test(n))return"year";if(/\bmonth\b/.test(n))return"month"},X=/^(user|person|people|member|staff|gardener|volunteer|owner|agent|employee|worker|team|player|customer|client|contact|party|attendee|guest)s?$/,N=class extends Error{},h=n=>{throw new N(n)};function Dn(n,e){let s=n.fields.filter(r=>r.type==="enum");if(e){let r=I(n,e);if(r&&r.type==="enum")return r;r&&h(`${n.plural}' ${r.words} is not a choice, so it has no columns`)}let t=$(n,n.roles.status??n.roles.column);if(t?.type==="enum")return t;let o=s.find(r=>/^(status|stage|state|phase)$/.test(r.name));return o||(s[0]?s[0]:h(`${n.plural} have no choice field to put in columns`))}function nn(n,e){let s=n.fields.filter(R),t=l=>{let d=$(n,n.roles[l]);return R(d)?d:void 0},r=s.find(l=>A(e,l.words)||A(e,b(l.name)))??t("start")??s.find(l=>/^(due|date|on|at|start|starts|begins|from|sown|when)/i.test(l.name))??s[0];if(!r)return h(`no date field on ${n.plural}`);let i=t("end")??s.find(l=>l!==r&&/^(end|ends|until|to|finish|finished|harvested|due|closes|through)/i.test(l.name)),a=n.fields.find(l=>l.type==="boolean"&&/^(done|finished|complete|completed|closed)$/.test(l.name));return{start:r,...i&&i!==r?{end:i}:{},...a?{done:a}:{}}}function an(n){let e=$(n,n.roles.start),s=$(n,n.roles.end),t=$(n,n.roles.column??n.roles.day??n.roles.columns);if(K(e)&&K(s)&&t?.type==="enum")return{start:e,end:s,column:t}}function vn(n,e,s,t){let o=[];for(let i of n.kinds)for(let a of i.edges)for(let l of a.to){let d=n.info(l);if(!d||d.kind===i.kind)continue;let c=0;e.includes(i)&&(c+=4),e.includes(d)&&(c+=4),(X.test(d.kind)||X.test(d.noun))&&(c+=3),t&&(a.words.includes(t)||d.noun===L(t))&&(c+=5),a.words.split(" ").some(u=>u.length>2&&s.includes(` ${u}`))&&(c+=2),o.push({rows:i,across:d,link:a,score:c})}let r=o.sort((i,a)=>a.score-i.score)[0];return r||h(e[0]?`${e[0].plural} are joined to nothing else, so there is no who-covers-what to draw`:"nothing here is joined to anything else, so there is no who-covers-what to draw")}function dn(n,e,s,t,o){let r=W(t);switch(n){case"columns":{if(r){let i=I(e,r);if(!i||i.type!=="enum"){let a=rn(e,r,s);if(a){let l=s.info(a.to[0]);return{lens:"coverage",kind:e.kind,across:l.kind,link:a.name}}}}return{lens:"columns",kind:e.kind,column:Dn(e,r).name}}case"calendar":{let i=nn(e,t),a=_(t);return{lens:"calendar",kind:e.kind,start:i.start.name,...i.end?{end:i.end.name}:{},...i.done?{done:i.done.name}:{},...a?{range:a}:{}}}case"timeline":{let i=an(e);if(i&&!/\bdates?\b|\bdue\b|\bdeadlines?\b|\bmonths?\b|\byears?\b/.test(t))return{lens:"timeline",kind:e.kind,start:i.start.name,end:i.end.name,column:i.column.name};let a=nn(e,t);return{lens:"calendar",kind:e.kind,start:a.start.name,...a.end?{end:a.end.name}:{},...a.done?{done:a.done.name}:{},range:_(t)??"quarter"}}case"coverage":{let i=vn(s,o,t,r);return{lens:"coverage",kind:i.rows.kind,across:i.across.kind,link:i.link.name}}case"board":{let i=$(e,e.roles.x)??e.fields.find(c=>c.name==="x"),a=$(e,e.roles.y)??e.fields.find(c=>c.name==="y");if(!K(i)||!K(a))return h(`${e.plural} have no x and y to be laid out by`);let d=s.kinds.flatMap(c=>c.edges.filter(u=>u.to.includes(e.kind)&&c.kind!==e.kind))[0]??e.edges[0];return d?{lens:"board",kind:e.kind,x:i.name,y:a.name,fill:d.name,...d.from!==e.kind?{fillFrom:"occupant"}:{}}:h(`nothing is joined to ${e.plural} to fill them`)}case"plan":{let i=$(e,e.roles.outline)??e.fields.find(a=>a.name==="outline");return i?{lens:"plan",kind:e.kind,outline:i.name}:h(`${e.plural} have no outline to draw a plan from`)}case"blocks":{let i={lens:"blocks",kind:e.kind,as:/\bcards?\b/.test(t)?"card":"row"},a=/ group(?:ed)? by ([\p{L}\p{N} -]+?)(?= (?:and|only|sorted|with)|\s*$)/u.exec(t)?.[1]??(r&&!/ sort(?:ed)? by /.test(t)?r:void 0);if(a){let c=I(e,a);if(!c||c.type!=="enum")return h(c?`${e.plural}' ${c.words} is not a choice, so they cannot be grouped by it`:`${e.plural} have nothing called ${a} to group by`);i.group=c.name}let l=/ sort(?:ed)? by ([\p{L}\p{N} -]+?)(?= (?:and|only|grouped|with)|\s*$)/u.exec(t)?.[1];if(l){let c=I(e,l);if(!c)return h(`${e.plural} have nothing called ${l} to sort by`);i.sort={by:c.name,.../\b(newest|latest|desc|descending|most)\b/.test(t)?{direction:"desc"}:{}}}let d=q(e,t);return d.length>0&&(i.where=d),i}}}function q(n,e){let s=[],t=on(e);if(t){let o=n.fields.filter(R),r=$(n,n.roles.start),i=o.find(l=>A(e,l.words))??(R(r)?r:void 0)??o[0];(!i||!R(i))&&h(`no date field on ${n.plural}`);let a=n.fields.find(l=>l.type==="boolean"&&/^(done|finished|complete|completed|closed)$/.test(l.name));s.push({expr:t.cond(i.name,/\boverdue\b|\blate\b|\bpast due\b/.test(e)?a?.name:void 0),says:t.says(i)})}if(/\bonly\b|\bjust\b|\bthat are\b|\bwhich are\b/.test(e)){for(let o of n.fields){if(o.type!=="enum")continue;let r=o.options?.find(i=>A(e,i.toLowerCase())||A(e,b(i)));r&&s.push({expr:`${o.name} == '${r.replace(/'/g,"")}'`,says:`that are ${b(r)}`})}if(/\bnot done\b|\bundone\b|\bunfinished\b|\bopen ones\b|\bstill to do\b/.test(e)){let o=n.fields.find(r=>r.type==="boolean"&&/^(done|finished|complete|completed)$/.test(r.name));o&&s.push({expr:`not ${o.name}`,says:`not ${o.words}`})}}return s}var J={columns:"A board",calendar:"A calendar",timeline:"A timeline",coverage:"A grid",board:"A layout",plan:"A plan",blocks:"A list",reach:"A picture"};function Rn(n,e){let s=e.info(n.kind),t=o=>o?$(s,o)?.words??b(o):"";switch(n.lens){case"columns":return{title:`${k(s.plural)} by ${t(n.column)}`,detail:`of ${s.plural} by ${t(n.column)}`};case"calendar":{let o=n.range??"month";if(o==="agenda")return{title:`${k(s.plural)} in date order`,detail:`of ${s.plural} in order of ${t(n.start)}`};let r=o==="years"?"year":o;return{title:`${k(s.plural)} by ${r}`,detail:`of ${s.plural} by ${t(n.start)}, a ${r} at a time`}}case"timeline":return{title:`${k(s.plural)} over the ${t(n.column)}`,detail:`of ${s.plural} from ${t(n.start)} to ${t(n.end)}, by ${t(n.column)}`};case"coverage":{let o=e.info(n.across);return{title:`${k(s.plural)} by ${o.noun}`,detail:`of which ${o.noun} covers which ${s.noun}`}}case"board":return{title:`${k(s.plural)} where they stand`,detail:`of ${s.plural} where they stand`};case"plan":return{title:`${k(s.plural)} on a plan`,detail:`of ${s.plural}`};default:{let o=[n.where?.map(r=>r.says).join(" and "),n.group?`by ${t(n.group)}`:void 0,n.sort?`in order of ${t(n.sort.by)}`:void 0].filter(r=>!!r);return{title:[k(s.plural),...o].join(" "),detail:[`of ${s.plural}`,...o].join(" ")}}}}function An(n,e){let s={title:e,on:n.kind};switch(n.lens){case"columns":return{name:"columns",...s,bindings:{[n.kind]:{column:n.column}}};case"calendar":return{name:"calendar",...s,bindings:{[n.kind]:{start:n.start,...n.end?{end:n.end}:{},...n.done?{done:n.done}:{}}},...n.range?{options:{range:n.range}}:{}};case"timeline":return{name:"timeline",...s,bindings:{[n.kind]:{start:n.start,end:n.end,column:n.column}}};case"coverage":return{name:"coverage",...s,bindings:{rows:{kind:n.kind},columns:{kind:n.across},link:{edge:n.link}}};case"board":return{name:"board",...s,bindings:{slots:{kind:n.kind},x:{field:n.x,on:"slots"},y:{field:n.y,on:"slots"},fill:{edge:n.fill}},...n.fillFrom?{options:{fillFrom:n.fillFrom}}:{}};case"plan":return{name:"plan",...s,bindings:{regions:{kind:n.kind},outline:{field:n.outline,on:"regions"}}};default:{let t=n.where?.length?` where ${n.where.map(r=>n.where.length>1?`(${r.expr})`:r.expr).join(" and ")}`:"",o={list:`all('${n.kind}')${t}`,as:n.as??"row"};return n.group&&(o.group=n.group),n.sort&&(o.sort=n.sort.direction?{by:n.sort.by,direction:n.sort.direction}:n.sort.by),o.empty="Nothing here yet.",{name:"blocks",...s,options:{blocks:[o]}}}}}function F(n,e){let{app:s}=e,t=r=>r.toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,""),o=new Set(["home","overview",...Q(s,e.views?{views:e.views}:{}).map(r=>r.slug),...(s.lenses??[]).flatMap(r=>r.title?[t(r.title)]:[])]);if(!o.has(t(n)))return n;for(let r=2;;r++)if(!o.has(t(`${n} ${r}`)))return`${n} ${r}`}var en={title:[],headline:[],text:["tone"],figure:["as","currency","label"],list:["sort","limit","group","empty","as"],progress:["label"],group:["direction"],when:["show"],divider:[]};function Ln(n,e){if(!Array.isArray(e)||e.length===0)return"it has no blocks to draw";if(e.length>40)return"it has more blocks than a place draws";let s=(i,a)=>{if(typeof i!="string"||i.trim()==="")return`its ${a} says nothing`;try{return V(i)}catch(l){return`its ${a} does not read: ${l instanceof Error?l.message.replace(/ \(at character.*$/,""):String(l)}`}},t=i=>{if(i.t==="where")return t(i.set);if(i.t==="call"&&i.fn==="all"){let a=i.args[0];return a?.t==="lit"&&typeof a.value=="string"?n.info(a.value)??null:void 0}},o=(i,a)=>{switch(i.t){case"lit":return;case"ident":return a&&!a.fields.some(l=>l.name===i.name)&&!a.edges.some(l=>l.name===i.name)?`${a.plural} have nothing called ${i.name}`:void 0;case"member":return o(i.object,a);case"list":return i.items.map(l=>o(l,a)).find(Boolean);case"unary":return o(i.operand,a);case"binary":return o(i.left,a)??o(i.right,a);case"where":{let l=t(i.set);return l===null?"Nothing by that name here":o(i.set,a)??o(i.filter,l??void 0)}case"call":return i.fn==="all"?t(i)===null?"Nothing by that name here":void 0:i.args.map(l=>o(l,a)).find(Boolean)}},r=(i,a)=>{if(a>4)return"its blocks nest deeper than a place draws";for(let l of i){if(!w(l))return"a block is not an object";let d=Object.keys(en).find(g=>g in l);if(!d)return`"${Object.keys(l)[0]??""}" is not a block a place draws`;let c=Object.keys(l).find(g=>g!==d&&g!=="key"&&!en[d].includes(g));if(c)return`a ${d} block takes no "${c}"`;let u=l[d];if(d==="list"||d==="figure"||d==="when"){if(d==="figure"&&u===!0)continue;let g=s(u,d);if(typeof g=="string")return g;let m=o(g,void 0);if(m)return m;if(d==="list"){let f=t(g);if(f==null)return f===null?"Nothing by that name here":"its list does not say which records it lists, like all('task')";for(let y of["group","sort"]){let p=l[y],S=typeof p=="string"?p:w(p)&&typeof p.by=="string"?p.by:void 0;if(p===void 0)continue;let D=S?f.fields.find(un=>un.name===S):void 0;if(!D)return`${f.plural} have nothing called ${String(S??p)} to ${y} by`;if(y==="group"&&D.type!=="enum")return`${f.plural}' ${D.words} is not a choice, so they cannot be grouped by it`}}if(d==="when"){let f=l.show;if(!Array.isArray(f))return"a when block shows a list of blocks";let y=r(f,a+1);if(y)return y}}else if(d==="group"){if(!Array.isArray(u))return"a group block holds a list of blocks";let g=r(u,a+1);if(g)return g}else{if(d!=="divider"&&typeof u!="string")return`a ${d} block says words`;if(typeof u=="string")for(let g of u.matchAll(/\{([^{}]*)\}/g)){let m=g[1].split(/\|(?![|])/)[0],f=s(m,`${d}'s braces`);if(typeof f=="string")return f;let y=o(f,void 0);if(y)return y}}}};return r(e,1)}function E(n,e,s){let t=O(n.schema,s),o=f=>({ok:!1,failed:`Couldn't draw that: ${f.replace(/\.$/,"")}.`});if(!T(e.name)||e.name==="reach")return o(`"${String(e.name)}" is not a picture the seat can draw; it draws ${H.filter(f=>f!=="reach").join(", ")}`);if(typeof e.title!="string"||e.title.trim().length===0||e.title.length>80)return o("it needs a title of a few words");if(typeof e.on!="string"||!t.tryDefinition(e.on))return o("Nothing by that name here");let r=P[e.name],i=e.bindings??{};if(r.binds==="fields")for(let[f,y]of Object.entries(i)){if(!t.tryDefinition(f))return o("Nothing by that name here");let p=Object.keys(t.tryDefinition(f).fields?.shape??{});for(let[S,D]of Object.entries(y??{}))if(typeof D!="string"||!p.includes(D))return o(`${b(f)} has no field "${String(D)}" for its ${S}`);for(let S of r.requiredRoles)if(!(S in(y??{})))return o(`a ${e.name} needs ${b(f)}'s ${S}`)}else if(r.binds==="entities")for(let f of r.requiredRoles){let y=i[f];if(!y)return o(`a ${e.name} needs its ${f}`);if(typeof y.kind=="string"&&!t.tryDefinition(y.kind))return o("Nothing by that name here")}let a={...n,schema:t,lenses:[...n.lenses??[],e]},l=a.lenses.length-1,d=U(a),c=`lenses.${l}`,u=d.findings.find(f=>f.path===c||f.path.startsWith(`${c}.`));if(u)return o(u.message.replace(/^"[^"]*" /,"it "));let g=d.undrawn.find(f=>f.index===l);if(g)return o(g.why);let m=d.drawn.find(f=>f.index===l);if(!m)return o("its bindings name something the app does not have");if(m.as==="overview")return o(`"${e.title}" is the scene's own address; give it another title`);if(e.name==="blocks"){let f=Ln(j(t),e.options?.blocks);if(f)return o(f)}return{ok:!0,drawn:m}}function G(n){return{op:"add-lens",title:n.title,lens:n.name,on:n.on,...n.bindings?{bindings:n.bindings}:{},...n.options?{options:n.options}:{}}}function In(n){return{op:"remove-lens",title:n.title,on:n.on}}var w=n=>typeof n=="object"&&n!==null&&!Array.isArray(n);function ln(n){let e=w(n)?n:{},s=String(e.lens??e.name??""),t=e.bindings,o=typeof e.on=="string"?e.on:w(t)&&P[s]?.binds==="fields"?Object.keys(t)[0]??"":"";return{name:s,title:typeof e.title=="string"?e.title.trim():"",on:o,...w(t)?{bindings:t}:{},...w(e.options)?{options:e.options}:{}}}function On(n){let e=o=>w(n.bindings?.[o])?n.bindings[o]:{},s=o=>typeof o=="string"?o:void 0,t=e(n.on);switch(n.name){case"columns":return s(t.column)?{lens:"columns",kind:n.on,column:t.column}:void 0;case"calendar":{let o=s(n.options?.range);return s(t.start)?{lens:"calendar",kind:n.on,start:t.start,...s(t.end)?{end:t.end}:{},...s(t.done)?{done:t.done}:{},...o?{range:o}:{}}:void 0}case"timeline":return s(t.start)&&s(t.end)&&s(t.column)?{lens:"timeline",kind:n.on,start:t.start,end:t.end,column:t.column}:void 0;case"coverage":{let o=w(n.bindings?.columns)?s(n.bindings.columns.kind):void 0,r=w(n.bindings?.link)?s(n.bindings.link.edge):void 0;return o&&r?{lens:"coverage",kind:n.on,across:o,link:r}:void 0}case"blocks":{let o=n.options?.blocks;if(!Array.isArray(o)||o.length!==1||!w(o[0]))return;let r=o[0],i=new RegExp(`^all\\('${n.on}'\\)(?: where (.+))?$`).exec(String(r.list??""));if(!i)return;let a=r.sort;return{lens:"blocks",kind:n.on,as:r.as==="card"?"card":"row",...typeof r.group=="string"?{group:r.group}:{},...typeof a=="string"?{sort:{by:a}}:w(a)&&typeof a.by=="string"?{sort:{by:a.by,...a.direction==="desc"?{direction:"desc"}:{}}}:{},...i[1]?{where:[{expr:i[1],says:"as asked"}]}:{}}}default:return}}function M(n,e,s,t,o){let r=j(O(n.schema,t)).info(e.on),i=On(e);return{title:e.title,said:`${J[e.name]??"A picture"} of ${r?.plural??b(e.on)}.`,kind:e.on,lens:e,drawn:s,edit:G(e),by:o,asks:[],...i?{recipe:i}:{}}}function tn(n){return{title:n.title,said:n.said,lens:{title:n.lens.title,lens:n.lens.name,on:n.lens.on,...n.lens.bindings?{bindings:n.lens.bindings}:{},...n.lens.options?{options:n.lens.options}:{}},edit:n.edit,by:n.by,check:"It draws, and graview check would take it."}}function C(n,e,s,t,o){let r=Rn(n,e),i=n.title??o??F(r.title,s),a=An(n,i),l=E(s.app,a,s.sight);return l.ok?{title:i,said:`${J[n.lens]} ${r.detail}.`,kind:n.kind,lens:a,drawn:l.drawn,edit:G(a),by:"template",asks:t,recipe:n}:{failed:l.failed,...s.lastGood?{lastGood:s.lastGood}:{}}}function zn(n,e){let s=j(O(e.app.schema,e.sight)),t=s.info(n.kind);if(!t)return{failed:"Couldn't draw that: Nothing by that name here."};let o=n.lens==="blocks"&&!n.group&&!n.sort&&!n.where?.length&&n.title===void 0;return C(o?{...n,title:F(`Every ${t.noun}`,e)}:n,s,e,[])}function jn(n,e,s,t){if(s.length>0)return s;let o=i=>{switch(n){case"columns":return i.fields.some(a=>a.type==="enum");case"calendar":return i.fields.some(R);case"timeline":return an(i)!==void 0||i.fields.some(R);case"coverage":return i.edges.some(a=>a.to.some(l=>l!==i.kind));case"board":return i.fields.some(a=>a.name==="x")&&i.fields.some(a=>a.name==="y");case"plan":return i.fields.some(a=>a.name==="outline")||i.roles.outline!==void 0;default:return!0}};return[...e.kinds.filter(o)].sort((i,a)=>Number(a.fields.some(l=>A(t,l.words)))-Number(i.fields.some(l=>A(t,l.words))))}function xn(n,e){let s=j(O(e.app.schema,e.sight)),t=sn(n),o=Sn(t);if(o.length===0)return;let r=yn(t,s),i;for(let a of o){let l=a==="coverage"?[r[0]??s.kinds[0]].filter(d=>!!d):jn(a,s,r,t);for(let d of l)try{let c=dn(a,d,s,t,r),u=C(c,s,e,[n]);if(!x(u))return u;i??=u.failed}catch(c){if(!(c instanceof N))throw c;i??=`Couldn't draw that: ${c.message}.`}l.length===0&&r.length===0&&(i??=`Couldn't draw that: nothing here has what ${J[a].toLowerCase()} needs.`)}return{failed:i??"Couldn't draw that: Nothing by that name here.",...e.lastGood?{lastGood:e.lastGood}:{}}}async function Nn(n,e){let s=e.lastGood?{lastGood:e.lastGood}:{};if(n.trim().length===0)return{failed:"Say what you would like to see, like \u201Ca board of tasks by status\u201D.",...s};let t=xn(n,e);if(t&&!x(t))return t;if(!e.complete)return t??{failed:"Couldn't draw that: drawing freely needs AI, which isn't on here. Ask for a board, a calendar, a timeline, a list or who covers what.",...s};let o=await cn(n,e,void 0);return x(o)&&t?t:o}async function En(n,e,s){let t={lastGood:n},o={...s,lastGood:n},r=j(O(s.app.schema,s.sight)),i=sn(e),a=r.info(n.kind),l=[...n.asks,e];if(!a)return{failed:"Couldn't change that: Nothing by that name here.",...t};let d=n.recipe,c=/^ (?:call|name|title) (?:it|this)? ?(.+?) $/.exec(i)??/ (?:call|name) it (.+?) $/.exec(i);try{if(c){let m=e.replace(/^.*?\b(?:call|name|title)\b\s*(?:it|this)?\s*/i,"").replace(/^["“']|["”']$/g,"").trim();if(m.length===0)return{failed:"Couldn't change that: say what to call it.",...t};let f={...n.lens,title:F(m,s)},y=E(s.app,f,s.sight);return y.ok?{...n,title:f.title,lens:f,drawn:y.drawn,edit:G(f),asks:l,...d?{recipe:{...d,title:f.title}}:{}}:{failed:y.failed,...t}}let g=/ as (?:a |an )?(board|kanban|calendar|timeline|list|table|cards|rows|grid|plan|layout)\b/.exec(i);if(g){let m=g[1]==="board"||g[1]==="kanban"?"columns":g[1]==="calendar"?"calendar":g[1]==="timeline"?"timeline":g[1]==="grid"?"coverage":g[1]==="plan"?"plan":g[1]==="layout"?"board":"blocks",f=dn(m,a,r,i,[a]),y=g[1]==="cards"?"card":g[1]==="rows"?"row":void 0,p=m==="blocks"&&d?.lens==="blocks"?{...d,...y?{as:y}:{}}:m==="blocks"&&d?.lens==="columns"?{...f,group:d.column,...y?{as:y}:{}}:f;return C(v(p),r,o,l)}if(d){let m=Kn(d,a,r,i);if(m)return C(m,r,o,l)}}catch(g){if(!(g instanceof N))throw g;return{failed:`Couldn't change that: ${g.message}.`,...t}}if(!s.complete)return{failed:"Couldn't change that: changing it freely needs AI, which isn't on here. Try \u201Cgroup by status\u201D, \u201Conly this month\u201D or \u201Cas a calendar\u201D.",...t};let u=await cn(e,o,n);return x(u)?u:{...u,asks:l}}var v=n=>{let{title:e,...s}=n;return s};function Kn(n,e,s,t){let o=/ (?:group(?:ed)?|split|organi[sz]ed?|put them|columns) by ([\p{L}\p{N} -]+?)(?= (?:and|only|with)|\s*$)/u.exec(t)?.[1]??(/^ by /.test(t)?W(t):void 0);if(o){let d=I(e,o);if(d?.type==="enum")return n.lens==="blocks"?{...v(n),group:d.name}:{lens:"columns",kind:n.kind,column:d.name};let c=rn(e,o,s);return c?{lens:"coverage",kind:n.kind,across:c.to[0],link:c.name}:h(d?`${e.plural}' ${d.words} is not a choice, so they cannot be grouped by it`:`${e.plural} have nothing called ${o} to group by`)}let r=/ (?:sort(?:ed)?|order(?:ed)?) by ([\p{L}\p{N} -]+?)(?= (?:and|only|with)|\s*$)/u.exec(t)?.[1];if(r){let d=I(e,r);return d?{...n.lens==="blocks"?v(n):{lens:"blocks",kind:n.kind,as:"row",...n.lens==="columns"?{group:n.column}:{}},sort:{by:d.name,.../\b(newest|latest|desc|descending|most)\b/.test(t)?{direction:"desc"}:{}}}:h(`${e.plural} have nothing called ${r} to sort by`)}if(/\b(?:all of them|everything|show all|clear the filter|no filter|without the filter)\b/.test(t)){if(n.lens!=="blocks"||!n.where)return h("it already shows all of them");let{where:d,...c}=v(n);return c}let i=on(t);if(i&&n.lens==="calendar"&&i.range)return{...v(n),range:i.range};if(i&&n.lens==="calendar"&&!i.range)return{lens:"blocks",kind:n.kind,as:"row",sort:{by:n.start},where:q(e,t)};let a=q(e,t);if(a.length>0){let d=n.lens==="blocks"?v(n):{lens:"blocks",kind:n.kind,as:"row",...n.lens==="columns"?{group:n.column}:{}};return{...d,where:[...d.where??[],...a]}}let l=n.lens==="calendar"?_(t):void 0;if(l)return{...v(n),range:l}}function Cn(n){return n.kinds.map(e=>{let s=e.fields.map(r=>`${r.name} (${r.type??"value"}${r.options?`: ${r.options.join(" | ")}`:""})`).join(", "),t=e.edges.map(r=>`${r.name} \u2192 ${r.to.join(" | ")}`).join(", "),o=Object.entries(e.roles).map(([r,i])=>`${r}=${i}`).join(", ");return`- ${e.kind} ("${e.plural}"): ${s}${t?`; relations: ${t}`:""}${o?`; roles: ${o}`:""}`}).join(`
1
+ import{a as k}from"./chunk.G4JJXA63.js";import{b as Q}from"./chunk.IO5VFTXC.js";import{a as Z}from"./chunk.UPOYRCKI.js";import{a as Y}from"./chunk.ZE5RSKXF.js";import{c as V}from"./chunk.I7KN732Z.js";import{ee as P,ge as H,he as T,ie as U,yb as z,zb as B}from"./chunk.DHPXRDT5.js";var x=n=>"failed"in n;function fn(n,e){let s=n.schema.kinds,t=n.policy?.sees;if(!t?.length||B(e))return{kinds:s};let o=z(e).roles??[],r=new Set(t.filter(i=>i.roles==="*"||o.some(a=>i.roles.includes(a))).flatMap(i=>i.kinds));return{kinds:s.filter(i=>r.has(i))}}function O(n,e){if(!e)return n;let s=new Set(e.kinds.filter(r=>n.tryDefinition(r)!==void 0));if(s.size===n.kinds.length)return n;let t=new Map,o=r=>{if(s.has(r)){if(!t.has(r)){let i=n.tryDefinition(r),a=Object.fromEntries(Object.entries(i?.edges??{}).flatMap(([l,d])=>{if(d.to==="*")return[[l,d]];let c=d.to.filter(u=>s.has(u));return c.length>0?[[l,{...d,to:c}]]:[]}));t.set(r,{...i,edges:a})}return t.get(r)}};return{...n,definitions:n.definitions.filter(r=>s.has(r.kind)),kinds:n.kinds.filter(r=>s.has(r)),tryDefinition:o,definition:r=>{let i=o(r);if(!i)throw new Error(`Unknown node kind "${r}"`);return i}}}var gn=n=>n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),b=n=>gn(n).replace(/[-_]+/g," ").trim();function j(n){let e=[];for(let t of n.kinds){let o=n.tryDefinition(t);if(!o)continue;let r=o.display?.labels??{},i=Object.entries(o.fields?.shape??{}).filter(([d])=>d!=="id"&&d!=="kind").map(([d,c])=>{let u=Y(c);return{name:d,type:u?.type==="enum"&&u.multiple?"list":u?.type,...u?.options?{options:u.options}:{},words:(r[d]??b(d)).toLowerCase()}}),a=Object.entries(o.edges??{}).map(([d,c])=>({name:d,from:t,to:c.to==="*"?n.kinds.filter(u=>u!==t):c.to,words:b(d)})),l=(o.plural??`${b(t)}s`).toLowerCase();e.push({kind:t,plural:l,noun:(o.noun??b(t)).toLowerCase(),fields:i,roles:o.fieldRoles??{},edges:a})}let s=new Map(e.map(t=>[t.kind,t]));return{schema:n,kinds:e,info:t=>s.get(t)}}var $=(n,e)=>e===void 0?void 0:n.fields.find(s=>s.name===e),R=n=>n?.type==="date"||n?.type==="datetime",K=n=>n?.type==="number"||n?.type==="integer"||n?.type==="duration",sn=n=>` ${n.toLowerCase().replace(/[“”"’‘]/g,"'").replace(/[^\p{L}\p{N}' -]+/gu," ").replace(/\s+/g," ").trim()} `,A=(n,e)=>n.includes(` ${e} `),L=n=>n.endsWith("ies")?`${n.slice(0,-3)}y`:n.endsWith("ses")?n.slice(0,-2):n.endsWith("s")?n.slice(0,-1):n;function yn(n,e){let s=[];for(let t of e.kinds){let o=new Set([t.plural,t.noun,`${t.noun}s`,b(t.kind),`${b(t.kind)}s`]),r=-1;for(let i of o){let a=n.indexOf(` ${i} `);a>=0&&(r<0||a<r)&&(r=a)}r>=0&&s.push({info:t,at:r})}return s.sort((t,o)=>t.at-o.at).map(t=>t.info)}function I(n,e,s){let t=e.trim().toLowerCase();if(t.length===0)return;let o=n.fields.filter(r=>!s||s(r));return o.find(r=>r.words===t||b(r.name)===t||r.name.toLowerCase()===t)??o.find(r=>r.words===L(t)||b(r.name)===L(t))??o.find(r=>t.split(" ").some(i=>i.length>2&&(r.words.split(" ").includes(i)||r.words.split(" ").includes(L(i)))))}function rn(n,e,s){let t=e.trim().toLowerCase();if(t.length!==0)return n.edges.find(o=>o.words===t||o.name.toLowerCase()===t)??n.edges.find(o=>o.to.some(r=>{let i=s.info(r);return i!==void 0&&(i.noun===L(t)||i.plural===t||b(r)===L(t))}))??n.edges.find(o=>t.split(" ").some(r=>r.length>2&&o.words.split(" ").includes(r)))}function W(n){return/ (?:grouped |group |split |sorted |organi[sz]ed )?by ([\p{L}\p{N}' -]+?)(?= (?:and|with|for|in|on|only|where|from|this|that|as|sorted|grouped) |\s*$)/u.exec(n)?.[1]?.trim()}var mn=/\bwho\b.*\b(covers?|cover|tends?|owns?|handles?|does|works? on|looks? after|is on|is assigned|staffs?|runs?)\b|\bcoverage\b|\bmatrix\b|\bwho covers\b/,bn=/\bcalendar\b|\bmonth\b|\bagenda\b|\bschedule\b|\bdue\b|\bdeadlines?\b|\bdates?\b|\bwhen\b/,hn=/\btimeline\b|\bover time\b|\bgantt\b|\bspans?\b|\bweek\b/,pn=/\bboard\b|\bkanban\b|\bcolumns?\b|\bpipeline\b|\bstages?\b|\bstatus\b/,wn=/\blaid out\b|\blayout\b|\bseating\b|\bwhere (?:they|it|each) (?:sits?|lies?|stands?)\b|\bfloor\b/,kn=/\bplan\b|\bmap\b|\bregions?\b/,$n=/\blist\b|\btable\b|\bgroup(?:ed)? by\b|\bsort(?:ed)? by\b|\bonly\b|\bjust the\b/;function Sn(n){let e=[];return/\blist\b|\btable\b/.test(n)&&e.push("blocks"),mn.test(n)&&e.push("coverage"),wn.test(n)&&e.push("board"),(/\bfloor plan\b/.test(n)||kn.test(n))&&e.push("plan"),hn.test(n)&&e.push("timeline"),bn.test(n)&&e.push("calendar"),pn.test(n)&&e.push("columns"),$n.test(n)&&!e.includes("blocks")&&e.push("blocks"),e.length===0&&W(n)&&e.push("columns"),e}var on=n=>{let e=s=>s?` and not ${s}`:"";if(/\boverdue\b|\blate\b|\bpast due\b/.test(n))return{cond:(s,t)=>`days(today(), ${s}) < 0${e(t)}`,says:s=>`overdue by ${s.words}`};if(/\btoday\b/.test(n))return{range:"day",cond:s=>`days(today(), ${s}) == 0`,says:s=>`with ${s.words} today`};if(/\bthis week\b|\bnext 7 days\b|\bnext week\b/.test(n))return{range:"week",cond:s=>`days(today(), ${s}) >= 0 and days(today(), ${s}) <= 6`,says:s=>`with ${s.words} in the next week`};if(/\bthis month\b|\bnext 30 days\b|\bnext month\b/.test(n))return{range:"month",cond:s=>`days(today(), ${s}) >= 0 and days(today(), ${s}) <= 30`,says:s=>`with ${s.words} in the next month`};if(/\blast month\b|\bpast month\b/.test(n))return{range:"month",cond:s=>`days(today(), ${s}) >= -30 and days(today(), ${s}) <= 0`,says:s=>`with ${s.words} in the last month`};if(/\bthis year\b/.test(n))return{range:"year",cond:s=>`days(today(), ${s}) >= 0 and days(today(), ${s}) <= 365`,says:s=>`with ${s.words} in the next year`};if(/\bquarter\b/.test(n))return{range:"quarter",cond:s=>`days(today(), ${s}) >= 0 and days(today(), ${s}) <= 91`,says:s=>`with ${s.words} in the next quarter`}},_=n=>{if(/\bagenda\b|\bin order\b/.test(n))return"agenda";if(/\btoday\b|\bday\b/.test(n))return"day";if(/\bweek\b/.test(n))return"week";if(/\bquarter\b/.test(n))return"quarter";if(/\byears\b/.test(n))return"years";if(/\byear\b/.test(n))return"year";if(/\bmonth\b/.test(n))return"month"},X=/^(user|person|people|member|staff|gardener|volunteer|owner|agent|employee|worker|team|player|customer|client|contact|party|attendee|guest)s?$/,N=class extends Error{},h=n=>{throw new N(n)};function Dn(n,e){let s=n.fields.filter(r=>r.type==="enum");if(e){let r=I(n,e);if(r&&r.type==="enum")return r;r&&h(`${n.plural}' ${r.words} is not a choice, so it has no columns`)}let t=$(n,n.roles.status??n.roles.column);if(t?.type==="enum")return t;let o=s.find(r=>/^(status|stage|state|phase)$/.test(r.name));return o||(s[0]?s[0]:h(`${n.plural} have no choice field to put in columns`))}function nn(n,e){let s=n.fields.filter(R),t=l=>{let d=$(n,n.roles[l]);return R(d)?d:void 0},r=s.find(l=>A(e,l.words)||A(e,b(l.name)))??t("start")??s.find(l=>/^(due|date|on|at|start|starts|begins|from|sown|when)/i.test(l.name))??s[0];if(!r)return h(`no date field on ${n.plural}`);let i=t("end")??s.find(l=>l!==r&&/^(end|ends|until|to|finish|finished|harvested|due|closes|through)/i.test(l.name)),a=n.fields.find(l=>l.type==="boolean"&&/^(done|finished|complete|completed|closed)$/.test(l.name));return{start:r,...i&&i!==r?{end:i}:{},...a?{done:a}:{}}}function an(n){let e=$(n,n.roles.start),s=$(n,n.roles.end),t=$(n,n.roles.column??n.roles.day??n.roles.columns);if(K(e)&&K(s)&&t?.type==="enum")return{start:e,end:s,column:t}}function vn(n,e,s,t){let o=[];for(let i of n.kinds)for(let a of i.edges)for(let l of a.to){let d=n.info(l);if(!d||d.kind===i.kind)continue;let c=0;e.includes(i)&&(c+=4),e.includes(d)&&(c+=4),(X.test(d.kind)||X.test(d.noun))&&(c+=3),t&&(a.words.includes(t)||d.noun===L(t))&&(c+=5),a.words.split(" ").some(u=>u.length>2&&s.includes(` ${u}`))&&(c+=2),o.push({rows:i,across:d,link:a,score:c})}let r=o.sort((i,a)=>a.score-i.score)[0];return r||h(e[0]?`${e[0].plural} are joined to nothing else, so there is no who-covers-what to draw`:"nothing here is joined to anything else, so there is no who-covers-what to draw")}function dn(n,e,s,t,o){let r=W(t);switch(n){case"columns":{if(r){let i=I(e,r);if(!i||i.type!=="enum"){let a=rn(e,r,s);if(a){let l=s.info(a.to[0]);return{lens:"coverage",kind:e.kind,across:l.kind,link:a.name}}}}return{lens:"columns",kind:e.kind,column:Dn(e,r).name}}case"calendar":{let i=nn(e,t),a=_(t);return{lens:"calendar",kind:e.kind,start:i.start.name,...i.end?{end:i.end.name}:{},...i.done?{done:i.done.name}:{},...a?{range:a}:{}}}case"timeline":{let i=an(e);if(i&&!/\bdates?\b|\bdue\b|\bdeadlines?\b|\bmonths?\b|\byears?\b/.test(t))return{lens:"timeline",kind:e.kind,start:i.start.name,end:i.end.name,column:i.column.name};let a=nn(e,t);return{lens:"calendar",kind:e.kind,start:a.start.name,...a.end?{end:a.end.name}:{},...a.done?{done:a.done.name}:{},range:_(t)??"quarter"}}case"coverage":{let i=vn(s,o,t,r);return{lens:"coverage",kind:i.rows.kind,across:i.across.kind,link:i.link.name}}case"board":{let i=$(e,e.roles.x)??e.fields.find(c=>c.name==="x"),a=$(e,e.roles.y)??e.fields.find(c=>c.name==="y");if(!K(i)||!K(a))return h(`${e.plural} have no x and y to be laid out by`);let d=s.kinds.flatMap(c=>c.edges.filter(u=>u.to.includes(e.kind)&&c.kind!==e.kind))[0]??e.edges[0];return d?{lens:"board",kind:e.kind,x:i.name,y:a.name,fill:d.name,...d.from!==e.kind?{fillFrom:"occupant"}:{}}:h(`nothing is joined to ${e.plural} to fill them`)}case"plan":{let i=$(e,e.roles.outline)??e.fields.find(a=>a.name==="outline");return i?{lens:"plan",kind:e.kind,outline:i.name}:h(`${e.plural} have no outline to draw a plan from`)}case"blocks":{let i={lens:"blocks",kind:e.kind,as:/\bcards?\b/.test(t)?"card":"row"},a=/ group(?:ed)? by ([\p{L}\p{N} -]+?)(?= (?:and|only|sorted|with)|\s*$)/u.exec(t)?.[1]??(r&&!/ sort(?:ed)? by /.test(t)?r:void 0);if(a){let c=I(e,a);if(!c||c.type!=="enum")return h(c?`${e.plural}' ${c.words} is not a choice, so they cannot be grouped by it`:`${e.plural} have nothing called ${a} to group by`);i.group=c.name}let l=/ sort(?:ed)? by ([\p{L}\p{N} -]+?)(?= (?:and|only|grouped|with)|\s*$)/u.exec(t)?.[1];if(l){let c=I(e,l);if(!c)return h(`${e.plural} have nothing called ${l} to sort by`);i.sort={by:c.name,.../\b(newest|latest|desc|descending|most)\b/.test(t)?{direction:"desc"}:{}}}let d=q(e,t);return d.length>0&&(i.where=d),i}}}function q(n,e){let s=[],t=on(e);if(t){let o=n.fields.filter(R),r=$(n,n.roles.start),i=o.find(l=>A(e,l.words))??(R(r)?r:void 0)??o[0];(!i||!R(i))&&h(`no date field on ${n.plural}`);let a=n.fields.find(l=>l.type==="boolean"&&/^(done|finished|complete|completed|closed)$/.test(l.name));s.push({expr:t.cond(i.name,/\boverdue\b|\blate\b|\bpast due\b/.test(e)?a?.name:void 0),says:t.says(i)})}if(/\bonly\b|\bjust\b|\bthat are\b|\bwhich are\b/.test(e)){for(let o of n.fields){if(o.type!=="enum")continue;let r=o.options?.find(i=>A(e,i.toLowerCase())||A(e,b(i)));r&&s.push({expr:`${o.name} == '${r.replace(/'/g,"")}'`,says:`that are ${b(r)}`})}if(/\bnot done\b|\bundone\b|\bunfinished\b|\bopen ones\b|\bstill to do\b/.test(e)){let o=n.fields.find(r=>r.type==="boolean"&&/^(done|finished|complete|completed)$/.test(r.name));o&&s.push({expr:`not ${o.name}`,says:`not ${o.words}`})}}return s}var J={columns:"A board",calendar:"A calendar",timeline:"A timeline",coverage:"A grid",board:"A layout",plan:"A plan",blocks:"A list",reach:"A picture"};function Rn(n,e){let s=e.info(n.kind),t=o=>o?$(s,o)?.words??b(o):"";switch(n.lens){case"columns":return{title:`${k(s.plural)} by ${t(n.column)}`,detail:`of ${s.plural} by ${t(n.column)}`};case"calendar":{let o=n.range??"month";if(o==="agenda")return{title:`${k(s.plural)} in date order`,detail:`of ${s.plural} in order of ${t(n.start)}`};let r=o==="years"?"year":o;return{title:`${k(s.plural)} by ${r}`,detail:`of ${s.plural} by ${t(n.start)}, a ${r} at a time`}}case"timeline":return{title:`${k(s.plural)} over the ${t(n.column)}`,detail:`of ${s.plural} from ${t(n.start)} to ${t(n.end)}, by ${t(n.column)}`};case"coverage":{let o=e.info(n.across);return{title:`${k(s.plural)} by ${o.noun}`,detail:`of which ${o.noun} covers which ${s.noun}`}}case"board":return{title:`${k(s.plural)} where they stand`,detail:`of ${s.plural} where they stand`};case"plan":return{title:`${k(s.plural)} on a plan`,detail:`of ${s.plural}`};default:{let o=[n.where?.map(r=>r.says).join(" and "),n.group?`by ${t(n.group)}`:void 0,n.sort?`in order of ${t(n.sort.by)}`:void 0].filter(r=>!!r);return{title:[k(s.plural),...o].join(" "),detail:[`of ${s.plural}`,...o].join(" ")}}}}function An(n,e){let s={title:e,on:n.kind};switch(n.lens){case"columns":return{name:"columns",...s,bindings:{[n.kind]:{column:n.column}}};case"calendar":return{name:"calendar",...s,bindings:{[n.kind]:{start:n.start,...n.end?{end:n.end}:{},...n.done?{done:n.done}:{}}},...n.range?{options:{range:n.range}}:{}};case"timeline":return{name:"timeline",...s,bindings:{[n.kind]:{start:n.start,end:n.end,column:n.column}}};case"coverage":return{name:"coverage",...s,bindings:{rows:{kind:n.kind},columns:{kind:n.across},link:{edge:n.link}}};case"board":return{name:"board",...s,bindings:{slots:{kind:n.kind},x:{field:n.x,on:"slots"},y:{field:n.y,on:"slots"},fill:{edge:n.fill}},...n.fillFrom?{options:{fillFrom:n.fillFrom}}:{}};case"plan":return{name:"plan",...s,bindings:{regions:{kind:n.kind},outline:{field:n.outline,on:"regions"}}};default:{let t=n.where?.length?` where ${n.where.map(r=>n.where.length>1?`(${r.expr})`:r.expr).join(" and ")}`:"",o={list:`all('${n.kind}')${t}`,as:n.as??"row"};return n.group&&(o.group=n.group),n.sort&&(o.sort=n.sort.direction?{by:n.sort.by,direction:n.sort.direction}:n.sort.by),o.empty="Nothing here yet.",{name:"blocks",...s,options:{blocks:[o]}}}}}function F(n,e){let{app:s}=e,t=r=>r.toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,""),o=new Set(["home","overview",...Q(s,e.views?{views:e.views}:{}).map(r=>r.slug),...(s.lenses??[]).flatMap(r=>r.title?[t(r.title)]:[])]);if(!o.has(t(n)))return n;for(let r=2;;r++)if(!o.has(t(`${n} ${r}`)))return`${n} ${r}`}var en={title:[],headline:[],text:["tone"],figure:["as","currency","label"],list:["sort","limit","group","empty","as"],progress:["label"],group:["direction"],when:["show"],divider:[]};function Ln(n,e){if(!Array.isArray(e)||e.length===0)return"it has no blocks to draw";if(e.length>40)return"it has more blocks than a place draws";let s=(i,a)=>{if(typeof i!="string"||i.trim()==="")return`its ${a} says nothing`;try{return V(i)}catch(l){return`its ${a} does not read: ${l instanceof Error?l.message.replace(/ \(at character.*$/,""):String(l)}`}},t=i=>{if(i.t==="where")return t(i.set);if(i.t==="call"&&i.fn==="all"){let a=i.args[0];return a?.t==="lit"&&typeof a.value=="string"?n.info(a.value)??null:void 0}},o=(i,a)=>{switch(i.t){case"lit":return;case"ident":return a&&!a.fields.some(l=>l.name===i.name)&&!a.edges.some(l=>l.name===i.name)?`${a.plural} have nothing called ${i.name}`:void 0;case"member":return o(i.object,a);case"list":return i.items.map(l=>o(l,a)).find(Boolean);case"unary":return o(i.operand,a);case"binary":return o(i.left,a)??o(i.right,a);case"where":{let l=t(i.set);return l===null?"Nothing by that name here":o(i.set,a)??o(i.filter,l??void 0)}case"call":return i.fn==="all"?t(i)===null?"Nothing by that name here":void 0:i.args.map(l=>o(l,a)).find(Boolean)}},r=(i,a)=>{if(a>4)return"its blocks nest deeper than a place draws";for(let l of i){if(!w(l))return"a block is not an object";let d=Object.keys(en).find(g=>g in l);if(!d)return`"${Object.keys(l)[0]??""}" is not a block a place draws`;let c=Object.keys(l).find(g=>g!==d&&g!=="key"&&!en[d].includes(g));if(c)return`a ${d} block takes no "${c}"`;let u=l[d];if(d==="list"||d==="figure"||d==="when"){if(d==="figure"&&u===!0)continue;let g=s(u,d);if(typeof g=="string")return g;let m=o(g,void 0);if(m)return m;if(d==="list"){let f=t(g);if(f==null)return f===null?"Nothing by that name here":"its list does not say which records it lists, like all('task')";for(let y of["group","sort"]){let p=l[y],S=typeof p=="string"?p:w(p)&&typeof p.by=="string"?p.by:void 0;if(p===void 0)continue;let D=S?f.fields.find(un=>un.name===S):void 0;if(!D)return`${f.plural} have nothing called ${String(S??p)} to ${y} by`;if(y==="group"&&D.type!=="enum")return`${f.plural}' ${D.words} is not a choice, so they cannot be grouped by it`}}if(d==="when"){let f=l.show;if(!Array.isArray(f))return"a when block shows a list of blocks";let y=r(f,a+1);if(y)return y}}else if(d==="group"){if(!Array.isArray(u))return"a group block holds a list of blocks";let g=r(u,a+1);if(g)return g}else{if(d!=="divider"&&typeof u!="string")return`a ${d} block says words`;if(typeof u=="string")for(let g of u.matchAll(/\{([^{}]*)\}/g)){let m=g[1].split(/\|(?![|])/)[0],f=s(m,`${d}'s braces`);if(typeof f=="string")return f;let y=o(f,void 0);if(y)return y}}}};return r(e,1)}function E(n,e,s){let t=O(n.schema,s),o=f=>({ok:!1,failed:`Couldn't draw that: ${f.replace(/\.$/,"")}.`});if(!T(e.name)||e.name==="reach")return o(`"${String(e.name)}" is not a picture the seat can draw; it draws ${H.filter(f=>f!=="reach").join(", ")}`);if(typeof e.title!="string"||e.title.trim().length===0||e.title.length>80)return o("it needs a title of a few words");if(typeof e.on!="string"||!t.tryDefinition(e.on))return o("Nothing by that name here");let r=P[e.name],i=e.bindings??{};if(r.binds==="fields")for(let[f,y]of Object.entries(i)){if(!t.tryDefinition(f))return o("Nothing by that name here");let p=Object.keys(t.tryDefinition(f).fields?.shape??{});for(let[S,D]of Object.entries(y??{}))if(typeof D!="string"||!p.includes(D))return o(`${b(f)} has no field "${String(D)}" for its ${S}`);for(let S of r.requiredRoles)if(!(S in(y??{})))return o(`a ${e.name} needs ${b(f)}'s ${S}`)}else if(r.binds==="entities")for(let f of r.requiredRoles){let y=i[f];if(!y)return o(`a ${e.name} needs its ${f}`);if(typeof y.kind=="string"&&!t.tryDefinition(y.kind))return o("Nothing by that name here")}let a={...n,schema:t,lenses:[...n.lenses??[],e]},l=a.lenses.length-1,d=U(a),c=`lenses.${l}`,u=d.findings.find(f=>f.path===c||f.path.startsWith(`${c}.`));if(u)return o(u.message.replace(/^"[^"]*" /,"it "));let g=d.undrawn.find(f=>f.index===l);if(g)return o(g.why);let m=d.drawn.find(f=>f.index===l);if(!m)return o("its bindings name something the app does not have");if(m.as==="overview")return o(`"${e.title}" is the scene's own address; give it another title`);if(e.name==="blocks"){let f=Ln(j(t),e.options?.blocks);if(f)return o(f)}return{ok:!0,drawn:m}}function G(n){return{op:"add-lens",title:n.title,lens:n.name,on:n.on,...n.bindings?{bindings:n.bindings}:{},...n.options?{options:n.options}:{}}}function In(n){return{op:"remove-lens",title:n.title,on:n.on}}var w=n=>typeof n=="object"&&n!==null&&!Array.isArray(n);function ln(n){let e=w(n)?n:{},s=String(e.lens??e.name??""),t=e.bindings,o=typeof e.on=="string"?e.on:w(t)&&P[s]?.binds==="fields"?Object.keys(t)[0]??"":"";return{name:s,title:typeof e.title=="string"?e.title.trim():"",on:o,...w(t)?{bindings:t}:{},...w(e.options)?{options:e.options}:{}}}function On(n){let e=o=>w(n.bindings?.[o])?n.bindings[o]:{},s=o=>typeof o=="string"?o:void 0,t=e(n.on);switch(n.name){case"columns":return s(t.column)?{lens:"columns",kind:n.on,column:t.column}:void 0;case"calendar":{let o=s(n.options?.range);return s(t.start)?{lens:"calendar",kind:n.on,start:t.start,...s(t.end)?{end:t.end}:{},...s(t.done)?{done:t.done}:{},...o?{range:o}:{}}:void 0}case"timeline":return s(t.start)&&s(t.end)&&s(t.column)?{lens:"timeline",kind:n.on,start:t.start,end:t.end,column:t.column}:void 0;case"coverage":{let o=w(n.bindings?.columns)?s(n.bindings.columns.kind):void 0,r=w(n.bindings?.link)?s(n.bindings.link.edge):void 0;return o&&r?{lens:"coverage",kind:n.on,across:o,link:r}:void 0}case"blocks":{let o=n.options?.blocks;if(!Array.isArray(o)||o.length!==1||!w(o[0]))return;let r=o[0],i=new RegExp(`^all\\('${n.on}'\\)(?: where (.+))?$`).exec(String(r.list??""));if(!i)return;let a=r.sort;return{lens:"blocks",kind:n.on,as:r.as==="card"?"card":"row",...typeof r.group=="string"?{group:r.group}:{},...typeof a=="string"?{sort:{by:a}}:w(a)&&typeof a.by=="string"?{sort:{by:a.by,...a.direction==="desc"?{direction:"desc"}:{}}}:{},...i[1]?{where:[{expr:i[1],says:"as asked"}]}:{}}}default:return}}function M(n,e,s,t,o){let r=j(O(n.schema,t)).info(e.on),i=On(e);return{title:e.title,said:`${J[e.name]??"A picture"} of ${r?.plural??b(e.on)}.`,kind:e.on,lens:e,drawn:s,edit:G(e),by:o,asks:[],...i?{recipe:i}:{}}}function tn(n){return{title:n.title,said:n.said,lens:{title:n.lens.title,lens:n.lens.name,on:n.lens.on,...n.lens.bindings?{bindings:n.lens.bindings}:{},...n.lens.options?{options:n.lens.options}:{}},edit:n.edit,by:n.by,check:"It draws, and graview check would take it."}}function C(n,e,s,t,o){let r=Rn(n,e),i=n.title??o??F(r.title,s),a=An(n,i),l=E(s.app,a,s.sight);return l.ok?{title:i,said:`${J[n.lens]} ${r.detail}.`,kind:n.kind,lens:a,drawn:l.drawn,edit:G(a),by:"template",asks:t,recipe:n}:{failed:l.failed,...s.lastGood?{lastGood:s.lastGood}:{}}}function zn(n,e){let s=j(O(e.app.schema,e.sight)),t=s.info(n.kind);if(!t)return{failed:"Couldn't draw that: Nothing by that name here."};let o=n.lens==="blocks"&&!n.group&&!n.sort&&!n.where?.length&&n.title===void 0;return C(o?{...n,title:F(`Every ${t.noun}`,e)}:n,s,e,[])}function jn(n,e,s,t){if(s.length>0)return s;let o=i=>{switch(n){case"columns":return i.fields.some(a=>a.type==="enum");case"calendar":return i.fields.some(R);case"timeline":return an(i)!==void 0||i.fields.some(R);case"coverage":return i.edges.some(a=>a.to.some(l=>l!==i.kind));case"board":return i.fields.some(a=>a.name==="x")&&i.fields.some(a=>a.name==="y");case"plan":return i.fields.some(a=>a.name==="outline")||i.roles.outline!==void 0;default:return!0}};return[...e.kinds.filter(o)].sort((i,a)=>Number(a.fields.some(l=>A(t,l.words)))-Number(i.fields.some(l=>A(t,l.words))))}function xn(n,e){let s=j(O(e.app.schema,e.sight)),t=sn(n),o=Sn(t);if(o.length===0)return;let r=yn(t,s),i;for(let a of o){let l=a==="coverage"?[r[0]??s.kinds[0]].filter(d=>!!d):jn(a,s,r,t);for(let d of l)try{let c=dn(a,d,s,t,r),u=C(c,s,e,[n]);if(!x(u))return u;i??=u.failed}catch(c){if(!(c instanceof N))throw c;i??=`Couldn't draw that: ${c.message}.`}l.length===0&&r.length===0&&(i??=`Couldn't draw that: nothing here has what ${J[a].toLowerCase()} needs.`)}return{failed:i??"Couldn't draw that: Nothing by that name here.",...e.lastGood?{lastGood:e.lastGood}:{}}}async function Nn(n,e){let s=e.lastGood?{lastGood:e.lastGood}:{};if(n.trim().length===0)return{failed:"Say what you would like to see, like \u201Ca board of tasks by status\u201D.",...s};let t=xn(n,e);if(t&&!x(t))return t;if(!e.complete)return t??{failed:"Couldn't draw that: drawing freely needs AI, which isn't on here. Ask for a board, a calendar, a timeline, a list or who covers what.",...s};let o=await cn(n,e,void 0);return x(o)&&t?t:o}async function En(n,e,s){let t={lastGood:n},o={...s,lastGood:n},r=j(O(s.app.schema,s.sight)),i=sn(e),a=r.info(n.kind),l=[...n.asks,e];if(!a)return{failed:"Couldn't change that: Nothing by that name here.",...t};let d=n.recipe,c=/^ (?:call|name|title) (?:it|this)? ?(.+?) $/.exec(i)??/ (?:call|name) it (.+?) $/.exec(i);try{if(c){let m=e.replace(/^.*?\b(?:call|name|title)\b\s*(?:it|this)?\s*/i,"").replace(/^["“']|["”']$/g,"").trim();if(m.length===0)return{failed:"Couldn't change that: say what to call it.",...t};let f={...n.lens,title:F(m,s)},y=E(s.app,f,s.sight);return y.ok?{...n,title:f.title,lens:f,drawn:y.drawn,edit:G(f),asks:l,...d?{recipe:{...d,title:f.title}}:{}}:{failed:y.failed,...t}}let g=/ as (?:a |an )?(board|kanban|calendar|timeline|list|table|cards|rows|grid|plan|layout)\b/.exec(i);if(g){let m=g[1]==="board"||g[1]==="kanban"?"columns":g[1]==="calendar"?"calendar":g[1]==="timeline"?"timeline":g[1]==="grid"?"coverage":g[1]==="plan"?"plan":g[1]==="layout"?"board":"blocks",f=dn(m,a,r,i,[a]),y=g[1]==="cards"?"card":g[1]==="rows"?"row":void 0,p=m==="blocks"&&d?.lens==="blocks"?{...d,...y?{as:y}:{}}:m==="blocks"&&d?.lens==="columns"?{...f,group:d.column,...y?{as:y}:{}}:f;return C(v(p),r,o,l)}if(d){let m=Kn(d,a,r,i);if(m)return C(m,r,o,l)}}catch(g){if(!(g instanceof N))throw g;return{failed:`Couldn't change that: ${g.message}.`,...t}}if(!s.complete)return{failed:"Couldn't change that: changing it freely needs AI, which isn't on here. Try \u201Cgroup by status\u201D, \u201Conly this month\u201D or \u201Cas a calendar\u201D.",...t};let u=await cn(e,o,n);return x(u)?u:{...u,asks:l}}var v=n=>{let{title:e,...s}=n;return s};function Kn(n,e,s,t){let o=/ (?:group(?:ed)?|split|organi[sz]ed?|put them|columns) by ([\p{L}\p{N} -]+?)(?= (?:and|only|with)|\s*$)/u.exec(t)?.[1]??(/^ by /.test(t)?W(t):void 0);if(o){let d=I(e,o);if(d?.type==="enum")return n.lens==="blocks"?{...v(n),group:d.name}:{lens:"columns",kind:n.kind,column:d.name};let c=rn(e,o,s);return c?{lens:"coverage",kind:n.kind,across:c.to[0],link:c.name}:h(d?`${e.plural}' ${d.words} is not a choice, so they cannot be grouped by it`:`${e.plural} have nothing called ${o} to group by`)}let r=/ (?:sort(?:ed)?|order(?:ed)?) by ([\p{L}\p{N} -]+?)(?= (?:and|only|with)|\s*$)/u.exec(t)?.[1];if(r){let d=I(e,r);return d?{...n.lens==="blocks"?v(n):{lens:"blocks",kind:n.kind,as:"row",...n.lens==="columns"?{group:n.column}:{}},sort:{by:d.name,.../\b(newest|latest|desc|descending|most)\b/.test(t)?{direction:"desc"}:{}}}:h(`${e.plural} have nothing called ${r} to sort by`)}if(/\b(?:all of them|everything|show all|clear the filter|no filter|without the filter)\b/.test(t)){if(n.lens!=="blocks"||!n.where)return h("it already shows all of them");let{where:d,...c}=v(n);return c}let i=on(t);if(i&&n.lens==="calendar"&&i.range)return{...v(n),range:i.range};if(i&&n.lens==="calendar"&&!i.range)return{lens:"blocks",kind:n.kind,as:"row",sort:{by:n.start},where:q(e,t)};let a=q(e,t);if(a.length>0){let d=n.lens==="blocks"?v(n):{lens:"blocks",kind:n.kind,as:"row",...n.lens==="columns"?{group:n.column}:{}};return{...d,where:[...d.where??[],...a]}}let l=n.lens==="calendar"?_(t):void 0;if(l)return{...v(n),range:l}}function Cn(n){return n.kinds.map(e=>{let s=e.fields.map(r=>`${r.name} (${r.type??"value"}${r.options?`: ${r.options.join(" | ")}`:""})`).join(", "),t=e.edges.map(r=>`${r.name} \u2192 ${r.to.join(" | ")}`).join(", "),o=Object.entries(e.roles).map(([r,i])=>`${r}=${i}`).join(", ");return`- ${e.kind} ("${e.plural}"): ${s}${t?`; relations: ${t}`:""}${o?`; roles: ${o}`:""}`}).join(`
2
2
  `)}var Fn=['columns \u2014 a board, records in columns by one choice field: {"lens": "columns", "on": K, "bindings": {K: {"column": "<enum field>"}}}','calendar \u2014 records on a calendar by a date: {"lens": "calendar", "on": K, "bindings": {K: {"start": "<date field>", "end"?: "<date field>", "done"?: "<boolean field>"}}, "options": {"range"?: "day" | "week" | "month" | "quarter" | "year" | "agenda"}}','timeline \u2014 minutes of a day in columns: {"lens": "timeline", "on": K, "bindings": {K: {"start": "<number field>", "end": "<number field>", "column": "<enum field>"}}}','coverage \u2014 who covers what, a grid of two kinds joined by a relation: {"lens": "coverage", "on": K, "bindings": {"rows": {"kind": K}, "columns": {"kind": J}, "link": {"edge": "<relation of K to J>"}}}',`blocks \u2014 anything else, as blocks: {"lens": "blocks", "on": K, "options": {"blocks": [{"headline": "words"}, {"list": "all('K') where <condition>", "group"?: "<enum field>", "sort"?: "<field>" | {"by": "<field>", "direction": "desc"}, "as"?: "row" | "card", "empty"?: "words"}, {"figure": "count(all('K'))", "label": "words"}]}}. Conditions read a record's own fields: status == 'open', not done, days(today(), due) <= 7.`].join(`
3
3
  `);function Gn(n,e,s){return["You draw a view of an app's data as JSON \u2014 never code. The app's kinds, their fields (with types) and relations:",Cn(e),"","The lenses you may use (prefer the first four; use blocks only when none of them fits):",Fn,"",s?`The view on screen now:
4
4
  ${JSON.stringify(s.lens)}
@@ -1,3 +1,3 @@
1
- var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{G as f,Ga as u,W as m}from"./chunk.3VEZ5MOC.js";import{b as d}from"./chunk.AJZBJBMO.js";var g=d(f(),1),n=d(m(),1),c=/^\s*(\d{1,6})[.)]\s+(.*)$/s,S=/^\s*[-*•]\s+(.*)$/s;function h(o){let s=[];for(let p of o.replace(/\r\n?/g,`
1
+ var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{G as f,Ga as u,W as m}from"./chunk.FWXW4T4I.js";import{b as d}from"./chunk.AJZBJBMO.js";var g=d(f(),1),n=d(m(),1),c=/^\s*(\d{1,6})[.)]\s+(.*)$/s,S=/^\s*[-*•]\s+(.*)$/s;function h(o){let s=[];for(let p of o.replace(/\r\n?/g,`
2
2
  `).split(/\n[ \t]*\n+/)){let t=null,a=()=>{t&&(t.t==="p"?t.lines.length>0:t.items.length>0)&&s.push(t),t=null};for(let e of p.split(`
3
- `)){let i=c.exec(e),l=i?null:S.exec(e);if(i)t?.t!=="ol"&&(a(),t={t:"ol",start:Number(i[1]),items:[]}),t.items.push(i[2]);else if(l)t?.t!=="ul"&&(a(),t={t:"ul",items:[]}),t.items.push(l[1]);else if(t&&t.t!=="p"&&/^\s+\S/.test(e)){let r=t.items;r[r.length-1]=`${r[r.length-1]} ${e.trim()}`}else e.trim().length>0&&(t?.t!=="p"&&(a(),t={t:"p",lines:[]}),t.lines.push(e.trim()))}a()}return s}function P(o){return/[\r\n]/.test(o)}var k={display:"grid",gap:"0.7em",minWidth:0,overflowWrap:"anywhere"},x={margin:0},y={margin:0,paddingInlineStart:"1.6em",display:"grid",gap:"0.3em"},B=u(()=>(__graviewPreload(import.meta.url,["./chunk.H3IGXHZR.js","./chunk.7TDML5YU.js","./chunk.3VEZ5MOC.js","./chunk.SDO3U72B.js","./chunk.6AANHELP.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.GJTEV6CK.js")));function b({text:o,className:s,style:p,markdown:t,headingsFrom:a}){return t?(0,n.jsx)(g.Suspense,{fallback:(0,n.jsx)(b,{text:o,...s?{className:s}:{},...p?{style:p}:{}}),children:(0,n.jsx)(B,{text:o,...s?{className:s}:{},...p?{style:p}:{},...a?{headingsFrom:a}:{}})}):(0,n.jsx)("div",{"data-graview-text-body":"",...s?{className:s}:{},style:{...k,...p},children:h(o).map((e,i)=>e.t==="p"?(0,n.jsx)("p",{style:x,children:e.lines.map((l,r)=>(0,n.jsxs)("span",{children:[r>0?(0,n.jsx)("br",{}):null,l]},r))},i):e.t==="ol"?(0,n.jsx)("ol",{start:e.start,style:y,children:e.items.map((l,r)=>(0,n.jsx)("li",{children:l},r))},i):(0,n.jsx)("ul",{style:y,children:e.items.map((l,r)=>(0,n.jsx)("li",{children:l},r))},i))})}export{P as a,b};
3
+ `)){let i=c.exec(e),l=i?null:S.exec(e);if(i)t?.t!=="ol"&&(a(),t={t:"ol",start:Number(i[1]),items:[]}),t.items.push(i[2]);else if(l)t?.t!=="ul"&&(a(),t={t:"ul",items:[]}),t.items.push(l[1]);else if(t&&t.t!=="p"&&/^\s+\S/.test(e)){let r=t.items;r[r.length-1]=`${r[r.length-1]} ${e.trim()}`}else e.trim().length>0&&(t?.t!=="p"&&(a(),t={t:"p",lines:[]}),t.lines.push(e.trim()))}a()}return s}function P(o){return/[\r\n]/.test(o)}var k={display:"grid",gap:"0.7em",minWidth:0,overflowWrap:"anywhere"},x={margin:0},y={margin:0,paddingInlineStart:"1.6em",display:"grid",gap:"0.3em"},B=u(()=>(__graviewPreload(import.meta.url,["./chunk.NLZHNPDU.js","./chunk.QNC2OKLF.js","./chunk.FWXW4T4I.js","./chunk.SDO3U72B.js","./chunk.DHPXRDT5.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.CUEIGKFG.js")));function b({text:o,className:s,style:p,markdown:t,headingsFrom:a}){return t?(0,n.jsx)(g.Suspense,{fallback:(0,n.jsx)(b,{text:o,...s?{className:s}:{},...p?{style:p}:{}}),children:(0,n.jsx)(B,{text:o,...s?{className:s}:{},...p?{style:p}:{},...a?{headingsFrom:a}:{}})}):(0,n.jsx)("div",{"data-graview-text-body":"",...s?{className:s}:{},style:{...k,...p},children:h(o).map((e,i)=>e.t==="p"?(0,n.jsx)("p",{style:x,children:e.lines.map((l,r)=>(0,n.jsxs)("span",{children:[r>0?(0,n.jsx)("br",{}):null,l]},r))},i):e.t==="ol"?(0,n.jsx)("ol",{start:e.start,style:y,children:e.items.map((l,r)=>(0,n.jsx)("li",{children:l},r))},i):(0,n.jsx)("ul",{style:y,children:e.items.map((l,r)=>(0,n.jsx)("li",{children:l},r))},i))})}export{P as a,b};
@@ -1,2 +1,2 @@
1
- import{g as F,l as b}from"./chunk.3DEWQDP7.js";function L(t,o){return o===1&&["every","some","sum","min","max","sort"].includes(t.fn)}function M(t){let o=new Set,e=new Set,r=[],s=[],a=new Set(F),i=(l,f)=>{switch(l.t){case"lit":return;case"ident":f||o.add(l.name);return;case"list":l.items.forEach(c=>i(c,f));return;case"member":i(l.object,f);return;case"unary":i(l.operand,f);return;case"binary":i(l.left,f),i(l.right,f);return;case"where":i(l.set,f),i(l.filter,!0);return;case"call":{e.add(l.fn);let c=(l.fn==="out"||l.fn==="in")&&l.args.length===2?l.args[1]:l.args[0],g=c?.t==="lit"&&typeof c.value=="string"?c.value:void 0;l.fn==="all"&&g&&r.push(g),(l.fn==="out"||l.fn==="in")&&g&&s.push(g),l.args.forEach((v,k)=>i(v,f||L(l,k)));return}}};return i(t,!1),{names:o,functions:e,unknownFunctions:[...e].filter(l=>!a.has(l)),sweeps:r,edges:s}}var p=class extends Error{constructor(e,r,s){super(`${e} (at character ${r+1} of "${s}")`);this.sentence=e;this.at=r;this.source=s}},D=["||","&&","==","!=","<=",">=","<",">","!","|","&","+","-","*","/","%","(",")","[","]",",","."],j={and:"&&",or:"||",not:"!"},T=2e3;function H(t){let o=[],e=0;for(;e<t.length;){let r=t[e];if(r===" "||r===" "||r===`
1
+ import{g as F,l as b}from"./chunk.TLPCYKLW.js";function L(t,o){return o===1&&["every","some","sum","min","max","sort"].includes(t.fn)}function M(t){let o=new Set,e=new Set,r=[],s=[],a=new Set(F),i=(l,f)=>{switch(l.t){case"lit":return;case"ident":f||o.add(l.name);return;case"list":l.items.forEach(c=>i(c,f));return;case"member":i(l.object,f);return;case"unary":i(l.operand,f);return;case"binary":i(l.left,f),i(l.right,f);return;case"where":i(l.set,f),i(l.filter,!0);return;case"call":{e.add(l.fn);let c=(l.fn==="out"||l.fn==="in")&&l.args.length===2?l.args[1]:l.args[0],g=c?.t==="lit"&&typeof c.value=="string"?c.value:void 0;l.fn==="all"&&g&&r.push(g),(l.fn==="out"||l.fn==="in")&&g&&s.push(g),l.args.forEach((v,k)=>i(v,f||L(l,k)));return}}};return i(t,!1),{names:o,functions:e,unknownFunctions:[...e].filter(l=>!a.has(l)),sweeps:r,edges:s}}var p=class extends Error{constructor(e,r,s){super(`${e} (at character ${r+1} of "${s}")`);this.sentence=e;this.at=r;this.source=s}},D=["||","&&","==","!=","<=",">=","<",">","!","|","&","+","-","*","/","%","(",")","[","]",",","."],j={and:"&&",or:"||",not:"!"},T=2e3;function H(t){let o=[],e=0;for(;e<t.length;){let r=t[e];if(r===" "||r===" "||r===`
2
2
  `||r==="\r"){e++;continue}if(r>="0"&&r<="9"){let a=e;for(;e<t.length&&/[0-9.]/.test(t[e]);)e++;let i=t.slice(a,e),l=Number(i);if(!Number.isFinite(l)||i.split(".").length>2)throw new p(`"${i}" is not a number`,a,t);o.push({k:"num",v:l,at:a});continue}if(r==="'"||r==='"'){let a=e++,i="";for(;e<t.length&&t[e]!==r;)t[e]==="\\"&&e+1<t.length&&e++,i+=t[e++];if(e>=t.length)throw new p("a quoted word is never closed",a,t);e++,o.push({k:"str",v:i,at:a});continue}if(/[A-Za-z_]/.test(r)){let a=e;for(;e<t.length&&/[A-Za-z0-9_]/.test(t[e]);)e++;let i=t.slice(a,e),l=Object.hasOwn(j,i)?j[i]:void 0;o.push(l?{k:"op",v:l,at:a}:{k:"id",v:i,at:a});continue}let s=D.find(a=>t.startsWith(a,e));if(!s)throw new p(`"${r}" is not part of the rule language`,e,t);o.push({k:"op",v:s,at:e}),e+=s.length}return o.push({k:"end",at:t.length}),o}function w(t){if(t.length>T)throw new p(`an expression may be at most ${T} characters`,0,t.slice(0,40));let o=H(t),e=0,r=()=>o[e],s=n=>{let d=r();return d.k==="op"&&d.v===n},a=n=>{let d=r();return d.k==="id"&&d.v===n},i=(n,d)=>{if(!s(n))throw new p(`expected ${d}`,r().at,t);e++},l=0,f=(n,d)=>{if(++l>64)throw new p("the expression nests too deeply",n,t);try{return d()}finally{l--}},c=(n,d)=>()=>{let m=d();for(;;){let y=r(),S=y.k==="op"?n.find(q=>q===y.v):y.k==="id"&&y.v==="in"&&n.includes("in")?"in":void 0;if(!S)return m;e++,m={t:"binary",op:S,left:m,right:d(),at:y.at}}},g=()=>{let n=r();if(n.k==="num")return e++,{t:"lit",value:n.v,at:n.at};if(n.k==="str")return e++,{t:"lit",value:n.v,at:n.at};if(n.k==="id"){if(e++,n.v==="true"||n.v==="false")return{t:"lit",value:n.v==="true",at:n.at};if(n.v==="null")return{t:"lit",value:null,at:n.at};if(s("(")){e++;let d=[];if(!s(")"))for(;;){if(d.push(h()),s(",")){e++;continue}break}return i(")",`")" to close ${n.v}(\u2026)`),{t:"call",fn:n.v,args:d,at:n.at}}return{t:"ident",name:n.v,at:n.at}}if(n.k==="op"&&n.v==="("){e++;let d=f(n.at,h);return i(")",'a ")"'),d}if(n.k==="op"&&n.v==="["){e++;let d=[];if(!s("]"))for(;;){if(d.push(h()),s(",")){e++;continue}break}return i("]",'a "]" to close the list'),{t:"list",items:d,at:n.at}}throw n.k==="end"?new p("the expression ends too soon",n.at,t):new p(`"${n.k==="op"?n.v:""}" cannot start a value here`,n.at,t)},v=()=>{let n=g();for(;;){if(s(".")){let d=r();e++;let m=r();if(m.k!=="id")throw new p('expected a field name after "."',m.at,t);e++,n={t:"member",object:n,name:m.v,at:d.at};continue}if(a("where")){let d=r().at;e++,n={t:"where",set:n,filter:f(d,h),at:d};continue}return n}},k=()=>{let n=r();return n.k==="op"&&(n.v==="!"||n.v==="-")?(e++,{t:"unary",op:n.v,operand:f(n.at,k),at:n.at}):v()},P=c(["*","/","%"],k),z=c(["+","-"],P),N=c(["&"],z),R=c(["|"],N),_=()=>{let n=R(),d=r(),m=d.k==="op"&&["==","!=","<","<=",">",">="].includes(d.v)?d.v:d.k==="id"&&d.v==="in"?"in":void 0;return m?(e++,{t:"binary",op:m,left:n,right:R(),at:d.at}):n},O=()=>{let n=r();return n.k==="op"&&n.v==="!"?(e++,{t:"unary",op:"!",operand:f(n.at,O),at:n.at}):_()},B=c(["&&"],O),I=c(["||"],B);function h(){return I()}let K=h();if(r().k!=="end")throw new p("there is more after the end of the expression",r().at,t);return K}function E(t){let o,e=-1,r=0;for(let s=0;s<t.length;s++){let a=t[s];if(o){a==="\\"?s++:a===o&&(o=void 0);continue}a==="'"||a==='"'?o=a:a==="("||a==="["?r++:a===")"||a==="]"?r--:a==="|"&&r===0&&(t[s+1]==="|"?s++:e=s)}if(e>0&&t.slice(e+1).trim()===x){let s=E(t.slice(0,e));if(s>=0)return s}return e}var x="capital",$=/\s*(?:'((?:[^'\\]|\\.)*)'|"((?:[^"\\]|\\.)*)")\s*(,|$)/y;function U(t){let o=E(t);if(o>=0){if(t.slice(o+1).trim()!==x)throw new u('only "capital" may follow another formatter, like {n | words | capital}');let e=t.slice(0,o);if(e.trim()===x)throw new u('"capital" is said once');return{...C(e),capital:!0}}return t.trim()===x?{args:[],capital:!0}:C(t)}function C(t){let o=t.indexOf(":"),e=(o>=0?t.slice(0,o):t).trim();if(!b.includes(e))throw new u(`"${e}" is not a formatter; use one of ${[...b,x].join(", ")}`);let r=[];if(o>=0&&e==="excerpt"){let s=t.slice(o+1).trim();if(!/^\d+$/.test(s)||Number(s)<20||Number(s)>1e3)throw new u("excerpt is told at most how many characters, 20 to 1000: {summary | excerpt: 80}");r.push(s)}else if(o>=0&&e==="money"){if(t.slice(o+1).trim()!=="0")throw new u("money is told 0 for whole units, rounded \u2014 {total | money: 0} \u2014 or nothing, for cents only where a sum has them");r.push("0")}else if(o>=0){let s=t.slice(o+1),a=0;for(;a<s.length;){$.lastIndex=a;let i=$.exec(s);if(!i)throw new u(`"${e}" is told quoted words, like ${e}: 'offer'`);if(r.push((i[1]??i[2]??"").replace(/\\(.)/g,"$1")),a=$.lastIndex,i[3]==="")break}}if(e==="plural"&&(r.length<1||r.length>2))throw new u("plural is told its noun, like {count | plural: 'offer'}, and its plural where English does not make it: plural: 'person', 'people'");if(e!=="plural"&&e!=="excerpt"&&e!=="money"&&r.length>0)throw new u(`"${e}" takes nothing after it`);return{format:e,args:r}}var u=class extends Error{constructor(e){super(e);this.sentence=e}};function Y(t){let o=[],e=0;for(;e<t.length;){let r=t.indexOf("{",e);if(r<0){o.push({text:t.slice(e)});break}r>e&&o.push({text:t.slice(e,r)});let s=t.indexOf("}",r);if(s<0)throw new u(`a "{" at character ${r+1} is never closed`);let a=t.slice(r+1,s),i=E(a),l=(i>=0?a.slice(0,i):a).trim(),f=i>=0?U(a.slice(i+1)):void 0,c=E(l);if(c>=0&&b.includes(l.slice(c+1).split(":")[0].trim()))throw new u('only "capital" may follow another formatter, like {n | words | capital}');o.push({expr:w(l),source:l,...f?.format?{format:f.format}:{},...f&&f.args.length>0?{formatArgs:f.args}:{},...f?.capital?{capital:!0}:{}}),e=s+1}return o}function A(t){let o=new Map;for(let[e,r]of Object.entries(t?.computed??{}))o.set(e,typeof r=="string"?{expr:r}:r);return o}function re(t){let o=A(t);if(o.size===0)return;let e=new Map;for(let[r,s]of o)try{e.set(r,w(s.expr))}catch(a){if(!(a instanceof p))throw a}return e}function Z(t,o,e=new Set){let r=A(t).get(o);if(!r||e.has(o))return!1;let s;try{s=w(r.expr)}catch{return!1}let a=M(s);if(a.edges.length>0||a.sweeps.length>0||[...a.functions].some(c=>c==="out"||c==="in"||c==="all"))return!1;let i=t.fields,l=c=>i instanceof Set?i.has(c):Object.hasOwn(i,c),f=new Set([...e,o]);return[...a.names].every(c=>l(c)||Z(t,c,f))}export{M as a,p as b,w as c,u as d,Y as e,A as f,re as g,Z as h};
@@ -1,6 +1,6 @@
1
- var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{G as C,La as K,W as k}from"./chunk.3VEZ5MOC.js";import{a as H}from"./chunk.SDO3U72B.js";import{b}from"./chunk.AJZBJBMO.js";var n=b(C(),1),N=450,_=10,O=t=>t instanceof HTMLInputElement?t.dataset.graviewChooseBox??void 0:void 0,q={ArrowDown:1,ArrowRight:1,ArrowUp:-1,ArrowLeft:-1,Home:-1/0,End:1/0},S=t=>t instanceof Element?t.closest("[data-graview-choose]"):null,G=t=>t instanceof HTMLElement&&(t.isContentEditable||t instanceof HTMLInputElement&&t.type!=="checkbox"||t instanceof HTMLTextAreaElement||t instanceof HTMLSelectElement);function Y(t){let[i,d]=(0,n.useState)(()=>new Set),l=(0,n.useRef)(null),x=(0,n.useRef)(null),[E,P]=(0,n.useState)(null),R=E!==null&&t.includes(E)?E:t[0],L=(0,n.useMemo)(()=>t.filter(e=>i.has(e)),[t,i]),M=(0,n.useMemo)(()=>new Set(t),[t]);(0,n.useEffect)(()=>{[...i].some(e=>!M.has(e))&&d(e=>new Set([...e].filter(o=>M.has(o))))},[M,i]);let u=(0,n.useCallback)((e,o=!1)=>{let a=l.current;d(s=>{let r=new Set(s),f=a===null?-1:t.indexOf(a),y=t.indexOf(e);if(o&&f>=0&&y>=0){let T=s.has(a);for(let p of t.slice(Math.min(f,y),Math.max(f,y)+1))T?r.add(p):r.delete(p)}else r.has(e)?r.delete(e):r.add(e);return r}),l.current=e},[t]),v=(0,n.useCallback)(e=>d(new Set(e)),[]),A=(0,n.useCallback)(()=>{l.current=null,d(new Set)},[]),c=(0,n.useRef)(null),g=(0,n.useRef)(!1),m=L.length>0,h=()=>{c.current&&clearTimeout(c.current.timer),c.current=null};(0,n.useEffect)(()=>h,[]);let B={ref:x,onKeyDown:e=>{if(G(e.target))return;let o=O(e.target);if(e.key==="Tab"&&!e.shiftKey&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&o!==void 0&&m){let s=document.querySelector('[data-testid="several-bar"]'),r=s?.querySelector("[data-mutation]:not([disabled])")??s?.querySelector("button:not([disabled])");if(r){e.preventDefault(),e.stopPropagation(),r.focus();return}}let a=q[e.key];if(o!==void 0&&a!==void 0&&!e.metaKey&&!e.ctrlKey&&!e.altKey){let s=t.indexOf(o),r=t[Math.max(0,Math.min(t.length-1,s+(Number.isFinite(a)?a:a>0?t.length:-t.length)))];if(e.preventDefault(),e.stopPropagation(),r===void 0||r===o)return;if(e.shiftKey){let f=l.current!==null&&t.includes(l.current)?l.current:o,[y,T]=[t.indexOf(f),t.indexOf(r)].sort((p,F)=>p-F);d(p=>new Set([...p,...t.slice(y,T+1)])),l.current=f}P(r),x.current?.querySelector(`[data-graview-choose-box="${CSS.escape(r)}"]`)?.focus();return}if((e.metaKey||e.ctrlKey)&&!e.altKey&&e.key.toLowerCase()==="a"){e.preventDefault(),e.stopPropagation(),v(t);return}if(e.key===" "&&!e.metaKey&&!e.ctrlKey){let s=S(e.target),r=e.target instanceof HTMLButtonElement||e.target instanceof HTMLInputElement&&e.target.type==="checkbox";if(!s||r)return;e.preventDefault(),u(s.dataset.graviewChoose,e.shiftKey)}},onFocus:e=>{let o=O(e.target);o!==void 0&&P(o)},onPointerDown:e=>{if(g.current=!1,e.pointerType==="mouse"||e.button>0)return;let o=S(e.target);if(!o||e.target instanceof HTMLInputElement&&e.target.type==="checkbox")return;let a=o.dataset.graviewChoose;h(),c.current={id:a,x:e.clientX,y:e.clientY,timer:setTimeout(()=>{c.current=null,g.current=!0,u(a)},N)}},onPointerMove:e=>{let o=c.current;o&&Math.hypot(e.clientX-o.x,e.clientY-o.y)>_&&h()},onPointerUp:h,onPointerCancel:h,onClickCapture:e=>{let o=S(e.target);if(!o||e.target instanceof HTMLInputElement&&e.target.type==="checkbox"&&e.target.hasAttribute("data-graview-choose-box"))return;if(g.current){g.current=!1,e.preventDefault(),e.stopPropagation();return}let s=o.dataset.graviewChoose;if(e.shiftKey&&(m||l.current!==null)){e.preventDefault(),e.stopPropagation(),u(s,!0);return}m&&matchMedia?.("(pointer: coarse)").matches&&(e.preventDefault(),e.stopPropagation(),u(s))},onContextMenu:e=>{(g.current||c.current)&&(e.preventDefault(),e.stopPropagation())},...m?{"data-graview-choosing":""}:{}},j=(0,n.useCallback)(e=>i.has(e),[i]);return{chosen:L,has:j,toggle:u,choose:v,clear:A,listProps:B,boxProps:(e,o)=>({type:"checkbox",className:"graview-choose-box","data-graview-choose-box":e,"aria-label":`Choose ${o}`,tabIndex:e===R?0:-1,checked:i.has(e),onChange:()=>{},onClick:a=>{a.stopPropagation(),u(e,a.shiftKey)}}),list:x}}var $=`
1
+ var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{G as C,La as K,W as k}from"./chunk.FWXW4T4I.js";import{a as H}from"./chunk.SDO3U72B.js";import{b}from"./chunk.AJZBJBMO.js";var n=b(C(),1),N=450,_=10,O=t=>t instanceof HTMLInputElement?t.dataset.graviewChooseBox??void 0:void 0,q={ArrowDown:1,ArrowRight:1,ArrowUp:-1,ArrowLeft:-1,Home:-1/0,End:1/0},S=t=>t instanceof Element?t.closest("[data-graview-choose]"):null,G=t=>t instanceof HTMLElement&&(t.isContentEditable||t instanceof HTMLInputElement&&t.type!=="checkbox"||t instanceof HTMLTextAreaElement||t instanceof HTMLSelectElement);function Y(t){let[i,d]=(0,n.useState)(()=>new Set),l=(0,n.useRef)(null),x=(0,n.useRef)(null),[E,P]=(0,n.useState)(null),R=E!==null&&t.includes(E)?E:t[0],L=(0,n.useMemo)(()=>t.filter(e=>i.has(e)),[t,i]),M=(0,n.useMemo)(()=>new Set(t),[t]);(0,n.useEffect)(()=>{[...i].some(e=>!M.has(e))&&d(e=>new Set([...e].filter(o=>M.has(o))))},[M,i]);let u=(0,n.useCallback)((e,o=!1)=>{let a=l.current;d(s=>{let r=new Set(s),f=a===null?-1:t.indexOf(a),y=t.indexOf(e);if(o&&f>=0&&y>=0){let T=s.has(a);for(let p of t.slice(Math.min(f,y),Math.max(f,y)+1))T?r.add(p):r.delete(p)}else r.has(e)?r.delete(e):r.add(e);return r}),l.current=e},[t]),v=(0,n.useCallback)(e=>d(new Set(e)),[]),A=(0,n.useCallback)(()=>{l.current=null,d(new Set)},[]),c=(0,n.useRef)(null),g=(0,n.useRef)(!1),m=L.length>0,h=()=>{c.current&&clearTimeout(c.current.timer),c.current=null};(0,n.useEffect)(()=>h,[]);let B={ref:x,onKeyDown:e=>{if(G(e.target))return;let o=O(e.target);if(e.key==="Tab"&&!e.shiftKey&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&o!==void 0&&m){let s=document.querySelector('[data-testid="several-bar"]'),r=s?.querySelector("[data-mutation]:not([disabled])")??s?.querySelector("button:not([disabled])");if(r){e.preventDefault(),e.stopPropagation(),r.focus();return}}let a=q[e.key];if(o!==void 0&&a!==void 0&&!e.metaKey&&!e.ctrlKey&&!e.altKey){let s=t.indexOf(o),r=t[Math.max(0,Math.min(t.length-1,s+(Number.isFinite(a)?a:a>0?t.length:-t.length)))];if(e.preventDefault(),e.stopPropagation(),r===void 0||r===o)return;if(e.shiftKey){let f=l.current!==null&&t.includes(l.current)?l.current:o,[y,T]=[t.indexOf(f),t.indexOf(r)].sort((p,F)=>p-F);d(p=>new Set([...p,...t.slice(y,T+1)])),l.current=f}P(r),x.current?.querySelector(`[data-graview-choose-box="${CSS.escape(r)}"]`)?.focus();return}if((e.metaKey||e.ctrlKey)&&!e.altKey&&e.key.toLowerCase()==="a"){e.preventDefault(),e.stopPropagation(),v(t);return}if(e.key===" "&&!e.metaKey&&!e.ctrlKey){let s=S(e.target),r=e.target instanceof HTMLButtonElement||e.target instanceof HTMLInputElement&&e.target.type==="checkbox";if(!s||r)return;e.preventDefault(),u(s.dataset.graviewChoose,e.shiftKey)}},onFocus:e=>{let o=O(e.target);o!==void 0&&P(o)},onPointerDown:e=>{if(g.current=!1,e.pointerType==="mouse"||e.button>0)return;let o=S(e.target);if(!o||e.target instanceof HTMLInputElement&&e.target.type==="checkbox")return;let a=o.dataset.graviewChoose;h(),c.current={id:a,x:e.clientX,y:e.clientY,timer:setTimeout(()=>{c.current=null,g.current=!0,u(a)},N)}},onPointerMove:e=>{let o=c.current;o&&Math.hypot(e.clientX-o.x,e.clientY-o.y)>_&&h()},onPointerUp:h,onPointerCancel:h,onClickCapture:e=>{let o=S(e.target);if(!o||e.target instanceof HTMLInputElement&&e.target.type==="checkbox"&&e.target.hasAttribute("data-graview-choose-box"))return;if(g.current){g.current=!1,e.preventDefault(),e.stopPropagation();return}let s=o.dataset.graviewChoose;if(e.shiftKey&&(m||l.current!==null)){e.preventDefault(),e.stopPropagation(),u(s,!0);return}m&&matchMedia?.("(pointer: coarse)").matches&&(e.preventDefault(),e.stopPropagation(),u(s))},onContextMenu:e=>{(g.current||c.current)&&(e.preventDefault(),e.stopPropagation())},...m?{"data-graview-choosing":""}:{}},j=(0,n.useCallback)(e=>i.has(e),[i]);return{chosen:L,has:j,toggle:u,choose:v,clear:A,listProps:B,boxProps:(e,o)=>({type:"checkbox",className:"graview-choose-box","data-graview-choose-box":e,"aria-label":`Choose ${o}`,tabIndex:e===R?0:-1,checked:i.has(e),onChange:()=>{},onClick:a=>{a.stopPropagation(),u(e,a.shiftKey)}}),list:x}}var $=`
2
2
  .graview-choose-box{width:24px;height:24px;margin:0;accent-color:var(--graview-accent);cursor:pointer;opacity:0}
3
3
  [data-graview-choose]:hover .graview-choose-box,[data-graview-choose]:focus-within .graview-choose-box,.graview-choose-box:focus-visible,.graview-choose-box:checked,[data-graview-choosing] .graview-choose-box{opacity:1}
4
4
  [data-graview-choose]{-webkit-touch-callout:none}
5
5
  [data-graview-choosing] [data-graview-choose]{-webkit-user-select:none;user-select:none}
6
- `;var D=b(C(),1),w=b(k(),1),I=K(H(()=>(__graviewPreload(import.meta.url,["./chunk.O2VXTYUJ.js","./chunk.64LCHHZB.js","./chunk.MB7LKKUD.js","./chunk.E423JCOS.js","./chunk.O5FTWXA2.js","./chunk.6ZENHSTQ.js","./chunk.CNN32262.js","./chunk.N5Z34V7U.js","./chunk.LOKGUALC.js","./chunk.EP5JS7ZH.js","./chunk.L7XKYGV7.js","./chunk.CE3NKAF7.js","./chunk.R3GE37OI.js","./chunk.2KCDLCB2.js","./chunk.UD7VLXPM.js","./chunk.3DEWQDP7.js","./chunk.TFJA4QV4.js","./chunk.HWFJQ42Y.js","./chunk.QUETLFBJ.js","./chunk.JULD4XFB.js","./chunk.GRTBEA7O.js","./chunk.H3IGXHZR.js","./chunk.7TDML5YU.js","./chunk.3VEZ5MOC.js","./chunk.SDO3U72B.js","./chunk.6AANHELP.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.32JE2WS7.js")))),U=I.part((t,i)=>(0,w.jsx)(t.SeveralBar,{...i}),{what:"The selection bar"});function Q(t){return t.chosen.length===0?null:(0,w.jsx)(D.Suspense,{fallback:null,children:(0,w.jsx)(U,{...t})})}var W=()=>I.prefetch();export{Y as a,$ as b,Q as c,W as d};
6
+ `;var D=b(C(),1),w=b(k(),1),I=K(H(()=>(__graviewPreload(import.meta.url,["./chunk.ZU3RPI34.js","./chunk.CCCONK73.js","./chunk.MB7LKKUD.js","./chunk.47VEV4BX.js","./chunk.FE3SINPK.js","./chunk.3D37E2G5.js","./chunk.IO5VFTXC.js","./chunk.7L3I776Z.js","./chunk.CLIC2QBA.js","./chunk.WV6SP6IJ.js","./chunk.B422DSYN.js","./chunk.ZE5RSKXF.js","./chunk.DKUEZPGR.js","./chunk.EP7YT7LT.js","./chunk.I7KN732Z.js","./chunk.TLPCYKLW.js","./chunk.MH3AQO2R.js","./chunk.J2N7EKMX.js","./chunk.P26ATAAI.js","./chunk.FIY4RUK5.js","./chunk.IY3DV52G.js","./chunk.NLZHNPDU.js","./chunk.QNC2OKLF.js","./chunk.FWXW4T4I.js","./chunk.SDO3U72B.js","./chunk.DHPXRDT5.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.6TDVNWFU.js")))),U=I.part((t,i)=>(0,w.jsx)(t.SeveralBar,{...i}),{what:"The selection bar"});function Q(t){return t.chosen.length===0?null:(0,w.jsx)(D.Suspense,{fallback:null,children:(0,w.jsx)(U,{...t})})}var W=()=>I.prefetch();export{Y as a,$ as b,Q as c,W as d};
@@ -1 +1 @@
1
- var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{a as q,l as K,s as U}from"./chunk.2TUEBU7X.js";import"./chunk.NYLKG25K.js";import{a as _}from"./chunk.TBY5IR7C.js";import"./chunk.H3W5C3XQ.js";import"./chunk.6WB2TYK7.js";import"./chunk.BJUUSIQY.js";import"./chunk.JGRSUTPJ.js";import"./chunk.XOZU4OFA.js";import"./chunk.EP5JS7ZH.js";import"./chunk.CE3NKAF7.js";import"./chunk.MIE4TJRW.js";import{x as F}from"./chunk.CFE3MHWZ.js";import"./chunk.RD2FSSLV.js";import"./chunk.HXTKBISQ.js";import"./chunk.TFJA4QV4.js";import"./chunk.HWFJQ42Y.js";import"./chunk.QUETLFBJ.js";import"./chunk.JULD4XFB.js";import"./chunk.GRTBEA7O.js";import{A as j}from"./chunk.H3IGXHZR.js";import"./chunk.7TDML5YU.js";import{G as Q,La as W,W as N,ea as $,oa as G}from"./chunk.3VEZ5MOC.js";import{a as L}from"./chunk.SDO3U72B.js";import{la as R,pa as b,ra as V,ua as I}from"./chunk.6AANHELP.js";import"./chunk.FQLNBIQ5.js";import{b as T}from"./chunk.AJZBJBMO.js";var P=new WeakMap,X=e=>e.charAt(0).toUpperCase()+e.slice(1),Z=e=>(e??"").replace(/\s+/g," ").trim();function ee(e){let n=e.cloneNode(!0);for(let o of n.querySelectorAll("span"))o.remove();return Z(n.textContent).replace(/^[▸▾]\s*/,"")}function A(e,n){let o=e.at;if(!o.isConnected||o.closest("[data-graview-popover], [data-worker-view]"))return;let r=o.closest("[data-graview-page-main], main")??o.closest("[data-graview-face]"),c=n.store.schema,t=e.about?.length===1&&e.about[0].startsWith("aggregate:")?e.about[0].slice(10):void 0,s=t&&!t.includes("+")&&c.tryDefinition(t)?t:void 0,u,a=e.on!==void 0?n.store.graph.getNode(e.on):void 0;if(a)u={name:`${X(I(c.tryDefinition(a.kind),a.kind))} page`,slot:"record",kind:a.kind,record:a.id,elements:r?[r]:[],main:r};else if(e.place!==void 0){let i=n.views.places?.().find(d=>d.as===e.place);i&&(u={name:i.title,slot:"place",kind:i.kind,place:i.as,elements:r?[r]:[],main:r})}else if(s){let i=o.closest(".graview-group-head"),d=i?.closest('[data-testid="list-group"]'),l=i?ee(i):"";u=d&&l?{name:l,slot:"group",kind:s,group:l,elements:[d],main:r}:{name:b(c,s),slot:"list",kind:s,elements:r?[r]:[],main:r}}else e.home&&(u={name:"Home",slot:"home",elements:r?[r]:[],main:r});return u}function v(e,n){let o=n.onProposeChange!==void 0&&n.composeChange!==void 0&&_(n.store,n.principal),r=e.slot!=="place"&&typeof n.keptViews?.fork=="function"&&typeof n.keptViews.draftFork=="function"&&n.keptViews.current().may.views===!0;return o||r}var x=/^\d{4}-\d{2}-\d{2}/,ne=e=>{if(typeof e=="number")return String(e);if(!(typeof e!="string"||!e.trim())){if(x.test(e)){let n=new Date(`${e.slice(0,10)}T12:00:00`);return Number.isNaN(n.getTime())?void 0:n.toLocaleDateString("en-US",{month:"short",day:"numeric"})}return e.length<=40?e:void 0}};function J(e,n){let o=[],{store:r}=n,c=(e.main?.innerText??"").toLowerCase();if((e.slot==="list"||e.slot==="group")&&e.kind){let t=r.schema.tryDefinition(e.kind),s=Object.keys(t?.fields?.shape??{}).filter(m=>!["label","name","title"].includes(m)),u=r.graph.nodesOfKind(e.kind).filter(m=>c.includes(R(t,m).toLowerCase())).slice(0,6),a=m=>V(t,m).toLowerCase(),i=s.find(m=>u.some(g=>typeof g[m]=="string"&&x.test(String(g[m])))),d=s.find(m=>{let g=u.map(y=>ne(y[m])).filter(y=>y!==void 0);return g.length>0&&g.every(y=>!c.includes(y.toLowerCase()))});if(d){let m=u.some(g=>x.test(String(g[d]??"")));o.push(m&&!/date|day/.test(a(d))?`Show the ${a(d)} date on each row`:`Show ${a(d)} on each row`)}let l=n.views.arrangement?.()?.lists?.[e.kind],p=typeof l?.sort=="string"?l.sort:l?.sort?.by;i&&p!==i&&o.push(`Sort these by ${/date|day/.test(a(i))?a(i):`${a(i)} date`}, soonest first`)}return o.push(`Make \u201C${e.name}\u201D easier to read at a glance`),o.slice(0,3)}var f=T(Q(),1);var h=T(N(),1),Y=new WeakMap,E=new Set,z=e=>{let n=Y.get(e);return n||Y.set(e,n={ask:null,doors:[],heard:new Set}),n},C=e=>e.heard.forEach(n=>n()),te=0,k=null,oe=6e4;function D(e,n){let o=z(e);o.ask=n?{...n,at:++te}:null,C(o)}var M=W(L(()=>(__graviewPreload(import.meta.url,["./chunk.QM54TGU6.js","./chunk.EGVM24ND.js","./chunk.2TUEBU7X.js","./chunk.NYLKG25K.js","./chunk.TBY5IR7C.js","./chunk.H3W5C3XQ.js","./chunk.6WB2TYK7.js","./chunk.BJUUSIQY.js","./chunk.JGRSUTPJ.js","./chunk.XOZU4OFA.js","./chunk.EP5JS7ZH.js","./chunk.CE3NKAF7.js","./chunk.MIE4TJRW.js","./chunk.CFE3MHWZ.js","./chunk.RD2FSSLV.js","./chunk.HXTKBISQ.js","./chunk.TFJA4QV4.js","./chunk.HWFJQ42Y.js","./chunk.QUETLFBJ.js","./chunk.JULD4XFB.js","./chunk.GRTBEA7O.js","./chunk.H3IGXHZR.js","./chunk.7TDML5YU.js","./chunk.3VEZ5MOC.js","./chunk.SDO3U72B.js","./chunk.6AANHELP.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.FHQ25SWY.js")))),re=M.part((e,n)=>{let o=e.SectionDrawn;return(0,h.jsx)(o,{...n})},{what:"Make this better"}),O=(e,n,o,r,c)=>({id:"make-better",at:"start",mode:{id:"better",label:"Better UI",mark:"\u2728",claims:async t=>(await K(e.ai,t,n)).about==="look",open:o,nudges:r},prepare:c}),H="graview.better.from-scene",se=3e4;function ae(e,n){let o=n.store.schema,r=n.views.places?.()??[],c=l=>r.find(p=>p.as===l),t=e.on??(e.about.length===1?e.about[0]:void 0),s=t?.startsWith("aggregate:")?t.slice(10):void 0,u=t&&!s?n.store.graph.getNode(t):void 0,a=e.place!==void 0?c(e.place):s&&!s.includes("+")?r.find(l=>l.kind===s):void 0;if(a)return{name:a.title,to:{place:a.as},part:{name:a.title,slot:"place",kind:a.kind,place:a.as,elements:[],main:null}};let i=s&&!s.includes("+")&&o.tryDefinition(s)?s:u?.kind;if(!i)return;let d=b(o,i);return{name:d,to:{list:i},part:{name:d,slot:"list",kind:i,elements:[],main:null}}}function Se(e,n){let{aiDesk:o,keptViews:r}=n,c=e.section,t=e.element??null;if(!c&&e.face==="scene"){let a=typeof document>"u"?null:document.querySelector('[data-testid="app-menu-open"][data-pages]'),i=a?{click:()=>a.dispatchEvent(new CustomEvent(j,{detail:"pages"}))}:null,d=ae(e,n);if(!i||!d||!v(d.part,n))return null;let l=p=>{try{sessionStorage.setItem(H,JSON.stringify({to:d.to,mode:p?"describe":"choose",...p?{words:p}:{},at:Date.now()}))}catch{return}i.click()};return O(n,d.name,l,()=>[`Make \u201C${d.name}\u201D easier to read at a glance`],()=>M.prefetch())}if(c){if(!r?.revise||r.current().may.views!==!0||!F(q(c)))return null;let a=i=>D(o,i?{section:c,mode:"describe",words:i,returnTo:t}:{section:c,mode:"choose",returnTo:t});return O(n,c.name,a,()=>[`Make \u201C${c.name}\u201D easier to read at a glance`],()=>M.prefetch())}let s=e.page&&e.face==="pages"?A(e.page,n):void 0;if(!s||!v(s,n))return null;P.set(e.page.at,s);let u=a=>D(o,a?{part:s,mode:"describe",words:a,returnTo:t}:{part:s,mode:"choose",returnTo:t});return O(n,s.name,u,()=>J(s,n),()=>M.prefetch())}var ie=e=>P.get(e.at)?.elements;function be(){let e=$(),{aiDesk:n,menuAt:o}=e,r=G(),c=(0,f.useRef)({here:e,goTo:r});c.current={here:e,goTo:r},(0,f.useEffect)(()=>{let l=null;try{l=JSON.parse(sessionStorage.getItem(H)??"null")}catch{return}if(!l||Date.now()-l.at>se)return;let p=l.to;try{sessionStorage.removeItem(H)}catch{}"list"in p?c.current.goTo.list(p.list):c.current.goTo.place(p.place);let m=0,g=setInterval(()=>{m+=1;let y=document.querySelector("[data-graview-page-title]"),S=document.querySelector("[data-graview-page-main]")??y?.closest("main")??y?.parentElement?.parentElement??null;if(!S||m<4){m>150&&clearInterval(g);return}clearInterval(g);let B="place"in p?{at:S,place:p.place}:{at:S,about:[`aggregate:${p.list}`]},w=A(B,c.current.here);!w||!v(w,c.current.here)||(P.set(S,w),D(c.current.here.aiDesk,l.words?{part:w,mode:"describe",words:l.words,fromScene:!0}:{part:w,mode:l.mode,fromScene:!0}))},120);return()=>clearInterval(g)},[]);let t=z(n),s=(0,f.useId)(),u=(0,f.useMemo)(()=>l=>(t.heard.add(l),()=>void t.heard.delete(l)),[t]);(0,f.useEffect)(()=>(t.doors.push(s),E.add(t),!t.ask&&k&&k.ask.part&&Date.now()-k.at<oe&&(t.ask=k.ask),k=null,C(t),()=>{if(t.doors.splice(t.doors.indexOf(s),1),t.doors.length===0&&(E.delete(t),t.ask?.part)){let l=[...E].find(p=>!p.ask);l?(l.ask=t.ask,C(l)):k={ask:t.ask,at:Date.now()}}C(t)}),[t,s]);let a=(0,f.useSyncExternalStore)(u,()=>t.doors[0]===s,()=>!1),i=(0,f.useSyncExternalStore)(u,()=>t.ask,()=>null),d=o?.section?.elements??(o?.page?ie(o.page):void 0);return!a||!i&&!d?null:i?(0,h.jsx)(f.Suspense,{fallback:null,children:(0,h.jsx)(re,{ask:i,close:()=>D(n,null)})}):(0,h.jsx)(U,{elements:d})}export{be as SectionDoor,D as askSection,Se as sectionFor};
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 q,l as K,s as U}from"./chunk.DO3FQM6R.js";import"./chunk.NYLKG25K.js";import{a as _}from"./chunk.TBY5IR7C.js";import"./chunk.VR553M6J.js";import"./chunk.DU76ASS4.js";import"./chunk.BJUUSIQY.js";import"./chunk.UPOYRCKI.js";import"./chunk.XOZU4OFA.js";import"./chunk.WV6SP6IJ.js";import"./chunk.ZE5RSKXF.js";import"./chunk.MIE4TJRW.js";import{x as F}from"./chunk.SCVKHGO3.js";import"./chunk.RD2FSSLV.js";import"./chunk.AZRICZKT.js";import"./chunk.MH3AQO2R.js";import"./chunk.J2N7EKMX.js";import"./chunk.P26ATAAI.js";import"./chunk.FIY4RUK5.js";import"./chunk.IY3DV52G.js";import{A as j}from"./chunk.NLZHNPDU.js";import"./chunk.QNC2OKLF.js";import{G as Q,La as W,W as N,ea as $,oa as G}from"./chunk.FWXW4T4I.js";import{a as L}from"./chunk.SDO3U72B.js";import{la as R,pa as b,ra as V,ua as I}from"./chunk.DHPXRDT5.js";import"./chunk.FQLNBIQ5.js";import{b as T}from"./chunk.AJZBJBMO.js";var P=new WeakMap,X=e=>e.charAt(0).toUpperCase()+e.slice(1),Z=e=>(e??"").replace(/\s+/g," ").trim();function ee(e){let n=e.cloneNode(!0);for(let o of n.querySelectorAll("span"))o.remove();return Z(n.textContent).replace(/^[▸▾]\s*/,"")}function A(e,n){let o=e.at;if(!o.isConnected||o.closest("[data-graview-popover], [data-worker-view]"))return;let r=o.closest("[data-graview-page-main], main")??o.closest("[data-graview-face]"),c=n.store.schema,t=e.about?.length===1&&e.about[0].startsWith("aggregate:")?e.about[0].slice(10):void 0,s=t&&!t.includes("+")&&c.tryDefinition(t)?t:void 0,u,a=e.on!==void 0?n.store.graph.getNode(e.on):void 0;if(a)u={name:`${X(I(c.tryDefinition(a.kind),a.kind))} page`,slot:"record",kind:a.kind,record:a.id,elements:r?[r]:[],main:r};else if(e.place!==void 0){let i=n.views.places?.().find(d=>d.as===e.place);i&&(u={name:i.title,slot:"place",kind:i.kind,place:i.as,elements:r?[r]:[],main:r})}else if(s){let i=o.closest(".graview-group-head"),d=i?.closest('[data-testid="list-group"]'),l=i?ee(i):"";u=d&&l?{name:l,slot:"group",kind:s,group:l,elements:[d],main:r}:{name:b(c,s),slot:"list",kind:s,elements:r?[r]:[],main:r}}else e.home&&(u={name:"Home",slot:"home",elements:r?[r]:[],main:r});return u}function v(e,n){let o=n.onProposeChange!==void 0&&n.composeChange!==void 0&&_(n.store,n.principal),r=e.slot!=="place"&&typeof n.keptViews?.fork=="function"&&typeof n.keptViews.draftFork=="function"&&n.keptViews.current().may.views===!0;return o||r}var x=/^\d{4}-\d{2}-\d{2}/,ne=e=>{if(typeof e=="number")return String(e);if(!(typeof e!="string"||!e.trim())){if(x.test(e)){let n=new Date(`${e.slice(0,10)}T12:00:00`);return Number.isNaN(n.getTime())?void 0:n.toLocaleDateString("en-US",{month:"short",day:"numeric"})}return e.length<=40?e:void 0}};function J(e,n){let o=[],{store:r}=n,c=(e.main?.innerText??"").toLowerCase();if((e.slot==="list"||e.slot==="group")&&e.kind){let t=r.schema.tryDefinition(e.kind),s=Object.keys(t?.fields?.shape??{}).filter(m=>!["label","name","title"].includes(m)),u=r.graph.nodesOfKind(e.kind).filter(m=>c.includes(R(t,m).toLowerCase())).slice(0,6),a=m=>V(t,m).toLowerCase(),i=s.find(m=>u.some(g=>typeof g[m]=="string"&&x.test(String(g[m])))),d=s.find(m=>{let g=u.map(y=>ne(y[m])).filter(y=>y!==void 0);return g.length>0&&g.every(y=>!c.includes(y.toLowerCase()))});if(d){let m=u.some(g=>x.test(String(g[d]??"")));o.push(m&&!/date|day/.test(a(d))?`Show the ${a(d)} date on each row`:`Show ${a(d)} on each row`)}let l=n.views.arrangement?.()?.lists?.[e.kind],p=typeof l?.sort=="string"?l.sort:l?.sort?.by;i&&p!==i&&o.push(`Sort these by ${/date|day/.test(a(i))?a(i):`${a(i)} date`}, soonest first`)}return o.push(`Make \u201C${e.name}\u201D easier to read at a glance`),o.slice(0,3)}var f=T(Q(),1);var h=T(N(),1),Y=new WeakMap,E=new Set,z=e=>{let n=Y.get(e);return n||Y.set(e,n={ask:null,doors:[],heard:new Set}),n},C=e=>e.heard.forEach(n=>n()),te=0,k=null,oe=6e4;function D(e,n){let o=z(e);o.ask=n?{...n,at:++te}:null,C(o)}var M=W(L(()=>(__graviewPreload(import.meta.url,["./chunk.AG7WJYM5.js","./chunk.KHKCTVHD.js","./chunk.DO3FQM6R.js","./chunk.NYLKG25K.js","./chunk.TBY5IR7C.js","./chunk.VR553M6J.js","./chunk.DU76ASS4.js","./chunk.BJUUSIQY.js","./chunk.UPOYRCKI.js","./chunk.XOZU4OFA.js","./chunk.WV6SP6IJ.js","./chunk.ZE5RSKXF.js","./chunk.MIE4TJRW.js","./chunk.SCVKHGO3.js","./chunk.RD2FSSLV.js","./chunk.AZRICZKT.js","./chunk.MH3AQO2R.js","./chunk.J2N7EKMX.js","./chunk.P26ATAAI.js","./chunk.FIY4RUK5.js","./chunk.IY3DV52G.js","./chunk.NLZHNPDU.js","./chunk.QNC2OKLF.js","./chunk.FWXW4T4I.js","./chunk.SDO3U72B.js","./chunk.DHPXRDT5.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.5DU6FA5R.js")))),re=M.part((e,n)=>{let o=e.SectionDrawn;return(0,h.jsx)(o,{...n})},{what:"Make this better"}),O=(e,n,o,r,c)=>({id:"make-better",at:"start",mode:{id:"better",label:"Better UI",mark:"\u2728",claims:async t=>(await K(e.ai,t,n)).about==="look",open:o,nudges:r},prepare:c}),H="graview.better.from-scene",se=3e4;function ae(e,n){let o=n.store.schema,r=n.views.places?.()??[],c=l=>r.find(p=>p.as===l),t=e.on??(e.about.length===1?e.about[0]:void 0),s=t?.startsWith("aggregate:")?t.slice(10):void 0,u=t&&!s?n.store.graph.getNode(t):void 0,a=e.place!==void 0?c(e.place):s&&!s.includes("+")?r.find(l=>l.kind===s):void 0;if(a)return{name:a.title,to:{place:a.as},part:{name:a.title,slot:"place",kind:a.kind,place:a.as,elements:[],main:null}};let i=s&&!s.includes("+")&&o.tryDefinition(s)?s:u?.kind;if(!i)return;let d=b(o,i);return{name:d,to:{list:i},part:{name:d,slot:"list",kind:i,elements:[],main:null}}}function Se(e,n){let{aiDesk:o,keptViews:r}=n,c=e.section,t=e.element??null;if(!c&&e.face==="scene"){let a=typeof document>"u"?null:document.querySelector('[data-testid="app-menu-open"][data-pages]'),i=a?{click:()=>a.dispatchEvent(new CustomEvent(j,{detail:"pages"}))}:null,d=ae(e,n);if(!i||!d||!v(d.part,n))return null;let l=p=>{try{sessionStorage.setItem(H,JSON.stringify({to:d.to,mode:p?"describe":"choose",...p?{words:p}:{},at:Date.now()}))}catch{return}i.click()};return O(n,d.name,l,()=>[`Make \u201C${d.name}\u201D easier to read at a glance`],()=>M.prefetch())}if(c){if(!r?.revise||r.current().may.views!==!0||!F(q(c)))return null;let a=i=>D(o,i?{section:c,mode:"describe",words:i,returnTo:t}:{section:c,mode:"choose",returnTo:t});return O(n,c.name,a,()=>[`Make \u201C${c.name}\u201D easier to read at a glance`],()=>M.prefetch())}let s=e.page&&e.face==="pages"?A(e.page,n):void 0;if(!s||!v(s,n))return null;P.set(e.page.at,s);let u=a=>D(o,a?{part:s,mode:"describe",words:a,returnTo:t}:{part:s,mode:"choose",returnTo:t});return O(n,s.name,u,()=>J(s,n),()=>M.prefetch())}var ie=e=>P.get(e.at)?.elements;function be(){let e=$(),{aiDesk:n,menuAt:o}=e,r=G(),c=(0,f.useRef)({here:e,goTo:r});c.current={here:e,goTo:r},(0,f.useEffect)(()=>{let l=null;try{l=JSON.parse(sessionStorage.getItem(H)??"null")}catch{return}if(!l||Date.now()-l.at>se)return;let p=l.to;try{sessionStorage.removeItem(H)}catch{}"list"in p?c.current.goTo.list(p.list):c.current.goTo.place(p.place);let m=0,g=setInterval(()=>{m+=1;let y=document.querySelector("[data-graview-page-title]"),S=document.querySelector("[data-graview-page-main]")??y?.closest("main")??y?.parentElement?.parentElement??null;if(!S||m<4){m>150&&clearInterval(g);return}clearInterval(g);let B="place"in p?{at:S,place:p.place}:{at:S,about:[`aggregate:${p.list}`]},w=A(B,c.current.here);!w||!v(w,c.current.here)||(P.set(S,w),D(c.current.here.aiDesk,l.words?{part:w,mode:"describe",words:l.words,fromScene:!0}:{part:w,mode:l.mode,fromScene:!0}))},120);return()=>clearInterval(g)},[]);let t=z(n),s=(0,f.useId)(),u=(0,f.useMemo)(()=>l=>(t.heard.add(l),()=>void t.heard.delete(l)),[t]);(0,f.useEffect)(()=>(t.doors.push(s),E.add(t),!t.ask&&k&&k.ask.part&&Date.now()-k.at<oe&&(t.ask=k.ask),k=null,C(t),()=>{if(t.doors.splice(t.doors.indexOf(s),1),t.doors.length===0&&(E.delete(t),t.ask?.part)){let l=[...E].find(p=>!p.ask);l?(l.ask=t.ask,C(l)):k={ask:t.ask,at:Date.now()}}C(t)}),[t,s]);let a=(0,f.useSyncExternalStore)(u,()=>t.doors[0]===s,()=>!1),i=(0,f.useSyncExternalStore)(u,()=>t.ask,()=>null),d=o?.section?.elements??(o?.page?ie(o.page):void 0);return!a||!i&&!d?null:i?(0,h.jsx)(f.Suspense,{fallback:null,children:(0,h.jsx)(re,{ask:i,close:()=>D(n,null)})}):(0,h.jsx)(U,{elements:d})}export{be as SectionDoor,D as askSection,Se as sectionFor};
@@ -1 +1 @@
1
- import{$d as k,Vd as w,Wd as v,Yd as $,Zd as c,ae as x,ie as f,me as b,ne as S,oe as P,pa as u,pe as A,se as L,te as N}from"./chunk.6AANHELP.js";function T(s){if(!(s.attach==="home"||s.cardinality==="one"||!s.title))return{kind:s.attach,title:s.title,as:$(s.title),name:s.name,lens:"view",...s.hidden?{hidden:!0}:{}}}function G(s,r=[]){let a=[];for(let n of f(s).drawn)for(let i of n.kinds)a.push({kind:i,title:n.title,as:n.as,...n.across?{across:n.across}:{},...n.kinds.length>1?{over:n.kinds}:{},...n.hidden?{hidden:!0}:{}});for(let n of[...s.views?.places?.()??[],...r.flatMap(i=>T(i)??[])])a.some(i=>i.kind===n.kind&&i.as===n.as)||a.push(n);return a}function J(s,r={}){return V(s.schema,G(s,r.views),{...s.pages?{pages:s.pages}:{},lenses:f(s).drawn,home:(s.home?.length??0)>0})}function V(s,r,a={}){let{pages:n}=a,i=s.kinds,d=r.filter(e=>i.includes(e.kind)),o=N(n?.first,s,d),O=new Set(n?.hide??[]),p=L(i,n?.order,d),m=p.flatMap(e=>e.view?[]:[e.kind]),E=p.flatMap(e=>e.view?[e.view]:[]),h=[{slug:b,title:"Home",kind:null,cardinality:"many",address:"/",stop:"#",...o?.to==="home"||o===void 0&&a.home?{first:!0}:{}},{slug:S,title:A(n),kind:null,cardinality:"many",address:P,stop:"#"}],H=v([...d].sort((e,t)=>m.indexOf(e.kind)-m.indexOf(t.kind))),g=e=>{let t=a.lenses?.find(l=>l.as===e.as&&l.kinds.includes(e.kind)),y=x(e,d);return{slug:e.as,title:e.title,kind:e.kind,...e.over?{over:e.over.filter(l=>i.includes(l))}:{},cardinality:"many",address:k(e.as,y?c(s,e.kind).slice(1):void 0),stop:y?`#focus=aggregate:${e.kind}&in.view=${encodeURIComponent(e.as)}`:`#view=${encodeURIComponent(e.as)}`,...t?{lens:t.lens}:{},...e.name!==void 0?{view:e.name}:{},...e.hidden?{hidden:!0}:{},...o?.to==="place"&&o.place.as===e.as&&(o.place.kind===e.kind||e.over?.includes(o.place.kind))?{first:!0}:{}}};for(let e of H)E.some(t=>w(t,e))||h.push(g(e));for(let e of p){if(e.view){h.push(g(e.view));continue}let t=e.kind;h.push({slug:c(s,t).slice(1),title:u(s,t),kind:t,cardinality:"many",address:c(s,t),stop:`#focus=aggregate:${t}`,...O.has(t)?{hidden:!0}:{},...o?.to==="kind"&&o.kind===t?{first:!0}:{}})}return h}export{T as a,J as b,V as c};
1
+ import{$d as k,Vd as w,Wd as v,Yd as $,Zd as c,ae as x,ie as f,me as b,ne as S,oe as P,pa as u,pe as A,se as L,te as N}from"./chunk.DHPXRDT5.js";function T(s){if(!(s.attach==="home"||s.cardinality==="one"||!s.title))return{kind:s.attach,title:s.title,as:$(s.title),name:s.name,lens:"view",...s.hidden?{hidden:!0}:{}}}function G(s,r=[]){let a=[];for(let n of f(s).drawn)for(let i of n.kinds)a.push({kind:i,title:n.title,as:n.as,...n.across?{across:n.across}:{},...n.kinds.length>1?{over:n.kinds}:{},...n.hidden?{hidden:!0}:{}});for(let n of[...s.views?.places?.()??[],...r.flatMap(i=>T(i)??[])])a.some(i=>i.kind===n.kind&&i.as===n.as)||a.push(n);return a}function J(s,r={}){return V(s.schema,G(s,r.views),{...s.pages?{pages:s.pages}:{},lenses:f(s).drawn,home:(s.home?.length??0)>0})}function V(s,r,a={}){let{pages:n}=a,i=s.kinds,d=r.filter(e=>i.includes(e.kind)),o=N(n?.first,s,d),O=new Set(n?.hide??[]),p=L(i,n?.order,d),m=p.flatMap(e=>e.view?[]:[e.kind]),E=p.flatMap(e=>e.view?[e.view]:[]),h=[{slug:b,title:"Home",kind:null,cardinality:"many",address:"/",stop:"#",...o?.to==="home"||o===void 0&&a.home?{first:!0}:{}},{slug:S,title:A(n),kind:null,cardinality:"many",address:P,stop:"#"}],H=v([...d].sort((e,t)=>m.indexOf(e.kind)-m.indexOf(t.kind))),g=e=>{let t=a.lenses?.find(l=>l.as===e.as&&l.kinds.includes(e.kind)),y=x(e,d);return{slug:e.as,title:e.title,kind:e.kind,...e.over?{over:e.over.filter(l=>i.includes(l))}:{},cardinality:"many",address:k(e.as,y?c(s,e.kind).slice(1):void 0),stop:y?`#focus=aggregate:${e.kind}&in.view=${encodeURIComponent(e.as)}`:`#view=${encodeURIComponent(e.as)}`,...t?{lens:t.lens}:{},...e.name!==void 0?{view:e.name}:{},...e.hidden?{hidden:!0}:{},...o?.to==="place"&&o.place.as===e.as&&(o.place.kind===e.kind||e.over?.includes(o.place.kind))?{first:!0}:{}}};for(let e of H)E.some(t=>w(t,e))||h.push(g(e));for(let e of p){if(e.view){h.push(g(e.view));continue}let t=e.kind;h.push({slug:c(s,t).slice(1),title:u(s,t),kind:t,cardinality:"many",address:c(s,t),stop:`#focus=aggregate:${t}`,...O.has(t)?{hidden:!0}:{},...o?.to==="kind"&&o.kind===t?{first:!0}:{}})}return h}export{T as a,J as b,V as c};
@@ -1,4 +1,4 @@
1
- var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{a as Mt}from"./chunk.JO2X52D4.js";import{a as Ae,b as me}from"./chunk.ZRBGYXAO.js";import{a as pe}from"./chunk.CEQQIW7Z.js";import{a as St,b as At,c as Gt,d as fe,e as Ot,f as Kt,g as Pt}from"./chunk.VES4XMZX.js";import{a as Ee,e as xt}from"./chunk.BBLIT7S7.js";import{b as wt,h as vt,i as kt,k as bt}from"./chunk.CGBOPPNL.js";import"./chunk.LMTG5NPG.js";import{h as Tt}from"./chunk.GG47EIKO.js";import"./chunk.NYLKG25K.js";import{e as Rt}from"./chunk.MK5RPEB2.js";import{c as Wt,f as We,g as Re}from"./chunk.TOUSIUJF.js";import{d as Et}from"./chunk.QDVGHI7R.js";import{b as ue,e as ce}from"./chunk.KUCBNMIY.js";import"./chunk.M5FP4Y4Q.js";import"./chunk.CNN32262.js";import{a as B}from"./chunk.SDO3U72B.js";import"./chunk.6AANHELP.js";import"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";var Lt=["good","warn","bad","neutral","accent"],_t=["value","max","aria-label","placeholder","disabled"],Vt=["click","change"],Ge=["_blank","_self"],It=["section","div","span","strong","p","hr","a","button","input","progress"],ge={type:{oneOf:Lt}},Oe={"gv-card":{host:"section",properties:{tone:ge},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:ge},events:{},children:"text"},"gv-badge":{host:"span",properties:{tone:ge},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:ge,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"}},Ke=1e4;var fr=0,mr=1,gr=2,yr=3,Ct=1,hr=2,wr=3,vr=1,kr=3,br=8,Pe="~",Le=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),ne=t=>typeof t=="object"&&t!==null&&!Array.isArray(t);function Nt(t,e){return e.type==="url"?"href":e.as??`data-gv-${t.toLowerCase()}`}var xr=2e3;function Ht(t,e){if(e==null)return{ok:!0,value:null};let a=t.type;if(a==="boolean")return typeof e=="boolean"?{ok:!0,value:e}:{ok:!1,reason:"value"};if(a==="number")return typeof e=="number"&&Number.isFinite(e)?{ok:!0,value:String(e)}:{ok:!1,reason:"value"};if(typeof e!="string"||e.length>xr)return{ok:!1,reason:a==="url"?"url":"value"};if(typeof a=="object")return a.oneOf.includes(e)?{ok:!0,value:e}:{ok:!1,reason:"value"};if(a==="url"){let p;try{p=new URL(e)}catch{return{ok:!1,reason:"url"}}return p.protocol!=="https:"||p.hostname===""||!/^https:\/\//i.test(e)?{ok:!1,reason:"url"}:{ok:!0,value:p.href}}return{ok:!0,value:e}}function Sr(t){let e=t.host==="a";return It.includes(t.host)&&(t.target===void 0||e&&Ge.includes(t.target))&&Object.values(t.properties).every(a=>a.type!=="url"||e)&&Object.values(t.properties).every(a=>a.as===void 0||a.type!=="url"&&_t.includes(a.as))&&Object.values(t.events).every(a=>Vt.includes(a.from))}function _e(t,e){let a=e.kit??Oe,p=e.maxNodes??2e3,o=t.ownerDocument,m=[],g=new Map,w={dom:t,name:Pe,component:{host:"div",properties:{},events:{},children:"any"},children:[],listeners:new Map,id:Pe};g.set(Pe,w);let E=e.links?new Set(e.links.origins.flatMap(n=>{try{let c=new URL(n);return c.protocol==="https:"&&c.hostname!==""?[c.origin]:[]}catch{return[]}})):void 0,A=0,y=0,V=!1,f=n=>{m.push(n),m.length>200&&m.shift()},v=()=>({dom:o.createComment(""),children:[],refused:!0,listeners:new Map}),G=(n,c,h)=>{let k=n.component;if(!Le(k.properties,c))return f({reason:"property",element:n.name,name:c});let l=k.properties[c],d=Ht(l,h),b=d.ok&&l.type==="url"&&E&&typeof d.value=="string"&&!E.has(new URL(d.value).origin)?{ok:!1,reason:"url"}:d,K=n.dom,R=Nt(c,l);if(!b.ok)return K.removeAttribute(R),f({reason:b.reason,element:n.name,name:c});let P=b.value;P===null||P===!1?K.removeAttribute(R):K.setAttribute(R,P===!0?"":P),R==="value"&&"value"in K&&(K.value=typeof P=="string"?P:""),R==="disabled"&&"disabled"in K&&(K.disabled=P!==null&&P!==!1)},S=(n,c,h)=>{let k=n.component;if(!Le(k.events,c))return f({reason:"event",element:n.name,name:c});let l=n.listeners.get(c);if(l&&(l(),n.listeners.delete(c),y-=1),h==null)return;if(!ne(h)||typeof h.listener!="number")return f({reason:"value",element:n.name,name:c});let d=h.listener,b=k.events[c],K=n.dom,R=()=>e.onEvent(d,b.detail==="value"?String(K.value??""):void 0);K.addEventListener(b.from,R),n.listeners.set(c,()=>K.removeEventListener(b.from,R)),y+=1},W=n=>{if(!n.refused){A-=1,n.id!==void 0&&g.delete(n.id);for(let c of n.listeners.values())c();y-=n.listeners.size,n.listeners.clear();for(let c of n.children)W(c)}},T=(n,c)=>{if(!ne(n)||typeof n.id!="string"||g.has(n.id))return f({reason:"record"}),v();if(A>=p)return f({reason:"budget"}),V||(V=!0,e.onOverBudget?.()),v();let h=n.id,k=c.component.children;if(n.type===br)return v();if(n.type===kr){if(k==="none")return f({reason:"child",element:c.name}),v();let R={dom:o.createTextNode(String(n.data??"").slice(0,Ke)),children:[],text:!0,listeners:new Map,id:h};return g.set(h,R),A+=1,R}if(n.type!==vr)return f({reason:"record"}),v();let l=String(n.element);if(!Le(a,l)||!Sr(a[l]))return f({reason:"element",element:l}),v();if(k!=="any")return f({reason:"child",element:l}),v();let d=a[l],b=o.createElement(d.host);b.setAttribute("data-gv",l.replace(/^gv-/,"")),b.className=`graview-guest-${l.replace(/^gv-/,"")}`,d.host==="a"&&(b.setAttribute("rel","noopener noreferrer"),b.setAttribute("target",d.target??"_blank"),b.setAttribute("referrerpolicy","no-referrer")),d.host==="button"&&b.setAttribute("type","button");let K={dom:b,name:l,component:d,children:[],listeners:new Map,id:h};if(g.set(h,K),A+=1,ne(n.properties))for(let[R,P]of Object.entries(n.properties))G(K,R,P);if(ne(n.attributes))for(let R of Object.keys(n.attributes))f({reason:"attribute",element:l,name:R});if(ne(n.eventListeners))for(let[R,P]of Object.entries(n.eventListeners))S(K,R,P);if(Array.isArray(n.children))for(let R of n.children){let P=T(R,K);K.children.push(P),b.appendChild(P.dom)}return K},O=n=>{if(!Array.isArray(n))return f({reason:"record"});let[c,h]=n,k=typeof h=="string"?g.get(h):void 0;if(!k)return f({reason:"record"});switch(c){case fr:{if(k.text)return f({reason:"record"});let l=Number(n[3]),d=Number.isInteger(l)&&l>=0&&l<=k.children.length?l:k.children.length,b=T(n[2],k);k.dom.insertBefore(b.dom,k.children[d]?.dom??null),k.children.splice(d,0,b);return}case mr:{let l=Number(n[2]),d=k.children[l];if(!d)return f({reason:"record"});k.children.splice(l,1),d.dom.parentNode?.removeChild(d.dom),W(d);return}case gr:if(!k.text)return f({reason:"record"});k.dom.data=String(n[2]??"").slice(0,Ke);return;case yr:{if(k===w||k.text)return f({reason:"record"});let l=String(n[2]),d=n[4]??Ct;return d===Ct?G(k,l,n[3]):d===wr?S(k,l,n[3]):f(d===hr?{reason:"attribute",element:k.name,name:l}:{reason:"record"})}default:return f({reason:"record"})}};return{apply(n,c){if(!Array.isArray(n))return f({reason:"record"}),!0;for(let h=0;h<n.length;h+=1){if(c&&h%32===0&&c())return!1;O(n[h])}return!0},get refused(){return m},get size(){return A},get listening(){return y},dispose(){for(let n of w.children)W(n);w.children.length=0,t.replaceChildren()}}}var Ve=`
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 Mt}from"./chunk.JO2X52D4.js";import{a as Ae,b as me}from"./chunk.ZRBGYXAO.js";import{a as pe}from"./chunk.CEQQIW7Z.js";import{a as St,b as At,c as Gt,d as fe,e as Ot,f as Kt,g as Pt}from"./chunk.IYHY4VEC.js";import{a as Ee,e as xt}from"./chunk.BBLIT7S7.js";import{b as wt,h as vt,i as kt,k as bt}from"./chunk.TQRC5VAM.js";import"./chunk.O7NYSO6F.js";import{h as Tt}from"./chunk.GG47EIKO.js";import"./chunk.NYLKG25K.js";import{e as Rt}from"./chunk.WQ7K5O2I.js";import{c as Wt,f as We,g as Re}from"./chunk.ZT3ZG52B.js";import{d as Et}from"./chunk.QDVGHI7R.js";import{b as ue,e as ce}from"./chunk.ROYCJXPE.js";import"./chunk.M5FP4Y4Q.js";import"./chunk.IO5VFTXC.js";import{a as B}from"./chunk.SDO3U72B.js";import"./chunk.DHPXRDT5.js";import"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";var Lt=["good","warn","bad","neutral","accent"],_t=["value","max","aria-label","placeholder","disabled"],Vt=["click","change"],Ge=["_blank","_self"],It=["section","div","span","strong","p","hr","a","button","input","progress"],ge={type:{oneOf:Lt}},Oe={"gv-card":{host:"section",properties:{tone:ge},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:ge},events:{},children:"text"},"gv-badge":{host:"span",properties:{tone:ge},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:ge,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"}},Ke=1e4;var fr=0,mr=1,gr=2,yr=3,Ct=1,hr=2,wr=3,vr=1,kr=3,br=8,Pe="~",Le=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),ne=t=>typeof t=="object"&&t!==null&&!Array.isArray(t);function Nt(t,e){return e.type==="url"?"href":e.as??`data-gv-${t.toLowerCase()}`}var xr=2e3;function Ht(t,e){if(e==null)return{ok:!0,value:null};let a=t.type;if(a==="boolean")return typeof e=="boolean"?{ok:!0,value:e}:{ok:!1,reason:"value"};if(a==="number")return typeof e=="number"&&Number.isFinite(e)?{ok:!0,value:String(e)}:{ok:!1,reason:"value"};if(typeof e!="string"||e.length>xr)return{ok:!1,reason:a==="url"?"url":"value"};if(typeof a=="object")return a.oneOf.includes(e)?{ok:!0,value:e}:{ok:!1,reason:"value"};if(a==="url"){let p;try{p=new URL(e)}catch{return{ok:!1,reason:"url"}}return p.protocol!=="https:"||p.hostname===""||!/^https:\/\//i.test(e)?{ok:!1,reason:"url"}:{ok:!0,value:p.href}}return{ok:!0,value:e}}function Sr(t){let e=t.host==="a";return It.includes(t.host)&&(t.target===void 0||e&&Ge.includes(t.target))&&Object.values(t.properties).every(a=>a.type!=="url"||e)&&Object.values(t.properties).every(a=>a.as===void 0||a.type!=="url"&&_t.includes(a.as))&&Object.values(t.events).every(a=>Vt.includes(a.from))}function _e(t,e){let a=e.kit??Oe,p=e.maxNodes??2e3,o=t.ownerDocument,m=[],g=new Map,w={dom:t,name:Pe,component:{host:"div",properties:{},events:{},children:"any"},children:[],listeners:new Map,id:Pe};g.set(Pe,w);let E=e.links?new Set(e.links.origins.flatMap(n=>{try{let c=new URL(n);return c.protocol==="https:"&&c.hostname!==""?[c.origin]:[]}catch{return[]}})):void 0,A=0,y=0,V=!1,f=n=>{m.push(n),m.length>200&&m.shift()},v=()=>({dom:o.createComment(""),children:[],refused:!0,listeners:new Map}),G=(n,c,h)=>{let k=n.component;if(!Le(k.properties,c))return f({reason:"property",element:n.name,name:c});let l=k.properties[c],d=Ht(l,h),b=d.ok&&l.type==="url"&&E&&typeof d.value=="string"&&!E.has(new URL(d.value).origin)?{ok:!1,reason:"url"}:d,K=n.dom,R=Nt(c,l);if(!b.ok)return K.removeAttribute(R),f({reason:b.reason,element:n.name,name:c});let P=b.value;P===null||P===!1?K.removeAttribute(R):K.setAttribute(R,P===!0?"":P),R==="value"&&"value"in K&&(K.value=typeof P=="string"?P:""),R==="disabled"&&"disabled"in K&&(K.disabled=P!==null&&P!==!1)},S=(n,c,h)=>{let k=n.component;if(!Le(k.events,c))return f({reason:"event",element:n.name,name:c});let l=n.listeners.get(c);if(l&&(l(),n.listeners.delete(c),y-=1),h==null)return;if(!ne(h)||typeof h.listener!="number")return f({reason:"value",element:n.name,name:c});let d=h.listener,b=k.events[c],K=n.dom,R=()=>e.onEvent(d,b.detail==="value"?String(K.value??""):void 0);K.addEventListener(b.from,R),n.listeners.set(c,()=>K.removeEventListener(b.from,R)),y+=1},W=n=>{if(!n.refused){A-=1,n.id!==void 0&&g.delete(n.id);for(let c of n.listeners.values())c();y-=n.listeners.size,n.listeners.clear();for(let c of n.children)W(c)}},T=(n,c)=>{if(!ne(n)||typeof n.id!="string"||g.has(n.id))return f({reason:"record"}),v();if(A>=p)return f({reason:"budget"}),V||(V=!0,e.onOverBudget?.()),v();let h=n.id,k=c.component.children;if(n.type===br)return v();if(n.type===kr){if(k==="none")return f({reason:"child",element:c.name}),v();let R={dom:o.createTextNode(String(n.data??"").slice(0,Ke)),children:[],text:!0,listeners:new Map,id:h};return g.set(h,R),A+=1,R}if(n.type!==vr)return f({reason:"record"}),v();let l=String(n.element);if(!Le(a,l)||!Sr(a[l]))return f({reason:"element",element:l}),v();if(k!=="any")return f({reason:"child",element:l}),v();let d=a[l],b=o.createElement(d.host);b.setAttribute("data-gv",l.replace(/^gv-/,"")),b.className=`graview-guest-${l.replace(/^gv-/,"")}`,d.host==="a"&&(b.setAttribute("rel","noopener noreferrer"),b.setAttribute("target",d.target??"_blank"),b.setAttribute("referrerpolicy","no-referrer")),d.host==="button"&&b.setAttribute("type","button");let K={dom:b,name:l,component:d,children:[],listeners:new Map,id:h};if(g.set(h,K),A+=1,ne(n.properties))for(let[R,P]of Object.entries(n.properties))G(K,R,P);if(ne(n.attributes))for(let R of Object.keys(n.attributes))f({reason:"attribute",element:l,name:R});if(ne(n.eventListeners))for(let[R,P]of Object.entries(n.eventListeners))S(K,R,P);if(Array.isArray(n.children))for(let R of n.children){let P=T(R,K);K.children.push(P),b.appendChild(P.dom)}return K},O=n=>{if(!Array.isArray(n))return f({reason:"record"});let[c,h]=n,k=typeof h=="string"?g.get(h):void 0;if(!k)return f({reason:"record"});switch(c){case fr:{if(k.text)return f({reason:"record"});let l=Number(n[3]),d=Number.isInteger(l)&&l>=0&&l<=k.children.length?l:k.children.length,b=T(n[2],k);k.dom.insertBefore(b.dom,k.children[d]?.dom??null),k.children.splice(d,0,b);return}case mr:{let l=Number(n[2]),d=k.children[l];if(!d)return f({reason:"record"});k.children.splice(l,1),d.dom.parentNode?.removeChild(d.dom),W(d);return}case gr:if(!k.text)return f({reason:"record"});k.dom.data=String(n[2]??"").slice(0,Ke);return;case yr:{if(k===w||k.text)return f({reason:"record"});let l=String(n[2]),d=n[4]??Ct;return d===Ct?G(k,l,n[3]):d===wr?S(k,l,n[3]):f(d===hr?{reason:"attribute",element:k.name,name:l}:{reason:"record"})}default:return f({reason:"record"})}};return{apply(n,c){if(!Array.isArray(n))return f({reason:"record"}),!0;for(let h=0;h<n.length;h+=1){if(c&&h%32===0&&c())return!1;O(n[h])}return!0},get refused(){return m},get size(){return A},get listening(){return y},dispose(){for(let n of w.children)W(n);w.children.length=0,t.replaceChildren()}}}var Ve=`
2
2
  .graview-guest { display: flex; flex-direction: column; gap: 8px; min-width: 0; color: var(--graview-ink, inherit); font: inherit; }
3
3
  .graview-guest-card { display: flex; flex-direction: column; gap: 6px; padding: 12px; border: 1px solid var(--graview-edge, #d0d0d0); border-radius: 10px; background: var(--graview-panel, transparent); }
4
4
  .graview-guest-group { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
@@ -18,4 +18,4 @@ var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=gl
18
18
  .graview-guest [data-gv-tone="warn"] { color: var(--graview-warn, inherit); }
19
19
  .graview-guest [data-gv-tone="accent"] { color: var(--graview-accent, inherit); }
20
20
  .graview-guest [data-gv-tone="neutral"] { color: var(--graview-ink-muted, inherit); }
21
- `;var Dt=new WeakSet;function Tr(t,e){if(t.startsWith("blob:"))return"blob:";try{return new URL(t,e.location.href).origin}catch{return t}}function jt(t,e,a){let p=Tr(e,t),o=`this page's Content-Security-Policy${a?` (${a})`:""} does not allow a worker from ${p}: it needs worker-src ${p}`;return Dt.has(t)||(Dt.add(t),t.console?.warn?.(`Graview: worker views cannot start on this page, because ${o}. A host that will not allow ${p} serves each view's whole script from its own origin and passes worker: { url } (the @graview/guest README, "What the host page allows").`)),o}function Mr(t,e){return t===""?!0:e.startsWith("blob:")?t.startsWith("blob"):e.startsWith(t)||t.startsWith(e)}function ye(t,e){let a="script"in e.source?t.URL.createObjectURL(new t.Blob([e.source.script],{type:"text/javascript"})):void 0,p="script"in e.source?a:e.source.url,o,m,g=!1,w=!1,E=0,A=0,y="",V=0,f=0,v=t.performance,G=v.now(),S,W=l=>{let d=l,b=String(d.effectiveDirective||d.violatedDirective||"").split(" ")[0];/^(worker-src|script-src|script-src-elem|child-src|default-src)$/.test(b)&&Mr(String(d.blockedURI??""),p)&&(S=b)},T=t.document;T?.addEventListener("securitypolicyviolation",W);let O=()=>T?.removeEventListener("securitypolicyviolation",W),n=()=>{w||(w=!0,m?.close(),o?.terminate(),o=void 0,t.clearTimeout(E),t.clearInterval(A),O(),a&&t.URL.revokeObjectURL(a))},c=(l,d)=>{w||(n(),e.onStop(l,d))},h=()=>{t.clearTimeout(E),O(),y=St();let l=new t.MessageChannel;m=l.port1;let d=Math.max(1,e.silentMs),b=Math.max(10,Math.min(1e3,Math.floor(d/4)));G=v.now();let K=G;A=t.setInterval(()=>{let P=v.now();if(P-K>b*2&&(G+=P-K-b),K=P,P-G>=d)return c("silent");V+=1,l.port1.postMessage({type:"heartbeat",beat:V})},b);let R={graview:"host-hello",protocol:1,nonce:y,view:e.name};o.postMessage(R,[l.port2]),e.onReady(y,l.port1,v.now()-k)},k=v.now();try{o=new t.Worker(p,{name:e.name})}catch(l){o=void 0;let d=l,b=d?.name==="SecurityError"?jt(t,p,S):`the worker could not be made: ${String(d?.message??l)}`;queueMicrotask(()=>c("start",b))}return o&&(E=t.setTimeout(()=>c("start",`it never said it was ready in ${e.readyMs.toLocaleString("en-US")} ms`),e.readyMs),o.onerror=l=>{let d=typeof l.message=="string"&&l.message!==""?l.message:void 0;if(g)return void e.onError?.(d??"an error");t.clearTimeout(E),t.setTimeout(()=>!g&&c("start",S?jt(t,p,S):d?`it failed before it said ready: ${d}`:"it failed before it said ready, and the engine gave no reason (a page policy that refuses it, or a script that does not load)"),0)},o.onmessage=l=>{if(!e.limiter.message()||g||!xt(l.data)||l.data.protocol!==1){e.onDropped();return}g=!0,h()}),{get worker(){return o},answer(l){let d=l;return typeof d!="object"||d===null||d.type!=="heartbeat"||d.nonce!==y?!1:(typeof d.beat=="number"&&d.beat>f&&d.beat<=V&&(f=d.beat,G=v.now()),!0)},stop:n}}function he(t,e){let a=e(),p=0;return{draw(o){let m=e();m-a>=1e3&&(a=m,p=0);let g=t(),w=o(()=>p+(e()-m)>=g);return p+=e()-m,w&&p<g}}}function Bt(t){return!Number.isFinite(t)||t<=60?1:Math.min(4,Math.round(t/60*10)/10)}function Ft(t,e){return{...t,pushMs:Math.round(t.pushMs*e),drawMs:Math.round(t.drawMs*e)}}var $t=new WeakMap;function Ut(t,e){let a=$t.get(t);return a!==void 0?a:($t.set(t,e),e)}var Er=B(()=>(__graviewPreload(import.meta.url,["./chunk.32SHA3EY.js","./chunk.GG47EIKO.js","./chunk.NYLKG25K.js","./chunk.AJZBJBMO.js"]),import("./chunk.U6QXLNHF.js"))),Wr=B(()=>(__graviewPreload(import.meta.url,["./chunk.PLIV3IQK.js","./chunk.MK5RPEB2.js","./chunk.TOUSIUJF.js","./chunk.QDVGHI7R.js","./chunk.KUCBNMIY.js","./chunk.M5FP4Y4Q.js","./chunk.6AANHELP.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.N64RVSH3.js"))),Rr=B(()=>(__graviewPreload(import.meta.url,["./chunk.RSMCTI2N.js","./chunk.AJZBJBMO.js"]),import("./chunk.UJPX3BUV.js"))),Ar=B(()=>(__graviewPreload(import.meta.url,["./chunk.WVUJXDXZ.js","./chunk.L7XKYGV7.js","./chunk.CE3NKAF7.js","./chunk.R3GE37OI.js","./chunk.2KCDLCB2.js","./chunk.UD7VLXPM.js","./chunk.3DEWQDP7.js","./chunk.JULD4XFB.js","./chunk.GRTBEA7O.js","./chunk.6AANHELP.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.OQ4ZO3YY.js"))),Gr=B(()=>(__graviewPreload(import.meta.url,["./chunk.TOUSIUJF.js","./chunk.QDVGHI7R.js","./chunk.KUCBNMIY.js","./chunk.6AANHELP.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.MIOLBZBS.js"))),Or=B(()=>(__graviewPreload(import.meta.url,["./chunk.BBLIT7S7.js","./chunk.AJZBJBMO.js"]),import("./chunk.RRCPEHM4.js"))),Kr=B(()=>(__graviewPreload(import.meta.url,["./chunk.WVUJXDXZ.js","./chunk.L7XKYGV7.js","./chunk.CE3NKAF7.js","./chunk.R3GE37OI.js","./chunk.2KCDLCB2.js","./chunk.UD7VLXPM.js","./chunk.3DEWQDP7.js","./chunk.JULD4XFB.js","./chunk.GRTBEA7O.js","./chunk.6AANHELP.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.ARS4HJD2.js"))),Pr=B(()=>(__graviewPreload(import.meta.url,["./chunk.QDVGHI7R.js","./chunk.AJZBJBMO.js"]),import("./chunk.EG7OOJH5.js"))),Lr=B(()=>(__graviewPreload(import.meta.url,["./chunk.6AANHELP.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.JLDJZET2.js"))),_r='a[href^="#"], [data-sight], [data-file]';function Vr(t,e,a){switch(t){case"manifest":return a??"Its manifest names something this app does not have.";case"source":return a??`Its code is longer than the ${e.maxSourceBytes.toLocaleString("en-US")} bytes a view may be.`;case"start":return`It could not start${a?`: ${a}.`:"."}`;case"error":return`It failed before it drew anything${a?`: ${a}`:"."}`;case"silent":return`It stopped answering for ${e.silentMs.toLocaleString("en-US")} ms.`;case"nodes":return`It drew more than the ${e.maxNodes.toLocaleString("en-US")} things a view may draw.`;case"flood":return`It sent more than ${e.messages} messages in ${e.messageWindowMs.toLocaleString("en-US")} ms.`;case"slow":return`It took longer than ${e.pushMs.toLocaleString("en-US")} ms to draw what it was shown.`}}function Ir(t,e){let a=t.ownerDocument,p=a.defaultView,{manifest:o}=e,m=a.createElement("div");m.className="graview-worker-view",m.setAttribute("role","region"),m.setAttribute("aria-label",o.title??o.name),m.setAttribute("data-worker-view",o.name),m.style.cssText="display:block;position:relative;contain:layout paint style;isolation:isolate;overflow:clip;min-width:0",t.appendChild(m);let g=m.attachShadow({mode:"open"}),w=e.author?a.createElement("p"):void 0;w&&(w.className="graview-worker-view-author",w.setAttribute("data-worker-view-author",o.name),w.style.cssText="margin:4px 0 0;font-size:0.75rem;color:var(--graview-ink-muted, inherit)",w.textContent=e.author,t.appendChild(w));let E={applied:0,refused:0,dropped:0},A=ue(e.limits),y={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},V={pushMs:y.pushMs,drawMs:y.drawMs},f,v,G,S,W,T,O=!1,n={applied:0,refused:0,dropped:0},c=[],h=()=>{if(!S)return;let r=S.stats;E.applied+=r.applied-n.applied,E.refused+=r.refused-n.refused,E.dropped+=r.dropped-n.dropped,n={...r}},k=()=>{},l,d,b=()=>{let r=g.querySelector("[data-graview-view-root]"),s=p.ResizeObserver;d||!r||typeof s!="function"||(d=new s(M=>{let _=M[M.length-1]?.borderBoxSize?.[0],I=Math.ceil(_?_.blockSize:r.offsetHeight);I!==l&&(l=I,m.setAttribute("data-graview-content-height",String(I)),e.onContentHeight?.(I))}),d.observe(r))},K=()=>{d&&(d.disconnect(),d=void 0,l=void 0,m.removeAttribute("data-graview-content-height"),e.onContentHeight?.(void 0))},R=0,P=()=>{},F,Jt,q,Ie=[],Ce=()=>{P(),P=()=>{},F?.dispose(),h(),S?.dispose(),S=void 0,W?.stop(),k(),p.clearInterval(R)},H=(r,s)=>{if(O)return;O=!0,Ce(),K(),T?.dispose();let M=Vr(r,y,s);m.removeAttribute("data-worker-view-drawn"),m.setAttribute("data-worker-view-failed",r),e.fallback!==!1&&(e.fallback??Qt)(m,r,M),e.onFailure?.(r,M)},Qt=(r,s,M)=>{let _=v??(()=>{try{return Re(e.store,e.principal,{manifest:o,...e.input?{input:e.input()}:{},...G?{computed:G}:{}})}catch{return}})(),I=a.createElement("div");I.setAttribute("data-graview-fallback",s),I.style.cssText="padding:12px;display:grid;gap:6px;color:var(--graview-ink, inherit);font-family:var(--graview-font-body, inherit)";let u=a.createElement("strong");u.textContent=o.title??o.name;let C=a.createElement("ul");C.style.cssText="margin:0;padding-left:1.2em";for(let j of[..._?.node?[_.node]:[],..._?.nodes??[]]){let de=a.createElement("li");de.textContent=j.label??j.id,C.appendChild(de)}let N=a.createElement("p");N.style.cssText="margin:0;font-size:0.8125rem;color:var(--graview-ink-muted, inherit)",N.textContent=`This view was stopped. ${M}`,I.append(u,C,N),g.replaceChildren(I)},Ne=Wt(o,e.store);if(Ne.length>0)return queueMicrotask(()=>H("manifest",Ne.join(" "))),Se();let He=r=>{if(("source"in r?new TextEncoder().encode(r.source).length:"script"in r?new TextEncoder().encode(r.script).length:0)>y.maxSourceBytes)return["source"];let M="source"in r?pe(r.source):[];return M.length>0?["source",M.join(" ")]:void 0},X=e.worker,De=typeof X=="function"?void 0:He(X);if(De)return queueMicrotask(()=>H(...De)),Se();let je=Pt(p,()=>Fe(),"blob"),we=()=>Kt(()=>e.theme?.()??fe(m),e.brand,je),$e=()=>{let r=e.brand?.()?.views;T?.theme(r?.css),T?.motion(r?.motion??"none")},Be="",ve=()=>{Be=JSON.stringify(we()),$e(),S?.push()},Fe=()=>{S&&JSON.stringify(we())!==Be&&ve()},Zt=Ot(a,Fe),U,er=We(e.store,o)?Kr().then(({computedOn:r})=>{G=r(e.store.schema)}):Promise.resolve(),z,tr=o.pictures?Rr().then(({createGuestPictures:r})=>{O||(U=r(p,{as:"blob",view:`"${o.title??o.name}"`,pictures:o.pictures,...e.limits?{limits:e.limits}:{},...e.file?{file:e.file}:{},moved:()=>S?.push(),onLeft:s=>{$?.postMessage({type:"notice",text:s}),e.onProblem?.(s)}}))}):Promise.resolve();k=()=>{Zt(),je.dispose(),U?.dispose(),ee?.dispose(),z?.dispose(),ae?.dispose()};let $,Y=r=>$?.postMessage(r),Ue=!1,ze=!1,oe=()=>m.toggleAttribute("data-worker-view-drawn",!O&&ze&&T!==void 0&&c.length===0&&Q.size===0&&!U?.waiting()&&!(z?.waiting??0)),J=p.performance,Q=new Map,se=J.now(),rr=()=>{if(R)return;let r=Math.max(10,Math.min(250,Math.floor(y.pushMs/4)));se=J.now(),R=p.setInterval(()=>{let s=J.now(),M=s-se>r*2?s-se-r:0;se=s;for(let[_,I]of Q){let u=I+M;if(Q.set(_,u),s-u>=y.pushMs)return H("slow")}},r)},nr=he(()=>y.drawMs,()=>J.now()),qe=()=>{},ke=r=>{if(O)return;if(!T)return void c.push(r);let s=T;if(!nr.draw(_=>r[0]==="render"?s.apply(r[1],_):(s.style(r[1]),!0)))return H("slow");r[0]==="render"&&qe()},Xe=()=>new Set([...e.store.kindsKeptFrom(e.principal),...e.store.modules.disabledKinds]),Ye=()=>vt(e.store.schema,Xe()),be=()=>kt(e.store.schema,e.places?.()??[],{kept:Xe(),...e.arrangement?{pages:e.arrangement()}:{}}),Z=bt({sees:r=>e.store.seenBy(e.principal).graph.has(r),places:be,lists:Ye,schema:e.store.schema,...e.onNavigate?{onNavigate:e.onNavigate}:e.goTo?{onNavigate:r=>At(e.goTo(),r)}:{},...e.hrefOf?{hrefOf:e.hrefOf}:!e.onNavigate&&e.goTo?{hrefOf:r=>Gt(e.goTo(),r)}:{},onLost:r=>{$?.postMessage({type:"notice",text:r}),e.onProblem?.(r)}}),D=new Set,Je=new Set,ee,Qe=!1,Ze=()=>{Qe||(Qe=!0,Ar().then(({createGuestMedia:r})=>{O||(ee=r(p,{view:`"${o.title??o.name}"`,pictures:o.pictures!==void 0,shown:()=>v,...e.file?{file:e.file}:{},onProblem:s=>{$?.postMessage({type:"notice",text:s}),e.onProblem?.(s)}}),ee.refresh(g))},()=>e.onProblem?.(`The view "${o.title??o.name}" places a video or a full-screen viewer, and the host's player could not be loaded.`)))},et=!1,tt=!1,ie=new Map,rt=()=>{et||!o.accepts?.length||(et=!0,Gr().then(({createGuestDrops:r})=>{O||(z=r(p,{shadow:g,manifest:o,store:e.store,principal:e.principal,files:()=>e.files?.(),shown:()=>D,hears:()=>tt,idOf:s=>T?.renderer.idOf(s),send:Y,change:(s,M)=>{if(!S)return{ok:!1,reason:"refused",message:"The view has gone."};let _=S.change(s,M);return h(),_},handed:(s,M)=>ie.set(s.href,{file:s,drop:M}),onProblem:s=>{$?.postMessage({type:"notice",text:s}),e.onProblem?.(s)},onBusy:()=>oe()}),z.refresh())},()=>e.onProblem?.(`The view "${o.title??o.name}" takes files, and the host's drop could not be loaded.`)))},ae,nt=[],ot=!1,or=r=>{nt=r,ae?.bind(r),!(ot||r.length===0)&&(ot=!0,Or().then(({createGuestGestures:s,unheardWords:M})=>{if(!O){if(o.gestures!==!0){let _=M(o.title??o.name);return $?.postMessage({type:"notice",text:_}),e.onProblem?.(_)}ae=s(g,{root:()=>g.querySelector("[data-graview-view-root]")??void 0,idOf:_=>T?.renderer.idOf(_),send:Y}),ae.bind(nt)}},()=>{}))},sr=r=>{let s=e.store.seenBy(e.principal).graph;for(let M of D){let _=s.getNode(M);for(let I of Object.values(_??{}))for(let u of Et(I))if(u.href===r)return u}},st=()=>Jt??=Pr().then(({createGuestSections:r})=>{if(!O)return F=r(p,{shadow:g,idOf:s=>T?.renderer.idOf(s),send:Y,record:s=>D.has(s)?e.store.seenBy(e.principal).graph.getNode(s):void 0,...e.file?{file:e.file}:{},onProblem:s=>{$?.postMessage({type:"notice",text:s}),e.onProblem?.(s)}}),F.refresh(),F},()=>{e.onProblem?.(`The view "${o.title??o.name}" draws a jump or a file link, and the host's part of it could not be loaded.`)}),it=r=>{if(r.localName==="graview-video")return Ze();r.hasAttribute("data-lightbox")&&(r.setAttribute("aria-haspopup","dialog"),Ze())};Promise.all([Er(),Wr()]).then(([{createOpenDrawing:r,handedLinks:s,judgeLink:M,linkRefusedWords:_},{createPressReader:I,createSaver:u,fillPrefills:C,judgePress:N,markPresses:j,prefillOf:de,quietPictures:ir}])=>{if(O)return;let te=I(),ar=i=>Ie.some(x=>{try{for(let L=i;L&&L.getRootNode()===g&&!L.hasAttribute("data-graview-view-root");L=L.parentElement)if(L.matches(x))return!0}catch{}return!1}),ut=(i,x)=>{let L=T?.renderer.idOf(i);if(L!==void 0&&Y({type:"dom-event",target:L,event:"acted",pressed:x}),x.ok)return q?.clear(i);ar(i)||Lr().then(({createRefusalNotes:re})=>{O||!i.isConnected||(q??=re(g),q.say(i,x.message??"That was not applied."))},()=>e.onProblem?.(`A press in the view "${o.title??o.name}" was refused: ${x.message??x.reason??"not applied"}`))},Te=u({reader:te,save:(i,x)=>{if(!S)return;let L=S.pressed(N(e.store,o,D,i));h(),ut(x,{as:i.as,...L})}}),ct=()=>Te.flush();p.addEventListener("pagehide",ct),P=()=>{p.removeEventListener("pagehide",ct),Te.flush()};let dr=new WeakSet;qe=()=>{Z.refresh(g),j(g),ir(g),C(g,te,dr,i=>de(e.store,e.principal,o,D,i)),ee?.refresh(g),z?.refresh(),q?.refresh(),F?F.refresh():g.querySelector(_r)&&st()};let pt,ft=new Set,lr=()=>(pt!==v&&([pt,ft]=[v,s(v)]),ft),mt=new Set;T=r(g,{origin:e.origin??p.location.origin,link:i=>M(i,{handed:lr(),...e.links?{origins:e.links.origins}:{}}),...e.asset?{asset:e.asset}:{},...e.images?{imageOrigins:e.images.origins}:{},...o.pictures?{picture:i=>U?.drawn(i)}:{},onRefused:i=>{if(i.reason==="url"&&i.element==="a"&&i.address!==void 0&&!mt.has(i.address)){mt.add(i.address);let L=_(i.address,e.links?.origins);return $?.postMessage({type:"notice",text:L}),e.onProblem?.(L)}if(i.reason!=="url"||i.element!=="img"||i.address===void 0||Je.has(i.address))return;Je.add(i.address);let x=Tt(i.address,{...e.images?{origins:e.images.origins}:{},assets:e.asset!==void 0},i.length);$?.postMessage({type:"notice",text:x}),e.onProblem?.(x)},...e.limits?.maxNodes!==void 0?{maxNodes:e.limits.maxNodes}:{},onOverBudget:()=>H("nodes"),send:Y,onFieldSet:i=>te.filled(i),onAttribute:(i,x)=>{(x==="data-record"||x==="data-place")&&Z.link(i),x==="data-lightbox"&&it(i),x==="data-drop"&&rt()},decorate:i=>{(i.hasAttribute("data-record")||i.hasAttribute("data-place"))&&Z.link(i),it(i),i.hasAttribute("data-drop")&&rt()},before:(i,x,L)=>{te.heard(i,x),Te.heard(i,x,L),Z.pressed(i,x,L);let re=x.closest("a[href]");re&&L.contains(re)&&!re.hasAttribute("data-graview-link")&&i.type==="click"&&i.stopPropagation();let le=x.closest("[data-lightbox]"),gt=i.type==="keydown"?i.key:void 0;if(le&&L.contains(le)&&i.isTrusted&&(i.type==="click"||(gt==="Enter"||gt===" ")&&le.localName!=="button")&&(i.preventDefault(),i.stopPropagation(),ee?.open(le)),z?.before(i,x,L))return!1;let yt=i.type==="click"&&i.isTrusted?x.closest('a[href^="#"]'):null;yt&&L.contains(yt)&&(i.preventDefault(),F?F.jump(x,L):st().then(pr=>pr?.jump(x,L)));let Me=te.press(i,x,L);if(!Me||!S)return;i.stopPropagation(),q?.clear(x.closest("[data-act]")),i.type==="keydown"&&i.preventDefault();let ur=S.pressed(N(e.store,o,D,Me));h();let ht={as:Me.as,...ur},cr=x.closest("[data-act]");return queueMicrotask(()=>ut(cr,ht)),{pressed:ht}}}),$e();for(let i of c.splice(0))ke(i);b(),oe()},()=>H("start","the view's drawing could not be loaded"));let xe=r=>W=ye(p,{source:r,name:o.name,limiter:A,readyMs:e.limits?.readyMs??5e3,silentMs:e.limits?.silentMs??5e3,onDropped:()=>E.dropped+=1,onStop:(s,M)=>H(s,M),onError:s=>{Ue||H("error",s)},onReady:(s,M,_)=>{$=M,f=Bt(Ut(p,_)),Object.assign(y,Ft(V,f)),rr();let I=ce({store:e.store,principal:e.principal,view:o.name,nonce:s,send:u=>{u.type==="props"&&typeof u.push=="number"&&(Q.set(u.push,J.now()),oe()),M.postMessage(u)},props:()=>{let u=Re(e.store,e.principal,{manifest:o,...e.input?{input:e.input()}:{},theme:we(),places:wt(be()),...G?{computed:G}:{}}),C=D;return D=new Set([...u.node?[u.node.id]:[],...(u.nodes??[]).map(N=>N.id)]),v&&(C.size!==D.size||[...D].some(N=>!C.has(N)))&&T?.fade(),v=u,u},...U?{hand:U.hand}:{},judgeAct:(u,C)=>{let N=Rt(e.store,o,u,C,{shown:D,file:j=>ie.get(j)?.file??sr(j),dropped:j=>ie.get(j)?.drop});if(N.ok)for(let j of N.spent??[])ie.delete(j);return N},onHears:u=>{u.includes("drop")&&(tt=!0)},onGestures:or,onClicks:(u,C)=>{Mt(m,u),Ie=C},onRender:u=>{Ue=!0,ke(["render",u])},onPushed:(u,C)=>{if(Q.delete(u),C>=y.pushMs)return H("slow");ze=!0,oe()},onFlood:()=>H("flood"),onStyle:u=>ke(["style",u]),places:()=>[...new Set([...be().map(u=>u.as),...Ye().map(u=>u.slug)])],...e.limits?{limits:e.limits}:{},limiter:A});S=I,M.onmessage=({data:u})=>{if(!W?.answer(u)&&(I.receive(u),h(),!O&&u?.nonce===s&&u.type==="navigate")){let C={...u.where!==void 0?{where:u.where}:{},...u.section!==void 0?{section:u.section}:{}},N=typeof u.place=="string"?{place:u.place,...C}:typeof u.to=="string"&&{record:u.to,...C};N&&Z.go(N)}},ve()}}),at=o.pictures!==void 0||We(e.store,o),dt=()=>Promise.all([tr.catch(()=>Promise.reject(new Error("the view's pictures could not be loaded"))),er.catch(()=>Promise.reject(new Error("the view's computed values could not be worked out")))]),lt=r=>{"source"in r?(at?Promise.all([Ae(r.source),dt()]).then(([s])=>s):Ae(r.source)).then(s=>{O||xe({script:s})},s=>H("start",s instanceof Error&&s.message.startsWith("the view's")?s.message:"the view's runtime could not be loaded")):at?dt().then(()=>{O||xe(r)},s=>H("start",s instanceof Error?s.message:"the view's pictures could not be loaded")):xe(r)};return typeof X=="function"?me(X).then(r=>{if(O)return;let s=He(r);s?H(...s):lt(r)},r=>H("source",`Its code did not arrive${r instanceof Error&&r.message?`: ${r.message}`:""}.`)):lt(X),Se();function Se(){return{element:m,shadow:g,get worker(){return W?.worker},update:()=>{S&&ve()},get stats(){return h(),E},get refused(){return T?.refused??[]},get contentHeight(){return l},get css(){return T?.css??""},get pace(){return f},dispose(){O=!0,Ce(),d?.disconnect(),T?.dispose(),m.remove(),w?.remove()}}}}var zt=8e3,qt=t=>({root:t?.shadow.querySelector("[data-graview-view-root]")??void 0,css:t?.css??"",height:t?.contentHeight}),Xt=t=>(t?.refused??[]).map(e=>`Refused ${e.reason==="css"?"a rule of the stylesheet":`${e.element?`<${e.element}>`:"something"}${e.name?` ${e.name}`:""}`} (${e.reason}).`);function Cr({element:t,definition:e,mounted:a,optionsFor:p,draw:o,mount:m,pressing:g}){return{name:e.manifest.name,title:e.manifest.title??e.manifest.name,source:async()=>{let w=typeof e.worker=="function"?await me(e.worker):e.worker;return"source"in w?w.source:void 0},theme:async()=>{let w=a()?.element;return w?{...fe(w)}:{}},drawing:()=>qt(a()),refused:()=>Xt(a()),check:async w=>pe(w),presses:async w=>{let E=g?.();if(!E)throw new Error("This page cannot press a view's controls.");let{pressedHere:A}=await E(),y=p({source:w}),V=await A({manifest:y.manifest,source:w,store:y.store,principal:y.principal,...y.input?{input:y.input()}:{},...y.places?{places:y.places()}:{}});if(!V.ok){let v={control:"the view",element:"",does:"nothing",ok:!1,says:V.detail};return{ok:!1,controls:[v],problems:[v]}}let f=V.presses;return f?{ok:f.ok,controls:f.controls,problems:f.problems}:{ok:!0,controls:[],problems:[]}},draft:w=>{let E=a()?.element,A=t.ownerDocument.createElement("div");A.setAttribute("data-graview-section-draft",e.manifest.name),A.style.minWidth="0",t.appendChild(A),E&&(E.style.display="none");let y=()=>{},V=new Promise(G=>y=G),f=setTimeout(()=>y({failed:`It did not draw in ${zt/1e3} seconds.`}),zt),v=m(A,{...p({source:w}),fallback:!1,onFailure:(G,S)=>y({failed:S??`It failed (${G}).`}),onContentHeight:G=>{G!==void 0&&G>0&&y({})}});return V.then(()=>clearTimeout(f)),{drawn:V,drawing:()=>qt(v),refused:()=>Xt(v),dispose:()=>{clearTimeout(f),v.dispose(),A.remove(),E&&(E.style.display="")}}},draw:o}}var Yt="graview-guest-kit";function kn(t,e){let a=t.ownerDocument,p=a.defaultView;if(!a.getElementById(Yt)){let W=a.createElement("style");W.id=Yt,W.textContent=Ve,a.head.appendChild(W)}let o=a.createElement("div");o.className="graview-guest",o.setAttribute("role","group"),o.setAttribute("aria-label",e.title??e.view),o.setAttribute("data-guest-view",e.view),t.appendChild(o);let m={applied:0,refused:0,dropped:0},g=ue(e.limits),w=he(()=>e.limits?.drawMs??100,()=>p.performance.now()),E,A,y,V=!1,f={applied:0,refused:0,dropped:0},v=()=>{if(!E)return;let W=E.stats;m.applied+=W.applied-f.applied,m.refused+=W.refused-f.refused,m.dropped+=W.dropped-f.dropped,f={...W}},G=()=>{v(),E?.dispose(),E=void 0,y?.stop()},S=(W,T)=>{V||(V=!0,G(),A?.dispose(),e.onFailure?.(W,T))};return y=ye(p,{source:e.worker,name:e.view,limiter:g,readyMs:e.limits?.readyMs??5e3,silentMs:e.limits?.silentMs??5e3,onDropped:()=>m.dropped+=1,onStop:(W,T)=>S(W,T),onReady:(W,T)=>{let O=_e(o,{...e.kit?{kit:e.kit}:{},...e.links?{links:e.links}:{},onEvent:(c,h)=>T.postMessage({type:"event",listener:c,...h!==void 0?{detail:h}:{}}),...e.limits?.maxNodes!==void 0?{maxNodes:e.limits.maxNodes}:{},onOverBudget:()=>S("budget")});A=O;let n=ce({store:e.store,principal:e.principal,view:e.view,nonce:W,send:c=>T.postMessage(c),onRender:c=>{w.draw(h=>O.apply(c,h))||S("slow")},...e.input?{input:e.input}:{},...e.onNavigate?{onNavigate:e.onNavigate}:{},onSize:e.onSize??(c=>o.style.minHeight=`${c}px`),...e.limits?{limits:e.limits}:{},limiter:g});E=n,T.onmessage=c=>{y?.answer(c.data)||(n.receive(c.data),v())},n.push()}}),{element:o,get worker(){return y?.worker},update:()=>E?.push(),get stats(){return v(),m},get refused(){return A?.refused??[]},dispose(){V=!0,G(),A?.dispose(),o.remove()}}}export{Oe as GUEST_KIT,Ve as GUEST_KIT_CSS,Ge as KIT_LINK_TARGETS,Lt as KIT_TONES,_e as createKitRenderer,Nt as hostAttribute,Ht as kitValue,kn as mountGuestWorker,Ir as mountWorkerView,Cr as viewPlaceHandle};
21
+ `;var Dt=new WeakSet;function Tr(t,e){if(t.startsWith("blob:"))return"blob:";try{return new URL(t,e.location.href).origin}catch{return t}}function jt(t,e,a){let p=Tr(e,t),o=`this page's Content-Security-Policy${a?` (${a})`:""} does not allow a worker from ${p}: it needs worker-src ${p}`;return Dt.has(t)||(Dt.add(t),t.console?.warn?.(`Graview: worker views cannot start on this page, because ${o}. A host that will not allow ${p} serves each view's whole script from its own origin and passes worker: { url } (the @graview/guest README, "What the host page allows").`)),o}function Mr(t,e){return t===""?!0:e.startsWith("blob:")?t.startsWith("blob"):e.startsWith(t)||t.startsWith(e)}function ye(t,e){let a="script"in e.source?t.URL.createObjectURL(new t.Blob([e.source.script],{type:"text/javascript"})):void 0,p="script"in e.source?a:e.source.url,o,m,g=!1,w=!1,E=0,A=0,y="",V=0,f=0,v=t.performance,G=v.now(),S,W=l=>{let d=l,b=String(d.effectiveDirective||d.violatedDirective||"").split(" ")[0];/^(worker-src|script-src|script-src-elem|child-src|default-src)$/.test(b)&&Mr(String(d.blockedURI??""),p)&&(S=b)},T=t.document;T?.addEventListener("securitypolicyviolation",W);let O=()=>T?.removeEventListener("securitypolicyviolation",W),n=()=>{w||(w=!0,m?.close(),o?.terminate(),o=void 0,t.clearTimeout(E),t.clearInterval(A),O(),a&&t.URL.revokeObjectURL(a))},c=(l,d)=>{w||(n(),e.onStop(l,d))},h=()=>{t.clearTimeout(E),O(),y=St();let l=new t.MessageChannel;m=l.port1;let d=Math.max(1,e.silentMs),b=Math.max(10,Math.min(1e3,Math.floor(d/4)));G=v.now();let K=G;A=t.setInterval(()=>{let P=v.now();if(P-K>b*2&&(G+=P-K-b),K=P,P-G>=d)return c("silent");V+=1,l.port1.postMessage({type:"heartbeat",beat:V})},b);let R={graview:"host-hello",protocol:1,nonce:y,view:e.name};o.postMessage(R,[l.port2]),e.onReady(y,l.port1,v.now()-k)},k=v.now();try{o=new t.Worker(p,{name:e.name})}catch(l){o=void 0;let d=l,b=d?.name==="SecurityError"?jt(t,p,S):`the worker could not be made: ${String(d?.message??l)}`;queueMicrotask(()=>c("start",b))}return o&&(E=t.setTimeout(()=>c("start",`it never said it was ready in ${e.readyMs.toLocaleString("en-US")} ms`),e.readyMs),o.onerror=l=>{let d=typeof l.message=="string"&&l.message!==""?l.message:void 0;if(g)return void e.onError?.(d??"an error");t.clearTimeout(E),t.setTimeout(()=>!g&&c("start",S?jt(t,p,S):d?`it failed before it said ready: ${d}`:"it failed before it said ready, and the engine gave no reason (a page policy that refuses it, or a script that does not load)"),0)},o.onmessage=l=>{if(!e.limiter.message()||g||!xt(l.data)||l.data.protocol!==1){e.onDropped();return}g=!0,h()}),{get worker(){return o},answer(l){let d=l;return typeof d!="object"||d===null||d.type!=="heartbeat"||d.nonce!==y?!1:(typeof d.beat=="number"&&d.beat>f&&d.beat<=V&&(f=d.beat,G=v.now()),!0)},stop:n}}function he(t,e){let a=e(),p=0;return{draw(o){let m=e();m-a>=1e3&&(a=m,p=0);let g=t(),w=o(()=>p+(e()-m)>=g);return p+=e()-m,w&&p<g}}}function Bt(t){return!Number.isFinite(t)||t<=60?1:Math.min(4,Math.round(t/60*10)/10)}function Ft(t,e){return{...t,pushMs:Math.round(t.pushMs*e),drawMs:Math.round(t.drawMs*e)}}var $t=new WeakMap;function Ut(t,e){let a=$t.get(t);return a!==void 0?a:($t.set(t,e),e)}var Er=B(()=>(__graviewPreload(import.meta.url,["./chunk.32SHA3EY.js","./chunk.GG47EIKO.js","./chunk.NYLKG25K.js","./chunk.AJZBJBMO.js"]),import("./chunk.U6QXLNHF.js"))),Wr=B(()=>(__graviewPreload(import.meta.url,["./chunk.CLZYNFFH.js","./chunk.WQ7K5O2I.js","./chunk.ZT3ZG52B.js","./chunk.QDVGHI7R.js","./chunk.ROYCJXPE.js","./chunk.M5FP4Y4Q.js","./chunk.DHPXRDT5.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.JDUA5PH2.js"))),Rr=B(()=>(__graviewPreload(import.meta.url,["./chunk.RSMCTI2N.js","./chunk.AJZBJBMO.js"]),import("./chunk.UJPX3BUV.js"))),Ar=B(()=>(__graviewPreload(import.meta.url,["./chunk.WVUJXDXZ.js","./chunk.B422DSYN.js","./chunk.ZE5RSKXF.js","./chunk.DKUEZPGR.js","./chunk.EP7YT7LT.js","./chunk.I7KN732Z.js","./chunk.TLPCYKLW.js","./chunk.FIY4RUK5.js","./chunk.IY3DV52G.js","./chunk.DHPXRDT5.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.T3PELB6I.js"))),Gr=B(()=>(__graviewPreload(import.meta.url,["./chunk.ZT3ZG52B.js","./chunk.QDVGHI7R.js","./chunk.ROYCJXPE.js","./chunk.DHPXRDT5.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.QEBD7SC4.js"))),Or=B(()=>(__graviewPreload(import.meta.url,["./chunk.BBLIT7S7.js","./chunk.AJZBJBMO.js"]),import("./chunk.RRCPEHM4.js"))),Kr=B(()=>(__graviewPreload(import.meta.url,["./chunk.WVUJXDXZ.js","./chunk.B422DSYN.js","./chunk.ZE5RSKXF.js","./chunk.DKUEZPGR.js","./chunk.EP7YT7LT.js","./chunk.I7KN732Z.js","./chunk.TLPCYKLW.js","./chunk.FIY4RUK5.js","./chunk.IY3DV52G.js","./chunk.DHPXRDT5.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.3PT3BU6K.js"))),Pr=B(()=>(__graviewPreload(import.meta.url,["./chunk.QDVGHI7R.js","./chunk.AJZBJBMO.js"]),import("./chunk.EG7OOJH5.js"))),Lr=B(()=>(__graviewPreload(import.meta.url,["./chunk.DHPXRDT5.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.S2NQRD6W.js"))),_r='a[href^="#"], [data-sight], [data-file]';function Vr(t,e,a){switch(t){case"manifest":return a??"Its manifest names something this app does not have.";case"source":return a??`Its code is longer than the ${e.maxSourceBytes.toLocaleString("en-US")} bytes a view may be.`;case"start":return`It could not start${a?`: ${a}.`:"."}`;case"error":return`It failed before it drew anything${a?`: ${a}`:"."}`;case"silent":return`It stopped answering for ${e.silentMs.toLocaleString("en-US")} ms.`;case"nodes":return`It drew more than the ${e.maxNodes.toLocaleString("en-US")} things a view may draw.`;case"flood":return`It sent more than ${e.messages} messages in ${e.messageWindowMs.toLocaleString("en-US")} ms.`;case"slow":return`It took longer than ${e.pushMs.toLocaleString("en-US")} ms to draw what it was shown.`}}function Ir(t,e){let a=t.ownerDocument,p=a.defaultView,{manifest:o}=e,m=a.createElement("div");m.className="graview-worker-view",m.setAttribute("role","region"),m.setAttribute("aria-label",o.title??o.name),m.setAttribute("data-worker-view",o.name),m.style.cssText="display:block;position:relative;contain:layout paint style;isolation:isolate;overflow:clip;min-width:0",t.appendChild(m);let g=m.attachShadow({mode:"open"}),w=e.author?a.createElement("p"):void 0;w&&(w.className="graview-worker-view-author",w.setAttribute("data-worker-view-author",o.name),w.style.cssText="margin:4px 0 0;font-size:0.75rem;color:var(--graview-ink-muted, inherit)",w.textContent=e.author,t.appendChild(w));let E={applied:0,refused:0,dropped:0},A=ue(e.limits),y={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},V={pushMs:y.pushMs,drawMs:y.drawMs},f,v,G,S,W,T,O=!1,n={applied:0,refused:0,dropped:0},c=[],h=()=>{if(!S)return;let r=S.stats;E.applied+=r.applied-n.applied,E.refused+=r.refused-n.refused,E.dropped+=r.dropped-n.dropped,n={...r}},k=()=>{},l,d,b=()=>{let r=g.querySelector("[data-graview-view-root]"),s=p.ResizeObserver;d||!r||typeof s!="function"||(d=new s(M=>{let _=M[M.length-1]?.borderBoxSize?.[0],I=Math.ceil(_?_.blockSize:r.offsetHeight);I!==l&&(l=I,m.setAttribute("data-graview-content-height",String(I)),e.onContentHeight?.(I))}),d.observe(r))},K=()=>{d&&(d.disconnect(),d=void 0,l=void 0,m.removeAttribute("data-graview-content-height"),e.onContentHeight?.(void 0))},R=0,P=()=>{},F,Jt,q,Ie=[],Ce=()=>{P(),P=()=>{},F?.dispose(),h(),S?.dispose(),S=void 0,W?.stop(),k(),p.clearInterval(R)},H=(r,s)=>{if(O)return;O=!0,Ce(),K(),T?.dispose();let M=Vr(r,y,s);m.removeAttribute("data-worker-view-drawn"),m.setAttribute("data-worker-view-failed",r),e.fallback!==!1&&(e.fallback??Qt)(m,r,M),e.onFailure?.(r,M)},Qt=(r,s,M)=>{let _=v??(()=>{try{return Re(e.store,e.principal,{manifest:o,...e.input?{input:e.input()}:{},...G?{computed:G}:{}})}catch{return}})(),I=a.createElement("div");I.setAttribute("data-graview-fallback",s),I.style.cssText="padding:12px;display:grid;gap:6px;color:var(--graview-ink, inherit);font-family:var(--graview-font-body, inherit)";let u=a.createElement("strong");u.textContent=o.title??o.name;let C=a.createElement("ul");C.style.cssText="margin:0;padding-left:1.2em";for(let j of[..._?.node?[_.node]:[],..._?.nodes??[]]){let de=a.createElement("li");de.textContent=j.label??j.id,C.appendChild(de)}let N=a.createElement("p");N.style.cssText="margin:0;font-size:0.8125rem;color:var(--graview-ink-muted, inherit)",N.textContent=`This view was stopped. ${M}`,I.append(u,C,N),g.replaceChildren(I)},Ne=Wt(o,e.store);if(Ne.length>0)return queueMicrotask(()=>H("manifest",Ne.join(" "))),Se();let He=r=>{if(("source"in r?new TextEncoder().encode(r.source).length:"script"in r?new TextEncoder().encode(r.script).length:0)>y.maxSourceBytes)return["source"];let M="source"in r?pe(r.source):[];return M.length>0?["source",M.join(" ")]:void 0},X=e.worker,De=typeof X=="function"?void 0:He(X);if(De)return queueMicrotask(()=>H(...De)),Se();let je=Pt(p,()=>Fe(),"blob"),we=()=>Kt(()=>e.theme?.()??fe(m),e.brand,je),$e=()=>{let r=e.brand?.()?.views;T?.theme(r?.css),T?.motion(r?.motion??"none")},Be="",ve=()=>{Be=JSON.stringify(we()),$e(),S?.push()},Fe=()=>{S&&JSON.stringify(we())!==Be&&ve()},Zt=Ot(a,Fe),U,er=We(e.store,o)?Kr().then(({computedOn:r})=>{G=r(e.store.schema)}):Promise.resolve(),z,tr=o.pictures?Rr().then(({createGuestPictures:r})=>{O||(U=r(p,{as:"blob",view:`"${o.title??o.name}"`,pictures:o.pictures,...e.limits?{limits:e.limits}:{},...e.file?{file:e.file}:{},moved:()=>S?.push(),onLeft:s=>{$?.postMessage({type:"notice",text:s}),e.onProblem?.(s)}}))}):Promise.resolve();k=()=>{Zt(),je.dispose(),U?.dispose(),ee?.dispose(),z?.dispose(),ae?.dispose()};let $,Y=r=>$?.postMessage(r),Ue=!1,ze=!1,oe=()=>m.toggleAttribute("data-worker-view-drawn",!O&&ze&&T!==void 0&&c.length===0&&Q.size===0&&!U?.waiting()&&!(z?.waiting??0)),J=p.performance,Q=new Map,se=J.now(),rr=()=>{if(R)return;let r=Math.max(10,Math.min(250,Math.floor(y.pushMs/4)));se=J.now(),R=p.setInterval(()=>{let s=J.now(),M=s-se>r*2?s-se-r:0;se=s;for(let[_,I]of Q){let u=I+M;if(Q.set(_,u),s-u>=y.pushMs)return H("slow")}},r)},nr=he(()=>y.drawMs,()=>J.now()),qe=()=>{},ke=r=>{if(O)return;if(!T)return void c.push(r);let s=T;if(!nr.draw(_=>r[0]==="render"?s.apply(r[1],_):(s.style(r[1]),!0)))return H("slow");r[0]==="render"&&qe()},Xe=()=>new Set([...e.store.kindsKeptFrom(e.principal),...e.store.modules.disabledKinds]),Ye=()=>vt(e.store.schema,Xe()),be=()=>kt(e.store.schema,e.places?.()??[],{kept:Xe(),...e.arrangement?{pages:e.arrangement()}:{}}),Z=bt({sees:r=>e.store.seenBy(e.principal).graph.has(r),places:be,lists:Ye,schema:e.store.schema,...e.onNavigate?{onNavigate:e.onNavigate}:e.goTo?{onNavigate:r=>At(e.goTo(),r)}:{},...e.hrefOf?{hrefOf:e.hrefOf}:!e.onNavigate&&e.goTo?{hrefOf:r=>Gt(e.goTo(),r)}:{},onLost:r=>{$?.postMessage({type:"notice",text:r}),e.onProblem?.(r)}}),D=new Set,Je=new Set,ee,Qe=!1,Ze=()=>{Qe||(Qe=!0,Ar().then(({createGuestMedia:r})=>{O||(ee=r(p,{view:`"${o.title??o.name}"`,pictures:o.pictures!==void 0,shown:()=>v,...e.file?{file:e.file}:{},onProblem:s=>{$?.postMessage({type:"notice",text:s}),e.onProblem?.(s)}}),ee.refresh(g))},()=>e.onProblem?.(`The view "${o.title??o.name}" places a video or a full-screen viewer, and the host's player could not be loaded.`)))},et=!1,tt=!1,ie=new Map,rt=()=>{et||!o.accepts?.length||(et=!0,Gr().then(({createGuestDrops:r})=>{O||(z=r(p,{shadow:g,manifest:o,store:e.store,principal:e.principal,files:()=>e.files?.(),shown:()=>D,hears:()=>tt,idOf:s=>T?.renderer.idOf(s),send:Y,change:(s,M)=>{if(!S)return{ok:!1,reason:"refused",message:"The view has gone."};let _=S.change(s,M);return h(),_},handed:(s,M)=>ie.set(s.href,{file:s,drop:M}),onProblem:s=>{$?.postMessage({type:"notice",text:s}),e.onProblem?.(s)},onBusy:()=>oe()}),z.refresh())},()=>e.onProblem?.(`The view "${o.title??o.name}" takes files, and the host's drop could not be loaded.`)))},ae,nt=[],ot=!1,or=r=>{nt=r,ae?.bind(r),!(ot||r.length===0)&&(ot=!0,Or().then(({createGuestGestures:s,unheardWords:M})=>{if(!O){if(o.gestures!==!0){let _=M(o.title??o.name);return $?.postMessage({type:"notice",text:_}),e.onProblem?.(_)}ae=s(g,{root:()=>g.querySelector("[data-graview-view-root]")??void 0,idOf:_=>T?.renderer.idOf(_),send:Y}),ae.bind(nt)}},()=>{}))},sr=r=>{let s=e.store.seenBy(e.principal).graph;for(let M of D){let _=s.getNode(M);for(let I of Object.values(_??{}))for(let u of Et(I))if(u.href===r)return u}},st=()=>Jt??=Pr().then(({createGuestSections:r})=>{if(!O)return F=r(p,{shadow:g,idOf:s=>T?.renderer.idOf(s),send:Y,record:s=>D.has(s)?e.store.seenBy(e.principal).graph.getNode(s):void 0,...e.file?{file:e.file}:{},onProblem:s=>{$?.postMessage({type:"notice",text:s}),e.onProblem?.(s)}}),F.refresh(),F},()=>{e.onProblem?.(`The view "${o.title??o.name}" draws a jump or a file link, and the host's part of it could not be loaded.`)}),it=r=>{if(r.localName==="graview-video")return Ze();r.hasAttribute("data-lightbox")&&(r.setAttribute("aria-haspopup","dialog"),Ze())};Promise.all([Er(),Wr()]).then(([{createOpenDrawing:r,handedLinks:s,judgeLink:M,linkRefusedWords:_},{createPressReader:I,createSaver:u,fillPrefills:C,judgePress:N,markPresses:j,prefillOf:de,quietPictures:ir}])=>{if(O)return;let te=I(),ar=i=>Ie.some(x=>{try{for(let L=i;L&&L.getRootNode()===g&&!L.hasAttribute("data-graview-view-root");L=L.parentElement)if(L.matches(x))return!0}catch{}return!1}),ut=(i,x)=>{let L=T?.renderer.idOf(i);if(L!==void 0&&Y({type:"dom-event",target:L,event:"acted",pressed:x}),x.ok)return q?.clear(i);ar(i)||Lr().then(({createRefusalNotes:re})=>{O||!i.isConnected||(q??=re(g),q.say(i,x.message??"That was not applied."))},()=>e.onProblem?.(`A press in the view "${o.title??o.name}" was refused: ${x.message??x.reason??"not applied"}`))},Te=u({reader:te,save:(i,x)=>{if(!S)return;let L=S.pressed(N(e.store,o,D,i));h(),ut(x,{as:i.as,...L})}}),ct=()=>Te.flush();p.addEventListener("pagehide",ct),P=()=>{p.removeEventListener("pagehide",ct),Te.flush()};let dr=new WeakSet;qe=()=>{Z.refresh(g),j(g),ir(g),C(g,te,dr,i=>de(e.store,e.principal,o,D,i)),ee?.refresh(g),z?.refresh(),q?.refresh(),F?F.refresh():g.querySelector(_r)&&st()};let pt,ft=new Set,lr=()=>(pt!==v&&([pt,ft]=[v,s(v)]),ft),mt=new Set;T=r(g,{origin:e.origin??p.location.origin,link:i=>M(i,{handed:lr(),...e.links?{origins:e.links.origins}:{}}),...e.asset?{asset:e.asset}:{},...e.images?{imageOrigins:e.images.origins}:{},...o.pictures?{picture:i=>U?.drawn(i)}:{},onRefused:i=>{if(i.reason==="url"&&i.element==="a"&&i.address!==void 0&&!mt.has(i.address)){mt.add(i.address);let L=_(i.address,e.links?.origins);return $?.postMessage({type:"notice",text:L}),e.onProblem?.(L)}if(i.reason!=="url"||i.element!=="img"||i.address===void 0||Je.has(i.address))return;Je.add(i.address);let x=Tt(i.address,{...e.images?{origins:e.images.origins}:{},assets:e.asset!==void 0},i.length);$?.postMessage({type:"notice",text:x}),e.onProblem?.(x)},...e.limits?.maxNodes!==void 0?{maxNodes:e.limits.maxNodes}:{},onOverBudget:()=>H("nodes"),send:Y,onFieldSet:i=>te.filled(i),onAttribute:(i,x)=>{(x==="data-record"||x==="data-place")&&Z.link(i),x==="data-lightbox"&&it(i),x==="data-drop"&&rt()},decorate:i=>{(i.hasAttribute("data-record")||i.hasAttribute("data-place"))&&Z.link(i),it(i),i.hasAttribute("data-drop")&&rt()},before:(i,x,L)=>{te.heard(i,x),Te.heard(i,x,L),Z.pressed(i,x,L);let re=x.closest("a[href]");re&&L.contains(re)&&!re.hasAttribute("data-graview-link")&&i.type==="click"&&i.stopPropagation();let le=x.closest("[data-lightbox]"),gt=i.type==="keydown"?i.key:void 0;if(le&&L.contains(le)&&i.isTrusted&&(i.type==="click"||(gt==="Enter"||gt===" ")&&le.localName!=="button")&&(i.preventDefault(),i.stopPropagation(),ee?.open(le)),z?.before(i,x,L))return!1;let yt=i.type==="click"&&i.isTrusted?x.closest('a[href^="#"]'):null;yt&&L.contains(yt)&&(i.preventDefault(),F?F.jump(x,L):st().then(pr=>pr?.jump(x,L)));let Me=te.press(i,x,L);if(!Me||!S)return;i.stopPropagation(),q?.clear(x.closest("[data-act]")),i.type==="keydown"&&i.preventDefault();let ur=S.pressed(N(e.store,o,D,Me));h();let ht={as:Me.as,...ur},cr=x.closest("[data-act]");return queueMicrotask(()=>ut(cr,ht)),{pressed:ht}}}),$e();for(let i of c.splice(0))ke(i);b(),oe()},()=>H("start","the view's drawing could not be loaded"));let xe=r=>W=ye(p,{source:r,name:o.name,limiter:A,readyMs:e.limits?.readyMs??5e3,silentMs:e.limits?.silentMs??5e3,onDropped:()=>E.dropped+=1,onStop:(s,M)=>H(s,M),onError:s=>{Ue||H("error",s)},onReady:(s,M,_)=>{$=M,f=Bt(Ut(p,_)),Object.assign(y,Ft(V,f)),rr();let I=ce({store:e.store,principal:e.principal,view:o.name,nonce:s,send:u=>{u.type==="props"&&typeof u.push=="number"&&(Q.set(u.push,J.now()),oe()),M.postMessage(u)},props:()=>{let u=Re(e.store,e.principal,{manifest:o,...e.input?{input:e.input()}:{},theme:we(),places:wt(be()),...G?{computed:G}:{}}),C=D;return D=new Set([...u.node?[u.node.id]:[],...(u.nodes??[]).map(N=>N.id)]),v&&(C.size!==D.size||[...D].some(N=>!C.has(N)))&&T?.fade(),v=u,u},...U?{hand:U.hand}:{},judgeAct:(u,C)=>{let N=Rt(e.store,o,u,C,{shown:D,file:j=>ie.get(j)?.file??sr(j),dropped:j=>ie.get(j)?.drop});if(N.ok)for(let j of N.spent??[])ie.delete(j);return N},onHears:u=>{u.includes("drop")&&(tt=!0)},onGestures:or,onClicks:(u,C)=>{Mt(m,u),Ie=C},onRender:u=>{Ue=!0,ke(["render",u])},onPushed:(u,C)=>{if(Q.delete(u),C>=y.pushMs)return H("slow");ze=!0,oe()},onFlood:()=>H("flood"),onStyle:u=>ke(["style",u]),places:()=>[...new Set([...be().map(u=>u.as),...Ye().map(u=>u.slug)])],...e.limits?{limits:e.limits}:{},limiter:A});S=I,M.onmessage=({data:u})=>{if(!W?.answer(u)&&(I.receive(u),h(),!O&&u?.nonce===s&&u.type==="navigate")){let C={...u.where!==void 0?{where:u.where}:{},...u.section!==void 0?{section:u.section}:{}},N=typeof u.place=="string"?{place:u.place,...C}:typeof u.to=="string"&&{record:u.to,...C};N&&Z.go(N)}},ve()}}),at=o.pictures!==void 0||We(e.store,o),dt=()=>Promise.all([tr.catch(()=>Promise.reject(new Error("the view's pictures could not be loaded"))),er.catch(()=>Promise.reject(new Error("the view's computed values could not be worked out")))]),lt=r=>{"source"in r?(at?Promise.all([Ae(r.source),dt()]).then(([s])=>s):Ae(r.source)).then(s=>{O||xe({script:s})},s=>H("start",s instanceof Error&&s.message.startsWith("the view's")?s.message:"the view's runtime could not be loaded")):at?dt().then(()=>{O||xe(r)},s=>H("start",s instanceof Error?s.message:"the view's pictures could not be loaded")):xe(r)};return typeof X=="function"?me(X).then(r=>{if(O)return;let s=He(r);s?H(...s):lt(r)},r=>H("source",`Its code did not arrive${r instanceof Error&&r.message?`: ${r.message}`:""}.`)):lt(X),Se();function Se(){return{element:m,shadow:g,get worker(){return W?.worker},update:()=>{S&&ve()},get stats(){return h(),E},get refused(){return T?.refused??[]},get contentHeight(){return l},get css(){return T?.css??""},get pace(){return f},dispose(){O=!0,Ce(),d?.disconnect(),T?.dispose(),m.remove(),w?.remove()}}}}var zt=8e3,qt=t=>({root:t?.shadow.querySelector("[data-graview-view-root]")??void 0,css:t?.css??"",height:t?.contentHeight}),Xt=t=>(t?.refused??[]).map(e=>`Refused ${e.reason==="css"?"a rule of the stylesheet":`${e.element?`<${e.element}>`:"something"}${e.name?` ${e.name}`:""}`} (${e.reason}).`);function Cr({element:t,definition:e,mounted:a,optionsFor:p,draw:o,mount:m,pressing:g}){return{name:e.manifest.name,title:e.manifest.title??e.manifest.name,source:async()=>{let w=typeof e.worker=="function"?await me(e.worker):e.worker;return"source"in w?w.source:void 0},theme:async()=>{let w=a()?.element;return w?{...fe(w)}:{}},drawing:()=>qt(a()),refused:()=>Xt(a()),check:async w=>pe(w),presses:async w=>{let E=g?.();if(!E)throw new Error("This page cannot press a view's controls.");let{pressedHere:A}=await E(),y=p({source:w}),V=await A({manifest:y.manifest,source:w,store:y.store,principal:y.principal,...y.input?{input:y.input()}:{},...y.places?{places:y.places()}:{}});if(!V.ok){let v={control:"the view",element:"",does:"nothing",ok:!1,says:V.detail};return{ok:!1,controls:[v],problems:[v]}}let f=V.presses;return f?{ok:f.ok,controls:f.controls,problems:f.problems}:{ok:!0,controls:[],problems:[]}},draft:w=>{let E=a()?.element,A=t.ownerDocument.createElement("div");A.setAttribute("data-graview-section-draft",e.manifest.name),A.style.minWidth="0",t.appendChild(A),E&&(E.style.display="none");let y=()=>{},V=new Promise(G=>y=G),f=setTimeout(()=>y({failed:`It did not draw in ${zt/1e3} seconds.`}),zt),v=m(A,{...p({source:w}),fallback:!1,onFailure:(G,S)=>y({failed:S??`It failed (${G}).`}),onContentHeight:G=>{G!==void 0&&G>0&&y({})}});return V.then(()=>clearTimeout(f)),{drawn:V,drawing:()=>qt(v),refused:()=>Xt(v),dispose:()=>{clearTimeout(f),v.dispose(),A.remove(),E&&(E.style.display="")}}},draw:o}}var Yt="graview-guest-kit";function kn(t,e){let a=t.ownerDocument,p=a.defaultView;if(!a.getElementById(Yt)){let W=a.createElement("style");W.id=Yt,W.textContent=Ve,a.head.appendChild(W)}let o=a.createElement("div");o.className="graview-guest",o.setAttribute("role","group"),o.setAttribute("aria-label",e.title??e.view),o.setAttribute("data-guest-view",e.view),t.appendChild(o);let m={applied:0,refused:0,dropped:0},g=ue(e.limits),w=he(()=>e.limits?.drawMs??100,()=>p.performance.now()),E,A,y,V=!1,f={applied:0,refused:0,dropped:0},v=()=>{if(!E)return;let W=E.stats;m.applied+=W.applied-f.applied,m.refused+=W.refused-f.refused,m.dropped+=W.dropped-f.dropped,f={...W}},G=()=>{v(),E?.dispose(),E=void 0,y?.stop()},S=(W,T)=>{V||(V=!0,G(),A?.dispose(),e.onFailure?.(W,T))};return y=ye(p,{source:e.worker,name:e.view,limiter:g,readyMs:e.limits?.readyMs??5e3,silentMs:e.limits?.silentMs??5e3,onDropped:()=>m.dropped+=1,onStop:(W,T)=>S(W,T),onReady:(W,T)=>{let O=_e(o,{...e.kit?{kit:e.kit}:{},...e.links?{links:e.links}:{},onEvent:(c,h)=>T.postMessage({type:"event",listener:c,...h!==void 0?{detail:h}:{}}),...e.limits?.maxNodes!==void 0?{maxNodes:e.limits.maxNodes}:{},onOverBudget:()=>S("budget")});A=O;let n=ce({store:e.store,principal:e.principal,view:e.view,nonce:W,send:c=>T.postMessage(c),onRender:c=>{w.draw(h=>O.apply(c,h))||S("slow")},...e.input?{input:e.input}:{},...e.onNavigate?{onNavigate:e.onNavigate}:{},onSize:e.onSize??(c=>o.style.minHeight=`${c}px`),...e.limits?{limits:e.limits}:{},limiter:g});E=n,T.onmessage=c=>{y?.answer(c.data)||(n.receive(c.data),v())},n.push()}}),{element:o,get worker(){return y?.worker},update:()=>E?.push(),get stats(){return v(),m},get refused(){return A?.refused??[]},dispose(){V=!0,G(),A?.dispose(),o.remove()}}}export{Oe as GUEST_KIT,Ve as GUEST_KIT_CSS,Ge as KIT_LINK_TARGETS,Lt as KIT_TONES,_e as createKitRenderer,Nt as hostAttribute,Ht as kitValue,kn as mountGuestWorker,Ir as mountWorkerView,Cr as viewPlaceHandle};