graview 0.1.28 → 0.1.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/dist/preview/chunk.26CZTUY4.js +1 -0
  2. package/dist/preview/chunk.2CIBWZJG.js +1 -0
  3. package/dist/preview/chunk.2EXGG6BB.js +1 -0
  4. package/dist/preview/chunk.2NBYNZRD.js +1 -0
  5. package/dist/preview/chunk.2XAONC66.js +1 -0
  6. package/dist/preview/chunk.34ZMMURV.js +27 -0
  7. package/dist/preview/chunk.3ADPAGPY.js +28 -0
  8. package/dist/preview/chunk.3JGGBLRB.js +1 -0
  9. package/dist/preview/chunk.3JNMSOFG.js +1 -0
  10. package/dist/preview/chunk.3R4W2P5X.js +1 -0
  11. package/dist/preview/chunk.3SKKIHU3.js +4 -0
  12. package/dist/preview/{chunk.5BGA2VUS.js → chunk.3URFMWXZ.js} +4 -4
  13. package/dist/preview/chunk.3VL5WECB.js +1 -0
  14. package/dist/preview/chunk.42YX6NOY.js +2 -0
  15. package/dist/preview/chunk.4ALKPNXM.js +1 -0
  16. package/dist/preview/chunk.4HP7UWA2.js +1 -0
  17. package/dist/preview/chunk.4SJUTBDV.js +1 -0
  18. package/dist/preview/chunk.5U5J3ISK.js +1 -0
  19. package/dist/preview/chunk.6T2Q6NLO.js +1 -0
  20. package/dist/preview/chunk.6V2RG5JG.js +5 -0
  21. package/dist/preview/chunk.6XMEU2Q2.js +1 -0
  22. package/dist/preview/chunk.7BWT5L2L.js +1 -0
  23. package/dist/preview/chunk.AK3IHFCF.js +1 -0
  24. package/dist/preview/chunk.BPWNWE7N.js +1 -0
  25. package/dist/preview/chunk.C5CYZNSJ.js +1 -0
  26. package/dist/preview/chunk.CM6LOIQE.js +88 -0
  27. package/dist/preview/chunk.D3IECJ2S.js +17 -0
  28. package/dist/preview/chunk.DT7LHWU2.js +1 -0
  29. package/dist/preview/chunk.DZRTOURR.js +1 -0
  30. package/dist/preview/chunk.ERXSYPYL.js +84 -0
  31. package/dist/preview/chunk.EYZ7MHBZ.js +0 -0
  32. package/dist/preview/chunk.FDELO7NY.js +116 -0
  33. package/dist/preview/chunk.FGVKJWNS.js +6 -0
  34. package/dist/preview/chunk.FWCOJDOD.js +1 -0
  35. package/dist/preview/chunk.GFF2FB2J.js +25 -0
  36. package/dist/preview/chunk.GLBHQFJ2.js +1 -0
  37. package/dist/preview/chunk.HHI65WFZ.js +3 -0
  38. package/dist/preview/chunk.HHPGWJDO.js +2 -0
  39. package/dist/preview/chunk.HJCQ6I3S.js +1 -0
  40. package/dist/preview/chunk.HSCTWAUV.js +1 -0
  41. package/dist/preview/chunk.INZUEWC5.js +1 -0
  42. package/dist/preview/chunk.J2ITFGN3.js +1 -0
  43. package/dist/preview/chunk.JH6MU6TX.js +2 -0
  44. package/dist/preview/chunk.JISMMIMX.js +1 -0
  45. package/dist/preview/chunk.JN7DIFR3.js +1 -0
  46. package/dist/preview/chunk.JPHNKWTY.js +1 -0
  47. package/dist/preview/chunk.JTNWD2CN.js +1 -0
  48. package/dist/preview/chunk.K75FUIZI.js +1 -0
  49. package/dist/preview/chunk.K776HO42.js +2 -0
  50. package/dist/preview/chunk.KN3ULTGF.js +1 -0
  51. package/dist/preview/chunk.KOB6N3SL.js +1 -0
  52. package/dist/preview/chunk.KQT7WAQE.js +1 -0
  53. package/dist/preview/chunk.L4DECHXR.js +327 -0
  54. package/dist/preview/chunk.L6OMEYL6.js +10 -0
  55. package/dist/preview/chunk.LQ7V6KEE.js +1 -0
  56. package/dist/preview/chunk.MB7LKKUD.js +1 -0
  57. package/dist/preview/chunk.MD74YVRN.js +3 -0
  58. package/dist/preview/chunk.MGNP4LAM.js +1 -0
  59. package/dist/preview/chunk.NCTOBUCT.js +1 -0
  60. package/dist/preview/chunk.NDADLJE6.js +1 -0
  61. package/dist/preview/chunk.NO52VON3.js +1 -0
  62. package/dist/preview/chunk.O2LK2AO7.js +1 -0
  63. package/dist/preview/chunk.OAF7TUMI.js +1 -0
  64. package/dist/preview/chunk.OQ4KFN6W.js +1 -0
  65. package/dist/preview/chunk.OQDETV4X.js +1 -0
  66. package/dist/preview/chunk.OXQMNIRO.js +1 -0
  67. package/dist/preview/chunk.OZNW5W4Z.js +1 -0
  68. package/dist/preview/chunk.PAVR5TK5.js +1 -0
  69. package/dist/preview/chunk.PKK6FRZR.js +2 -0
  70. package/dist/preview/chunk.Q5WEOX3Q.js +1 -0
  71. package/dist/preview/chunk.QIAKO27D.js +1 -0
  72. package/dist/preview/chunk.QNGWEV47.js +1 -0
  73. package/dist/preview/{chunk.EYF6ONTA.js → chunk.QTA4ROAK.js} +1 -1
  74. package/dist/preview/chunk.QTMWHE5O.js +1 -0
  75. package/dist/preview/chunk.R26DREVU.js +1 -0
  76. package/dist/preview/chunk.RI3PYG5T.js +19 -0
  77. package/dist/preview/chunk.RIEHYQLK.js +1101 -0
  78. package/dist/preview/chunk.RRVIXV7W.js +1 -0
  79. package/dist/preview/chunk.RYT5U3QM.js +1 -0
  80. package/dist/preview/chunk.SE5SKFQH.js +1 -0
  81. package/dist/preview/chunk.SHPXD6FC.js +1 -0
  82. package/dist/preview/chunk.SOBC3CTN.js +47 -0
  83. package/dist/preview/chunk.SOD3PBJM.js +1 -0
  84. package/dist/preview/chunk.T3VPD7JQ.js +1 -0
  85. package/dist/preview/chunk.TI4OSTQV.js +1 -0
  86. package/dist/preview/chunk.UDSEJKCY.js +1 -0
  87. package/dist/preview/chunk.UGFDSE37.js +1 -0
  88. package/dist/preview/chunk.UT6642FC.js +1 -0
  89. package/dist/preview/chunk.UWGWXFWZ.js +1 -0
  90. package/dist/preview/{chunk.IKT7JQUW.js → chunk.UZWWDAGM.js} +1 -1
  91. package/dist/preview/chunk.V5ZYUVMH.js +1 -0
  92. package/dist/preview/chunk.V7BDAGDE.js +35 -0
  93. package/dist/preview/chunk.VG56IUIQ.js +9 -0
  94. package/dist/preview/chunk.VOAZBHCG.js +1 -0
  95. package/dist/preview/chunk.VS7K3SCD.js +9 -0
  96. package/dist/preview/chunk.VSZQXB4Q.js +3 -0
  97. package/dist/preview/chunk.W3S6UXNA.js +1 -0
  98. package/dist/preview/chunk.WAFDCOOG.js +3 -0
  99. package/dist/preview/chunk.WYTIOLPP.js +1 -0
  100. package/dist/preview/chunk.X37L5TN5.js +1 -0
  101. package/dist/preview/chunk.XDYAG276.js +1 -0
  102. package/dist/preview/chunk.XRJBLH4N.js +1 -0
  103. package/dist/preview/chunk.XS7YFNDU.js +1 -0
  104. package/dist/preview/chunk.XSTXV6FP.js +6 -0
  105. package/dist/preview/chunk.Y4UXEL6Y.js +1 -0
  106. package/dist/preview/chunk.YJUB4OD7.js +1 -0
  107. package/dist/preview/chunk.YLQB3KBA.js +1 -0
  108. package/dist/preview/chunk.YNQDVGZM.js +1 -0
  109. package/dist/preview/chunk.YV2LJFGS.js +1 -0
  110. package/dist/preview/chunk.Z2YUYZT4.js +1 -0
  111. package/dist/preview/chunk.ZYKAS4BT.js +1 -0
  112. package/dist/preview/page.js +6 -6
  113. package/package.json +6 -6
  114. package/dist/preview/chunk.22H4JXTH.js +0 -8
  115. package/dist/preview/chunk.25OYH6MY.js +0 -1
  116. package/dist/preview/chunk.2GBQJXJH.js +0 -19
  117. package/dist/preview/chunk.2VUG6EAN.js +0 -1
  118. package/dist/preview/chunk.337WDTG3.js +0 -2
  119. package/dist/preview/chunk.3HLLQ5CJ.js +0 -1
  120. package/dist/preview/chunk.46KUPBQC.js +0 -1
  121. package/dist/preview/chunk.4H7CQE56.js +0 -1
  122. package/dist/preview/chunk.4HGBVU5B.js +0 -1
  123. package/dist/preview/chunk.4RO5DA22.js +0 -1
  124. package/dist/preview/chunk.4TUNX4WM.js +0 -29
  125. package/dist/preview/chunk.6LJ66MB7.js +0 -1
  126. package/dist/preview/chunk.6R4EI47C.js +0 -1
  127. package/dist/preview/chunk.7S22MBNN.js +0 -1
  128. package/dist/preview/chunk.A73BXXE4.js +0 -3
  129. package/dist/preview/chunk.AHDOKM4O.js +0 -1
  130. package/dist/preview/chunk.ARE3MEDN.js +0 -1
  131. package/dist/preview/chunk.ASFZTYFO.js +0 -1
  132. package/dist/preview/chunk.BBJZ6O7J.js +0 -1
  133. package/dist/preview/chunk.BCBH6WJF.js +0 -1
  134. package/dist/preview/chunk.CAZAB352.js +0 -1
  135. package/dist/preview/chunk.CY7MDLRS.js +0 -1
  136. package/dist/preview/chunk.DAVRLRGB.js +0 -1
  137. package/dist/preview/chunk.DCIC3YHX.js +0 -1
  138. package/dist/preview/chunk.EW4JFOJY.js +0 -1
  139. package/dist/preview/chunk.FP27W5MU.js +0 -1
  140. package/dist/preview/chunk.G2OOBROL.js +0 -1040
  141. package/dist/preview/chunk.GCKSQ52O.js +0 -1
  142. package/dist/preview/chunk.GE5EAN36.js +0 -2
  143. package/dist/preview/chunk.HOPIZMJR.js +0 -2
  144. package/dist/preview/chunk.IBGO4BUF.js +0 -1
  145. package/dist/preview/chunk.IDI2BQ7Y.js +0 -9
  146. package/dist/preview/chunk.IH42QTOM.js +0 -1
  147. package/dist/preview/chunk.ISRS7GOT.js +0 -321
  148. package/dist/preview/chunk.J6CBMLGR.js +0 -1
  149. package/dist/preview/chunk.JRCV6HVV.js +0 -1
  150. package/dist/preview/chunk.KWW3YHQ4.js +0 -23
  151. package/dist/preview/chunk.MKNXV4TM.js +0 -8
  152. package/dist/preview/chunk.MRK6QJV5.js +0 -25
  153. package/dist/preview/chunk.MVNIKZIC.js +0 -1
  154. package/dist/preview/chunk.N2WTNKEV.js +0 -1
  155. package/dist/preview/chunk.N7HCALRK.js +0 -61
  156. package/dist/preview/chunk.NRRUGG22.js +0 -1
  157. package/dist/preview/chunk.OGL4PHTY.js +0 -1
  158. package/dist/preview/chunk.ONDILMIX.js +0 -1
  159. package/dist/preview/chunk.PFQFPJ5L.js +0 -16
  160. package/dist/preview/chunk.PN2H6X7O.js +0 -1
  161. package/dist/preview/chunk.PWHJHFC4.js +0 -1
  162. package/dist/preview/chunk.Q3HVA6L4.js +0 -1
  163. package/dist/preview/chunk.RZLNDVGN.js +0 -107
  164. package/dist/preview/chunk.SBHVVJY7.js +0 -1
  165. package/dist/preview/chunk.SNBIZ3B6.js +0 -1
  166. package/dist/preview/chunk.TBG2QBOS.js +0 -1
  167. package/dist/preview/chunk.VR735ZQL.js +0 -1
  168. package/dist/preview/chunk.VSXCXPK2.js +0 -1
  169. package/dist/preview/chunk.W3LDQ6B2.js +0 -1
  170. package/dist/preview/chunk.WCNONCTL.js +0 -6
  171. package/dist/preview/chunk.WHTNSETN.js +0 -1
  172. package/dist/preview/chunk.XG67BWH6.js +0 -1
  173. package/dist/preview/chunk.XRM6WXPW.js +0 -1
  174. package/dist/preview/chunk.Y5LPZLDE.js +0 -1
  175. package/dist/preview/chunk.YETBY2LM.js +0 -1
  176. package/dist/preview/chunk.YSYT3ASK.js +0 -1
  177. package/dist/preview/chunk.ZEUBAAVQ.js +0 -1
  178. package/dist/preview/chunk.ZJDRD6PO.js +0 -1
