graview 0.1.29 → 0.1.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/preview/{chunk.X53HI436.js → chunk.26CZTUY4.js} +1 -1
  2. package/dist/preview/chunk.2CIBWZJG.js +1 -0
  3. package/dist/preview/chunk.2EXGG6BB.js +1 -0
  4. package/dist/preview/chunk.2NBYNZRD.js +1 -0
  5. package/dist/preview/chunk.2XAONC66.js +1 -0
  6. package/dist/preview/chunk.34ZMMURV.js +27 -0
  7. package/dist/preview/{chunk.44FVJOK4.js → chunk.3ADPAGPY.js} +1 -1
  8. package/dist/preview/chunk.3JGGBLRB.js +1 -0
  9. package/dist/preview/chunk.3JNMSOFG.js +1 -0
  10. package/dist/preview/chunk.3R4W2P5X.js +1 -0
  11. package/dist/preview/chunk.3SKKIHU3.js +4 -0
  12. package/dist/preview/{chunk.OGXE2RHC.js → chunk.3URFMWXZ.js} +2 -2
  13. package/dist/preview/chunk.3VL5WECB.js +1 -0
  14. package/dist/preview/chunk.42YX6NOY.js +2 -0
  15. package/dist/preview/{chunk.XAXJHEMD.js → chunk.4ALKPNXM.js} +1 -1
  16. package/dist/preview/chunk.4HP7UWA2.js +1 -0
  17. package/dist/preview/{chunk.ZBXOX3W3.js → chunk.4SJUTBDV.js} +1 -1
  18. package/dist/preview/chunk.5U5J3ISK.js +1 -0
  19. package/dist/preview/{chunk.YCA7P5MK.js → chunk.6T2Q6NLO.js} +1 -1
  20. package/dist/preview/chunk.6V2RG5JG.js +5 -0
  21. package/dist/preview/chunk.6XMEU2Q2.js +1 -0
  22. package/dist/preview/chunk.7BWT5L2L.js +1 -0
  23. package/dist/preview/chunk.AK3IHFCF.js +1 -0
  24. package/dist/preview/chunk.BPWNWE7N.js +1 -0
  25. package/dist/preview/{chunk.YRQZZH5V.js → chunk.C5CYZNSJ.js} +1 -1
  26. package/dist/preview/chunk.CM6LOIQE.js +88 -0
  27. package/dist/preview/{chunk.IPBXAAQV.js → chunk.D3IECJ2S.js} +1 -1
  28. package/dist/preview/chunk.DT7LHWU2.js +1 -0
  29. package/dist/preview/chunk.DZRTOURR.js +1 -0
  30. package/dist/preview/{chunk.JNGUSAWX.js → chunk.ERXSYPYL.js} +17 -3
  31. package/dist/preview/chunk.FDELO7NY.js +116 -0
  32. package/dist/preview/chunk.FGVKJWNS.js +6 -0
  33. package/dist/preview/{chunk.7D77HEIJ.js → chunk.FWCOJDOD.js} +1 -1
  34. package/dist/preview/chunk.GFF2FB2J.js +25 -0
  35. package/dist/preview/chunk.GLBHQFJ2.js +1 -0
  36. package/dist/preview/{chunk.ZSKP6UQS.js → chunk.HHI65WFZ.js} +1 -1
  37. package/dist/preview/chunk.HHPGWJDO.js +2 -0
  38. package/dist/preview/chunk.HSCTWAUV.js +1 -0
  39. package/dist/preview/chunk.INZUEWC5.js +1 -0
  40. package/dist/preview/{chunk.QNHECGMH.js → chunk.J2ITFGN3.js} +1 -1
  41. package/dist/preview/chunk.JH6MU6TX.js +2 -0
  42. package/dist/preview/chunk.JISMMIMX.js +1 -0
  43. package/dist/preview/chunk.JN7DIFR3.js +1 -0
  44. package/dist/preview/chunk.JPHNKWTY.js +1 -0
  45. package/dist/preview/chunk.JTNWD2CN.js +1 -0
  46. package/dist/preview/chunk.K75FUIZI.js +1 -0
  47. package/dist/preview/chunk.K776HO42.js +2 -0
  48. package/dist/preview/chunk.KN3ULTGF.js +1 -0
  49. package/dist/preview/chunk.KOB6N3SL.js +1 -0
  50. package/dist/preview/chunk.KQT7WAQE.js +1 -0
  51. package/dist/preview/chunk.L4DECHXR.js +327 -0
  52. package/dist/preview/{chunk.J46KDTEZ.js → chunk.L6OMEYL6.js} +1 -1
  53. package/dist/preview/chunk.LQ7V6KEE.js +1 -0
  54. package/dist/preview/{chunk.AVUS5LMG.js → chunk.MD74YVRN.js} +2 -2
  55. package/dist/preview/chunk.MGNP4LAM.js +1 -0
  56. package/dist/preview/chunk.NCTOBUCT.js +1 -0
  57. package/dist/preview/chunk.NDADLJE6.js +1 -0
  58. package/dist/preview/{chunk.64P76WK4.js → chunk.NO52VON3.js} +1 -1
  59. package/dist/preview/{chunk.5AT4O4BN.js → chunk.O2LK2AO7.js} +1 -1
  60. package/dist/preview/chunk.OAF7TUMI.js +1 -0
  61. package/dist/preview/{chunk.WLRTPFAC.js → chunk.OQ4KFN6W.js} +1 -1
  62. package/dist/preview/chunk.OXQMNIRO.js +1 -0
  63. package/dist/preview/chunk.OZNW5W4Z.js +1 -0
  64. package/dist/preview/{chunk.HV6I74DF.js → chunk.PAVR5TK5.js} +1 -1
  65. package/dist/preview/chunk.PKK6FRZR.js +2 -0
  66. package/dist/preview/chunk.QIAKO27D.js +1 -0
  67. package/dist/preview/{chunk.CK7QWLMX.js → chunk.QNGWEV47.js} +1 -1
  68. package/dist/preview/{chunk.3G5MQFZK.js → chunk.QTA4ROAK.js} +1 -1
  69. package/dist/preview/chunk.QTMWHE5O.js +1 -0
  70. package/dist/preview/chunk.R26DREVU.js +1 -0
  71. package/dist/preview/chunk.RI3PYG5T.js +19 -0
  72. package/dist/preview/{chunk.ONGVH3ZM.js → chunk.RIEHYQLK.js} +44 -19
  73. package/dist/preview/chunk.RRVIXV7W.js +1 -0
  74. package/dist/preview/{chunk.BZ5OJYHU.js → chunk.RYT5U3QM.js} +1 -1
  75. package/dist/preview/chunk.SE5SKFQH.js +1 -0
  76. package/dist/preview/chunk.SHPXD6FC.js +1 -0
  77. package/dist/preview/chunk.SOBC3CTN.js +47 -0
  78. package/dist/preview/chunk.SOD3PBJM.js +1 -0
  79. package/dist/preview/{chunk.QSDT2RLY.js → chunk.T3VPD7JQ.js} +1 -1
  80. package/dist/preview/chunk.TI4OSTQV.js +1 -0
  81. package/dist/preview/chunk.UDSEJKCY.js +1 -0
  82. package/dist/preview/chunk.UGFDSE37.js +1 -0
  83. package/dist/preview/{chunk.IZW7DBK4.js → chunk.UWGWXFWZ.js} +1 -1
  84. package/dist/preview/{chunk.T4LY5QXO.js → chunk.UZWWDAGM.js} +1 -1
  85. package/dist/preview/chunk.V5ZYUVMH.js +1 -0
  86. package/dist/preview/chunk.V7BDAGDE.js +35 -0
  87. package/dist/preview/chunk.VG56IUIQ.js +9 -0
  88. package/dist/preview/chunk.VOAZBHCG.js +1 -0
  89. package/dist/preview/{chunk.O4QPITBD.js → chunk.VS7K3SCD.js} +1 -1
  90. package/dist/preview/{chunk.Z5V23DQN.js → chunk.VSZQXB4Q.js} +2 -2
  91. package/dist/preview/chunk.W3S6UXNA.js +1 -0
  92. package/dist/preview/chunk.WAFDCOOG.js +3 -0
  93. package/dist/preview/chunk.WYTIOLPP.js +1 -0
  94. package/dist/preview/chunk.X37L5TN5.js +1 -0
  95. package/dist/preview/{chunk.GZH6PTXN.js → chunk.XRJBLH4N.js} +1 -1
  96. package/dist/preview/{chunk.D4GOVA25.js → chunk.XS7YFNDU.js} +1 -1
  97. package/dist/preview/{chunk.V6TK4LHW.js → chunk.XSTXV6FP.js} +4 -4
  98. package/dist/preview/chunk.Y4UXEL6Y.js +1 -0
  99. package/dist/preview/chunk.YJUB4OD7.js +1 -0
  100. package/dist/preview/chunk.YLQB3KBA.js +1 -0
  101. package/dist/preview/{chunk.XXHNV24G.js → chunk.YNQDVGZM.js} +1 -1
  102. package/dist/preview/chunk.YV2LJFGS.js +1 -0
  103. package/dist/preview/chunk.Z2YUYZT4.js +1 -0
  104. package/dist/preview/chunk.ZYKAS4BT.js +1 -0
  105. package/dist/preview/page.js +6 -6
  106. package/package.json +6 -6
  107. package/dist/preview/chunk.2643W7FT.js +0 -1
  108. package/dist/preview/chunk.2CLPRG3I.js +0 -1
  109. package/dist/preview/chunk.2IZFIORK.js +0 -1
  110. package/dist/preview/chunk.2NCTM5K2.js +0 -2
  111. package/dist/preview/chunk.3JM2TNDD.js +0 -2
  112. package/dist/preview/chunk.4GGAPOMK.js +0 -2
  113. package/dist/preview/chunk.5JXUAMKI.js +0 -1
  114. package/dist/preview/chunk.5R66YTET.js +0 -2
  115. package/dist/preview/chunk.7DNFXJH3.js +0 -1
  116. package/dist/preview/chunk.7PRFYYVM.js +0 -1
  117. package/dist/preview/chunk.AE5GKL4C.js +0 -1
  118. package/dist/preview/chunk.ARR75WBP.js +0 -35
  119. package/dist/preview/chunk.BKPGDEES.js +0 -1
  120. package/dist/preview/chunk.COTG2IG5.js +0 -1
  121. package/dist/preview/chunk.DAA6XWLF.js +0 -1
  122. package/dist/preview/chunk.DKTCRFMS.js +0 -1
  123. package/dist/preview/chunk.DLGTFXGM.js +0 -1
  124. package/dist/preview/chunk.DN7SN6ZR.js +0 -1
  125. package/dist/preview/chunk.G4WQGTZR.js +0 -3
  126. package/dist/preview/chunk.GDA3G4U2.js +0 -6
  127. package/dist/preview/chunk.GS4T26WW.js +0 -328
  128. package/dist/preview/chunk.HFKMHLJ3.js +0 -1
  129. package/dist/preview/chunk.HGAMNIST.js +0 -1
  130. package/dist/preview/chunk.HKBKH7EK.js +0 -1
  131. package/dist/preview/chunk.HLLWKSZB.js +0 -5
  132. package/dist/preview/chunk.HONUT6OG.js +0 -1
  133. package/dist/preview/chunk.HRWLR7T4.js +0 -1
  134. package/dist/preview/chunk.IWYUFYDJ.js +0 -1
  135. package/dist/preview/chunk.JU2ZVKMT.js +0 -2
  136. package/dist/preview/chunk.K4ZUVH2G.js +0 -1
  137. package/dist/preview/chunk.KC6UZHBM.js +0 -1
  138. package/dist/preview/chunk.KLITC55P.js +0 -1
  139. package/dist/preview/chunk.KZ2376BD.js +0 -19
  140. package/dist/preview/chunk.LYJAVUST.js +0 -1
  141. package/dist/preview/chunk.MOUGB4H6.js +0 -1
  142. package/dist/preview/chunk.MYFWM572.js +0 -1
  143. package/dist/preview/chunk.N4FBDA2W.js +0 -1
  144. package/dist/preview/chunk.O42YET3W.js +0 -1
  145. package/dist/preview/chunk.ONDILMIX.js +0 -1
  146. package/dist/preview/chunk.OWBEV6FR.js +0 -1
  147. package/dist/preview/chunk.OWE6OJ4P.js +0 -1
  148. package/dist/preview/chunk.OYJSFO3A.js +0 -1
  149. package/dist/preview/chunk.P62SKNJS.js +0 -27
  150. package/dist/preview/chunk.PA5HYAEO.js +0 -1
  151. package/dist/preview/chunk.PMEDLEZY.js +0 -9
  152. package/dist/preview/chunk.PTXQHHKF.js +0 -1
  153. package/dist/preview/chunk.R2D373VG.js +0 -1
  154. package/dist/preview/chunk.RB4RTBRZ.js +0 -1
  155. package/dist/preview/chunk.RCLJ4H52.js +0 -116
  156. package/dist/preview/chunk.RKRSRKF3.js +0 -1
  157. package/dist/preview/chunk.RWGLKDWH.js +0 -1
  158. package/dist/preview/chunk.SIL4KD3K.js +0 -1
  159. package/dist/preview/chunk.SS76EIMI.js +0 -1
  160. package/dist/preview/chunk.UIIVEQAT.js +0 -1
  161. package/dist/preview/chunk.UTHHX2TJ.js +0 -1
  162. package/dist/preview/chunk.UWNYT7PF.js +0 -1
  163. package/dist/preview/chunk.VNBO2RXD.js +0 -1
  164. package/dist/preview/chunk.VPPUTA74.js +0 -1
  165. package/dist/preview/chunk.WKXNBHTL.js +0 -4
  166. package/dist/preview/chunk.XDZSTIS6.js +0 -88
  167. package/dist/preview/chunk.YUWRZWGX.js +0 -1
  168. package/dist/preview/chunk.Z2RGLFLS.js +0 -1
  169. package/dist/preview/chunk.Z56B2JR2.js +0 -25
  170. package/dist/preview/chunk.ZEGSQCSD.js +0 -1
  171. package/dist/preview/chunk.ZEVVWWNA.js +0 -44
  172. package/dist/preview/chunk.ZS4DJ76C.js +0 -1
  173. /package/dist/preview/{chunk.OHE5AMHH.js → chunk.EYZ7MHBZ.js} +0 -0
