graview 0.1.30 → 0.1.32

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 (174) hide show
  1. package/dist/preview/chunk.2NIOHEMX.js +1 -0
  2. package/dist/preview/{chunk.XRJBLH4N.js → chunk.3AGY4QVS.js} +1 -1
  3. package/dist/preview/chunk.3HXN4BOY.js +1 -0
  4. package/dist/preview/{chunk.2CIBWZJG.js → chunk.3K6YSVHC.js} +1 -1
  5. package/dist/preview/{chunk.FWCOJDOD.js → chunk.3TVXGJTU.js} +1 -1
  6. package/dist/preview/{chunk.NDADLJE6.js → chunk.3TY5NFLY.js} +1 -1
  7. package/dist/preview/{chunk.UWGWXFWZ.js → chunk.47STJVRV.js} +1 -1
  8. package/dist/preview/{chunk.34ZMMURV.js → chunk.4HRAQNJO.js} +6 -6
  9. package/dist/preview/{chunk.QTMWHE5O.js → chunk.4HZ7QTXZ.js} +1 -1
  10. package/dist/preview/{chunk.3JGGBLRB.js → chunk.4MERAWS2.js} +1 -1
  11. package/dist/preview/chunk.52W7WYME.js +1 -0
  12. package/dist/preview/chunk.5A4AOFOA.js +1 -0
  13. package/dist/preview/chunk.5H4VXLZF.js +88 -0
  14. package/dist/preview/{chunk.XS7YFNDU.js → chunk.5T5XGILP.js} +1 -1
  15. package/dist/preview/chunk.5TVB6BUY.js +1 -0
  16. package/dist/preview/chunk.5UL7YDUD.js +1 -0
  17. package/dist/preview/chunk.63GXY2ME.js +1 -0
  18. package/dist/preview/chunk.6QWV5MVH.js +25 -0
  19. package/dist/preview/{chunk.PAVR5TK5.js → chunk.6UGEYZAC.js} +1 -1
  20. package/dist/preview/chunk.6YCBYL2Y.js +2 -0
  21. package/dist/preview/{chunk.ZYKAS4BT.js → chunk.7GKUVQVF.js} +1 -1
  22. package/dist/preview/{chunk.T3VPD7JQ.js → chunk.7T7NZZTC.js} +1 -1
  23. package/dist/preview/chunk.AKFKM4SW.js +3 -0
  24. package/dist/preview/chunk.AOSMJKLH.js +1 -0
  25. package/dist/preview/{chunk.D3IECJ2S.js → chunk.ASCLIM2P.js} +1 -1
  26. package/dist/preview/chunk.B2GLDIAS.js +1 -0
  27. package/dist/preview/chunk.BNV77BQZ.js +4 -0
  28. package/dist/preview/chunk.BOO6WVM4.js +117 -0
  29. package/dist/preview/chunk.BQ3JHEHV.js +1 -0
  30. package/dist/preview/chunk.CAVBSL27.js +1 -0
  31. package/dist/preview/{chunk.YLQB3KBA.js → chunk.CDP2XL66.js} +1 -1
  32. package/dist/preview/chunk.CIPS2OGR.js +1 -0
  33. package/dist/preview/chunk.CJJLJ3KW.js +2 -0
  34. package/dist/preview/chunk.CN3UEF5N.js +90 -0
  35. package/dist/preview/{chunk.6XMEU2Q2.js → chunk.COQKECUH.js} +1 -1
  36. package/dist/preview/{chunk.QTA4ROAK.js → chunk.CWHRDBOF.js} +1 -1
  37. package/dist/preview/chunk.CX3KL2C5.js +1 -0
  38. package/dist/preview/{chunk.AK3IHFCF.js → chunk.D75KC3LL.js} +1 -1
  39. package/dist/preview/chunk.DAZ2VSRD.js +1 -0
  40. package/dist/preview/{chunk.RIEHYQLK.js → chunk.DHIUSUCL.js} +50 -24
  41. package/dist/preview/{chunk.3ADPAGPY.js → chunk.DYSPCGXX.js} +1 -1
  42. package/dist/preview/chunk.E2YEOMPH.js +1 -0
  43. package/dist/preview/chunk.EBGAYL32.js +1 -0
  44. package/dist/preview/chunk.EF3XNU4O.js +1 -0
  45. package/dist/preview/chunk.EJPI3ST6.js +1 -0
  46. package/dist/preview/chunk.EKPRNDUV.js +1 -0
  47. package/dist/preview/chunk.ERIT3R6N.js +1 -0
  48. package/dist/preview/chunk.EYTBDMTW.js +1 -0
  49. package/dist/preview/chunk.F6EH7HI2.js +1 -0
  50. package/dist/preview/{chunk.3URFMWXZ.js → chunk.F6ZK7RMB.js} +2 -2
  51. package/dist/preview/chunk.FSTCX2AI.js +1 -0
  52. package/dist/preview/{chunk.HHPGWJDO.js → chunk.FWTIUYXH.js} +1 -1
  53. package/dist/preview/{chunk.6T2Q6NLO.js → chunk.G5NZVPJU.js} +1 -1
  54. package/dist/preview/{chunk.VG56IUIQ.js → chunk.GO4XBWJO.js} +1 -1
  55. package/dist/preview/chunk.GV2CQVKV.js +1 -0
  56. package/dist/preview/chunk.GYICGZMG.js +3 -0
  57. package/dist/preview/chunk.H7BST3XO.js +1 -0
  58. package/dist/preview/chunk.H7EPE74C.js +1 -0
  59. package/dist/preview/{chunk.26CZTUY4.js → chunk.HAIG6NVX.js} +1 -1
  60. package/dist/preview/{chunk.V7BDAGDE.js → chunk.HLTRQU4Y.js} +1 -1
  61. package/dist/preview/{chunk.VS7K3SCD.js → chunk.I6FPNX43.js} +1 -1
  62. package/dist/preview/chunk.IDVAR5HM.js +1 -0
  63. package/dist/preview/chunk.J25KOSNW.js +1 -0
  64. package/dist/preview/chunk.JDUJDAGA.js +1 -0
  65. package/dist/preview/{chunk.X37L5TN5.js → chunk.JFAOHHJJ.js} +1 -1
  66. package/dist/preview/chunk.JOOQUWLT.js +341 -0
  67. package/dist/preview/{chunk.4SJUTBDV.js → chunk.JQU5GEU3.js} +1 -1
  68. package/dist/preview/chunk.K5ME5GCG.js +1 -0
  69. package/dist/preview/chunk.K7PMDSOL.js +1 -0
  70. package/dist/preview/chunk.KSES5U5B.js +1 -0
  71. package/dist/preview/{chunk.DT7LHWU2.js → chunk.LLLZEGRK.js} +1 -1
  72. package/dist/preview/chunk.LR3VDXPI.js +1 -0
  73. package/dist/preview/{chunk.WYTIOLPP.js → chunk.LXBOVRFI.js} +1 -1
  74. package/dist/preview/{chunk.42YX6NOY.js → chunk.MAF7C3VM.js} +1 -1
  75. package/dist/preview/chunk.MNP4JI33.js +5 -0
  76. package/dist/preview/{chunk.O2LK2AO7.js → chunk.MWGGV7DE.js} +1 -1
  77. package/dist/preview/chunk.N6OX4NEQ.js +1 -0
  78. package/dist/preview/chunk.NM6MZYFN.js +47 -0
  79. package/dist/preview/chunk.NRAYZY3X.js +1 -0
  80. package/dist/preview/chunk.NTF7FVB2.js +1 -0
  81. package/dist/preview/{chunk.DZRTOURR.js → chunk.OC6IWRQ3.js} +1 -1
  82. package/dist/preview/chunk.OF34OZ4V.js +1 -0
  83. package/dist/preview/chunk.OJGHDWI6.js +1 -0
  84. package/dist/preview/chunk.OKRNJXTV.js +1 -0
  85. package/dist/preview/chunk.PBSMLINK.js +1 -0
  86. package/dist/preview/chunk.PHKSMUIA.js +1 -0
  87. package/dist/preview/{chunk.JN7DIFR3.js → chunk.PIP6Z563.js} +1 -1
  88. package/dist/preview/chunk.QGTSHKJL.js +1 -0
  89. package/dist/preview/chunk.QVVJRSRM.js +1 -0
  90. package/dist/preview/{chunk.L6OMEYL6.js → chunk.QYZNAUIR.js} +1 -1
  91. package/dist/preview/chunk.R6K6GF5R.js +1 -0
  92. package/dist/preview/{chunk.JTNWD2CN.js → chunk.RCKTBOY2.js} +1 -1
  93. package/dist/preview/{chunk.QNGWEV47.js → chunk.RIJUCHP4.js} +1 -1
  94. package/dist/preview/chunk.SHTJZ6UX.js +1 -0
  95. package/dist/preview/{chunk.PKK6FRZR.js → chunk.SYAEBGDC.js} +1 -1
  96. package/dist/preview/chunk.T5VG5A6V.js +1 -0
  97. package/dist/preview/{chunk.ERXSYPYL.js → chunk.TAQ764IQ.js} +1 -1
  98. package/dist/preview/chunk.TCNBCTWO.js +1 -0
  99. package/dist/preview/{chunk.HHI65WFZ.js → chunk.UATVTXZY.js} +1 -1
  100. package/dist/preview/{chunk.XSTXV6FP.js → chunk.UBFNZMUX.js} +2 -2
  101. package/dist/preview/{chunk.WAFDCOOG.js → chunk.UGFJKSHU.js} +1 -1
  102. package/dist/preview/chunk.UHUGOTUU.js +19 -0
  103. package/dist/preview/chunk.ULRW47RP.js +1 -0
  104. package/dist/preview/chunk.UNL2HIF2.js +1 -0
  105. package/dist/preview/chunk.UZGRRDHD.js +1 -0
  106. package/dist/preview/{chunk.BPWNWE7N.js → chunk.VG3O4LWB.js} +1 -1
  107. package/dist/preview/chunk.WAZ7OGBD.js +1 -0
  108. package/dist/preview/{chunk.3JNMSOFG.js → chunk.XANVHJQ4.js} +1 -1
  109. package/dist/preview/chunk.XKABS745.js +1 -0
  110. package/dist/preview/chunk.XMC7YDWT.js +1 -0
  111. package/dist/preview/chunk.XNJEFUF7.js +3 -0
  112. package/dist/preview/chunk.Y6ZNFQK3.js +6 -0
  113. package/dist/preview/{chunk.J2ITFGN3.js → chunk.YIR7PPF3.js} +1 -1
  114. package/dist/preview/index.html +51 -0
  115. package/dist/preview/page.js +6 -6
  116. package/package.json +6 -6
  117. package/dist/preview/chunk.2EXGG6BB.js +0 -1
  118. package/dist/preview/chunk.2NBYNZRD.js +0 -1
  119. package/dist/preview/chunk.2XAONC66.js +0 -1
  120. package/dist/preview/chunk.3R4W2P5X.js +0 -1
  121. package/dist/preview/chunk.3SKKIHU3.js +0 -4
  122. package/dist/preview/chunk.3VL5WECB.js +0 -1
  123. package/dist/preview/chunk.4ALKPNXM.js +0 -1
  124. package/dist/preview/chunk.4HP7UWA2.js +0 -1
  125. package/dist/preview/chunk.5U5J3ISK.js +0 -1
  126. package/dist/preview/chunk.6V2RG5JG.js +0 -5
  127. package/dist/preview/chunk.7BWT5L2L.js +0 -1
  128. package/dist/preview/chunk.C5CYZNSJ.js +0 -1
  129. package/dist/preview/chunk.CM6LOIQE.js +0 -88
  130. package/dist/preview/chunk.FDELO7NY.js +0 -116
  131. package/dist/preview/chunk.FGVKJWNS.js +0 -6
  132. package/dist/preview/chunk.GFF2FB2J.js +0 -25
  133. package/dist/preview/chunk.GLBHQFJ2.js +0 -1
  134. package/dist/preview/chunk.HSCTWAUV.js +0 -1
  135. package/dist/preview/chunk.INZUEWC5.js +0 -1
  136. package/dist/preview/chunk.JH6MU6TX.js +0 -2
  137. package/dist/preview/chunk.JISMMIMX.js +0 -1
  138. package/dist/preview/chunk.JPHNKWTY.js +0 -1
  139. package/dist/preview/chunk.K75FUIZI.js +0 -1
  140. package/dist/preview/chunk.K776HO42.js +0 -2
  141. package/dist/preview/chunk.KN3ULTGF.js +0 -1
  142. package/dist/preview/chunk.KOB6N3SL.js +0 -1
  143. package/dist/preview/chunk.KQT7WAQE.js +0 -1
  144. package/dist/preview/chunk.L4DECHXR.js +0 -327
  145. package/dist/preview/chunk.LQ7V6KEE.js +0 -1
  146. package/dist/preview/chunk.MD74YVRN.js +0 -3
  147. package/dist/preview/chunk.MGNP4LAM.js +0 -1
  148. package/dist/preview/chunk.NCTOBUCT.js +0 -1
  149. package/dist/preview/chunk.NO52VON3.js +0 -1
  150. package/dist/preview/chunk.OAF7TUMI.js +0 -1
  151. package/dist/preview/chunk.OQ4KFN6W.js +0 -1
  152. package/dist/preview/chunk.OQDETV4X.js +0 -1
  153. package/dist/preview/chunk.OXQMNIRO.js +0 -1
  154. package/dist/preview/chunk.OZNW5W4Z.js +0 -1
  155. package/dist/preview/chunk.QIAKO27D.js +0 -1
  156. package/dist/preview/chunk.R26DREVU.js +0 -1
  157. package/dist/preview/chunk.RI3PYG5T.js +0 -19
  158. package/dist/preview/chunk.RRVIXV7W.js +0 -1
  159. package/dist/preview/chunk.RYT5U3QM.js +0 -1
  160. package/dist/preview/chunk.SE5SKFQH.js +0 -1
  161. package/dist/preview/chunk.SOBC3CTN.js +0 -47
  162. package/dist/preview/chunk.SOD3PBJM.js +0 -1
  163. package/dist/preview/chunk.UDSEJKCY.js +0 -1
  164. package/dist/preview/chunk.UZWWDAGM.js +0 -14
  165. package/dist/preview/chunk.V5ZYUVMH.js +0 -1
  166. package/dist/preview/chunk.VOAZBHCG.js +0 -1
  167. package/dist/preview/chunk.VSZQXB4Q.js +0 -3
  168. package/dist/preview/chunk.W3S6UXNA.js +0 -1
  169. package/dist/preview/chunk.Y4UXEL6Y.js +0 -1
  170. package/dist/preview/chunk.YJUB4OD7.js +0 -1
  171. package/dist/preview/chunk.YNQDVGZM.js +0 -1
  172. package/dist/preview/chunk.YV2LJFGS.js +0 -1
  173. package/dist/preview/chunk.Z2YUYZT4.js +0 -1
  174. /package/dist/preview/{chunk.EYZ7MHBZ.js → chunk.GZHZLJBF.js} +0 -0