@@ -0,0 +1,327 @@
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};
@@ -0,0 +1,10 @@
1
+ import"./chunk.L4DECHXR.js";import{R as o,Z as n}from"./chunk.GFF2FB2J.js";import"./chunk.6V2RG5JG.js";import{b as t}from"./chunk.AJZBJBMO.js";var a=t(o(),1),d=[["waiting","Waiting"],["active","Under way: darker and taller"],["done","Done: flat and pale"],["flagged","A problem, or past its due date"],["recent","Changed since you were last here"],["own","Yours"]],g=i=>{let e=r=>`color-mix(in oklab,var(--graview-ink) ${r}%,var(--graview-panel))`;return`.graview-map-key{display:grid;gap:4px;padding:2px 4px 8px;margin-bottom:6px;border-bottom:1px solid var(--graview-edge);font-size:.8125rem;color:var(--graview-ink-muted)}
2
+ .graview-map-key>div{display:flex;align-items:center;gap:8px}
3
+ .graview-map-key>div:first-child{color:var(--graview-ink)}
4
+ .graview-map-key i{flex:none;width:14px;height:10px;border-radius:2px;background:${e(i?34:42)}}
5
+ .graview-map-key i[data-graview-mark=active]{height:14px;background:${e(70)}}
6
+ .graview-map-key i[data-graview-mark=done]{height:4px;background:${e(i?13:18)}}
7
+ .graview-map-key i[data-graview-mark=flagged]{background:var(--graview-warn)}
8
+ .graview-map-key i[data-graview-mark=recent]{box-shadow:0 0 3px 1px color-mix(in oklab,var(--graview-accent) 70%,transparent)}
9
+ .graview-map-key i[data-graview-mark=own]{outline:1.4px solid var(--graview-ink)}
10
+ .graview-map-key i[data-graview-mark=more]{width:auto;height:auto;background:none;font-size:.6875rem;font-style:normal}`};function m(){let{scheme:i}=n();return(0,a.jsxs)("div",{className:"graview-map-key","data-testid":"map-key",children:[(0,a.jsx)("style",{children:g(i==="light")}),(0,a.jsx)("div",{children:"The map: a block is a record, in a row by its status"}),d.map(([e,r])=>(0,a.jsxs)("div",{children:[(0,a.jsx)("i",{"data-graview-mark":e,"aria-hidden":"true"}),r]},e)),(0,a.jsxs)("div",{children:[(0,a.jsx)("i",{"data-graview-mark":"more","aria-hidden":"true",children:"+3"}),"More in that row than its plot holds"]})]})}export{m as MapKey};
@@ -0,0 +1 @@
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};
@@ -0,0 +1 @@
1
+ var P="[data-graview-foot]",T="graview:foot-moved";var w=()=>({width:document.documentElement.clientWidth||innerWidth,height:innerHeight});function G(o,c){let i=w(),n=c?.getBoundingClientRect()??{left:0,top:0,right:i.width,bottom:i.height},h=Math.max(0,n.left),r=Math.min(i.width,n.right),e=Math.max(0,n.top),a=Math.min(i.height,n.bottom),g=Math.max(0,r-h),u=g<640;o.style.translate="none",o.style.top="auto",o.style.right="auto",o.style.maxWidth=`${Math.max(0,Math.min(560,g-2*16))}px`;let d=o.getBoundingClientRect();if(d.width===0&&d.height===0&&o.style.left!=="")return;let f=d.width,x=d.height;o.style.visibility=c&&a-e<x+16?"hidden":"";let s=u?h+(g-f)/2:h+16,p=i.height-a+16,m=[...document.querySelectorAll(P)].filter(t=>t!==o&&!o.contains(t)&&!t.contains(o)).map(t=>t.getBoundingClientRect()).filter(t=>t.width>0&&t.height>0&&t.right>h&&t.left<r&&t.bottom>e&&t.top<a),M=t=>t.bottom-t.top>(a-e)*.4;if(!u)for(let t of m)M(t)&&t.left<=s+1&&t.right+16>s&&t.right+16+f<=r&&(s=t.right+16);let y=m.filter(t=>!M(t));for(let t=!0,b=0;t&&b<y.length+1;b++){t=!1;for(let l of y){let A=i.height-p;l.right>s&&l.left<s+f&&l.bottom>A-x&&l.top<A&&(p=i.height-l.top+16/2,t=!0)}}o.style.left=`${Math.round(s)}px`,o.style.bottom=`calc(${Math.round(p)}px + env(safe-area-inset-bottom, 0px))`}function v(o,c){let i=w(),n=c?.getBoundingClientRect()??{left:0,top:0,right:i.width,bottom:i.height},h=Math.max(0,n.left),r=Math.min(i.width,n.right),e=Math.max(0,r-h);o.style.translate="none",o.style.bottom="auto",o.style.right="auto",o.style.maxWidth=`${Math.max(0,Math.min(560,e-2*16))}px`;let a=o.getBoundingClientRect().width;o.style.left=`${Math.round(h+(e-a)/2)}px`,o.style.top=`${Math.round(Math.max(16/2,n.top+16/2))}px`}export{T as a,G as b,v as c};
@@ -0,0 +1,3 @@
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};
@@ -0,0 +1 @@
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};
@@ -0,0 +1 @@
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};
@@ -0,0 +1 @@
1
+ import{a as S,b as $,c as w,d as R,e as V}from"./chunk.HHPGWJDO.js";import{h as l,i as F}from"./chunk.42YX6NOY.js";import{va as b,wa as A}from"./chunk.6V2RG5JG.js";var O=["card","row","page"],E=["good","warn","bad","neutral","accent"],P=["money","percent","date","relative","count"],_=4,T=40,I=120,L=["number","money","percent"],B=["large"],H=["card","row"],M=1e3,ue=100;function U(e){let n=/^\s*(out|in)\(\s*['"]([A-Za-z][A-Za-z0-9_-]*)['"]\s*\)\s*$/.exec(e);return n?{edge:n[2],way:n[1]}:/^[A-Za-z][A-Za-z0-9_-]*$/.test(e)?{edge:e}:void 0}var v={title:[],headline:[],list:["sort","limit","group","empty","as"],text:["tone"],badge:["tone"],field:["as","currency","label"],image:["as","label"],progress:["label"],group:["direction"],when:["show"],divider:[],figure:["as","currency","label","emphasis"]},C=Object.keys(v),G=`{"title": "{name}"}, {"headline": "{count(all('offer'))} offers"}, {"figure": expr, "as"?: "number"|"money"|"percent", "currency"?, "label"?, "emphasis"?: "large"}, {"list": expr, "sort"?, "limit"?, "group"?, "empty"?, "as"?: "card"|"row"}, {"text": "\u2026", "tone"?}, {"badge": "{status}", "tone"?}, {"field": "quote", "as"?, "currency"?, "label"?}, {"image": "photos", "as"?: "thumb"|"gallery"}, {"progress": {"value": expr, "max": expr}, "label"?}, {"group": [blocks], "direction"?: "row"|"column"}, {"when": expr, "show": [blocks]}, {"divider": true}, {"figure": true}`,Z=e=>/^(image|file)$/.test(e?.of??e?.type??"");function fe(e){return Object.fromEntries(Object.entries(e.views??{}).filter(([,n])=>!Array.isArray(n)))}function ce(e){let n=e.views?.home;return Array.isArray(n)?n:void 0}var X={field:()=>!1,relation:()=>!1,figure:!1},Y=e=>e.kind??"the home",p=(e,n)=>e!==void 0&&Object.hasOwn(e,n),g=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function z(e,n,o){let t=S(e);for(let d of t.unknownFunctions)o.findings.push(l("unknown-function",n,`"${d}" is not a function the rule language knows`,"see docs/declaration-document.md#expression-language"));for(let d of t.names){if(o.kind===null){o.findings.push(l("view-name",n,`"${d}" names nothing here: these blocks are about no one record`,"reach records with all('<kind>'), like count(all('offer')) or first(all('party') where role == 'client').name"));continue}d==="id"||o.spec.field(d)||o.spec.relation(d)||o.findings.push(l("view-name",n,`${o.kind} has no field or relation called "${d}"`))}for(let d of t.edges)o.edges.has(d)||o.findings.push(l("view-edge",n,`"${d}" is not a relation any kind declares`));for(let d of t.sweeps)o.kinds.has(d)||o.findings.push(l("view-kind",n,`"${d}" is not a kind this document declares`))}function k(e,n,o){if(typeof e!="string"||e.length===0||e.length>2e3){o.findings.push(l("view-expression",n,`an expression is a line of the rule language, like "status == 'booked'"`));return}try{z(w(e),n,o)}catch(t){if(!(t instanceof $))throw t;o.findings.push(l("expression",n,`${t.sentence} (at character ${t.at+1})`))}}function j(e,n,o,t=!1){if(typeof e!="string"||e.length===0||e.length>300){o.findings.push(l("view-template",n,'a template is words with {field} in braces, like "{name}" or "{quote|money}", at most 300 characters'));return}let d;try{d=V(e)}catch(a){if(a instanceof R||a instanceof $){o.findings.push(l("template",n,a.sentence));return}throw a}for(let a of d)if(a.expr&&(z(a.expr,n,o),t&&!a.format&&a.expr.t==="ident"&&(o.slot==="card"||o.slot==="row")&&o.spec.prose?.(a.expr.name))){let r=a.expr.name;o.findings.push(F("view-whole-text",n,`${o.kind} ${o.slot} shows ${r} whole; it will be clamped. Use {${r}|excerpt} or move it to the page.`,`write {${r}|excerpt}, or {${r}|excerpt: 80} for fewer characters`))}}function q(e,n,o){if(typeof e=="string"){E.includes(e)||o.findings.push(l("view-tone",n,`"${e}" is not a tone`,`use one of ${E.join(", ")}, or {"expr": "if(status == 'booked', 'good', 'neutral')"}`));return}if(g(e)&&Object.keys(e).length===1&&"expr"in e){k(e.expr,`${n}.expr`,o);return}o.findings.push(l("view-tone",n,'a tone is a word or {"expr": \u2026}',`one of ${E.join(", ")}`))}function x(e,n,o,t){if(!Array.isArray(e)){t.findings.push(l("view-shape",n,"a view is a list of blocks"));return}if(o>_){t.findings.push(l("view-depth",n,`blocks nest at most ${_} deep`,"flatten a group or a condition"));return}e.forEach((d,a)=>J(d,`${n}.${a}`,o,t))}function J(e,n,o,t){if(o===1&&t.count++,t.all++,!g(e)){t.findings.push(l("view-block",n,"a block is an object naming what it shows",`one of ${G}`));return}let d=Object.keys(e),a=d.filter(s=>C.includes(s)&&!(s==="group"&&d.includes("list")));if(a.length===0){t.findings.push(l("view-block",n,`${d.length>0?d.map(s=>`"${s}"`).join(", "):"an empty object"} is not a block Graview knows`,`one of ${G}`));return}if(a.length>1){t.findings.push(l("view-block",n,`a block is one thing, and this says ${a.map(s=>`"${s}"`).join(" and ")}`,"split it into two blocks"));return}let r=a[0];for(let s of d)s!==r&&s!="key"&&!v[r].includes(s)&&t.findings.push(l("unknown-key",`${n}.${s}`,`"${s}" is not part of a ${r} block`,v[r].length>0?`a ${r} block may also say ${v[r].map(u=>`"${u}"`).join(", ")}`:`a ${r} block says nothing else`));let i=e[r];switch(r){case"title":case"headline":case"text":case"badge":j(i,`${n}.${r}`,t,r==="text"),"tone"in e&&q(e.tone,`${n}.tone`,t);return;case"image":case"field":{let s=r==="image";if(typeof i!="string"||!(s?t.spec.files?.(i):t.spec.field(i))){let f=typeof i=="string"&&t.spec.relation(i);t.findings.push(l(`view-${r}`,`${n}.${r}`,`${t.kind} has no ${s?"image or file ":""}field ${typeof i=="string"?`"${i}"`:"by that name"}`,f?`"${i}" is a relation; show it with {"text": "{${i}.name}"}`:void 0))}let u=s?["thumb","gallery"]:P;"as"in e&&!u.includes(e.as)&&t.findings.push(l("view-format",`${n}.as`,`"${String(e.as)}" is not a way to show ${s?"pictures":"a field"}`,`use one of ${u.join(", ")}`)),s||N(e,n,t,"field"),"label"in e&&ie(e.label,`${n}.label`,t);return}case"progress":{!g(i)||Object.keys(i).some(s=>s!=="value"&&s!=="max")||!("value"in i)||!("max"in i)?t.findings.push(l("view-progress",`${n}.progress`,'progress is {"value": expression, "max": expression}')):(k(i.value,`${n}.progress.value`,t),k(i.max,`${n}.progress.max`,t)),"label"in e&&j(e.label,`${n}.label`,t);return}case"group":"direction"in e&&e.direction!=="row"&&e.direction!=="column"&&t.findings.push(l("view-direction",`${n}.direction`,`a group runs "row" or "column", not "${String(e.direction)}"`)),x(i,`${n}.group`,o+1,t);return;case"when":k(i,`${n}.when`,t),"show"in e?x(e.show,`${n}.show`,o+1,t):t.findings.push(l("view-when",n,'a condition says what it shows: {"when": expr, "show": [blocks]}'));return;case"figure":if(typeof i=="string")return Q(e,n,t);for(let s of["as","currency","label","emphasis"])s in e&&t.findings.push(l("unknown-key",`${n}.${s}`,`"${s}" belongs to a figure that works a number out; {"figure": true} is the kind's picture`,`write {"figure": "count(all('offer'))", "as": "number"}`));i!==!0?t.findings.push(l("view-block",`${n}.figure`,`a figure is a number worked out, {"figure": "sum(all('offer'), net)", "as": "money"}, or the kind's picture, {"figure": true}`)):t.spec.figure||t.findings.push(l("view-figure",`${n}.figure`,`${Y(t)} has no figure to show`,t.kind===null?`work a number out: {"figure": "count(all('offer'))"}`:'give the kind a "figure", or leave this block out'));return;case"list":return ne(e,n,t);case"divider":i!==!0&&t.findings.push(l("view-block",`${n}.${r}`,`write {"${r}": true}`));return}}function Q(e,n,o){k(e.figure,`${n}.figure`,o),"as"in e&&!L.includes(e.as)&&o.findings.push(l("view-format",`${n}.as`,`"${String(e.as)}" is not a way to say a figure`,`use one of ${L.join(", ")}`)),N(e,n,o,"figure"),"label"in e&&j(e.label,`${n}.label`,o),"emphasis"in e&&!B.includes(e.emphasis)&&o.findings.push(l("view-emphasis",`${n}.emphasis`,`"${String(e.emphasis)}" is not how loudly a figure is said`,`use ${B.map(t=>`"${t}"`).join(", ")}, or leave it out for the figure's own size`))}function N(e,n,o,t){"currency"in e&&(typeof e.currency!="string"||!/^[A-Z]{3}$/.test(e.currency)?o.findings.push(l("view-currency",`${n}.currency`,'a currency is its three-letter code, like "USD" or "EUR"')):e.as!=="money"&&o.findings.push(l("view-currency",`${n}.currency`,`a currency belongs on a ${t} shown as money`,'add "as": "money"')))}function ee(e,n){let o=[...n.kinds],t=(a,r)=>{let i=new Set;for(let s of a){let u=n.vocabulary.namesOf(s)?.targets?.(r);if(u==="*")return o;for(let f of u??[])i.add(f)}return i.size>0?[...i]:void 0},d=a=>{switch(a.t){case"ident":return n.kind!==null&&n.spec.relation(a.name)?t([n.kind],a.name):void 0;case"member":{let r=d(a.object);return r?t(r,a.name):void 0}case"where":return d(a.set);case"call":{let r=a.args[0],i=r?.t==="lit"&&typeof r.value=="string"?r.value:void 0;if(a.fn==="all")return i!==void 0&&n.kinds.has(i)?[i]:void 0;let s=a.args.length===2&&a.args[1]?.t==="lit"&&typeof a.args[1].value=="string"?a.args[1].value:void 0;if(a.fn==="out"&&s!==void 0){let u=d(r);return u?t(u,s):void 0}if(a.fn==="out")return i!==void 0&&n.kind!==null?t([n.kind],i):void 0;if(a.fn==="in"){let u=s??i,f=s!==void 0?d(r):n.kind!==null?[n.kind]:void 0,c=u!==void 0?n.vocabulary.sources(u).filter(m=>{let y=n.vocabulary.namesOf(m)?.targets?.(u);return!f||y==="*"||f.some(h=>y?.includes(h))}):[];return c.length>0?c:void 0}if((a.fn==="sort"||a.fn==="first")&&r)return d(r);if(a.fn==="either"){let u=a.args.map(d);return u.every(f=>f!==void 0)?[...new Set(u.flatMap(f=>f??[]))]:void 0}return}default:return}};return d(e)}function K(e,n,o,t){let d;try{d=w(e)}catch(r){if(!(r instanceof $))throw r;t.findings.push(l("expression",n,`${r.sentence} (at character ${r.at+1})`));return}let a=S(d);for(let r of a.unknownFunctions)t.findings.push(l("unknown-function",n,`"${r}" is not a function the rule language knows`,"see docs/declaration-document.md#expression-language"));for(let r of a.edges)t.edges.has(r)||t.findings.push(l("view-edge",n,`"${r}" is not a relation any kind declares`));if(o)for(let r of a.names)r==="id"||o.some(i=>t.vocabulary.namesOf(i)?.field(r)||t.vocabulary.namesOf(i)?.relation(r))||t.findings.push(l("view-name",n,`${o.join(" and ")} ${o.length===1?"has":"have"} no field or relation called "${r}"`))}function ne(e,n,o){let t=e.list;k(t,`${n}.list`,o);let d;if(typeof t=="string")try{d=ee(w(t),o)}catch{d=void 0}let a=i=>{if(!d)return[...o.kinds].map(u=>o.vocabulary.namesOf(u)?.choices?.(i)).find(u=>u!==void 0);let s=d.map(u=>o.vocabulary.namesOf(u)?.choices?.(i));return s.every(u=>u!==void 0)?[...new Set(s.flatMap(u=>u??[]))]:void 0},r=d?d.join(" and "):"any kind";if("sort"in e){let i=e.sort;if(typeof i=="string")K(i,`${n}.sort`,d,o);else if(g(i)&&typeof i.by=="string"&&Object.keys(i).every(s=>s==="by"||s==="direction")){let s=i.direction;s!==void 0&&s!=="asc"&&s!=="desc"&&s!=="choices"?o.findings.push(l("list-sort",`${n}.sort.direction`,`a list is sorted "asc", "desc" or "choices", not "${String(s)}"`,'"choices" puts a choice field in the order its choices are declared')):s==="choices"?a(i.by)===void 0&&o.findings.push(l("list-sort",`${n}.sort.by`,`"${i.by}" is not a choice field of ${r}, so it has no declared order`,'sort by a choice field, or say "asc" or "desc"')):K(i.by,`${n}.sort.by`,d,o)}else o.findings.push(l("list-sort",`${n}.sort`,'a sort is a key, like "net", or {"by": key, "direction": "asc" | "desc" | "choices"}'))}if("limit"in e){let i=e.limit;(typeof i!="number"||!Number.isInteger(i)||i<1||i>M)&&o.findings.push(l("list-limit",`${n}.limit`,`a limit is a whole number from 1 to ${M}`))}if("group"in e){let i=e.group,s=typeof i=="string"?i:g(i)&&typeof i.by=="string"?i.by:void 0;if(!(typeof i=="string"||g(i)&&Object.keys(i).every(f=>f==="by"||f==="headings"))||s===void 0)o.findings.push(l("list-group",`${n}.group`,'a group is a choice field, like "type", or {"by": "type", "headings": {"pain": "What hurts"}} \u2014 or a relation, like "inGenre", a heading per linked record'));else{let f=a(s),c=f===void 0?U(s):void 0,m=c!==void 0&&(c.way!==void 0?o.edges.has(c.edge):d?d.every(y=>o.vocabulary.namesOf(y)?.relation(c.edge)):o.edges.has(c.edge));if(f===void 0&&!m&&o.findings.push(l("list-group",`${n}.group`,`"${s}" is not a choice field or a relation of ${r}, so it has nothing to group by`,'group by a field whose type is enum, or by a relation of the kind listed, like "inGenre"')),g(i)&&"headings"in i){let y=i.headings;if(!g(y)||Object.values(y).some(h=>typeof h!="string"||h.length===0||h.length>80))o.findings.push(l("list-group",`${n}.group.headings`,'headings are words per choice, like {"pain": "What hurts"}, at most 80 characters each'));else if(f)for(let h of Object.keys(y))f.includes(h)||o.findings.push(l("list-group",`${n}.group.headings.${h}`,`"${h}" is not one of ${s}'s choices`,`use ${f.join(", ")}`))}}}"empty"in e&&(typeof e.empty!="string"||e.empty.length===0||e.empty.length>200)&&o.findings.push(l("list-empty",`${n}.empty`,"what an empty list says is a sentence, at most 200 characters")),"as"in e&&!H.includes(e.as)&&o.findings.push(l("list-as",`${n}.as`,`a list draws each record as its "card" or its "row", not "${String(e.as)}"`))}function ie(e,n,o){(typeof e!="string"||e.length===0||e.length>60)&&o.findings.push(l("view-label",n,"a label is a few words, at most 60 characters"))}function W(e,n,o,t,d,a,r){let i={kind:null,spec:X,kinds:t,edges:d,vocabulary:o,findings:a,count:0,all:0};Array.isArray(e)&&e.length===0&&a.push(l("view-shape",n,`${r} has no blocks`,'give it one: {"headline": "\u2026"}')),x(e,n,1,i),D(i,n,r,"show less")}function D(e,n,o,t){e.count>T?e.findings.push(l("view-size",n,`${o} has ${e.count} blocks at its top; a view has at most ${T} there, a group or a condition counting as one`,`${t}, or gather some into a group`)):e.all>I&&e.findings.push(l("view-size",n,`${o} has ${e.all} blocks counting the ones inside its groups and conditions; a view has at most ${I} in all`,t))}function oe(e,n,o,t,d){Array.isArray(e)&&e.forEach((a,r)=>{if(!g(a)||a.name!=="blocks"||!g(a.options)||!("blocks"in a.options))return;let i=[];W(a.options.blocks,`lenses.${r}.options.blocks`,n,o,t,i,`the lens "${String(a.title??r)}"`);for(let s of i)d.push({...s,severity:"warning"})})}function te(e,n,o,t,d,a,r){let i=[];if(e===void 0)return i;if(!g(e))return i.push(l("view-shape",n,'views are an object of kinds, each with a "card", a "row" or a "page"')),i;for(let[s,u]of Object.entries(e)){if(s==="home"&&Array.isArray(u)){W(u,`${n}.home`,r,t,d,i,"the home");continue}let f=o(s);if(!f){i.push(l("view-kind",`${n}.${s}`,`"${s}" is not a kind this ${a} declares`));continue}if(!g(u)){i.push(l("view-shape",`${n}.${s}`,`a kind's views are {"card": [blocks], "row": [blocks], "page": [blocks]}`));continue}for(let c of Object.keys(u))O.includes(c)||i.push(l("view-slot",`${n}.${s}.${c}`,`"${c}" is not a place a view is drawn`,`use ${O.map(m=>`"${m}"`).join(", ")}`));for(let c of O){let m=u[c];if(m===void 0)continue;let y={kind:s,spec:f,kinds:t,edges:d,vocabulary:r,findings:i,count:0,all:0,slot:c};x(m,`${n}.${s}.${c}`,1,y),D(y,`${n}.${s}.${c}`,`this ${c}`,"show less, or move detail to the page")}}return i}function ge(e){let n=new Set(Object.keys(e.kinds)),o=new Set(Object.values(e.kinds).flatMap(r=>Object.keys(b(r.edges)))),t=r=>{let i=p(e.kinds,r)?e.kinds[r]:void 0;return i?{field:s=>p(i.fields,s)||p(i.computed,s)||A(i.edges).has(s),relation:s=>p(b(i.edges),s),figure:i.figure!==void 0,files:s=>p(i.fields,s)&&Z(i.fields[s]),choices:s=>p(i.fields,s)&&i.fields[s].type==="enum"?i.fields[s].options:void 0,targets:s=>p(b(i.edges),s)?i.edges[s].to:void 0,prose:s=>p(i.fields,s)&&i.fields[s].type==="text"}:void 0},d={namesOf:t,sources:r=>Object.keys(e.kinds).filter(i=>p(e.kinds[i].edges,r))},a=te(e.views,"views",t,n,o,"document",d);return oe(e.lenses,d,n,o,a),a}export{E as a,P as b,L as c,B as d,M as e,ue as f,U as g,fe as h,ce as i,ge as j};
@@ -0,0 +1 @@
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};
@@ -0,0 +1 @@
1
+ import{B as O}from"./chunk.6V2RG5JG.js";var k=3,A=k+1,P=A+1,z=(o,r)=>o<r?-1:o>r?1:0;function L(o){return(o??0)>4?k:2}function N(o,r,a){let n=[];for(let d of Object.values(o.tryDefinition(r)?.edges??{}))if(d.to!=="*")for(let i of d.to)i!==r&&a.includes(i)&&!n.includes(i)&&n.push(i);return n}function W(o,r={}){let a=[...o.kinds],n=[...(r.order??[]).filter(e=>a.includes(e)),...a.filter(e=>!(r.order??[]).includes(e)).sort(z)].filter((e,t,s)=>s.indexOf(e)===t),d=e=>n.indexOf(e),i=new Map,g=[],h=(e,t,s)=>{i.set(e,{col:t,row:s,side:L(r.counts?.[e])}),g.push({col:t,row:s})};for(let e of n){let t=o.tryDefinition(e)?.plot??r.plots?.[e];t&&h(e,t.col,t.row)}let l=new Map(n.map(e=>[e,N(o,e,a)])),b=new Set(n.filter(e=>l.get(e).length>0||n.some(t=>l.get(t).includes(e)))),v=new Map,C=new Set,D=e=>{let t=v.get(e);if(t!==void 0)return t;if(C.has(e))return-1;C.add(e);let s=0;for(let c of l.get(e))s=Math.max(s,D(c)+1);return C.delete(e),v.set(e,s),s};for(let e of n)b.has(e)&&D(e);let f=[];for(let e of n)b.has(e)&&(f[v.get(e)]??=[]).push(e);let I=new Map,T=Math.max(1,Math.ceil(Math.sqrt(f.length))),H=Math.max(1,...f.map(e=>e?.length??0)),w=Math.max(P,Math.round(r.pitch??P)),R=(e,t)=>r.upright?{col:e%T*w,row:(Math.floor(e/T)*(H+1)+t)*w}:{col:t*w,row:e===0?0:-e*w},$=e=>!g.some(t=>V(t,e)),S=(e,t,s)=>{let c=s;for(;!$(R(t,c))&&c<s+64;)c++;return i.has(e)||h(e,R(t,c).col,R(t,c).row),c},x=0;f.forEach((e=[],t)=>{let s=u=>{let m=l.get(u).map(p=>I.get(p)).filter(p=>p!==void 0);return m.length>0?m.reduce((p,q)=>p+q,0)/m.length:1/0},c=[...e].sort((u,m)=>s(u)-s(m)||d(u)-d(m)),y=0;for(let u of c)i.has(u)||(y=S(u,t,y),I.set(u,y),x=Math.max(x,y+1),y++)});let j=n.filter(e=>!b.has(e)&&!i.has(e)),M=Math.max(r.upright?x:f.length,Math.ceil(Math.sqrt(j.length*2)),1),E=b.size>0?1:0;return j.forEach((e,t)=>{r.upright?S(e,f.length+E+Math.floor(t/M),t%M):S(e,t%M,x+E+Math.floor(t/M))}),i}function V(o,r){return Math.abs(o.col-r.col)<A&&Math.abs(o.row-r.row)<A}function X(o,r,a,n=.5){return{x:(o-r)*a/2,y:(o+r)*a*n/2}}var G=1,B=/^(done|completed?|closed|finished|shipped|sent|won|lost|passed|declined|dropped|answered|resolved|fixed|archived|cancell?ed|retired|released|published|delivered|paid|merged|rejected|written[-_ ]?up|out)$/i,F=/^(doing|in[-_ ]?progress|active|building|started|working|in[-_ ]?review|review(ing)?|fixing|ongoing|underway|testing|drafting|writing|running)$/i;function _(o,r,a){let n=O(o.tryDefinition(r)?.fields.shape?.[a]);for(;n&&n.innerType!==void 0&&n.type!=="enum";)n=O(n.innerType);if(n?.type!=="enum")return;let d=(n.entries?Object.values(n.entries):n.values??[]).filter(i=>typeof i=="string");return d.length>0?d:void 0}function J(o,r){let a=o.tryDefinition(r);if(!a)return;let n=a.lifecycle,d=Object.keys(a.fields.shape??{}),i=[n?.field,...d.filter(l=>/^(status|stage|state|phase)$/i.test(l))].find(l=>l!==void 0&&_(o,r,l)!==void 0);if(!i)return;let g=_(o,r,i),h=n?.field===i&&Array.isArray(n.retired)?n.retired:[];return{field:i,values:g,tiers:g.map(l=>h.includes(l)||B.test(l)?"done":F.test(l)?"active":"waiting")}}export{P as a,W as b,X as c,G as d,J as e};
@@ -0,0 +1 @@
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};