@@ -1 +1 @@
1
- import{eb as w,kb as S}from"./chunk.HLLWKSZB.js";function B(s){return[...s.mutations??[],...S(s.schema,s.mutations??[])]}function b(s){let i=[...s.schema.kinds],a=B(s),d=new Map,c=new Map;for(let n of a){c.set(n.name,n.creates??[]);let e=w(n.input).filter(t=>!t.optional&&!t.kinds.includes("*")).flatMap(t=>t.kinds);d.set(n.name,[...new Set(e)])}let g=new Map;for(let n of i)g.set(n,[]);for(let n of a)for(let e of c.get(n.name)??[])g.get(e)?.push(n.name);let p=new Map,l=new Set;for(let n=0;;n+=1){let e=[];for(let t of a)if((d.get(t.name)??[]).every(o=>l.has(o)))for(let o of c.get(t.name)??[])l.has(o)||e.push(o);if(e.length===0)break;for(let t of e)l.add(t),p.set(t,n)}let h=n=>{let e=g.get(n)??[];if(e.length===0)return[];let t=e.map(r=>d.get(r)??[]).sort((r,o)=>r.length-o.length)[0];return[...new Set(t)].filter(r=>r!==n)},y=new Map,u=n=>{let e=y.get(n);if(e)return e;let t=new Set;y.set(n,t);for(let r of h(n)){t.add(r);for(let o of u(r))t.add(o)}return t.delete(n),t},f=new Map(i.map(n=>[n,0]));for(let n of i)for(let e of u(n))f.set(e,(f.get(e)??0)+1);let m=i.map(n=>({kind:n,madeBy:[...g.get(n)??[]].sort(),needs:[...h(n)].sort(),depth:p.get(n)??null})).sort((n,e)=>(n.depth??Number.MAX_SAFE_INTEGER)-(e.depth??Number.MAX_SAFE_INTEGER)||(f.get(e.kind)??0)-(f.get(n.kind)??0)||n.kind.localeCompare(e.kind)),k=m.filter(n=>n.depth===0).map(n=>n.kind),A=[...new Set(a.filter(n=>(d.get(n.name)??[]).length===0).filter(n=>(c.get(n.name)??[]).length>0).map(n=>n.name))].sort(),M=m.filter(n=>n.depth===null).map(n=>({kind:n.kind,why:n.madeBy.length===0?"no act declares that it creates this kind":`every act that makes it needs ${n.needs.map(e=>`"${e}"`).join(", ")}, which nothing can make first`}));return{order:m,roots:k,doors:A,unreachable:M}}export{b as a};
1
+ import{Bb as S,vb as w}from"./chunk.6V2RG5JG.js";function B(s){return[...s.mutations??[],...S(s.schema,s.mutations??[])]}function b(s){let i=[...s.schema.kinds],a=B(s),d=new Map,c=new Map;for(let n of a){c.set(n.name,n.creates??[]);let e=w(n.input).filter(t=>!t.optional&&!t.kinds.includes("*")).flatMap(t=>t.kinds);d.set(n.name,[...new Set(e)])}let g=new Map;for(let n of i)g.set(n,[]);for(let n of a)for(let e of c.get(n.name)??[])g.get(e)?.push(n.name);let p=new Map,l=new Set;for(let n=0;;n+=1){let e=[];for(let t of a)if((d.get(t.name)??[]).every(o=>l.has(o)))for(let o of c.get(t.name)??[])l.has(o)||e.push(o);if(e.length===0)break;for(let t of e)l.add(t),p.set(t,n)}let h=n=>{let e=g.get(n)??[];if(e.length===0)return[];let t=e.map(r=>d.get(r)??[]).sort((r,o)=>r.length-o.length)[0];return[...new Set(t)].filter(r=>r!==n)},y=new Map,u=n=>{let e=y.get(n);if(e)return e;let t=new Set;y.set(n,t);for(let r of h(n)){t.add(r);for(let o of u(r))t.add(o)}return t.delete(n),t},f=new Map(i.map(n=>[n,0]));for(let n of i)for(let e of u(n))f.set(e,(f.get(e)??0)+1);let m=i.map(n=>({kind:n,madeBy:[...g.get(n)??[]].sort(),needs:[...h(n)].sort(),depth:p.get(n)??null})).sort((n,e)=>(n.depth??Number.MAX_SAFE_INTEGER)-(e.depth??Number.MAX_SAFE_INTEGER)||(f.get(e.kind)??0)-(f.get(n.kind)??0)||n.kind.localeCompare(e.kind)),k=m.filter(n=>n.depth===0).map(n=>n.kind),A=[...new Set(a.filter(n=>(d.get(n.name)??[]).length===0).filter(n=>(c.get(n.name)??[]).length>0).map(n=>n.name))].sort(),M=m.filter(n=>n.depth===null).map(n=>({kind:n.kind,why:n.madeBy.length===0?"no act declares that it creates this kind":`every act that makes it needs ${n.needs.map(e=>`"${e}"`).join(", ")}, which nothing can make first`}));return{order:m,roots:k,doors:A,unreachable:M}}export{b as a};
@@ -0,0 +1 @@
1
+ import{g as y}from"./chunk.L4DECHXR.js";import{G as N,R as u,T as f}from"./chunk.GFF2FB2J.js";import{b as g}from"./chunk.AJZBJBMO.js";var p=g(N(),1);var n=g(u(),1);var R={default:{background:"var(--graview-panel, #ffffff)",color:"var(--graview-ink, #1a1a1a)"},muted:{background:"var(--graview-panel-muted, #f7f5f1)",color:"var(--graview-ink, #1a1a1a)"},warning:{background:"var(--graview-panel-warning, #fdf3ec)",color:"var(--graview-ink, #1a1a1a)"}},T={color:"var(--graview-ink-muted, #55514a)"},C={color:"var(--graview-ink-faint, #625d55)"};function H(e){let[l,a]=(0,p.useState)(z);return(0,p.useEffect)(()=>{let r=e.current;if(!r||typeof ResizeObserver>"u")return;let t=()=>{let i=W(r,parseFloat(getComputedStyle(r).paddingBottom)||0);a(s=>s.overflowing===i.overflowing&&s.above===i.above&&s.below===i.below?s:i)};t();let d=new ResizeObserver(t);d.observe(r);for(let i of r.children)d.observe(i);return r.addEventListener("scroll",t,{passive:!0}),()=>{d.disconnect(),r.removeEventListener("scroll",t)}}),l}var z={overflowing:!1,above:!1,below:!1};function W(e,l=0){let a=e.scrollHeight>e.clientHeight+1,r=e.scrollWidth>e.clientWidth+1;return{overflowing:a||r,above:a&&e.scrollTop>1,below:a&&e.scrollTop+e.clientHeight<e.scrollHeight-l-1}}var A=(0,p.createContext)(null),I=(0,p.createContext)(null);function O({level:e,said:l=!0,style:a,children:r}){if(e===void 0)return(0,n.jsx)("strong",{style:a,...l?{}:{"aria-hidden":!0},children:r});let t=`h${e}`;return(0,n.jsx)(t,{style:{margin:0,...a},children:r})}function E({title:e,subtitle:l,meta:a,selected:r,tone:t="default",children:d,style:i,fit:s=!1,variant:h,heading:w}){let c=(0,p.useRef)(null),{overflowing:b,above:x,below:S}=H(c),P=f(),o=(h??(P==="fullscreen"?"page":"card"))==="page",k=(0,p.useContext)(A),v=(0,p.useContext)(I);return(0,n.jsxs)("div",{"data-graview-primitive":"panel","data-graview-variant":o?"page":"card","data-selected":r||void 0,style:{display:"flex",flexDirection:"column",gap:o?12:"var(--graview-gap, 7px)",height:o||s?"auto":"100%",maxHeight:o?"none":"100%",padding:o?0:"var(--graview-pad, 15px)",boxSizing:"border-box",borderRadius:o?0:"var(--graview-radius, 12px)",border:o?"none":`1px solid ${r?"var(--graview-accent, #2f6f5e)":"var(--graview-edge, #e4e0d8)"}`,boxShadow:o?"none":r?"0 0 0 1px var(--graview-accent-dim), var(--graview-lift-low)":"var(--graview-lift-low)",overflow:o?"visible":"hidden",...R[t],...o?{background:"transparent"}:{},...i},children:[t==="warning"?(0,n.jsx)("span",{"data-graview-broken":"",style:y,children:"Implicated in a problem."}):null,e===void 0||e===k?null:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"baseline",flexWrap:"wrap",gap:8,minWidth:0},children:[t==="warning"?(0,n.jsx)("span",{"aria-hidden":"true",title:"Implicated in a problem",style:{color:"var(--graview-warn)",flex:"0 0 auto"},children:"\u26A0"}):null,(0,n.jsx)(O,{level:w,said:v===null||e!==v,style:{fontFamily:"var(--graview-font-display, inherit)",fontSize:o?"1.5625rem":"0.9375rem",lineHeight:o?1.15:1.25,fontWeight:o?600:560,letterSpacing:o?"-0.012em":"0.005em",minWidth:0,overflowWrap:"anywhere"},children:e}),a===void 0?null:(0,n.jsx)("span",{style:{marginLeft:"auto",fontSize:"0.75rem",letterSpacing:"0.08em",textTransform:"uppercase",minWidth:0,overflowWrap:"anywhere",...C},children:a})]}),l===void 0?null:(0,n.jsx)("div",{style:{fontSize:o?"0.90625rem":"0.8125rem",lineHeight:1.5,...T},children:l}),(0,n.jsx)("div",{ref:c,className:o?void 0:"graview-scroll",...b&&!o?{tabIndex:0,role:"region",...typeof e=="string"?{"aria-label":e}:{}}:{},style:{display:"flex",flexDirection:"column",gap:o?22:"var(--graview-gap, 7px)",flex:"1 1 auto",...o?{overflow:"visible"}:{marginBottom:"calc(-1 * var(--graview-pad, 15px))",paddingBottom:"var(--graview-pad, 15px)"}},"data-graview-more-above":x&&!o?"":void 0,"data-graview-more-below":S&&!o?"":void 0,children:d})]})}function m({label:e,hue:l,selected:a,title:r,pickId:t,emphasis:d}){let i=typeof e=="string"?e:void 0,s=l===void 0?void 0:Math.round(l);return(0,n.jsxs)("span",{"data-graview-primitive":"chip","data-selected":a||void 0,"data-graview-pick":t,"data-graview-emphasis":d,title:r??i,style:{cursor:t?"pointer":void 0,display:"inline-flex",alignItems:"center",alignSelf:"flex-start",minHeight:24,boxSizing:"border-box",padding:"3px 9px",borderRadius:6,fontSize:"0.8125rem",lineHeight:1.5,whiteSpace:"nowrap",maxWidth:"min(28ch, 100%)",overflow:"hidden",letterSpacing:"0.01em",border:`1px solid ${a?"var(--graview-accent)":s===void 0?"var(--graview-edge)":`hsl(${s} 55% var(--graview-tint-lightness) / 0.45)`}`,background:s===void 0?"var(--graview-panel-muted)":`hsl(${s} 55% var(--graview-tint-lightness) / calc(var(--graview-tint-alpha) * 0.65))`,color:"var(--graview-ink, #1a1a1a)",boxShadow:a?"0 0 14px -4px var(--graview-accent)":void 0},children:[s===void 0?null:(0,n.jsx)("span",{"aria-hidden":"true",style:{width:9,height:6,clipPath:"polygon(50% 0, 100% 50%, 50% 100%, 0 50%)",flex:"0 0 auto",marginRight:6,background:`hsl(${s} 55% var(--graview-tint-lightness) / 0.9)`}}),(0,n.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e})]})}function L({items:e,max:l=8,selectedIds:a=[],pick:r=!1}){let t=e.slice(0,l),d=e.length-t.length;return(0,n.jsxs)("div",{"data-graview-primitive":"roster",style:{display:"flex",flexWrap:"wrap",gap:6,alignContent:"flex-start"},children:[t.map(i=>(0,n.jsx)(m,{label:i.label,...i.hue===void 0?{}:{hue:i.hue},...r?{pickId:i.id}:{},...i.emphasis===void 0?{}:{emphasis:i.emphasis},selected:a.includes(i.id)},i.id)),d>0?(0,n.jsx)(m,{label:`+${d} more`}):null]})}function F({label:e,count:l,items:a,onExpand:r,flagged:t,problems:d}){return(0,n.jsx)(E,{title:e,meta:d?(0,n.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:6},children:[d,(0,n.jsx)("span",{children:l})]}):l,tone:t?"warning":"muted",style:r?{cursor:"zoom-in"}:void 0,children:a&&a.length>0?(0,n.jsx)(L,{items:a,max:6,pick:!0}):null})}export{A as a,I as b,E as c,m as d,L as e,F as f};
@@ -0,0 +1 @@
1
+ import"./chunk.WVUJXDXZ.js";import{b as v,c as ae}from"./chunk.OZNW5W4Z.js";import"./chunk.NDADLJE6.js";import"./chunk.AK3IHFCF.js";import"./chunk.HHPGWJDO.js";import"./chunk.42YX6NOY.js";import"./chunk.EYZ7MHBZ.js";import{o as re}from"./chunk.KQT7WAQE.js";import"./chunk.PAVR5TK5.js";import"./chunk.OQDETV4X.js";import"./chunk.3VL5WECB.js";import"./chunk.JH6MU6TX.js";import"./chunk.WAFDCOOG.js";import"./chunk.L4DECHXR.js";import{G as Fe,M as _,O as Z,R as ee,Z as te,aa as ne}from"./chunk.GFF2FB2J.js";import{ba as Q,cc as X,fa as Y,ga as k,ha as j}from"./chunk.6V2RG5JG.js";import{b as z}from"./chunk.AJZBJBMO.js";var g=z(Fe(),1);async function ie(e,n){let a=await createImageBitmap(e);try{let i=Math.min(1,n/Math.max(a.width,a.height)),o=document.createElement("canvas");o.width=Math.max(1,Math.round(a.width*i)),o.height=Math.max(1,Math.round(a.height*i));let s=o.getContext("2d");if(s===null)throw new Error("This browser will not give us a canvas to resize with.");return s.drawImage(a,0,0,o.width,o.height),o}finally{a.close()}}var t=z(ee(),1),$e=2048,xe=.85;function H(e){return e<1e3?`${e} bytes`:e<1e6?`${Math.round(e/1e3)} KB`:`${(e/1e6).toFixed(e<1e7?1:0)} MB`}function U(e){if(e.type==="application/pdf")return"PDF";let n=/\.([a-z0-9]{2,5})$/i.exec(e.name??"")?.[1];return n?n.toUpperCase():(e.type.split("/")[1]??e.type).replace(/^x-|^vnd\./,"").split(/[.+-]/)[0].toUpperCase()}function ce(e){let n=[...new Set(e.map(a=>a==="image/*"?"pictures":a==="*/*"||a==="*"?"any file":`${U({type:a})} files`))];return n.length<=1?n[0]??"no files":`${n.slice(0,-1).join(", ")} and ${n[n.length-1]}`}function ge(e,n){if(e.length===0)return!0;let a=`${n.split("/")[0]}/*`;return e.some(i=>i==="*"||i==="*/*"||i===n||i===a)}var le=/^image\/hei[cf]$|\.hei[cf]$/i,oe=e=>le.test(e.type)||le.test(e.name);async function Se(e,n,a){let i=e.name||(a.camera?"photo.jpg":"file"),o=e.type||(oe({type:"",name:i})?"image/heic":"application/octet-stream"),s=oe({type:o,name:i}),d=o.startsWith("image/")||s;if(a.image&&!d)return{refused:`\u201C${i}\u201D isn\u2019t a picture.`};if(s||d&&/^image\/(jpeg|webp)$/.test(o)&&(a.camera||e.size>n.maxBytes||e.size>15e5))try{let l=await ie(e,$e),f=await new Promise(y=>l.toBlob(y,"image/jpeg",xe));if(f)return se({blob:f,name:s?i.replace(/\.hei[cf]$/i,"")+".jpg":i,type:"image/jpeg",width:l.width,height:l.height},n)}catch{if(s&&!ge(n.kinds,o))return{refused:`\u201C${i}\u201D is a HEIC photo, which this browser can\u2019t turn into a JPEG and this host doesn\u2019t take. Save it as a JPEG and try again.`}}let c={};if(d&&!s)try{let l=await createImageBitmap(e);c={width:l.width,height:l.height},l.close()}catch{}return se({blob:e,name:i,type:o,...c},n)}function se(e,n){return ge(n.kinds,e.type)?e.blob.size>n.maxBytes?{refused:`\u201C${e.name}\u201D is ${H(e.blob.size)}; this host takes files up to ${H(n.maxBytes)}.`}:e:{refused:`\u201C${e.name}\u201D is a ${U(e)} file; this host takes ${ce(n.kinds)}.`}}async function Ce(e,n,a){let i;try{i=await n.upload(e.blob,e.name)}catch(s){let d=s instanceof Error&&s.message.trim()?s.message.trim():"the host refused it";return{refused:`\u201C${e.name}\u201D wasn\u2019t kept: ${d}`}}return Y(i)?a&&!k(i)?{refused:`\u201C${e.name}\u201D isn\u2019t a picture.`}:{...i,...i.width===void 0&&e.width?{width:e.width}:{},...i.height===void 0&&e.height?{height:e.height}:{}}:{refused:`The host\u2019s answer for \u201C${e.name}\u201D isn\u2019t a file a record can keep.`}}var F="var(--graview-radius, 8px)",C={color:"var(--graview-ink-muted)",fontSize:"0.8125rem"};function pe(e){let n=_(),a=Z()?.past!=null,[i,o]=(0,g.useState)(!1);return[n?.kept?.(e.href)===!1||a&&i,()=>o(!0)]}function he({file:e,style:n}){return(0,t.jsx)("span",{role:"img","aria-label":`${v(e)}, removed later`,"data-graview-removed-later":e.href,style:{display:"grid",placeItems:"center",textAlign:"center",padding:4,boxSizing:"border-box",fontSize:"0.6875rem",lineHeight:1.2,color:"var(--graview-ink-muted)",border:"1px dashed var(--graview-edge-bright)",borderRadius:F,...n},children:"removed later"})}function O({file:e,size:n=56,style:a}){let[i,o]=pe(e);return i?(0,t.jsx)(he,{file:e,style:{width:n,height:n,flex:"none",...a}}):(0,t.jsx)("img",{onError:o,src:e.href,alt:v(e),width:n,height:n,loading:"lazy",decoding:"async","data-graview-thumb":e.href,style:{width:n,height:n,objectFit:"cover",borderRadius:F,display:"block",flex:"none",background:"var(--graview-edge)",...a}})}function Ee({file:e,onOpen:n}){let[a,i]=pe(e);return a?(0,t.jsx)(he,{file:e,style:{width:"100%",aspectRatio:"1"}}):(0,t.jsx)("button",{type:"button","aria-label":`Open ${v(e)} full size`,onClick:o=>n(o.currentTarget),style:{padding:0,border:0,background:"none",cursor:"zoom-in",display:"block",width:"100%",borderRadius:F},children:(0,t.jsx)("img",{src:e.href,alt:v(e),loading:"lazy",decoding:"async",onError:i,style:{width:"100%",aspectRatio:"1",objectFit:"cover",borderRadius:F,display:"block",background:"var(--graview-edge)"}})})}function N({files:e,label:n}){let a=e.filter(k),i=e.filter(l=>!k(l)),[o,s]=(0,g.useState)(null),d=(0,g.useRef)(null),m=(0,g.useRef)(null);(0,g.useEffect)(()=>{let l=d.current;o!==null&&l&&!l.open&&l.showModal?.()},[o]);let c=o===null?void 0:a[o];return(0,t.jsxs)("div",{style:{display:"grid",gap:10,minWidth:0},children:[a.length>0?(0,t.jsx)("ul",{"data-graview-gallery":"","aria-label":n,style:{listStyle:"none",margin:0,padding:0,display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(96px, 1fr))",gap:8},children:a.map((l,f)=>(0,t.jsx)("li",{style:{minWidth:0},children:(0,t.jsx)(Ee,{file:l,onOpen:y=>{m.current=y,s(f)}})},l.href))}):null,i.length>0?(0,t.jsx)("ul",{"data-graview-documents":"",style:{listStyle:"none",margin:0,padding:0,display:"grid",gap:10},children:i.map(l=>(0,t.jsxs)("li",{"data-graview-document":l.type,style:{display:"grid",gap:6,minWidth:0},children:[l.type==="application/pdf"?(0,t.jsx)("object",{data:l.href,type:"application/pdf","aria-label":v(l),style:{width:"100%",height:420,border:"1px solid var(--graview-edge)",borderRadius:F},children:(0,t.jsxs)("p",{style:{margin:0,padding:12},children:["This browser shows no PDF here: ",(0,t.jsxs)("a",{href:l.href,download:l.name,children:["download ",l.name]}),"."]})}):null,(0,t.jsxs)("span",{style:{display:"flex",flexWrap:"wrap",gap:"2px 10px",alignItems:"baseline",minWidth:0,overflowWrap:"anywhere"},children:[(0,t.jsx)("a",{href:l.href,download:l.name,...l.type==="application/pdf"?{target:"_blank",rel:"noopener"}:{},children:l.name}),(0,t.jsxs)("span",{style:C,children:[U(l)," \xB7 ",H(l.bytes)]})]}),l.caption?(0,t.jsx)("span",{style:C,children:l.caption}):null]},l.href))}):null,c?(0,t.jsx)("dialog",{ref:d,"data-graview-full":c.href,"aria-label":v(c),onClose:()=>{s(null),m.current?.focus()},onClick:l=>{l.target===l.currentTarget&&l.currentTarget.close()},style:{padding:0,border:0,borderRadius:F,maxWidth:"min(96vw, 1600px)",maxHeight:"94vh",background:"var(--graview-panel)",color:"var(--graview-ink)"},children:(0,t.jsxs)("figure",{style:{margin:0,display:"grid",gap:8,padding:10},children:[(0,t.jsx)("img",{src:c.href,alt:v(c),style:{maxWidth:"100%",maxHeight:"80vh",objectFit:"contain",display:"block",margin:"0 auto"}}),(0,t.jsxs)("figcaption",{style:{display:"flex",gap:12,alignItems:"center",justifyContent:"space-between"},children:[(0,t.jsx)("span",{children:c.caption??c.name}),(0,t.jsx)("form",{method:"dialog",style:{margin:0},children:(0,t.jsx)("button",{type:"submit",autoFocus:!0,children:"Close"})})]})]})}):null]})}function me({value:e,onChange:n,several:a,image:i,label:o,thumbs:s=!0}){let d=_(),m=(0,g.useId)(),c=(0,g.useRef)(null),l=(0,g.useRef)(null),[f,y]=(0,g.useState)(null),[$,I]=(0,g.useState)(null),[A,E]=(0,g.useState)([]),[D,L]=(0,g.useState)(!1),x=d?i?d.kinds.filter(r=>r.startsWith("image/")||r==="*"||r==="*/*"):d.kinds:[],G=d?d.kinds.length===0||x.some(r=>r.startsWith("image/")||r.startsWith("*")):!1,P=!!d&&(!i||G),q=i?a?"pictures":"a picture":a?"files":"a file",K=i?x.length>0?x.join(","):"image/*":d?.kinds.join(",")||void 0,be=typeof matchMedia=="function"&&matchMedia("(pointer: coarse)").matches,V=(0,g.useRef)(e);V.current=e;let J=(0,g.useRef)(null),R=(0,g.useRef)(null);(0,g.useEffect)(()=>{let r=R.current;if(!r||r.from===e)return;R.current=null;let u=J.current?.children,h=u?.[Math.min(r.at,u.length-1)];((r.what==="move"?h?.querySelector("[data-graview-file-move]"):null)??h?.querySelector("[data-graview-file-remove]")??c.current?.parentElement?.querySelector("[data-graview-file-choose]"))?.focus()});let T=async(r,u)=>{if(!d||r.length===0)return;let h=a?r:r.slice(0,1),p=[],w=[];h.length<r.length&&w.push(`${o} holds one ${i?"picture":"file"}, so ${r.slice(1).map(b=>`\u201C${b.name||"the photo"}\u201D`).join(", ")} ${r.length>2?"were":"was"} left out.`),E([]),I(null);for(let b of h){y(`Sending ${b.name||"the photo"}\u2026`);let B=await Se(b,d,{image:i,camera:u==="camera"});if("refused"in B){w.push(B.refused);continue}let S=await Ce(B,d,i);"refused"in S?w.push(S.refused):[...a?V.current:[],...p].some(ke=>ke.href===S.href)?w.push(`\u201C${S.name}\u201D is already here.`):p.push(S)}if(y(null),E(w),p.length!==0)try{n(a?[...V.current,...p]:p.slice(-1)),I(`Added ${p.map(b=>b.name).join(", ")}.`)}catch(b){E([...w,b instanceof Error?b.message:String(b)])}},W=(r,u,h)=>{try{R.current=h?{...h,from:e}:null,n(r),I(u)}catch(p){R.current=null,E([p instanceof Error?p.message:String(p)])}},M=r=>r?Array.from(r):[],we=r=>{let u=M(r.clipboardData?.files);!P||u.length===0||(r.preventDefault(),T(u,"pasted"))},ve=r=>{L(!1),P&&(r.preventDefault(),T(M(r.dataTransfer?.files),"dropped"))};return(0,t.jsxs)("div",{role:"group","aria-labelledby":`${m}-label`,"data-graview-file-editor":"","data-graview-dropping":D?"":void 0,onPaste:we,onDragOver:r=>{P&&(r.preventDefault(),L(!0))},onDragLeave:()=>L(!1),onDrop:ve,style:{display:"grid",gap:8,minWidth:0,padding:D?6:0,outline:D?"2px dashed var(--graview-accent)":"none",borderRadius:F},children:[(0,t.jsx)("span",{id:`${m}-label`,style:{position:"absolute",width:1,height:1,overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap"},children:o}),e.length>0&&(a||e.length>1)?(0,t.jsx)("ul",{ref:J,style:{listStyle:"none",margin:0,padding:0,display:"grid",gap:6},children:e.map((r,u)=>(0,t.jsxs)("li",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap",minWidth:0},children:[s&&k(r)?(0,t.jsx)(O,{file:r,size:40}):null,(0,t.jsx)("span",{style:{flex:"1 1 8rem",minWidth:0,overflowWrap:"anywhere"},children:r.name}),(0,t.jsx)(ue,{file:r,onCaption:h=>W(e.map((p,w)=>w===u?de(p,h):p),h?`${r.name} now says \u201C${h}\u201D.`:`${r.name} says its name again.`)}),a&&u>0?(0,t.jsx)("button",{type:"button","data-graview-file-move":"","aria-label":`Move ${r.name} earlier`,onClick:()=>W(e.map((h,p)=>p===u-1?r:p===u?e[u-1]:h),`Moved ${r.name} earlier.`,{at:u-1,what:"move"}),children:"\u2191"}):null,a?(0,t.jsx)("button",{type:"button","data-graview-file-remove":"","aria-label":`Remove ${r.name}`,onClick:()=>W(e.filter((h,p)=>p!==u),`Removed ${r.name}.`,{at:u,what:"remove"}),children:"Remove"}):null]},`${u}:${r.href}`))}):e.length===1?(0,t.jsx)(ue,{file:e[0],onCaption:r=>W([de(e[0],r)],r?`${e[0].name} now says \u201C${r}\u201D.`:`${e[0].name} says its name again.`)}):null,P?(0,t.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:8,alignItems:"center"},children:[(0,t.jsx)("input",{ref:c,type:"file",hidden:!0,multiple:a,...K?{accept:K}:{},"data-graview-file-input":"","aria-label":`Choose ${q}`,onChange:r=>{let u=M(r.currentTarget.files);r.currentTarget.value="",T(u,"picked")}}),(0,t.jsx)("button",{type:"button",disabled:f!==null,onClick:()=>c.current?.click(),"data-graview-file-choose":"",children:e.length>0&&!a?`Replace ${i?"the picture":"the file"}`:`Choose ${q}`}),G?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("input",{ref:l,type:"file",hidden:!0,accept:"image/*",capture:"environment","data-graview-photo-input":"","aria-label":"Take a photo",onChange:r=>{let u=M(r.currentTarget.files);r.currentTarget.value="",T(u,"camera")}}),be?(0,t.jsx)("button",{type:"button",disabled:f!==null,onClick:()=>l.current?.click(),children:"Take a photo"}):null]}):null,(0,t.jsxs)("span",{style:C,"data-graview-file-takes":"",children:["or drop or paste ",a?"them":"it"," here \xB7 ",d.kinds.length>0?ce(x.length>0?x:d.kinds):"any file",", up to ",H(d.maxBytes)]})]}):(0,t.jsx)("p",{style:{...C,margin:0},"data-graview-file-none":"",children:d?"This host doesn\u2019t take pictures, so none can be added here.":"This host doesn\u2019t take files, so none can be added here."}),(0,t.jsx)("p",{"aria-live":"polite",style:{...C,margin:0,minHeight:f||$?void 0:0},"data-graview-file-status":"",children:f??$??""}),A.length>0?(0,t.jsx)("div",{role:"alert","data-graview-file-refused":"",style:{color:"var(--graview-warn)",fontSize:"0.875rem",display:"grid",gap:2},children:A.map((r,u)=>(0,t.jsx)("p",{style:{margin:0},children:r},u))}):null]})}var de=(e,n)=>{let{caption:a,...i}=e;return n?{...i,caption:n}:i};function ue({file:e,onCaption:n}){let[a,i]=(0,g.useState)(e.caption??"");(0,g.useEffect)(()=>i(e.caption??""),[e.caption]);let o=()=>{let s=a.trim().slice(0,500);s!==(e.caption??"")&&n(s)};return(0,t.jsx)("input",{type:"text",value:a,placeholder:k(e)?"What it shows":"What it is","aria-label":`What ${e.name} ${k(e)?"shows":"is"}`,"data-graview-file-caption":e.href,onChange:s=>i(s.target.value),onBlur:o,onKeyDown:s=>{s.key==="Enter"&&(s.preventDefault(),o())},style:{flex:"1 1 10rem",minWidth:0,font:"inherit",fontSize:"0.875rem",minHeight:24}})}function ye({field:e,label:n,labelStyle:a,valueStyle:i,style:o,children:s}){return(0,t.jsxs)("div",{"data-graview-files":e,style:{display:"grid",gap:6,minWidth:0,gridColumn:"1 / -1",...o},children:[(0,t.jsx)("dt",{style:a,children:n}),(0,t.jsx)("dd",{style:{margin:0,minWidth:0,display:"grid",gap:10,...i},children:s})]})}function fe(e){let{nodeId:n,field:a,label:i,files:o}=e,{fields:s,commit:d}=re(n),m=s.find(y=>y.field===a&&y.takesValue),c=m?.shape,l=c?.type==="several"?c.of:c,f=c?.type==="several";return o.length===0&&l?.type!=="file"?null:(0,t.jsxs)(ye,{...e,children:[(0,t.jsx)(N,{files:o,label:i}),m&&l?.type==="file"?(0,t.jsx)(me,{value:o,thumbs:!1,several:f,image:l.image===!0,label:i,onChange:y=>{let $=f?y:y[y.length-1];$!==void 0&&d(m,$)}}):null]})}function Le(e){switch(e.as){case"field":return e.read?e.files.length>0?(0,t.jsx)(ye,{...e,children:(0,t.jsx)(N,{files:e.files,label:e.label})}):null:(0,t.jsx)(fe,{...e});case"unfilled":return(0,t.jsx)(Pe,{...e});case"thumb":return(0,t.jsx)(O,{...e});case"block":return e.files.length>0?(0,t.jsx)("span",{className:"graview-spec-image","data-graview-field":e.field,"data-graview-image":e.view,style:{display:"block",minWidth:0,...e.view==="gallery"?{position:"relative",zIndex:X.raised}:{}},children:e.view==="thumb"?(0,t.jsx)(O,{file:e.files[0],size:72}):(0,t.jsx)(N,{files:e.files,label:e.label})}):null;case"control":{let n=(0,t.jsx)(me,{value:j(e.value),several:e.several,image:e.image,label:e.label,onChange:a=>e.onChange(e.several?a:a[a.length-1])});return e.title===void 0?n:(0,t.jsxs)("fieldset",{"data-graview-part":"group","data-graview-field":e.several?"files":"file",children:[(0,t.jsx)("legend",{"data-graview-part":"label",children:e.title}),n]})}}}function Pe({nodeId:e,skip:n,labels:a,labelStyle:i,style:o}){let{store:s}=te(),d=ne(e),m=d?s.schema.tryDefinition(d.kind):void 0,c=ae(m).filter(l=>!n.includes(l)&&!(m?.display?.hide??[]).includes(l)&&j(d?.[l]).length===0);return c.length===0?null:(0,t.jsx)("dl",{style:{margin:0,display:"grid",gap:14,minWidth:0},children:c.map(l=>(0,t.jsx)(fe,{nodeId:e,field:l,label:a?.[l]??Q(m,l),files:[],...i?{labelStyle:i}:{},...o?{style:o}:{}},l))})}export{me as FilesEditor,$e as SEND_EDGE,Le as drawFiles,ce as kindsWords,Se as prepare,Ce as send,H as sizeWords,ge as takes,U as typeWords};
@@ -0,0 +1 @@
1
+ import{b as m}from"./chunk.FDELO7NY.js";import"./chunk.SOBC3CTN.js";import"./chunk.KN3ULTGF.js";import"./chunk.UGFDSE37.js";import{g}from"./chunk.R26DREVU.js";import"./chunk.JPHNKWTY.js";import"./chunk.FGVKJWNS.js";import"./chunk.3JNMSOFG.js";import"./chunk.YV2LJFGS.js";import"./chunk.QNGWEV47.js";import"./chunk.ERXSYPYL.js";import"./chunk.J2ITFGN3.js";import"./chunk.V5ZYUVMH.js";import"./chunk.GLBHQFJ2.js";import"./chunk.UT6642FC.js";import"./chunk.QTA4ROAK.js";import"./chunk.2CIBWZJG.js";import"./chunk.MB7LKKUD.js";import"./chunk.RRVIXV7W.js";import"./chunk.7BWT5L2L.js";import"./chunk.VSZQXB4Q.js";import"./chunk.RI3PYG5T.js";import"./chunk.UWGWXFWZ.js";import"./chunk.SE5SKFQH.js";import"./chunk.W3S6UXNA.js";import"./chunk.UZWWDAGM.js";import"./chunk.WVUJXDXZ.js";import"./chunk.OZNW5W4Z.js";import"./chunk.NDADLJE6.js";import"./chunk.AK3IHFCF.js";import"./chunk.HHPGWJDO.js";import"./chunk.42YX6NOY.js";import"./chunk.EYZ7MHBZ.js";import"./chunk.KQT7WAQE.js";import"./chunk.PAVR5TK5.js";import"./chunk.OQDETV4X.js";import"./chunk.3VL5WECB.js";import"./chunk.JH6MU6TX.js";import"./chunk.WAFDCOOG.js";import"./chunk.L4DECHXR.js";import{G as b,R as l}from"./chunk.GFF2FB2J.js";import{Rc as n}from"./chunk.6V2RG5JG.js";import{b as t}from"./chunk.AJZBJBMO.js";var y=t(b(),1),a=t(l(),1);function P({store:h,auto:c,brand:r,views:f,presence:i,steering:o,overview:s,scope:d,titleLevel:v=2,props:e}){let u=(0,y.useMemo)(()=>g({scope:`.${d}`}),[d]);return(0,a.jsxs)("div",{"data-embed-content":"",style:c?{flex:"0 0 auto",background:"var(--graview-ground)"}:{flex:"1 1 auto",minHeight:0,overflow:"auto",background:"var(--graview-ground)"},children:[(0,a.jsx)("style",{children:u}),(0,a.jsx)("div",{"data-embed-measure":"",style:{display:"flow-root"},children:(0,a.jsx)(m,{context:{store:h,embedded:!0,...e.bar!==!1?{barAbove:!0}:{},...s?{overview:s}:{},titleLevel:v,views:f,settings:e.app.settings??[],...i?{presence:i}:{},...r?{brand:r}:{},...e.locale?{locale:e.locale}:{},...e.principal?{principal:e.principal}:{},...e.seats?{seats:e.seats}:{},...e.people?{people:e.people}:{}},...e.pages?{registry:e.pages}:{},...o?{steering:o}:{},...e.routing==="address"?n(e.basePath)===""?{}:{basename:n(e.basePath)}:{initialPath:e.path??"/"},...e.path!==void 0?{path:e.path}:{},...e.onNavigate?{onNavigate:e.onNavigate}:{}})})]})}export{P as PagesContent};
@@ -0,0 +1 @@
1
+ import{a,b}from"./chunk.XRJBLH4N.js";import"./chunk.3JNMSOFG.js";import"./chunk.PKK6FRZR.js";import"./chunk.OAF7TUMI.js";import"./chunk.UT6642FC.js";import"./chunk.OZNW5W4Z.js";import"./chunk.NDADLJE6.js";import"./chunk.AK3IHFCF.js";import"./chunk.HHPGWJDO.js";import"./chunk.42YX6NOY.js";import"./chunk.3VL5WECB.js";import"./chunk.JH6MU6TX.js";import"./chunk.WAFDCOOG.js";import"./chunk.6V2RG5JG.js";import"./chunk.AJZBJBMO.js";export{b as actOnSeveral,a as actsForSeveral};
@@ -0,0 +1,27 @@
1
+ import{a as Rt,b as At,c as Et,d as Pn}from"./chunk.FGVKJWNS.js";import{b as An,c as xt,d as En,e as St,f as kt,g as Ct}from"./chunk.3SKKIHU3.js";import{a as Ot,b as Mn,c as $t}from"./chunk.PKK6FRZR.js";import{b as Mt,f as Pt,g as Lt}from"./chunk.YV2LJFGS.js";import{e as yt}from"./chunk.J2ITFGN3.js";import{b as gt,c as te,d as ye,e as Ee}from"./chunk.2CIBWZJG.js";import{m as bt}from"./chunk.RI3PYG5T.js";import{a as wt,b as vt}from"./chunk.UWGWXFWZ.js";import{f as ft,h as ht}from"./chunk.SE5SKFQH.js";import{e as pt}from"./chunk.W3S6UXNA.js";import{e as ut}from"./chunk.OZNW5W4Z.js";import{m as mt,n as Rn}from"./chunk.KQT7WAQE.js";import{e as Ve}from"./chunk.L4DECHXR.js";import{$ as dt,G as De,R as J,S as lt,Z as X,m as Qe,pa as ct,qa as Je}from"./chunk.GFF2FB2J.js";import{$ as et,Ab as ot,Ca as tt,Ga as rt,Ha as at,Ia as it,Jb as de,N as Jn,O as Xn,P as kn,Q as Zn,R as Ke,V as We,W as he,Yb as Ye,Z as Ie,Zb as st,_ as tn,ba as Cn,bb as On,ca as nt,cc as Ce,da as rn,nc as $n}from"./chunk.6V2RG5JG.js";import{b as _}from"./chunk.AJZBJBMO.js";var Ln=_(J(),1);function Me(e,t,n){let r=e.nodes?.length??0;if(e.total===void 0||e.total<=r)return n;let a=e.nodes?.[0]?.kind,i=a?tn(t,a).toLowerCase():"more";return(0,Ln.jsxs)("div",{style:{display:"grid",gridTemplateRows:"minmax(0, 1fr) auto",height:"100%",minHeight:0},children:[n,(0,Ln.jsxs)("p",{"data-testid":"lens-more",style:{margin:"4px 0 0",fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:["+",e.total-r," more ",i]})]})}var Tt=_(J(),1),kr=(e,t)=>{if(e===!1||t===!1)return!1;let n=e===void 0||e===!0?{}:e,r=t===void 0||t===!0?{}:t;return{sort:n.sort!==!1&&r.sort!==!1,filter:n.filter!==!1&&r.filter!==!1,group:n.group!==!1&&r.group!==!1}},Cr=["sort","filter","group","q","archived"];function Pe(e,t={}){let{store:n}=X(),{view:r,go:a}=Je(),d=Cr.some(R=>r.within?.[R]!==void 0)?wt(r):t.arrangedBy??{},m=e.nodes??[],g=t.kind??m[0]?.kind??e.node?.kind,y=d.archived!==void 0&&d.archived!==!1&&g!==void 0&&!t.subject?n.graph.nodesOfKind(g,{archived:d.archived}):m,c=t.subject??(t.only?y.filter(t.only):y),f=t.subject?[]:t.only?y.filter(R=>!t.only(R)):[],x=t.kind??c[0]?.kind,s=kr(t.allow,t.lensAllows),l=x?pt(n.schema,String(x)):void 0,h=l?ft(d,l).arrangement:{},o=ht(c,s===!1?{}:h,{schema:n.schema,graph:n.graph,flagged:new Set(e.flagged??[])}),b=e.retired!==void 0&&e.retired>0&&(m[0]?.kind??x)===x?e.retired:0,C=x&&s!==!1&&e.fidelity==="full"&&e.budget===void 0&&(c.length>1||b>0)?(0,Tt.jsx)(bt,{schema:n.schema,graph:n.graph,kind:String(x),arrangement:h,allow:s,query:t.query!==!1,onChange:R=>a(vt(r,R)),kept:{shown:o.nodes.length,of:c.length},...b>0?{past:{count:b,widen:()=>a(yt(r,!0))}}:{}}):null;return{nodes:[...f,...o.nodes],arranged:o,arrangement:h,bar:C}}function He(e,t,n){let r=new Set((n??[]).map(i=>i.kind)),a=new Set((n??[]).map(i=>i.id));return e.allNodes().filter(i=>r.has(i.kind)?a.has(i.id):We(t.tryDefinition(i.kind),i))}var Le=_(De(),1);var N=_(J(),1),Or=["slots","x","y","fill"],an=class extends Error{constructor(n,r){super(`${n}
2
+ ${r}`);this.hint=r;this.name="BoardBindingError"}},Nt=e=>Math.max(0,Math.min(1,e));function Tn(e,t,n,r){let a=l=>l,i=l=>r?he(r.tryDefinition(l.kind),l):String(a(l).label??l.id);if(r&&r.tryDefinition(n.slots)===void 0)throw new an(`No kind is declared for "${n.slots}".`,'Check the lens bindings: { slots: "<kind>", x: "<field>", y: "<field>", fill: "<edge kind>" }');let d=e.filter(l=>l.kind===n.slots);if(!r&&d.length===0)throw new an(`Nothing to arrange: no "${n.slots}" nodes.`,'Check the lens bindings: { slots: "<kind>", x: "<field>", y: "<field>", fill: "<edge kind>" }');let m=t.filter(l=>l.kind===n.fill),g=new Map(e.map(l=>[l.id,l])),y=new Map(e.map((l,h)=>[l.id,h])),c=d.map(l=>{let h=a(l),o=n.fillFrom==="occupant",b=m.filter(C=>(o?C.to:C.from)===l.id).map(C=>g.get(o?C.from:C.to)).filter(C=>C!==void 0).sort((C,R)=>(y.get(C.id)??0)-(y.get(R.id)??0)).map(C=>({id:C.id,label:i(C)}));return{id:l.id,code:String(h[n.slotCode??""]??"").trim()||i(l),label:i(l),x:Nt(Number(h[n.x]??.5)),y:Nt(Number(h[n.y]??.5)),occupants:b}}).sort((l,h)=>l.y-h.y||l.x-h.x),f=new Set(c.flatMap(l=>l.occupants.map(h=>h.id))),x=new Set([...f].map(l=>g.get(l)?.kind).filter(l=>l!==void 0)),s=e.filter(l=>x.has(l.kind)&&!f.has(l.id)).map(l=>({id:l.id,label:i(l)})).sort((l,h)=>l.label<h.label?-1:l.label>h.label?1:0);return{slots:c,empty:c.filter(l=>l.occupants.length===0).map(l=>l.id),spare:s}}function $r({nodes:e,occupants:t,label:n,fidelity:r,mode:a,options:i,schema:d,implicated:m=[],flagged:g=[]}){let{store:y}=X(),c=He(y.graph,y.schema,e),f=t?[...c.filter(p=>p.kind===i.slots),...t.map(p=>y.graph.getNode(p)).filter(p=>p!==void 0)]:c,x=Tn(f,y.graph.allEdges(),i,d),s=new Set(m),l=new Set(g),h=ct(),o=new Map;for(let p of h)for(let H of p.nodeIds)o.set(H,[...o.get(H)??[],p.message]);let b=p=>p?o.get(p)??[]:[];if(r==="glyph")return(0,N.jsx)(ye,{label:`${n??"Board"} \xB7 ${x.slots.length-x.empty.length}/${x.slots.length}`,hue:de("board")});if(r==="summary"){let p=x.slots.filter(H=>x.empty.includes(H.id));return(0,N.jsx)(te,{title:n??"Board",meta:`${x.slots.length-x.empty.length}/${x.slots.length}`,tone:p.length>0?"warning":"muted",fit:!0,children:p.length>0?(0,N.jsx)(Ee,{pick:!0,max:5,items:p.map(H=>({id:H.id,label:H.code}))}):(0,N.jsx)("span",{style:{fontSize:"0.8125rem",color:"var(--graview-ink-faint)"},children:"Every slot filled."})})}let C=i.aspect??.68,R=(0,Le.useRef)(null),[A,S]=(0,Le.useState)(!1),[k,u]=(0,Le.useState)(null),E=160,[M,B]=(0,Le.useState)(!1);(0,Le.useEffect)(()=>{let p=R.current;if(!p||typeof ResizeObserver>"u")return;let H=new ResizeObserver(D=>{let j=D[0]?.contentRect;if(!j)return;let v=j.height<E;B(v),S(!v&&C<1&&j.width/j.height>1.3),u(v?null:j.height)});return H.observe(p),()=>H.disconnect()},[C]);let w=(p,H)=>A?{x:1-H,y:p}:{x:p,y:H},W=(()=>{let p=new Map,H=(D,j,v)=>{let O=p.get(v)??{ids:[],codes:[]};O.ids.includes(D)||(O.ids.push(D),O.codes.includes(j)||O.codes.push(j)),p.set(v,O)};for(let D of x.slots){for(let j of b(D.id))H(D.id,D.code,j);for(let j of D.occupants)for(let v of b(j.id))H(j.id,j.label,v)}return[...p.entries()].map(([D,j])=>({id:j.ids[0],code:j.codes.join(", "),text:D}))})(),P=a==="fullscreen",U=W.length===0?null:(0,N.jsxs)("ul",{"data-graview-primitive":"board-key",style:{margin:"2px 0 0",padding:0,listStyle:"none",display:"grid",gap:3,flex:"0 0 auto"},children:[W.slice(0,P?6:2).map(p=>(0,N.jsxs)("li",{"data-graview-pick":p.id,"data-graview-emphasis":s.size===0?"plain":s.has(p.id)?"lit":"dimmed",title:p.text,style:{display:P?"grid":"flex",gap:P?1:7,alignItems:P?"start":"baseline",fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)",minHeight:24,width:"fit-content",maxWidth:"100%",padding:P?"2px 0":"3px 6px",marginLeft:P?0:-6,borderRadius:7,cursor:"pointer"},children:[(0,N.jsxs)("span",{style:{flex:"0 0 auto",fontWeight:600,color:"var(--graview-warn)",letterSpacing:"0.02em"},children:["\u26A0 ",p.code]}),(0,N.jsx)("span",{style:{minWidth:0,...P?{}:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},children:p.text})]},p.id)),W.length>(P?6:2)?(0,N.jsxs)("li",{style:{fontSize:"0.8125rem",color:"var(--graview-ink-faint)"},children:["+",W.length-(P?6:2)," more"]}):null]}),ne=i.arrange==="shelf",ae=x.slots.every(p=>p.code.length<=3&&!/\s/.test(p.code)),ee=(p,H)=>{let D=p.occupants.length===0,j=s.size>0&&!s.has(p.id)&&!p.occupants.some(F=>s.has(F.id)),v=l.has(p.id),O=p.occupants.some(F=>l.has(F.id)),G=v,ie=[...b(p.id),...p.occupants.flatMap(F=>b(F.id))],se=p.occupants.length===1?p.occupants[0]:null,ue=i.pickTarget==="slot"?p.id:se?se.id:p.id,K=F=>se?{}:{"data-graview-pick":F.id,"data-graview-emphasis":s.size===0?"plain":j?"dimmed":"lit"},ve=F=>l.has(F.id)?"var(--graview-warn)":"var(--graview-ink-muted)",Ue=i.emptyLabel??"empty";return(0,N.jsxs)("div",{"data-graview-pick":ue,"data-graview-slot":p.id,"data-graview-mark":ae?"disc":"token","data-graview-flagged":v&&O?"both":v?"slot":O?"occupant":void 0,"data-graview-emphasis":s.size===0?"plain":j?"dimmed":"lit",title:[D?`${p.label} \u2014 nobody in it`:`${p.occupants.map(F=>F.label).join(", ")} at ${p.label}`,...ie].join(`
3
+ `),style:{...H,display:"grid",justifyItems:ae?"center":"start",gap:3,opacity:j?.5:1,transition:"opacity 160ms ease"},children:[ae?(0,N.jsxs)("span",{style:{position:"relative",width:34,height:34,borderRadius:999,display:"grid",placeItems:"center",fontSize:"0.75rem",letterSpacing:"0.02em",border:D?"1.5px dashed var(--graview-warn)":`1px solid ${G?"var(--graview-warn)":"var(--graview-edge-bright)"}`,background:D?"transparent":G?"var(--graview-panel-warning)":"var(--graview-panel)",color:D||G?"var(--graview-warn)":"var(--graview-ink)",boxShadow:D?void 0:"var(--graview-lift-low)"},children:[p.code,v&&!D?(0,N.jsx)("span",{"aria-hidden":"true",style:{position:"absolute",top:-3,right:-3,fontSize:"0.6875rem",lineHeight:1,color:"var(--graview-warn)"},children:"\u26A0"}):null]}):(0,N.jsxs)("span",{style:{display:"grid",gap:1,minWidth:0,maxWidth:180,padding:"5px 10px 6px",borderRadius:8,border:D?"1.5px dashed var(--graview-warn)":`1px solid ${G?"var(--graview-warn)":"var(--graview-edge-bright)"}`,background:D?"transparent":G?"var(--graview-panel-warning)":"var(--graview-panel)",boxShadow:D?void 0:"var(--graview-lift-low)"},children:[(0,N.jsxs)("span",{style:{fontSize:"0.8125rem",fontWeight:550,lineHeight:1.25,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",color:D||G?"var(--graview-warn)":"var(--graview-ink)"},children:[p.code,v&&!D?" \u26A0":null]}),D?(0,N.jsx)("span",{style:{fontSize:"0.75rem",lineHeight:1.3,color:"var(--graview-warn)"},children:Ue}):(0,N.jsx)("span",{style:{display:"flex",flexWrap:"wrap",gap:"0 8px",fontSize:"0.75rem",lineHeight:1.3},children:p.occupants.map(F=>(0,N.jsxs)("span",{...K(F),style:{whiteSpace:"nowrap",color:ve(F)},children:[F.label,l.has(F.id)?" \u26A0":""]},F.id))})]}),ae?D?(0,N.jsx)("span",{style:{fontSize:"0.75rem",whiteSpace:"nowrap",color:"var(--graview-warn)"},children:Ue}):p.occupants.map(F=>(0,N.jsxs)("span",{...K(F),style:{fontSize:"0.75rem",whiteSpace:"nowrap",color:ve(F)},children:[F.label,l.has(F.id)?" \u26A0":""]},F.id)):null]},p.id)},ge=i.zones??[],pe=ge.map((p,H)=>({label:p.label,slots:x.slots.filter(D=>D.y>=p.from&&(D.y<p.to||H===ge.length-1&&D.y<=p.to))})),T=new Set(pe.flatMap(p=>p.slots.map(H=>H.id))),$=x.slots.filter(p=>!T.has(p.id));($.length>0||pe.length===0)&&pe.push({label:"",slots:$});let V={boxSizing:"border-box",borderRadius:12,border:"1px solid var(--graview-edge)",background:"linear-gradient(var(--graview-panel-muted), var(--graview-panel-muted)), var(--graview-panel)",overflow:"hidden"};return(0,N.jsxs)(te,{title:n??"Board",meta:x.slots.length===0?void 0:x.empty.length===0?`all ${x.slots.length} filled`:`${x.empty.length} unfilled`,...P?{style:{flex:"1 1 auto",minHeight:0,height:"100%"}}:{},children:[(0,N.jsxs)("div",{ref:R,style:{display:"flex",gap:28,alignItems:"stretch",justifyContent:"center",flex:"1 1 auto",minHeight:0},children:[P&&U?(0,N.jsxs)("div",{style:{width:260,flex:"0 0 auto",alignSelf:"center",display:"grid",gap:8},children:[(0,N.jsx)("span",{style:{fontSize:"0.75rem",letterSpacing:"0.14em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},children:"What is marked"}),U]}):null,ne?(0,N.jsx)("div",{"data-graview-primitive":"board","data-graview-arrange":"shelf",style:{...V,overflow:"auto",flex:"1 1 auto",minWidth:0,alignSelf:"stretch",display:"grid",alignContent:"start"},children:pe.map((p,H)=>(0,N.jsxs)("section",{"data-graview-zone":p.label||void 0,style:{display:"grid",gap:8,padding:"10px 14px 14px",...H>0?{borderTop:"1px dashed var(--graview-edge)"}:{}},children:[p.label?(0,N.jsx)("span",{style:{fontSize:"0.6875rem",letterSpacing:"0.14em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},children:p.label}):null,p.slots.length>0?(0,N.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:"10px 12px",alignItems:"flex-start"},children:p.slots.map(D=>ee(D,{}))}):(0,N.jsx)("span",{style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:"nothing here"})]},p.label||`band-${H}`))}):(0,N.jsxs)("div",{style:{display:"flex",gap:5,alignItems:"stretch",minWidth:0,...M?{flex:"1 1 auto",alignSelf:"flex-start"}:{}},children:[!A&&ge.length>0?(0,N.jsx)("div",{"aria-hidden":"true",style:{position:"relative",width:15,flex:"0 0 auto",alignSelf:"stretch"},children:ge.map(p=>(0,N.jsx)("span",{title:p.label,style:{position:"absolute",top:`${p.from*100}%`,height:`${(p.to-p.from)*100}%`,right:0,writingMode:"vertical-rl",transform:"rotate(180deg)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"0.6875rem",letterSpacing:"0.14em",textTransform:"uppercase",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",color:"var(--graview-ink-faint)"},children:p.label},p.label))}):null,(0,N.jsxs)("div",{"data-graview-primitive":"board","data-graview-arrange":"exact",style:{...V,position:"relative",aspectRatio:`${A?1/C:C}`,...M?{width:"100%",height:"auto",flex:"1 1 auto",minWidth:0,alignSelf:"flex-start"}:{height:"100%",flex:"0 1 auto",...k!==null?{width:Math.round(k*(A?1/C:C))}:{}},maxWidth:"100%"},children:[ge.map(p=>(0,N.jsx)("div",{"aria-hidden":"true",style:{position:"absolute",...A?{top:0,bottom:0,left:`${(1-p.to)*100}%`,width:`${(p.to-p.from)*100}%`,borderLeft:"1px dashed var(--graview-edge)"}:{left:0,right:0,top:`${p.from*100}%`,height:`${(p.to-p.from)*100}%`,borderBottom:"1px dashed var(--graview-edge)"}}},p.label)),A?ge.map(p=>(0,N.jsx)("span",{"aria-hidden":"true",title:p.label,style:{position:"absolute",bottom:3,left:`${(1-p.to)*100}%`,width:`${(p.to-p.from)*100}%`,textAlign:"center",fontSize:"0.6875rem",letterSpacing:"0.14em",textTransform:"uppercase",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",color:"var(--graview-ink-faint)"},children:p.label},`label-${p.label}`)):null,x.slots.map(p=>ee(p,{position:"absolute",left:`${w(p.x,p.y).x*100}%`,top:`${w(p.x,p.y).y*100}%`,transform:"translate(-50%, -50%)",width:"max-content",maxWidth:"100%"}))]})]}),x.spare.length>0?(0,N.jsxs)("div",{style:{display:"grid",gap:6,alignContent:"start",minWidth:0},children:[(0,N.jsx)("span",{style:{fontSize:"0.75rem",letterSpacing:"0.14em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},children:"Not in"}),(0,N.jsx)(Ee,{pick:!0,max:10,items:x.spare.map(p=>({...p,emphasis:s.size===0?"plain":s.has(p.id)?"lit":"dimmed"}))})]}):null]}),P?null:U]})}function Dt(e){function t(n){let{store:r}=X(),a=Tn(He(r.graph,r.schema,n.nodes),r.graph.allEdges(),e,r.schema),d=[...a.slots.flatMap(c=>c.occupants.map(f=>f.id)),...a.spare.map(c=>c.id)].map(c=>r.graph.getNode(c)).filter(c=>c!==void 0),{arranged:m,bar:g}=Pe(n,{...e.arranging!==void 0?{allow:e.arranging}:{},lensAllows:{group:!1},...e.arrangedBy?{arrangedBy:e.arrangedBy}:{},subject:d}),y=(0,N.jsx)($r,{schema:r.schema,...n,options:e,...e.arranging===!1?{}:{occupants:m.nodes.map(c=>c.id)}});return Me(n,r.schema,g?(0,N.jsxs)("div",{style:{display:"grid",gap:6,height:"100%",minHeight:0,gridTemplateRows:"auto 1fr"},children:[g,y]}):y)}return{name:"board",requiredRoles:[...Or],options:e,View:t,build(n,r,a){return Tn(n,r,e,a)}}}var pn=_(De(),1);var zt=864e5;function Nn(e){if(typeof e!="string")return null;let t=/^(\d{4}-\d{2}-\d{2})/.exec(e);return t?t[1]:null}function sn(e){if(typeof e!="string")return null;let t=/^\d{4}-\d{2}-\d{2}[T ](\d{2}):(\d{2})/.exec(e);return t?Number(t[1])*60+Number(t[2]):null}var on=e=>Date.UTC(Number(e.slice(0,4)),Number(e.slice(5,7))-1,Number(e.slice(8,10))),ln=e=>new Date(e).toISOString().slice(0,10);function we(e,t){return ln(on(e)+t*zt)}function ze(e,t){let n=Number(e.slice(0,4)),r=Number(e.slice(5,7))-1+t,a=Number(e.slice(8,10)),i=new Date(Date.UTC(n,r+1,0)).getUTCDate();return ln(Date.UTC(n,r,Math.min(a,i)))}var Dn=e=>new Date(on(e)).getUTCDay();function Ge(e,t=1){let n=(Dn(e)-t+7)%7;return we(e,-n)}var zn=e=>`${e.slice(0,7)}-01`;function oe(e,t){return Math.round((on(t)-on(e))/zt)}function je(e,t){return Array.from({length:t},(n,r)=>we(e,r))}var Bt=e=>Zn(e,"short"),Oe=e=>Jn(e,{weekday:"short"}),Bn=e=>Ke(e);function Be(e,t){let n=t?.fieldRoles?.when;return e&&!e.start&&n?{...e,start:n}:e}function Wt(e,t){return t===void 0?!1:typeof t=="string"?e[t]===!0:t.is.includes(e[t.field])}var dn=["start"],Rr=["day","week","month","quarter","year","agenda"];function cn(e){return e.horizon?["day","week","month","quarter","year","years","agenda"]:Rr}function It(e,t){return e==="years"?t?.title??"Years":`The ${e}`}function Vt(){let e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}var Wn=class extends Error{constructor(n,r){super(`The calendar lens has no binding for ${r.map(a=>`"${a}"`).join(", ")} on "${n}". Bind them in the lens declaration: bindings: { ${n}: { start: "<field>" } }.`);this.kind=n;this.missing=r;this.name="CalendarBindingError"}};function gn(e,t,n){let r=Be(t[e.kind],n?.tryDefinition(e.kind));if(!r)return null;let a=e,i=n?.tryDefinition(e.kind)?.fields.shape,d=dn.filter(f=>{let x=r[f];return x?i?!(x in i):!(x in a):!0});if(d.length>0)throw new Wn(e.kind,d);let m=Nn(a[r.start]);if(m===null)return null;let g=(r.end?Nn(a[r.end]):null)??m,y=sn(a[r.start]),c=r.label?a[r.label]:void 0;return{id:e.id,kind:e.kind,label:typeof c=="string"&&c.length>0?c:he(n?.tryDefinition(e.kind),e),from:m,to:oe(m,g)<0?m:g,at:r.allDay&&a[r.allDay]===!0?null:y,allDay:r.allDay&&a[r.allDay]===!0||y===null,done:Wt(a,r.done)}}function Ht(e,t,n,r){let a=gn(e,t,n);if(!a)return[];let i=Be(t[e.kind],n?.tryDefinition(e.kind)).start,d=e,m=d[i],g=d[tt(i)];if(typeof m!="string"||!rt(g))return[a];let y=oe(a.from,a.to);return("next"in r?[it(m,g,r.next)]:at(m,g,{from:we(r.from,-y),to:r.to,limit:400})).map(f=>({...a,from:f.slice(0,10),to:we(f.slice(0,10),y),repeats:!0}))}function un(e,t){return e.filter(n=>oe(n.from,t)>=0&&oe(t,n.to)>=0).sort((n,r)=>n.allDay!==r.allDay?n.allDay?-1:1:n.at!==r.at?(n.at??0)-(r.at??0):n.label.localeCompare(r.label))}function Gt(e,t,n){let r=ot(e.schema,e.allMutations()).get(t)?.get(n)??[],a=new Map(e.allMutations().map(d=>[d.name,d]));for(let d of r){let m=a.get(d),g=m?.subject;if(!m||!g)continue;let y=m.input?.shape??{};if(n in y)return{name:m.name,arg:g.arg}}let i=e.allMutations().find(d=>d.derived?.act==="edit"&&d.derived.kind===t);return i?.subject?{name:i.name,arg:i.subject.arg}:null}var jt=(e,t)=>({from:zn(e),to:_t(e),label:kn(e,{short:!0,year:t})});function _t(e){return ln(Date.UTC(Number(e.slice(0,4)),Number(e.slice(5,7)),0))}function Ar(e){let t=Math.floor((Number(e.slice(5,7))-1)/3);return`${e.slice(0,4)}-${String(t*3+1).padStart(2,"0")}-01`}function Ft(e,t,n={}){let r=n.weekStartsOn??1,a=(g,y)=>({from:g,to:g,label:String(Number(g.slice(8,10))),...y?{outside:!0}:{}});if(e==="day")return{title:Oe(t),grain:"day",columns:1,cells:[a(t)]};if(e==="week"){let g=Ge(t,r);return{title:`${Oe(g)} \u2013 ${Oe(we(g,6))}`,grain:"day",columns:7,cells:je(g,7).map(y=>a(y))}}if(e==="agenda")return{title:`From ${Oe(t)}`,grain:"day",columns:1,cells:je(t,42).map(g=>a(g))};if(e==="quarter"){let g=Ar(t),y=_t(ze(g,2)),c=[];for(let f=Ge(g,r);oe(f,y)>=0;f=we(f,7))c.push({from:f,to:we(f,6),label:Xn(f),...oe(f,g)>0&&oe(we(f,6),g)>0?{outside:!0}:{}});return{title:`Q${Math.floor((Number(t.slice(5,7))-1)/3)+1} ${t.slice(0,4)}`,grain:"week",columns:4,cells:c}}if(e==="year"){let g=t.slice(0,4);return{title:g,grain:"month",columns:4,cells:Array.from({length:12},(y,c)=>jt(`${g}-${String(c+1).padStart(2,"0")}-01`,!1))}}if(e==="years"){let g=Number(t.slice(0,4)),y=g+Math.max(1,n.horizon?.years??1)-1,c=n.horizon?.from!==void 0||n.horizon?.to!==void 0,f=c?n.horizon?.from??g:Math.min(g,n.fit?.first??g),s=(c?Math.max(f,n.horizon?.to??f+Math.max(1,n.horizon?.years??1)-1):Math.max(y,n.fit?.last??y))-f+1,l=Array.from({length:s},(h,o)=>String(f+o));return s>Er?{title:`${n.horizon?.title??"Years"} \xB7 ${l[0]}\u2013${l[l.length-1]}`,grain:"year",columns:5,years:l,cells:l.map(h=>({from:`${h}-01-01`,to:`${h}-12-31`,label:h}))}:{title:`${n.horizon?.title??"Years"} \xB7 ${l[0]}\u2013${l[l.length-1]}`,grain:"month",columns:4,years:l,cells:l.flatMap(h=>Array.from({length:12},(o,b)=>jt(`${h}-${String(b+1).padStart(2,"0")}-01`,!0)))}}let i=zn(t),d=Ge(i,r),m=t.slice(0,7);return{title:kn(t),grain:"day",columns:7,cells:je(d,42).map(g=>a(g,g.slice(0,7)!==m))}}function qt(e,t,n){return e.filter(r=>oe(r.from,n)>=0&&oe(t,r.to)>=0).sort((r,a)=>r.allDay!==a.allDay?r.allDay?-1:1:r.from!==a.from?r.from.localeCompare(a.from):r.at!==a.at?(r.at??0)-(a.at??0):r.label.localeCompare(a.label))}var Er=10;function Ut(e){return e==="year"?"year":e==="month"?"month":e==="week"?"week":"day"}var Kt=_(De(),1);var Q=_(J(),1);function In({label:e,glyph:t,onPress:n}){return(0,Q.jsx)("button",{type:"button","aria-label":e,title:e,onClick:n,style:_e,children:t})}var _e={minHeight:24,minWidth:24,padding:"2px 9px",borderRadius:6,fontSize:"0.8125rem",borderWidth:1,borderStyle:"solid",borderColor:"transparent",color:"var(--graview-ink-muted)",background:"transparent"},Yt={day:12,week:4,month:3,year:5};function Qt({span:e,weekStartsOn:t,entries:n,today:r,perCell:a,emphasisOf:i,broken:d,hue:m,onOpen:g,onMove:y}){let c=(0,Kt.useRef)(null),f=Ve(c),x=f===null?e.columns:Math.max(1,Math.floor(f/44)),s=x<e.columns,l=s?x:e.columns,h=!s&&e.grain==="day"&&e.columns===7?je(Ge(e.cells[0]?.from??r,t),7):e.grain==="day"&&e.columns===1?e.cells.map(o=>o.from):null;return s&&e.grain==="day"&&e.columns>1?(0,Q.jsx)("div",{ref:c,"data-calendar-shape":"agenda",style:{display:"grid",minHeight:0,flex:1},children:(0,Q.jsx)(mn,{days:e.cells.map(o=>o.from),entries:n,today:r,emphasisOf:i,broken:d,hue:m,onMove:(o,b)=>y(o,{from:b,to:b,label:b},"day")})}):(0,Q.jsxs)("div",{ref:c,"data-calendar-shape":s?"wrapped":"grid",style:{display:"grid",gap:4,gridTemplateRows:h?"auto 1fr":"1fr",minHeight:0,flex:1},children:[h?(0,Q.jsx)("div",{style:{display:"grid",gridTemplateColumns:`repeat(${l}, minmax(0, 1fr))`,gap:4},children:h.map(o=>(0,Q.jsx)("span",{style:{fontSize:"0.75rem",letterSpacing:"0.16em",textTransform:"uppercase",color:"var(--graview-ink-muted)",textAlign:"center"},children:e.columns===7?Bt(Dn(o)):Oe(o)},o))}):null,(0,Q.jsx)("div",{tabIndex:0,"aria-label":`The days of ${e.title}`,style:{display:"grid",gridTemplateColumns:`repeat(${l}, minmax(0, 1fr))`,gridAutoRows:"max-content",gap:4,minHeight:0,overflow:"auto"},children:e.cells.map((o,b)=>{let C=qt(n,o.from,o.to),R=C.slice(0,a),A=C.slice(a),S=A.filter(u=>d.has(u.id)).length,k=oe(o.from,r)>=0&&oe(r,o.to)>=0;return(0,Q.jsxs)("div",{"data-calendar-day":e.grain==="day"?o.from:void 0,"data-calendar-cell":o.from,"data-calendar-grain":e.grain,"data-calendar-count":C.length,"data-calendar-outside":o.outside||void 0,onDragOver:u=>{u.dataTransfer.types.includes("text/graview-node")&&(u.preventDefault(),u.dataTransfer.dropEffect="move")},onDrop:u=>{let E=u.dataTransfer.getData("text/graview-node");E&&(u.preventDefault(),u.stopPropagation(),y(E,o,e.grain))},style:{minHeight:62,display:"flex",flexDirection:"column",gap:2,padding:4,borderRadius:7,border:"1px solid var(--graview-edge)",background:k?"var(--graview-panel)":o.outside?"var(--graview-panel-muted)":"transparent"},children:[(0,Q.jsxs)("span",{style:{display:"flex",alignItems:"baseline",gap:4},children:[(0,Q.jsx)("span",{style:{fontSize:"0.75rem",fontVariantNumeric:"tabular-nums",color:k?"var(--graview-accent)":"var(--graview-ink-faint)"},children:o.label}),e.grain!=="day"&&C.length>0?(0,Q.jsx)("span",{style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)",marginLeft:"auto"},children:C.length}):null]}),R.map(u=>(0,Q.jsx)(Jt,{entry:u,cell:o,rowStart:b%l===0,emphasis:i(u.id),flagged:d.has(u.id),hue:m(u)},`${u.id}:${u.from}:${o.from}`)),A.length>0?(0,Q.jsxs)("button",{type:"button","data-testid":`calendar-more-${o.from}`,onClick:()=>g(o),title:`Open ${o.label}`,style:{minHeight:24,padding:"1px 5px",fontSize:"0.75rem",borderRadius:5,border:"1px dashed var(--graview-edge)",background:"transparent",color:S>0?"var(--graview-warn)":"var(--graview-ink-muted)",textAlign:"left"},children:["+",A.length," more",S>0?` \xB7 ${S} flagged`:""]}):null]},o.from)})})]})}function mn({days:e,entries:t,today:n,emphasisOf:r,broken:a,hue:i,onMove:d}){let m=e.map(g=>({day:g,here:un(t,g)})).filter(({here:g})=>g.length>0);return m.length===0?(0,Q.jsx)("p",{"data-testid":"calendar-empty",style:{margin:0,fontSize:"0.875rem",color:"var(--graview-ink-muted)"},children:"Nothing is scheduled in the next six weeks."}):(0,Q.jsx)("ol",{tabIndex:0,"aria-label":"What is scheduled",style:{margin:0,padding:0,listStyle:"none",display:"grid",alignContent:"start",gap:10,overflow:"auto",minHeight:0},children:m.map(({day:g,here:y})=>(0,Q.jsxs)("li",{"data-calendar-day":g,onDragOver:c=>{c.dataTransfer.types.includes("text/graview-node")&&(c.preventDefault(),c.dataTransfer.dropEffect="move")},onDrop:c=>{let f=c.dataTransfer.getData("text/graview-node");f&&(c.preventDefault(),c.stopPropagation(),d(f,g))},style:{display:"grid",gap:4},children:[(0,Q.jsxs)("span",{style:{fontSize:"0.75rem",letterSpacing:"0.16em",textTransform:"uppercase",color:g===n?"var(--graview-accent)":"var(--graview-ink-muted)"},children:[Oe(g),g===n?" \xB7 today":""]}),y.map(c=>(0,Q.jsx)(Jt,{entry:c,cell:{from:g,to:g,label:g},emphasis:r(c.id),flagged:a.has(c.id),hue:i(c)},`${c.id}:${c.from}:${g}`))]},g))})}function Jt({entry:e,cell:t,emphasis:n,flagged:r,hue:a,rowStart:i=!1}){let d=oe(t.from,e.from)>=0,m=oe(e.to,t.to)>=0,g=!(d&&m),y=e.at!==null&&d&&e.from===t.from?`${Bn(e.at)} ${e.label}`:e.label;return(0,Q.jsx)("span",{"data-graview-pick":e.id,"data-calendar-entry":e.id,"data-calendar-repeat":e.repeats?e.from:void 0,draggable:!e.repeats,onDragStart:c=>{c.dataTransfer.setData("text/graview-node",e.id),c.dataTransfer.effectAllowed="move"},"data-graview-emphasis":n,"data-calendar-part":g?d?"opens":m?"closes":"through":void 0,"data-calendar-in":t.from,title:g?`${e.label} \xB7 ${e.from} \u2013 ${e.to}`:`${e.label}${e.at===null?" \xB7 all day":` \xB7 ${Bn(e.at)}`}${e.repeats?" \xB7 repeats":""}`,style:{display:"block",minHeight:24,boxSizing:"border-box",padding:"3px 6px",fontSize:"0.75rem",lineHeight:1.35,borderRadius:g?d?"5px 0 0 5px":m?"0 5px 5px 0":0:5,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",textDecoration:e.done?"line-through":"none",opacity:n==="dimmed"?.35:e.done?.6:1,background:`color-mix(in oklab, hsl(${Math.round(a)} 70% 55%) ${n==="lit"?38:20}%, transparent)`,color:"var(--graview-ink)",...n==="lit"?{outline:"1px solid var(--graview-accent)"}:{},...r?{borderLeft:"3px solid var(--graview-warn)",paddingLeft:4}:{}},children:d||i?e.repeats?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)("span",{"aria-hidden":"true",children:"\u21BB "}),y]}):y:" "})}var q=_(J(),1);function Mr(e){let t=1/0,n=-1/0;for(let r of e)r&&(t=Math.min(t,Number(r.from.slice(0,4))),n=Math.max(n,Number(r.to.slice(0,4))));return Number.isFinite(t)&&Number.isFinite(n)?{first:t,last:n}:void 0}function Xt(e){let t=n=>function(a){let{store:i}=X(),{view:d}=Je(),m=n?{...e,range:n}:e,g=d.within?.range??m.range??"month",y=Object.keys(e.bindings),{nodes:c,arranged:f,arrangement:x,bar:s}=Pe(a,{...e.arranging!==void 0?{allow:e.arranging}:{},lensAllows:{sort:!1,group:g==="agenda"},...e.arrangedBy?{arrangedBy:e.arrangedBy}:{},...y[0]?{kind:(a.nodes??[]).find(C=>y.includes(String(C.kind)))?.kind??y[0]}:{}}),l=g==="agenda"&&f.grouped&&x.group?f.groups.map(C=>({label:C.label,ids:new Set(C.nodes.map(R=>R.id))})):void 0,h=new Set((a.nodes??[]).map(C=>String(C.kind))),o=y.filter(C=>!h.has(C)&&i.schema.tryDefinition(C)!==void 0).flatMap(C=>{let R=i.schema.tryDefinition(C);return i.graph.nodesOfKind(C).filter(A=>d.past===!0||We(R,A))}),b=o.length===0?c:[...c,...a.budget!==void 0?o.slice(0,a.budget):o];return Me(a,i.schema,(0,q.jsx)(Pr,{schema:i.schema,...a,nodes:b,options:{...m,today:m.today??i.today()??Vt()},...s?{bar:s}:{},...l?{groups:l}:{}}))};return{name:"calendar",requiredRoles:[...dn],bindings:e.bindings,options:e,View:t(),at:n=>t(n),ranges:()=>cn(e).map(n=>({range:n,title:It(n,e.horizon)})),place:(n,r)=>n.map(a=>gn(a,e.bindings,r)).filter(a=>a!==null)}}function Pr({nodes:e,label:t,fidelity:n,mode:r,options:a,schema:i,selectedIds:d=[],implicated:m=[],flagged:g=[],bar:y,groups:c}){let{view:f,go:x}=Je(),{store:s,principal:l}=X(),h=f.within?.at??a.today,o=f.within?.range??a.range??"month",b=a.weekStartsOn??1,C=new Set([...m,...d]),R=$=>C.size===0?"plain":C.has($)?"lit":"dimmed",A=new Set(g),S=o==="years"&&f.within?.at===void 0?Mr((e??[]).map($=>gn($,a.bindings,i))):void 0,k=Ft(o,h,{weekStartsOn:b,...a.horizon?{horizon:a.horizon}:{},...S?{fit:S}:{}}),E=n==="glyph"||n==="summary"?{next:a.today}:{from:k.cells[0]?.from??h,to:k.cells[k.cells.length-1]?.to??h},M=(e??[]).flatMap($=>Ht($,a.bindings,i,E)),B=a.hueOf??($=>de($.kind));if(n==="glyph")return(0,q.jsx)(ye,{label:`${t??"Calendar"} \xB7 ${M.length}`,hue:de("calendar")});if(n==="summary"){let $=un(M,a.today);return(0,q.jsx)(te,{title:t??"Calendar",meta:`${M.length} dated`,tone:"muted",children:(0,q.jsx)(Ee,{max:6,items:$.length>0?$.map(V=>({id:V.id,label:V.label,hue:B(V)})):M.filter(V=>oe(a.today,V.from)>=0).sort((V,p)=>V.from.localeCompare(p.from)).slice(0,6).map(V=>({id:V.id,label:`${V.from.slice(5)} ${V.label}`,hue:B(V)}))})})}let w=r==="fullscreen",[W,P]=(0,pn.useState)(null),U=($,V,p)=>{let H=s.graph.getNode($);if(!H)return;let D=Be(a.bindings[H.kind],s.schema.tryDefinition(H.kind));if(!D)return;let j=Gt(s,H.kind,D.start);if(!j){P({text:`Nothing declared writes the ${Cn(s.schema.definitions.find(K=>K.kind===H.kind),D.start).toLowerCase()}, so this cannot be moved from here.`,tone:"refused"});return}let v=V.from,O=H[D.start],ie=sn(O)===null?v:`${v}${String(O).slice(10)}`,se={name:j.name,args:{[j.arg]:$,[D.start]:ie}},ue=s.permits(se,l);if(!ue.ok){P({text:ue.refusal.message,tone:"refused"});return}try{s.apply(se,{author:l}),P(p==="day"?null:{text:`Moved to ${Oe(v)} \u2014 a ${p} is coarser than the ${Cn(s.schema.definitions.find(K=>K.kind===H.kind),D.start).toLowerCase()} holds, so it takes the first day of the cell. Undo puts it back.`,tone:"rounded"})}catch(K){P({text:K instanceof Error?K.message:String(K),tone:"refused"})}},ne=$=>{let V=o==="years"?ze(`${k.years?.[0]??h.slice(0,4)}${h.slice(4)}`,$*12*Math.max(1,k.years?.length??a.horizon?.years??1)):o==="year"?ze(h,$*12):o==="quarter"?ze(h,$*3):o==="month"?ze(h,$):o==="week"?we(h,$*7):we(h,$);x(Qe(f,"at",V))},ae=($,V)=>{let p=Qe(f,"range",$);V!==void 0&&(p=Qe(p,"at",V)),x(p)},ee=(0,pn.useRef)(null),ge=Ve(ee),pe=ge!==null&&ge<420,T=$=>$==="years"?a.horizon?.title??"years":$.charAt(0).toUpperCase()+$.slice(1);return(0,q.jsx)(te,{title:t??"Calendar",meta:k.title,style:{gap:10,...w?{flex:"1 1 auto",minHeight:0,height:"100%"}:{}},children:(0,q.jsxs)("div",{ref:ee,"data-testid":"calendar","data-calendar-range":o,"data-calendar-at":h,style:{display:"flex",flexDirection:"column",height:"100%",minHeight:0,gap:8},children:[(0,q.jsxs)("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:6},children:[(0,q.jsxs)("nav",{"aria-label":"When",style:{display:"flex",gap:4},children:[(0,q.jsx)(In,{label:"Previous",glyph:"\u2039",onPress:()=>ne(-1)}),(0,q.jsx)("button",{type:"button","data-testid":"calendar-today",onClick:()=>x(Qe(f,"at",a.today)),style:_e,children:"Today"}),(0,q.jsx)(In,{label:"Next",glyph:"\u203A",onPress:()=>ne(1)})]}),pe?(0,q.jsx)("select",{"aria-label":"Range","data-testid":"calendar-ranges",value:o,onChange:$=>ae($.target.value),style:{..._e,borderRadius:999,borderColor:"var(--graview-edge)",background:void 0,backgroundColor:"transparent",marginLeft:"auto",maxWidth:"50%",paddingRight:24,appearance:"none",WebkitAppearance:"none",backgroundImage:"linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%)",backgroundPosition:"calc(100% - 13px) 55%, calc(100% - 9px) 55%",backgroundSize:"4px 4px, 4px 4px",backgroundRepeat:"no-repeat"},children:cn(a).map($=>(0,q.jsx)("option",{value:$,children:T($)},$))}):(0,q.jsx)("div",{role:"group","aria-label":"Range","data-testid":"calendar-ranges",style:{display:"flex",flexWrap:"wrap",gap:4,marginLeft:"auto"},children:cn(a).map($=>(0,q.jsx)("button",{type:"button","aria-pressed":$===o,"data-testid":`calendar-range-${$}`,onClick:()=>ae($),style:{..._e,borderRadius:999,borderColor:"var(--graview-edge)",...$==="years"?{}:{textTransform:"capitalize"},...$===o?{borderColor:"var(--graview-accent)",color:"var(--graview-accent)",background:"var(--graview-panel)"}:{}},children:$==="years"?a.horizon?.title??"years":$},$))})]}),W?(0,q.jsx)("p",{"data-testid":W.tone==="refused"?"calendar-refused":"calendar-rounded",role:"status",style:{margin:0,fontSize:"0.8125rem",color:W.tone==="refused"?"var(--graview-warn)":"var(--graview-ink-muted)"},children:W.text}):null,k.years?(0,q.jsx)("nav",{"aria-label":"Years","data-testid":"calendar-years",style:{display:"flex",flexWrap:"wrap",gap:4},children:k.years.map($=>(0,q.jsx)("button",{type:"button","data-testid":`calendar-year-${$}`,onClick:()=>ae("year",`${$}-01-01`),style:_e,children:$},$))}):null,y,o==="agenda"&&c?(0,q.jsx)("div",{"data-testid":"calendar-groups",style:{display:"grid",gap:10,minHeight:0,overflow:"auto"},children:c.map($=>(0,q.jsxs)("section",{"data-testid":"calendar-group",style:{display:"grid",gap:4},children:[(0,q.jsxs)("h3",{style:{margin:0,fontSize:"0.8125rem",letterSpacing:"0.08em",textTransform:"uppercase",color:"var(--graview-ink-muted)"},children:[$.label," ",(0,q.jsx)("span",{style:{fontWeight:400},children:$.ids.size})]}),(0,q.jsx)(mn,{days:k.cells.map(V=>V.from),entries:M.filter(V=>$.ids.has(V.id)),today:a.today,emphasisOf:R,broken:A,hue:B,onMove:(V,p)=>U(V,{from:p,to:p,label:p},"day")})]},$.label))}):o==="agenda"?(0,q.jsx)(mn,{days:k.cells.map($=>$.from),entries:M,today:a.today,emphasisOf:R,broken:A,hue:B,onMove:($,V)=>U($,{from:V,to:V,label:V},"day")}):(0,q.jsx)(Qt,{span:k,weekStartsOn:b,entries:M,today:a.today,perCell:a.perCell??Yt[k.grain],emphasisOf:R,broken:A,hue:B,onOpen:$=>ae(Ut(k.grain),$.from),onMove:U})]})})}var ce=_(De(),1);var I=_(J(),1),Lr=`
4
+ .graview-columns { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-start; }
5
+ .graview-columns-column { flex: 1 1 13rem; min-width: 0; display: flex; flex-direction: column; gap: 8px; padding: 8px; border-radius: 10px; border: 1px solid var(--graview-edge); background: color-mix(in srgb, var(--graview-panel) 60%, transparent); }
6
+ .graview-columns-column[data-droppable="true"] { border-color: var(--graview-accent); }
7
+ .graview-columns-column[data-over="true"] { background: color-mix(in srgb, var(--graview-accent) 10%, transparent); }
8
+ .graview-columns-heading { margin: 0; display: flex; align-items: baseline; justify-content: space-between; gap: 8px; font-size: 0.875rem; font-weight: 600; color: var(--graview-ink); }
9
+ .graview-columns-count { font-weight: 400; color: var(--graview-ink-muted); font-variant-numeric: tabular-nums; }
10
+ .graview-columns-cards { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
11
+ .graview-columns-empty { margin: 0; font-size: 0.8125rem; color: var(--graview-ink-muted); }
12
+ .graview-columns-card[draggable="true"] { cursor: grab; }
13
+ .graview-columns-move { position: relative; z-index: ${Ce.raised}; display: flex; justify-content: flex-end; margin-top: 4px; }
14
+ .graview-columns-move[data-open="true"] { z-index: ${Ce.over}; }
15
+ .graview-columns-move > button, .graview-columns-menu button, .graview-columns-said button { font: inherit; font-size: 0.8125rem; min-height: 28px; padding: 2px 10px; border-radius: 7px; border: 1px solid var(--graview-edge); background: var(--graview-panel); color: var(--graview-ink); cursor: pointer; }
16
+ .graview-columns-move > button:focus-visible, .graview-columns-menu button:focus-visible, .graview-columns-said button:focus-visible { outline: 2px solid var(--graview-accent); outline-offset: 2px; }
17
+ .graview-columns-menu { position: absolute; right: 0; top: calc(100% + 4px); z-index: ${Ce.over}; display: flex; flex-direction: column; gap: 4px; padding: 6px; min-width: 10rem; border-radius: 9px; border: 1px solid var(--graview-edge); background: var(--graview-panel); box-shadow: 0 6px 18px rgb(0 0 0 / 0.18); }
18
+ .graview-columns-menu button { text-align: left; }
19
+ .graview-columns-said { margin: 0 0 8px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 0.8125rem; color: var(--graview-ink); }
20
+ .graview-columns-said[data-tone="refused"] { color: var(--graview-warn); }
21
+ .graview-columns-card[data-graview-choose] { position: relative; }
22
+ .graview-columns-card .graview-choose-at { position: absolute; top: 6px; right: 6px; z-index: ${Ce.raised}; display: flex; }
23
+ [data-graview-choosable] { outline: none; }
24
+ @media (pointer: coarse) { [data-graview-choosable]:not([data-graview-choosing]) .graview-columns-card .graview-choose-at { display: none; } }
25
+ `;function Zt(e){function t(n){let{store:r}=X();dt();let a=Object.keys(e.bindings).filter(l=>r.schema.tryDefinition(l)!==void 0),i=n.nodes??[],d=new Set(i.map(l=>String(l.kind))),m=l=>r.graph.nodesOfKind(l).filter(h=>We(r.schema.tryDefinition(l),h)),g=n.total!==void 0&&n.total>i.length,y=a.map(l=>{let h=e.bindings[l].column,o=Ot(r.schema,l,h),b=(A,S)=>S==="label"?he(r.schema.tryDefinition(A.kind),A):A[S],C=Ye(d.has(l)?i.filter(A=>A.kind===l):m(l).slice(0,n.budget??1/0),e.sort,b),R=d.has(l)&&!g?C:m(l);return{kind:l,field:h,columns:o.map(A=>({column:A,cards:C.filter(S=>Mn(S,h,o)===A.value),count:R.filter(S=>Mn(S,h,o)===A.value).length})).filter(A=>A.column.value!==null||A.count>0)}}),c=y.reduce((l,h)=>l+h.columns.reduce((o,b)=>o+b.count,0),0),f=n.label??"Board",x=a[0];if(n.fidelity==="glyph")return(0,I.jsx)(ye,{label:`${f} \xB7 ${c}`,hue:de("columns")});if(n.fidelity==="summary")return(0,I.jsx)(te,{title:f,meta:x?Ie(r.schema,x,c):String(c),tone:"muted",children:(0,I.jsx)("p",{style:{margin:0,fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},"data-testid":"columns-summary",children:y.flatMap(l=>l.columns.map(h=>`${h.column.label} ${h.count}`)).join(" \xB7 ")})});let s=(0,I.jsx)(Tr,{boards:y,title:f});return Me(n,r.schema,n.mode==="fullscreen"?(0,I.jsx)("div",{style:{padding:"14px 16px"},children:s}):(0,I.jsx)(te,{title:f,meta:x?Ie(r.schema,x,c):void 0,children:s}))}return{name:"columns",requiredRoles:["column"],bindings:e.bindings,View:t}}function Tr({boards:e,title:t}){let{store:n,principal:r}=X(),a=(0,ce.useRef)(null),[i,d]=(0,ce.useState)(null),[m,g]=(0,ce.useState)(null),[y,c]=(0,ce.useState)(null),[f,x]=(0,ce.useState)(null);(0,ce.useLayoutEffect)(()=>{if(!f)return;a.current?.querySelector(f)?.focus(),x(null)});let s=S=>{let k=n.graph.getNode(S);return k?he(n.schema.tryDefinition(k.kind),k):S},l=(0,ce.useMemo)(()=>e.flatMap(S=>S.columns.flatMap(k=>k.cards.map(u=>u.id))),[e]),h=Rt(l),o=(0,ce.useMemo)(()=>n.permittedMutations(r).some(S=>{let k=S.subject?.kinds;return k!==void 0&&(k==="*"||e.some(u=>k.includes(u.kind)))}),[n,r,e]),b=S=>{h.choose(S),requestAnimationFrame(()=>{((S[0]===void 0?null:a.current?.querySelector(`[data-graview-choose-box="${Vn(S[0])}"]`))??a.current)?.focus({preventScroll:!0})})},C=(S,k)=>$t(n,r,S,k.field,k.columns.map(u=>u.column)),R=(S,k,u,E)=>{try{let M=n.apply(k.call,{author:r});d({text:`Moved \u201C${s(S)}\u201D to ${u}.`,tone:"moved",batch:M.batch,id:S}),E==="keyboard"&&x(`[data-columns-move="${Vn(S)}"] > button`)}catch(M){d({text:M instanceof Error?M.message:String(M),tone:"refused"})}},A=()=>{if(i?.batch)try{n.undo(i.batch,{author:r}),d({text:`\u201C${s(i.id??"")}\u201D is back where it was.`,tone:"moved"}),i.id&&x(`[data-columns-move="${Vn(i.id)}"] > button`)}catch(S){d({text:S instanceof Error?S.message:String(S),tone:"refused"})}};return(0,I.jsxs)("div",{"data-testid":"columns-lens",...o?{...h.listProps,tabIndex:-1,role:"group","aria-label":h.chosen.length>0?`${t}, ${h.chosen.length} chosen`:t,"data-graview-choosable":""}:{},ref:S=>{a.current=S,h.list.current=S},children:[(0,I.jsx)("style",{children:Lr}),o?(0,I.jsx)("style",{children:At}):null,(0,I.jsxs)("p",{className:"graview-columns-said",role:"status","data-tone":i?.tone,"data-testid":"columns-said",style:i?void 0:{position:"absolute",width:1,height:1,overflow:"hidden",clipPath:"inset(50%)"},children:[i?(0,I.jsx)("span",{children:i.text}):null,i?.batch?(0,I.jsx)("button",{type:"button","data-testid":"columns-undo",onClick:A,children:"Undo"}):null]}),e.map(S=>(0,I.jsx)("section",{"data-columns-kind":S.kind,"aria-label":`${et(n.schema,S.kind)} by ${S.field}`,children:(0,I.jsx)("div",{className:"graview-columns",children:S.columns.map(({column:k,cards:u,count:E})=>{let M=k.value??"",B=m!==null&&k.value!==null&&m.to.includes(k.value);return(0,I.jsxs)("section",{className:"graview-columns-column","data-graview-column":M,"data-droppable":B||void 0,"data-over":B&&y===M||void 0,"aria-label":`${t} \xB7 ${k.label}, ${E}`,"data-graview-named-by-lens":"",onDragOver:w=>{B&&(w.preventDefault(),w.dataTransfer.dropEffect="move",c(M))},onDragLeave:()=>c(w=>w===M?null:w),onDrop:w=>{let W=w.dataTransfer.getData("text/graview-node"),P=n.graph.getNode(W);if(c(null),g(null),!P||k.value===null)return;let U=C(P,S).find(ne=>ne.to===k.value);U&&(w.preventDefault(),w.stopPropagation(),R(W,U,k.label,"drag"))},children:[(0,I.jsxs)("h3",{className:"graview-columns-heading",children:[(0,I.jsx)("span",{children:k.label}),(0,I.jsx)("span",{className:"graview-columns-count","data-testid":"columns-count",children:E})]}),u.length===0?(0,I.jsx)("p",{className:"graview-columns-empty",children:"Nothing here."}):(0,I.jsx)("ul",{className:"graview-columns-cards",children:(0,I.jsx)(Mt.Provider,{value:k.value===null?null:{field:S.field,values:[k.value,k.label]},children:u.map(w=>{let W=C(w,S);return(0,I.jsx)(Nr,{card:w,moves:W,...o?{choosing:h}:{},labelOf:P=>S.columns.find(U=>U.column.value===P)?.column.label??P,onMove:(P,U)=>R(w.id,P,U,"keyboard"),onDrag:P=>g(P?{id:w.id,to:W.map(U=>U.to)}:null)},w.id)})})})]},M)})})},S.kind)),o?(0,I.jsx)(Et,{store:n,chosen:h.chosen,principal:r,anchor:()=>a.current?.closest('[data-testid="kind-stop"], [data-embed-content]')??null,of:l.length,onChooseAll:()=>h.choose(l),onClear:h.clear,onActed:b}):null]})}var Vn=e=>typeof globalThis.CSS?.escape=="function"?globalThis.CSS.escape(e):e.replace(/["\\]/g,"\\$&");function Nr({card:e,moves:t,labelOf:n,onMove:r,onDrag:a,choosing:i}){let{store:d,views:m}=X(),[g,y]=(0,ce.useState)(!1),c=(0,ce.useRef)(null),f=(0,ce.useRef)(null),x=he(d.schema.tryDefinition(e.kind),e),s=m.lookup(e.kind,{cardinality:"one",fidelity:"summary"});(0,ce.useLayoutEffect)(()=>{g&&c.current?.querySelector("button")?.focus()},[g]);let l=()=>{y(!1),f.current?.focus()},h=o=>{let b=[...c.current?.querySelectorAll("button")??[]],C=b.indexOf(document.activeElement);o.key==="Escape"?(o.preventDefault(),o.stopPropagation(),l()):(o.key==="ArrowDown"||o.key==="ArrowUp")&&(o.preventDefault(),o.stopPropagation(),b[(C+(o.key==="ArrowDown"?1:b.length-1))%b.length]?.focus())};return(0,I.jsxs)("li",{className:"graview-spec-item graview-columns-card","data-graview-listed":e.id,"data-as":"card",...i?{"data-graview-choose":e.id}:{},draggable:t.length>0||void 0,onDragStart:o=>{t.length!==0&&(o.dataTransfer.setData("text/graview-node",e.id),o.dataTransfer.effectAllowed="move",a(!0))},onDragEnd:()=>a(!1),children:[(0,I.jsx)(Pt,{node:e,label:x}),s?(0,I.jsx)(lt,{mode:"scene",children:(0,I.jsx)(gt.Provider,{value:x,children:(0,I.jsx)(s,{node:e,cardinality:"one",fidelity:"summary",mode:"scene",selected:!1})})}):(0,I.jsx)("span",{className:"graview-spec-item-name","aria-hidden":"true",children:x}),i?(0,I.jsx)("span",{className:"graview-choose-at",children:(0,I.jsx)("input",{...i.boxProps(e.id,x),onPointerEnter:Pn,onFocus:Pn})}):null,t.length>0?(0,I.jsxs)("div",{className:"graview-columns-move","data-columns-move":e.id,"data-open":g||void 0,onBlur:o=>{o.currentTarget.contains(o.relatedTarget)||y(!1)},children:[(0,I.jsx)("button",{ref:f,type:"button","aria-haspopup":"menu","aria-expanded":g,"aria-label":`Move \u201C${x}\u201D to another column`,"data-testid":"columns-move",onClick:()=>y(o=>!o),children:"Move\u2026"}),g?(0,I.jsx)("div",{ref:c,role:"menu","aria-label":`Move \u201C${x}\u201D to`,className:"graview-columns-menu",onKeyDown:h,onMouseDown:o=>o.preventDefault(),children:t.map(o=>(0,I.jsx)("button",{type:"button",role:"menuitem","data-columns-to":o.to,title:o.title,onClick:()=>{y(!1),r(o,n(o.to))},children:n(o.to)},o.to))}):null]}):null]})}var be=_(De(),1);var z=_(J(),1),Dr=["rows","columns","link"],Xe=class extends Error{constructor(n,r){super(`${n}
26
+ ${r}`);this.hint=r;this.name="CoverageBindingError"}},Hn=(e,t)=>t&&e[t]!==void 0?String(e[t]):"",zr=40,Br=24;function Wr(e,t={}){let n=t.rows??zr,r=t.columns??Br;if(e.rows.length<=n&&e.columns.length<=r)return e;let a=new Map;for(let c of e.cells)a.set(c.rowId,(a.get(c.rowId)??0)+1),a.set(`col:${c.columnId}`,(a.get(`col:${c.columnId}`)??0)+1);let i=(c,f,x)=>{if(c.length<=f)return c;let s=new Set(c.map((l,h)=>({item:l,index:h,count:a.get(x(l))??0})).sort((l,h)=>h.count-l.count||l.index-h.index).slice(0,f).map(l=>l.item.id));return c.filter(l=>s.has(l.id))},d=i(e.rows,n,c=>c.id),m=i(e.columns,r,c=>`col:${c.id}`),g=new Set(d.map(c=>c.id)),y=new Set(m.map(c=>c.id));return{...e,rows:d,columns:m,cells:e.cells.filter(c=>g.has(c.rowId)&&y.has(c.columnId)),of:{rows:e.rows.length,columns:e.columns.length}}}function ar(e,t,n,r){let a=u=>u,i=u=>r?he(r.tryDefinition(u.kind),u):String(a(u).label??u.id),d=r?[n.rows,n.columns].filter(u=>r.tryDefinition(u)===void 0):[];if(d.length>0)throw new Xe(`No kind is declared for ${d.map(u=>`"${u}"`).join(" or ")}.`,'Check the lens bindings: { rows: "<kind>", columns: "<kind>", link: "<edge kind>" }');if(r&&typeof n.link!="string"){let u=$n(r,n.columns,n.link.path);if(!u.ok||!u.reached.has(n.rows)){let E=$n(r,n.columns,[...n.link.path].reverse());throw new Xe(E.ok&&E.reached.has(n.rows)?`The path runs from the ${n.rows} to the ${n.columns}; it is walked from the columns.`:`The path [${n.link.path.join(", ")}] cannot get from a ${n.columns} to a ${n.rows}.`,`Name it column end first: link: { path: [${[...n.link.path].reverse().map(M=>JSON.stringify(M)).join(", ")}] }`)}}let m=e.filter(u=>u.kind===n.rows),g=e.filter(u=>u.kind===n.columns);if(!r&&m.length===0&&g.length===0)throw new Xe(`Nothing to lay out: no "${n.rows}" and no "${n.columns}" nodes.`,'Check the lens bindings: { rows: "<kind>", columns: "<kind>", link: "<edge kind>" }');let y=n.groupOrder??[],c=u=>{let E=y.indexOf(u);return E===-1?y.length:E},f=n.badge?t.filter(u=>u.kind===n.badge.edge):[],x=new Set(m.map(u=>u.id)),s=new Set(g.map(u=>u.id)),l=[];if(typeof n.link=="string"){let u=n.link,E=t.filter(P=>P.kind===u),M=P=>r?.tryDefinition?.(P)?.edges?.[u]?.to,B=(M(n.columns)??[]).some(P=>P===n.rows||P==="*"),w=(M(n.rows)??[]).some(P=>P===n.columns||P==="*"),W=B||!w;for(let P of E){let U=W?P.to:P.from,ne=W?P.from:P.to;x.has(U)&&s.has(ne)&&l.push({rowId:U,columnId:ne})}}else{let u=new Map;for(let M of new Set(n.link.path))u.set(M,new Map);for(let M of t){let B=u.get(M.kind);if(!B)continue;let w=B.get(M.from);w?w.push(M.to):B.set(M.from,[M.to]);let W=B.get(M.to);W?W.push(M.from):B.set(M.to,[M.from])}let E=new Set;for(let M of g){let B=[{id:M.id,via:[]}];for(let w of n.link.path){let W=[],P=new Set,U=u.get(w);for(let ne of B)for(let ae of U.get(ne.id)??[])P.has(`${ne.id}|${ae}`)||(P.add(`${ne.id}|${ae}`),W.push({id:ae,via:[...ne.via,ne.id]}));B=W}for(let w of B){if(!x.has(w.id))continue;let W=`${w.id}|${M.id}`;E.has(W)||(E.add(W),l.push({rowId:w.id,columnId:M.id,via:w.via.slice(1)}))}}}let h=new Set(n.requiredGroups??[]),o=n.requiredVia?new Set(t.filter(u=>u.kind===n.requiredVia.edge).map(u=>u.to)):null,b=new Set(l.map(u=>u.rowId)),C=new Set(l.map(u=>u.columnId)),R=new Set(f.map(u=>u.to)),A=(u,E)=>E==="label"?i(u):a(u)[E],S=Ye(m,n.sort,A).map(u=>{let E=a(u),M=Hn(E,n.rowGroup);return{id:u.id,ref:Hn(E,n.rowRef),label:i(u),group:M,required:o?o.has(u.id):h.size===0||h.has(M),covered:b.has(u.id),badged:R.has(u.id)}}).sort((u,E)=>c(u.group)-c(E.group)||(n.sort!==void 0?0:u.ref<E.ref?-1:u.ref>E.ref?1:0)),k=Ye(g,n.columnSort,A).map(u=>({id:u.id,label:i(u),used:C.has(u.id),group:Hn(a(u),n.columnGroup)})).sort((u,E)=>u.group<E.group?-1:u.group>E.group?1:n.columnSort!==void 0?0:u.id<E.id?-1:u.id>E.id?1:0).map(({group:u,...E})=>E);return{rows:S,columns:k,cells:l,gaps:S.filter(u=>u.required&&!u.covered).map(u=>u.id),unasked:k.filter(u=>!u.used).map(u=>u.id)}}var er=316,Gn=58,jn=176,Ir=Math.sin(Gn*Math.PI/180),Vr=Math.cos(Gn*Math.PI/180),Hr=e=>{let t=e.reduce((r,a)=>Math.max(r,a.length),0),n=Math.min(jn,Math.max(46,t*5.4+12));return Math.ceil(n*Ir)+8},nr=Math.ceil(jn*Vr),tr=(e,t)=>tn(e,t).toLowerCase(),ir=(e,t)=>rn(e.tryDefinition(t),t);function Gr(e,t,n){return t.rows===t.columns?`${e} with none across`:`${Ie(n,t.rows,e)} with no ${ir(n,t.columns)}`}function jr(e,t,n){return t.rows===t.columns?`${e} with none down`:`${Ie(n,t.columns,e)} on no ${ir(n,t.rows)}`}function _r({nodes:e,label:t,fidelity:n,mode:r,options:a,schema:i,implicated:d=[],flagged:m=[],budget:g,rowsKept:y}){let{store:c}=X(),f=Qr(),x=(0,be.useRef)(null),s=Ve(x),[l,h]=(0,be.useState)(null),o=ar(He(c.graph,c.schema,e).filter(w=>w.kind===a.rows||w.kind===a.columns).filter(w=>y===void 0||a.rows===a.columns||w.kind!==a.rows||y.has(w.id)),c.graph.allEdges(),a,i),b=n==="full"?Wr(o,g!==void 0?{rows:g,columns:g}:{}):o,C=typeof a.link=="string"?a.link:void 0,R=y!==void 0&&o.cells.length===0&&o.columns.length>0&&(C===void 0||c.graph.allEdges().some(w=>w.kind===C))?void 0:st(c.schema,a,{rows:o.rows.length,columns:o.columns.length,cells:o.cells.length});if(n==="glyph")return(0,z.jsx)(ye,{label:`${t??"Coverage"} \xB7 ${R?"nothing linked":b.gaps.length===0?"complete":`${b.gaps.length} missing`}`,hue:de("coverage")});if(R)return(0,z.jsx)(te,{title:t??"Coverage",tone:"muted",fit:!0,...r==="fullscreen"?{style:{flex:"1 1 auto",minHeight:0,height:"100%"}}:{},children:(0,z.jsx)("p",{"data-coverage-unlinked":"",style:{margin:0,color:"var(--graview-ink-muted)"},children:R})});if(n==="summary"){let w=b.rows.filter(W=>b.gaps.includes(W.id));return(0,z.jsxs)(te,{title:t??"Coverage",meta:`${b.rows.length-b.gaps.length}/${b.rows.length}`,tone:b.gaps.length>0?"warning":"muted",fit:!0,children:[(0,z.jsx)(Yr,{grid:b}),w.length>0?(0,z.jsx)(Ee,{pick:!0,max:4,items:w.map(W=>({id:W.id,label:W.ref||W.label}))}):null]})}let A=new Set(d),S=new Set(m),k=l!==null&&l.every(w=>A.has(w))?l:null,u=r==="fullscreen",E=Hr(b.columns.map(w=>w.label)),M=s===null?er:Math.max(96,Math.min(er,Math.round(s*.36))),B=s!==null&&(s<420||M+b.columns.length*28+nr>s);return(0,z.jsx)(te,{title:t??"Coverage",...u?{style:{flex:"1 1 auto",minHeight:0,height:"100%"}}:{},meta:b.rows.length===0||b.columns.length===0?void 0:b.gaps.length===0&&b.unasked.length===0?"complete":[b.gaps.length>0?Gr(b.gaps.length,a,c.schema):"",b.unasked.length>0?jr(b.unasked.length,a,c.schema):""].filter(Boolean).join(" \xB7 "),selected:!1,fit:!0,children:(0,z.jsxs)("div",{ref:x,"data-coverage-shape":B?"stacked":"matrix",onClick:w=>h(rr(w.target)),onKeyDown:w=>{(w.key==="Enter"||w.key===" ")&&h(rr(w.target))},style:{position:"relative",display:"flex",flexDirection:"column",flex:"1 1 auto",minHeight:0,paddingRight:B?0:nr},children:[B?null:(0,z.jsxs)("div",{style:{display:"flex",alignItems:"flex-end",flex:"0 0 auto",position:"sticky",top:0,zIndex:Ce.over,background:"var(--graview-panel)",paddingTop:6},children:[(0,z.jsx)("div",{ref:f.corner,style:{width:M,flex:"0 0 auto",alignSelf:"stretch",position:"sticky",left:0,zIndex:Ce.raised,background:"var(--graview-panel)"}}),(0,z.jsx)("div",{ref:f.heads,style:{display:"flex",flex:1,minWidth:0,height:E},children:b.columns.map(w=>(0,z.jsx)("div",{"data-graview-pick":w.id,"data-graview-emphasis":A.size===0?"plain":A.has(w.id)?"lit":"dimmed",title:w.label,"data-graview-column":w.id,style:{flex:1,minWidth:28,boxSizing:"border-box",borderLeft:"1px solid transparent",pointerEvents:"none",position:"relative",display:"flex",alignItems:"flex-end",justifyContent:"center"},children:(0,z.jsxs)("span",{style:{position:"absolute",bottom:3,padding:"3px 0",pointerEvents:"auto",cursor:"pointer",left:"50%",visibility:f.hidden.has(w.id)?"hidden":"visible",transformOrigin:"left bottom",transform:`rotate(-${Gn}deg)`,whiteSpace:"nowrap",maxWidth:jn,overflow:"hidden",textOverflow:"ellipsis",fontSize:"0.75rem",letterSpacing:"0.005em",color:w.used?A.size>0&&!A.has(w.id)?"var(--graview-ink-faint)":"var(--graview-ink)":"var(--graview-warn)"},children:[w.used?"":"\u26A0 ",w.label]})},w.id))})]}),b.of?(0,z.jsxs)("p",{"data-testid":"coverage-more",style:{margin:"4px 0 6px",fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:[[b.of.rows>b.rows.length?`the ${b.rows.length} most connected of ${b.of.rows} ${tr(c.schema,a.rows)}`:null,b.of.columns>b.columns.length?`${b.columns.length} of ${b.of.columns} ${tr(c.schema,a.columns)} across`:null].filter(Boolean).join(" \xB7 ").replace(/^./,w=>w.toUpperCase())," ","\u2014 what is missing is still counted over all of them."]}):null,(0,z.jsx)("div",{children:b.rows.map((w,W)=>{let P=b.rows[W-1],U=P===void 0||P.group!==w.group,ne=w.required&&!w.covered,ae=A.size>0&&!A.has(w.id);return(0,z.jsxs)("div",{children:[U&&w.group?(0,z.jsx)("div",{style:{fontSize:"0.6875rem",letterSpacing:"0.16em",textTransform:"uppercase",color:"var(--graview-ink-faint)",padding:"9px 0 3px"},children:(0,z.jsx)("span",{style:{position:"sticky",left:0,display:"inline-block",paddingRight:8,background:"var(--graview-panel)"},children:w.group})}):null,(0,z.jsxs)("div",{style:{display:"flex",flexDirection:B?"column":"row",alignItems:"stretch",borderTop:"1px solid var(--graview-edge)",opacity:ae?.72:1},children:[(0,z.jsxs)("div",{"data-graview-pick":w.id,"data-graview-emphasis":A.size===0?"plain":ae?"dimmed":"lit",title:w.label,style:{width:B?"auto":M,flex:"0 0 auto",position:B?"static":"sticky",left:0,zIndex:Ce.raised,background:"var(--graview-panel)",display:"flex",alignItems:"center",gap:7,padding:"6px 10px 6px 0",boxSizing:"border-box",fontSize:"0.8125rem",minWidth:0,color:ne||S.has(w.id)?"var(--graview-warn)":"var(--graview-ink)"},children:[w.ref?(0,z.jsx)("span",{style:{flex:"0 0 auto",fontVariantNumeric:"tabular-nums",color:"var(--graview-ink-faint)"},children:w.ref}):null,(0,z.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:w.label}),a.badge?(0,z.jsx)("span",{title:w.badged?a.badge.title:a.badge.missingTitle,style:{marginLeft:"auto",flex:"0 0 auto",fontSize:"0.75rem",color:w.badged?"var(--graview-ink-faint)":"var(--graview-warn)"},children:w.badged?a.badge.symbol:"\u25CB"}):null]}),(0,z.jsx)("div",{style:{display:"flex",flex:1,minWidth:0,...B?{flexWrap:"wrap",gap:6,padding:"0 0 8px"}:{}},children:b.columns.map(ee=>{let ge=b.cells.find(T=>T.rowId===w.id&&T.columnId===ee.id),pe=ge!==void 0;return(0,z.jsxs)("div",{"data-graview-mark":"",...pe?{"data-graview-pick":ee.id,"data-graview-emphasis":A.size===0?"plain":A.has(ee.id)&&A.has(w.id)?"lit":"dimmed","data-graview-joins":JSON.stringify(Fr(ge))}:{},title:pe?`${ee.label} answers ${w.ref||w.label}`:`${ee.label} does not answer ${w.ref||w.label}`,style:B?{flex:"0 0 auto",minHeight:24,boxSizing:"border-box",display:"inline-flex",alignItems:"center",gap:6,padding:"2px 9px 2px 7px",borderRadius:6,border:"1px solid var(--graview-edge)",fontSize:"0.75rem",color:pe?"var(--graview-ink)":"var(--graview-ink-faint)"}:{flex:1,minWidth:28,boxSizing:"border-box",display:"flex",alignItems:"center",justifyContent:"center",borderLeft:"1px solid var(--graview-edge)"},children:[(0,z.jsx)("span",{style:Kr(pe,ne,A.has(ee.id)&&A.has(w.id),A.size>0)}),B?(0,z.jsx)("span",{children:ee.label}):null]},ee.id)})})]})]},w.id)})}),k?(0,z.jsx)(Ur,{box:x,joins:k,shape:`${B?"stacked":"matrix"} ${s??""}`}):null]})})}var Fr=e=>[e.rowId,e.columnId,...e.via??[]];function rr(e){let t=e?.closest?.("[data-graview-joins]")?.getAttribute("data-graview-joins");if(!t)return null;try{let n=JSON.parse(t);return Array.isArray(n)&&n.every(r=>typeof r=="string")?n:null}catch{return null}}var fn=(e,t,n)=>Math.min(n,Math.max(t,e));function qr(e){let t=e.getBoundingClientRect(),n=typeof document.createRange=="function"?document.createRange():null;n?.selectNodeContents(e);let r=typeof n?.getBoundingClientRect=="function"?n.getBoundingClientRect():null;return r&&r.width>0&&r.height>0?r:t}function Ur({box:e,joins:t,shape:n}){let[r,a]=(0,be.useState)([]),i=JSON.stringify(t);return(0,be.useLayoutEffect)(()=>{let d=e.current;if(!d||typeof window>"u")return;let m=()=>{let c=d.getBoundingClientRect(),f=d.offsetWidth>0&&c.width>0?c.width/d.offsetWidth:1,x=[...d.querySelectorAll("[data-graview-joins]")].find(h=>h.getAttribute("data-graview-joins")===i);if(!x){a([]);return}let s=x.getBoundingClientRect(),l=[];for(let h of JSON.parse(i)){let o=[...d.querySelectorAll("[data-graview-pick]")].find(k=>k.getAttribute("data-graview-pick")===h&&!k.closest("[data-graview-mark]"));if(!o)continue;let b=qr(o),C=fn(s.left+s.width/2,b.left,b.right),R=fn(s.top+s.height/2,b.top,b.bottom),A=fn(C,s.left,s.right),S=fn(R,s.top,s.bottom);l.push({id:h,x1:(A-c.left)/f,y1:(S-c.top)/f,x2:(C-c.left)/f,y2:(R-c.top)/f})}a(l)};m();let g=0,y=()=>{g===0&&(g=requestAnimationFrame(()=>{g=0,m()}))};return document.addEventListener("scroll",y,{capture:!0,passive:!0}),window.addEventListener("resize",y,{passive:!0}),()=>{document.removeEventListener("scroll",y,{capture:!0}),window.removeEventListener("resize",y),g!==0&&cancelAnimationFrame(g)}},[e,i,n]),(0,z.jsx)("svg",{"aria-hidden":"true","data-coverage-join":i,style:{position:"absolute",left:0,top:0,width:"100%",height:"100%",overflow:"visible",pointerEvents:"none",zIndex:Ce.over},children:r.map(d=>(0,z.jsxs)("g",{"data-coverage-join-to":d.id,children:[(0,z.jsx)("line",{x1:d.x1,y1:d.y1,x2:d.x2,y2:d.y2,stroke:"var(--graview-accent)",strokeWidth:1.6,strokeLinecap:"round"}),(0,z.jsx)("circle",{cx:d.x2,cy:d.y2,r:2.6,fill:"var(--graview-accent)"})]},d.id))})}function Kr(e,t,n,r){return e?{width:13,height:13,borderRadius:4,background:n||!r?"var(--graview-accent)":"var(--graview-accent-dim)",boxShadow:n&&r?"0 0 12px -2px var(--graview-accent)":void 0}:{width:5,height:5,borderRadius:1,background:t?"var(--graview-warn)":"var(--graview-edge)",opacity:t?.5:1}}function Yr({grid:e}){let t=e.rows.filter(a=>a.required),n=t.filter(a=>a.covered).length,r=t.length===0?1:n/t.length;return(0,z.jsx)("div",{role:"img","aria-label":`${n} of ${t.length} covered`,style:{height:6,borderRadius:999,overflow:"hidden",background:"var(--graview-edge)"},children:(0,z.jsx)("div",{style:{width:`${Math.round(r*100)}%`,height:"100%",background:r===1?"var(--graview-accent)":"var(--graview-warn)"}})})}function or(e){function t(n){let{store:r}=X(),a=He(r.graph,r.schema,n.nodes).filter(g=>g.kind===e.rows),{arranged:i,bar:d}=Pe(n,{lensAllows:{sort:!1,group:!1},subject:a,kind:e.rows}),m=(0,z.jsx)(_r,{schema:r.schema,...n,options:e,...d?{rowsKept:new Set(i.nodes.map(g=>g.id))}:{}});return d?(0,z.jsxs)("div",{style:{display:"grid",gap:6,height:"100%",minHeight:0,gridTemplateRows:"auto 1fr"},children:[d,m]}):m}return{name:"coverage",requiredRoles:[...Dr],options:e,View:t,build(n,r,a){return ar(n,r,e,a)}}}function Qr(){let e=(0,be.useRef)(null),t=(0,be.useRef)(null),[n,r]=(0,be.useState)(new Set);return(0,be.useEffect)(()=>{let a=t.current;if(!a||typeof window>"u")return;let i=a.parentElement;for(;i&&!/(auto|scroll)/.test(getComputedStyle(i).overflowX);)i=i.parentElement;if(!i)return;let d=0,m=()=>{d=0;let y=e.current?.getBoundingClientRect().right??0,c=new Set;for(let f of a.querySelectorAll("[data-graview-column]")){let x=f.getBoundingClientRect();x.left+x.width/2<y&&c.add(f.dataset.graviewColumn)}r(f=>f.size===c.size&&[...c].every(x=>f.has(x))?f:c)},g=()=>{d===0&&(d=requestAnimationFrame(m))};return m(),i.addEventListener("scroll",g,{passive:!0}),()=>{i.removeEventListener("scroll",g),d!==0&&cancelAnimationFrame(d)}},[]),{corner:e,heads:t,hidden:n}}var lr=["regions","outline"],Fe=class extends Error{constructor(n,r){super(`${n}
27
+ ${r}`);this.hint=r;this.name="PlanBindingError"}},hn='Check the lens bindings: { regions: "<kind>", outline: "<field>", markers?: "<kind>", at?: "<field>", within?: "<edge>" }',sr=e=>typeof e=="object"&&e!==null&&typeof e.x=="number"&&typeof e.y=="number";function yn(e,t,n,r){let a=o=>o,i=o=>r?he(r.tryDefinition(o.kind),o):String(a(o).label??o.id);if(r&&r.tryDefinition(n.regions)===void 0)throw new Fe(`No kind is declared for "${n.regions}".`,hn);if(n.markers&&r&&r.tryDefinition(n.markers)===void 0)throw new Fe(`No kind is declared for "${n.markers}".`,hn);let d=e.filter(o=>o.kind===n.regions);if(!r&&d.length===0)throw new Fe(`Nothing to draw: no "${n.regions}" nodes.`,hn);let g=r?.tryDefinition(n.regions)?.fields?.shape;if(g!==void 0&&!(n.outline in g))throw new Fe(`"${n.regions}" has no field called "${n.outline}".`,hn);let y=(()=>{let o=new Map;if(n.nests)for(let b of t)b.kind===n.nests&&o.set(b.from,b.to);return b=>{let C=0,R=o.get(b),A=new Set([b]);for(;R!==void 0&&!A.has(R)&&C<d.length;)A.add(R),C+=1,R=o.get(R);return C}})(),c=n.markers?e.filter(o=>o.kind===n.markers):[],f=new Map;if(n.within)for(let o of t)o.kind===n.within&&f.set(o.from,o.to);let x=[],s=new Map;for(let o of c){let b=n.at===void 0?void 0:a(o)[n.at],C=f.get(o.id);if(!sr(b)||C===void 0){x.push({id:o.id,label:i(o)});continue}let R=n.markerKind===void 0?void 0:a(o)[n.markerKind],A=s.get(C)??[];A.push({id:o.id,label:i(o),at:b,...typeof R=="string"?{what:R}:{}}),s.set(C,A)}let l=[],h=[];for(let o of d){let b=a(o)[n.outline];if(!Array.isArray(b)||b.length<3||!b.every(sr)){l.push({id:o.id,label:i(o)});continue}let C=n.regionKind===void 0?void 0:a(o)[n.regionKind];h.push({id:o.id,label:i(o),outline:b,center:St(b),depth:y(o.id),markers:s.get(o.id)??[],...typeof C=="string"?{what:C}:{}})}return h.sort((o,b)=>o.depth-b.depth),{regions:h,undrawn:l,strays:x}}var Te=_(De(),1);var L=_(J(),1);function dr({map:e,options:t,implicated:n,flagged:r}){return(0,L.jsxs)("ul",{style:{margin:0,padding:0,listStyle:"none",display:"grid",gap:".25rem"},children:[e.regions.map(a=>{let i=wn(a.id,n,r);return(0,L.jsxs)("li",{"data-graview-pick":a.id,...i?{"data-graview-emphasis":i}:{},style:{display:"flex",flexWrap:"wrap",gap:".5rem",justifyContent:"space-between",minWidth:0,padding:".25rem .4rem",borderRadius:".35rem",background:i==="flagged"?Fn(a.what,i,t.hues):void 0},children:[(0,L.jsx)("span",{style:{minWidth:0,overflowWrap:"anywhere"},children:a.label}),(0,L.jsxs)("span",{style:{opacity:.7,whiteSpace:"nowrap"},children:[a.what?`${a.what} \xB7 `:"",a.markers.length]})]},a.id)}),e.undrawn.map(a=>(0,L.jsxs)("li",{"data-graview-pick":a.id,style:{display:"flex",gap:".5rem",opacity:.7,padding:".25rem .4rem"},children:[(0,L.jsx)("span",{style:{minWidth:0,overflowWrap:"anywhere"},children:a.label}),(0,L.jsx)("span",{style:{whiteSpace:"nowrap"},children:t.undrawnLabel??"not drawn"})]},a.id))]})}var _n=1e3,cr=.022,Ze={minHeight:"1.9rem",padding:".25rem .65rem",borderRadius:".35rem",border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",color:"var(--graview-ink)",font:"inherit",fontSize:"0.9375rem",cursor:"pointer"},wn=(e,t,n)=>{if(n?.includes(e))return"flagged";if(t?.includes(e))return"implicated"},vn=(e,t)=>(e===void 0?void 0:t?.[e])??de(e??"region"),Fn=(e,t,n)=>t==="flagged"?"color-mix(in oklab, var(--graview-warn) 26%, var(--graview-panel))":`color-mix(in oklab, hsl(${vn(e,n)} 52% 48%) 24%, var(--graview-panel))`,gr=(e,t,n)=>t==="flagged"?"var(--graview-warn)":`color-mix(in oklab, hsl(${vn(e,n)} 48% 42%) 78%, var(--graview-ink))`;function Jr(e){let t=e.currentTarget.getBoundingClientRect(),n=r=>Math.round(Math.max(0,Math.min(1,r))*1e3)/1e3;return{x:n(t.width===0?0:(e.clientX-t.left)/t.width),y:n(t.height===0?0:(e.clientY-t.top)/t.height)}}function ur({schema:e,options:t,nodes:n,label:r,fidelity:a,selected:i,implicated:d,flagged:m}){let{store:g}=X(),y=g.graph.allEdges(),c=g.graph.allNodes(),f=n===void 0?void 0:new Set(n.map(v=>v.id)),x=f===void 0?c:c.filter(v=>v.kind!==t.regions||f.has(v.id)),s=yn(x,y,t,e),l=s.regions.length,h=s.regions.reduce((v,O)=>v+O.markers.length,0);if(a==="glyph")return(0,L.jsx)(ye,{label:`${r??"Ground"} \xB7 ${l}`,...s.undrawn.length>0?{meta:`+${s.undrawn.length} undrawn`}:{},selected:i});if(a==="summary")return(0,L.jsx)(te,{title:r??"The plan",subtitle:`${l} drawn \xB7 ${h} standing in them`,children:(0,L.jsx)(dr,{map:s,options:t,...d?{implicated:d}:{},...m?{flagged:m}:{}})});let o=(0,Te.useMemo)(()=>{let v=1/0,O=1/0,G=-1/0,ie=-1/0,se=K=>{K.x<v&&(v=K.x),K.x>G&&(G=K.x),K.y<O&&(O=K.y),K.y>ie&&(ie=K.y)};for(let K of s.regions){for(let ve of K.outline)se(ve);for(let ve of K.markers)se(ve.at)}if(!Number.isFinite(v)||G-v<=0||ie-O<=0)return{x0:0,y0:0,x1:1,y1:1};let ue=Math.max(G-v,ie-O)*.04;return{x0:v-ue,y0:O-ue,x1:G+ue,y1:ie+ue}},[s.regions]),b=(o.x1-o.x0)/(o.y1-o.y0),C=t.aspect??Math.min(3.2,Math.max(.55,b)),R=Math.round(_n/(o.x1-o.x0)),A=Math.round(R*(o.x1-o.x0)),S=Math.round(A/C),k={x:o.x0*R,y:o.y0*R-(S-R*(o.y1-o.y0))/2,w:A,h:S},u=R,E=k.w,M=(d?.length??0)>0||(m?.length??0)>0,B=(0,Te.useRef)(null),{touchable:w,legible:W}=mt(B,{units:k.w,target:E*cr*2}),P=Rn("--graview-font-display","serif"),U=Rn("--graview-font-body","sans-serif"),{named:ne,placed:ae,tagged:ee}=(0,Te.useMemo)(()=>{let v=[],O=E*.012,G=_n*.004,ie=(le,Y)=>!v.some(fe=>fe!==Y&&Ct({x0:le.x0-G,y0:le.y0-G,x1:le.x1+G,y1:le.y1+G},fe)),se=[...s.regions].sort((le,Y)=>En(Y.outline)-En(le.outline)),ue=new Map,K=new Map;for(let le of se){let Y=xt(le.outline),fe=Math.max(0,(Y.bottom-Y.top)*u*.55),$e=null;for(let ke of[.12,.26,.42,.6,.78]){let xe=Y.top+ke*(Y.bottom-Y.top),Re=An(le.outline,xe),bn=Math.max(0,(Re.x1-Re.x0)*R-O*2),me=kt(le.label,{room:bn,height:fe,size:E*.023,floor:E*.015,measure:P});if(me===null)continue;let Ne=Math.max(...me.lines.map(Sr=>P(Sr,me.fontSize))),Ae=me.lines.length*me.fontSize*1.15,Kn=Y.top*u+O+Ae/2,Yn=Y.bottom*u-O-Ae/2,nn=Yn<Kn?(Y.top+Y.bottom)*u/2:Math.min(Math.max(xe*u,Kn),Yn),xn=An(le.outline,nn/u),Sn=xn.x0*R+O;if(Ne>(xn.x1-xn.x0)*R-O*2)continue;let Qn={x0:Sn,y0:nn-Ae/2,x1:Sn+Ne,y1:nn+Ae/2};if(ie(Qn)){v.push(Qn),$e={fitted:me,x:Sn,y:nn};break}}ue.set(le.id,$e?.fitted??null),$e!==null&&K.set(le.id,{x:$e.x,y:$e.y})}let ve=E*.018,Ue=new Map,F=E*.011+E*.004,Un=new Map;for(let le of s.regions)for(let Y of le.markers){let fe={x0:Y.at.x*R-F,y0:Y.at.y*u-F,x1:Y.at.x*R+F,y1:Y.at.y*u+F};Un.set(Y.id,fe),v.push(fe)}for(let le of w?s.regions:[])for(let Y of le.markers){let fe=E*.018,$e=U(Y.label,ve),ke=Y.at.x*R,xe=Y.at.y*u,Re=ve*1.15,bn=[{x:ke+fe,y:xe,anchor:"start"},{x:ke-fe,y:xe,anchor:"end"},{x:ke+fe*.7,y:xe-Re,anchor:"start"},{x:ke-fe*.7,y:xe-Re,anchor:"end"},{x:ke+fe*.7,y:xe+Re,anchor:"start"},{x:ke-fe*.7,y:xe+Re,anchor:"end"},{x:ke,y:xe-Re*1.1,anchor:"start"},{x:ke,y:xe+Re*1.1,anchor:"start"}];for(let me of bn){let Ne=me.anchor==="start"?me.x:me.x-$e,Ae={x0:Ne,y0:me.y-ve*.62,x1:Ne+$e,y1:me.y+ve*.62};if(!(Ne<k.x+4||Ne+$e>k.x+k.w-4)&&!(Ae.y0<k.y+2||Ae.y1>k.y+k.h-2)&&ie(Ae,Un.get(Y.id))){v.push(Ae),Ue.set(Y.id,{at:{x:me.x,y:me.y},anchor:me.anchor,size:ve});break}}}return{named:ue,placed:K,tagged:Ue}},[s.regions,_n,u,w,P,U]),ge=(0,Te.useMemo)(()=>{let v=[];for(let O of s.regions)(ne.get(O.id)?.whole??!1)===!1&&v.push({id:O.id,label:O.label,what:O.what,round:!1});for(let O of s.regions)for(let G of O.markers)(!w||!ee.has(G.id))&&v.push({id:G.id,label:G.label,what:G.what,round:!0});return v},[s.regions,ne,ee,w]),{principal:pe}=X(),[T,$]=(0,Te.useState)(null),V=t.draw!==void 0,p=t.place!==void 0,H=v=>{if(T===null)return;v.stopPropagation();let O=Jr(v);if(T.kind==="marker"){g.apply({name:t.place.act,args:{[t.place.id]:T.id,[t.place.at]:O}},{author:pe,intent:`Placed ${T.label} on the map`}),$(null);return}$({...T,corners:[...T.corners,O]})},D=()=>{T===null||T.kind!=="region"||T.corners.length<3||(g.apply({name:t.draw.act,args:{[t.draw.id]:T.id,[t.draw.outline]:T.corners}},{author:pe,intent:`Drew ${T.label} on the map \u2014 ${T.corners.length} corners`}),$(null))},j=T===null?s.regions.length===0?"Nothing drawn yet. Choose an area below, then click its corners here.":null:T.kind==="marker"?`Click where ${T.label} stands.`:T.corners.length<3?`Click the corners of ${T.label} \u2014 ${3-T.corners.length} more to make an area.`:`${T.corners.length} corners. Keep clicking, or press Done.`;return W?(0,L.jsxs)(te,{title:r??"The plan",subtitle:`${l} drawn \xB7 ${h} standing in them`,...s.undrawn.length>0?{meta:`${s.undrawn.length} ${t.undrawnLabel??"not drawn yet"}`}:{},selected:i,fit:!0,children:[(0,L.jsx)("div",{style:{position:"relative",width:"100%",aspectRatio:`${k.w} / ${k.h}`,overflow:"hidden"},children:(0,L.jsxs)("svg",{ref:B,viewBox:`${k.x} ${k.y} ${k.w} ${k.h}`,width:"100%",height:"100%",preserveAspectRatio:"xMidYMid meet",role:T!==null?"application":w?"group":"img","aria-label":T===null?`${r??"The plan"}: ${l} drawn, ${h} standing in them`:j??"Drawing",onClick:H,"data-testid":"plan-canvas",style:{display:"block",position:"absolute",inset:0,cursor:T===null?void 0:"crosshair",border:"1px dashed color-mix(in oklab, var(--graview-edge) 80%, transparent)",borderRadius:".4rem",backgroundImage:"linear-gradient(color-mix(in oklab, var(--graview-edge) 35%, transparent) 1px, transparent 1px),linear-gradient(90deg, color-mix(in oklab, var(--graview-edge) 35%, transparent) 1px, transparent 1px)",backgroundSize:"10% 10%"},children:[(0,L.jsx)("text",{x:k.x+k.w-E*.028,y:k.y+E*.034,fontSize:E*.022,textAnchor:"middle",fill:"var(--graview-ink)",opacity:.55,children:"N"}),j!==null&&s.regions.length===0?(0,L.jsx)("text",{x:k.x+k.w/2,y:k.y+k.h/2,textAnchor:"middle",dominantBaseline:"middle",fontSize:E*.026,fill:"var(--graview-ink)",opacity:.7,style:{pointerEvents:"none",fontFamily:"var(--graview-font-body)"},children:j}):null,T!==null&&T.kind==="region"&&T.corners.length>0?(0,L.jsxs)("g",{style:{pointerEvents:"none"},children:[(0,L.jsx)("polyline",{points:T.corners.map(v=>`${v.x*R},${v.y*u}`).join(" "),fill:T.corners.length>=3?"color-mix(in oklab, var(--graview-accent) 22%, transparent)":"none",stroke:"var(--graview-accent)",strokeWidth:3,strokeDasharray:"8 6"}),T.corners.map((v,O)=>(0,L.jsx)("circle",{cx:v.x*R,cy:v.y*u,r:E*.008,fill:"var(--graview-accent)"},O))]}):null,s.regions.map(v=>{let O=wn(v.id,d,m),G=M&&O===void 0?.34:1,ie=v.outline.map(se=>`${se.x*R},${se.y*u}`).join(" ");return(0,L.jsx)("g",{"data-graview-pick":v.id,...O?{"data-graview-emphasis":O}:{},role:"button","aria-label":`${v.label}${v.what?`, ${v.what}`:""}, ${v.markers.length} standing in it`,style:{opacity:G,cursor:"pointer"},children:(0,L.jsx)("polygon",{points:ie,fill:Fn(v.what,O,t.hues),stroke:gr(v.what,O,t.hues),strokeWidth:O==="flagged"?5:2.5,strokeLinejoin:"round"})},v.id)}),s.regions.flatMap(v=>v.markers.map(O=>{let G=wn(O.id,d,m),ie=M&&G===void 0?.34:1;return(0,L.jsxs)("g",{...w?{"data-graview-pick":O.id,role:"button","aria-label":`${O.label}${O.what?`, ${O.what}`:""}, in ${v.label}`}:{"aria-hidden":!0},...G?{"data-graview-emphasis":G}:{},style:{opacity:ie,cursor:w?"pointer":"default"},children:[w?(0,L.jsx)("circle",{cx:O.at.x*R,cy:O.at.y*u,r:E*cr,fill:"transparent"}):null,(0,L.jsx)("circle",{cx:O.at.x*R,cy:O.at.y*u,r:E*.011,fill:G==="flagged"?"var(--graview-warn)":`hsl(${vn(O.what,t.hues)} 55% 45%)`,stroke:"var(--graview-panel)",strokeWidth:E*.004}),ee.has(O.id)?(0,L.jsx)("text",{x:ee.get(O.id).at.x,y:ee.get(O.id).at.y,textAnchor:ee.get(O.id).anchor,dominantBaseline:"middle",fontSize:ee.get(O.id).size,fill:"var(--graview-ink)",stroke:"var(--graview-panel)",strokeWidth:Math.max(2,ee.get(O.id).size*.3),paintOrder:"stroke","data-testid":`marker-label-${O.id}`,style:{pointerEvents:"none",fontFamily:"var(--graview-font-body)"},children:O.label}):null]},O.id)})),s.regions.map(v=>{let O=ne.get(v.id),G=ae.get(v.id);if(!O||G===void 0)return null;let ie=wn(v.id,d,m);return(0,L.jsx)("text",{x:G.x,y:G.y-(O.lines.length-1)*O.fontSize*1.15/2,textAnchor:"start",dominantBaseline:"middle",fontSize:O.fontSize,fill:"var(--graview-ink)",opacity:M&&ie===void 0?.34:1,stroke:"var(--graview-panel)",strokeWidth:Math.max(2,O.fontSize*.26),paintOrder:"stroke","data-testid":`region-label-${v.id}`,style:{pointerEvents:"none",fontFamily:"var(--graview-font-display)"},children:O.lines.map((se,ue)=>(0,L.jsx)("tspan",{x:G.x,dy:ue===0?0:O.fontSize*1.15,children:se},se+String(ue)))},`label-${v.id}`)})]})}),ge.length>0?(0,L.jsx)("ul",{"data-testid":"map-key",style:{margin:".5rem 0 0",padding:0,listStyle:"none",display:"flex",flexWrap:"wrap",gap:".2rem .75rem",fontSize:"0.875rem"},children:ge.map(v=>(0,L.jsxs)("li",{"data-graview-pick":v.id,style:{display:"flex",alignItems:"center",gap:".35rem",minWidth:0,minHeight:"max(1.5rem, 24px)",padding:"0 .15rem",cursor:"pointer"},children:[(0,L.jsx)("span",{"aria-hidden":"true",style:{width:v.round?".55rem":".7rem",height:v.round?".55rem":".7rem",flex:"0 0 auto",borderRadius:v.round?"50%":".15rem",background:v.round?`hsl(${vn(v.what,t.hues)} 55% 45%)`:Fn(v.what,void 0,t.hues),border:v.round?void 0:`1px solid ${gr(v.what,void 0,t.hues)}`}}),(0,L.jsx)("span",{style:{minWidth:0,overflowWrap:"anywhere"},children:v.label})]},v.id))}):null,T!==null?(0,L.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:".5rem",marginTop:".5rem",alignItems:"center"},children:[s.regions.length>0&&j!==null?(0,L.jsx)("span",{style:{fontSize:"0.9375rem",opacity:.8,flexBasis:"100%"},"aria-live":"polite",children:j}):null,T.kind==="region"?(0,L.jsxs)("button",{type:"button",onClick:D,disabled:T.corners.length<3,"data-testid":"draw-done",style:{...Ze,background:"var(--graview-accent)",color:"var(--graview-accent-ink)",borderColor:"transparent"},children:["Done \u2014 keep ",T.label]}):null,T.kind==="region"&&T.corners.length>0?(0,L.jsx)("button",{type:"button",onClick:()=>$({...T,corners:T.corners.slice(0,-1)}),style:Ze,children:"Undo a corner"}):null,(0,L.jsx)("button",{type:"button",onClick:()=>$(null),style:Ze,"data-testid":"draw-cancel",children:"Stop"})]}):(0,L.jsxs)(L.Fragment,{children:[V&&s.undrawn.length>0?(0,L.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:".4rem",marginTop:".5rem",alignItems:"center"},children:[(0,L.jsxs)("span",{style:{fontSize:"0.875rem",opacity:.75},children:[t.undrawnLabel??"Not drawn yet",":"]}),s.undrawn.map(v=>(0,L.jsxs)("button",{type:"button",style:Ze,onClick:()=>$({kind:"region",id:v.id,label:v.label,corners:[]}),"data-testid":`draw-${v.id}`,children:["Draw ",v.label]},v.id))]}):null,p&&s.strays.length>0?(0,L.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:".4rem",marginTop:".5rem",alignItems:"center"},children:[(0,L.jsxs)("span",{style:{fontSize:"0.875rem",opacity:.75},children:[t.strayLabel??"Not placed",":"]}),s.strays.map(v=>(0,L.jsxs)("button",{type:"button",style:Ze,onClick:()=>$({kind:"marker",id:v.id,label:v.label}),"data-testid":`place-${v.id}`,children:["Place ",v.label]},v.id))]}):null,t.help!==void 0&&(s.undrawn.length>0||s.strays.length>0)?(0,L.jsx)("p",{style:{margin:".5rem 0 0",fontSize:"0.875rem"},children:(0,L.jsx)("a",{href:t.help.href,"data-testid":"map-help",children:t.help.label})}):null,!V&&(s.undrawn.length>0||s.strays.length>0)?(0,L.jsxs)("p",{style:{margin:".5rem 0 0",fontSize:"0.875rem",opacity:.75},children:[s.undrawn.map(v=>v.label).join(", "),s.undrawn.length>0?` \u2014 ${t.undrawnLabel??"not drawn yet"}. `:"",s.strays.map(v=>v.label).join(", "),s.strays.length>0?` \u2014 ${t.strayLabel??"not placed"}.`:""]}):null]})]}):(0,L.jsx)(te,{title:r??"The plan",subtitle:`${l} drawn \xB7 ${h} standing in them`,selected:i,children:(0,L.jsx)(dr,{map:s,options:t,...d?{implicated:d}:{},...m?{flagged:m}:{}})})}var pr=_(J(),1);function mr(e){function t(n){let{store:r}=X();return(0,pr.jsx)(ur,{schema:r.schema,...n,options:e})}return{name:"plan",requiredRoles:[...lr],options:e,View:t,build(n,r,a){return yn(n,r,e,a)}}}var re=_(J(),1);function Xr(e,t,n){let r=t.flatMap(i=>(i.subject&&i.subject.kinds!=="*"?i.subject.kinds:[null]).map(m=>({name:i.name,title:i.title??i.name,kind:m}))),a=[];for(let i of n){let d={kind:"human",id:"themselves",roles:[i]};for(let m of r){let g=m.kind??void 0,y=On(e,d,m.name,g).ok,c=!y&&On(e,d,m.name,g,void 0,"themselves").ok;a.push({role:i,act:m.name,kind:m.kind,may:y?"yes":c?"self":"no"})}}return{roles:n,acts:r,cells:a}}function Zr({label:e,fidelity:t,mode:n}){let{store:r}=X(),a=r.policy,i=a?.roles??[],d=r.allMutations().filter(f=>!f.derived).map(f=>({name:f.name,...f.title?{title:f.title}:{},...f.subject?{subject:f.subject}:{}})),m=Xr(a,d,i),g=e??"Who may do what";if(!a||i.length===0)return(0,re.jsxs)("div",{"data-testid":"reach-lens",style:{padding:14,color:"var(--graview-ink-muted)",fontSize:"0.875rem"},children:[g,": this installation has no policy, so everyone may do everything."]});if(t==="glyph")return(0,re.jsx)(ye,{label:`${g} \xB7 ${i.length} ${i.length===1?"role":"roles"}`,hue:de("role")});let y=n==="fullscreen",c=f=>f==="yes"?"\u25CF":f==="self"?"\u25D0":"\xB7";return(0,re.jsxs)("div",{"data-testid":"reach-lens",style:{display:"grid",gap:10,padding:y?0:14,borderRadius:"var(--graview-radius, 12px)",background:y?"transparent":"var(--graview-panel)",border:y?"none":"1px solid var(--graview-edge)",color:"var(--graview-ink)",minWidth:0},children:[(0,re.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:10},children:[(0,re.jsx)("span",{style:{fontFamily:"var(--graview-font-display)",fontSize:"1.125rem",fontWeight:600},children:g}),(0,re.jsx)("span",{style:{marginLeft:"auto",fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:"\u25CF may \xB7 \u25D0 on their own record \xB7 read from the policy"})]}),(0,re.jsx)("div",{"data-scroller":!0,style:{overflowX:"auto"},children:(0,re.jsxs)("table",{style:{borderCollapse:"collapse",fontSize:"0.875rem",minWidth:"100%"},children:[(0,re.jsx)("thead",{children:(0,re.jsxs)("tr",{children:[(0,re.jsx)("th",{scope:"col",style:{textAlign:"left",padding:"4px 10px 6px 0",fontWeight:500,color:"var(--graview-ink-faint)",fontSize:"0.75rem",letterSpacing:"0.12em",textTransform:"uppercase"},children:"Role"}),m.acts.map(f=>(0,re.jsxs)("th",{scope:"col",title:f.kind?`${f.title}, on ${nt(rn(r.schema.tryDefinition(f.kind),f.kind))}`:f.title,style:{textAlign:"left",padding:"4px 10px 6px",fontWeight:500,whiteSpace:"nowrap",color:"var(--graview-ink-muted)",fontSize:"0.8125rem"},children:[f.title,f.kind?(0,re.jsxs)("span",{style:{color:"var(--graview-ink-faint)"},children:[" \xB7 ",f.kind]}):null]},`${f.name}|${f.kind??""}`))]})}),(0,re.jsx)("tbody",{children:m.roles.map(f=>(0,re.jsxs)("tr",{children:[(0,re.jsx)("th",{scope:"row",style:{textAlign:"left",padding:"6px 10px 6px 0",fontWeight:600,whiteSpace:"nowrap",borderTop:"1px solid var(--graview-edge)"},children:f}),m.acts.map(x=>{let s=m.cells.find(l=>l.role===f&&l.act===x.name&&l.kind===x.kind);return(0,re.jsx)("td",{"data-graview-reach":s.may,title:`${f} ${s.may==="yes"?"may":s.may==="self"?"may, on their own record,":"may not"} ${x.title.toLowerCase()}`,style:{padding:"6px 10px",textAlign:"center",borderTop:"1px solid var(--graview-edge)",color:s.may==="no"?"var(--graview-ink-faint)":"var(--graview-accent)",fontSize:s.may==="no"?"0.875rem":"0.8125rem"},children:c(s.may)},`${x.name}|${x.kind??""}`)})]},f))})]})})]})}var fr={name:"reach",requiredRoles:[],View:Zr};var Se=_(De(),1);var Z=_(J(),1),yr=["start","end"];function ea(e,t,{pad:n=45,minimum:r=480}={}){if(e.length===0)return{start:0,end:t};let a=Math.min(...e.map(y=>y.start)),i=Math.max(...e.map(y=>y.end)),d=Math.max(0,a-n),m=Math.min(t,i+n),g=r-(m-d);return g>0&&(d=Math.max(0,d-g/2),m=Math.min(t,d+r)),{start:Math.floor(d),end:Math.ceil(m)}}function na(e){let t=[...e].sort((i,d)=>i.start-d.start||i.end-d.end||i.id.localeCompare(d.id)),n=[],r=t.map(i=>{let d=n.findIndex(m=>m<=i.start);return d===-1?(d=n.length,n.push(i.end)):n[d]=i.end,{...i,lane:d,lanes:1}}),a=Math.max(1,n.length);return r.map(i=>({...i,lanes:a}))}var qn=class extends Error{constructor(t,n){super(`The timeline lens needs ${n.join(" and ")} for "${t}". Add them to the lens bindings: { ${t}: { ${n.map(r=>`${r}: "<field name>"`).join(", ")} } }.`),this.name="TimelineBindingError"}};function wr(e,t,n){let r=Be(t[e.kind],n?.tryDefinition(e.kind));if(!r)return null;let a=e,i=n?.tryDefinition(e.kind)?.fields.shape,d=yr.filter(c=>{let f=r[c];return f?i?!(f in i):!(f in a):!0});if(d.length>0)throw new qn(e.kind,d);let m=Number(a[r.start]??Number.NaN),g=Number(a[r.end]??m);if(!Number.isFinite(m))return null;let y=[];if(r.columns){let c=a[r.columns];Array.isArray(c)&&y.push(...c.map(String))}if(r.column){let c=a[r.column];c!=null&&y.push(String(c))}return{id:e.id,kind:e.kind,label:he(n?.tryDefinition(e.kind),e),columnIds:y,start:m,end:Number.isFinite(g)?Math.max(g,m):m}}function ta(e,t){let n=Math.round(t),r=a=>`linear-gradient(hsl(${n} 55% var(--graview-tint-lightness) / ${a}), hsl(${n} 55% var(--graview-tint-lightness) / ${a})), var(--graview-panel)`;return e==="lit"?{border:"1px solid var(--graview-accent)",background:r("calc(var(--graview-tint-alpha) * 1.15)"),color:"var(--graview-ink)",boxShadow:"0 0 16px -4px var(--graview-accent)"}:e==="dimmed"?{border:"1px solid var(--graview-edge)",background:r("calc(var(--graview-tint-alpha) * 0.25)"),color:"var(--graview-ink-muted)"}:{border:`1px solid hsl(${n} 50% var(--graview-tint-lightness) / 0.42)`,background:r("var(--graview-tint-alpha)"),color:"var(--graview-ink)"}}var ra=.045,en=52,vr=4,aa=44,ia=240;function oa({nodes:e,label:t,fidelity:n,mode:r,options:a,schema:i,selectedIds:d=[],implicated:m=[],flagged:g=[]}){let y=new Set([...m,...d]),c=S=>y.size===0?"plain":y.has(S)?"lit":"dimmed",f=new Set(g),x=(e??[]).map(S=>wr(S,a.bindings,i)).filter(S=>S!==null),s=a.hueOf??(S=>de(S.kind));if(n==="glyph")return(0,Z.jsx)(ye,{label:`${t??"Timeline"} \xB7 ${x.length}`,hue:de("timeline")});if(n==="summary")return(0,Z.jsx)(te,{title:t??"Timeline",meta:`${x.length} items`,tone:"muted",children:(0,Z.jsx)(Ee,{max:a.columns.length,items:a.columns.map(S=>({id:S.id,label:`${S.label} ${x.filter(k=>k.columnIds.includes(S.id)).length}`,hue:de(S.id)}))})});let l=a.format??String,h=ea(x,a.extent,{...a.minWindow===void 0?{}:{minimum:a.minWindow}}),o=h.end-h.start,b=S=>(S-h.start)/o*100,C=a.tick??Math.max(60,Math.round(o/8/60)*60),R=[];for(let S=Math.ceil(h.start/C)*C;S<=h.end;S+=C)R.push(S);let A=r==="fullscreen";return(0,Z.jsx)(te,{title:t??"Timeline",meta:`${l(h.start)} \u2013 ${l(h.end)}`,style:{gap:12,...A?{flex:"1 1 auto",minHeight:0,height:"100%"}:{}},children:(0,Z.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",minHeight:0},children:[(0,Z.jsx)(da,{columns:a.columns}),(0,Z.jsxs)("div",{"data-graview-timeline-grid":"",style:{position:"relative",flex:1,minHeight:Math.max(ia,Math.ceil(o/C)*aa)},children:[R.map((S,k)=>(0,Z.jsx)("div",{style:{position:"absolute",left:en-8,right:0,top:k===R.length-1?"calc(100% - 1px)":`${b(S)}%`,height:1,background:"var(--graview-edge)"},children:(0,Z.jsx)("span",{style:{position:"absolute",left:-(en-8),...k===R.length-1?{bottom:2}:{top:-7},width:en-16,textAlign:"right",fontSize:"0.75rem",letterSpacing:"0.06em",color:"var(--graview-ink-faint)"},children:l(S)})},S)),(0,Z.jsx)("div",{style:{position:"absolute",inset:0,left:en,display:"flex",gap:vr},children:a.columns.map(S=>(0,Z.jsx)(ca,{spans:x.filter(k=>k.columnIds.includes(S.id)),window:h,format:l,hue:s,emphasisOf:c,brokenIds:f},S.id))})]})]})})}function sa(){let e=(0,Se.useRef)(null),[t,n]=(0,Se.useState)(new Set);return(0,Se.useLayoutEffect)(()=>{let r=e.current;if(!r)return;let a=[...r.querySelectorAll("[data-graview-span-name]")].filter(i=>i.scrollWidth>i.clientWidth+.5).map(i=>i.getAttribute("data-graview-span-name")).filter(i=>!t.has(i));a.length>0&&n(new Set([...t,...a]))}),(0,Se.useLayoutEffect)(()=>{let r=e.current;if(!r||typeof ResizeObserver>"u")return;let a=Math.round(r.clientWidth),i=new ResizeObserver(()=>{let d=Math.round(r.clientWidth);d!==a&&(a=d,n(new Set))});return i.observe(r),()=>i.disconnect()},[]),{column:e,oneLine:t}}var la=(e,t)=>t===0?e:e.slice(0,t),hr=[0,3,1];function da({columns:e}){let t=(0,Se.useRef)(null),[n,r]=(0,Se.useState)(0);(0,Se.useLayoutEffect)(()=>{let i=t.current;if(!i)return;[...i.children].some(m=>m.scrollWidth>m.clientWidth+.5)&&n<hr.length-1&&r(n+1)}),(0,Se.useLayoutEffect)(()=>{let i=t.current;if(!i||typeof ResizeObserver>"u")return;let d=i.clientWidth,m=new ResizeObserver(()=>{i.clientWidth!==d&&(d=i.clientWidth,r(0))});return m.observe(i),()=>m.disconnect()},[]);let a=hr[n];return(0,Z.jsx)("div",{ref:t,style:{display:"flex",gap:vr,paddingLeft:en,paddingBottom:10},children:e.map(i=>{let d=la(i.label,a);return(0,Z.jsx)("div",{"data-graview-day-head":i.id,title:d===i.label?void 0:i.label,...d===i.label?{}:{"aria-label":i.label},style:{flex:1,minWidth:0,overflow:"hidden",whiteSpace:"nowrap",fontSize:"0.75rem",letterSpacing:a===1?0:"0.18em",textTransform:"uppercase",textAlign:"center",color:"var(--graview-ink-muted)"},children:d},i.id)})})}function ca({spans:e,window:t,format:n,hue:r,emphasisOf:a,brokenIds:i}){let d=t.end-t.start,m=s=>(s-t.start)/d*100,g=s=>(s.end-s.start)/d<ra,y=na(e.filter(s=>!g(s))),c=[...e.filter(g)].sort((s,l)=>s.start-l.start),f=Math.max(1,...y.map(s=>s.lanes)),x=sa();return(0,Z.jsxs)("div",{ref:x.column,"data-graview-day-column":"",style:{position:"relative",flex:1,minWidth:0},children:[y.map(s=>{let l=100/f,h=Math.max(1.6,m(s.end)-m(s.start));return(0,Z.jsx)("div",{"data-graview-span":s.id,"data-graview-pick":s.id,"data-graview-emphasis":a(s.id),"data-graview-flagged":i.has(s.id)?"":void 0,title:`${s.label} \xB7 ${n(s.start)}\u2013${n(s.end)}`,style:{position:"absolute",top:`${m(s.start)}%`,height:`${h}%`,left:`${s.lane*l}%`,width:`${l}%`,padding:"0 2px 2px 0",boxSizing:"border-box"},children:(0,Z.jsx)("div",{"data-graview-span-name":s.id,style:{height:"100%",minHeight:15,borderRadius:6,padding:"3px 6px",fontSize:"0.75rem",lineHeight:1.25,overflow:"hidden",overflowWrap:"normal",wordBreak:"normal",...x.oneLine.has(s.id)?{display:"block",whiteSpace:"nowrap",textOverflow:"ellipsis"}:{display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical"},...ta(a(s.id),r(s)),...i.has(s.id)?{borderLeft:"3px solid var(--graview-warn)",paddingLeft:4}:{}},children:h>=3.4?s.label:null})},s.id)}),c.map(s=>{let l=a(s.id);return(0,Z.jsxs)("div",{"data-graview-span":s.id,"data-graview-pick":s.id,"data-graview-emphasis":l,"data-graview-moment":"",title:`${s.label} \xB7 ${n(s.start)}`,style:{position:"absolute",top:`${m(s.start)}%`,right:0,maxWidth:"100%",boxSizing:"border-box",transform:"translateY(-50%)",display:"flex",alignItems:"center",justifyContent:"flex-end",gap:5,minHeight:24,padding:"0 4px 0 8px",borderRadius:999,background:"linear-gradient(90deg, transparent, var(--graview-ground) 35%)"},children:[(0,Z.jsx)("span",{style:{fontSize:"0.6875rem",letterSpacing:"0.04em",whiteSpace:"nowrap",color:l==="lit"?"var(--graview-accent)":"var(--graview-ink-faint)"},children:n(s.start)}),(0,Z.jsx)("span",{style:{fontSize:"0.75rem",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:l==="dimmed"?"var(--graview-ink-faint)":"var(--graview-ink)"},children:s.label}),(0,Z.jsx)("span",{style:{width:7,height:7,borderRadius:999,flex:"0 0 auto",background:i.has(s.id)?"var(--graview-warn)":l==="dimmed"?"var(--graview-edge)":`hsl(${Math.round(r(s))} 60% var(--graview-tint-lightness))`,boxShadow:i.has(s.id)?"0 0 0 3px var(--graview-warn)":l==="lit"?"0 0 0 3px var(--graview-accent-dim)":l==="dimmed"?void 0:`0 0 8px hsl(${Math.round(r(s))} 60% var(--graview-tint-lightness) / 0.45)`}})]},s.id)})]})}function br(e){function t(n){let{store:r}=X(),a=Object.keys(e.bindings),{nodes:i,bar:d}=Pe(n,{...e.arranging!==void 0?{allow:e.arranging}:{},lensAllows:{group:!1},...e.arrangedBy?{arrangedBy:e.arrangedBy}:{},...a[0]?{kind:(n.nodes??[]).find(g=>a.includes(String(g.kind)))?.kind??a[0]}:{}}),m=(0,Z.jsx)(oa,{schema:r.schema,...n,nodes:i,options:e});return Me(n,r.schema,d?(0,Z.jsxs)("div",{style:{display:"grid",gap:6,height:"100%",minHeight:0,gridTemplateRows:"auto 1fr"},children:[d,m]}):m)}return{name:"timeline",requiredRoles:[...yr],bindings:e.bindings,options:e,View:t,place(n,r){return n.map(a=>wr(a,e.bindings,r)).filter(a=>a!==null)}}}var qe=_(J(),1),xr=new WeakMap;function ga(e){return e===1440?t=>Ke(Math.floor(t/60)*60+Math.round(t%60)):e===24?t=>Ke(Math.floor(t)*60):t=>String(t)}function ua(e){let t=e.options;switch(e.lens){case"timeline":{let n=typeof t.extent=="number"?t.extent:1440;return br({...t,extent:n,format:ga(n)}).View}case"calendar":return Xt({...t,...typeof t.today=="string"?{today:t.today}:{}}).View;case"coverage":return or(t).View;case"board":return Dt(t).View;case"plan":return mr(t).View;case"reach":return fr.View;case"columns":return Zt(t).View;case"blocks":return ma(ut(Array.isArray(t.blocks)?t.blocks:[]),e.as)}}function ma(e,t){return n=>{let r=(0,qe.jsx)(Lt,{blocks:e,slot:"place",view:t,heading:n.mode==="fullscreen"?2:3});return n.fidelity==="glyph"?(0,qe.jsx)("span",{className:"graview-spec-title",children:n.label}):n.mode==="fullscreen"?(0,qe.jsx)("div",{style:{padding:"14px 16px"},children:r}):(0,qe.jsx)(te,{title:n.label??"",children:r})}}function uo(e){let t=xr.get(e);if(!t){let n=ua(e),r=a=>(0,qe.jsx)(n,{...a,label:e.title});xr.set(e,t=r)}return t}export{ga as a,uo as b};
@@ -1,4 +1,4 @@
1
- import{a as he,b as xe,c as be,d as ie,e as I}from"./chunk.XDYAG276.js";import{c as A,e as re}from"./chunk.5AT4O4BN.js";import{a as te}from"./chunk.HV6I74DF.js";import{F as U,M as Z,U as ee,W as ne}from"./chunk.Z56B2JR2.js";import{Fb as Q,M as j,W as J}from"./chunk.HLLWKSZB.js";import{b as C}from"./chunk.AJZBJBMO.js";var w=C(U(),1);var P=C(U(),1),ke=(e,n)=>`graview:last-visit:${n??"anyone"}:${e.join(",")}`;function Pe(e,n,r){let t=new Set;for(let i of e)if(!(i.author.id!==void 0&&i.author.id===r)&&Date.parse(i.at)>n)for(let o of i.writes)t.add(o);return t}function oe(e,n,r){let t=ke(n,r?.id),[i]=(0,P.useState)(()=>{try{let o=globalThis.localStorage?.getItem(t);return o?Number(o):null}catch{return null}});return(0,P.useEffect)(()=>{let o=()=>{if(document.visibilityState==="hidden")try{globalThis.localStorage?.setItem(t,String(Date.now()))}catch{}};return document.addEventListener("visibilitychange",o),window.addEventListener("pagehide",o),()=>{document.removeEventListener("visibilitychange",o),window.removeEventListener("pagehide",o)}},[t]),(0,P.useMemo)(()=>i===null?new Set:Pe(e,i,r?.id),[e,i,r?.id])}function ae(e,n,r){let t=new Set;if(r===void 0)return t;t.add(r);for(let i of[...e.out(r),...e.in(r)])t.add(i.id);for(let i of n)if(i.author.id===r)for(let o of i.primitives)o.op==="add-node"&&t.add(o.node.id);return t}var g=C(Z(),1);function Se(e,n,r={x:0,y:0}){let t=(i,o)=>{let c=A(i,o,n.cell,n.tilt);return{x:n.originX+r.x+c.x,y:n.originY+r.y+c.y}};return[t(e.col,e.row),t(e.col+e.side,e.row),t(e.col+e.side,e.row+e.side),t(e.col,e.row+e.side)]}var B=e=>e.map(n=>`${n.x.toFixed(1)},${n.y.toFixed(1)}`).join(" ");function Ie({frame:e,width:n,height:r,pan:t,pinned:i,close:o,today:c,swallowed:y,chosen:p=[],onFocus:f}){let{selection:u,store:d,scheme:S,principal:x}=ee(),b=ne(),a=(0,w.useMemo)(()=>d.log.all(),[d,b]),m=oe(a,d.schema.kinds,x),$=(0,w.useMemo)(()=>ae(d.graph,a,x?.id),[d,a,x?.id]),se=te(),E=e.city,D=e.nodes.filter(l=>l.plot!==void 0&&Math.round(l.plane)===2),R=E?.cell??0,F=E?.tilt??.5,K=(0,w.useRef)(f);K.current=f;let le=(0,w.useCallback)(l=>!K.current||y?.current?!1:(K.current(l),!0),[y]),X=(0,w.useRef)(new Map),M=new Map;for(let l of D){let O=l.aggregate?.memberIds??[],v=re(d.schema,l.kind),z=s=>v?d.graph.getNode(s)?.[v.field]:void 0,L=O.filter(s=>p.includes(s)),G=`${R}|${F}|${l.plot.col},${l.plot.row},${l.plot.side}|${L.join(",")}|${O.map(s=>`${s}=${String(z(s))}`).join(",")}`,T=X.current.get(l.id);if(T&&T.key===G){M.set(l.id,T);continue}let V={cell:R,originX:0,originY:0,tilt:F},q={x:0,y:0},we=d.schema.tryDefinition(l.kind),ye=s=>{let h=d.graph.getNode(s);return h?J(we,h):s},k=v?v.values.map(()=>[]):[[]],N=v?[...v.tiers]:["waiting"];for(let s of L.length>0?[...L,...O.filter(h=>!L.includes(h))]:O){let h=v?v.values.indexOf(z(s)):0;h>=0?k[h].push(s):(k.length===N.length&&(k.push([]),N.push("waiting")),k[k.length-1].push(s))}let{blocks:pe,rests:ve}=I(l.plot,k,N.map(s=>ie[s])),me=Se(l.plot,V,q),H=v?Le(d.schema,l.kind):void 0;M.set(l.id,{key:G,tile:B(me),rests:ve.map(s=>({count:s.count,at:A(s.col,s.row,R,F)})),buildings:pe.map(s=>{let W=(H?d.graph.getNode(s.id):void 0)?.[H];return{id:s.id,tier:N[s.lane],overdue:typeof W=="string"&&N[s.lane]!=="done"&&W.slice(0,10)<(c??new Date().toISOString().slice(0,10)),name:ye(s.id),width:s.footprint*R,...Ce(s,V,q)}})})}if(X.current=M,!E)return null;let de={position:"absolute",left:0,top:0,pointerEvents:"none",overflow:"visible"},ge=u.join(`
1
+ import{a as he,b as xe,c as be,d as ie,e as I}from"./chunk.XDYAG276.js";import{c as A,e as re}from"./chunk.O2LK2AO7.js";import{a as te}from"./chunk.PAVR5TK5.js";import{$ as ne,G as U,R as Z,Z as ee}from"./chunk.GFF2FB2J.js";import{M as j,W as J,bc as Q}from"./chunk.6V2RG5JG.js";import{b as C}from"./chunk.AJZBJBMO.js";var w=C(U(),1);var P=C(U(),1),ke=(e,n)=>`graview:last-visit:${n??"anyone"}:${e.join(",")}`;function Pe(e,n,r){let t=new Set;for(let i of e)if(!(i.author.id!==void 0&&i.author.id===r)&&Date.parse(i.at)>n)for(let o of i.writes)t.add(o);return t}function oe(e,n,r){let t=ke(n,r?.id),[i]=(0,P.useState)(()=>{try{let o=globalThis.localStorage?.getItem(t);return o?Number(o):null}catch{return null}});return(0,P.useEffect)(()=>{let o=()=>{if(document.visibilityState==="hidden")try{globalThis.localStorage?.setItem(t,String(Date.now()))}catch{}};return document.addEventListener("visibilitychange",o),window.addEventListener("pagehide",o),()=>{document.removeEventListener("visibilitychange",o),window.removeEventListener("pagehide",o)}},[t]),(0,P.useMemo)(()=>i===null?new Set:Pe(e,i,r?.id),[e,i,r?.id])}function ae(e,n,r){let t=new Set;if(r===void 0)return t;t.add(r);for(let i of[...e.out(r),...e.in(r)])t.add(i.id);for(let i of n)if(i.author.id===r)for(let o of i.primitives)o.op==="add-node"&&t.add(o.node.id);return t}var g=C(Z(),1);function Se(e,n,r={x:0,y:0}){let t=(i,o)=>{let c=A(i,o,n.cell,n.tilt);return{x:n.originX+r.x+c.x,y:n.originY+r.y+c.y}};return[t(e.col,e.row),t(e.col+e.side,e.row),t(e.col+e.side,e.row+e.side),t(e.col,e.row+e.side)]}var B=e=>e.map(n=>`${n.x.toFixed(1)},${n.y.toFixed(1)}`).join(" ");function Ie({frame:e,width:n,height:r,pan:t,pinned:i,close:o,today:c,swallowed:y,chosen:p=[],onFocus:f}){let{selection:u,store:d,scheme:S,principal:x}=ee(),b=ne(),a=(0,w.useMemo)(()=>d.log.all(),[d,b]),m=oe(a,d.schema.kinds,x),$=(0,w.useMemo)(()=>ae(d.graph,a,x?.id),[d,a,x?.id]),se=te(),E=e.city,D=e.nodes.filter(l=>l.plot!==void 0&&Math.round(l.plane)===2),R=E?.cell??0,F=E?.tilt??.5,K=(0,w.useRef)(f);K.current=f;let le=(0,w.useCallback)(l=>!K.current||y?.current?!1:(K.current(l),!0),[y]),X=(0,w.useRef)(new Map),M=new Map;for(let l of D){let O=l.aggregate?.memberIds??[],v=re(d.schema,l.kind),z=s=>v?d.graph.getNode(s)?.[v.field]:void 0,L=O.filter(s=>p.includes(s)),G=`${R}|${F}|${l.plot.col},${l.plot.row},${l.plot.side}|${L.join(",")}|${O.map(s=>`${s}=${String(z(s))}`).join(",")}`,T=X.current.get(l.id);if(T&&T.key===G){M.set(l.id,T);continue}let V={cell:R,originX:0,originY:0,tilt:F},q={x:0,y:0},we=d.schema.tryDefinition(l.kind),ye=s=>{let h=d.graph.getNode(s);return h?J(we,h):s},k=v?v.values.map(()=>[]):[[]],N=v?[...v.tiers]:["waiting"];for(let s of L.length>0?[...L,...O.filter(h=>!L.includes(h))]:O){let h=v?v.values.indexOf(z(s)):0;h>=0?k[h].push(s):(k.length===N.length&&(k.push([]),N.push("waiting")),k[k.length-1].push(s))}let{blocks:pe,rests:ve}=I(l.plot,k,N.map(s=>ie[s])),me=Se(l.plot,V,q),H=v?Le(d.schema,l.kind):void 0;M.set(l.id,{key:G,tile:B(me),rests:ve.map(s=>({count:s.count,at:A(s.col,s.row,R,F)})),buildings:pe.map(s=>{let W=(H?d.graph.getNode(s.id):void 0)?.[H];return{id:s.id,tier:N[s.lane],overdue:typeof W=="string"&&N[s.lane]!=="done"&&W.slice(0,10)<(c??new Date().toISOString().slice(0,10)),name:ye(s.id),width:s.footprint*R,...Ce(s,V,q)}})})}if(X.current=M,!E)return null;let de={position:"absolute",left:0,top:0,pointerEvents:"none",overflow:"visible"},ge=u.join(`
2
2
  `),ce=se.join(`
3
3
  `),ue=m?[...m].join(`
4
4
  `):"",fe=$?[...$].join(`
@@ -0,0 +1 @@
1
+ import"./chunk.EYZ7MHBZ.js";import{o as D}from"./chunk.KQT7WAQE.js";import"./chunk.PAVR5TK5.js";import"./chunk.OQDETV4X.js";import"./chunk.3VL5WECB.js";import{a as $}from"./chunk.JH6MU6TX.js";import"./chunk.WAFDCOOG.js";import"./chunk.L4DECHXR.js";import{G as P,R as C}from"./chunk.GFF2FB2J.js";import{Aa as w,Ca as R,Ga as c,Q as S}from"./chunk.6V2RG5JG.js";import{b as k}from"./chunk.AJZBJBMO.js";var m=k(P(),1);var e=k(C(),1),W=[["","Does not repeat"],["day","Daily"],["week","Weekly"],["month","Monthly"],["year","Yearly"]],E=r=>`${r}${r%100>=11&&r%100<=13?"th":["th","st","nd","rd"][r%10]??"th"}`,v={display:"flex",flexWrap:"wrap",gap:"6px 12px",alignItems:"center"};function N({value:r,onChange:d,start:p,label:s,name:l="repeat"}){let f=(0,m.useId)(),a=c(r)?r:void 0,i=typeof p=="string"&&/^\d{4}-\d{2}-\d{2}/.test(p)?p:void 0,u=i?w[new Date(`${i.slice(0,10)}T00:00:00Z`).getUTCDay()]:void 0,o=t=>{let n={...a??{every:"week"},...t};for(let b of Object.keys(n))n[b]===void 0&&delete n[b];d(n)},y=a?.every??"week",g=a?.on??(u?[u]:[]);return(0,e.jsxs)("fieldset",{"data-graview-part":"field","data-graview-field":"repeat","data-graview-repeat":l,style:{display:"grid",gap:8,border:"1px solid var(--graview-edge)",borderRadius:8,padding:"8px 12px",margin:0,minWidth:0},children:[(0,e.jsx)("legend",{"data-graview-part":"label",style:{padding:"0 4px"},children:s}),(0,e.jsxs)("div",{style:v,children:[(0,e.jsx)("label",{htmlFor:`${f}-every`,children:"Repeats"}),(0,e.jsx)("select",{id:`${f}-every`,name:`${l}.every`,value:a?.every??"",onChange:t=>{let n=t.target.value;d(n===""?void 0:{...a?.interval?{interval:a.interval}:{},...a?.until?{until:a.until}:{},every:n})},"data-graview-part":"control",children:W.map(([t,n])=>(0,e.jsx)("option",{value:t,children:n},t))}),a?(0,e.jsxs)("label",{style:v,children:["every",(0,e.jsx)("input",{type:"number",min:1,max:99,name:`${l}.interval`,"aria-label":`Every how many ${y}s`,value:a.interval??1,onChange:t=>o({interval:Number(t.target.value)>1?Math.min(99,Math.round(Number(t.target.value))):void 0}),style:{width:"4.5em"},"data-graview-part":"control"}),y,(a.interval??1)>1?"s":""]}):null]}),a?.every==="week"?(0,e.jsxs)("div",{role:"group","aria-label":"On",style:v,children:[(0,e.jsx)("span",{"aria-hidden":"true",children:"On"}),w.map((t,n)=>(0,e.jsxs)("label",{style:{display:"inline-flex",gap:4,alignItems:"center",minHeight:24},children:[(0,e.jsx)("input",{type:"checkbox",name:`${l}.on`,value:t,checked:g.includes(t),onChange:b=>{let h=w.filter(x=>x===t?b.target.checked:g.includes(x));o({on:h.length===0||h.length===1&&h[0]===u?void 0:h})}}),S(n,"short")]},t))]}):null,a?.every==="month"?(0,e.jsxs)("label",{style:v,children:["On",(0,e.jsxs)("select",{name:`${l}.on`,value:a.on?.[0]===-1?"last":"",onChange:t=>o({on:t.target.value==="last"?[-1]:void 0}),"data-graview-part":"control",children:[(0,e.jsx)("option",{value:"",children:i?`the ${E(Number(i.slice(8,10)))}`:"the same day"}),(0,e.jsx)("option",{value:"last",children:"the last day"})]})]}):null,a?(0,e.jsxs)("label",{style:v,children:["Until",(0,e.jsx)("input",{type:"date",name:`${l}.until`,value:a.until??"",onChange:t=>o({until:t.target.value||void 0}),"data-graview-part":"control"})]}):null,(0,e.jsx)("p",{"aria-live":"polite","data-graview-repeat-said":"",style:{margin:0,color:"var(--graview-ink-dim)",fontSize:"0.8125rem"},children:a?$(i??"",a):"Does not repeat"})]})}function M({nodeId:r,field:d,start:p,value:s,label:l}){let{fields:f,commit:a}=D(r),i=f.find(t=>t.field===R(d)&&t.takesValue&&t.open.length===0),[u,o]=(0,m.useState)(!1),[y,g]=(0,m.useState)(c(s)?s:void 0);return i?u?(0,e.jsxs)("form",{onSubmit:t=>{t.preventDefault(),o(!1),a(i,y??null)},style:{display:"grid",gap:6,marginTop:6},children:[(0,e.jsx)(N,{value:y,onChange:g,start:p,label:l,name:R(d)}),(0,e.jsxs)("div",{style:{display:"flex",gap:8},children:[(0,e.jsx)("button",{type:"submit","data-graview-repeat-keep":d,children:"Keep"}),(0,e.jsx)("button",{type:"button",onClick:()=>o(!1),children:"Cancel"})]})]}):(0,e.jsx)("button",{type:"button","data-graview-repeat-open":d,onClick:()=>(g(c(s)?s:void 0),o(!0)),style:{marginInlineStart:8,fontSize:"0.75rem",padding:"1px 8px",borderRadius:999,minHeight:24},children:c(s)?"Change how it repeats":"Repeat\u2026"}):null}export{M as RepeatEditor,N as RepeatPicker};
@@ -0,0 +1 @@
1
+ import{b as sn,c as on}from"./chunk.UT6642FC.js";import{e as j}from"./chunk.3VL5WECB.js";import{c as J}from"./chunk.WAFDCOOG.js";import{Fb as G,Ib as q,La as B,W as D,X as M,Y as z,Z as Y,_ as nn,ba as en,ca as F,da as _,ub as tn,vb as R}from"./chunk.6V2RG5JG.js";function rn(){return{name:"insight",derive({store:n,nodes:i,kindSelection:t}){let g=[],b=l=>D(n.schema.tryDefinition(l.kind),l);for(let l of i){if([...n.schema.edgeKinds].reduce((y,c)=>y+n.graph.out(l.id,c).length+n.graph.in(l.id,c).length,0)===0){g.push({id:`insight:island:${l.id}`,text:`${b(l)} is connected to nothing yet`,nodeIds:[l.id]});continue}for(let y of n.schema.edgeKinds){let c=n.graph.in(l.id,y).length;if(c<3)continue;let r=[...n.graph.allEdges()].filter(s=>s.kind===y),e=r.length;e>=4&&c/e>.6&&g.push({id:`insight:load:${l.id}:${y}`,text:`${b(l)} ${mn(n,r,y,c)}`,nodeIds:[l.id]})}}for(let l of t){if(n.graph.nodesOfKind(l).length>0)continue;let A=n.schema.definitions.filter(y=>y.kind!==l).filter(y=>Object.values(y.edges).some(c=>c.to!=="*"&&c.to.includes(l))).map(y=>y.plural??`${y.kind}s`);A.length>0&&g.push({id:`insight:gap:${l}`,text:`Nothing here yet, though ${A.join(" and ")} expect to connect to these`,nodeIds:[]})}return{observations:g}}}}function mn(n,i,t,g){let b=new Set(i.map(r=>n.graph.getNode(r.from)?.kind).filter(r=>r!==void 0)),l=b.size===1?[...b][0]:void 0,A=i.length,y=J(n.schema,l??[...b][0]??"",t,"in"),c=r=>l?Y(n.schema,l,r):String(r);return g===A?`${y}: all ${c(g)}`:`${y}: ${g} of the ${c(A)}`}function an(n){let i=new Map;if(n.length===0)return i;let t=n.slice(-512),g=new Set;for(let l of t)l.undoes&&g.add(l.undoes);let b=n[n.length-1].seq;for(let l of t){if(!l.mutation||g.has(l.id))continue;let A=Math.pow(.5,(b-l.seq)/64);i.set(l.mutation.name,(i.get(l.mutation.name)??0)+A)}return i}function dn(n){return 8*(n/(n+1))}var pn=100;function cn(){return{name:"invariant",derive({store:n,selection:i,nodes:t,violations:g}){let b=r=>D(n.schema.tryDefinition(r.kind),r),l=new Set(i),A=g.filter(r=>r.nodeIds.some(e=>l.has(e))||r.subjectId!==void 0&&l.has(r.subjectId)),y=[],c=[];A.forEach((r,e)=>{c.push({id:`violation:${r.invariant}:${e}`,text:r.message,nodeIds:r.nodeIds}),r.repairs.forEach((s,f)=>{y.push({id:`invariant:${r.invariant}:${e}:${f}`,label:s.label,provider:"invariant",mutation:s.mutation,args:s.args??{},open:(s.missing??[]).map(v=>{let u=n.allMutations().find(p=>p.name===s.mutation);if(!u)return{name:v};let a=R(u.input).find(p=>p.name===v),m=a?a.kinds.includes("*")?n.graph.allNodes().map(p=>p.id):a.kinds.flatMap(p=>n.graph.nodesOfKind(p).map($=>$.id)):void 0;return{name:v,shape:j(u.input,v),...a?{kinds:a.kinds}:{},...m?{candidates:m}:{}}}),score:pn-f-(s.missing?.length??0),why:r.message,nodeIds:r.nodeIds,...r.subjectId===void 0?{}:{subjectId:r.subjectId}})})});for(let r of t){let e=n.allInvariants().filter(s=>{if(s.scope==="graph")return!1;let f=s.scope;return f.kind!==r.kind?!1:f.match?f.match(r):!0});e.length!==0&&(A.some(s=>s.subjectId===r.id||s.nodeIds.includes(r.id))||c.push({id:`holds:${r.id}`,text:`${b(r)} holds \u2014 nothing currently breaks ${e.length===1?"it":`any of its ${e.length} rules`}`,nodeIds:[r.id]}))}return{affordances:y,observations:c}}}}var H=40;function un(){return{name:"schema",derive({store:n,selection:i,nodes:t,kindSelection:g,edgeSelection:b,principal:l}){let A=(e,s)=>l!==void 0&&!n.permits({name:e,args:s},l).ok,y=[];if(t.length===0&&b.length>0){for(let e of b){let s=n.graph.getNode(e.from),f=n.graph.getNode(e.to);if(!s||!f)continue;let v=on(n,e);v?.provisional&&y.push({id:`schema:edge:${G}:${e.kind}:${e.from}:${e.to}`,label:"Keep this link",provider:"schema",mutation:G,args:{kind:e.kind,from:e.from,to:e.to},open:[],score:64,why:sn(v),nodeIds:[e.from,e.to]});for(let u of n.allMutations()){let a=(u.connects??[]).includes(e.kind),m=(u.severs??[]).includes(e.kind);if(!a&&!m)continue;let p={},$=[],I=R(u.input);for(let d of I){let S=d.kinds.includes("*")||d.kinds.includes(s.kind),O=d.kinds.includes("*")||d.kinds.includes(f.kind),k=S&&!I.some(P=>P!==d&&(P.kinds.includes(s.kind)||P.kinds.includes("*")));S&&!O?p[d.name]=e.from:O&&!S?p[d.name]=e.to:S&&O&&k?p[d.name]=e.from:$.push({name:d.name,kinds:d.kinds,candidates:[e.from,e.to],shape:j(u.input,d.name)})}for(let d of T(u.input,""))d in p||$.some(S=>S.name===d)||$.push({name:d,shape:j(u.input,d)});$.every(d=>d.optional===!0?!0:d.kinds!==void 0?(d.candidates?.length??0)>0:(d.candidates?.length??0)>0||d.shape!==void 0&&d.shape.type!=="unknown")&&(a&&!m&&$.length===0||y.push({id:`schema:edge:${u.name}:${e.kind}:${e.from}:${e.to}`,label:M(u),provider:"schema",mutation:u.name,args:p,open:$,...u.destructive?{destructive:!0}:{},score:(m?62:58)-$.length,why:`this line is "${J(n.schema,n.graph.getNode(e.from)?.kind??"",e.kind,"out")}"`,nodeIds:[e.from,e.to]}))}}return{affordances:y}}if(t.length===0&&g.length>0){let e=new Set(g),s=[];for(let f of n.allMutations()){if(!(f.creates??[]).some(a=>e.has(a)))continue;let v=[];for(let a of R(f.input)){let m=a.kinds.includes("*")?n.graph.allNodes().map(p=>p.id):a.kinds.flatMap(p=>n.graph.nodesOfKind(p).map($=>$.id));v.push({name:a.name,kinds:a.kinds,candidates:m,shape:j(f.input,a.name),...a.optional?{optional:!0}:{}})}for(let a of T(f.input,""))v.some(m=>m.name===a)||v.push({name:a,shape:j(f.input,a)});if(!v.every(a=>a.optional===!0?!0:a.kinds!==void 0?(a.candidates?.length??0)>0:(a.candidates?.length??0)>0||a.shape!==void 0&&a.shape.type!=="unknown")&&!A(f.name,{})){let a=v.filter(m=>m.optional!==!0&&m.kinds!==void 0&&!m.kinds.includes("*")&&(m.candidates?.length??0)===0);if(a.length>0){let m=[...new Set(a.flatMap(p=>p.kinds??[]))].map(p=>F(_(n.schema.tryDefinition(p),p)));s.push({id:`schema:waits:${f.name}`,text:`"${f.title??f.name}" cannot begin until there is ${m.length===1?m[0]:`${m.slice(0,-1).join(", ")} and ${m[m.length-1]}`}.`,nodeIds:[]})}continue}y.push({id:`schema:add:${f.name}`,label:M(f),provider:"schema",mutation:f.name,args:{},open:v,score:H-v.length,why:`this makes ${(f.creates??[]).filter(a=>e.has(a)).map(a=>F(_(n.schema.tryDefinition(a),a))).join(", ")}`,nodeIds:[]})}return{affordances:y,observations:s}}if(t.length===0)return{};let c=new Set(t.map(e=>e.kind)),r=(e,s,f)=>{let v=[];for(let u of n.graph.allEdges()){if(!s.includes(u.kind))continue;let a=u.from===e?u.to:u.to===e?u.from:null;if(!a)continue;let m=n.graph.getNode(a);m&&(!f.includes("*")&&!f.includes(m.kind)||v.includes(a)||v.push(a))}return v};for(let e of n.allMutations()){let s=e.subject;if(!s||!(s.kinds==="*"?!0:[...c].every(h=>s.kinds.includes(h))))continue;let v=e.derived?.act;if((v==="archive"||v==="merge")&&t.some(h=>B(h))||v==="unarchive"&&!t.some(h=>B(h))||v==="leave-alone"&&t.every(h=>q(n,h.id))||v==="allow-tidying"&&!t.some(h=>q(n,h.id)))continue;let u=t.length===1?t[0].id:null,a=e.severs??[],m=e.connects??[];if(u&&a.length>0&&m.length===0&&r(u,a,["*"]).length===0)continue;let p=[];for(let h of R(e.input)){if(h.name===s.arg)continue;let d=h.kinds.includes("*")?n.graph.allNodes().map(S=>S.id):h.kinds.flatMap(S=>n.graph.nodesOfKind(S).map(O=>O.id));if(u&&m.length>0){let S=new Set(r(u,m,h.kinds));d=d.filter(O=>!S.has(O))}else u&&a.length>0&&(d=r(u,a,h.kinds));p.push({name:h.name,kinds:h.kinds,candidates:d.filter(S=>!i.includes(S)),shape:j(e.input,h.name),...h.optional?{optional:!0}:{}})}for(let h of T(e.input,s.arg))p.some(d=>d.name===h)||p.push({name:h,shape:j(e.input,h)});if(p.length===0&&u){let h=kn(e.input,s.arg);if(h.length>0&&!yn(n,e.name,{[s.arg]:u}))for(let d of h){let S=R(e.input).find(O=>O.name===d);p.push({name:d,optional:!0,...S?{kinds:S.kinds}:{},shape:j(e.input,d)})}}if(!p.every(h=>h.optional===!0?!0:h.kinds!==void 0?(h.candidates?.length??0)>0:(h.candidates?.length??0)>0||h.shape!==void 0&&h.shape.type!=="unknown")&&!A(e.name,u?{[s.arg]:u}:{}))continue;let I=t.map(h=>({[s.arg]:h.id}));p.length===0&&!I.some(h=>n.wouldChange({name:e.name,args:h}))||y.push({id:`schema:${e.name}`,label:t.length>1?`${M(e)} (${t.length})`:M(e),provider:"schema",mutation:e.name,args:I[0]??{},open:p,...e.destructive?{destructive:!0}:{},...e.derived?.act==="archive"||e.derived?.act==="merge"||e.derived?.act==="leave-alone"||e.derived?.act==="allow-tidying"?{setsAside:!0}:{},...a.length>0||m.length>0?{ties:!0}:{},...t.length>1?{batch:I}:{},score:H-p.length,why:t.length>1?`all ${t.length} selected nodes are ${[...c].map(h=>nn(n.schema,h).toLowerCase()).join(" or ")}`:`this is ${F(_(n.schema.tryDefinition(t[0].kind),t[0].kind))}`,nodeIds:t.map(h=>h.id)})}if(t.length===1){let e=t[0];for(let s of n.allMutations()){let f=s.subject,v=s.severs??[],u=s.connects??[];if(!f||v.length===0&&u.length===0)continue;let a=f.kinds==="*"?"*":f.kinds;if(a==="*"||a.includes(e.kind))continue;let m=R(s.input),p=m.find(k=>k.name!==f.arg&&(k.kinds.includes("*")||k.kinds.includes(e.kind)));if(!p)continue;let $=a,I=$.includes("*")?n.graph.allNodes().map(k=>k.id):$.flatMap(k=>n.graph.nodesOfKind(k).map(P=>P.id)),h=new Set(r(e.id,u.length>0?u:v,$)),d=u.length>0?I.filter(k=>!h.has(k)):I.filter(k=>h.has(k));if(d.length===0)continue;let S=[{name:f.arg,kinds:$,candidates:d,shape:j(s.input,f.arg)}];for(let k of m){if(k.name===p.name||k.name===f.arg)continue;let P=k.kinds.includes("*")?n.graph.allNodes().map(N=>N.id):k.kinds.flatMap(N=>n.graph.nodesOfKind(N).map(E=>E.id));S.push({name:k.name,kinds:k.kinds,candidates:P,shape:j(s.input,k.name),...k.optional?{optional:!0}:{}})}for(let k of T(s.input,p.name))k===f.arg||S.some(P=>P.name===k)||S.push({name:k,shape:j(s.input,k)});S.every(k=>k.optional===!0?!0:k.kinds!==void 0?(k.candidates?.length??0)>0:(k.candidates?.length??0)>0||k.shape!==void 0&&k.shape.type!=="unknown")&&y.push({id:`schema:tie:${s.name}:${e.id}`,label:s.fromTheOtherEnd??M(s),provider:"schema",mutation:s.name,args:{[p.name]:e.id},open:S,ties:!0,...s.destructive?{destructive:!0}:{},score:H-S.length+2,why:`${v.length>0?"this one is on":"this one could join"} ${S[0].candidates.length===1?"it":"one of these"}`,nodeIds:[e.id]})}}return{affordances:y}}}}function kn(n,i){let t=n.shape;return t?Object.entries(t).filter(([g,b])=>g!==i&&b.safeParse(void 0).success).map(([g])=>g):[]}function yn(n,i,t){try{return n.preview({name:i,args:t}),!0}catch{return!1}}function T(n,i){let t=n.shape;return t?Object.entries(t).filter(([g,b])=>g!==i&&!b.safeParse(void 0).success).map(([g])=>g):[]}var vn=70,bn=80,Sn=new Set(["id","kind"]);function fn(){return{name:"structure",derive({store:n,nodes:i}){let t=c=>D(n.schema.tryDefinition(c.kind),c);if(i.length<2)return{};let g=[],b=[],l=i.map(c=>c.id);for(let c of n.schema.edgeKinds){let r=wn(i.map(s=>new Set([...n.graph.out(s.id,c).map(f=>f.id),...n.graph.in(s.id,c).map(f=>f.id)])));for(let s of r){let f=n.graph.getNode(s);f&&g.push({id:`shared:${c}:${s}`,text:`all ${i.length} share "${t(f)}" (${z(c).toLowerCase()})`,nodeIds:[...l,s]})}let e=new Map;for(let s of i)for(let f of[...n.graph.out(s.id,c),...n.graph.in(s.id,c)])e.set(f.id,(e.get(f.id)??0)+1);for(let[s,f]of e){if(f!==i.length-1||i.length<3)continue;let v=n.graph.getNode(s);if(!v)continue;let u=i.find(a=>![...n.graph.out(a.id,c),...n.graph.in(a.id,c)].some(m=>m.id===s));if(u){g.push({id:`near-shared:${c}:${s}`,text:`all but "${t(u)}" share "${t(v)}" (${z(c).toLowerCase()})`,nodeIds:[...l,s]});for(let a of n.allMutations()){let m=a.subject;if(!m||m.kinds!=="*"&&!m.kinds.includes(u.kind))continue;let p=An(a.input,v.kind);p&&b.push({id:`structure:join:${a.name}:${u.id}:${s}`,label:`${M(a)}: bring "${t(u)}" in line with the others`,provider:"structure",mutation:a.name,args:{[m.arg]:u.id,[p]:s},open:[],score:vn,why:`every other selected node is connected to "${t(v)}"`,nodeIds:[u.id,s]})}}}}let A=new Set;for(let c of i)for(let r of Object.keys(c))Sn.has(r)||A.add(r);let y=c=>n.schema.definitions.find(r=>r.kind===c);for(let c of[...A].sort()){let r=y(i[0].kind),e=en(r,c).toLowerCase(),s=r?.display?.format?.[c],f=d=>{if(!s)return d;try{return String(s(JSON.parse(d)))}catch{return d}},v=i.map(d=>d[c]),u=new Map;if(v.forEach((d,S)=>{let O=JSON.stringify(d??null),k=u.get(O);k?k.push(i[S]):u.set(O,[i[S]])}),u.size===1){let d=[...u.keys()][0];if(d==="null")continue;g.push({id:`agree:${c}`,text:`all ${i.length} share the ${e} ${f(d)}`,nodeIds:l});continue}if(i.length<3||u.size!==2)continue;let a=[...u.entries()].sort((d,S)=>S[1].length-d[1].length),[m,p]=a[0],[,$]=a[1];if($.length!==1||m==="null")continue;let I=$[0],h=JSON.parse(m);g.push({id:`odd-one-out:${c}`,text:`${p.length} share the ${e} ${f(m)}; "${t(I)}" does not`,nodeIds:l});for(let d of n.allMutations()){let S=d.subject;if(!S||S.kinds!=="*"&&!S.kinds.includes(I.kind))continue;let O=ln(d.input);if(!O||!(c in O))continue;let k={[S.arg]:I.id,[c]:h},P=!0;for(let[N,E]of Object.entries(O)){if(N in k||E.safeParse(void 0).success)continue;let K=I[N];if(K===void 0){P=!1;break}k[N]=K}P&&b.push({id:`structure:align:${d.name}:${c}:${I.id}`,label:`Align the ${e} of "${t(I)}" with the other ${p.length}`,provider:"structure",mutation:d.name,args:k,open:[],score:bn,why:`${p.length} of ${i.length} share the ${e} ${f(m)}`,nodeIds:l})}}return{affordances:b,observations:g}}}}function wn(n){if(n.length===0)return[];let[i,...t]=n;return[...i].filter(g=>t.every(b=>b.has(g))).sort()}function ln(n){return n.shape??null}function An(n,i){let t=ln(n);if(!t)return null;for(let[g]of Object.entries(t)){let b=tn(t[g]);if(b&&(b.includes("*")||b.includes(i)))return g}return null}function $n(){return[cn(),fn(),un(),rn()]}function Zn(n,i,t={}){let g=hn(),b=t.providers??$n(),l=i.map(o=>n.graph.getNode(o)).filter(o=>o!==void 0),A={store:n,selection:i,nodes:l,kindSelection:t.kindSelection??[],edgeSelection:t.edgeSelection??[],violations:n.violations(t.context),context:t.context??{},principal:t.principal??{kind:"human"}},y=[],c=[];for(let o of b){let w=o.derive(A);y.push(...w.affordances??[]),c.push(...w.observations??[])}let r=new Set(n.allMutations().filter(o=>o.pinned).map(o=>o.name)),e=new Set(t.pins?.pinned??[]),s=new Set(t.pins?.unpinned??[]),f=o=>e.has(o.mutation)?"user":r.has(o.mutation)&&!s.has(o.mutation)?"declared":void 0,v=o=>{let w=f(o);return w?{...o,pinned:w}:o},u=new Map;for(let[o,w]of an(n.log.all()))u.set(o,dn(w));let a=o=>o.pinned==="user"?0:o.pinned==="declared"?1:2,m=o=>o.score+(u.get(o.mutation)??0),p=new Map(n.allMutations().map(o=>[o.name,o])),$=new Map,I=o=>{let w=p.get(o.mutation);if(!w)return[];let x=$.get(o.mutation);x||(x=R(w.input).map(L=>L.name),$.set(o.mutation,x));let C=[];for(let L of o.batch??[o.args])for(let U of x){let X=L[U]??o.args[U];typeof X=="string"&&C.push(X)}return C},h=t.focus,d=4,S=o=>o.open.length>0?1:0,O=o=>{if(h===void 0)return d;let w=I(o);return w.length>0?w.includes(h)?k(o,0):d:o.nodeIds.includes(h)||o.subjectId===h?k(o,1):d},k=(o,w)=>o.provider==="invariant"?w:2+S(o),P=o=>o.setsAside?1:0,N=On(y).map(v),E=new Map(N.map((o,w)=>[o,w])),K=N.sort((o,w)=>{let x=Number(o.destructive??!1)-Number(w.destructive??!1);if(x!==0)return x;let C=P(o)-P(w);if(C!==0)return C;let L=O(o)-O(w);return L!==0?L:O(o)<2?E.get(o)-E.get(w):+(w.provider==="invariant")-+(o.provider==="invariant")||a(o)-a(w)||m(w)-m(o)||o.id.localeCompare(w.id)}),Z=t.principal??{kind:"human"},W=[],V=[];for(let o of K){let w=n.permits({name:o.mutation,args:{...o.args,...o.batch?.[0]??{}}},Z);if(w.ok)W.push(o);else{let x=Pn(n,o,Z);if(x==="done")continue;x?W.push(x):V.push({...o,refusal:w.refusal})}}let Q=W.map((o,w)=>({...o,rank:w})),gn=V.map((o,w)=>({...o,rank:W.length+w}));return{affordances:t.limit===void 0?Q:Q.slice(0,t.limit),withheld:gn,observations:In(c),ms:hn()-g}}function On(n){let i=new Map;for(let t of n){let g=[t.mutation,JSON.stringify(t.args),JSON.stringify(t.batch??null)].join("|"),b=i.get(g);(!b||t.score>b.score)&&i.set(g,t)}return[...i.values()]}function In(n){let i=new Map;for(let t of n)i.set(t.text,t);return[...i.values()]}function hn(){return typeof performance<"u"?performance.now():Date.now()}function Vn(n,i,t={},g={}){let b=(i.batch??[i.args]).map(A=>({name:i.mutation,args:{...i.args,...A,...t}})),l=n.allMutations().find(A=>A.name===i.mutation);return n.applyAll(b,{...l?.describe?{}:{intent:i.label},...g.author?{author:g.author}:{}})}function Qn(n,i,t={}){return n.preview({name:i.mutation,args:{...i.args,...t}})}function Pn(n,i,t){let g=n.allMutations().find(r=>r.name===i.mutation)?.subject,b=g!==void 0&&i.args[g.arg]===void 0,l=b?i.open.find(r=>r.name===g.arg):i.open.find(r=>r.name!==g?.arg&&r.candidates);if(!l?.candidates)return;let A=r=>n.permits({name:i.mutation,args:{...i.args,...i.batch?.[0]??{},[l.name]:r}},t).ok,y=l.candidates.filter(A),c=t.id===void 0?void 0:n.graph.getNode(t.id);if(y.length===0){let r=b?g.kinds:"*";return c!==void 0&&(r==="*"||r.includes(c.kind))&&A(c.id)?"done":void 0}return y.length===1&&y[0]===t.id?{...i,args:{...i.args,[l.name]:t.id},open:i.open.filter(r=>r!==l)}:{...i,open:i.open.map(r=>r===l?{...r,candidates:y}:r)}}export{Zn as a,Vn as b,Qn as c};
@@ -0,0 +1 @@
1
+ import{f as U}from"./chunk.JPHNKWTY.js";import{a as _e}from"./chunk.3JNMSOFG.js";import{c as ve,d as Ae,e as Oe}from"./chunk.6XMEU2Q2.js";import{q as Re}from"./chunk.W3S6UXNA.js";import{a as D}from"./chunk.6T2Q6NLO.js";import{a as Se,b as C,d as be}from"./chunk.3VL5WECB.js";import{a as fe}from"./chunk.WAFDCOOG.js";import{Aa as ce,Ba as le,Ea as ue,Ka as H,Na as me,X as W,a as ae,ib as pe,la as oe,lb as he,mb as ye,oa as V,pb as ge,pc as ke,qa as se,sa as de,sb as we,ta as B,vb as I}from"./chunk.6V2RG5JG.js";var N=(t,n,e)=>{(t[n]===void 0||e>t[n])&&(t[n]=e)},J=(t,n,e)=>{(t[n]===void 0||e<t[n])&&(t[n]=e)},G=(t,n)=>{t.format=n,n.includes("int")&&(t.isInt=!0)},xe=(t,n)=>{t.mime=t.mime?t.mime.filter(e=>n.includes(e)):[...n]},Te=(t,n)=>{t.multipleOf??=[],t.multipleOf.includes(n)||t.multipleOf.push(n)},Me=(t,n)=>(t.patterns??=new Set).add(n),Ue={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function P(t){let n={},{def:e,bag:r}=t._zod,i=t._zod.traits.has("$ZodCheck")?[t,...e.checks??[]]:e.checks??[];for(let a of i){let o=a._zod.def;switch(o.check){case"greater_than":N(n,o.inclusive?"minimum":"exclusiveMinimum",o.value);break;case"less_than":J(n,o.inclusive?"maximum":"exclusiveMaximum",o.value);break;case"multiple_of":Te(n,o.value);break;case"number_format":{G(n,o.format);let c=Ue[o.format];c&&(N(n,"minimum",c[0]),J(n,"maximum",c[1]));break}case"bigint_format":G(n,o.format);break;case"min_length":case"min_size":N(n,"minimum",o.minimum);break;case"max_length":case"max_size":J(n,"maximum",o.maximum);break;case"length_equals":N(n,"minimum",o.length),J(n,"maximum",o.length);break;case"size_equals":N(n,"minimum",o.size),J(n,"maximum",o.size);break;case"string_format":G(n,o.format),o.pattern&&Me(n,o.pattern),(o.format==="base64"||o.format==="base64url")&&(n.contentEncoding=o.format),(o.local||o.precision===-1)&&(n.laxFormat=!0);break;case"mime_type":xe(n,o.mime);break}}r.minimum!==void 0&&N(n,"minimum",r.minimum),r.exclusiveMinimum!==void 0&&N(n,"exclusiveMinimum",r.exclusiveMinimum),r.maximum!==void 0&&J(n,"maximum",r.maximum),r.exclusiveMaximum!==void 0&&J(n,"exclusiveMaximum",r.exclusiveMaximum),r.multipleOf!==void 0&&Te(n,r.multipleOf),r.format!==void 0&&(n.format??=r.format,r.format.includes("int")&&(n.isInt=!0)),r.mime&&xe(n,r.mime);for(let a of r.patterns??[])Me(n,a);return n}var Ge={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""};function z(t){let n=t._zod.def;return n.type==="pipe"&&n.in._zod.traits.has("$ZodTransform")?z(n.out):n.type==="catch"?z(n.innerType):t._zod.optin}var Ke=new Set(["promise","optional","nonoptional","nullable","readonly","default","prefault","catch"]);function A(t,n=new Set){if(n.has(t))return!1;n.add(t);let e=t._zod.def,r=e.type;return r==="transform"?!0:r==="array"?A(e.element,n):r==="set"?A(e.valueType,n):r==="lazy"?A(e.getter(),n):Ke.has(r)?A(e.innerType,n):r==="intersection"?A(e.left,n)||A(e.right,n):r==="record"||r==="map"?A(e.keyType,n)||A(e.valueType,n):r==="pipe"?t._zod.traits.has("$ZodCodec")||A(e.in,n)||A(e.out,n):r==="object"?Object.values(e.shape).some(i=>A(i,n)):r==="union"?e.options.some(i=>A(i,n)):r==="tuple"?e.items.some(i=>A(i,n))||(e.rest?A(e.rest,n):!1):!1}function Ze(t){let n=Object.values(t).filter(e=>typeof e=="number");return Object.entries(t).filter(([e])=>n.indexOf(+e)===-1).map(([,e])=>e)}function Je(t){let n=t.anyOf;if(!Array.isArray(n)||n.length===0||t.type!==void 0)return;let e=[];for(let r of n){if(!r||typeof r!="object")return;Je(r);let i=Object.keys(r);if(i.length!==1||i[0]!=="type")return;for(let a of[r.type].flat()){if(typeof a!="string")return;e.includes(a)||e.push(a)}}delete t.anyOf,t.type=e.length===1?e[0]:e}var De=new Set(["type","properties","required","additionalProperties"]),$e=t=>{let n=t.additionalProperties;return n&&typeof n=="object"&&Object.keys(n).length?n:null},Ne=(t,n)=>JSON.stringify(t)===JSON.stringify(n);function K(t){for(let i of t){if(typeof i!="object"||i.type!=="object")return null;for(let a in i)if(!De.has(a))return null}let n={},e=new Set;for(let i of t){for(let a in i.properties){if(Object.prototype.hasOwnProperty.call(n,a))continue;let o=[];for(let c of t){let s=c.properties?.[a]??$e(c);s&&!o.some(p=>Ne(p,s))&&o.push(s)}n[a]=o.length===1?o[0]:K(o)??{allOf:o}}for(let a of i.required??[])e.add(a)}let r={type:"object",properties:n};if(e.size&&(r.required=[...e]),t.every(i=>i.additionalProperties===!1))r.additionalProperties=!1;else{let i=[];for(let a of t){let o=$e(a);o&&!i.some(c=>Ne(c,o))&&i.push(o)}i.length===1?r.additionalProperties=i[0]:i.length>1&&(r.additionalProperties={allOf:i})}return r}function Ye(t){let n=t.allOf;if(!Array.isArray(n)||n.length<2)return;for(let i of De)if(i in t)return;let e=n.filter(i=>Array.isArray(i.oneOf)||Array.isArray(i.anyOf)),r;if(!e.length)r=K(n);else{let i=e[0],a=Array.isArray(i.oneOf)?"oneOf":"anyOf";if(Object.keys(i).length!==1)return;let o=n.filter(s=>s!==i),c=i[a].map(s=>K([...o,s]));if(c.some(s=>!s))return;r={[a]:c}}r&&(delete t.allOf,Object.assign(t,r))}function Pe(t){let n=t;for(let u of["anyOf","oneOf"]){let f=n[u];if(!Array.isArray(f))continue;let k=f.map(Pe);k.some((g,l)=>g!==f[l])&&(n={...n,[u]:k})}let e=[n.type].flat(),r=!e.includes("string")&&e.some(u=>u==="number"||u==="integer"),i=n.enum??(n.const!==void 0?[n.const]:void 0);if(!r&&!i?.some(u=>typeof u=="number"))return n;let{minimum:a,maximum:o,exclusiveMinimum:c,exclusiveMaximum:s,multipleOf:p,format:h,id:S,...y}=n;return y.enum?y.enum=y.enum.map(u=>typeof u=="number"?String(u):u):typeof y.const=="number"&&(y.const=String(y.const)),r&&(y.type="string",i||(y.pattern=e.includes("number")?"^-?\\d+(?:\\.\\d+)?$":"^-?\\d+$")),y}var L=class{constructor(n,e){this.override=n;this.refs=e}done=new Map;path=[];cyclic=new Map;write(n,e=!1){let r=this.refs.get(n);if(r!==void 0&&!e)return{$ref:r};if(this.path.includes(n))return this.cyclic.has(n)||this.cyclic.set(n,""),{};let i=this.done.get(n);if(i)return i;this.path.push(n);try{let a=this.written(n);return this.done.set(n,a),a}finally{this.path.pop()}}written(n){let e={},r,i=n._zod.toJSONSchema?.();i?Object.assign(e,i):r=this.process(n,e);let a=ae.get(n);if(a)for(let c of Object.keys(a))e[c]=a[c];A(n)&&(delete e.examples,delete e.default),"_prefault"in e&&(e.default??=e._prefault,delete e._prefault);let o=e;if(r){let c=this.write(r);o={...e};for(let s of Object.keys(c))s in e||(o[s]=c[s])}return this.override({zodSchema:n,jsonSchema:o}),Je(o),n._zod.def.type==="intersection"&&Ye(o),o}process(n,e){let r=n._zod.def;switch(r.type){case"string":{e.type="string";let{minimum:i,maximum:a,format:o,patterns:c,contentEncoding:s,laxFormat:p}=P(n);if(typeof i=="number"&&(e.minLength=i),typeof a=="number"&&(e.maxLength=a),o&&(e.format=Ge[o]??o,(e.format===""||o==="time"||p)&&delete e.format),s&&(e.contentEncoding=s),c&&c.size>0){let h=[...c];h.length===1?e.pattern=h[0].source:e.allOf=h.map(S=>({pattern:S.source}))}return}case"number":{let{minimum:i,maximum:a,multipleOf:o,exclusiveMinimum:c,exclusiveMaximum:s,isInt:p}=P(n);if(e.type=p?"integer":"number",typeof c=="number"&&c>=(i??Number.NEGATIVE_INFINITY)?e.exclusiveMinimum=c:typeof i=="number"&&(e.minimum=i),typeof s=="number"&&s<=(a??Number.POSITIVE_INFINITY)?e.exclusiveMaximum=s:typeof a=="number"&&(e.maximum=a),o){let[h,...S]=new Set(o.filter(y=>Number.isFinite(y)&&y!==0).map(Math.abs));h!==void 0&&(e.multipleOf=h),S.length&&(e.allOf=[...e.allOf??[],...S.map(y=>({multipleOf:y}))])}return}case"boolean":case"success":e.type="boolean";return;case"null":e.type="null";return;case"never":e.not={};return;case"enum":{let i=Ze(r.entries);i.length===0?e.not={}:(i.every(a=>typeof a=="number")&&(e.type="number"),i.every(a=>typeof a=="string")&&(e.type="string"),e.enum=i);return}case"literal":{let i=r.values.filter(a=>a!==void 0).map(a=>typeof a=="bigint"?Number(a):a);if(r.values.length===0)e.not={};else if(i.length===1)e.type=i[0]===null?"null":typeof i[0],e.const=i[0];else if(i.length>1){for(let a of["number","string","boolean"])i.every(o=>typeof o===a)&&(e.type=a);i.every(a=>a===null)&&(e.type="null"),e.enum=i}return}case"template_literal":e.type="string",e.pattern=n._zod.pattern.source;return;case"file":{e.type="string",e.format="binary",e.contentEncoding="binary";let{minimum:i,maximum:a,mime:o}=P(n);i!==void 0&&(e.minLength=i),a!==void 0&&(e.maxLength=a),o&&(o.length===0?e.not={}:o.length===1?e.contentMediaType=o[0]:e.anyOf=o.map(c=>({contentMediaType:c})));return}case"array":{let{minimum:i,maximum:a}=P(n);typeof i=="number"&&(e.minItems=i),typeof a=="number"&&(e.maxItems=a),e.type="array",e.items=this.write(r.element);return}case"object":{let i=r.shape;e.type="object";let a={};e.properties=a;for(let c in i)Object.defineProperty(a,c,{value:this.write(i[c]),writable:!0,enumerable:!0,configurable:!0});let o=Object.keys(i).filter(c=>z(i[c])===void 0);o.length>0&&(e.required=o),r.catchall?._zod.def.type==="never"?e.additionalProperties=!1:r.catchall&&(e.additionalProperties=this.write(r.catchall));return}case"union":e[r.inclusive===!1?"oneOf":"anyOf"]=r.options.map(i=>this.write(i));return;case"intersection":{let i=c=>"allOf"in c&&Object.keys(c).length===1,a=this.write(r.left),o=this.write(r.right);e.allOf=[...i(a)?a.allOf:[a],...i(o)?o.allOf:[o]];return}case"tuple":{let i=r.items;e.type="array",e.prefixItems=i.map(s=>this.write(s)),r.rest?e.items=this.write(r.rest):e.items=!1;let a=i.length;for(;a>0&&z(i[a-1])!==void 0;)a-=1;a>0&&(e.minItems=a),r.rest||(e.maxItems=i.length);let{minimum:o,maximum:c}=P(n);typeof o=="number"&&(e.minItems=o),typeof c=="number"&&(e.maxItems=c);return}case"record":{let i=r.keyType;e.type="object";let a=P(i).patterns;if(r.mode==="loose"&&a&&a.size>0){let c=this.write(r.valueType),s={};for(let p of a)s[p.source]=c;e.patternProperties=s}else e.propertyNames=Pe(this.write(i)),e.additionalProperties=this.write(r.valueType);let o=i._zod.values;if(o&&!r.partial&&z(r.valueType)===void 0){let c=[...o].filter(s=>typeof s=="string"||typeof s=="number");c.length>0&&(e.required=c.map(String))}return}case"nullable":e.anyOf=[this.write(r.innerType),{type:"null"}];return;case"default":case"prefault":{let i=r.defaultValue,a,o=!1,c=JSON.stringify(i,(s,p)=>typeof p=="bigint"?(o=!0,null):p);return!o&&c!==void 0&&(a=JSON.parse(c)),o||(e[r.type==="default"?"default":"_prefault"]=a),r.innerType}case"catch":{try{e.default=r.catchValue(void 0)}catch{}return r.innerType}case"readonly":return e.readOnly=!0,r.innerType;case"pipe":return r.in._zod.traits.has("$ZodTransform")?r.out:r.in;case"lazy":return n._zod.innerType;case"optional":case"nonoptional":case"promise":return r.innerType;default:return}}};function Ee(t,n=()=>{}){let e=t,r=new L(n,new Map),i=r.write(e,!0);if(r.cyclic.size>0){let a=new Map,o=0,c=[];for(let p of r.cyclic.keys())if(p===e)a.set(p,"#");else{let h=`__schema${o++}`;a.set(p,`#/$defs/${h}`),c.push([p,h])}r=new L(n,a),i=r.write(e,!0);let s={};for(let[p,h]of c)s[h]=r.write(p,!0);c.length>0&&(i={...i,$defs:s})}return JSON.parse(JSON.stringify({$schema:"https://json-schema.org/draft/2020-12/schema",...i}))}function ze(t){return Ee(t,en)}var Xe={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string"},Qe={phone:"A phone number as it is written, like +1 555 123 4567 or 020 7946 0958 ext. 12.",place:"An address or a place's name, as a person would search a map for it.",duration:"A length of time in whole minutes: 90 is 1 h 30 min."};function en(t){oe(t.zodSchema)&&(t.jsonSchema["x-graview-app-link"]=!0);let n=de(t.zodSchema);if(n&&(t.jsonSchema.type==="string"||t.jsonSchema.type==="array")){t.jsonSchema["x-graview-linked"]={address:n.address,kinds:[...n.kinds],cardinality:n.cardinality};let s=n.kinds.join(" or "),p=`${n.cardinality==="many"?"Records":"A record"}: a ${s} in the app ${n.address}, as "${n.kinds[0]}:<id>" \u2014 an id found there with find_linked. Linking never changes that app.`,h=t.jsonSchema.description;typeof h=="string"&&h.includes(p)||(t.jsonSchema.description=`${typeof h=="string"&&h?`${h.replace(/\.?$/,".")} `:""}${p}`)}if(ue(t.zodSchema)&&(t.jsonSchema["x-graview-repeat"]=!0,!t.jsonSchema.type&&!t.jsonSchema.anyOf&&!t.jsonSchema.oneOf&&Object.assign(t.jsonSchema,nn())),fe(t.zodSchema)){t.jsonSchema.contentMediaType="text/markdown";let s=t.jsonSchema.description;typeof s=="string"&&s.endsWith("Written in Markdown.")||(t.jsonSchema.description=`${typeof s=="string"&&s?`${s.replace(/\.?$/,".")} `:""}Written in Markdown.`)}let e=we(t.zodSchema);if(e){let s=t.jsonSchema;s["x-graview-type"]=e,e==="duration"&&(s["x-graview-unit"]="minutes"),s.description??=Qe[e]}let r=ge(t.zodSchema,!1);if(r){let s=Se(r);t.jsonSchema["x-graview-format"]=s.format??"unit",s.currency&&(t.jsonSchema["x-graview-currency"]=s.currency),s.unit&&s.format!=="money"&&(t.jsonSchema["x-graview-unit"]=s.unit);let p=t.jsonSchema.description;t.jsonSchema.description=typeof p=="string"&&p.length>0?`${p} ${C(s)}`:C(s)}let i=t.zodSchema._zod?.def;if(!i||i.type!=="string"||typeof i.format!="string"||i.format==="regex")return;let a=t.jsonSchema,o=(i.checks??[]).map(s=>s._zod?.def).filter(s=>s?.format==="regex"&&s.pattern instanceof RegExp).map(s=>s.pattern.source);delete a.pattern;let c=a.allOf;Array.isArray(c)&&c.every(s=>typeof s=="object"&&s!==null&&Object.keys(s).length===1&&"pattern"in s)&&delete a.allOf,a.format=Xe[i.format]??i.format,o.length===1?a.pattern=o[0]:o.length>1&&(a.allOf=o.map(s=>({pattern:s})))}function Z(t){let n=I(t.input),e=ze(t.input),r=e.properties??{};if(he(t)){let i=t.creates.join(" | ");r.id={type:"string",minLength:1,description:`Optional: the id for the ${i} this makes. Refused if the graph already has it; left out, one is minted from the label.`},e.properties=r}ye(t)&&(e.additionalProperties=!1);for(let i of n){let a=r[i.name];if(!a)continue;let o=i.kinds.includes("*")?"any node kind":i.kinds.join(" | ");a.description=[a.description,`Id of a node (${o}).`].filter(Boolean).join(" ")}return{name:t.name,...t.title===void 0?{}:{title:t.title},description:t.description??t.title??t.name,inputSchema:e,nodeRefs:n}}function nn(){let t={type:"string",pattern:"^\\d{4}-\\d{2}-\\d{2}$"},n=(e,r)=>({type:"integer",minimum:e,maximum:r});return{type:"object",description:'How the date beside it repeats; the date is the first occurrence. "on" is weekdays for "week", days of the month (-1 the last) for "month".',properties:{every:{type:"string",enum:[...le]},interval:n(1,99),on:{type:"array",minItems:1,maxItems:31,items:{anyOf:[{type:"string",enum:[...ce]},n(-1,31)]}},until:t,count:n(1,1e3),except:{type:"array",maxItems:500,items:t},continues:{type:"string",maxLength:200}},required:["every"],additionalProperties:!1}}function je(t){let n=new Set;for(let e=t;e;e=e.onBehalfOf)e.id!==void 0&&n.add(`${e.kind}:${e.id}`);return n}function F(t,n){let e=je(n),r=h=>{if(h.kind==="rule")return!1;let S=je(h);if(S.size===0)return!1;for(let y of S)if(e.has(y))return!1;return!0},i,a=()=>{if(i)return i;i=new Map;for(let h of t.log.live()){if(h.undoes!==void 0)continue;let S=r(h.author)?h.author:void 0;for(let y of h.primitives){y.op==="remove-node"&&i.delete(y.node.id);let u=y.op==="add-node"?y.node.id:y.op==="patch-node"?y.id:void 0;if(u===void 0)continue;let f=y.op==="add-node"?Object.keys(y.node):Object.keys(y.after),k=i.get(u);(y.op==="add-node"||!k)&&i.set(u,k=new Map);for(let g of f)g==="id"||g==="kind"||(S?k.set(g,S):k.delete(g))}}return i},o=t.schema,c=new Map,s=(h,S)=>{let y=`${h}\0${S}`,u=c.get(y);if(u===void 0){let f=o.tryDefinition(h)?.fields?.shape;u=f!==void 0&&S in f&&be(f[S]).type==="text",c.set(y,u)}return u},p=h=>t.graph.getNode(h)?.kind;return{prose:s,say:h=>H(h,{graph:t.graph,schema:o}),fieldBy(h,S){let y=p(h);if(!(y===void 0||!s(y,S)))return a().get(h)?.get(S)},recordBy(h){let S=p(h),y=a().get(h);if(S===void 0||!y)return;let u;for(let[f,k]of y)s(S,f)&&(u=k);return u}}}var Y=(t,n,e)=>({untrusted:!0,authoredBy:e.say(n),text:t}),tn="the host's ranker";function He(t,n){return{...t,hits:t.hits.map(e=>{if(e.about!=="node")return e;e.why.by==="meaning"&&e.why.matched!==void 0&&(e={...e,why:{...e.why,matched:{untrusted:!0,authoredBy:tn,text:e.why.matched}}});let r=n.recordBy(e.id);if(!r)return e;let i=n.prose(e.kind,e.why.field)?n.fieldBy(e.id,e.why.field):r;return{...e,label:Y(e.label,r,n),...e.apart!==void 0?{apart:Y(e.apart,r,n)}:{},why:i?{...e.why,fragment:Y(e.why.fragment,i,n)}:e.why}})}}var q=t=>{let n;return()=>n??=t().catch(e=>{throw n=void 0,e})},rn=q(()=>import("./chunk.SOD3PBJM.js")),an=()=>import("./chunk.DZRTOURR.js").catch(()=>{}),on=async()=>{(await an())?.judgeWithLines()},j=q(()=>import("./chunk.OXQMNIRO.js")),sn=q(()=>import("./chunk.4HP7UWA2.js")),dn=q(()=>import("./chunk.2XAONC66.js")),cn=t=>t.definitions.some(n=>B(n).size>0),Ie=t=>({value:V(t),label:t.label,...t.describe?{describe:t.describe}:{},...t.card?{card:t.card}:{},fields:t.fields,...t.app?{app:t.app}:{}});async function ln(t,n,e,r){let i=String(e.relation??""),[a,o]=i.includes(".")?i.split(".",2):[void 0,i],c=t.schema.definitions.flatMap(g=>[...B(g)].map(([l,d])=>({kind:g.kind,name:l,relation:d}))),s=c.filter(g=>g.name===o&&(a===void 0||g.kind===a));if(s.length!==1){let g=c.map(l=>`${l.kind}.${l.name}`).join(", ")||"none";return{ok:!1,error:`${s.length===0?`No relation to another app is called "${i}"`:`"${i}" names a relation of several kinds`}. The relations to other apps are: ${g}.`}}let{kind:p,name:h,relation:S}=s[0];if(!r)return{ok:!1,error:`This seat cannot read ${S.address}: its host reads no other app's records. Nothing was changed.`};let y={kind:n.kind,...n.id===void 0?{}:{id:n.id},...n.roles?{roles:n.roles}:{}},u=typeof e.of=="string"?e.of:void 0;if(u!==void 0){let g=t.graph.getNode(u);if(!g||g.kind!==p)return{ok:!1,error:`No ${p} "${u}".`};let l=se(g[h],S),d=await Promise.all(l.map(m=>Promise.resolve().then(()=>r.resolve(m,y)).catch(()=>null)));return{ok:!0,data:{relation:`${p}.${h}`,app:S.address,records:d.map((m,w)=>m===null?{value:V(l[w]),missing:!0}:"denied"in m?{denied:!0,said:"linked record (no access)"}:Ie(m))},reads:[u]}}let f=typeof e.limit=="number"&&e.limit>0?Math.min(e.limit,20):20,k=await Promise.resolve().then(()=>r.find({address:S.address,kinds:S.kinds,query:String(e.query??""),limit:f},y)).catch(()=>[]);return Array.isArray(k)?{ok:!0,data:{relation:`${p}.${h}`,app:S.address,records:k.map(Ie),link:`edit-${p} with ${h} set to a record's value`}}:{ok:!0,data:{relation:`${p}.${h}`,app:S.address,denied:!0,said:"linked record (no access)"}}}var R=t=>({title:t,readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1}),Le={description:'Which records: false (the default) the live ones, true only the archived ones, "all" both. An archived record is set aside, not gone: unarchive-<kind> brings it back.',anyOf:[{type:"boolean"},{type:"string",enum:["all"]}]},X={type:"number",description:"Where the page starts; 0 when unsaid."},ne=[{name:"search_graph",title:"Find by name",description:"Find things by name: records whose name or readable fields carry the words, and the kinds, places and rules the words name \u2014 each with why it matched. Reach for this before get_graph when you know what something is called. Words match the start of words, case and accents aside; key:value tokens narrow as a list's filter does (done:false, is:any for past records, kind:<kind>). Pass subject (a node id) to get the acts you may run on it as hits too. When few records match exactly, records with a near word follow \u2014 a typo, another form of the word, a meaning \u2014 each with near: true and why.matched, the record's own word that answered.",inputSchema:{type:"object",properties:{query:{type:"string",description:"Words, with optional key:value conditions."},limit:{type:"number",description:"Most hits to return; at most 20."},subject:{type:"string",description:"A node id whose acts to include."},archived:Le},required:["query"],additionalProperties:!1},mutating:!1,annotations:R("Find by name")},{name:"get_graph",title:"Read the graph",description:"Read the graph, 25 nodes a page: their fields, the edges out of them, and how many more. Start here when you need the shape of the domain rather than one thing in it.",inputSchema:{type:"object",properties:{offset:X,archived:Le},additionalProperties:!1},mutating:!1,annotations:R("Read the graph")},{name:"get_node",title:"Read one node",description:"Read one node: its fields, its links (id, kind and label, 20 each way a page), the violations that implicate it, and its computed values: read-only fields worked out from what you can see, which no act sets. Use this to check a thing before you change it.",inputSchema:{type:"object",properties:{id:{type:"string",description:"A node's id, or its name."},offset:X},required:["id"],additionalProperties:!1},mutating:!1,annotations:R("Read one node")},{name:"get_violations",title:"List the problems",description:"List the invariant violations the graph currently has, 20 a page, with the repairs that would resolve each one. Read this before proposing work: a rule that is already broken is more urgent than anything you could add.",inputSchema:{type:"object",properties:{offset:X,context:{type:"object",description:"Evaluation context, e.g. { weekStart }."}},additionalProperties:!1},mutating:!1,annotations:R("List the problems")},{name:"get_affordances",title:"Ask what can be done",description:"Ask what can legally be done with a selection, ranked. Prefer these over composing a mutation by hand: they are derived from the schema, the invariants and the shape of the graph, so they cannot name an action that does not exist.",inputSchema:{type:"object",properties:{selection:{type:"array",items:{type:"string"},description:"Node ids."},context:{type:"object"}},required:["selection"],additionalProperties:!1},mutating:!1,annotations:R("Ask what can be done")},{name:"describe_place",title:"Say what a place shows",description:`Say what one place of the app shows you, as a person in your seat would see it: its headings, its figures as drawn, its lists with each record's title and what its card or row says, the headings a list is grouped under, what an empty list says, and any block that could not be worked out. Pass a place's slug ("home", a lens's address like "the-offers", a kind's like "offers") or a record's id, and width 390 for a phone. Use it after a change to check what somebody now sees, instead of guessing.`,inputSchema:{type:"object",properties:{place:{type:"string",description:`"home", a place's slug, or a record's id.`},width:{type:"number",description:"The screen's width in CSS pixels; 390 is a phone, 1440 when unsaid."}},required:["place"],additionalProperties:!1},mutating:!1,annotations:R("Say what a place shows")},{name:"preview_mutation",title:"Try an act without applying it",description:"Try a mutation without applying it: get back the diff it would produce and any invariant it would break. Do this when you are unsure, rather than applying and undoing.",inputSchema:{type:"object",properties:{mutation:{type:"string"},args:{type:"object"}},required:["mutation","args"],additionalProperties:!1},mutating:!1,annotations:R("Try an act without applying it")},{name:"undo_batch",title:"Undo a batch",description:"Undo one batch of operations. Fails, naming the blocking operation, when a later operation read what it wrote.",inputSchema:{type:"object",properties:{batch:{type:"string"},include:{type:"array",items:{type:"string"}}},required:["batch"],additionalProperties:!1},mutating:!0,annotations:{title:"Undo a batch",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1}},{name:"list_suggestions",title:"List what is suggested",description:"List the suggestions waiting for a person: changes the app's own actor proposed and did not make, each with its id, what it would do, who suggested it, what it was based on and how sure (0 to 1). Nothing changes until one is accepted (accept_suggestion) or declined (decline_suggestion); a declined one is never suggested again.",inputSchema:{type:"object",properties:{},additionalProperties:!1},mutating:!1,annotations:R("List what is suggested")},{name:"accept_suggestion",title:"Accept a suggestion",description:"Make a waiting suggestion's change, as this seat, carrying what it was based on. Returns the batch (undo_batch takes it back).",inputSchema:{type:"object",properties:{suggestion:{type:"string",description:"The suggestion's id, from list_suggestions."}},required:["suggestion"],additionalProperties:!1},mutating:!0,annotations:{title:"Accept a suggestion",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1}},{name:"decline_suggestion",title:"Decline a suggestion",description:"Decline a waiting suggestion: nothing changes, the decline is kept in the log, and the same change is never suggested or made by the app's own actor again.",inputSchema:{type:"object",properties:{suggestion:{type:"string",description:"The suggestion's id, from list_suggestions."}},required:["suggestion"],additionalProperties:!1},mutating:!0,annotations:{title:"Decline a suggestion",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1}}],qe={name:"act_on_several",title:"Do one act to several records",description:`Run one act on several records at once, as one change with one undo. act is the act (its tool name or its declared name), records the records it runs on (ids or names; each goes in the act's subject), args what every call shares ("Set stage to Declined" is args { stage: "declined" }). Each record is judged on its own: one this seat may not change is named with why, and the rest still apply. Returns the batch (undo_batch takes it all back), the records changed, those already so, and those refused.`,inputSchema:{type:"object",properties:{act:{type:"string",description:"The act to run on each record."},records:{type:"array",items:{type:"string"},minItems:1,maxItems:200,description:"Ids or names of the records."},args:{type:"object",description:"Arguments every call shares, besides the record."}},required:["act","records"],additionalProperties:!1},mutating:!0,annotations:{title:"Do one act to several records",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1}},te={type:"object",description:"A lens, as draft_view returns one.",properties:{title:{type:"string"},lens:{type:"string"},on:{type:"string"},bindings:{type:"object"},options:{type:"object"}},required:["title","lens","on"]},ie={name:"draft_view",title:"Draw a view",description:'Draw a view of the data from words ("a board of tasks by status", "who covers what") as a lens the app could keep; or check a lens you wrote (lens); or change the one on screen (current, with ask: "only this month"). Returns the lens and its add-lens edit, or one sentence saying why not. Writes nothing.',inputSchema:{type:"object",properties:{ask:{type:"string",description:"What to see, in words."},lens:te,current:te},additionalProperties:!1},mutating:!1,annotations:R("Draw a view")},We={name:"keep_lens",title:"Keep a view as a lens",description:"Keep a lens draft_view drew as one of the app's places: checked again, then written as the add-lens edit. Returns the remove-lens edit that takes it back.",inputSchema:{...te,additionalProperties:!1},mutating:!0,annotations:{title:"Keep a view as a lens",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1}},Ve={name:"find_linked",title:"Find a record in another app",description:`A relation may go to a kind in another app (describe_app lists them under "Linked from other apps"). With relation and words, list the records there this seat may link \u2014 each with the value to link it by ("house:h1"), its name and its describe line. With of (a record id here), read the records that record links, as this seat may see them there. Linking one is the record's edit (edit-<kind>) with the relation set to the value. Another app this seat may not open answers denied, and nothing of it. Writes nothing; never changes the other app.`,inputSchema:{type:"object",properties:{relation:{type:"string",description:"The relation, by name (forHouse) or as <kind>.<relation> (scenario.forHouse)."},query:{type:"string",description:"Words to find by, in the other app's names; empty for the first few."},of:{type:"string",description:"A record here whose linked records to read, instead of finding."},limit:{type:"number",description:"Most records to return; at most 20."}},required:["relation"],additionalProperties:!1},mutating:!1,annotations:R("Find a record in another app")};function un(t,n){return t===void 0?[]:t==="keep"&&!n?[ie,We]:[ie]}var fn="An argument that names a record takes its id or its name.",Be=[...ne.map(t=>t.name),qe.name,ie.name,We.name,Ve.name],Ce=64;function _(t){let{line:n,...e}=t;return e}function Fe(t){return{...t,...t.introduces?{introduces:t.introduces.map(_)}:{},...t.resolves?{resolves:t.resolves.map(_)}:{},...t.violationsAfter?{violationsAfter:t.violationsAfter.map(_)}:{}}}function mn(t){let n=t.normalize("NFKD").replace(/\p{M}/gu,"").replace(/[^A-Za-z0-9_-]/g,"_");return n.length===0&&(n="act"),/^[A-Za-z_]/.test(n)||(n=`act_${n}`),n.slice(0,Ce)}function pn(t){let n=new Set(Be),e=new Map;for(let r of t){let i=mn(r),a=i;for(let o=2;n.has(a);o+=1)a=`${i.slice(0,Ce-`_${o}`.length)}_${o}`;n.add(a),e.set(r,a)}return e}function hn(t,n){if(n.size===0)return t;let e=Object.fromEntries(Object.entries(t.properties??{}).filter(([i])=>!n.has(i))),r=(t.required??[]).filter(i=>!n.has(i));return{...t,properties:e,...t.required?{required:r}:{}}}function yn(t,n,e){let r=Z(t),i=W(t),a=r.nodeRefs.length>0?`${r.description}${/[.!?]$/.test(r.description)?"":"."} ${fn}`:r.description;return{name:n,title:i,description:a,inputSchema:hn(r.inputSchema,e),mutating:!0,annotations:{title:i,readOnlyHint:!1,destructiveHint:t.destructive===!0||(t.severs?.length??0)>0,idempotentHint:t.idempotent===!0,openWorldHint:!1},act:t.name}}function re(t){if(t===null||typeof t!="object")return JSON.stringify(t)??"null";if(Array.isArray(t))return`[${t.map(re).join(",")}]`;let n=t;return`{${Object.keys(n).filter(e=>n[e]!==void 0).sort().map(e=>`${JSON.stringify(e)}:${re(n[e])}`).join(",")}}`}function gn(t){return`sha256:${ke(re(t))}`}function wn(t,n,e,r,i,a=!1){let o=pn(t.map(p=>p.name)),c=[...un(r,e),...a?[Ve]:[]];return{definitions:e?[...ne.filter(p=>!p.mutating),...c]:[...ne,qe,...c,...t.filter(p=>n.has(p.name)).map(p=>yn(p,o.get(p.name),i(p)))],names:o}}function Qn(t,n={}){let e=n.author??{kind:"agent"},r=t.allMutations(),i=new Set(t.permittedMutations(e).map(u=>u.name)),{definitions:a,names:o}=wn(r,i,n.readOnly===!0,n.drafts?n.drafts.keep?"keep":"draw":void 0,u=>U(t.schema,t.policy,e,u),cn(t.schema)),c=gn(a),s=u=>{if(!Be.includes(u)){for(let[f,k]of o)if(k===u)return f;return o.has(u)?u:void 0}},p=(u,f)=>{let k=r.find(d=>d.name===u);if(!k)return{args:f,resolved:[]};let g={...f},l=[];for(let d of I(k.input)){let m=g[d.name];if(typeof m!="string"||m.trim()==="")continue;let w=t.resolveRef(d,m,e);if(!w.ok){let b=w.reason==="none"?` Nothing was changed. Use search_graph to look it up, then pass its id as ${d.name}.`:" Nothing was changed.";return{ok:!1,error:`${w.message}${b}`,argument:d.name,candidates:w.candidates}}w.by!=="id"&&(g[d.name]=w.id,l.push({argument:d.name,given:m,id:w.id,label:w.label}))}return{args:g,resolved:l}},h=async(u,f)=>{try{await on();let k=a.find(l=>l.name===u)??a.find(l=>l.act===u);if(!k){let l=s(u);if(l){let d=t.permits({name:l,args:f},e);if(!d.ok)return{ok:!1,error:d.refusal.message,reason:"forbidden"}}return{ok:!1,error:`Unknown tool "${u}". Available: ${a.map(d=>d.name).join(", ")}`}}if(k.mutating&&n.readOnly)return{ok:!1,error:`"${u}" changes the graph, and this seat is read-only.`,reason:"forbidden"};if(k.act!==void 0){let l=p(k.act,f);if("ok"in l)return l;let d=D(t,e,t.apply({name:k.act,args:l.args},{...n.author?{author:n.author}:{},...Q(n.via)}));return{ok:!0,data:{batch:d.batch,intent:d.intent,introduces:d.introduces.map(_),resolves:d.resolves.map(_),...l.resolved.length>0?{resolved:l.resolved}:{}},diff:d.diff}}let g=t.seenBy(e);switch(k.name){case"search_graph":{let l=typeof n.places=="function"?n.places():n.places,d=typeof f.subject=="string"?f.subject:void 0,m=Re(g,String(f.query??""),{principal:e,rank:n.near,archived:me(f.archived),limit:typeof f.limit=="number"&&f.limit>0?Math.min(f.limit,20):20,...l?{places:l}:{},...d?{subject:d,from:[d]}:{}}),w=m.later?await m.later:m;return{ok:!0,data:(await j()).searchRead(w,He(w,F(g,e))),reads:w.hits.flatMap(b=>b.about==="node"?[b.id]:[])}}case"get_graph":return{ok:!0,...(await j()).graphRead(g,F(g,e),f)};case"get_node":{let l=String(f.id??""),d=l,m;if(!g.graph.getNode(l)){let b=l.trim()===""?void 0:t.resolveRef({name:"id",kinds:["*"]},l,e);if(b?.ok)d=b.id,m={argument:"id",given:l,id:d,label:b.label};else return b?.reason==="ambiguous"?{ok:!1,error:b.message,argument:"id",candidates:b.candidates}:{ok:!1,error:`No node "${l}".`}}let w=(await j()).nodeRead(g,F(g,e),d,f);return{ok:!0,data:m?{...w.data,resolved:[m]}:w.data,reads:w.reads}}case"describe_place":{let l=n.app??{name:"",schema:t.schema},d=typeof f.width=="number"&&Number.isFinite(f.width)&&f.width>0?f.width:1440,{describePlace:m}=await rn(),w=m(t,e,String(f.place??""),{app:l,width:d});if(!w.ok)return{ok:!1,error:`${w.error} The places are: ${w.places.join(", ")}.`};let b=new Set,x=E=>{for(let M of E)for(let O of M.groups??[])for(let T of O.items)b.add(T.id),x(T.parts)};return x(w.description.parts),{ok:!0,data:w.description,reads:[...b]}}case"find_linked":return ln(g,e,f,n.linked);case"draft_view":case"keep_lens":{let l=n.app??{name:"",schema:t.schema};return(await sn()).runDraftTool(k.name,f,{app:l,principal:e,...n.drafts?{drafts:n.drafts}:{}})}case"get_violations":{let l=g.violations(f.context);return{ok:!0,...(await j()).violationsRead(l,f)}}case"get_affordances":{let l=f.selection??[];return{ok:!0,data:_e(g,l,{...typeof n.derive=="function"?n.derive():n.derive,...n.author?{principal:n.author}:{},...f.context?{context:f.context}:{}}),reads:l.filter(m=>g.graph.has(m))}}case"preview_mutation":{let l=String(f.mutation),d=s(l)??l,m=p(d,f.args??{});if("ok"in m)return m;let w=t.missingFor({name:d,args:m.args},e);if(w)return{ok:!1,error:w.message,reason:"missing"};let b=D(t,e,t.preview({name:d,args:m.args},void 0,{author:e})),x=Fe(b);return{ok:!0,data:m.resolved.length>0?{...x,resolved:m.resolved}:x}}case"act_on_several":{let l=String(f.act??""),d=s(l)??l,m=r.find(v=>v.name===d);if(!m||!i.has(d)){let v=m?t.permits({name:d,args:{}},e):void 0;return v&&!v.ok?{ok:!1,error:v.refusal.message,reason:"forbidden"}:{ok:!1,error:`There is no act "${l}" this seat may run. Nothing was changed.`,reason:"invalid"}}let w=m.subject;if(!w)return{ok:!1,error:`"${W(m)}" does not act on a record, so it cannot be run on several. Nothing was changed.`,reason:"invalid"};let b=Array.isArray(f.records)?f.records.filter(v=>typeof v=="string"&&v.trim()!==""):[];if(b.length===0)return{ok:!1,error:"Name at least one record. Nothing was changed.",reason:"invalid"};let x=[],E=[];for(let v of b.slice(0,200)){let $=t.resolveRef({name:w.arg,kinds:w.kinds},v,e);if(!$.ok)return{ok:!1,error:`${$.message} Nothing was changed.`,argument:"records",candidates:$.candidates};x.push($.id),$.by!=="id"&&E.push({argument:"records",given:v,id:$.id,label:$.label})}let M=p(d,{...f.args??{}});if("ok"in M)return M;let O=(await dn()).actOnSeveral(t,{mutation:d,subject:w.arg,args:M.args},x,{author:e,...Q(n.via)}),T=O.result?D(t,e,O.result):void 0;return{ok:!0,data:{...O.batch?{batch:O.batch,intent:O.intent}:{},applied:O.applied,unchanged:O.unchanged,refused:O.refused.map(v=>({record:v.id,label:v.label,error:v.message,reason:v.reason})),...O.allOrNothing?{keptNone:!0}:{},...T?{introduces:T.introduces.map(_),resolves:T.resolves.map(_)}:{},...E.length>0||M.resolved.length>0?{resolved:[...E,...M.resolved]}:{}},...T?{diff:T.diff}:{}}}case"list_suggestions":{let l=ve(t,e).map(d=>{let m=H(d.author,{graph:g.graph,schema:t.schema});return{id:d.id,intent:d.intent,by:m,at:d.at,about:d.about,...d.lineage?{basis:{untrusted:!0,authoredBy:m,text:d.lineage.basis},...d.lineage.confidence!==void 0?{confidence:d.lineage.confidence}:{}}:{}}});return{ok:!0,data:{suggestions:l},reads:[...new Set(l.flatMap(d=>d.about))]}}case"accept_suggestion":case"decline_suggestion":{let l=String(f.suggestion??""),d={author:e,...Q(n.via)},m=k.name==="accept_suggestion"?Ae(t,l,d):Oe(t,l,d),w=D(t,e,m);return{ok:!0,data:{batch:w.batch,intent:w.intent,introduces:w.introduces.map(_),resolves:w.resolves.map(_)},diff:w.diff}}case"undo_batch":{let l=String(f.batch),d=f.include??[],m=g.canUndo([l,...d]);if(!m.ok)return{ok:!1,error:m.message};let w=D(t,e,t.undo([l,...d],{...n.author?{author:n.author}:{}}));return{ok:!0,data:Fe(w),diff:w.diff}}default:return{ok:!1,error:`Unknown tool "${u}".`}}}catch(k){let{reason:g,wouldNeed:l}=pe(k);return{ok:!1,error:k instanceof Error?k.message:String(k),reason:g,...l?{wouldNeed:l}:{}}}},S=new Set,y=u=>{for(let f of S)f(u)};return{definitions:a,hash:c,...n.author?{author:n.author}:{},onDiff(u){return t.subscribe(u)},onCall(u){return S.add(u),()=>S.delete(u)},async call(u,f){let k=(a.find(m=>m.name===u)??a.find(m=>m.act===u))?.mutating??!1,g={name:u,args:f,mutating:k,at:new Date().toISOString()};y({...g,phase:"running"});let l=m=>(y(m.ok?{...g,phase:"ok",...!k&&m.reads?{reads:m.reads}:{}}:{...g,phase:"failed",error:m.error}),m),d=await h(u,f);return l(d.ok&&!k?{...d,data:(await j()).withinReadChars(u,d.data)}:d)}}}function Q(t){let n=typeof t=="function"?t():t;return n?{via:n}:{}}export{re as a,Qn as b};