@@ -1,327 +0,0 @@
1
- import{A as gr,G as N,R as b,Z as ae,_ as he,a as A,b as ve,f as ye,ha as fr,ka as wr,m as cr,n as pr,oa as mr,pa as vr,qa as yr,t as ur,ta as _,w as U,xa as W,ya as B}from"./chunk.GFF2FB2J.js";import{$ as Ie,Ac as nr,Bc as Y,Hc as ar,Ic as ir,Jb as ze,Jc as or,Ka as _e,Kc as sr,Lb as Ke,Lc as lr,Mb as ne,Mc as me,Nb as fe,Ob as Ge,Pb as qe,Pc as dr,Qb as je,Rb as Ye,Sb as Ue,Ub as Ze,W as Fe,Ya as We,_b as Je,aa as De,ac as Xe,dc as Qe,ec as er,uc as rr,vc as j,xc as we,zc as tr}from"./chunk.6V2RG5JG.js";import{b as y}from"./chunk.AJZBJBMO.js";var z=y(N(),1);function st(e){let[r,t]=(0,z.useState)(null);return(0,z.useEffect)(()=>{let n=e.current;if(!n||typeof ResizeObserver>"u")return;let i=()=>t(Math.round(n.getBoundingClientRect().width));i();let a=new ResizeObserver(i);return a.observe(n),()=>a.disconnect()},[e]),r}function lt(e=!0){let[r,t]=(0,z.useState)();return(0,z.useEffect)(()=>{if(!e)return t(void 0);let n=0,i=()=>t(innerHeight),a=()=>{i(),clearTimeout(n),n=window.setTimeout(i,300)},o=d=>{for(let[p,s]of[[window,"resize"],[window,"orientationchange"],[window.visualViewport,"resize"]])p?.[d](s,a)};return o("addEventListener"),i(),()=>{clearTimeout(n),o("removeEventListener")}},[e]),r}var ie={position:"absolute",width:1,height:1,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(50%)",whiteSpace:"nowrap"};var C=B(A(()=>import("./chunk.VG56IUIQ.js")));var m=y(N(),1);var xr=y(N(),1);var hr=y(N(),1);function br(e){return(0,hr.useMemo)(()=>e===void 0||e===""?void 0:{__html:e},[e])}var Z=y(b(),1);function be({brand:e,size:r=22}){let t=e?.logo,n=t!==void 0&&je(t)&&Ye(t)===null?t:void 0,i=br(n),a={display:"inline-flex",flex:"0 0 auto",height:r,color:"var(--graview-accent)"},o=Ze(e);if(o)return(0,Z.jsx)("span",{className:"graview-logo graview-emoji-mark","data-testid":"app-mark","aria-hidden":!0,style:{...a,alignItems:"center",fontSize:`${r*.86/16}rem`,lineHeight:1},children:o});if(!t||!Ue(t))return null;let d=e?.logoAlt??e?.name??"",p=d!==""&&d!==e?.name;return n?(0,Z.jsx)("span",{className:"graview-logo","data-testid":"app-mark",style:a,...p?{role:"img","aria-label":d}:{"aria-hidden":!0},dangerouslySetInnerHTML:i}):(0,Z.jsx)("img",{className:"graview-logo","data-testid":"app-mark",src:t,alt:p?d:"",style:{...a,width:"auto"}})}function dt(e){(0,xr.useEffect)(()=>{if(!e||typeof document>"u")return;let r=[...document.querySelectorAll('link[rel~="icon"]')],t=r.map(i=>i.getAttribute("href")),n;r.length===0&&(n=document.createElement("link"),n.rel="icon",n.setAttribute("data-graview-favicon",""),document.head.appendChild(n),r.push(n));for(let i of r)i.href=e;return()=>{n&&n.remove(),r.forEach((i,a)=>{i!==n&&t[a]!==null&&t[a]!==void 0&&i.setAttribute("href",t[a])})}},[e])}var l=y(b(),1),ct=C.part((e,r)=>(0,l.jsx)(e.Here,{...r}),{quiet:!0});function pt(){let e=he(),[r,t]=(0,m.useState)("");return(0,m.useEffect)(()=>e?.store.subscribe((n,i)=>{i.some(a=>a.author.id!==e.principal.id)&&C.load().then(a=>a.sayTheirChange(i,e,t),String)}),[e]),(0,l.jsx)("span",{role:"status",className:"graview-bar-said",children:r})}var kr="home",Sr="/",I="scene:whole";function ut(e){let{store:r,principal:t,views:n}=e,i=r.kindsKeptFrom(t),a=r.schema.kinds.filter(g=>!r.modules.disabledKinds.has(g)&&!i.has(g)),o=n?.arrangement?.(),d=n?.places()??[],p=sr(o,r.schema,d),s=or(r.schema,o,[...r.modules.administered.values()].flatMap(g=>g.kinds??[])),c=(g,k)=>(!r.graph.size.nodes||r.graph.count(g)>0)&&(p?k?p.places.has(`${g}|${k}`):p.kinds.has(g):!s.has(g)),u=[{key:kr,label:"Home",path:Sr,group:"home",primary:!0}],f=d.filter(g=>a.includes(g.kind)&&g.as!==lr&&!g.hidden),v=new Set(j(f).map(g=>Y(g,d,r.schema).toLowerCase()));for(let g of dr(a,o?.order)){let k=Ie(r.schema,g),H=v.has(k.toLowerCase());u.push({key:`kind:${g}`,label:H?De(r.schema,g):k,path:we(r.schema,g),group:"lists",kind:g,primary:H?!1:c(g)})}for(let g of j(f)){let k=tr(g.as,nr(g,d)?we(r.schema,g.kind).slice(1):void 0),H=[g.kind,...g.over??[]].some(D=>a.includes(D)&&c(D,g.as));u.some(D=>D.path===k)||u.push({key:`place:${g.kind}:${g.as}`,label:Y(g,d,r.schema),path:k,group:"pictures",kind:g.kind,primary:H})}return a.some(g=>Object.keys(r.schema.tryDefinition(g)?.edges??{}).length>0)&&u.push({key:"connections",label:"Connections",path:"/map",group:"pictures",primary:!1}),u}function gt(e,r){let[t="/",n=""]=r.split("?"),i=e.find(o=>o.path===(n?`${t}?${n}`:t))??e.find(o=>o.path===t);if(i)return i.key;let a=`/${t.split("/").filter(Boolean)[0]??""}`;return e.find(o=>o.group==="lists"&&o.path===a)?.key??null}var Pr=(0,m.createContext)(null),ft=()=>(0,m.useContext)(Pr),K=30,Lr=48,J=640,Se=4,xe=2;function $r(e){let{widths:r,current:t,room:n,more:i,gap:a=Se,primary:o,most:d=ir}=e;if(r.length===0||!(n>0)||!(i>0)||r.some(u=>!(u>0)))return null;let p=(u,f)=>u.reduce((v,x)=>v+r[x],0)+a*Math.max(0,u.length-1)+(f?a+i:0),s=(u,f)=>t<0||!u.includes(t)||u.slice(0,f).includes(t)?u.slice(0,f):[...u.filter(v=>v!==t).slice(0,f-1),t].sort((v,x)=>v-x),c=s(r.map((u,f)=>f).filter(u=>o?.[u]!==!1||u===t),d);if(p(c,c.length<r.length)<=n)return c.length>=xe?c:null;for(let u=c.length-1;u>=xe;u--){let f=s(c,u);if(p(f,!0)<=n)return f}return null}var wt=`
2
- .graview-bar{display:block;margin:0;padding:0;container:graview-bar/inline-size;flex:0 0 auto;position:relative;background:var(--graview-bar);border-bottom:1px solid var(--graview-edge);color:var(--graview-ink);font-family:var(--graview-font-body,system-ui)}
3
- .graview-bar-row{display:flex;flex-wrap:nowrap;align-items:center;gap:16px;height:${Lr-1}px;margin:0;padding:0 16px}
4
- .graview-bar-home,.graview-bar-face,.graview-bar-place,.graview-bar-item,.graview-bar-at{display:inline-flex;align-items:center;box-sizing:border-box;min-width:0;margin:0;border:0;background:none;box-shadow:none;font:inherit;letter-spacing:normal;text-transform:none;text-decoration:none;color:var(--graview-ink);cursor:pointer;text-align:left}
5
- .graview-bar-app{display:flex;flex:0 1 auto;max-width:50%}
6
- .graview-bar-app::after{content:"";flex:0 100000 auto;width:2px;min-width:0}
7
- .graview-bar-name{margin:0;display:flex;font-family:var(--graview-font-display,var(--graview-font-body,system-ui));font-size:.9375rem;font-weight:600;line-height:1.25}
8
- .graview-bar-home{gap:8px;min-width:auto;min-height:30px;padding:0;letter-spacing:-.005em}
9
- .graview-bar-app-name{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal;word-break:normal}
10
- .graview-bar-faces{display:inline-flex;flex:0 0 auto;box-sizing:border-box;height:30px;margin:0;padding:2px;gap:2px;border:1px solid var(--graview-edge);border-radius:8px}
11
- .graview-bar-face{gap:6px;padding:0 10px;border-radius:6px;font-size:.8125rem;white-space:nowrap;color:var(--graview-ink-muted)}
12
- .graview-bar-face span{min-width:0;max-width:11em;overflow:hidden;text-overflow:ellipsis}
13
- .graview-bar-face[aria-pressed=true]{color:var(--graview-ink);font-weight:600;background:color-mix(in srgb,var(--graview-accent) 16%,transparent)}
14
- [data-switch-drawn=icons] .graview-bar-face{padding:0 8px}
15
- .graview-bar-said,[data-switch-drawn=icons] .graview-bar-face span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
16
- .graview-bar-mid{display:flex;flex:1 100 0;min-width:0}
17
- .graview-bar-mid[data-place]{min-width:9em;flex-basis:auto}
18
- .graview-bar-place-at{position:relative;display:inline-flex;min-width:0;max-width:100%}
19
- .graview-bar-place{gap:6px;height:30px;max-width:100%;padding:0 8px;border:1px solid transparent;border-radius:8px;font-size:.875rem;font-weight:600}
20
- .graview-bar-face:hover,.graview-bar-place:hover{border-color:var(--graview-edge);color:var(--graview-ink)}
21
- .graview-bar-place-words{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
22
- .graview-bar-mid[data-places=standing]{flex:0 0 auto}
23
- .graview-bar-places{display:flex;align-items:center;gap:${Se}px;min-width:0;margin:0;padding:0}
24
- .graview-bar-at{gap:6px;flex:0 0 auto;height:30px;padding:0 8px;border-block:2px solid transparent;border-radius:0;font-size:.875rem;font-weight:500;white-space:nowrap;color:var(--graview-ink-muted)}
25
- .graview-bar-at:is(:hover,[aria-current],[aria-expanded=true]){color:var(--graview-ink)}
26
- .graview-bar-at[aria-current]{font-weight:600;border-bottom-color:var(--graview-accent)}
27
- .graview-bar-ruler{position:absolute;left:0;top:0;display:flex;width:0;height:0;overflow:hidden;visibility:hidden;pointer-events:none}
28
- .graview-bar-ruler .graview-bar-at{font-weight:600}
29
- .graview-bar-list{display:grid;align-content:start;width:min(320px,calc(100vw - 24px));height:auto;max-height:min(70vh,560px);overflow:auto;margin:0;padding:6px;border-radius:10px;border:1px solid var(--graview-edge);background:var(--graview-float);box-shadow:var(--graview-lift-high);color:var(--graview-ink)}
30
- .graview-bar-list[hidden]{display:none}
31
- .graview-bar-list p{margin:8px 8px 2px;font-size:.6875rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--graview-ink-muted)}
32
- .graview-bar-list ul,.graview-bar-list li{display:grid;margin:0;padding:0;list-style:none}
33
- .graview-bar-item{align-items:flex-start;gap:10px;width:100%;padding:7px 8px;border-radius:7px;font-size:.875rem;line-height:1.3;overflow-wrap:anywhere}
34
- .graview-bar-item:hover{background:color-mix(in srgb,var(--graview-ink) 7%,transparent)}
35
- .graview-bar-item[aria-current]{font-weight:600;background:color-mix(in srgb,var(--graview-accent) 14%,transparent)}
36
- .graview-bar-mark{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:14px;height:1.3em;color:var(--graview-ink-muted)}
37
- .graview-bar :focus-visible{outline:2px solid var(--graview-accent);outline-offset:1px}
38
- .graview-bar-tools{display:contents}
39
- .graview-bar-tools>*{margin-left:-8px}
40
- .graview-bar-tools>:is(.graview-bar-find,.graview-bar-find-open){margin-left:auto}
41
- .graview-bar-own{display:flex;align-items:center;flex:0 0 auto}
42
- .graview-bar-own:empty{display:none}
43
- .graview-bar-find{position:relative;display:flex;min-width:7.5rem;flex:0 600 9rem;--graview-bar-find-end:3.25em}
44
- .graview-bar-find-slot{display:flex;flex:1;min-width:0}
45
- .graview-bar-find-keys{position:absolute;right:10px;line-height:30px;pointer-events:none;font-size:.75rem;color:var(--graview-ink-faint)}
46
- .graview-bar-find:is(:focus-within,:has(input:not(:placeholder-shown))){flex-basis:16rem;--graview-bar-find-end:10px}
47
- :is(:focus-within,:has(input:not(:placeholder-shown)))>.graview-bar-find-keys,.graview-bar-find-open{display:none}
48
- .graview-bar-line{display:flex;flex:0 0 auto;padding:6px 8px;background:var(--graview-ground);border-bottom:1px solid var(--graview-edge);font-family:var(--graview-font-body,system-ui)}
49
- .graview-bar-line .graview-bar-place{height:auto;min-height:32px}
50
- .graview-bar-line .graview-bar-place-words{white-space:normal}
51
- @media (pointer:coarse){.graview-bar-find-keys{display:none}}
52
- @container graview-bar (max-width: ${J-1}px){
53
- .graview-bar-row{gap:10px;padding:0 12px}
54
- .graview-bar-app,.graview-bar-home{max-width:none;flex:1 1 auto;min-width:0}
55
- .graview-bar-mid,.graview-bar-find{display:none}
56
- .graview-bar-find-open{display:inline-flex}
57
- .graview-bar-own{--graview-activity-mark:inline}
58
- .graview-bar-own .graview-activity-word{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
59
- .graview-bar[data-finding] :is(.graview-bar-app,.graview-bar-faces,.graview-bar-find-open){display:none}
60
- .graview-bar[data-finding] .graview-bar-find{display:flex;flex:1 1 auto;min-width:0}
61
- }`,G={display:"inline-flex",alignItems:"center",justifyContent:"center",gap:6,minWidth:K,height:K,padding:0,borderRadius:8,border:"1px solid transparent",background:"none",boxShadow:"none",color:"var(--graview-ink-muted)",font:"inherit",fontSize:"0.875rem",cursor:"pointer",flex:"0 0 auto"};function mt({brand:e,name:r,heading:t=1,home:n,faces:i,places:a,current:o,reach:d,tools:p,find:s=!0,description:c,findBox:u,onFind:f,switch:v="words",scenePlaces:x}){let g=(0,m.useRef)(null),k=he()?.who.size,[H,D]=(0,m.useState)(null),[Be,Yr]=(0,m.useState)(null),[L,Ur]=(0,m.useState)(!1),[Zr,Ee]=(0,m.useState)(!1),[Jr,Xr]=(0,m.useState)(!0),[He,Qr]=(0,m.useState)(null),Q=i?i.pages.current:!x,pe=Q?{places:a,current:o,reach:d}:x,h=pe&&pe.places.length>0?pe:null,Ne=h?h.places.findIndex(w=>w.key===h.current):-1,Ce=!!i&&v==="words",Re=h?h.places.map(w=>w.primary===!1?"0":"1").join(""):"",M=(0,m.useCallback)(()=>{let w=g.current;if(!w)return;let T=$t(w,Ne,Ce,Re);T!==void 0&&Qr(T);let F=T?!0:yt(w);F!==null&&Xr(F)},[Ne,Ce,Re]);(0,m.useLayoutEffect)(()=>{let w=g.current;if(!w)return;let T=()=>{let te=w.getBoundingClientRect().width;Ur(te<J),w.style.setProperty("--graview-bar-width",`${Math.round(te)}px`),M()};T();let F=typeof document>"u"?void 0:document.fonts;if(F?.ready.then(M),F?.addEventListener?.("loadingdone",M),typeof ResizeObserver>"u")return()=>F?.removeEventListener?.("loadingdone",M);let ge=new ResizeObserver(T);ge.observe(w);for(let te of w.querySelectorAll(".graview-bar-tools > *"))ge.observe(te);return()=>{ge.disconnect(),F?.removeEventListener?.("loadingdone",M)}},[M]);let ue=(0,m.useRef)(f);ue.current=f,(0,m.useLayoutEffect)(()=>{ue.current?.(s&&H?{slot:H,compact:L,own:Be}:null)},[s,H,L,Be]),(0,m.useLayoutEffect)(()=>()=>ue.current?.(null),[]);let et=(0,m.useCallback)(()=>{Ee(!0),requestAnimationFrame(()=>H?.querySelector("input")?.focus())},[H]),Me=(0,m.useRef)(null),ee=(0,m.useRef)(!1),Oe=(0,m.useCallback)(()=>{Ee(!1),ee.current&&(ee.current=!1,requestAnimationFrame(()=>Me.current?.focus()))},[]),rt=t===!1?"span":`h${t}`,tt=n.href!==void 0?"a":"button",nt=w=>T=>{!w||!Ar(T)||(T.preventDefault(),w())},at=!Q,Ve=h&&!L&&He!==null?He.split(",").map(Number).filter(w=>w<h.places.length):null,re=h?(0,l.jsx)(Lt,{places:h.places,current:h.current,reach:h.reach,scene:at,stands:Ve}):null,it=h?h.places.map(w=>w.label).join(`
62
- `):"";(0,m.useLayoutEffect)(M,[M,r,e,it,h?.current,Q,L,v,s]);let ot=v==="icons"||!Jr||L?"icons":"words";return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("header",{ref:g,className:"graview-bar","data-testid":"app-bar","data-graview-app-bar":"",...Zr&&L?{"data-finding":""}:{},children:[(0,l.jsx)("style",{children:wt}),(0,l.jsxs)("div",{className:"graview-bar-row",children:[(0,l.jsx)("div",{className:"graview-bar-app",children:(0,l.jsx)(rt,{className:"graview-bar-name",children:(0,l.jsxs)(tt,{...n.href!==void 0?{href:n.href,onClick:nt(n.go)}:{type:"button",onClick:n.go},"data-testid":"app-home",...n.current?{"aria-current":"page"}:{},title:c?`${r} \u2014 ${c}`:`${r} \u2014 home`,className:"graview-bar-home",children:[(0,l.jsx)(be,{brand:e,size:20}),(0,l.jsx)("span",{className:"graview-bar-app-name","data-testid":"app-name",children:r})]})})}),i?(0,l.jsx)(vt,{faces:i,form:v,drawn:ot}):null,(0,l.jsx)("div",{className:"graview-bar-mid",...Ve?{"data-places":"standing"}:!L&&re?{"data-place":""}:{},children:L?null:re}),!L&&h&&h.places.length>1?(0,l.jsxs)("span",{className:"graview-bar-ruler","aria-hidden":"true","data-graview-bar-ruler":"",children:[h.places.map(w=>(0,l.jsx)("span",{className:"graview-bar-at",children:w.label},w.key)),(0,l.jsxs)("span",{className:"graview-bar-at",children:[ke,(0,l.jsx)(Er,{})]})]}):null,(0,l.jsxs)("div",{className:"graview-bar-tools",children:[s?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("button",{type:"button",className:"graview-bar-find-open",ref:Me,"data-testid":"app-find-open","aria-label":"Find",title:"Find",onClick:et,style:{...G,display:void 0},children:(0,l.jsx)(xt,{})}),(0,l.jsxs)("div",{className:"graview-bar-find","data-testid":"app-find",onBlur:w=>{let T=w.relatedTarget;T instanceof Node&&w.currentTarget.contains(T)||w.currentTarget.querySelector("input")?.value||Oe()},onKeyDownCapture:w=>{w.key==="Escape"&&L&&(ee.current=!0)},onKeyDown:w=>{w.key!=="Escape"||!L||(!w.defaultPrevented||!w.currentTarget.querySelector("input")?.value?Oe():ee.current=!1)},children:[(0,l.jsx)("div",{ref:D,className:"graview-bar-find-slot",children:u}),(0,l.jsx)("span",{className:"graview-bar-find-keys","data-testid":"app-find-keys","aria-hidden":"true",children:ht()})]})]}):null,(0,l.jsx)("div",{ref:Yr,className:"graview-bar-own","data-graview-bar-own":""}),k?(0,l.jsx)(m.Suspense,{fallback:null,children:(0,l.jsx)(ct,{scene:!Q,compact:L})}):null,(0,l.jsx)(pt,{}),p]})]})]}),L&&re?(0,l.jsx)("div",{className:"graview-bar-line","data-graview-place-line":"","data-testid":"app-place-line",children:re}):null]})}function vt({faces:e,form:r,drawn:t}){let n=i=>{let a=e[i];return(0,l.jsxs)("button",{type:"button",className:"graview-bar-face","data-testid":`app-face-${i}`,"aria-pressed":a.current,title:a.label,onClick:()=>{a.current||a.go()},children:[i==="scene"?(0,l.jsx)(Br,{}):(0,l.jsx)(bt,{}),(0,l.jsx)("span",{children:a.label})]})};return(0,l.jsxs)("div",{className:"graview-bar-faces",role:"group","aria-label":`${e.scene.label} or ${e.pages.label}`,"data-testid":"app-faces","data-switch":r,"data-switch-drawn":t,children:[n("scene"),n("pages")]})}function yt(e){let r=e.querySelector(".graview-bar-faces"),t=e.querySelector(".graview-bar-mid"),n=e.querySelector(".graview-bar-find");if(!r||!t||n?.matches(":focus-within")||e.getBoundingClientRect().width<J)return null;let a=Nr(r),o=t.querySelector(".graview-bar-place-words"),d=o?parseFloat(getComputedStyle(o).fontSize)||14:0,p=o?Math.min(o.scrollWidth+34,14*d):0,s=t.getBoundingClientRect().width-p;if(n&&n.getBoundingClientRect().width>0){let c=parseFloat(getComputedStyle(n).flexBasis);isFinite(c)&&(s-=Math.max(0,c-n.getBoundingClientRect().width))}return Tr(e)?!1:r.getAttribute("data-switch-drawn")==="icons"?s>=a+2:s>=-1}function Tr(e){let r=e.querySelector(".graview-bar-app-name");return!!(r&&r.getBoundingClientRect().height>parseFloat(getComputedStyle(r).lineHeight)*1.5)}var Ar=e=>e.button===0&&!(e.metaKey||e.ctrlKey||e.shiftKey||e.altKey);function ht(){let e=globalThis.navigator?.platform??"";return/Mac|iPhone|iPad|iPod/.test(e)?"\u2318K":"Ctrl K"}function X({size:e,box:r=e,children:t}){return(0,l.jsx)("svg",{width:e,height:e,viewBox:`0 0 ${r} ${r}`,"aria-hidden":"true",focusable:"false",style:{flex:"0 0 auto"},children:t})}function Br(){return(0,l.jsxs)(X,{size:14,children:[(0,l.jsx)("path",{d:"M7 1.5 L12.5 4.5 L7 7.5 L1.5 4.5 Z",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinejoin:"round"}),(0,l.jsx)("path",{d:"M1.5 7.5 L7 10.5 L12.5 7.5",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinejoin:"round",strokeLinecap:"round"})]})}function bt(){return(0,l.jsxs)(X,{size:14,children:[(0,l.jsx)("rect",{x:"2.25",y:"1.75",width:"9.5",height:"10.5",rx:"1.5",fill:"none",stroke:"currentColor",strokeWidth:"1.3"}),(0,l.jsx)("path",{d:"M4.5 5 H9.5 M4.5 7.25 H9.5 M4.5 9.5 H7.5",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round"})]})}function Er(){return(0,l.jsx)(X,{size:10,children:(0,l.jsx)("path",{d:"M2 3.5 L5 6.5 L8 3.5",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})})}function xt(){return(0,l.jsxs)(X,{size:16,children:[(0,l.jsx)("circle",{cx:"7",cy:"7",r:"4.75",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),(0,l.jsx)("path",{d:"M10.5 10.5 L14 14",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}function kt({place:e}){if(e.key===I)return(0,l.jsx)(Br,{});if(e.group==="home")return(0,l.jsx)(X,{size:13,box:14,children:(0,l.jsx)("path",{d:"M2 6.5 L7 2 L12 6.5 V12 H2 Z",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinejoin:"round"})});let r=e.kind?`hsl(${Math.round(ze(e.kind))} 55% 52%`:"rgb(128 128 128";return(0,l.jsx)("span",{"aria-hidden":"true",style:{display:"inline-block",width:12,height:8,clipPath:"polygon(50% 0, 100% 50%, 50% 100%, 0 50%)",background:e.group==="lists"?`${r})`:`linear-gradient(${r}), ${r})) center / 6px 4px no-repeat, ${r} / 0.35)`}})}var St=[{group:"home"},{group:"lists",heading:"Lists"},{group:"pictures",heading:"Pictures"}],ke="More";function Hr({place:e,current:r,reach:t,standing:n,done:i}){let a=e.key===r,o=t.href?.(e.path);return(0,l.jsxs)(o!==void 0?"a":"button",{className:n?"graview-bar-at":"graview-bar-item","data-testid":`app-place-${e.key}`,"data-place-path":e.path,...a?{"aria-current":"page"}:{},...o!==void 0?{href:o}:{type:"button"},onClick:p=>{i(),t.go&&(o!==void 0&&!Ar(p)||(p.preventDefault(),t.go(e)))},children:[n?null:(0,l.jsx)("span",{className:"graview-bar-mark",children:(0,l.jsx)(kt,{place:e})}),n&&a?(0,l.jsx)("span",{"data-testid":"app-place-current",children:e.label}):(0,l.jsx)("span",{children:e.label})]})}function Pt({places:e,current:r,reach:t,id:n,done:i}){return(0,l.jsx)(l.Fragment,{children:St.map(({group:a,heading:o})=>{let d=e.filter(s=>s.group===a);if(d.length===0)return null;let p=`${n}-${a}`;return(0,l.jsxs)("div",{role:"group",...o?{"aria-labelledby":p}:{"aria-label":d[0].label},"data-place-group":a,children:[o?(0,l.jsx)("p",{id:p,children:o}):null,(0,l.jsx)("ul",{children:d.map(s=>(0,l.jsx)("li",{children:(0,l.jsx)(Hr,{place:s,current:r,reach:t,standing:!1,done:i})},s.key))})]},a)})})}function Lt({places:e,current:r,reach:t,scene:n,stands:i}){let a=W("places"),o=(0,m.useRef)(i);a.open||(o.current=i);let d=o.current,p=e.find(c=>c.key===r)?.label??"Places",s=d?e.filter((c,u)=>!d.includes(u)):e;return(0,l.jsxs)("nav",{className:d?"graview-bar-places":"graview-bar-place-at","aria-label":n?"What the scene shows":"The app\u2019s places",...d?{"data-testid":"app-places-standing"}:{},children:[d?.map(c=>(0,l.jsx)(Hr,{place:e[c],current:r,reach:t,standing:!0,done:()=>{}},e[c].key)),s.length>0?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("button",{type:"button",className:d?"graview-bar-at":"graview-bar-place","data-testid":"app-places-open",...a.trigger,onClick:a.toggle,"aria-label":d?`${ke} \u2014 ${s.length} more ${n?"pictures":"places"}`:`${p} \u2014 ${n?"everything the scene shows":"every place"}`,title:d?s.map(c=>c.label).join(", "):p,children:[d?ke:(0,l.jsx)("span",{className:"graview-bar-place-words","data-testid":"app-place-current",children:p}),(0,l.jsx)(Er,{})]}),(0,l.jsx)("div",{...a.pane,"data-testid":"app-places",hidden:!a.open,className:"graview-bar-list",style:_,children:(0,l.jsx)(Pt,{places:s,current:r,reach:t,id:a.pane.id,done:()=>a.setOpen(!1)})})]}):null]})}function $t(e,r,t,n){let i=e.querySelector(".graview-bar-ruler"),a=e.querySelector(".graview-bar-mid");if(!i||!a)return null;let o=e.querySelector(".graview-bar-find");if(o?.matches(":focus-within"))return;if(e.getBoundingClientRect().width<J||Tr(e))return null;let d=[...i.children].map(k=>k.getBoundingClientRect().width),p=d.pop()??0,s=e.querySelector(".graview-bar-faces"),c=s&&t?Nr(s):0,u=s?.getAttribute("data-switch-drawn")==="words"?c:0,f=a.getBoundingClientRect().left,v=o?.getBoundingClientRect(),x=v&&v.width>0?v.right-f-(parseFloat(getComputedStyle(o).minWidth)||0)-8:a.getBoundingClientRect().width,g=[...n].map(k=>k!=="0");return $r({widths:d,current:r,room:Math.floor(x+u-c),more:p,primary:g})?.join(",")??null}function Nr(e){return[...e.querySelectorAll(".graview-bar-face span")].reduce((r,t)=>r+t.scrollWidth+10,0)}var Tt=e=>`graview:lenses:${e}`,At=(e,r)=>e?.name??r.kinds.join(",");function Pe(e){try{let r=JSON.parse(localStorage.getItem(Tt(e))??"[]");return Array.isArray(r)?r.filter(t=>typeof t?.title=="string"&&typeof t.lens=="string"):[]}catch{return[]}}var Mr={name:"Graview",typography:{body:fe.body,mono:fe.mono},schemes:ne},Cr={ground:"--graview-ground",groundDeep:"--graview-ground-deep",wash:"--graview-wash",panel:"--graview-panel",panelMuted:"--graview-panel-muted",panelWarning:"--graview-panel-warning",edge:"--graview-edge",edgeBright:"--graview-edge-bright",ink:"--graview-ink",inkMuted:"--graview-ink-muted",inkFaint:"--graview-ink-faint",accent:"--graview-accent",accentDim:"--graview-accent-dim",accentInk:"--graview-accent-ink",warn:"--graview-warn",good:"--graview-good",bad:"--graview-bad",glow:"--graview-glow",bar:"--graview-bar",float:"--graview-float",liftLow:"--graview-lift-low",liftHigh:"--graview-lift-high",tintAlpha:"--graview-tint-alpha",tintLightness:"--graview-tint-lightness",gridAlpha:"--graview-grid-alpha"};function Or(e){return Object.keys(Cr).map(r=>` ${Cr[r]}: ${e[r]};`).join(`
63
- `)}function Rr(e,r){let t=e===r?e:`${e} ${r}`;return` ${t} [data-graview-view] { transition: none; }
64
- ${t} [data-graview-touched] > * { animation: none; }
65
- ${t} [data-graview-view][data-graview-wrote] > *,
66
- ${t} [data-graview-view][data-graview-read] > * {
67
- animation: none;
68
- box-shadow: 0 0 0 2px var(--graview-activity);
69
- }
70
- ${t} [data-graview-view][data-graview-read] > * { box-shadow: 0 0 0 1px var(--graview-activity); }
71
- ${t} [data-graview-connector][data-graview-activity] { animation: none; stroke-opacity: 1; }`}function Ht(e="dark",r=Mr,t={}){let n=Mt(e,r,t);return t.scope===void 0?n:Nt(n,t.scope)}function Nt(e,r){let t=`:where(${r}) `,n=o=>o===r||o.startsWith(`${r} `)||o.startsWith(`${r}:`)||o.startsWith(`${r}[`)||o.startsWith(":root")&&o.includes(` ${r} `),i=o=>{let d=o.match(/^\s*/)[0],p=Rt(o.trim()).map(s=>n(s)?s:`${t}${s}`);return`${d}${p.join(", ")} `},a=o=>{let d="",p=0;for(;p<o.length;){let s=o.indexOf("{",p);if(s===-1)return d+o.slice(p);let c=Ct(o,s),u=o.slice(p,s),f=o.slice(s+1,c),v=u.trim().startsWith("@")?u.trim().split(/[\s(]/)[0]:null;v===null?d+=`${i(u)}{${f}}`:v==="@media"||v==="@supports"||v==="@container"||v==="@layer"?d+=`${u}{${a(f)}}`:d+=`${u}{${f}}`,p=c+1}return d};return a(e)}function Ct(e,r){let t=0,n=null;for(let i=r;i<e.length;i++){let a=e[i];if(n)a==="\\"?i++:a===n&&(n=null);else if(a==='"'||a==="'")n=a;else if(a==="/"&&e[i+1]==="*")i=e.indexOf("*/",i+2)+1||e.length;else if(a==="{")t++;else if(a==="}"&&--t===0)return i}return e.length}function Rt(e){let r=[],t=0,n=null,i="";for(let a of e){if(n)a===n&&(n=null);else if(a==='"'||a==="'")n=a;else if(a==="("||a==="[")t++;else if(a===")"||a==="]")t--;else if(a===","&&t===0){r.push(i.trim()),i="";continue}i+=a}return i.trim()&&r.push(i.trim()),r}function Mt(e,r,t){let n=r.schemes[e],i=t.scope??":root",a=t.scope??"html, body",o=t.scope??"body",d=":root",p=Ge(r),s=qe(r),c=Je(r.kit);return`${i} {
72
- ${Or(n)}
73
- ${Xe(c)}
74
-
75
- ${er()}
76
- --graview-font-body: ${s.body};
77
- --graview-font-display: ${s.display};
78
- --graview-font-mono: ${s.mono};
79
-
80
- --graview-weight-display: ${s.weights.display};
81
- --graview-weight-body: ${s.weights.body};
82
- --graview-weight-label: ${s.weights.label};
83
-
84
- --graview-text-small: .833rem;
85
- --graview-text-body: 1rem;
86
- --graview-text-heading: 1.2rem;
87
- --graview-text-title: 1.728rem;
88
-
89
- --graview-radius: ${p.radius}px;
90
- --graview-radius-sm: ${p.radiusSmall}px;
91
- --graview-pad: ${p.pad}px;
92
- --graview-pad-sm: ${p.padSmall}px;
93
- --graview-gap: ${p.gap}px;
94
- color-scheme: ${e};
95
- }
96
-
97
- ${a} {
98
- margin: 0;
99
- background: var(--graview-ground-deep);
100
- color: var(--graview-ink);
101
- }
102
-
103
-
104
- ${o} {
105
- font: 0.875rem/1.55 var(--graview-font-body);
106
- font-weight: var(--graview-weight-body);
107
- font-variant-numeric: tabular-nums;
108
- -webkit-font-smoothing: antialiased;
109
- }
110
-
111
-
112
- h1, h2, h3, h4 { font-family: var(--graview-font-display); font-weight: var(--graview-weight-display); }
113
- h1, h2 { letter-spacing: ${Ke}; }
114
-
115
- .graview-logo > svg { display: block; height: 100%; width: auto; }
116
- code, kbd, samp { font-family: var(--graview-font-mono); }
117
-
118
-
119
- [data-graview-figure] > svg {
120
- width: 100%;
121
- height: 100%;
122
- display: block;
123
- overflow: visible;
124
- }
125
-
126
-
127
- @property --graview-altitude {
128
- syntax: "<number>";
129
- inherits: true;
130
- initial-value: 0;
131
- }
132
-
133
-
134
- .graview-ground {
135
- position: relative;
136
-
137
- isolation: isolate;
138
- z-index: ${Qe("scene")};
139
- background: var(--graview-wash), var(--graview-ground);
140
- --graview-altitude: 0;
141
- transition: --graview-altitude 640ms cubic-bezier(0.33, 0, 0.2, 1);
142
- }
143
-
144
-
145
-
146
- .graview-ground::before {
147
- content: "";
148
- position: absolute;
149
- inset: 0;
150
- pointer-events: none;
151
- background-image:
152
- linear-gradient(var(--graview-edge) 1px, transparent 1px),
153
- linear-gradient(90deg, var(--graview-edge) 1px, transparent 1px);
154
- background-size: var(--graview-kit-grid-size, 64px) var(--graview-kit-grid-size, 64px);
155
- opacity: calc(var(--graview-kit-grid, 1) * var(--graview-grid-alpha) * (1 - var(--graview-altitude)));
156
- mask-image: radial-gradient(120% 90% at 50% 40%, #000 30%, transparent 78%);
157
- }
158
-
159
-
160
- .graview-scroll {
161
- overflow: auto;
162
- min-height: 0;
163
- --graview-scroll-shade: ${e==="light"?"rgba(20,30,32,0.22)":"rgba(0,0,0,0.55)"};
164
- }
165
- .graview-scroll[data-graview-more-below] {
166
- box-shadow: inset 0 -12px 10px -10px var(--graview-scroll-shade);
167
- }
168
- .graview-scroll[data-graview-more-above] {
169
- box-shadow: inset 0 12px 10px -10px var(--graview-scroll-shade);
170
- }
171
- .graview-scroll[data-graview-more-above][data-graview-more-below] {
172
- box-shadow: inset 0 12px 10px -10px var(--graview-scroll-shade), inset 0 -12px 10px -10px var(--graview-scroll-shade);
173
- }
174
-
175
-
176
-
177
-
178
- .graview-ground::after {
179
- content: "";
180
- position: absolute;
181
- inset: 0;
182
- pointer-events: none;
183
- --graview-lattice-tile: var(--graview-lattice-cell, calc(var(--graview-kit-lattice-size, 46px) * 2.2361));
184
- --graview-lattice-line: var(--graview-edge);
185
- background-image:
186
- linear-gradient(to top right, transparent calc(50% - 0.5px), var(--graview-lattice-line) calc(50% - 0.5px), var(--graview-lattice-line) calc(50% + 0.5px), transparent calc(50% + 0.5px)),
187
- linear-gradient(to top left, transparent calc(50% - 0.5px), var(--graview-lattice-line) calc(50% - 0.5px), var(--graview-lattice-line) calc(50% + 0.5px), transparent calc(50% + 0.5px)),
188
- linear-gradient(to top right, transparent calc(50% - 0.5px), var(--graview-lattice-line) calc(50% - 0.5px), var(--graview-lattice-line) calc(50% + 0.5px), transparent calc(50% + 0.5px)),
189
- linear-gradient(to top left, transparent calc(50% - 0.5px), var(--graview-lattice-line) calc(50% - 0.5px), var(--graview-lattice-line) calc(50% + 0.5px), transparent calc(50% + 0.5px));
190
-
191
- --graview-lattice-rise: calc(var(--graview-lattice-tile) * var(--graview-lattice-tilt, 0.5));
192
- background-size:
193
- var(--graview-lattice-tile) var(--graview-lattice-rise),
194
- var(--graview-lattice-tile) var(--graview-lattice-rise),
195
- calc(var(--graview-lattice-tile) / 2) calc(var(--graview-lattice-rise) / 2),
196
- calc(var(--graview-lattice-tile) / 2) calc(var(--graview-lattice-rise) / 2);
197
-
198
- background-position: var(--graview-lattice-x, 0px) var(--graview-lattice-y, 0px);
199
-
200
- opacity: calc(var(--graview-kit-lattice, 1) * var(--graview-grid-alpha) * 2 * var(--graview-altitude));
201
- mask-image: linear-gradient(to top, #000 42%, rgba(0,0,0,0.35) 70%, transparent 92%);
202
- -webkit-mask-image: linear-gradient(to top, #000 42%, rgba(0,0,0,0.35) 70%, transparent 92%);
203
- }
204
-
205
-
206
- .graview-profile-keeping { display: grid; gap: 6px; }
207
- .graview-profile-keeping:not(:has(button, a)) { display: none; }
208
- .graview-profile-keeping > * { justify-self: start; }
209
-
210
- .graview-host-action:hover,
211
- .graview-host-action:focus-visible {
212
- background: var(--graview-wash);
213
- color: var(--graview-accent);
214
- }
215
-
216
-
217
-
218
- @keyframes graview-settle {
219
- from { opacity: 0; transform: translateY(7px); }
220
- }
221
-
222
-
223
- [data-graview-pick] {
224
- cursor: pointer;
225
- transition: filter 140ms ease, box-shadow 140ms ease;
226
- }
227
- [data-graview-pick]:hover {
228
- filter: brightness(${e==="light"?.96:1.18});
229
- }
230
- [data-graview-pick]:focus-visible {
231
- outline: 2px solid var(--graview-accent);
232
- outline-offset: 2px;
233
- border-radius: 7px;
234
- }
235
- .graview-activity-record:hover > [data-graview-primitive="chip"] {
236
- filter: brightness(${e==="light"?.96:1.18});
237
- }
238
- .graview-activity-record:focus-visible {
239
- outline: 2px solid var(--graview-accent);
240
- outline-offset: 2px;
241
- }
242
-
243
- [data-graview-slot]:focus-visible {
244
- outline: none;
245
- }
246
- [data-graview-slot]:focus-visible > span:first-of-type {
247
- box-shadow: 0 0 0 2px var(--graview-ground), 0 0 0 4px var(--graview-accent);
248
- }
249
-
250
-
251
- [data-graview-view] { cursor: pointer; }
252
- [data-graview-view]:hover { filter: brightness(${e==="light"?.985:1.12}); }
253
- [data-graview-view]:focus-visible {
254
- outline: 2px solid var(--graview-accent);
255
- outline-offset: 3px;
256
- border-radius: var(--graview-radius);
257
- }
258
-
259
- button {
260
- font: inherit;
261
- font-weight: var(--graview-weight-label);
262
- color: var(--graview-ink);
263
- padding: 7px 13px;
264
- border: 1px solid var(--graview-edge);
265
- border-radius: var(--graview-radius-sm, 8px);
266
- background: var(--graview-panel);
267
- box-shadow: ${e==="light"?"0 1px 2px rgba(24,33,58,0.05)":"none"};
268
- cursor: pointer;
269
- transition: border-color 160ms ease, box-shadow 160ms ease, background 160ms ease;
270
- }
271
-
272
- button:hover:not(:disabled) {
273
- border-color: var(--graview-edge-bright);
274
- box-shadow: ${e==="light"?"0 1px 2px rgba(24,33,58,0.06), 0 6px 16px -8px rgba(24,33,58,0.2)":"0 0 0 1px var(--graview-accent-dim)"};
275
- }
276
- button:focus-visible {
277
- outline: 2px solid var(--graview-accent);
278
- outline-offset: 2px;
279
- }
280
- button:disabled { opacity: 0.45; cursor: default; }
281
-
282
- code { color: var(--graview-ink-muted); font-size: 0.8125rem; letter-spacing: 0.02em; }
283
-
284
-
285
- [data-graview-view] {
286
- transition: filter 260ms cubic-bezier(0.22, 1, 0.36, 1);
287
- }
288
-
289
-
290
- [data-graview-stage="dom"] [data-graview-view],
291
- [data-graview-stage="dom"] [data-graview-view] > [data-graview-natural] {
292
- pointer-events: none;
293
- }
294
-
295
-
296
-
297
- @keyframes graview-touched {
298
- 0% { box-shadow: 0 0 0 0 var(--graview-accent-dim); }
299
- 35% { box-shadow: 0 0 26px 3px var(--graview-accent-dim); }
300
- 100% { box-shadow: 0 0 0 0 transparent; }
301
- }
302
-
303
- @keyframes graview-landed {
304
- 0% { box-shadow: 0 0 0 0 var(--graview-activity); opacity: 0.55; }
305
- 30% { box-shadow: 0 0 30px 4px var(--graview-activity); opacity: 1; }
306
- 100% { box-shadow: 0 0 0 0 transparent; opacity: 1; }
307
- }
308
-
309
-
310
- @keyframes graview-considered {
311
- 0% { outline-color: transparent; }
312
- 25% { outline-color: var(--graview-activity); }
313
- 100% { outline-color: transparent; }
314
- }
315
-
316
-
317
- @keyframes graview-relation {
318
- 0% { stroke-opacity: 0.28; stroke-width: 1.4; }
319
- 30% { stroke-opacity: 1; stroke-width: 3; }
320
- 100% { stroke-opacity: 0.28; stroke-width: 1.4; }
321
- }
322
-
323
-
324
- @media (prefers-reduced-motion: reduce) {
325
- ${Rr(`${d}:not([data-graview-motion='full'])`,o)}
326
- }
327
- ${Rr(`${d}[data-graview-motion='reduce']`,o)}`}var O=y(N(),1);var S=y(b(),1);function Ot({scheme:e,onScheme:r,profileHref:t,keeping:n,hostActions:i=Vt,signature:a=!1}){let{store:o,principal:d,seats:p,people:s}=ae(),c=W("profile"),u=c.open,[f,v]=(0,O.useState)(!1);(0,O.useEffect)(()=>Dt(oe),[]),u&&!f&&v(!0),(0,O.useEffect)(()=>{u&&oe()},[u]);let x=d.id===void 0?void 0:o.graph.getNode(d.id),g=x===void 0?d.id===void 0?"Nobody in particular":_e(d,{graph:o.graph,schema:o.schema,seats:p,people:s}):Fe(o.schema.tryDefinition(x.kind),x);return(0,S.jsxs)("div",{style:{position:"relative"},children:[(0,S.jsx)("button",{type:"button","data-testid":"profile-button",...c.trigger,onClick:c.toggle,onPointerEnter:oe,onFocus:oe,"aria-label":`${g} \u2014 you, your seat and your settings`,title:`${g} \u2014 you, your seat and your settings`,style:{...G,borderRadius:999},children:(0,S.jsx)("span",{"aria-hidden":"true","data-testid":"profile-mark",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:K-4,height:K-4,borderRadius:999,fontSize:"0.8125rem",fontWeight:600,background:"var(--graview-panel-muted)",color:"var(--graview-ink)",border:"1px solid var(--graview-edge)"},children:_t(g)})}),(0,S.jsxs)("section",{...c.pane,"aria-label":"Profile","data-testid":"profile","data-graview-offstage":"",hidden:!u,style:{..._,width:280,maxWidth:"calc(100vw - 32px)",maxHeight:"min(62cqh, 520px)",overflowY:"auto",overflowX:"hidden",display:u?"grid":"none",gap:12,padding:12,borderRadius:10,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)"},children:[f?(0,S.jsx)(O.Suspense,{fallback:null,children:(0,S.jsx)(Ft,{part:"top",name:g,me:x,profileHref:t,hostActions:i,close:()=>c.setOpen(!1)})}):null,(0,S.jsxs)("div",{className:"graview-profile-keeping","data-testid":"profile-keeping",style:zt,children:[(0,S.jsx)("span",{style:Wt,children:"Keeping this app"}),n]}),f?(0,S.jsx)(O.Suspense,{fallback:null,children:(0,S.jsx)(It,{part:"rest",name:g,me:x,scheme:e,onScheme:r,hostActions:i,signature:a,close:()=>c.setOpen(!1)})}):null]})]})}var Vt=[],oe=()=>C.prefetch(),Ft=C.part((e,r)=>(0,S.jsx)(e.ProfilePane,{...r}),{what:"The rest of your menu"}),It=C.part((e,r)=>(0,S.jsx)(e.ProfilePane,{...r}),{quiet:!0});function Dt(e){let r=()=>{(typeof navigator>"u"||navigator.onLine!==!1)&&e()},t=globalThis;if(t.requestIdleCallback){let i=t.requestIdleCallback(r,{timeout:5e3});return()=>t.cancelIdleCallback?.(i)}let n=setTimeout(r,2500);return()=>clearTimeout(n)}function _t(e){return(e.trim()[0]??"?").toUpperCase()}var Wt={fontSize:"0.75rem",letterSpacing:"0.14em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},zt={paddingTop:10,borderTop:"1px solid var(--graview-edge)"};var Le=y(N(),1);var Vr="The whole thing",se=e=>`scene:${e.kind}:${e.as}`;function Fr(e){let{view:r}=e,t=e.places.filter(c=>!e.hidden.has(c.kind)),n=j(t),i=(c,u)=>{if(c===I)return cr(pr(u,!0),"view",null);let f=n.find(v=>se(v)===c);return f?gr(u,f.over?.find(v=>u.focusId===U(v))??f.kind,f.as):null},a=[{key:I,label:Vr,path:`${me}${ye(i(I,ve))}`,group:"home"},...n.map(c=>({key:se(c),label:Y(c,t,e.schema),path:`${me}${ye(i(se(c),ve))}`,group:"pictures",kind:c.kind}))],o=r.within?.view,d=c=>r.focusId===U(c.kind)&&(o===void 0?t.filter(u=>u.kind===c.kind).at(-1)===c:o===c.as),p=t.find(c=>d(c)&&(o!==void 0||!r.overview)),s=p?n.find(c=>rr(c,p)):void 0;return{places:a,current:s?se(s):I,to:i}}function Kt(){let{store:e,views:r,hiddenKinds:t}=ae(),{view:n,go:i}=yr(),a=r.places(),o=(0,Le.useMemo)(()=>Fr({places:a,hidden:t,view:n,schema:e.schema}),[a,t,n,e.schema]),d=(0,Le.useMemo)(()=>({go:p=>{let s=o.to(p.key,n);s&&i(s)}}),[o,n,i]);return{places:o.places,current:o.current,reach:d}}var P=y(N(),1);var $=y(b(),1),Ir=6e3;function Gt(){let e=[],r=0,t=new Set,n=new Map,i,a=()=>{for(let s of[...t])s()},o=s=>{if(clearTimeout(n.get(s.id)),n.delete(s.id),s.kind!=="toast")return;let c=(s.actions?.length??0)+(s.action?1:0),u=s.timeout??(c>0?!1:Ir);u!==!1&&n.set(s.id,setTimeout(()=>i?.()?o(s):d(s.id),u))},d=s=>{clearTimeout(n.get(s)),n.delete(s),e.some(c=>c.id===s)&&(e=e.filter(c=>c.id!==s),a())},p=s=>{e=e.some(c=>c.id===s.id)?e.map(c=>c.id===s.id?s:c):[...e,s],o(s),a()};return{notify(s){let c=s.id??`notice-${++r}`;return p({...s,id:c,said:++r}),{id:c,dismiss:()=>d(c),update:u=>{let f=e.find(v=>v.id===c);f&&p({...f,...u,id:c,kind:f.kind,said:u.sentence!==void 0&&u.sentence!==f.sentence?++r:f.said})}}},dismiss:d,hold(s){i=s},list:()=>e,subscribe(s){return t.add(s),()=>t.delete(s)}}}function qt({notices:e}){let r=e.reduce((d,p)=>!d||p.said>d.said?p:d,void 0),[t,n]=(0,P.useState)(""),[i,a]=(0,P.useState)(""),o=(0,P.useRef)(0);return(0,P.useEffect)(()=>{if(!r||r.said===o.current)return;o.current=r.said;let d=r.tone==="bad";(d?a:n)("");let p=setTimeout(()=>(d?a:n)(r.sentence),50);return()=>clearTimeout(p)},[r]),(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)("div",{role:"status","aria-live":"polite","data-testid":"notices-said",style:ie,children:t}),(0,$.jsx)("div",{role:"alert","data-testid":"notices-alarm",style:ie,children:i})]})}var jt=(0,P.createContext)(null);function Yt({board:e,anchor:r}){let t=(0,P.useSyncExternalStore)(e.subscribe,e.list,e.list);return(0,P.useEffect)(()=>Zt(Dr.prefetch),[]),(0,$.jsxs)($.Fragment,{children:[t.length>0?(0,$.jsx)(P.Suspense,{fallback:null,children:(0,$.jsx)(Ut,{notices:t,anchor:r,board:e})}):null,(0,$.jsx)(qt,{notices:t})]})}var Dr=B(A(()=>import("./chunk.XS7YFNDU.js")));var Ut=Dr.part((e,r)=>(0,$.jsx)(e.NoticeStacks,{...r}),{quiet:!0});function Zt(e){let r=()=>{(typeof navigator>"u"||navigator.onLine!==!1)&&e()},t=globalThis;if(t.requestIdleCallback){let i=t.requestIdleCallback(r,{timeout:5e3});return()=>t.cancelIdleCallback?.(i)}let n=setTimeout(r,2500);return()=>clearTimeout(n)}var q=y(N(),1);var E=y(b(),1),Jt=C.part((e,r)=>(0,E.jsx)(e.ProblemRows,{...r}),{what:"The problems",as:"li"}),$e=()=>C.prefetch();function Xt({clean:e="All rules hold"}){let r=vr(),{set:t}=mr(),n=r.length,[i,a]=(0,q.useState)(!1),o=W("problems",{open:i&&n>0,onOpenChange:a}),d=o.open,p=Wr(r,e);return(0,q.useEffect)(()=>{if(n===0)return;let s=setTimeout($e,1500);return()=>clearTimeout(s)},[n>0]),(0,E.jsxs)("div",{style:{position:"relative",display:"inline-flex"},children:[(0,E.jsxs)("button",{type:"button","data-testid":"standing",...o.trigger,"aria-disabled":n===0?!0:void 0,"aria-label":p,onClick:n===0?void 0:o.toggle,onPointerEnter:n===0?void 0:$e,onFocus:n===0?void 0:$e,title:p,style:{...G,padding:n===0?0:"0 8px",cursor:n===0?"default":"pointer",color:n===0?"var(--graview-ink-muted)":_r(r),fontVariantNumeric:"tabular-nums",fontWeight:600},children:[(0,E.jsx)(zr,{tone:n===0?"var(--graview-good)":_r(r)}),n>0?(0,E.jsx)("span",{"aria-hidden":"true",children:n}):null]}),d?(0,E.jsx)("ol",{...o.pane,"data-testid":"problems",style:{..._,width:300,maxHeight:"min(48cqh, 420px)",overflow:"auto",margin:0,padding:4,listStyle:"none",display:"grid",borderRadius:10,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)"},children:(0,E.jsx)(q.Suspense,{fallback:null,children:(0,E.jsx)(Jt,{violations:r,pick:s=>{t(s.nodeIds),o.setOpen(!1)}})})}):null]})}function Wr(e,r){return e.length===0?r:`${We(e)} \u2014 open what is broken, and what would fix it`}var _r=e=>e.some(r=>r.status==="could-not-judge"||r.status==="over-budget")?"var(--graview-bad)":"var(--graview-warn)";function zr({tone:e}){return(0,E.jsx)("span",{"aria-hidden":"true",style:{width:8,height:8,borderRadius:999,flex:"0 0 auto",background:e}})}function Qt(e,r,t=[]){if(e.focusId)return e.focusId;let i=(e.selection??[]).map(ur).find(a=>a!==null)??t.find(a=>r.includes(a))??r[0]??null;return i===null?null:U(i)}var de=y(b(),1),le=B(A(()=>import("./chunk.K75FUIZI.js")));function en(){return le.load().then(()=>{})}var rn=[{cardinality:"one",fidelity:"full",slot:"page"},{cardinality:"one",fidelity:"summary",slot:"card"},{cardinality:"one",fidelity:"glyph",slot:"row"},{cardinality:"many",fidelity:"full"},{cardinality:"many",fidelity:"summary"},{cardinality:"many",fidelity:"glyph"}];function tn({schema:e,specs:r,kind:t,view:n}){let i=le.current.frameworkViews(e,r).lookup(t,{cardinality:n.cardinality,fidelity:n.fidelity});return i?(0,de.jsx)(i,{...n}):null}var nn=le.part((e,r)=>(0,de.jsx)(tn,{...r}),{what:"This view"});function Kr(e,r,t){for(let n of r.kinds){let i=t?.[n];for(let a of rn){let o=p=>(0,de.jsx)(nn,{schema:r,specs:t,kind:n,view:p}),d=a.slot!==void 0&&i?.[a.slot]!==void 0;d&&(o.says=(p,s)=>le.current?.frameworkViews(r,t).lookup(n,{cardinality:a.cardinality,fidelity:a.fidelity})?.says?.(p,s)),e.register(n,{cardinality:a.cardinality,fidelity:a.fidelity},d?o:fr(o))}}return e}function an(e,r){return Kr(wr(e),e,r)}var Te=y(N(),1);var R=y(b(),1),Gr=B(A(()=>import("./chunk.Z2YUYZT4.js")));function on({lens:e,view:r}){let t=Gr.current.declaredLensView(e);return(0,R.jsx)(t,{...r})}var sn=Gr.part((e,r)=>(0,R.jsx)(on,{...r}),{what:"This picture"});function ln(e){let r=t=>(0,R.jsx)(Te.Suspense,{fallback:null,children:(0,R.jsx)(sn,{lens:e,view:t})});return e.lens==="blocks"&&(r.flows=!0),e.create===!1&&(r.creates=!1),r}var qr=B(A(()=>import("./chunk.Y4UXEL6Y.js")));function dn({blocks:e,view:r}){let t=qr.current.homeView(e);return(0,R.jsx)(t,{...r})}var cn=qr.part((e,r)=>(0,R.jsx)(dn,{...r}),{what:"The home"});function pn(e){let r=t=>(0,R.jsx)(Te.Suspense,{fallback:null,children:(0,R.jsx)(cn,{blocks:e,view:t})});return Object.defineProperty(r,Symbol.for("graview.home-blocks"),{value:!0}),r}function un(e,r){return r.home&&r.home.length>0&&e.home?.(pn(r.home)),jr(e,r),e.arrange?.(r.pages),e}function jr(e,r,t){for(let n of ar(r).drawn){if(t&&e.places().some(o=>o.title===n.title))continue;let i=ln(n),a={title:n.title,...n.across?{across:n.across}:{},...t?{beside:t}:{},...n.hidden?{hidden:!0}:{},over:n.kinds};for(let o of n.kinds)e.register(o,{cardinality:"many",fidelity:"full"},i,a),e.register(o,{cardinality:"many",fidelity:"summary"},i,a)}}function gn(e,r,t){t.length>0&&jr(e,{schema:r,lenses:t.map(({lens:n,...i})=>({...i,name:n}))},!0)}function fn(e,r,t){gn(e,r,Pe(t))}var V=y(N(),1),ce=y(b(),1);var Ae=e=>`graview:first-look:${e}`;function wn(e,r){if(e.seen!==void 0)try{return typeof e.seen=="function"?e.seen():e.seen}catch{return!0}try{return window.localStorage.getItem(Ae(r))!==null}catch{return!1}}function mn(e,r){if(e.seen===void 0)try{window.localStorage.setItem(Ae(r),"seen")}catch{}}var vn=B(A(()=>import("./chunk.NCTOBUCT.js"))),yn=vn.part((e,r)=>{let t=e.FirstLookHints;return(0,ce.jsx)(t,{...r})},{quiet:!0});function hn({firstLook:e,root:r,app:t}){let n=(0,V.useRef)(null);n.current=e===!0?{}:e||null;let[i,a]=(0,V.useState)(()=>n.current!==null&&typeof window<"u"&&!wn(n.current,t)),o=(0,V.useCallback)(d=>{if(a(!1),d===null)return;let p=n.current??{};mn(p,t),p.onDone?.(d)},[t]);return!i||n.current===null?null:(0,ce.jsx)(V.Suspense,{fallback:null,children:(0,ce.jsx)(yn,{root:r,steps:n.current.steps??[],onEnd:o})})}export{Ht as a,Nt as b,br as c,dt as d,st as e,lt as f,ie as g,C as h,ut as i,gt as j,Pr as k,ft as l,G as m,mt as n,Ot as o,Kt as p,Gt as q,jt as r,Yt as s,Tt as t,At as u,Pe as v,Xt as w,Wr as x,zr as y,Qt as z,un as A,gn as B,fn as C,en as D,an as E,hn as F};
@@ -1 +0,0 @@
1
- import{a as c,b as d,c as e,d as f,e as g,f as h,g as i,h as j,i as k,j as l,k as m,l as n,m as o,n as p}from"./chunk.RI3PYG5T.js";import{a,b}from"./chunk.UWGWXFWZ.js";import"./chunk.SE5SKFQH.js";import"./chunk.W3S6UXNA.js";import"./chunk.3VL5WECB.js";import"./chunk.JH6MU6TX.js";import"./chunk.WAFDCOOG.js";import"./chunk.L4DECHXR.js";import"./chunk.GFF2FB2J.js";import"./chunk.6V2RG5JG.js";import"./chunk.AJZBJBMO.js";export{j as ARRANGE_NARROW,o as ArrangeBar,e as CHIP_FIELDS,d as MANY_AT_THE_FAR_END,c as TYPED_FROM,p as arrangementCaption,a as arrangementOf,i as chipOffers,m as directionWords,g as farCount,f as farCounts,l as inSentence,h as offeredFilters,n as preloadArrangeLists,k as sayCondition,b as withArrangement};
@@ -1,3 +0,0 @@
1
- import"./chunk.3SKKIHU3.js";import"./chunk.HJCQ6I3S.js";import"./chunk.O2LK2AO7.js";import"./chunk.26CZTUY4.js";import"./chunk.3JNMSOFG.js";import"./chunk.OAF7TUMI.js";import{a as _,b as ge,c as me,e as fe}from"./chunk.QNGWEV47.js";import"./chunk.J2ITFGN3.js";import"./chunk.UT6642FC.js";import{a as de}from"./chunk.2CIBWZJG.js";import{d as he}from"./chunk.RRVIXV7W.js";import"./chunk.7BWT5L2L.js";import"./chunk.VSZQXB4Q.js";import"./chunk.SE5SKFQH.js";import"./chunk.W3S6UXNA.js";import{a as ye,d as we}from"./chunk.4SJUTBDV.js";import"./chunk.6T2Q6NLO.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{p as pe,s as q}from"./chunk.KQT7WAQE.js";import{a as ce}from"./chunk.PAVR5TK5.js";import"./chunk.OQDETV4X.js";import"./chunk.3VL5WECB.js";import"./chunk.JH6MU6TX.js";import{c as le}from"./chunk.WAFDCOOG.js";import{h as ue}from"./chunk.L4DECHXR.js";import{$ as H,A as oe,G as xe,K as R,R as ie,S as re,Z as N,ia as K,k as $,m as ne,n as G,pa as se,qa as W,s as P,w as ae}from"./chunk.GFF2FB2J.js";import{$ as I,M as D,V as M,W as F,Z as B,da as ee,dc as te}from"./chunk.6V2RG5JG.js";import{b as V}from"./chunk.AJZBJBMO.js";var i=V(xe(),1);var e=V(ie(),1),Se=ue.part((t,u)=>(0,e.jsx)(t.ProblemRows,{...u}),{what:"The problems",as:"li"}),A="var(--graview-gap, 8px)",ke=720;function Fe({showing:t}){return t.what==="lens"?(0,e.jsx)(Ce,{kind:t.kind},`lens:${t.kind}`):t.what==="record"?(0,e.jsx)(Ee,{id:t.id},`record:${t.id}`):(0,e.jsx)(Ne,{kind:t.kind},`district:${t.kind}`)}function Y({label:t,wide:u,testId:a,head:l,onClose:r,children:s,sheetHeight:f}){let h=(0,i.useRef)(null),[y,x]=(0,i.useState)(!1);(0,i.useLayoutEffect)(()=>{let o=h.current?.parentElement;if(!o)return;let p=()=>x(o.getBoundingClientRect().width<ke);if(p(),typeof ResizeObserver>"u")return;let b=new ResizeObserver(p);return b.observe(o),()=>b.disconnect()},[]);let g=(0,i.useRef)(r);return g.current=r,(0,i.useEffect)(()=>{let o=k=>{if(k.key!=="Escape"||k.defaultPrevented)return;let m=document.activeElement;m instanceof HTMLInputElement||m instanceof HTMLTextAreaElement||document.querySelector("[data-graview-popover]:popover-open")||p||g.current()},p=!1,b=()=>{p=document.querySelector('[data-testid="following-who"]')!==null};return window.addEventListener("keydown",b,!0),document.addEventListener("keydown",o),()=>{window.removeEventListener("keydown",b,!0),document.removeEventListener("keydown",o)}},[]),(0,e.jsxs)("section",{ref:h,"aria-label":t,"data-testid":a,"data-graview-map-panel":y?"sheet":"dock","data-graview-overlay":"","data-graview-offstage":"",className:"graview-map-panel",style:{position:"absolute",zIndex:te("rail"),boxSizing:"border-box",display:"flex",flexDirection:"column",background:"var(--graview-panel)",color:"var(--graview-ink)",overflow:"hidden",border:"1px solid var(--graview-edge)",borderRadius:"var(--graview-radius, 12px)",boxShadow:"var(--graview-lift-high)",...y?{left:A,right:A,bottom:`calc(${A} + env(safe-area-inset-bottom, 0px))`,height:f}:{top:A,right:A,bottom:A,width:u}},children:[y?(0,e.jsx)("style",{children:`:has(> [data-graview-map-panel="sheet"]) { --graview-sheet: calc(${f} + 2 * ${A} + env(safe-area-inset-bottom, 0px)); }`}):(0,e.jsx)("style",{children:`:has(> [data-graview-map-panel="dock"]) { --graview-dock: calc(${u} + 2 * ${A}); }`}),(0,e.jsxs)("header",{style:{display:"flex",alignItems:"flex-start",gap:10,padding:"14px 14px 10px 18px",borderBottom:"1px solid var(--graview-edge)"},children:[(0,e.jsx)("div",{style:{flex:"1 1 auto",minWidth:0},children:l}),(0,e.jsx)("button",{type:"button","data-testid":"map-panel-close","aria-label":"Close",title:"Close (Escape)",onClick:r,style:{flex:"0 0 auto",minWidth:32,height:32,borderRadius:8,fontSize:"1.1rem",lineHeight:1},children:"\xD7"})]}),(0,e.jsx)("div",{style:{flex:"1 1 auto",minHeight:0,overflow:"auto"},children:s})]})}var U={fontSize:"0.75rem",letterSpacing:"0.09em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},J={margin:"2px 0 0",fontSize:"1.125rem",fontWeight:600,lineHeight:1.3,overflowWrap:"anywhere"},Q={margin:"4px 0 0",fontSize:"0.875rem",color:"var(--graview-ink-muted)"},j={margin:"14px 18px 6px",fontSize:"0.8125rem",fontWeight:600,color:"var(--graview-ink-muted)"},z={listStyle:"none",margin:0,padding:"0 10px 6px"},X={all:"unset",outline:"revert-layer",boxSizing:"border-box",display:"flex",alignItems:"baseline",gap:8,width:"100%",padding:"6px 8px",borderRadius:6,cursor:"pointer",fontSize:"0.875rem"},L={minHeight:30,padding:"0 12px",borderRadius:8,fontSize:"0.8125rem"};function Z(){let{setSelection:t,setMenuAt:u}=N();return(a,l)=>{a.preventDefault(),t([l]),u({x:a.clientX,y:a.clientY,on:l})}}function ve({on:t,about:u}){let{setSelection:a,setMenuAt:l}=N();return(0,e.jsx)("button",{type:"button","data-testid":"map-panel-acts","aria-label":`What can be done with ${u}`,"aria-haspopup":"menu",style:L,onClick:r=>{let s=r.currentTarget.getBoundingClientRect();a([t]),l({x:Math.round(s.left),y:Math.round(s.bottom+4),on:t})},children:"Acts\u2026"})}var be=(t,u)=>({...$(G(t,!1),u),relation:null});function Ce({kind:t}){let u=Z(),{store:a,views:l,view:r,selection:s,setSelection:f}=N(),{go:h}=W(),y=H(),x=r.within?.view,g=l.places().filter(w=>w.kind===t),o=(x!==void 0?g.find(w=>w.as===x):void 0)??g.at(-1),p=l.resolve(t,{cardinality:"many",fidelity:"full"},o?.as??x),b=p?.view,k=a.schema.tryDefinition(t),m=(0,i.useMemo)(()=>a.graph.nodesOfKind(t).filter(w=>r.past===!0||M(k,w)),[a,t,y,r.past,k]),C=p?.title??o?.title??I(a.schema,t),E=b!==void 0&&K(b),d=s.filter(w=>a.graph.getNode(w)!==void 0),c=ce();return(0,e.jsxs)(Y,{label:C,testId:"lens-panel",wide:"min(max(440px, 46%), 760px)",sheetHeight:"60%",onClose:()=>h(ne($(r,null),"view",null)),head:E?null:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("div",{style:U,children:I(a.schema,t)}),(0,e.jsx)("h2",{style:J,"data-testid":"lens-panel-title",children:C}),(0,e.jsxs)("p",{style:Q,children:[B(a.schema,t,m.length),k?.description?` \xB7 ${k.description}`:""]}),o?(0,e.jsx)("div",{style:{marginTop:10},children:(0,e.jsx)("button",{type:"button","data-testid":"lens-panel-open",style:L,title:`Open ${C} on its own`,onClick:()=>h(oe(r,t,o.as)),children:"Open \u2197"})}):null]}),children:[(0,e.jsx)("style",{children:`.graview-ground[data-graview-altitude] .graview-plot:not([data-graview-plot="${P(t)}"]) { opacity: 0.35; }
2
- .graview-ground[data-graview-altitude] [data-graview-view^="kind:"]:not([data-graview-view="${P(t)}"]) { opacity: 0.4; }`}),(0,e.jsx)("div",{"data-graview-lens":o?.as??"",style:{padding:"8px 12px 16px",minHeight:"100%",boxSizing:"border-box",display:"grid",gridTemplateRows:"1fr",gridTemplateColumns:"minmax(0, 1fr)",alignItems:"start"},onClick:w=>{let n=R(w.target);if(!n||a.graph.getNode(n)===void 0)return;let v=w.target.closest("button, a, input, select, textarea, [contenteditable='true']");v&&!v.hasAttribute("data-graview-pick")||f([n])},onDoubleClick:w=>{let n=R(w.target);!n||a.graph.getNode(n)===void 0||h(be(r,n))},onContextMenu:w=>{let n=R(w.target);!n||a.graph.getNode(n)===void 0||u(w,n)},children:b?(0,e.jsx)(de.Provider,{value:C,children:(0,e.jsx)(re,{mode:"fullscreen",children:(0,e.jsx)(q,{kind:t,...p?.title?{view:p.title}:{},children:(0,e.jsx)(b,{nodes:m,label:C,fidelity:"full",cardinality:"many",mode:"fullscreen",selected:!1,...d.length>0?{implicated:d}:{},...c.length>0?{flagged:c}:{}})})})}):null})]})}function Ae(t,u,a,l){let r=l(a),s=new Map;for(let f of u){let h=f.from===a;if(!h&&f.to!==a)continue;let y=h?f.to:f.from,x=l(y);if(x===void 0||r===void 0)continue;let g=`${f.kind}|${h?"out":"in"}|${x}`,o=s.get(g);if(o){o.others.includes(y)||o.others.push(y);continue}s.set(g,{key:g,edge:f.kind,words:le(t,h?r:x,f.kind,h?"out":"in"),kind:x,others:[y]})}return[...s.values()]}function Ee({id:t}){let u=Z(),{store:a,views:l,view:r,setSelection:s}=N(),{go:f}=W(),h=H(),y=a.graph.getNode(t),x=d=>a.graph.getNode(d)?.kind,g=(0,i.useMemo)(()=>Ae(a.schema,a.graph.allEdges(),t,x),[a,t,h]);if(!y)return null;let o=y.kind,p=d=>{let c=a.graph.getNode(d);return c?F(a.schema.tryDefinition(c.kind),c):d},b=ee(a.schema.tryDefinition(o),o),m=l.resolve(o,{cardinality:"one",fidelity:"full"})?.view,C=m!==void 0&&!K(m),E=()=>r.focusId===t?f({...$(r,null),selection:[]}):s([]);return(0,e.jsxs)(Y,{label:`${p(t)}: its links`,testId:"record-panel",wide:C?"min(max(440px, 46%), 760px)":"min(360px, 40%)",sheetHeight:"52%",onClose:E,head:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("div",{style:U,children:b}),(0,e.jsx)("h2",{style:J,"data-testid":"record-panel-title",children:p(t)}),(0,e.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap",marginTop:10},children:[(0,e.jsx)("button",{type:"button","data-testid":"record-panel-go",style:L,onClick:()=>f(be(r,t)),children:"Go to it"}),(0,e.jsx)(ve,{on:t,about:p(t)}),(0,e.jsxs)("button",{type:"button","data-testid":"record-panel-district",style:L,onClick:()=>s([P(o)]),children:["All ",I(a.schema,o).toLowerCase()]})]})]}),children:[(0,e.jsx)("div",{"data-graview-record-card":t,style:{padding:"8px 18px 0"},children:C?(0,e.jsx)(q,{kind:o,children:(0,e.jsx)(m,{node:y,fidelity:"full",cardinality:"one",mode:"fullscreen",selected:!1})}):(0,e.jsx)(he,{id:t,shown:[p(t)]})}),g.length===0?(0,e.jsx)("p",{style:{...Q,margin:"14px 18px"},children:"No links yet."}):null,g.map(d=>(0,e.jsxs)("section",{"aria-label":d.words,"data-graview-links":d.edge,children:[(0,e.jsxs)("h3",{style:j,children:[d.words.charAt(0).toUpperCase()+d.words.slice(1)," ",(0,e.jsxs)("span",{style:{fontWeight:400,color:"var(--graview-ink-faint)"},children:["\xB7 ",d.others.length]})]}),(0,e.jsx)("ul",{style:z,children:d.others.map(c=>(0,e.jsx)("li",{children:(0,e.jsxs)("button",{type:"button",className:"graview-map-panel-row","data-graview-record":c,style:X,onClick:()=>s([c]),onContextMenu:T=>u(T,c),children:[(0,e.jsx)("span",{style:{flex:"1 1 auto",minWidth:0,overflowWrap:"anywhere"},children:p(c)}),d.kind!==o?null:(0,e.jsx)("span",{style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:b})]})},c))})]},d.key))]})}var Pe=24;function Ne({kind:t}){let u=Z(),{store:a,view:l,setSelection:r,setEmphasis:s}=N(),{go:f}=W(),h=H(),[y,x]=(0,i.useState)(""),g=a.schema.tryDefinition(t),o=(0,i.useMemo)(()=>a.graph.nodesOfKind(t).filter(n=>l.past===!0||M(g,n)).map(n=>({id:n.id,name:F(g,n)})).sort((n,v)=>n.name.localeCompare(v.name)),[a,t,h,l.past,g]),p=(0,i.useMemo)(()=>{let n=S=>{let O=a.graph.getNode(S);return O!==void 0&&(l.past===!0||M(a.schema.tryDefinition(O.kind),O))},v=a.graph.allEdges().filter(S=>n(S.from)&&n(S.to));return ye(v,S=>a.graph.getNode(S)?.kind).filter(S=>S.from===t||S.to===t)},[a,t,h,l.past]);(0,i.useEffect)(()=>()=>s(null),[s]);let b=se(),k=pe().marks.flag,m=(0,i.useMemo)(()=>{let n=new Set(o.map(v=>v.id));return b.filter(v=>v.nodeIds.some(S=>n.has(S)))},[b,o]),C=(0,i.useMemo)(()=>[...new Set(m.flatMap(n=>n.nodeIds))].filter(n=>a.graph.getNode(n)?.kind===t).slice(0,300),[m,a,t]),E=(0,i.useRef)(null),d=(0,i.useSyncExternalStore)(ge,_,_);(0,i.useEffect)(()=>{d?.kind!==t||m.length===0||(E.current?.scrollIntoView?.({block:"start"}),E.current?.focus({preventScroll:!0}))},[d?.n,d?.kind,t,m.length>0]),(0,i.useEffect)(()=>()=>{me(),setTimeout(()=>{let n=document.activeElement;if(n&&n!==document.body)return;let v=CSS.escape(t);document.querySelector(`[data-testid="district-problems-${v}"]`)?.focus({preventScroll:!0})??document.querySelector(`[data-graview-view="${P(t).replace(/["\\]/g,"\\$&")}"]`)?.focus({preventScroll:!0})},0)},[t]);let c=I(a.schema,t),T=y.trim().toLowerCase(),w=T?o.filter(n=>n.name.toLowerCase().includes(T)):o;return(0,e.jsxs)(Y,{label:c,testId:"district-panel",wide:"min(360px, 40%)",sheetHeight:"52%",onClose:()=>r([]),head:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("div",{style:U,children:"District"}),(0,e.jsx)("h2",{style:J,"data-testid":"district-panel-title",children:c}),(0,e.jsxs)("p",{style:Q,children:[B(a.schema,t,o.length),g?.description?` \xB7 ${g.description}`:""]}),(0,e.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap",marginTop:10},children:[(0,e.jsx)("button",{type:"button","data-testid":"district-panel-go",style:L,onClick:()=>f({...$(G(l,!1),ae(t)),relation:null}),children:"Go in"}),(0,e.jsx)(ve,{on:P(t),about:`the ${c.toLowerCase()}`})]})]}),children:[m.length>0?(0,e.jsxs)("section",{"aria-label":"Problems","data-testid":"district-problems","data-graview-problems":m.length,children:[(0,e.jsx)("style",{children:`${C.map(n=>`.graview-ground[data-graview-altitude] .graview-building[data-graview-building="${CSS.escape(n)}"] polygon`).join(`,
3
- `)} { stroke: var(--graview-accent); stroke-width: 2.2; stroke-opacity: 1; }`}),(0,e.jsxs)("h3",{ref:E,tabIndex:-1,"data-testid":"district-problems-heading",style:{display:"flex",alignItems:"baseline",gap:8,margin:0,padding:"14px 18px 8px",fontSize:"0.9375rem",fontWeight:600,color:"var(--graview-warn)",borderTop:"1px solid var(--graview-edge)",scrollMarginTop:0,outlineOffset:-2},children:[(0,e.jsx)("span",{"aria-hidden":"true",children:k}),(0,e.jsx)("span",{style:{color:"var(--graview-ink)"},children:fe(m.length,c)})]}),(0,e.jsx)("ol",{style:z,"data-testid":"district-problem-rows",children:(0,e.jsx)(i.Suspense,{fallback:null,children:(0,e.jsx)(Se,{violations:m,pick:n=>{let v=n.subjectId??n.nodeIds[0];v!==void 0&&r([v])}})})})]}):null,p.length>0?(0,e.jsxs)("section",{"aria-label":"Relations",children:[(0,e.jsx)("h3",{style:j,children:"Relations"}),(0,e.jsx)("ul",{style:z,children:p.map(n=>(0,e.jsx)("li",{children:(0,e.jsxs)("div",{"data-graview-relation-said":n.edge,tabIndex:0,style:{...X,cursor:"default"},onPointerEnter:()=>s(n.edge),onPointerLeave:()=>s(null),onFocus:()=>s(n.edge),onBlur:()=>s(null),children:[(0,e.jsx)("span",{style:{flex:"1 1 auto",minWidth:0},children:we(a.schema,n)}),(0,e.jsx)("span",{style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)",fontVariantNumeric:"tabular-nums"},title:`${D(n.links)} links`,children:D(n.links)})]})},n.key))})]}):null,(0,e.jsxs)("div",{role:"group","aria-label":c,children:[(0,e.jsxs)("h3",{style:j,children:[c," ",(0,e.jsxs)("span",{style:{fontWeight:400,color:"var(--graview-ink-faint)"},children:["\xB7 ",o.length]})]}),o.length>Pe?(0,e.jsx)("div",{style:{padding:"0 18px 6px"},children:(0,e.jsx)("input",{type:"search","data-testid":"district-panel-narrow","aria-label":`Narrow the ${c.toLowerCase()} by name`,placeholder:"Narrow by name",value:y,onChange:n=>x(n.target.value),style:{width:"100%",boxSizing:"border-box",minHeight:32}})}):null,(0,e.jsx)("ul",{style:z,children:w.map(n=>(0,e.jsx)("li",{children:(0,e.jsx)("button",{type:"button",className:"graview-map-panel-row","data-graview-record":n.id,style:X,onClick:()=>r([n.id]),onContextMenu:v=>u(v,n.id),children:(0,e.jsx)("span",{style:{flex:"1 1 auto",minWidth:0,overflowWrap:"anywhere"},children:n.name})})},n.id))})]})]})}export{Fe as MapPanelFor};
@@ -1 +0,0 @@
1
- import{D as l,K as p,R as k,S as y,c}from"./chunk.SOBC3CTN.js";import"./chunk.KN3ULTGF.js";import"./chunk.UGFDSE37.js";import{c as m}from"./chunk.R26DREVU.js";import"./chunk.FGVKJWNS.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.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 S,H as s,J as d,R as f,_ as g}from"./chunk.GFF2FB2J.js";import"./chunk.6V2RG5JG.js";import{b as n}from"./chunk.AJZBJBMO.js";var u=n(S(),1);var t=n(f(),1);function D({context:a}){let r=l(),h=g(),[w]=(0,u.useState)(()=>s(null)),o=d(h?.seatTalk??w),P=()=>{(window.history.state?.idx??0)>0?r(-1):r("/")};return(0,t.jsxs)(k,{context:a,"data-testid":"draft-page",children:[(0,t.jsx)(y,{context:a,...o.draft?{"data-testid":"draft-title"}:{},children:o.draft?o.draft.title:"Nothing drawn"}),o.draft?(0,t.jsx)(m,{page:!0,go:e=>r(e.address),onPick:e=>{let i=a.store.graph.getNode(e);i&&r(c(a.store.schema,i.kind,e))},onDiscard:P}):(0,t.jsxs)("p",{style:{margin:0,color:"var(--graview-ink-muted)"},children:["Ask for a way of seeing \u2014 \u201Ca board of tasks by status\u201D \u2014 and it is drawn here."," ",(0,t.jsx)(p,{to:"/",style:{color:"var(--graview-accent)"},children:"Home \u2192"})]})]})}export{D as DraftPage};
@@ -1 +0,0 @@
1
- import{G as C,R as T,ta as H,va as A}from"./chunk.GFF2FB2J.js";import"./chunk.6V2RG5JG.js";import{b as x}from"./chunk.AJZBJBMO.js";var t=x(C(),1),p=x(T(),1),D={faces:'[data-testid="app-faces"]',problems:'[data-testid="standing"], [data-testid="standing-link"]',activity:'[data-testid="activity-button"]',ask:'[data-testid="seat-field"]',find:'[data-testid="app-find"], [data-testid="app-find-open"]',profile:'[data-testid="profile-button"]',home:'[data-testid="app-home"]'};function W(e){if(!e.isConnected||e.closest("[hidden], [inert], [aria-hidden='true']"))return!1;if(typeof e.checkVisibility!="function")return!0;if(!e.checkVisibility({visibilityProperty:!0}))return!1;let a=e.getBoundingClientRect();return a.width>1&&a.height>1}function L(e,a){if(!e)return null;for(let c of e.querySelectorAll(D[a]))if(W(c))return c;return null}function q(e){let a=(u,h,l)=>e.querySelector(u)?.getAttribute(h)?.trim()||l,c=a('[data-testid="app-face-scene"]',"title","Scene"),n=a('[data-testid="app-face-pages"]',"title","Pages");return[{anchor:"faces",title:`${c} or ${n}`,words:`One app, two ways to see it: ${c} draws every record as one picture, ${n} as lists and pages to read and change.`},{anchor:"problems",title:"Whether all is in order",words:"The dot is green while every rule holds. When one is broken it counts what is wrong, and pressing it shows each one and where."},{anchor:"activity",title:"Activity",words:"What has happened here and who did it, each change with its way back."},{anchor:"ask",title:a('[data-testid="seat-field"]',"aria-label","Ask"),words:"Ask in your own words: where something is, what it means, or to make a change for you."}]}var R=300,O=1200,$=15e3;function _({root:e,steps:a,onEnd:c}){let[n,u]=(0,t.useState)(null),h=(0,t.useRef)(null),l=(0,t.useRef)(!1),f=(0,t.useRef)(c);f.current=c,(0,t.useEffect)(()=>{let r=Date.now(),o=Date.now(),s=null,i,k=new MutationObserver(()=>o=Date.now());k.observe(document.body,{childList:!0,subtree:!0});let v=()=>{let S=e(),E=Date.now();if(S?.querySelector('[data-testid="app-bar"]')){if(s??=E,E-o>=R||E-s>=O){let F=[...q(S),...a].filter(P=>L(S,P.anchor)!==null);if(F.length===0){l.current=!0,f.current(null);return}h.current=document.activeElement,u({list:F,at:0});return}}else if(E-r>=$){l.current=!0,f.current(null);return}i=setTimeout(v,100)};return i=setTimeout(v,100),()=>{clearTimeout(i),k.disconnect()}},[]);let y=(0,t.useCallback)(()=>{let r=h.current;(r instanceof HTMLElement&&r!==document.body&&r.isConnected?r:e()?.querySelector('[data-testid="app-home"]'))?.focus({preventScroll:!0})},[e]),m=(0,t.useCallback)((r,o)=>{if(l.current)return;l.current=!0;let s=document.querySelector("[data-testid='first-look']"),i=document.activeElement,k=i===null||i===document.body||s!==null&&s.contains(i);u(null),f.current(r),!(!o&&!k)&&(y(),requestAnimationFrame(()=>{let v=document.activeElement;(v===null||v===document.body)&&y()}))},[y]),w=(0,t.useCallback)((r,o)=>{let s=e();for(let i=o;i<r.length;i++)if(L(s,r[i].anchor))return i;return-1},[e]),g=(0,t.useCallback)(()=>{if(!n)return;let r=w(n.list,n.at+1);r<0?m("finished",!0):u({list:n.list,at:r})},[n,w,m]);if((0,t.useEffect)(()=>{if(!n)return;let r=e();if(!r)return;let o=0,s=()=>{cancelAnimationFrame(o),o=requestAnimationFrame(()=>{L(e(),n.list[n.at].anchor)||g()})},i=new MutationObserver(s);return i.observe(r,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["hidden","class","data-switch-drawn"]}),()=>{cancelAnimationFrame(o),i.disconnect()}},[n,e,g]),!n)return null;let b=n.list[n.at],d=w(n.list,n.at+1)<0;return(0,p.jsx)(I,{root:e,step:b,position:n.at+1,total:n.list.length,last:d,onNext:g,onEnd:m},n.at)}var N={...H,width:"min(320px, calc(100vw - 24px))",maxHeight:"min(70vh, 420px)",overflow:"auto",padding:"12px 14px",borderRadius:10,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)",color:"var(--graview-ink)",fontFamily:"var(--graview-font-body, system-ui)",fontSize:"0.875rem",lineHeight:1.45,overflowWrap:"anywhere"},M={minHeight:32,padding:"0 12px",borderRadius:8,font:"inherit",fontWeight:600,cursor:"pointer"};function I({root:e,step:a,position:c,total:n,last:u,onNext:h,onEnd:l}){let f=(0,t.useRef)(null),y=(0,t.useRef)(null),m=(0,t.useId)().replace(/:/g,""),w=(0,t.useMemo)(()=>({get current(){return L(e(),a.anchor)}}),[e,a.anchor]),[g]=(0,t.useState)(()=>{let d=w.current?.getBoundingClientRect(),r=typeof document>"u"?0:document.documentElement.clientWidth||innerWidth;return d&&d.left+d.width/2<r/2?"start":"end"});A(f,!0,w,{align:g}),(0,t.useLayoutEffect)(()=>{y.current?.focus({preventScroll:!0})},[]);let b=(0,t.useRef)(l);return b.current=l,(0,t.useEffect)(()=>{let d=o=>{o.target instanceof Node&&f.current?.contains(o.target)||b.current("dismissed",!1)},r=o=>{if(o.key!=="Escape"||o.defaultPrevented)return;let s=o.target;s instanceof Node&&f.current?.contains(s)||s instanceof HTMLInputElement||s instanceof HTMLTextAreaElement||[...document.querySelectorAll("[data-graview-overlay]:not([hidden])")].some(i=>i!==f.current)||b.current("dismissed",!0)};return document.addEventListener("pointerdown",d,!0),document.addEventListener("keydown",r),()=>{document.removeEventListener("pointerdown",d,!0),document.removeEventListener("keydown",r)}},[]),(0,p.jsxs)("div",{ref:f,popover:"manual",role:"dialog","aria-modal":"false","aria-labelledby":`${m}-title`,"aria-describedby":`${m}-words`,tabIndex:-1,"data-testid":"first-look","data-first-look-anchor":a.anchor,"data-graview-overlay":"",onKeyDown:d=>{d.key==="Escape"&&(d.preventDefault(),d.stopPropagation(),l("dismissed",!0))},style:N,children:[(0,p.jsxs)("p",{style:{margin:0,fontSize:"0.75rem",color:"var(--graview-ink-muted)"},"data-testid":"first-look-count",children:[c," of ",n]}),(0,p.jsx)("p",{id:`${m}-title`,style:{margin:"2px 0 4px",fontWeight:600,fontSize:"0.9375rem"},"data-testid":"first-look-title",children:a.title}),(0,p.jsx)("p",{id:`${m}-words`,style:{margin:0},"data-testid":"first-look-words",children:a.words}),(0,p.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",justifyContent:"flex-end",gap:8,marginTop:12},children:[u?null:(0,p.jsx)("button",{type:"button","data-testid":"first-look-skip",onClick:()=>l("dismissed",!0),style:{...M,fontWeight:500,border:"1px solid transparent",background:"none",color:"var(--graview-ink-muted)"},children:"Skip"}),(0,p.jsx)("button",{ref:y,type:"button","data-testid":u?"first-look-done":"first-look-next",onClick:()=>u?l("finished",!0):h(),style:{...M,border:"1px solid var(--graview-accent)",background:"var(--graview-accent)",color:"var(--graview-accent-ink)"},children:u?"Done":"Next"})]})]})}export{_ as FirstLookHints,L as firstLookAnchor};
@@ -1 +0,0 @@
1
- import{a as Ee,c as He}from"./chunk.4ALKPNXM.js";import{a as Ne,c as Oe,d as ze}from"./chunk.OQ4KFN6W.js";import{b as Me}from"./chunk.3R4W2P5X.js";import{b as Pe,e as j,f as le}from"./chunk.C5CYZNSJ.js";import{a as Le}from"./chunk.3SKKIHU3.js";import{a as Re}from"./chunk.QIAKO27D.js";import{b as Ae}from"./chunk.KQT7WAQE.js";import{F as Ce,G as ie,H as Te,J as Q,R as Y,Z as J,k as be,n as we,o as ke,oa as X,s as Se,t as xe,y as $e}from"./chunk.GFF2FB2J.js";import{$ as ve,W as me,_ as ye,wc as he}from"./chunk.6V2RG5JG.js";import{b as D}from"./chunk.AJZBJBMO.js";var Z=D(ie(),1),Ue=220;function Ve(n,s){if(!n||!s||typeof document>"u")return null;let m=n.getBoundingClientRect(),r=document.elementFromPoint(m.left+s.x,m.top+s.y),g=r?.closest("[data-graview-pick]")?.getAttribute("data-graview-pick");return g||(r?.closest("[data-graview-view]")?.getAttribute("data-graview-view")??null)}function qe({hover:n=!0}={}){let{store:s,view:m,views:r,pointer:g}=J(),{selection:c}=X(),[k,S]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{if(!n)return;let o=null,y=!1,$=()=>typeof document<"u"&&document.querySelector("[data-graview-reach]")!==null?document.querySelector("[data-graview-settled]")===null:!1,i=()=>{if(o&&clearTimeout(o),y)return;let w=g.snapshot();if(!w){S(L=>L===null?L:null);return}o=setTimeout(()=>{if(y||$()){i();return}let L=typeof document>"u"?null:document.querySelector("[data-graview-stage]"),v=Ve(L,w);S(P=>P===v?P:v)},Ue)},f=()=>{y=!0,o&&clearTimeout(o)},C=()=>{y=!1,i()},x=g.subscribe(i);return document.addEventListener("pointerdown",f,!0),document.addEventListener("pointerup",C,!0),document.addEventListener("pointercancel",C,!0),i(),()=>{x(),document.removeEventListener("pointerdown",f,!0),document.removeEventListener("pointerup",C,!0),document.removeEventListener("pointercancel",C,!0),o&&clearTimeout(o)}},[g,n]);let N=o=>{let y=s.graph.getNode(o);if(y)return me(s.schema.tryDefinition(y.kind),y);let $=Le(o,s.schema);if($)return $;let i=xe(o);if(i)return ve(s.schema,i);let f=$e(o);if(f.length>0){let C=f.map(w=>ye(s.schema,w)),x=C.length===1?C[0]:`${C.slice(0,-1).join(", ")} and ${C.at(-1)}`;return x.charAt(0).toUpperCase()+x.slice(1)}return null},E=c[c.length-1];if(E!==void 0){let o=N(E);if(o)return{id:E,name:c.length>1?`${o} and ${c.length-1} more`:o,because:"selection"}}if(k!=null){let o=N(k);if(o)return{id:k,name:o,because:"hover"}}let p=m.within?.view,R=p?r.places().find(o=>o.as===p||he(o.title)===p):void 0;if(R)return{id:null,name:R.title,because:"place"};if(m.focusId){let o=N(m.focusId);if(o)return{id:m.focusId,name:o,because:"place"}}return{id:null,name:"the whole thing",because:"place"}}var A=D(ie(),1);var z=D(ie(),1),b=D(Y(),1),W=(n,s)=>`${n}:${s}`;function De({answer:n,said:s,onReply:m,talk:r}){let[g]=(0,z.useState)(()=>Te(null)),c=r??g,{turns:k,outcomes:S,busy:N}=Q(c),E=(0,z.useCallback)((R,o)=>c.settle(R,o),[c]);return{turns:k,outcomes:S,busy:N,send:async R=>{let o=R.trim();if(!o||c.get().busy)return;c.setBusy(!0);let y=c.get();c.setTurns(f=>[...f,{role:"person",text:o}]);let $=y.turns.map((f,C)=>{let x=(f.proposals??[]).map((w,L)=>{let v=y.outcomes.get(W(C,L));return v?.state==="refused"?`${s(w)} \u2014 refused: ${v.error}`:v?`${v.said} \u2014 ${v.state==="applied"?"applied":"set aside"}`:s(w)});return{role:f.role,text:x.length>0?`${f.text} [Offered beneath this answer: ${x.join("; ")}]`:f.text}}),i;try{i=await n(o,{history:$})}catch(f){i={say:`That couldn't be answered: ${f instanceof Error?f.message:String(f)}`,proposals:[]}}c.setTurns(f=>[...f,{role:"seat",text:i.say,proposals:i.proposals,...i.questions?{questions:i.questions}:{},...i.picks?.length?{picks:i.picks}:{},...i.moves?.length?{moves:i.moves}:{},...i.offer?{offer:i.offer}:{},...i.unsure?{unsure:!0}:{},...i.via?{via:i.via}:{}}]),m?.(i),c.setBusy(!1)},settle:E}}var Qe=n=>{let s=/^([\s\S]*?)\s*(\((?:[^()]|\([^()]*\))*\))\s*$/.exec(n);return s&&s[1]?{said:s[1],aside:s[2]}:{said:n}};function je({turns:n,outcomes:s,busy:m,testId:r,empty:g,minHeight:c=64,maxHeight:k="min(46cqh, 400px)",renderProposal:S,renderAfter:N,renderSaid:E,ready:p=()=>!0,onApplyAll:R,applyAllLabel:o="Apply all"}){let y=(0,z.useRef)(null);return(0,z.useEffect)(()=>{y.current?.scrollTo?.({top:y.current.scrollHeight})},[n]),n.length===0&&g===null&&!m?null:(0,b.jsxs)("ol",{ref:y,style:{margin:0,padding:10,listStyle:"none",display:"grid",gap:8,alignContent:"start",maxHeight:k,minHeight:c,overflowY:"auto"},children:[n.length===0?g===null?null:(0,b.jsx)("li",{style:{fontSize:"0.8125rem",color:"var(--graview-ink-muted)",lineHeight:1.5},children:g}):null,n.map(($,i)=>{let f=$.proposals??[],C=f.filter((w,L)=>{let v=W(i,L),P=s.get(v);return P?.state!=="applied"&&P?.state!=="declined"&&p(w,v)}),x=Qe($.text);return(0,b.jsxs)("li",{style:{display:"grid",gap:6,justifyItems:$.role==="person"?"end":"start"},children:[$.role==="person"?(0,b.jsx)("p",{style:{margin:0,maxWidth:"85%",padding:"6px 10px",borderRadius:"12px 12px 4px 12px",fontSize:"0.875rem",lineHeight:1.45,background:"var(--graview-panel-muted)",color:"var(--graview-ink)"},children:$.text}):(0,b.jsxs)("p",{style:{margin:0,fontSize:"0.875rem",lineHeight:1.5,color:"var(--graview-ink)"},children:[E?E($,x.said):x.said,$.via?(0,b.jsx)("span",{"data-testid":`${r}-answered-with-ai`,style:{marginLeft:6,fontSize:"0.6875rem",color:"var(--graview-ink-faint)",whiteSpace:"nowrap"},children:Ce}):null,x.aside?(0,b.jsx)("span",{style:{display:"block",marginTop:2,fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:x.aside}):null]}),N?.($,i),f.map((w,L)=>{let v=W(i,L),P=s.get(v);return P?.state==="applied"||P?.state==="declined"?(0,b.jsx)(ee,{outcome:P,testId:r},v):(0,b.jsxs)("span",{style:{display:"grid",gap:4,justifySelf:"stretch",justifyItems:"start"},children:[S(w,{key:v,turn:i,at:L}),P?(0,b.jsx)(ee,{outcome:P,testId:r}):null]},v)}),R&&C.length>=2?(0,b.jsxs)("button",{type:"button","data-testid":`${r}-apply-all`,onClick:()=>R(i,f),title:"Take these in order; anything still missing is asked for",style:{fontSize:"0.8125rem",justifySelf:"start",fontWeight:600},children:[o," ",C.length]}):null]},i)}),m?(0,b.jsx)("li",{style:{fontSize:"0.8125rem",color:"var(--graview-ink-faint)"},children:"thinking\u2026"}):null]})}function ee({outcome:n,testId:s}){if(n.state==="refused")return(0,b.jsxs)("span",{"data-testid":`${s}-refused`,style:{fontSize:"0.8125rem",color:"var(--graview-warn)"},children:["Refused: ",n.error]});let m=n.state==="applied";return(0,b.jsxs)("span",{"data-testid":`${s}-${n.state}`,style:{fontSize:"0.8125rem",color:m?"var(--graview-ink-muted)":"var(--graview-ink-faint)"},children:[m?(0,b.jsx)("span",{"aria-hidden":"true",style:{color:"var(--graview-accent)"},children:"\u2713 "}):null,m?n.said:(0,b.jsx)("s",{children:n.said})]})}function We({busy:n,placeholder:s,ariaLabel:m,testId:r,onSend:g}){let[c,k]=(0,z.useState)("");return(0,b.jsxs)("form",{onSubmit:S=>{S.preventDefault(),!(n||c.trim().length===0)&&(g(c),k(""))},style:{display:"flex",gap:6,padding:8,borderTop:"1px solid var(--graview-edge)"},children:[(0,b.jsx)("input",{value:c,onChange:S=>k(S.target.value),placeholder:s,"aria-label":m,"data-testid":`${r}-draft`,style:{flex:1,minWidth:0,font:"inherit",fontSize:"0.875rem",padding:"6px 9px",borderRadius:8,border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",color:"var(--graview-ink)"}}),(0,b.jsx)("button",{type:"submit","data-testid":`${r}-send`,disabled:n||c.trim().length===0,style:{fontSize:"0.875rem"},children:"Send"})]})}var u=D(Y(),1),Ye=/\b(?:board|kanban|timeline|calendar|gantt|who covers|covers what|coverage|floor plan|layout|draw|chart|(?:list|table) of|as an? (?:list|table|board|calendar|timeline|grid))\b/i,Je=/\b(?:group(?:ed)? by|split by|sort(?:ed)? by|order(?:ed)? by|only|call it|name it|as an? (?:board|kanban|calendar|timeline|list|table|cards|rows|grid|plan|layout)|show all|all of them|clear the filter|no filter)\b/i,Xe=n=>n.charAt(0).toLowerCase()+n.slice(1),Ze=n=>n.to==="record"?n.label:n.to==="problems"?"problems":n.title;function et(n,s,m){let r=[],g=n;for(let c of s){let k=Ze(c),S=k?g.toLowerCase().indexOf(k.toLowerCase()):-1;S<0||(r.push(g.slice(0,S),m(c,g.slice(S,S+k.length))),g=g.slice(S+k.length))}return r.length===0?n:[...r,g]}function vt({respond:n,onCall:s,onPick:m,testId:r="chat",empty:g,shared:c=!1,composer:k=!0,onMove:S,place:N,onDraft:E}){let{store:p,views:R,view:o,principal:y,setView:$,seatWho:i,noteSeat:f,session:C,ai:x,seatTalk:w,brand:L,app:v}=J(),P=He(),te=S??P,{takeBack:Fe}=Ee(te),{selection:ne}=X(),de=qe(),ce=i??"chat",q=(0,A.useMemo)(()=>({kind:"agent",id:ce,session:C}),[ce,C]),ae=(0,A.useRef)(void 0),G=(0,A.useMemo)(()=>Me(p,{author:{...q,...y.roles?{roles:y.roles}:{}},derive:()=>({pins:Ne()}),places:()=>R.places(),via:()=>ae.current,...v?{app:v}:{},near:x.near}),[p,y,q,R,v,x.near]),Be=(0,A.useMemo)(()=>n??ze(x),[n,x]);(0,A.useEffect)(()=>s?G.onCall(s):void 0,[G,s]),Ae(G);let pe=(0,A.useMemo)(()=>({name:L?.name??"app",schema:p.schema,...p.policy?{policy:p.policy}:{}}),[p,L]),Ie=async e=>{let a=w.get().draft,t=a!==null&&Je.test(e);if(!t&&!Ye.test(e))return;let l=await import("./chunk.4HP7UWA2.js"),h=n?void 0:Oe(x),d={app:pe,sight:l.draftSight(pe,_),...h?{complete:h}:{},...a?{lastGood:a}:{}},T=t&&a?await l.refineDraft(a,e,d):await l.draftView(e,d);if(l.isDraftFailure(T)){let O=T.lastGood??a;return O?(w.setDraft(O,T.failed),E?.(),{say:`${T.failed} The last view stays.`,proposals:[],grounded:!0}):{say:T.failed,proposals:[],grounded:!0}}return w.setDraft(T,null),E?.(),{say:`Here is ${Xe(T.said)} Ask to change it, or keep it as a lens.`,proposals:[],grounded:!0}},H=De({...c?{talk:w}:{},said:e=>j(p,e),answer:async(e,a)=>{let t=await Ie(e);if(t)return t;let{placesFromViews:l}=await import("./chunk.X37L5TN5.js"),h=N??o.within?.view,d=R.arrangement?.(),T=p.today();return Be(p,e,{...a,selection:de.id?[de.id]:ne,principal:{...q,...y.roles?{roles:y.roles}:{}},places:l(p.schema,R.places(),d?{pages:d}:{}),...h?{place:h}:{},...T?{today:T}:{},...v?{app:v}:{}})},onReply:e=>{let a=e.moves?.[0];a&&te(a);let t=e.questions?.[0];f(t?{type:"asking",author:q,where:t.nodeId??null,say:`${t.nodeLabel?`${t.nodeLabel}: `:""}${t.asks}`,confidence:t.confidence}:{type:"said",author:q,say:e.say});let l=e.proposals.find(h=>!oe(h));if(l){let h=p.permits({name:l.mutation,args:{...l.args}},_);h.ok||f({type:"refused",author:q,where:fe(l.mutation),say:h.refusal.message})}}}),{outcomes:I,settle:re}=H,ue=Q(w);(0,A.useEffect)(()=>{if(!c||ue.pending===null||H.busy)return;let e=w.takePending();e&&H.send(e)},[c,ue.pending,H.busy]);let _={...q,...y.roles?{roles:y.roles}:{}},oe=e=>p.permits({name:e.mutation,args:{...e.args}},_).ok,fe=e=>{let a=p.allMutations().find(t=>t.name===e)?.subject?.kinds;return Array.isArray(a)&&a[0]?Se(a[0]):null},[M,K]=(0,A.useState)(null),U=async(e,a)=>{let t=Pe(p,e),l=j(p,t),h=G.definitions.find(T=>T.act===t.mutation)?.name??t.mutation;ae.current=H.turns[Number(a.split(":")[0])]?.via;let d=await G.call(h,{...t.args}).finally(()=>{ae.current=void 0});return d.ok?(re(a,{state:"applied",said:l}),!0):(re(a,{state:"refused",error:d.error}),f({type:"refused",author:q,where:fe(t.mutation),say:d.error}),!1)},_e=async(e,a)=>{for(let[t,l]of a.entries()){let h=W(e,t);if(I.get(h)?.state==="applied"||!oe(l))continue;let d=le(p,l);if(d.length>0){K({proposal:l,open:d,key:h});return}if(!await U(l,h))return}},V=(0,A.useRef)(null),se=(0,A.useRef)(null);(0,A.useLayoutEffect)(()=>{let e=se.current;if(!e||e.isConnected||document.activeElement!==document.body)return;se.current=null,(V.current?.querySelector(`[data-testid="${r}-apply"]:not([disabled])`)??V.current?.querySelector(`[data-testid="${r}-draft"]`)??V.current?.closest("[data-testid='seat']")?.querySelector("[data-testid='seat-field']"))?.focus()});let Ke=(e,a,t,l)=>{let h=p.permits({name:t.mutation,args:{...t.args}},_);if(!h.ok)return(0,u.jsxs)("span",{"data-testid":`${r}-withheld`,style:{fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:[(0,u.jsx)("s",{children:j(p,t)})," \u2014 ",h.refusal.message]});let d=le(p,t),T=(H.turns[e]?.proposals??[]).slice(0,a).filter((ge,F)=>I.get(W(e,F))?.state!=="applied").find(ge=>d.some(F=>F.kinds&&typeof t.args[F.name]=="string"&&ge.args.label===t.args[F.name])),O=j(p,t);return(0,u.jsxs)("span",{style:{display:"flex",flexWrap:"wrap",alignItems:"baseline",gap:"4px 10px"},children:[(0,u.jsxs)("span",{style:{fontSize:"0.875rem",color:"var(--graview-ink)"},title:t.why,children:[O,d.length>0&&!T?" \u2026":""]}),(0,u.jsxs)("span",{style:{display:"inline-flex",gap:6},children:[(0,u.jsx)("button",{type:"button","data-testid":`${r}-apply`,"data-graview-asks":d.length>0?d.length:void 0,disabled:T!==void 0,"aria-label":`Do it: ${O}`,onClick:()=>d.length>0?K({proposal:t,open:d,key:l}):void U(t,l),title:T?`After \u201C${j(p,T)}\u201D`:d.length>0?`${O} \u2014 it asks for ${d.length===1?"one more thing":`${d.length} more things`}`:O,style:B,children:"Do it"}),(0,u.jsx)("button",{type:"button","data-testid":`${r}-decline`,"aria-label":`Not now: ${O}`,onClick:()=>re(l,{state:"declined",said:O}),style:{...B,color:"var(--graview-ink-muted)"},children:"Not now"})]})]})};return(0,u.jsxs)("div",{"data-testid":`${r}-panel`,ref:V,onFocus:e=>{se.current=e.target},style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",alignContent:"start",gap:8,minWidth:0,minHeight:0},children:[H.turns.length===0?g??null:null,(0,u.jsx)(je,{turns:H.turns,outcomes:I,busy:H.busy,testId:r,minHeight:0,maxHeight:"none",empty:g!==void 0?null:(0,u.jsxs)(u.Fragment,{children:["Ask what's wrong, ask about anything by name, or say a change in its own words.",ne.length>0?" \u201CThis\u201D means what you have selected.":""]}),renderProposal:(e,{key:a,turn:t,at:l})=>Ke(t,l,e,a),ready:e=>oe(e),onApplyAll:(e,a)=>void _e(e,a),applyAllLabel:"Do all",renderSaid:(e,a)=>e.moves?.length?et(a,e.moves,(t,l)=>(0,u.jsx)("button",{type:"button","data-testid":`${r}-went`,title:`Go to ${l}`,onClick:()=>te(t),style:{...Ge,fontSize:"inherit"},children:l},`${t.address}:${l}`)):a,renderAfter:(e,a)=>[...e.offer?[(0,u.jsx)("button",{type:"button","data-testid":`${r}-offer`,onClick:()=>w.ask(`a list of ${e.offer.draft}`),style:{...B,justifySelf:"start"},children:e.offer.label},`${a}:offer`)]:[],...e.kept&&!e.kept.taken?[(0,u.jsx)("button",{type:"button","data-testid":`${r}-take-back`,onClick:()=>void Fe(e.kept),style:{...B,justifySelf:"start"},children:"Take back"},`${a}:take-back`)]:[],...e.picks?.length?[(0,u.jsx)("p",{"data-testid":`${r}-picks`,style:{margin:0,display:"flex",flexWrap:"wrap",gap:"2px 12px"},children:e.picks.map(t=>(0,u.jsx)("button",{type:"button","data-testid":`${r}-pick`,"data-chat-pick":t.id,title:t.why.field==="label"?`Go to ${t.label}`:`${t.why.reading}: ${t.why.fragment}`,onClick:()=>m?m(t.id):$(l=>ke(be(we(l,!1),t.id),[t.id])),style:Ge,children:t.label},t.id))},`${a}:picks`)]:[],...(e.questions??[]).map(t=>{let l=`${a}:q:${t.id}`,h=I.get(l);return(0,u.jsxs)("div",{"data-testid":`${r}-question`,"data-chat-question-node":t.nodeId,style:{display:"grid",gap:4,justifySelf:"start"},children:[(0,u.jsxs)("span",{style:{fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:[t.nodeLabel?(0,u.jsxs)("strong",{children:[t.nodeLabel,": "]}):null,t.asks,t.because==="split"?" (it could be either)":" (it was not sure)"]}),(0,u.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:t.options.map(d=>(0,u.jsxs)("button",{type:"button","data-testid":`${r}-option`,disabled:!d.call,title:d.call?d.call.why??"Take this answer":"Nothing to do for this answer",onClick:()=>d.call?void U(d.call,l):void 0,style:B,children:[d.value," ",Math.round(d.probability*100),"%"]},d.value))}),h?(0,u.jsx)(ee,{outcome:h,testId:r}):null]},t.id)})]}),M?(0,u.jsx)("div",{"data-testid":`${r}-asking`,children:(0,u.jsx)(Re,{affordance:{id:`chat:${M.proposal.mutation}`,mutation:M.proposal.mutation,label:j(p,M.proposal),provider:"llm",why:M.proposal.why??"Suggested in the conversation.",nodeIds:[],args:M.proposal.args,open:M.open,score:0},onApply:e=>{let a={...M.proposal,args:{...M.proposal.args,...e}};K(null),U(a,M.key)},onCancel:()=>K(null)})}):null,k?(0,u.jsx)(We,{busy:H.busy,placeholder:ne.length>0?"Ask about this\u2026":"Ask, or say a change\u2026",ariaLabel:"Ask",testId:r,onSend:e=>c?w.ask(e):void H.send(e)}):null]})}var B={font:"inherit",fontSize:"0.8125rem",minHeight:26,padding:"0 9px",borderRadius:6,border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",boxShadow:"none",color:"var(--graview-ink)",cursor:"pointer"},Ge={font:"inherit",fontSize:"0.875rem",minHeight:24,padding:0,border:0,borderRadius:2,background:"transparent",boxShadow:"none",color:"var(--graview-accent)",textDecoration:"underline",textUnderlineOffset:3,textAlign:"start",cursor:"pointer"};export{qe as a,vt as b,B as c,Ge as d};
@@ -1 +0,0 @@
1
- import{$ as g,Ac as k,Hc as f,Lc as w,Mc as $,Nc as v,Pc as b,Qc as S,vc as y,xc as d,zc as u}from"./chunk.6V2RG5JG.js";function A(s){let i=[];for(let n of f(s).drawn)for(let t of n.kinds)i.push({kind:t,title:n.title,as:n.as,...n.across?{across:n.across}:{},...n.kinds.length>1?{over:n.kinds}:{},...n.hidden?{hidden:!0}:{}});for(let n of s.views?.places?.()??[])i.some(t=>t.kind===n.kind&&t.as===n.as)||i.push(n);return i}function F(s){return L(s.schema,A(s),{...s.pages?{pages:s.pages}:{},lenses:f(s).drawn,home:(s.home?.length??0)>0})}function L(s,i,n={}){let{pages:t}=n,l=s.kinds,h=i.filter(e=>l.includes(e.kind)),a=S(t?.first,s,h),P=new Set(t?.hide??[]),c=b(l,t?.order),p=[{slug:"home",title:"Home",kind:null,cardinality:"many",address:"/",stop:"#",...a?.to==="home"||a===void 0&&n.home?{first:!0}:{}},{slug:w,title:v(t),kind:null,cardinality:"many",address:$,stop:"#"}],x=y([...h].sort((e,o)=>c.indexOf(e.kind)-c.indexOf(o.kind)));for(let e of x){let o=n.lenses?.find(r=>r.as===e.as&&r.kinds.includes(e.kind)),m=k(e,h);p.push({slug:e.as,title:e.title,kind:e.kind,...e.over?{over:e.over.filter(r=>l.includes(r))}:{},cardinality:"many",address:u(e.as,m?d(s,e.kind).slice(1):void 0),stop:m?`#focus=aggregate:${e.kind}&in.view=${encodeURIComponent(e.as)}`:`#view=${encodeURIComponent(e.as)}`,...o?{lens:o.lens}:{},...e.hidden?{hidden:!0}:{},...a?.to==="place"&&a.place.as===e.as&&(a.place.kind===e.kind||e.over?.includes(a.place.kind))?{first:!0}:{}})}for(let e of c)p.push({slug:d(s,e).slice(1),title:g(s,e),kind:e,cardinality:"many",address:d(s,e),stop:`#focus=aggregate:${e}`,...P.has(e)?{hidden:!0}:{},...a?.to==="kind"&&a.kind===e?{first:!0}:{}});return p}export{F as a,L as b};
@@ -1 +0,0 @@
1
- import{a as v,c as w}from"./chunk.YNQDVGZM.js";import{E as S}from"./chunk.GFF2FB2J.js";var x="graview:pins",f={pinned:[],unpinned:[]},g=e=>Array.isArray(e)?e.filter(n=>typeof n=="string"):[];function L(){try{let e=globalThis.localStorage?.getItem(x);if(!e)return f;let n=JSON.parse(e);if(Array.isArray(n))return{pinned:g(n),unpinned:[]};if(typeof n=="object"&&n!==null){let r=n;return{pinned:g(r.pinned),unpinned:g(r.unpinned)}}return f}catch{return f}}function P(e){try{globalThis.localStorage?.setItem(x,JSON.stringify(e))}catch{}}function b(e,n,r=!1){let o=s=>s.filter(p=>p!==n),i=r?e.unpinned.includes(n)?{pinned:o(e.pinned),unpinned:o(e.unpinned)}:{pinned:o(e.pinned),unpinned:[...e.unpinned,n]}:e.pinned.includes(n)?{pinned:o(e.pinned),unpinned:o(e.unpinned)}:{pinned:[...e.pinned,n],unpinned:o(e.unpinned)};return P(i),i}var C=e=>`ai:${e.name??(e.complete||e.turn?"model":"on-device")}`;var A="Llama-3.2-3B-Instruct-q4f16_1-MLC",R=new Map;function E(e={}){let n=e.load?null:e.model??A,r=n?R.get(n)??R.set(n,{engine:null,failed:null}).get(n):{engine:null,failed:null},o=r.engine,i=!1,s=t=>e.onStatus?.(t),p=async()=>{if(e.load)return e.load();let t=globalThis.LanguageModel;if(t){let m=await t.create();return{chat:{completions:{create:async({messages:h})=>({choices:[{message:{content:await m.prompt(h[h.length-1]?.content??"")}}]})}}}}if(!globalThis.navigator?.gpu)throw new Error("this browser has no WebGPU, which the local model needs");return(await import("https://esm.run/@mlc-ai/web-llm")).CreateMLCEngine(e.model??A,{initProgressCallback:m=>s({state:"warming",progress:m.progress,detail:m.text})})},a=Promise.resolve();return{complete:async t=>{if(o=r.engine??o,!o)throw new Error("The local model is not warm yet");let l=(await o.chat.completions.create({messages:[{role:"user",content:t}]})).choices?.[0]?.message?.content;if(typeof l!="string")throw new Error("The local model answered with no content");return l},ready:()=>(r.engine??o)!==null,warm:()=>(o=r.engine??o,o?Promise.resolve():i?a:r.failed!==null?(s({state:"failed",detail:r.failed}),Promise.resolve()):(i=!0,s({state:"warming"}),a=p().then(t=>{o=t,r.engine=t,s({state:"ready"})}).catch(t=>{r.failed=t instanceof Error?t.message:String(t),s({state:"failed",detail:r.failed})}).finally(()=>{i=!1}),a)),failed:()=>r.failed}}function T(e,n={}){return O(e,n)?.complete}function O(e,n){let r=e.turn,o=e.complete??(r?p=>r({system:"",messages:[{role:"user",content:p}],tools:[],call:async()=>({error:"No tools here."})}):void 0);if(o)return{complete:o,ready:()=>!0,warm:()=>Promise.resolve(),failed:()=>null};if(!e.onDevice)return;let i=typeof e.onDevice=="object"?e.onDevice.model:void 0,s=E({...i?{model:i}:{},...n.onStatus?{onStatus:n.onStatus}:{}});return{complete:async p=>(s.ready()||s.warm(),s.complete(p)),ready:s.ready,warm:s.warm,failed:s.failed}}function D(e,n={}){let r=n.floor??v(),o=(a,c,d)=>r(d?.principal?a.seenBy(d.principal):a,c,d),i=O(e,n);if(!i)return async(a,c,d)=>{let t=await o(a,c,d);return t.unsure?{...t,say:e.withoutModel??S}:t};let s=w({complete:i.complete,...e.turn?{turn:e.turn}:{}}),p=C(e);return async(a,c,d)=>{let t=await o(a,c,d);if(t.grounded)return t;if(!i.ready()){if(await Promise.race([i.warm(),new Promise(l=>setTimeout(l,100))]),i.failed()!==null)return y(t,"(AI isn't available in this browser, so this is from the app alone.)");if(!i.ready())return y(t,"(AI is still getting ready on this device, so this is from the app alone.)")}let u;try{let l=await s(a,c,{...d,...t.proposals.length>0?{reading:t.proposals}:{}});if(!l.unsure)return l.proposals.length===0&&t.proposals.length>0?t:{...l,via:p}}catch(l){u=j(l)}return y(t,u?`(AI didn't answer just now: ${u}. This is from the app alone.)`:"(AI didn't answer just now, so this is from the app alone.)")}}var j=e=>{if(!(e instanceof Error)||e.name!=="Error")return;let n=e.message.replace(/[()]/g,"").replace(/\s+/g," ").trim().replace(/[.!]+$/,"");return n&&n.length<=160?n:void 0};function y(e,n){return{...e,say:`${e.say} ${n}`}}export{L as a,b,T as c,D as d};
@@ -1 +0,0 @@
1
- var l=["solid","dashed","dotted","double","tapered"],i=["arrow","none","dot","bar"];function p(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return t>>>0}function m(e,t={}){let r=p(e);return{...{pattern:l[r%l.length],width:1.5+(r>>>3)%3*.75,cap:i[(r>>>7)%i.length],hue:(r>>>11)%360,opacity:.85},...t[e]}}var y={solid:void 0,dashed:"7 5",dotted:"1 5",double:"12 3",tapered:"10 3 3 3"},h="2 6",x=.6;function b(e){return e.color??`hsl(${Math.round(e.hue)} 55% 62%)`}function S(e,t){return t?Math.max(1.6,e.width):Math.min(1.4,e.width)}function s(e,t,r){return[e,0,0,0,0,e,0,0,0,0,1,0,t,r,0,1]}var d={0:{scale:1,blur:0,falloff:0,shadow:.16,fidelity:"full"},1:{scale:.95,blur:.3,falloff:.26,shadow:.12,fidelity:"summary"},2:{scale:.9,blur:.3,falloff:.34,shadow:.07,fidelity:"glyph"}},c={0:{scale:1,blur:0,falloff:0,shadow:.34,fidelity:"full"},1:{scale:.95,blur:.45,falloff:.18,shadow:.24,fidelity:"summary"},2:{scale:.9,blur:.45,falloff:.26,shadow:.14,fidelity:"glyph"}};function P(e,t="dark"){let r=Math.max(0,Math.min(2,Math.round(e)));return(t==="light"?d:c)[r]}function M(e,t,r){let o=Math.max(0,Math.min(1,r)),n=(a,u)=>a+(u-a)*o;return{scale:n(e.scale,t.scale),blur:n(e.blur,t.blur),falloff:n(e.falloff,t.falloff),shadow:n(e.shadow,t.shadow),fidelity:o<.5?e.fidelity:t.fidelity}}function g(e,t,r,o,n){return s(e.scale,t,r)}export{c as a,P as b,M as c,g as d,m as e,y as f,h as g,x as h,b as i,S as j};
@@ -1 +0,0 @@
1
- import"./chunk.WVUJXDXZ.js";import{i as x}from"./chunk.OZNW5W4Z.js";import"./chunk.NDADLJE6.js";import"./chunk.AK3IHFCF.js";import"./chunk.HHPGWJDO.js";import"./chunk.42YX6NOY.js";import"./chunk.WAFDCOOG.js";import{La as f,Na as N,W as S}from"./chunk.6V2RG5JG.js";import"./chunk.AJZBJBMO.js";var k=(n,r,t)=>({untrusted:!0,authoredBy:t.say(r),text:n});function O(n,r){let t;for(let[a,e]of Object.entries(n)){if(typeof e!="string"||a==="id"||a==="kind")continue;let o=r.fieldBy(n.id,a);o&&(t??={...n},t[a]=k(e,o,r))}return t??n}function L(n,r,t){let a=e=>{if(Array.isArray(e))return e.map(a);if(e!==null&&typeof e=="object"&&"id"in e&&"label"in e){let o=e,i=t.recordBy(o.id);return i?{...o,label:k(o.label,i,t)}:o}if(typeof e=="string"){let o=t.recordBy(n);return o?k(e,o,t):e}return e};return Object.fromEntries(Object.entries(r).map(([e,o])=>[e,a(o)]))}function $(n,r){return n.map(t=>{let a=r.recordBy(t.id);return a?{...t,label:k(t.label,a,r)}:t})}function D(n,r){return{...n,nodes:n.nodes.map(t=>O(t,r))}}var E=n=>(JSON.stringify(n)??"null").length,R=n=>typeof n=="number"&&Number.isFinite(n)&&n>0?Math.floor(n):0;function w(n,r,t,a,e,o=""){let i=n-r-t;return i>0?`and ${i} more ${e}: call ${a} with ${o}offset ${r+t} for the next page.`:void 0}var j=({line:n,...r})=>r;function T(n){let r;for(let[t,a]of Object.entries(n))typeof a!="string"||a.length<=600||(r??={...n},r[t]=`${a.slice(0,600)}\u2026 (cut at ${600} of ${a.length} characters)`);return r??n}function B(n,r,t,a){let e=Math.min(t,Math.max(0,n.length-r)),o=n.slice(r,r+e),i=a(o);for(;e>1&&E(i)>8e3;)e=Math.max(1,Math.floor(e*.75)),o=n.slice(r,r+e),i=a(o);return{page:o,answer:i}}function C(n,r){let t=JSON.stringify(r)??"null";if(t.length<=8e3)return r;let a=`This answer was ${t.length} characters, more than the ${8e3} one read answers, so it is cut. Ask ${n} for less, or use search_graph and get_node to read one thing.`;for(let e=8e3-a.length-40;;){let o={cut:a,partial:t.slice(0,e)},i=E(o)-8e3;if(i<=0)return o;e=Math.max(0,e-i-8)}}function I(n,r){let{matched:t,later:a,...e}=r,o=n.hits.filter(i=>i.about==="node").length;return n.total>o?{...e,more:`and ${n.total-o} more records match: narrow the words, or add kind:<kind>.`}:e}function P(n,r,t){let a=N(t.archived),e={nodes:n.graph.allNodes({archived:a}),edges:n.graph.allEdges({archived:"all"})},o=R(t.offset),i=e.nodes.length,{page:h,answer:u}=B(e.nodes,o,25,d=>{let g=new Set(d.map(s=>s.id)),l=new Set(d.map(s=>s.id)),c=w(i,o,d.length,"get_graph","nodes"),p=s=>l.has(s)||(a==="all"?n.graph.has(s):n.graph.has(s)&&f(n.graph.getNode(s))===a);return{...D({nodes:d.map(T),edges:e.edges.filter(s=>g.has(s.from)&&p(s.to))},r),total:i,...c?{more:c}:{}}});return{data:u,reads:h.map(d=>d.id)}}function U(n,r,t,a){let e=n.graph.getNode(t),o=R(a.offset),i=n.graph.outEdges(t),h=n.graph.inEdges(t),u=i.slice(o,o+20),d=h.slice(o,o+20),g=(s,A)=>{let m=n.graph.getNode(A);return{kind:s,id:A,label:m?S(n.schema.tryDefinition(m.kind),m):A,...f(m)?{archived:!0}:{}}},l=x(n.schema,n.graph,e),c=n.violations().filter(s=>s.nodeIds.includes(t)),p=[w(i.length,o,u.length,"get_node","links out",`id "${t}" and `),w(h.length,o,d.length,"get_node","links in",`id "${t}" and `),c.length>20?`and ${c.length-20} more problems: get_violations lists them.`:void 0].filter(Boolean);return{data:{node:O(T(e),r),...f(e)?{archived:!0}:{},...Object.keys(l.values).length>0?{computed:L(t,l.values,r)}:{},...Object.keys(l.refused).length>0?{uncomputed:l.refused}:{},out:$(u.map(s=>g(s.kind,s.to)),r),in:$(d.map(s=>g(s.kind,s.from)),r),violations:c.slice(0,20).map(j),...p.length>0?{more:p.join(" ")}:{}},reads:[t,...u.map(s=>s.to),...d.map(s=>s.from)]}}function F(n,r){let t=R(r.offset),{page:a,answer:e}=B(n,t,20,o=>{let i=w(n.length,t,o.length,"get_violations","problems");return{violations:o.map(j),total:n.length,...i?{more:i}:{}}});return{data:e,reads:[...new Set(a.flatMap(o=>o.nodeIds))]}}export{P as graphRead,U as nodeRead,I as searchRead,F as violationsRead,C as withinReadChars};
@@ -1 +0,0 @@
1
- import{a as le,b as ue,c as fe,d as ye,e as L,f as M,g as pe}from"./chunk.NDADLJE6.js";import{a as me}from"./chunk.AK3IHFCF.js";import{c as G,e as se}from"./chunk.HHPGWJDO.js";import{a as j,b as te,c as oe,d as ie,f as x,m as ae,n as b,o as de,p as E}from"./chunk.42YX6NOY.js";import{a as Q,b as B,d as ce,e as ge,g as he,h as be,i as we}from"./chunk.WAFDCOOG.js";import{B as v,C as $,F as H,G as K,K as z,M as P,S as Z,W as X,ba as N,da as q,ga as T,ha as O,ia as S,la as J,pb as ee,qa as Y,qb as ne,rb as C,sb as re}from"./chunk.6V2RG5JG.js";var F=e=>e?._zod?.def,Fe=/^\^\\d\{4\}-\\d\{2\}-\\d\{2\}\$$/;function ve(e){let n=F(e),i=!0,r;for(let d=0;n&&d<4;d++){if(n.type==="optional"||n.type==="nullable")i=!1;else if(n.type==="default")i=!1,r=n.defaultValue;else break;n=F(n.innerType)}if(!n)return{why:"it is not a zod field"};let o=$(e),t={...i?{required:!0}:{},...r!==void 0?{default:r}:{},...o?{description:o}:{}},s=(n.checks??[]).map(d=>F(d)),u=S(e);if(u)return{spec:{type:u,...t}};if(J(e))return{spec:{type:"app-link",...t}};if(Q(e))return{spec:{type:"text",format:"markdown",...t}};let a=re(e);if(a)return{spec:{type:a,...t}};switch(n.type){case"string":{let d=n.format;return d==="email"?{spec:{type:"email",...t}}:d==="url"?{spec:{type:"url",...t}}:d==="date"?{spec:{type:"date",...t}}:d==="datetime"||s.some(l=>l?.fn===H)?{spec:{type:"datetime",...t}}:s.some(l=>l?.format==="regex"&&Fe.test(String(l?.pattern?.source??"")))?{spec:{type:"date",...t}}:{spec:{type:"string",...t}}}case"number":{let d={};for(let l of s){let y=l?.value;typeof y=="number"&&(l?.check==="greater_than"&&l.inclusive?d.min=Math.max(d.min??y,y):l?.check==="less_than"&&l.inclusive?d.max=Math.min(d.max??y,y):l?.check==="multiple_of"&&(d.step=y))}return{spec:{type:s.some(l=>l?.format==="safeint"||l?.format==="int")?"integer":"number",...d,...t}}}case"boolean":return{spec:{type:"boolean",...t}};case"enum":{let d=Object.keys(n.entries??{});return d.length>0?{spec:{type:"enum",options:d,...t}}:{why:"it is an enum with no options"}}case"array":{let d=F(n.element),l=S(n.element)??(d?.type==="number"?"number":d?.type==="string"?"string":void 0);return l?{spec:{type:"list",of:l,...t}}:{why:`it is a list of ${String(d?.type??"something")}, and a document lists words, numbers, dates, images or files`}}default:return{why:`it is a ${String(n.type)}, which a document has no field type for`}}}function V(e){let n=ve(e);return"spec"in n?n.spec:void 0}var _=e=>e.caption?.trim()||e.name;function Pe(e){let n=e?.fields?.shape??{};return Object.keys(n).filter(i=>{let r=v(n[i]);for(;r?.innerType;)r=v(r.innerType);return S(n[i])!==void 0||r?.type==="array"&&S(r.element)!==void 0})}function un(e,n){for(let i of Pe(n)){let r=O(e[i]).find(T);if(r)return r}}var A=e=>{try{return e()}catch{return null}},je=e=>typeof e=="string"&&le.includes(e);function Ne(e){if(e!==void 0)return je(e)?e:e&&typeof e=="object"&&typeof e.expr=="string"?{expr:A(()=>G(e.expr))}:"neutral"}var Ce=4;function Le(e){let n=typeof e.list=="string"?A(()=>G(e.list)):null,i=e.sort,r=typeof i=="string"?i:i&&typeof i=="object"&&typeof i.by=="string"?i.by:void 0,o=i&&typeof i=="object"?i.direction:void 0,t=n,s;if(n&&r!==void 0)if(o==="choices")s=r;else{let y=A(()=>G(r));t=y?{t:"call",fn:"sort",args:[n,y,{t:"lit",value:o==="desc"?"desc":"asc",at:0}],at:0}:null}let u=typeof e.limit=="number"&&Number.isInteger(e.limit)&&e.limit>=1?Math.min(e.limit,L):void 0,a=e.group,d=typeof a=="string"?a:a&&typeof a=="object"&&typeof a.by=="string"?a.by:void 0,l=a&&typeof a=="object"&&a.headings&&typeof a.headings=="object"?a.headings:{};return{t:"list",source:t,...s?{choiceOrder:s}:{},...u?{limit:u}:{},...d?{group:{by:d,headings:Object.fromEntries(Object.entries(l).filter(y=>typeof y[1]=="string"))}}:{},...typeof e.empty=="string"?{empty:e.empty}:{},as:e.as==="card"?"card":"row"}}function ke(e,n=1,i=""){if(!Array.isArray(e)||n>Ce)return[];let r={};return e.flatMap(o=>{if(!o||typeof o!="object"||Array.isArray(o))return[];let t=o,s=p=>typeof p=="string"?A(()=>se(p)):null,u=p=>typeof p=="string"?A(()=>G(p)):null,a=Ne(t.tone),d=typeof t.label=="string"?t.label:void 0,l=p=>Object.hasOwn(t,p),y=typeof t.currency=="string"&&/^[A-Z]{3}$/.test(t.currency)?t.currency:void 0,f=l("list")?"list":l("headline")?"headline":typeof t.figure=="string"?"number":Me.find(l);if(!f)return[];let m=r[f]=(r[f]??0)+1,c=t.key,k=typeof c=="string"&&c?c:`${i}${f}.${m}`;return[{...(()=>{switch(f){case"list":return Le(t);case"number":{let p=fe.includes(t.as)?t.as:void 0,W=ye.includes(t.emphasis)?t.emphasis:void 0;return{t:f,value:u(t.figure),...p?{as:p}:{},...y?{currency:y}:{},...d?{label:s(d)}:{},...W?{emphasis:W}:{}}}case"headline":case"title":return{t:f,parts:s(t[f])};case"text":case"badge":return{t:f,parts:s(t[f]),...a?{tone:a}:{}};case"field":{let p=ue.includes(t.as)?t.as:void 0;return{t:f,field:String(t.field),...p?{as:p}:{},...y?{currency:y}:{},...d?{label:d}:{}}}case"image":return{t:f,field:String(t.image),as:t.as==="gallery"?"gallery":"thumb",...d?{label:d}:{}};case"progress":{let p=t.progress??{};return{t:f,value:u(p.value),max:u(p.max),...d?{label:s(d)}:{}}}case"group":return{t:f,blocks:ke(t.group,n+1,`${k}.`),direction:t.direction==="row"?"row":"column"};case"when":return{t:f,when:u(t.when),show:ke(t.show,n+1,`${k}.`)};default:return{t:f}}})(),key:k}]})}var Me=["title","text","badge","field","image","progress","group","when","divider","figure"],g="\u2014",Ve=500;function w(e,n){if(!e)return{ok:!1,problem:"an expression that does not parse"};try{return{ok:!0,value:x(e,{graph:n.graph??ae,subject:n.node,kinds:n.kinds,today:n.today,budget:n.budget??Ve})}}catch(i){return{ok:!1,problem:i instanceof Error?i.message:String(i)}}}var _e=(e,n,i)=>!e.format&&e.expr?.t==="ident"&&typeof i=="string"&&n.fields[e.expr.name]?.format==="markdown";function R(e,n,i){if(!e)return{text:g,problem:"a template that does not parse"};let r,o;return{text:e.map(s=>{if(s.text!==void 0)return s.text;let u=w(s.expr??null,n);if(!u.ok)return r??=`{${s.source??""}}: ${u.problem}`,g;if(_e(s,n,u.value))return n.glance?ce(u.value,{markdown:!0}):i&&e.length===1?(o=!0,u.value):ge(u.value);let a=!s.format&&s.expr?.t==="ident"&&typeof u.value=="number"?Te(n,s.expr.name):void 0;return de(s,a?C(u.value,a):b(u.value,s.format,n.today,s.formatArgs,n.money,E(n.schema)))}).join(""),...r?{problem:r}:{},...o?{markdown:o}:{}}}function Se(e,n){if(e===void 0)return;if(typeof e=="string")return e;let i=w(e.expr,n);return i.ok&&je(i.value)?i.value:"neutral"}function Ie(e){if(typeof e=="string")try{let n=new URL(e);return n.protocol==="http:"||n.protocol==="https:"?n.href:void 0}catch{return}}var Ge=(e,n)=>{let i=e.fields[n]?.type;return i==="phone"||i==="place"||i==="duration"?i:he(e.definition,n)},Te=(e,n)=>ee(e.definition?.fields?.shape?.[n]);function De(e,n,i,r,o){if(n==null||n==="")return g;if(typeof n=="boolean")return n?"yes":"no";if(r)return b(n,r,i.today,[],o?{...i.money,currency:o}:i.money);let t=i.fields[e];if(i.definition?.display?.format?.[e])return B(i.definition,e,n);let s=be(Ge(i,e),n,i.money?.locale);if(s!==void 0)return s;if(t?.type==="date")return b(n,"date",i.today,[],i.money);if(t?.type==="datetime"&&typeof n=="string")return z(n,i.money?.locale);if(t?.type==="enum"&&typeof n=="string")return B(i.definition,e,n);let u=typeof n=="number"?Te(i,e):void 0;if(u)return C(n,u);if(typeof n=="number")return P(n,i.money?.locale,{});let a=O(n);return a[0]?a.map(_).join(", "):Array.isArray(n)?n.map(d=>String(d)).join(", "):typeof n=="object"?g:String(n)}function Ue(e,n,i,r,o){return typeof e!="number"?String(e):n==="money"?ne(e,i?{...o,currency:i}:o):n==="percent"?b(e,n,r,[],o):P(e,o?.locale)}var h=(e,n)=>n?{...e,problem:n}:e;function Re(e){return e.firstHeading===void 0?e:{...e,firstHeading:void 0}}function We(e,n,i){switch(e.t){case"title":{let r=R(e.parts,n);return h({t:"title",text:r.text},r.problem)}case"text":{let r=R(e.parts,n,!0),o=Se(e.tone,n);return h({t:"text",text:r.text,...o?{tone:o}:{},...r.markdown?{markdown:r.markdown}:{}},r.problem)}case"badge":{let r=R(e.parts,n);return h({t:"badge",text:r.text,tone:Se(e.tone,n)??"neutral"},r.problem)}case"field":{let r=e.label??N(n.definition,e.field);if(!n.node)return{t:"field",field:e.field,label:r,text:g,problem:`"${e.field}" names a field, and these blocks are about no one record`};let o=e.as===void 0?n.kinds.get(n.node.kind)?.linked?.get(e.field):void 0;if(o){let y=Y(Object.hasOwn(n.node,e.field)?n.node[e.field]:void 0,o);return{t:"field",field:e.field,label:r,text:y.length>0?"linked record":g,...y.length>0?{linked:{relation:o,refs:y}}:{}}}let t=n.kinds.get(n.node.kind)?.computed?.has(e.field),s,u;if(t){let y=w({t:"ident",name:e.field,at:0},n);y.ok?s=y.value!==null&&typeof y.value=="object"?b(y.value,void 0,n.today,[],n.money,E(n.schema)):y.value:u=y.problem}else s=Object.hasOwn(n.node,e.field)?n.node[e.field]:void 0;let a=e.as!==void 0?void 0:n.fields[e.field]?.type==="url"?Ie(s):we(Ge(n,e.field),s),d=A(()=>De(e.field,s,n,e.as,e.currency))??g,l=n.fields[e.field]?.type==="app-link"&&e.as===void 0&&typeof s=="string"?s:void 0;return h({t:"field",field:e.field,label:r,text:d,...a?{href:a}:{},...l?{app:l}:{}},u)}case"image":{let r=O(n.node&&Object.hasOwn(n.node,e.field)?n.node[e.field]:null),o=e.as==="gallery"?r:r.filter(T).slice(0,1);return{t:"image",field:e.field,label:e.label??N(n.definition,e.field),as:e.as,files:o,text:o.map(_).join(", ")||g}}case"progress":{let r=w(e.value,n),o=w(e.max,n),t=e.label?R(e.label,n):{text:"Progress"},s=t.text,u=r.ok?o.ok?t.problem:o.problem:r.problem;return r.ok&&o.ok&&typeof r.value=="number"&&typeof o.value=="number"&&Number.isFinite(r.value)&&Number.isFinite(o.value)&&o.value>0?h({t:"progress",label:s,value:r.value,max:o.value,text:`${b(r.value,void 0,n.today)} of ${b(o.value,void 0,n.today)}`},u):h({t:"progress",label:s,text:g},u)}case"group":return{t:"group",direction:e.direction,blocks:Ae(e.blocks,Re(n))};case"when":{let r=w(e.when,n),o=r.ok&&r.value===!0;return h({t:"when",shown:o,blocks:o?Ae(e.show,Re(n)):[]},r.ok?void 0:r.problem)}case"divider":return{t:"divider"};case"figure":return{t:"figure"};case"headline":{let r=R(e.parts,n),o=Math.min(6,Math.max(1,(i?n.firstHeading:void 0)??n.heading??3));return h({t:"headline",level:o,text:r.text},r.problem)}case"number":{let r=w(e.value,n),o=!r.ok||r.value===null||typeof r.value=="object"?g:Ue(r.value,e.as,e.currency,n.today,n.money),t=e.label?R(e.label,n):void 0;return h({t:"number",text:o,...t?{label:t.text}:{},...e.emphasis?{emphasis:e.emphasis}:{}},r.ok?t?.problem:r.problem)}case"list":return He(e,n)}}function Ae(e,n){let i=e.findIndex(r=>r.t==="headline");return e.map((r,o)=>({...We(r,n,o===i),key:r.key}))}var $e=new Set(["every","some","sum","min","max","sort"]);function Bn(e,n){let i=new Set,r=new Set,o=a=>{if(a)switch(a.t){case"ident":i.add(a.name);return;case"list":a.items.forEach(o);return;case"member":return o(a.object);case"unary":return o(a.operand);case"binary":return o(a.left),o(a.right);case"where":return o(a.set);case"call":a.args.forEach((d,l)=>{l===1&&$e.has(a.fn)||o(d)});return;default:return}},t=a=>{for(let d of a??[])o(d.expr)},s=(a,d)=>{a.forEach((l,y)=>{let f=d[y];if(f)switch(l.t){case"field":case"image":i.add(l.field);return;case"title":case"text":case"badge":case"headline":t(l.parts);return;case"number":o(l.value),t(l.label);return;case"progress":o(l.value),o(l.max);return;case"group":f.t==="group"&&s(l.blocks,f.blocks);return;case"when":f.t==="when"&&f.shown&&s(l.show,f.blocks);return;case"list":if(f.t==="list")for(let m of f.members)r.add(m.id);return;default:return}})};s(e,n);let u=n[0];return{fields:i,records:r,...e[0]?.t==="title"&&u?.t==="title"?{title:u.text}:{}}}function He(e,n){let i=Math.min(6,(n.heading??3)+1),r=w(e.source,n);if(!r.ok)return{t:"list",as:e.as,failed:!0,members:[],headingLevel:i,more:0,problem:r.problem};let o=r.value,t=o instanceof j?o.nodes:o!==null&&typeof o=="object"&&!Array.isArray(o)?[o]:[];e.choiceOrder&&n.schema&&(t=Ke(t,e.choiceOrder,n.schema));let s=t.length,u=t.slice(0,e.limit??L),a=u.slice(0,M),d=u.slice(M),l=(e.limit===void 0?s:u.length)-a.length,y=c=>e.group&&n.schema&&c.length>0?ze(c,e.group,n.schema,n.graph):void 0,f=y(a),m=d.length>0?y(u):void 0;return{t:"list",as:e.as,failed:!1,members:a,...d.length>0?{rest:d}:{},...f?{groups:f}:{},...m?{everyGroup:m}:{},headingLevel:i,...a.length===0&&e.empty?{empty:e.empty}:{},more:l,total:s}}function I(e,n,i){let r=e.tryDefinition(n)?.fields?.shape,o=r&&Object.hasOwn(r,i)?V(r[i]):void 0;return o?.type==="enum"?o.options??[]:[]}var D=(e,n)=>Object.hasOwn(e,n)?e[n]:void 0;function Ke(e,n,i){let r=o=>{let t=I(i,o.kind,n).indexOf(String(D(o,n)));return t<0?Number.MAX_SAFE_INTEGER:t};return e.map((o,t)=>({node:o,i:t,rank:r(o)})).sort((o,t)=>o.rank-t.rank||o.i-t.i).map(o=>o.node)}function ze(e,n,i,r){let o=e.some(a=>I(i,a.kind,n.by).length>0)?void 0:pe(n.by);if(o&&r)return Ze(e,o,n.headings,i,r);let t=[];for(let a of e)for(let d of I(i,a.kind,n.by))t.includes(d)||t.push(d);let s=[];for(let a of t){let d=e.filter(y=>D(y,n.by)===a);if(d.length===0)continue;let l=i.tryDefinition(d[0].kind);s.push({value:a,heading:n.headings[a]??Z(B(l,n.by,a)),members:d})}let u=e.filter(a=>!t.includes(String(D(a,n.by))));return u.length>0&&s.push({value:null,members:u}),s}function Ze(e,n,i,r,o){let t=f=>n.way??(Object.hasOwn(r.tryDefinition(f.kind)?.edges??{},n.edge)?"out":"in"),s=new Map,u=[],a=E(r),d;for(let f of e){let m=t(f)==="out"?o.out(f.id,n.edge):o.in(f.id,n.edge);m.length===0&&u.push(f);for(let c of m){d??=c.kind;let k=s.get(c.id)??{node:c,members:[]};k.members.push(f),s.set(c.id,k)}}let l=[...s.values()].map(({node:f,members:m})=>({value:f.id,heading:i[f.id]??a(f),members:m})).sort((f,m)=>f.heading.localeCompare(m.heading,void 0,{numeric:!0}));!d&&e[0]&&t(e[0])==="out"&&(d=(r.tryDefinition(e[0].kind)?.edges??{})[n.edge]?.to?.[0]);let y=d&&d!=="*"?q(r.tryDefinition(d),d):void 0;return u.length>0&&l.push({value:null,...y?{heading:`No ${y}`}:{},members:u}),l}function Oe(e){return e.t==="list"||e.t==="headline"||e.t==="number"||e.t==="image"&&e.as==="gallery"?!0:e.t==="group"?e.blocks.some(Oe):e.t==="when"?e.show.some(Oe):!1}function xe(e,n){let i=e.tryDefinition(n)?.fields?.shape??{},r={};for(let[o,t]of Object.entries(i)){let s=V(t);s&&(r[o]=s)}return r}var Ee=new WeakMap;function U(e){let n=Ee.get(e);return n||Ee.set(e,n=me(e)),n}function Xe(e,n,i,r={}){let o=U(e),t={},s={},u=a=>{if(a instanceof j)return a.nodes.map(d=>u(d));if(Array.isArray(a))return a.map(d=>u(d));if(a!==null&&typeof a=="object"){let d=a;return{id:d.id,kind:d.kind,label:X(e.tryDefinition(d.kind),d)}}return a};for(let[a,d]of o.get(i?i.kind:oe)?.computed??[])try{let l=[],y=x(d,{graph:n,subject:i,kinds:o,...r.today?{today:r.today}:{},...r.budget?{budget:r.budget}:{},...r.linked?{linked:r.linked}:{},onUnread:f=>l.push(f)});l.length>0&&(y===null||y instanceof j&&y.nodes.length===0)?s[a]=te(l[0]):t[a]=u(y)}catch(l){if(!(l instanceof ie))throw l;s[a]=l.sentence}return{values:t,refused:s}}function Cn(e,n,i){let{values:r}=Xe(e,n,i);if(Object.keys(r).length===0)return i;let o=t=>Array.isArray(t)?t.map(o):t!==null&&typeof t=="object"?t.label:t;return{...i,...Object.fromEntries(Object.entries(r).map(([t,s])=>[t,o(s)]))}}var qe=500,Je=2e4,Be=new WeakMap;function Ye(e,n){let i=Be.get(e);i||Be.set(e,i=new Map);let r=i.get(n);return r||i.set(n,r=xe(e,n)),r}function In(e,n,i,r={}){if(n&&typeof e.seenBy!="function")throw new TypeError("blockContextFor: a seat is read from a store (its `seenBy`); a bare { graph, schema } is read as it is handed, with no principal");let o=n?e.seenBy(n):e,t=n&&i?o.graph.getNode(i.id)??null:i,s=o.schema,u=t&&s.tryDefinition(t.kind),a=!t||(r.slot??"page")==="page",{money:d,firstHeading:l}=r;return{node:t,graph:o.graph,schema:s,kinds:U(s),fields:t?Ye(s,t.kind):{},definition:u||void 0,today:r.today??o.today?.()??K(),money:d,heading:r.heading??(a?2:3),firstHeading:l,budget:r.budget??(a?Je:qe),...a?{}:{glance:!0}}}export{V as a,_ as b,Pe as c,un as d,ke as e,Ae as f,Bn as g,Oe as h,Xe as i,Cn as j,In as k};