graview 0.1.28 → 0.1.29

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 (167) hide show
  1. package/dist/preview/chunk.2643W7FT.js +1 -0
  2. package/dist/preview/chunk.2CLPRG3I.js +1 -0
  3. package/dist/preview/chunk.2IZFIORK.js +1 -0
  4. package/dist/preview/chunk.2NCTM5K2.js +2 -0
  5. package/dist/preview/{chunk.EYF6ONTA.js → chunk.3G5MQFZK.js} +1 -1
  6. package/dist/preview/chunk.3JM2TNDD.js +2 -0
  7. package/dist/preview/chunk.44FVJOK4.js +28 -0
  8. package/dist/preview/chunk.4GGAPOMK.js +2 -0
  9. package/dist/preview/chunk.5AT4O4BN.js +1 -0
  10. package/dist/preview/chunk.5JXUAMKI.js +1 -0
  11. package/dist/preview/chunk.5R66YTET.js +2 -0
  12. package/dist/preview/chunk.64P76WK4.js +1 -0
  13. package/dist/preview/chunk.7D77HEIJ.js +1 -0
  14. package/dist/preview/chunk.7DNFXJH3.js +1 -0
  15. package/dist/preview/{chunk.SBHVVJY7.js → chunk.7PRFYYVM.js} +1 -1
  16. package/dist/preview/chunk.AE5GKL4C.js +1 -0
  17. package/dist/preview/chunk.ARR75WBP.js +35 -0
  18. package/dist/preview/chunk.AVUS5LMG.js +3 -0
  19. package/dist/preview/chunk.BKPGDEES.js +1 -0
  20. package/dist/preview/chunk.BZ5OJYHU.js +1 -0
  21. package/dist/preview/chunk.CK7QWLMX.js +1 -0
  22. package/dist/preview/chunk.COTG2IG5.js +1 -0
  23. package/dist/preview/chunk.D4GOVA25.js +1 -0
  24. package/dist/preview/chunk.DAA6XWLF.js +1 -0
  25. package/dist/preview/chunk.DKTCRFMS.js +1 -0
  26. package/dist/preview/chunk.DLGTFXGM.js +1 -0
  27. package/dist/preview/chunk.DN7SN6ZR.js +1 -0
  28. package/dist/preview/chunk.G4WQGTZR.js +3 -0
  29. package/dist/preview/chunk.GDA3G4U2.js +6 -0
  30. package/dist/preview/chunk.GS4T26WW.js +328 -0
  31. package/dist/preview/chunk.GZH6PTXN.js +1 -0
  32. package/dist/preview/chunk.HFKMHLJ3.js +1 -0
  33. package/dist/preview/chunk.HGAMNIST.js +1 -0
  34. package/dist/preview/chunk.HJCQ6I3S.js +1 -0
  35. package/dist/preview/chunk.HKBKH7EK.js +1 -0
  36. package/dist/preview/chunk.HLLWKSZB.js +5 -0
  37. package/dist/preview/chunk.HONUT6OG.js +1 -0
  38. package/dist/preview/chunk.HRWLR7T4.js +1 -0
  39. package/dist/preview/chunk.HV6I74DF.js +1 -0
  40. package/dist/preview/chunk.IPBXAAQV.js +17 -0
  41. package/dist/preview/chunk.IWYUFYDJ.js +1 -0
  42. package/dist/preview/chunk.IZW7DBK4.js +1 -0
  43. package/dist/preview/chunk.J46KDTEZ.js +10 -0
  44. package/dist/preview/chunk.JNGUSAWX.js +70 -0
  45. package/dist/preview/chunk.JU2ZVKMT.js +2 -0
  46. package/dist/preview/chunk.K4ZUVH2G.js +1 -0
  47. package/dist/preview/chunk.KC6UZHBM.js +1 -0
  48. package/dist/preview/chunk.KLITC55P.js +1 -0
  49. package/dist/preview/chunk.KZ2376BD.js +19 -0
  50. package/dist/preview/chunk.LYJAVUST.js +1 -0
  51. package/dist/preview/chunk.MB7LKKUD.js +1 -0
  52. package/dist/preview/chunk.MOUGB4H6.js +1 -0
  53. package/dist/preview/chunk.MYFWM572.js +1 -0
  54. package/dist/preview/chunk.N4FBDA2W.js +1 -0
  55. package/dist/preview/chunk.O42YET3W.js +1 -0
  56. package/dist/preview/chunk.O4QPITBD.js +9 -0
  57. package/dist/preview/{chunk.5BGA2VUS.js → chunk.OGXE2RHC.js} +4 -4
  58. package/dist/preview/chunk.OHE5AMHH.js +0 -0
  59. package/dist/preview/chunk.ONGVH3ZM.js +1076 -0
  60. package/dist/preview/chunk.OQDETV4X.js +1 -0
  61. package/dist/preview/chunk.OWBEV6FR.js +1 -0
  62. package/dist/preview/chunk.OWE6OJ4P.js +1 -0
  63. package/dist/preview/chunk.OYJSFO3A.js +1 -0
  64. package/dist/preview/chunk.P62SKNJS.js +27 -0
  65. package/dist/preview/chunk.PA5HYAEO.js +1 -0
  66. package/dist/preview/{chunk.IDI2BQ7Y.js → chunk.PMEDLEZY.js} +2 -2
  67. package/dist/preview/chunk.PTXQHHKF.js +1 -0
  68. package/dist/preview/chunk.Q5WEOX3Q.js +1 -0
  69. package/dist/preview/chunk.QNHECGMH.js +1 -0
  70. package/dist/preview/chunk.QSDT2RLY.js +1 -0
  71. package/dist/preview/chunk.R2D373VG.js +1 -0
  72. package/dist/preview/chunk.RB4RTBRZ.js +1 -0
  73. package/dist/preview/chunk.RCLJ4H52.js +116 -0
  74. package/dist/preview/chunk.RKRSRKF3.js +1 -0
  75. package/dist/preview/chunk.RWGLKDWH.js +1 -0
  76. package/dist/preview/chunk.SIL4KD3K.js +1 -0
  77. package/dist/preview/chunk.SS76EIMI.js +1 -0
  78. package/dist/preview/{chunk.IKT7JQUW.js → chunk.T4LY5QXO.js} +1 -1
  79. package/dist/preview/chunk.UIIVEQAT.js +1 -0
  80. package/dist/preview/chunk.UT6642FC.js +1 -0
  81. package/dist/preview/chunk.UTHHX2TJ.js +1 -0
  82. package/dist/preview/chunk.UWNYT7PF.js +1 -0
  83. package/dist/preview/chunk.V6TK4LHW.js +6 -0
  84. package/dist/preview/chunk.VNBO2RXD.js +1 -0
  85. package/dist/preview/chunk.VPPUTA74.js +1 -0
  86. package/dist/preview/chunk.WKXNBHTL.js +4 -0
  87. package/dist/preview/chunk.WLRTPFAC.js +1 -0
  88. package/dist/preview/chunk.X53HI436.js +1 -0
  89. package/dist/preview/chunk.XAXJHEMD.js +1 -0
  90. package/dist/preview/chunk.XDYAG276.js +1 -0
  91. package/dist/preview/chunk.XDZSTIS6.js +88 -0
  92. package/dist/preview/chunk.XXHNV24G.js +1 -0
  93. package/dist/preview/chunk.YCA7P5MK.js +1 -0
  94. package/dist/preview/chunk.YRQZZH5V.js +1 -0
  95. package/dist/preview/chunk.YUWRZWGX.js +1 -0
  96. package/dist/preview/chunk.Z2RGLFLS.js +1 -0
  97. package/dist/preview/chunk.Z56B2JR2.js +25 -0
  98. package/dist/preview/chunk.Z5V23DQN.js +3 -0
  99. package/dist/preview/chunk.ZBXOX3W3.js +1 -0
  100. package/dist/preview/chunk.ZEGSQCSD.js +1 -0
  101. package/dist/preview/chunk.ZEVVWWNA.js +44 -0
  102. package/dist/preview/chunk.ZS4DJ76C.js +1 -0
  103. package/dist/preview/chunk.ZSKP6UQS.js +3 -0
  104. package/dist/preview/page.js +6 -6
  105. package/package.json +6 -6
  106. package/dist/preview/chunk.22H4JXTH.js +0 -8
  107. package/dist/preview/chunk.25OYH6MY.js +0 -1
  108. package/dist/preview/chunk.2GBQJXJH.js +0 -19
  109. package/dist/preview/chunk.2VUG6EAN.js +0 -1
  110. package/dist/preview/chunk.337WDTG3.js +0 -2
  111. package/dist/preview/chunk.3HLLQ5CJ.js +0 -1
  112. package/dist/preview/chunk.46KUPBQC.js +0 -1
  113. package/dist/preview/chunk.4H7CQE56.js +0 -1
  114. package/dist/preview/chunk.4HGBVU5B.js +0 -1
  115. package/dist/preview/chunk.4RO5DA22.js +0 -1
  116. package/dist/preview/chunk.4TUNX4WM.js +0 -29
  117. package/dist/preview/chunk.6LJ66MB7.js +0 -1
  118. package/dist/preview/chunk.6R4EI47C.js +0 -1
  119. package/dist/preview/chunk.7S22MBNN.js +0 -1
  120. package/dist/preview/chunk.A73BXXE4.js +0 -3
  121. package/dist/preview/chunk.AHDOKM4O.js +0 -1
  122. package/dist/preview/chunk.ARE3MEDN.js +0 -1
  123. package/dist/preview/chunk.ASFZTYFO.js +0 -1
  124. package/dist/preview/chunk.BBJZ6O7J.js +0 -1
  125. package/dist/preview/chunk.BCBH6WJF.js +0 -1
  126. package/dist/preview/chunk.CAZAB352.js +0 -1
  127. package/dist/preview/chunk.CY7MDLRS.js +0 -1
  128. package/dist/preview/chunk.DAVRLRGB.js +0 -1
  129. package/dist/preview/chunk.DCIC3YHX.js +0 -1
  130. package/dist/preview/chunk.EW4JFOJY.js +0 -1
  131. package/dist/preview/chunk.FP27W5MU.js +0 -1
  132. package/dist/preview/chunk.G2OOBROL.js +0 -1040
  133. package/dist/preview/chunk.GCKSQ52O.js +0 -1
  134. package/dist/preview/chunk.GE5EAN36.js +0 -2
  135. package/dist/preview/chunk.HOPIZMJR.js +0 -2
  136. package/dist/preview/chunk.IBGO4BUF.js +0 -1
  137. package/dist/preview/chunk.IH42QTOM.js +0 -1
  138. package/dist/preview/chunk.ISRS7GOT.js +0 -321
  139. package/dist/preview/chunk.J6CBMLGR.js +0 -1
  140. package/dist/preview/chunk.JRCV6HVV.js +0 -1
  141. package/dist/preview/chunk.KWW3YHQ4.js +0 -23
  142. package/dist/preview/chunk.MKNXV4TM.js +0 -8
  143. package/dist/preview/chunk.MRK6QJV5.js +0 -25
  144. package/dist/preview/chunk.MVNIKZIC.js +0 -1
  145. package/dist/preview/chunk.N2WTNKEV.js +0 -1
  146. package/dist/preview/chunk.N7HCALRK.js +0 -61
  147. package/dist/preview/chunk.NRRUGG22.js +0 -1
  148. package/dist/preview/chunk.OGL4PHTY.js +0 -1
  149. package/dist/preview/chunk.PFQFPJ5L.js +0 -16
  150. package/dist/preview/chunk.PN2H6X7O.js +0 -1
  151. package/dist/preview/chunk.PWHJHFC4.js +0 -1
  152. package/dist/preview/chunk.Q3HVA6L4.js +0 -1
  153. package/dist/preview/chunk.RZLNDVGN.js +0 -107
  154. package/dist/preview/chunk.SNBIZ3B6.js +0 -1
  155. package/dist/preview/chunk.TBG2QBOS.js +0 -1
  156. package/dist/preview/chunk.VR735ZQL.js +0 -1
  157. package/dist/preview/chunk.VSXCXPK2.js +0 -1
  158. package/dist/preview/chunk.W3LDQ6B2.js +0 -1
  159. package/dist/preview/chunk.WCNONCTL.js +0 -6
  160. package/dist/preview/chunk.WHTNSETN.js +0 -1
  161. package/dist/preview/chunk.XG67BWH6.js +0 -1
  162. package/dist/preview/chunk.XRM6WXPW.js +0 -1
  163. package/dist/preview/chunk.Y5LPZLDE.js +0 -1
  164. package/dist/preview/chunk.YETBY2LM.js +0 -1
  165. package/dist/preview/chunk.YSYT3ASK.js +0 -1
  166. package/dist/preview/chunk.ZEUBAAVQ.js +0 -1
  167. package/dist/preview/chunk.ZJDRD6PO.js +0 -1
@@ -0,0 +1,88 @@
1
+ import{a as Fe,c as Ve}from"./chunk.XAXJHEMD.js";import{b as Ke}from"./chunk.P62SKNJS.js";import{a as Pe,b as Le,c as Ie,d as j}from"./chunk.GDA3G4U2.js";import{j as $e,k as Ee}from"./chunk.WKXNBHTL.js";import"./chunk.OWE6OJ4P.js";import"./chunk.3JM2TNDD.js";import"./chunk.BKPGDEES.js";import"./chunk.JNGUSAWX.js";import"./chunk.CK7QWLMX.js";import"./chunk.QNHECGMH.js";import{m as De}from"./chunk.KZ2376BD.js";import{a as Ce,b as Re}from"./chunk.IZW7DBK4.js";import{e as Ae}from"./chunk.RKRSRKF3.js";import{e as Se,f as Ne}from"./chunk.KC6UZHBM.js";import"./chunk.HJCQ6I3S.js";import"./chunk.ZBXOX3W3.js";import{e as ne}from"./chunk.5AT4O4BN.js";import{a as Oe,b as Te,j as Me}from"./chunk.V6TK4LHW.js";import"./chunk.G4JJXA63.js";import"./chunk.YRQZZH5V.js";import"./chunk.HONUT6OG.js";import"./chunk.X53HI436.js";import"./chunk.COTG2IG5.js";import"./chunk.Q5WEOX3Q.js";import"./chunk.Z2RGLFLS.js";import"./chunk.UTHHX2TJ.js";import"./chunk.YCA7P5MK.js";import{a as ke}from"./chunk.VPPUTA74.js";import"./chunk.UT6642FC.js";import"./chunk.3G5MQFZK.js";import"./chunk.2CLPRG3I.js";import"./chunk.O42YET3W.js";import"./chunk.Z5V23DQN.js";import"./chunk.OHE5AMHH.js";import{s as ye}from"./chunk.OYJSFO3A.js";import"./chunk.HV6I74DF.js";import"./chunk.WVUJXDXZ.js";import{a as be}from"./chunk.DAA6XWLF.js";import"./chunk.7DNFXJH3.js";import"./chunk.7PRFYYVM.js";import"./chunk.2NCTM5K2.js";import"./chunk.JU2ZVKMT.js";import"./chunk.HGAMNIST.js";import"./chunk.OQDETV4X.js";import{g as me}from"./chunk.ZS4DJ76C.js";import{d as te}from"./chunk.5R66YTET.js";import{c as he}from"./chunk.G4WQGTZR.js";import"./chunk.HFKMHLJ3.js";import{i as Y,v as xe}from"./chunk.GS4T26WW.js";import{F as Xe,M as fe,N as we,U as F,W as X,aa as ve,ha as ee,ia as U,j as ce,l as ge,m as ue,r as Z}from"./chunk.Z56B2JR2.js";import{$ as le,J as se,M as D,W as G,Z as de,aa as pe,va as W}from"./chunk.HLLWKSZB.js";import{b as Q}from"./chunk.AJZBJBMO.js";var f=Q(Xe(),1);var et=300,tt=14,z=50,nt=3,it=2;function qe(e,n,r){let l=e.tryDefinition(n)?.fields?.shape;return(l?.[r]===void 0?void 0:be(l[r]))?.type}var at=(e,n)=>Object.keys(e.tryDefinition(n)?.fields?.shape??{}),ot=e=>e==="date"||e==="datetime",Be=/^(due|dueOn|dueAt|dueDate|deadline|by)$/i,rt=/^(date|on|day|when|at|start|starts|startsOn|startsAt|begins|from|sown|scheduled|scheduledFor|planned|plannedFor)$/i,st=/^(done|finished|complete|completed|closed)$/i;function ae(e,n){let r=e.tryDefinition(n),l=at(e,n),i=l.filter(w=>ot(qe(e,n,w)));if(i.length===0)return;let a=r?.fieldRoles??{},s=w=>a[w]!==void 0&&i.includes(a[w])?a[w]:void 0,u=s("start")??s("when")??i.find(w=>Be.test(w))??i.find(w=>rt.test(w));if(!u)return;let y=s("end")??i.find(w=>w!==u&&/^(end|ends|until|to|finish|finished|harvested|through)$/i.test(w)),v=l.find(w=>st.test(w)&&qe(e,n,w)==="boolean");return{field:u,due:Be.test(u),...y?{end:y}:{},...v?{done:v}:{}}}function ie(e,n){return Math.round((Date.parse(`${n.slice(0,10)}T00:00:00Z`)-Date.parse(`${e.slice(0,10)}T00:00:00Z`))/864e5)}var V=e=>typeof e=="string"&&/^\d{4}-\d{2}-\d{2}/.test(e)?e.slice(0,10):void 0;function _e(e,n,r,l){let i=ne(e,n);if(i&&r.length>0&&r.length<=et)return{shape:"board",field:i.field};let a=ae(e,n);if(a&&!a.due){let s=o=>{let m=V(o[a.field]),g=V(W(o,a.field,l));return m&&g?ie(m,g):0},u=r.map(o=>({from:V(W(o,a.field,l)),to:a.end&&V(o[a.end])?L(V(o[a.end]),s(o)):void 0})).filter(o=>o.from!==void 0).map(o=>({from:o.from,to:o.to&&o.to>o.from?o.to:o.from})),y=`${l.slice(0,7)}-01`,v=L(`${L(y,31).slice(0,7)}-01`,-1),w=u.filter(o=>o.from<=v&&o.to>=y),p=u.map(o=>ie(o.from,o.to)).sort((o,m)=>o-m),c=p[Math.floor(p.length/2)]??0;if(w.length>0&&c<=tt){let o=L(l,-((new Date(`${l}T00:00:00Z`).getUTCDay()+6)%7)),m=L(o,6),g=w.every(N=>N.from>=o&&N.to<=m);return{shape:"calendar",start:a.field,...a.end?{end:a.end}:{},...a.done?{done:a.done}:{},range:g?"week":"month"}}}return{shape:"table"}}function Ge(e,n){let r=ae(e,n);return r?{by:r.field,direction:r.due?"asc":"desc"}:void 0}function je(e,n,r={}){switch(n.shape){case"board":return{lens:"columns",kind:e,column:n.field};case"calendar":return{lens:"calendar",kind:e,start:n.start,...n.end?{end:n.end}:{},...n.done?{done:n.done}:{},range:n.range};case"table":return{lens:"blocks",kind:e,as:"row",...r.group?.by?{group:r.group.by}:{},...r.sort?{sort:{by:r.sort.by,...r.sort.direction==="desc"?{direction:"desc"}:{}}}:{}}}}var dt=60;function ze(e,n,r,l){let i=e.tryDefinition(n),a=r.slice(0,dt),s=new Map;a.forEach(p=>{let c=G(i,p);te(p,i,{glance:!0,said:[c]}).forEach((o,m)=>{if(o.long||o.files||o.app)return;let g=s.get(o.key);g?g.count++:s.set(o.key,{label:o.label,count:1,at:m})})});let u=Math.max(1,Math.ceil(a.length/3)),y=[...s.entries()].filter(([,p])=>p.count>=u).sort((p,c)=>p[1].at-c[1].at).slice(0,nt).map(([p,c])=>({about:"field",key:p,label:c.label})),v=new Map;for(let p of a){let c=new Set;for(let[o,m]of[["out",l.outEdges(p.id)],["in",l.inEdges(p.id)]])for(let g of m){let N=l.getNode(o==="out"?g.to:g.from);if(!N||N.id===p.id)continue;let h=`${g.kind}|${o}`;if(c.has(h))continue;c.add(h);let R=v.get(h);R?R.count++:v.set(h,{edge:g.kind,direction:o,far:N.kind,count:1})}}let w=[...v.entries()].sort((p,c)=>c[1].count-p[1].count).slice(0,it).map(([p,c])=>{let o=he(e,c.direction==="out"?n:c.far,c.edge,c.direction);return{about:"edge",key:p,label:o.charAt(0).toUpperCase()+o.slice(1),edge:c.edge,direction:c.direction}});return[...y,...w]}function He(e,n,r,l){if(r.about==="field"){let s=e.tryDefinition(n.kind);return{text:te(n,s,{excerpt:!0}).find(y=>y.key===r.key)?.value??""}}let a=(r.direction==="out"?l.outEdges(n.id):l.inEdges(n.id)).filter(s=>s.kind===r.edge).map(s=>l.getNode(r.direction==="out"?s.to:s.from)).filter(s=>s!==void 0).map(s=>G(e.tryDefinition(s.kind),s));return a.length===0?{text:""}:a.length===1?{text:a[0]}:{text:`${a[0]} +${a.length-1}`,title:a.join(", ")}}function We(e,n,r=()=>{}){let l=new Map;for(let i of e){let a=i.nodeIds.filter(u=>n.has(u));if(a.length===0&&!(i.subjectId!==void 0&&n.has(i.subjectId)))continue;let s=l.get(i.invariant)??{invariant:i.invariant,label:r(i.invariant)||i.label||i.message,violations:[],records:new Set};s.violations.push(i);for(let u of a)s.records.add(u);i.subjectId!==void 0&&n.has(i.subjectId)&&s.records.add(i.subjectId),l.set(i.invariant,s)}return[...l.values()].sort((i,a)=>a.violations.length-i.violations.length).map(i=>({invariant:i.invariant,label:i.label,violations:i.violations,records:[...i.records]}))}var Ze=6;function Ue(e,n,r,l){let i=ae(e,n);if(!i)return;let a=ne(e,n),s=v=>{if(i.done!==void 0&&v[i.done]===!0)return!0;if(!a)return!1;let w=a.values.indexOf(String(v[a.field]));return w>=0&&a.tiers[w]==="done"},u=0,y=0;for(let v of r){let w=V(W(v,i.field,l));if(!w||s(v))continue;let p=ie(l,w);i.due&&p<0?u++:p>=0&&p<=Ze&&y++}if(!(u===0&&y===0))return{field:i.field,due:i.due,overdue:u,soon:y}}function L(e,n){return new Date(Date.parse(`${e.slice(0,10)}T00:00:00Z`)+n*864e5).toISOString().slice(0,10)}function oe(e,n,r){return n==="overdue"?[{key:e.field,value:`before:${r}`}]:[{key:e.field,value:`after:${L(r,-1)}`},{key:e.field,value:`before:${L(r,Ze+1)}`}]}function Ye(e,n,r,l){let i=new Set,a=new Set;for(let s of e)if(!(s.at<=r))for(let u of s.primitives)u.op==="add-node"&&u.node?.kind===n?i.add(u.node.id):u.op==="patch-node"&&u.id!==void 0&&l(u.id)===n&&a.add(u.id);for(let s of i)a.delete(s);return{added:[...i].filter(s=>l(s)===n).length,changed:[...a].filter(s=>l(s)===n).length}}var t=Q(fe(),1),Je="as",lt=(e,n)=>`graview:kind-seen:${e}:${n}`;function pt(e){try{return localStorage.getItem(e)}catch{return null}}function ct(e,n){try{localStorage.setItem(e,n)}catch{}}var gt=(e,n)=>({...ce(ue(e,!1),n),relation:null});function Zt({kind:e,members:n,flagged:r=[],label:l}){let{store:i,brand:a,principal:s,views:u,view:y}=F(),{go:v}=U(),w=X(),p=i.schema,c=p.tryDefinition(e),o=l??le(p,e),m=i.today()??new Date().toISOString().slice(0,10),g=n,N=(0,f.useId)(),h=(0,f.useMemo)(()=>_e(p,e,g,m),[p,e,g,m]),$=y.within?.[Je]==="table"?{shape:"table"}:h,x=Ce(y),k=$.shape==="table"&&!x.sort?Ge(p,e):void 0,S=k?{...x,sort:k}:x,b=(0,f.useMemo)(()=>new Set(r),[r]),C=(0,f.useMemo)(()=>Ae(g,S,{schema:p,graph:i.graph,flagged:b,today:m}),[g,S,p,i,b,m,w]),q=(0,f.useMemo)(()=>Ne(p,Se(p,e)),[p,e]),M=u.arrangement?.()?.lists?.[e]?.filters,T=E=>v(Re(y,E)),I=(0,f.useMemo)(()=>({name:a?.name??"app",schema:p,...i.policy?{policy:i.policy}:{}}),[a,p,i]),H=JSON.stringify(je(e,$,S)),B=(0,f.useMemo)(()=>{let E=Me(JSON.parse(H),{app:I,sight:Te(I,s)});return Oe(E)?void 0:E},[H,I,s]),P=$.shape!=="table"&&B!==void 0;return(0,t.jsxs)("section",{"aria-labelledby":N,className:"graview-kind-stop","data-testid":"kind-stop","data-graview-kind-stop":e,"data-graview-shape":$.shape,children:[(0,t.jsx)("style",{children:kt}),(0,t.jsx)(ut,{kind:e,plural:o,count:g.length,headingId:N,description:c?.description}),(0,t.jsx)(wt,{kind:e,plural:o,members:g,today:m,arrangement:S,onArrange:T}),g.length>1&&!P?(0,t.jsx)(De,{schema:p,graph:i.graph,kind:e,arrangement:S,onChange:T,offers:q,...M?{filters:M}:{},kept:{shown:C.nodes.length,of:g.length},testId:"kind-arrange",chips:{nodes:g,flagged:b,today:m}}):null,g.length>0?(0,t.jsx)(mt,{derived:h,shape:$,draft:B}):null,(0,t.jsx)("div",{className:"graview-kind-stop-body","data-testid":"kind-stop-body",children:g.length===0?(0,t.jsx)("p",{className:"graview-kind-stop-empty","data-testid":"kind-stop-empty",children:"Nothing here yet."}):P?(0,t.jsx)(bt,{draft:B,nodes:g}):C.nodes.length===0?(0,t.jsxs)("p",{className:"graview-kind-stop-empty","data-testid":"kind-stop-none-kept",children:["None of the ",D(g.length)," ",o.toLowerCase()," ",S.query?`says \u201C${S.query}\u201D`:"is kept by these filters","."," ",(0,t.jsx)("button",{type:"button",className:"graview-kind-stop-link",onClick:()=>T({}),children:"Show them all"})]}):(0,t.jsx)(yt,{kind:e,nodes:C.nodes,groups:C.grouped?C.groups.map(E=>({key:E.key,label:E.label,nodes:E.nodes})):void 0,flagged:b,plural:o,arrangement:S})})]})}function ut({kind:e,plural:n,count:r,headingId:l,description:i}){let{store:a,setSelection:s,setMenuAt:u}=F(),y=(0,f.useMemo)(()=>({about:[Z(e)]}),[e]),{affordances:v}=$e(y),{apply:w,preview:p}=Ee(),c=(0,f.useMemo)(()=>{let x=k=>a.allMutations().find(S=>S.name===k.mutation)?.creates?.includes(e)??!1;return v.find(k=>!k.destructive&&!k.setsAside&&x(k))},[v,a,e]),[o,m]=(0,f.useState)(!1),[g,N]=(0,f.useState)(null),h=(0,f.useRef)(null),R=(0,f.useRef)(null);(0,f.useEffect)(()=>{let x=R.current;!x||x.closest('[data-testid="kind-stop"]')?.contains(document.activeElement)||x.focus({preventScroll:!0})},[e]);let $=(x,k)=>{try{p(x,k),w(x,k),N(null),m(!1),requestAnimationFrame(()=>h.current?.focus())}catch(S){return N(me(a.schema,a.allMutations(),S)),[]}};return(0,t.jsxs)("header",{className:"graview-kind-stop-head",children:[(0,t.jsxs)("div",{className:"graview-kind-stop-title",children:[(0,t.jsx)("h2",{id:l,ref:R,tabIndex:-1,"data-testid":"kind-stop-title",children:n}),(0,t.jsxs)("p",{"data-testid":"kind-stop-count",children:[de(a.schema,e,r),i?` \xB7 ${i}`:""]})]}),(0,t.jsxs)("div",{className:"graview-kind-stop-acts",children:[c?(0,t.jsx)("button",{ref:h,type:"button",className:"graview-kind-stop-primary","data-testid":"kind-stop-primary","data-affordance":c.id,"aria-expanded":c.open.length>0?o:void 0,onClick:()=>{N(null),c.open.length===0?$(c):m(x=>!x)},children:c.label}):null,(0,t.jsx)("button",{type:"button",className:"graview-kind-stop-quiet","data-testid":"kind-stop-acts","aria-haspopup":"menu","aria-label":`What can be done with the ${n.toLowerCase()}`,onClick:x=>{let k=x.currentTarget.getBoundingClientRect();s([Z(e)]),u({x:Math.round(k.left),y:Math.round(k.bottom+4),on:Z(e)})},children:"Acts\u2026"})]}),o&&c?(0,t.jsx)("div",{className:"graview-kind-stop-ask","data-testid":"kind-stop-ask","aria-label":c.label,role:"group",children:(0,t.jsx)(ke,{affordance:c,onApply:x=>$(c,x),onCancel:()=>{m(!1),h.current?.focus()}})}):null,g?(0,t.jsx)("p",{role:"alert",className:"graview-kind-stop-failed","data-testid":"kind-stop-failed",children:g}):null]})}var ft=Y.part((e,n)=>(0,t.jsx)(e.ProblemRows,{...n}),{what:"The problems",as:"li"});function wt({kind:e,plural:n,members:r,today:l,arrangement:i,onArrange:a}){let{store:s,brand:u,setSelection:y}=F(),v=s.schema,w=ee(),p=(0,f.useMemo)(()=>new Set(r.map(b=>b.id)),[r]),c=(0,f.useMemo)(()=>We(w,p,b=>s.allInvariants().find(C=>C.name===b)?.label),[w,p,s]),o=(0,f.useMemo)(()=>Ue(v,e,r,l),[v,e,r,l]),m=lt(xe(u,v),e),[g]=(0,f.useState)(()=>pt(m));(0,f.useEffect)(()=>()=>ct(m,new Date().toISOString()),[m]);let N=X(),h=(0,f.useMemo)(()=>g?Ye(s.log.all(),e,g,b=>s.graph.getNode(b)?.kind):null,[g,s,e,N]),[R,$]=(0,f.useState)(null),x=b=>a({...i,filter:[...(i.filter??[]).filter(C=>!b?.some(q=>q.key===C.key)),...b??[]]}),k=c.reduce((b,C)=>b+C.violations.length,0),S=[];if(o&&(o.overdue>0||o.soon>0)){let b=o.field;S.push((0,t.jsxs)("li",{"data-testid":"kind-stop-dates",children:[o.overdue>0?(0,t.jsxs)("button",{type:"button",className:"graview-kind-stop-fact","data-tone":"warn",onClick:()=>x(oe(o,"overdue",l)),"aria-label":`${D(o.overdue)} overdue \u2014 show only these`,children:[D(o.overdue)," overdue"]}):null,o.soon>0?(0,t.jsxs)("button",{type:"button",className:"graview-kind-stop-fact",onClick:()=>x(oe(o,"soon",l)),"aria-label":`${D(o.soon)} in the next 7 days \u2014 show only these`,children:[D(o.soon)," ",o.due?"due":""," in the next 7 days"]}):null,(0,t.jsxs)("span",{className:"graview-kind-stop-quiet-text",children:[" by ",pe(v.tryDefinition(e),b).toLowerCase()]})]},"dates"))}if(c.length>0&&S.push((0,t.jsxs)("li",{"data-testid":"kind-stop-problems","data-graview-problems":k,children:[(0,t.jsxs)("span",{className:"graview-kind-stop-warn",children:[(0,t.jsx)("span",{"aria-hidden":"true",children:"\u26A0 "}),k===1?"1 problem":`${D(k)} problems`]}),(0,t.jsxs)("span",{className:"graview-kind-stop-quiet-text",children:[" in ",n.toLowerCase(),":"]}),(0,t.jsx)("ul",{className:"graview-kind-stop-rules",children:c.map(b=>(0,t.jsx)(vt,{group:b,open:R===b.invariant,onToggle:()=>$(C=>C===b.invariant?null:b.invariant),onPick:C=>y([C])},b.invariant))}),(0,t.jsxs)("button",{type:"button",className:"graview-kind-stop-link","data-testid":"kind-stop-only-problems",onClick:()=>x([{key:"is",value:"flagged"}]),children:["Show only the ",n.toLowerCase()," with a problem"]})]},"problems")),h&&(h.added>0||h.changed>0)){let b=[h.added>0?`${D(h.added)} added`:"",h.changed>0?`${D(h.changed)} changed`:""].filter(Boolean);S.push((0,t.jsxs)("li",{"data-testid":"kind-stop-since",children:[(0,t.jsxs)("span",{className:"graview-kind-stop-quiet-text",children:["Since you last looked (",se(g.slice(0,10)),"):"]})," ",b.join(", ")]},"since"))}return S.length===0?null:(0,t.jsx)("ul",{className:"graview-kind-stop-going-on","aria-label":`What is going on in the ${n.toLowerCase()}`,"data-testid":"kind-stop-going-on",children:S})}function vt({group:e,open:n,onToggle:r,onPick:l}){let i=(0,f.useId)();return(0,t.jsxs)("li",{"data-graview-rule":e.invariant,children:[(0,t.jsxs)("button",{type:"button",className:"graview-kind-stop-rule","aria-expanded":n,"aria-controls":i,onClick:r,onPointerEnter:Y.prefetch,onFocus:Y.prefetch,children:[(0,t.jsx)("span",{"aria-hidden":"true",className:"graview-kind-stop-chevron","data-open":n||void 0,children:"\u203A"}),e.label," ",(0,t.jsxs)("span",{className:"graview-kind-stop-quiet-text",children:["\xB7 ",D(e.violations.length)]})]}),n?(0,t.jsx)("ol",{id:i,className:"graview-kind-stop-problem-rows","data-testid":"kind-stop-problem-rows",children:(0,t.jsx)(f.Suspense,{fallback:null,children:(0,t.jsx)(ft,{violations:e.violations,pick:a=>{let s=a.subjectId??e.records[0]??a.nodeIds[0];s!==void 0&&l(s)}})})}):null]})}var ht={board:"Board",calendar:"Calendar",table:"Table"};function mt({derived:e,shape:n,draft:r}){let{view:l}=F(),{go:i}=U(),{keep:a}=Fe(Ve()),[s,u]=(0,f.useState)(!1),y=e.shape==="table"?[]:[e.shape,"table"];return(0,t.jsxs)("div",{className:"graview-kind-stop-shape","data-testid":"kind-stop-shape",children:[y.length>0?(0,t.jsx)("span",{role:"group","aria-label":"Show as",className:"graview-kind-stop-switch",children:y.map(v=>(0,t.jsx)("button",{type:"button","aria-pressed":n.shape===v,"data-testid":`kind-stop-as-${v}`,onClick:()=>i(ge(l,Je,v===e.shape?null:v)),children:ht[v]},v))}):null,(0,t.jsx)("span",{className:"graview-kind-stop-quiet-text","data-testid":"kind-stop-derived",children:r?`${r.said.replace(/\.$/,"")}, derived from the declaration`:"Derived from the declaration"}),r?(0,t.jsx)("button",{type:"button",className:"graview-kind-stop-link","data-testid":"kind-stop-keep",disabled:s,title:`Keep \u201C${r.title}\u201D as a lens: a place of its own`,onClick:()=>{u(!0),a(r).finally(()=>u(!1))},children:"Keep as a lens"}):null]})}function bt({draft:e,nodes:n}){let r=Ke(e.drawn);return(0,t.jsx)("div",{className:"graview-kind-stop-lens","data-graview-draft":e.lens.name,children:(0,t.jsx)(we,{mode:"scene",children:(0,t.jsx)(ye,{kind:e.kind,view:e.title,children:(0,t.jsx)(r,{nodes:n,label:e.title,fidelity:"full",cardinality:"many",mode:"fullscreen",selected:!1})})})})}function yt({kind:e,nodes:n,groups:r,flagged:l,plural:i,arrangement:a}){let{store:s,views:u,view:y,selection:v,setSelection:w,setMenuAt:p,principal:c}=F(),{go:o}=U(),m=s.schema,g=s.graph,N=(0,f.useMemo)(()=>(r?r.flatMap(d=>d.nodes):n).map(d=>d.id),[n,r]),h=Pe(N),R=(0,f.useMemo)(()=>s.permittedMutations(c).some(d=>{let A=d.subject?.kinds;return A!==void 0&&(A==="*"||A.includes(e))}),[s,c,e]),$=(0,f.useRef)(null),x=d=>{h.choose(d),requestAnimationFrame(()=>{let A=h.list.current;((d[0]===void 0?null:A?.querySelector(`[data-graview-choose-box="${CSS.escape(d[0])}"]`))??A)?.focus({preventScroll:!0})})},k=h.chosen.length,S=u.lookup(e,{cardinality:"one",fidelity:"glyph"}),b=S!==void 0&&!ve(S)?S:void 0,C=d=>v.includes(d),q=ee(),M=(0,f.useMemo)(()=>ze(m,e,n,g),[m,e,n,g]),[T,I]=(0,f.useState)(z);(0,f.useEffect)(()=>I(z),[a.query,a.filter?.length,a.sort?.by,a.group?.by]);let H=m.tryDefinition(e),B=d=>q.filter(A=>A.nodeIds.includes(d)||A.subjectId===d).map(A=>A.message),P=a.sort?.by,E=`${i}${a.sort?`, in order of ${M.find(d=>d.key===P)?.label.toLowerCase()??P}`:""}`,J=T,Qe=d=>{let A=G(H,d),K=l.has(d.id)?B(d.id):[];return(0,t.jsxs)("tr",{"data-graview-pick":d.id,tabIndex:-1,"data-graview-record":d.id,"data-flagged":K.length>0||void 0,...R?{"data-graview-choose":d.id}:{},children:[R?(0,t.jsx)("td",{className:"graview-choose-at",children:(0,t.jsx)("input",{...h.boxProps(d.id,A),onPointerEnter:j,onFocus:j})}):null,(0,t.jsxs)("th",{scope:"row",className:"graview-kind-stop-name",children:[b?(0,t.jsx)("div",{"data-graview-pick":d.id,className:"graview-kind-stop-own-row",children:(0,t.jsx)(b,{node:d,cardinality:"one",fidelity:"glyph",mode:"scene",selected:C(d.id),...K.length>0?{flagged:[d.id]}:{}})}):(0,t.jsx)("button",{type:"button","data-testid":"kind-stop-row-go",title:`Go to ${A}`,onClick:()=>o(gt(y,d.id)),children:A}),K.length>0?(0,t.jsxs)("span",{className:"graview-kind-stop-flag",title:K.join(" \xB7 "),children:[(0,t.jsx)("span",{"aria-hidden":"true",children:"\u26A0"}),(0,t.jsx)("span",{className:"graview-kind-stop-hidden",children:`Problem: ${K.join(". ")}`})]}):null]}),M.map(_=>{let O=He(m,d,_,g);return(0,t.jsx)("td",{"data-label":_.label,"data-short":O.text.length>0&&O.text.length<=14||void 0,"data-empty":O.text?void 0:"",...O.title?{title:O.title}:{},children:O.text?(0,t.jsx)("span",{children:O.text}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("b",{"aria-hidden":"true",children:"\u2014"}),(0,t.jsx)("i",{className:"graview-kind-stop-hidden",children:"none"})]})},_.key)}),(0,t.jsx)("td",{className:"graview-kind-stop-row-acts",children:(0,t.jsx)("button",{type:"button","data-testid":"kind-stop-row-acts","aria-haspopup":"menu","aria-label":`What can be done with ${A}`,onClick:_=>{let O=_.currentTarget.getBoundingClientRect();w([d.id]),p({x:Math.round(O.left),y:Math.round(O.bottom+4),on:d.id})},children:(0,t.jsx)("span",{"aria-hidden":"true",children:"\u22EF"})})})]},d.id)},re=d=>{let A=d.slice(0,Math.max(0,J));return J-=A.length,A.map(Qe)};return(0,t.jsxs)("div",{className:"graview-kind-stop-table-at",...R?{...h.listProps,ref:d=>{$.current=d,h.list.current=d},tabIndex:-1,role:"group","aria-label":k>0?`${i}, ${k} chosen`:i,"data-graview-choosable":""}:{},children:[R?(0,t.jsx)("style",{children:Le}):null,(0,t.jsxs)("table",{className:"graview-kind-stop-table","data-testid":"kind-stop-table",children:[(0,t.jsx)("caption",{className:"graview-kind-stop-hidden",children:E}),(0,t.jsx)("thead",{children:(0,t.jsxs)("tr",{children:[R?(0,t.jsx)("td",{className:"graview-choose-at graview-choose-all",children:(0,t.jsx)("input",{type:"checkbox",className:"graview-choose-box","data-testid":"kind-stop-choose-all","aria-label":`Choose all ${D(n.length)} ${i.toLowerCase()}`,checked:k>0&&k===n.length,ref:d=>{d&&(d.indeterminate=k>0&&k<n.length)},onPointerEnter:j,onFocus:j,onChange:()=>k===n.length?h.clear():h.choose(N)})}):null,(0,t.jsx)("th",{scope:"col","aria-sort":P==="label"?a.sort?.direction==="desc"?"descending":"ascending":void 0,children:"Name"}),M.map(d=>(0,t.jsx)("th",{scope:"col","aria-sort":d.about==="field"&&d.key===P?a.sort?.direction==="desc"?"descending":"ascending":void 0,children:d.label},d.key)),(0,t.jsx)("th",{scope:"col",children:(0,t.jsx)("span",{className:"graview-kind-stop-hidden",children:"Acts"})})]})}),r?r.map(d=>J<=0?null:(0,t.jsxs)("tbody",{"data-graview-group":d.key,children:[(0,t.jsx)("tr",{className:"graview-kind-stop-group",children:(0,t.jsxs)("th",{scope:"rowgroup",colSpan:M.length+(R?3:2),children:[d.label," ",(0,t.jsxs)("span",{className:"graview-kind-stop-quiet-text",children:["\xB7 ",D(d.nodes.length)]})]})}),re(d.nodes)]},d.key||"-")):(0,t.jsx)("tbody",{children:re(n)})]}),R?(0,t.jsx)(Ie,{store:s,chosen:h.chosen,principal:c,anchor:()=>$.current?.closest('[data-testid="kind-stop"]')??null,of:N.length,onChooseAll:()=>h.choose(N),onClear:h.clear,onActed:x}):null,n.length>T?(0,t.jsxs)("p",{className:"graview-kind-stop-more",children:[(0,t.jsxs)("span",{className:"graview-kind-stop-quiet-text","data-testid":"kind-stop-shown",children:[D(T)," of ",D(n.length)," shown"]})," ",(0,t.jsxs)("button",{type:"button",className:"graview-kind-stop-link","data-testid":"kind-stop-more",onClick:()=>I(d=>d+z),children:["Show ",D(Math.min(z,n.length-T))," more"]})]}):null]})}var kt=`
2
+ .graview-kind-stop{container-type:inline-size;box-sizing:border-box;height:100%;min-height:0;display:flex;flex-direction:column;gap:10px;padding:16px 18px 12px;border:1px solid var(--graview-edge);border-radius:var(--graview-radius,12px);background:var(--graview-panel);color:var(--graview-ink);box-shadow:var(--graview-lift-low);overflow:auto;overscroll-behavior:contain}
3
+ [data-graview-map-panel] .graview-kind-stop{height:auto;padding:4px 6px 12px;border:0;box-shadow:none;background:none;overflow:visible}
4
+ .graview-kind-stop :focus-visible{outline:2px solid var(--graview-accent);outline-offset:2px}
5
+ .graview-kind-stop button{font:inherit;cursor:pointer}
6
+ .graview-kind-stop :is(.graview-kind-stop-link,.graview-kind-stop-rule,.graview-kind-stop-name button,.graview-kind-stop-row-acts button,.graview-kind-stop-fact,.graview-kind-stop-switch button){box-shadow:none}
7
+ .graview-kind-stop-head{display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px 16px}
8
+ .graview-kind-stop-title{flex:1 1 16rem;min-width:0}
9
+ .graview-kind-stop-title h2{margin:0;outline-offset:2px;font-size:var(--graview-text-heading);line-height:1.3;overflow-wrap:anywhere}
10
+ .graview-kind-stop-title p{margin:2px 0 0;font-size:.875rem;color:var(--graview-ink-muted);overflow-wrap:anywhere}
11
+ .graview-kind-stop-acts{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
12
+ .graview-kind-stop-primary,.graview-kind-stop-quiet{min-height:32px;padding:0 14px;border-radius:8px;font-size:.875rem}
13
+ .graview-kind-stop-primary{border:1px solid var(--graview-accent);background:var(--graview-accent);color:var(--graview-accent-ink);font-weight:600}
14
+ .graview-kind-stop-quiet{border:1px solid var(--graview-edge);background:transparent;color:var(--graview-ink)}
15
+ .graview-kind-stop-ask{flex:1 1 100%;min-width:0;padding:10px 12px;border:1px solid var(--graview-edge);border-radius:10px}
16
+ .graview-kind-stop-failed{flex:1 1 100%;margin:0;font-size:var(--graview-text-small);color:var(--graview-warn)}
17
+ .graview-kind-stop-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
18
+ .graview-kind-stop-going-on{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:.875rem}
19
+ .graview-kind-stop-going-on>li{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;min-width:0}
20
+ .graview-kind-stop-fact{min-height:28px;padding:0 10px;border:1px solid var(--graview-edge);border-radius:999px;background:transparent;color:var(--graview-ink)}
21
+ .graview-kind-stop-fact[data-tone=warn],.graview-kind-stop-warn{color:var(--graview-warn);font-weight:600}
22
+ .graview-kind-stop-quiet-text{color:var(--graview-ink-muted)}
23
+ .graview-kind-stop-rules{list-style:none;margin:0;padding:0;flex:1 1 100%;display:grid;gap:2px}
24
+ .graview-kind-stop-rule{display:inline-flex;align-items:center;gap:6px;min-height:28px;max-width:100%;padding:0 6px;border:1px solid transparent;border-radius:7px;background:none;color:var(--graview-ink);text-align:left;overflow-wrap:anywhere}
25
+ .graview-kind-stop-rule:hover{border-color:var(--graview-edge)}
26
+ .graview-kind-stop-chevron{display:inline-block;width:.8em}
27
+ .graview-kind-stop-chevron[data-open]{transform:rotate(90deg)}
28
+ .graview-kind-stop-problem-rows{list-style:none;margin:2px 0 6px 18px;padding:0;max-width:44rem}
29
+ .graview-kind-stop-link{min-height:28px;padding:0 4px;border:0;background:none;color:var(--graview-accent);text-decoration:underline;text-underline-offset:2px}
30
+ .graview-kind-stop-link:disabled{opacity:.6;cursor:default}
31
+ .graview-kind-stop-shape{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:var(--graview-text-small)}
32
+ .graview-kind-stop-switch{display:inline-flex;border:1px solid var(--graview-edge);border-radius:8px;overflow:hidden}
33
+ .graview-kind-stop-switch button{min-height:28px;padding:0 12px;border:0;background:transparent;color:var(--graview-ink-muted)}
34
+ .graview-kind-stop-switch button+button{border-left:1px solid var(--graview-edge)}
35
+ .graview-kind-stop-switch button[aria-pressed=true]{background:color-mix(in srgb,var(--graview-accent) 16%,transparent);color:var(--graview-ink);font-weight:600}
36
+ .graview-kind-stop-body{flex:1 0 auto;min-width:0}
37
+ .graview-kind-stop-empty{margin:24px 0;color:var(--graview-ink-muted)}
38
+ .graview-kind-stop-lens{min-width:0}
39
+
40
+ .graview-kind-stop-table-at{min-width:0}
41
+ .graview-kind-stop-table{width:100%;border-collapse:collapse;font-size:.875rem}
42
+ .graview-kind-stop-table th,.graview-kind-stop-table td{padding:7px 8px;text-align:left;vertical-align:top;border-top:1px solid var(--graview-edge);overflow-wrap:break-word}
43
+ .graview-kind-stop-table td{color:var(--graview-ink)}
44
+ .graview-kind-stop-table td>span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
45
+ .graview-kind-stop-table td[data-short]{white-space:nowrap;font-variant-numeric:tabular-nums}
46
+ .graview-kind-stop-table thead th{border-top:0;font-size:var(--graview-text-small);font-weight:600;letter-spacing:.04em;color:var(--graview-ink-muted)}
47
+ .graview-kind-stop-name{font-weight:500;min-width:8rem;max-width:22rem}
48
+ .graview-kind-stop-name button{display:inline-block;min-width:24px;min-height:24px;padding:0;border:0;background:none;color:var(--graview-ink);font-weight:500;text-align:left;text-decoration:underline;text-decoration-color:var(--graview-edge);text-underline-offset:3px}
49
+ .graview-kind-stop-name button:hover{text-decoration-color:currentColor}
50
+ .graview-kind-stop-own-row{display:inline-block;max-width:100%;cursor:pointer}
51
+ .graview-kind-stop-flag{margin-left:6px;color:var(--graview-warn)}
52
+ .graview-kind-stop-group th{padding-top:12px;font-weight:600;color:var(--graview-ink)}
53
+ .graview-kind-stop-row-acts{width:1%;white-space:nowrap;text-align:right}
54
+ .graview-kind-stop-row-acts button{min-width:32px;min-height:28px;border:1px solid var(--graview-edge-bright,var(--graview-edge));border-radius:7px;background:none;color:var(--graview-ink);font-size:1.125rem;font-weight:700;line-height:1}
55
+ .graview-kind-stop-row-acts button:hover{background:color-mix(in srgb,var(--graview-ink) 8%,transparent)}
56
+ .graview-kind-stop-table td[data-empty] b{font-weight:400;color:var(--graview-ink-faint)}
57
+ .graview-kind-stop-table tr[data-graview-pick]{cursor:default}
58
+ .graview-kind-stop-more{margin:10px 0 0;font-size:.875rem}
59
+ .graview-kind-stop-table-at[data-graview-choosable]{outline:none}
60
+ [data-graview-choosable]:hover .graview-choose-all .graview-choose-box{opacity:1}
61
+ .graview-kind-stop-table .graview-choose-at{width:1%;padding-right:0;vertical-align:middle}
62
+ @container (max-width: 559px){
63
+ .graview-kind-stop{padding:12px}
64
+ .graview-kind-stop-acts{flex:1 1 100%}
65
+ .graview-kind-stop-primary{flex:1 1 auto}
66
+ .graview-kind-stop-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
67
+ .graview-kind-stop-table,.graview-kind-stop-table tbody,.graview-kind-stop-table tr{display:block}
68
+ .graview-kind-stop-table tr{position:relative;padding:8px 40px 8px 0;border-top:1px solid var(--graview-edge)}
69
+ .graview-kind-stop-table th,.graview-kind-stop-table td{display:block;padding:1px 0;border:0}
70
+ .graview-kind-stop-table td>span{display:inline}
71
+ .graview-kind-stop-table td[data-short]{white-space:normal}
72
+ .graview-kind-stop-table td[data-label]::before{content:attr(data-label) " \xB7 ";color:var(--graview-ink-muted)}
73
+ .graview-kind-stop-row-acts{position:absolute;top:6px;right:0;width:auto}
74
+ .graview-kind-stop-table [data-graview-choose]{padding-left:34px}
75
+ .graview-kind-stop-table td.graview-choose-at{position:absolute;left:0;top:8px;width:auto;padding:0}
76
+ .graview-kind-stop-table thead .graview-choose-at{position:static}
77
+ }
78
+ @media (pointer: coarse){
79
+ .graview-kind-stop-table-at:not([data-graview-choosing]) .graview-choose-at{display:none}
80
+ .graview-kind-stop-table-at:not([data-graview-choosing]) [data-graview-choose]{padding-left:0}
81
+ }
82
+ @media (pointer: coarse){
83
+ .graview-kind-stop-primary,.graview-kind-stop-quiet,.graview-kind-stop-fact,.graview-kind-stop-rule,.graview-kind-stop-link,.graview-kind-stop-switch button,.graview-kind-stop-row-acts button{min-height:44px}
84
+ .graview-kind-stop-row-acts button{min-width:44px}
85
+ .graview-kind-stop-name button{min-height:44px}
86
+ }
87
+ @media (prefers-reduced-motion: reduce){.graview-kind-stop *{transition:none!important;animation:none!important}}
88
+ `;export{Zt as KindStop};
@@ -0,0 +1 @@
1
+ import{p as en}from"./chunk.KC6UZHBM.js";import{d as v}from"./chunk.YRQZZH5V.js";import{a as q}from"./chunk.HONUT6OG.js";import{f as B}from"./chunk.ZS4DJ76C.js";import{b as Z,d as nn}from"./chunk.5R66YTET.js";import{Ia as D,J as V,Ja as X,W as Y,Y as z,_ as J,ba as j,ca as L}from"./chunk.HLLWKSZB.js";var E=c=>c.filter(Boolean).join(" "),tn=new Set(["tell","me","about","what","how","show","describe","the","a","an","and","please"]),dn=new Set([...tn,"where","is","are","was","find","any","anything","something","things","called","named","which","who","of","for","with","to","in","on","i","my","do","does","have","has","can","you","it","that","this","there","we","our","got","be"]),ln=c=>c.length<=1?j(c[0]??"something"):`${c.slice(0,-1).map(j).join(", ")} and ${j(c[c.length-1])}`;function $n(c={}){return async(t,f,g={})=>{let w=f.toLowerCase(),u=n=>Y(t.schema.tryDefinition(n.kind),n),y=(await import("./chunk.MYFWM572.js")).goingFrom(t,f,g,c.today);if(y.reply)return y.reply;let C=y.told,S=n=>y.moves?{...n,moves:y.moves}:n,p=[],R=w.split(/[^a-z0-9]+/).filter(Boolean),I=new Set;for(let n=0;n<R.length;n++){let e="";for(let s=n;s<Math.min(R.length,n+6);s++)e+=R[s],I.add(e)}let T=n=>n.toLowerCase().replace(/[^a-z0-9]+/g,""),H=[...t.graph.allNodes()].map(n=>({node:n,label:T(u(n))})).filter(({label:n})=>n.length>=2&&I.has(n)).sort((n,e)=>e.label.length-n.label.length),N=new Map;for(let{label:n}of H)N.set(n,(N.get(n)??0)+1);for(let{node:n,label:e}of H)(N.get(e)??0)>1||p.some(s=>s.id===n.id)||p.push(n);for(let n of g.selection??[]){let e=t.graph.getNode(n);e&&!p.some(s=>s.id===e.id)&&p.push(e)}let x=C&&t.graph.getNode(C);if(x){let n=p.findIndex(e=>e.id===x.id);n>=0&&p.splice(n,1),p.unshift(x)}let b=t.violations(),A=(n=b)=>cn(n);if(y.problems||!C&&/\b(wrong|broken|problem|violat|standing)\b/.test(w)){if(b.length===0)return S({say:"Nothing is wrong: every rule holds.",proposals:[],grounded:!0});let n=v(t,A().slice(0,4)),e=(i,r)=>{let d=t.allMutations().find(l=>l.name===i),a=d?q(d.input).find(l=>l.name===r):void 0;return a?.control==="node"&&!a.kinds.includes("*")?a.kinds.map(l=>L(t.schema.tryDefinition(l),l)).join(" or "):B(t.schema,d,r).label},s=[...new Set(b.flatMap(i=>i.repairs).filter(i=>(i.missing??[]).length>0).map(i=>`\u201C${i.label}\u201D (${(i.missing??[]).map(r=>e(i.mutation,r)).join(", ")})`))];return S({say:E([y.moves?.[0]?.said??"",`${X(b)}:`,b.slice(0,4).map(i=>i.message).join("; ")+(b.length>4?"\u2026":"."),n.length>0?"The repairs below come from the rules themselves.":s.length>0?`Each way to fix ${b.length===1?"it":"these"} asks something first \u2014 ${s.slice(0,4).join(" or ")} \u2014 select the record and its own actions will ask.`:"No rule here names a way to fix it."]),proposals:n,grounded:!0})}let K=/\?\s*$/.test(f)||/^\s*(what|who|whom|whose|which|when|where|why|how|is|are|was|were|does|do|did|can|could|should|would|will|has|have)\b/.test(w),$=K?void 0:t.allMutations().find(n=>{let e=(n.title??n.name).toLowerCase();return e.length>3&&w.includes(e)});if($){let n={},e=[],s=f.slice(f.toLowerCase().indexOf(($.title??$.name).toLowerCase())+($.title??$.name).length),i=p.reduce((a,l)=>{let h=u(l).toLowerCase(),m=a.toLowerCase().indexOf(h);return m<0?a:`${a.slice(0,m)} it${a.slice(m+h.length)}`},s),r=f.match(/"([^"]+)"/)?.[1]??i.match(/^(?:\s+(?:it|this|that|them))?\s+(?:to|as)\s+(.+?)\s*[.!]?$/i)?.[1],d=[...p];for(let a of q($.input)){let l=hn(a,d,r,c.today??g.today,w);if(l!==void 0){n[a.name]=l;let h=d.findIndex(m=>m.id===l);h>=0&&d.splice(h,1)}else a.optional||e.push(B(t.schema,$,a.name).label.toLowerCase())}return e.length===0?{say:"I can do that. Review it below.",proposals:v(t,[{mutation:$.name,args:n,why:"you asked in words"}])}:{say:`\u201C${$.title??z($.name)}\u201D needs ${ln(e)} \u2014 say ${e.length===1?"it":"them"} (or select ${e.length===1?"it":"them"}) and ask again.`,proposals:[]}}let sn={mon:"mon",monday:"mon",tue:"tue",tues:"tue",tuesday:"tue",wed:"wed",wednesday:"wed",thu:"thu",thur:"thu",thurs:"thu",thursday:"thu",fri:"fri",friday:"fri",sat:"sat",saturday:"sat",sun:"sun",sunday:"sun"},M=R.map(n=>sn[n]).find(Boolean),_=(n,e,s)=>{let i=t.schema.tryDefinition(n)?.display?.format?.[e];return i?i(s):String(s)},F=n=>{let e=t.schema.tryDefinition(n.kind)?.fieldRoles;if(!e?.start)return null;let s=n[e.start],i=e.end?n[e.end]:void 0,r=e.day?n[e.day]:e.days?n[e.days]:void 0;return s===void 0&&i===void 0?null:[s!==void 0?_(n.kind,e.start,s):null,i!==void 0&&e.end?`\u2013${_(n.kind,e.end,i)}`:null,Array.isArray(r)?` on ${r.join(", ")}`:r!==void 0?` on ${String(r)}`:null].filter(Boolean).join("")||null},on=n=>{let e=[];for(let s of t.graph.allEdges()){let i=s.from===n?s.to:s.to===n?s.from:null;if(!i)continue;let r=t.graph.getNode(i);r&&!e.some(d=>d.id===r.id)&&e.push(r)}return e},G=n=>{let e=p[0];if(!e)return[];let s=[];for(let r of on(e.id)){let d=0,a=T(u(r));for(let l of R)l.length>2&&a.includes(l)&&(d+=1);if(M){let l=t.schema.tryDefinition(r.kind)?.fieldRoles,h=l?.day?r[l.day]:void 0,m=l?.days?r[l.days]:void 0;h===M?d+=4:Array.isArray(m)&&m.includes(M)&&(d+=1)}n&&!F(r)||d>0&&s.push({node:r,score:d})}let i=s.sort((r,d)=>d.score-r.score).map(r=>r.node);return n&&F(e)?i.unshift(e):n||i.push(e),i};if(p.length>0&&/\bwhen\b/.test(w)){let n=G(!0)[0]??null,e=n?F(n):null;if(n&&e)return S({say:`${u(n)} runs ${e}.`,proposals:v(t,A(D(b,[n.id])).slice(0,3)),grounded:!0})}if(p.length>0&&/\bwho(m|se)?\b/.test(w))for(let n of G(!1)){let e=[],s=new Set;for(let i of t.schema.definitions)for(let[r,d]of Object.entries(i.edges)){let a=/\bwho\b/i.test(d.description??""),l=/\bwho\b/i.test(d.inverse??"");if(!a&&!l||s.has(r))continue;s.add(r);let h=[...t.graph.in(n.id,r),...t.graph.out(n.id,r)];if(h.length===0)continue;let m=a?d.description:d.inverse;e.push(`${m}: ${h.map(o=>u(o)).join(", ")}`)}if(e.length>0)return S({say:`${u(n)} \u2014 ${e.join("; ")}.`,proposals:v(t,A(D(b,[n.id])).slice(0,3)),grounded:!0})}if(p.length>0){let n=p[0],e=new Set(u(n).toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)),s=R.every(o=>e.has(o)||tn.has(o)),i=K||s,r=t.schema.tryDefinition(n.kind),d=o=>o===o.toUpperCase()?o:o.charAt(0).toLowerCase()+o.slice(1),a=nn(n,r,{limit:3,excerpt:!0}).map(o=>{let k=n[o.key];return typeof k=="boolean"&&!/\s/.test(o.label)?k?d(o.label):`not ${d(o.label)}`:typeof k=="string"&&fn.test(k)?`${d(o.label)} ${V(k)}`:o.alone.startsWith(o.label)?d(o.label)+o.alone.slice(o.label.length):`${d(o.label)} ${o.alone}`}).join(", "),l=D(b,[n.id]),h=new Map;for(let o of[...t.graph.allEdges()]){let k=o.from===n.id?"out":o.to===n.id?"in":null;if(!k)continue;let U=t.graph.getNode(k==="out"?o.to:o.from);if(!U)continue;let P=`${o.kind}|${k}`;if(!h.has(P)){let W;for(let an of t.schema.definitions){let O=an.edges[o.kind];if(O&&(W=k==="out"?O.description:O.inverse??O.description,W))break}h.set(P,{sentence:W??z(o.kind).toLowerCase(),names:[]})}let Q=h.get(P);Q.names.length<6&&Q.names.push(u(U))}let m=[...h.values()].slice(0,4).map(o=>`${o.sentence.charAt(0).toUpperCase()}${o.sentence.slice(1)}: ${o.names.join(", ")}`).join(". ");return S({say:E([y.moves?.[0]?.said??"",`${u(n)} \u2014 ${j(L(t.schema.tryDefinition(n.kind),n.kind))}${a?` (${a})`:""}.`,m?`${m}.`:"Connected to nothing yet.",l.length>0?`Trouble: ${l.map(o=>o.message).join("; ")}.`:"Nothing about it is broken."]),proposals:v(t,A(l).slice(0,3)),...i||C?{grounded:!0}:{}})}{let n=w.split(/[^\p{L}\p{N}]+/u).filter(e=>e.length>0&&!dn.has(e));if(n.length>0){let e=en(t,n.join(" "),{...g.principal?{principal:g.principal}:{},...g.selection?{from:g.selection}:{},...c.today??g.today?{today:c.today??g.today}:{},limit:6,near:!1}),s=e.hits.filter(i=>i.about==="node");if(s.length>0){let i=Z(s.flatMap(a=>{let l=t.graph.getNode(a.id);return l?[l]:[]}),a=>t.schema.tryDefinition(a)),r=s.map(a=>`${a.label}${i.has(a.id)?` \xB7 ${i.get(a.id)}`:""} (${L(t.schema.tryDefinition(a.kind),a.kind)}${a.why.field==="label"?"":`, ${a.why.reading.toLowerCase()}: ${a.why.fragment}`})`);return{say:`${e.total===1?"One thing is":`${un(e.total)} things are`} called \u201C${e.words}\u201D \u2014 ${r.join("; ")}${e.total>s.length?`; and ${e.total-s.length} more`:""}.`,proposals:[],picks:s}}}}let rn=t.schema.kinds.filter(n=>!t.modules.disabledKinds.has(n)).map(n=>{let e=J(t.schema,n);return`${t.graph.nodesOfKind(n).length} ${e}`}).join(", ");return{say:E([`This graph holds ${rn}.`,"Ask about anything by name, ask what's wrong, or say a change in its own words \u2014",`like "${t.allMutations()[0]?.title??"an action"}".`]),proposals:[],unsure:!0}}}function cn(c){return c.flatMap(t=>{let f=t.repairs.find(g=>!g.missing?.length);return f?[{mutation:f.mutation,args:{...f.args},why:t.message}]:[]})}var gn=["No","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten"],un=c=>gn[c]??String(c);function hn(c,t,f,g,w=""){switch(c.control){case"node":return t.find(y=>c.kinds.includes("*")||c.kinds.includes(y.kind))?.id;case"text":return f;case"date":{let u=g??new Date().toISOString().slice(0,10);return c.time?`${u}T09:00`:u}case"choice":{let u=new Set(w.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)),y=(c.options??[]).filter(C=>C.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean).every(S=>u.has(S)));return y.length===1?y[0]:void 0}default:return}}function kn(c){return async(t,f,g={})=>(await import("./chunk.OGXE2RHC.js")).answerWithModel(c,t,f,g)}var fn=/^\d{4}-\d{2}-\d{2}$/;export{$n as a,cn as b,kn as c};
@@ -0,0 +1 @@
1
+ import{La as k,Lb as E,Mb as G,Nb as F,Pa as O,Pb as J,Qa as P,Qb as W,Sa as h,Ta as A}from"./chunk.HLLWKSZB.js";var I=(o,a)=>{let t=o.kindOf(a);return t===void 0?void 0:o.kept?.({id:a,kind:t})};function w(o,a){return o.flatMap(t=>{if(t.op!=="patch-node")return[t];let i=I(a,t.id);if(!i||!Object.keys(t.after).some(i))return[t];let c=r=>Object.fromEntries(Object.entries(r).filter(([f])=>!i(f))),s=c(t.after);return Object.keys(s).length===0?[]:[{op:"patch-node",id:t.id,before:c(t.before),after:s}]})}function _(o,a,t){if(!F(o,a))return t;let i=J(o,a),c=r=>o.graph.getNode(r)!==void 0||E(o.log).kindOf(r)!==void 0,s={...t};if(t.diff){let r=t.diff,f=G(o.log),l=o.log.length??o.log.all().length,u=t.ops?.[0]?.seq??l,x=k(a).id,y=(e,n)=>d=>f.writerAt(e,d,n),m=(e,n)=>i.shows(e.id)?i.servedWith(e,n):void 0,j=(e,n)=>e.flatMap(d=>m(d,n(d.id))??[]),S=e=>i.shows(e.from)&&i.shows(e.to)&&!h(e,i.sees),v=(e,n)=>t.ops?y(e,l):d=>n===void 0||n.includes(d)?x:f.writerAt(e,d,l),M=r.changedNodes.flatMap(e=>{let n=m(e.before,y(e.before.id,u)),d=m(e.after,v(e.after.id,e.fields));return n&&d?[{before:n,after:d,fields:e.fields.filter(p=>p in n||p in d)}]:[]}),D=new Set(r.changedNodes.map(e=>e.after.id)),g=new Map;for(let e of t.ops?.flatMap(n=>n.primitives)??t.primitives??[])e.op!=="patch-node"||D.has(e.id)||g.set(e.id,[...g.get(e.id)??[],...Object.keys(e.after)]);let B=[...g].flatMap(([e,n])=>{let d=o.graph.getNode(e);if(!d)return[];let p=m(d,y(e,u)),N=m(d,v(e,n));return p&&N&&JSON.stringify(p)!==JSON.stringify(N)?[{before:p,after:N,fields:n}]:[]});s.diff={addedNodes:j(r.addedNodes,e=>v(e)),removedNodes:j(r.removedNodes,e=>y(e,u)),changedNodes:[...M,...B],addedEdges:r.addedEdges.filter(S),removedEdges:r.removedEdges.filter(S),touched:[...r.touched.filter(i.shows),...[...g.keys()].filter(e=>i.shows(e)&&!r.touched.includes(e))]}}if(t.ops&&(s.ops=A(t.ops,i)),t.primitives){let r=s.ops;s.primitives=r?r.flatMap(f=>f.primitives):i.timeline?O(t.primitives,i.timeline,{served:(f,l)=>i.servedWith(f,l),edgeClean:f=>!h(f,i.sees),sees:i.sees},k(a).id):A([{id:"",seq:0,batch:"",author:{kind:"system"},intent:"",mutation:null,primitives:t.primitives,inverse:[],reads:[],writes:[],at:""}],i)[0].primitives}return i.kept&&s.primitives&&(s.primitives=w(s.primitives,i)),t.reads&&(s.reads=t.reads.filter(r=>i.shows(r)&&c(r))),t.writes&&(s.writes=t.writes.filter(i.shows)),t.intent!==void 0&&h(t.intent,i.sees)&&(s.intent=P),t.violationsAfter&&Object.assign(s,b?b(o,W(o,a),!!t.ops,s.primitives??[]):{introduces:[],resolves:[],violationsAfter:[]}),s}var b,z=o=>void(b=o);export{_ as a,z as b};
@@ -0,0 +1 @@
1
+ import{a as y}from"./chunk.HONUT6OG.js";import{e as p}from"./chunk.ZS4DJ76C.js";import{B as f,W as d,eb as m}from"./chunk.HLLWKSZB.js";function x(n){let e=n.indexOf("{"),t=n.indexOf("["),a=t!==-1&&(e===-1||t<e)?t:e;if(a===-1)return;let r=n[a],i=r==="["?"]":"}",o=0,l=!1,s=!1;for(let u=a;u<n.length;u++){let c=n[u];if(l){s?s=!1:c==="\\"?s=!0:c==='"'&&(l=!1);continue}if(c==='"')l=!0;else if(c===r)o+=1;else if(c===i&&(o-=1,o===0))try{return JSON.parse(n.slice(a,u+1))}catch{return}}}function g(n,e){let t;try{t=n.mutation(e.mutation)}catch{return e}let a={...e.args},r=!1;for(let i of y(t.input)){if(i.control!=="node")continue;let o=a[i.name];if(typeof o!="string"||o.length===0||n.graph.getNode(o))continue;let l=o.trim().toLowerCase(),s=[...n.graph.allNodes()].filter(u=>(i.kinds.includes("*")||i.kinds.includes(u.kind))&&d(n.schema.tryDefinition(u.kind),u).trim().toLowerCase()===l);s.length===1&&(a[i.name]=s[0].id,r=!0)}return r?{...e,args:a}:e}function C(n,e,t){let a=t===void 0?null:new Set(t),r=[];for(let i of e){if(typeof i.mutation!="string")continue;let o=!0;try{n.mutation(i.mutation)}catch{o=!1}o?a&&!a.has(i.mutation)&&r.push({proposal:i,why:"not-allowed"}):r.push({proposal:i,why:"unknown"})}return r}function b(n,e,t){let a=t===void 0?null:new Set(t);return e.filter(r=>{if(typeof r.mutation!="string"||a&&!a.has(r.mutation))return!1;try{n.mutation(r.mutation)}catch{return!1}return r.args!==null&&typeof r.args=="object"})}function A(n,e){let t=n.allMutations().find(l=>l.name===e.mutation);if(t?.describe){let l=g(n,e),s=t.input.safeParse?.(l.args);if(s?.success)try{return t.describe(s.data,n.graph)}catch{}}let a=t?.subject?.arg,r=a?e.args[a]:void 0,i=typeof r=="string"?n.graph.getNode(r):void 0,o=t?.title??e.mutation;return i?`${o} \u2014 ${d(n.schema.tryDefinition(i.kind),i)}`:o}function O(n,e){let t=n.allMutations().find(o=>o.name===e.mutation);if(!t)return[];e=g(n,e);let a=t.input.shape??{},r=m(t.input),i=[];for(let o of Object.keys(a)){if(k(a[o]))continue;let l=e.args[o],s=r.find(c=>c.name===o);l!=null&&l!==""&&(!s||typeof l!="string"||n.graph.getNode(l)!==void 0)||i.push({name:o,...s?{kinds:s.kinds}:{},...s?{candidates:s.kinds.includes("*")?n.graph.allNodes().map(c=>c.id):s.kinds.flatMap(c=>n.graph.nodesOfKind(c).map(h=>h.id))}:{},shape:p(t.input,o)})}return i}function k(n){let e=f(n)?.type;return e==="optional"||e==="default"||e==="nullable"}export{x as a,g as b,C as c,b as d,A as e,O as f};
@@ -0,0 +1 @@
1
+ import{d as x}from"./chunk.O42YET3W.js";import"./chunk.Z5V23DQN.js";import"./chunk.OHE5AMHH.js";import{o as v}from"./chunk.OYJSFO3A.js";import"./chunk.HV6I74DF.js";import"./chunk.WVUJXDXZ.js";import"./chunk.DAA6XWLF.js";import"./chunk.7DNFXJH3.js";import"./chunk.7PRFYYVM.js";import"./chunk.2NCTM5K2.js";import"./chunk.JU2ZVKMT.js";import"./chunk.HGAMNIST.js";import"./chunk.OQDETV4X.js";import"./chunk.ZS4DJ76C.js";import"./chunk.5R66YTET.js";import"./chunk.G4WQGTZR.js";import"./chunk.HFKMHLJ3.js";import"./chunk.GS4T26WW.js";import{F as h,M as A,V as k}from"./chunk.Z56B2JR2.js";import{Gb as m,da as c}from"./chunk.HLLWKSZB.js";import{b as u}from"./chunk.AJZBJBMO.js";var f=u(h(),1);var R=u(h(),1),S=(0,R.createContext)(void 0);var i=u(A(),1),L=new WeakMap,w=new WeakMap,P=(e,n)=>`${n.kind}\0${n.id??""}\0${e}`;function W(e,n,r){let a=P(n,r),o=L.get(e);o||L.set(e,o=new Map);let t=o.get(a);return t||(t=Promise.resolve().then(()=>e(n,r)).then(s=>b(s)?s:null,()=>null).then(s=>{let p=w.get(e);return p||w.set(e,p=new Map),p.set(a,s),s}),o.set(a,t)),t}function b(e){if(e===null)return!0;if(typeof e!="object"||e===void 0)return!1;if(e.denied===!0)return!0;let n=e;return typeof n.name=="string"&&n.name.trim()!==""&&typeof n.href=="string"}function y(e){if(/^https?:\/\//i.test(e))try{return new URL(e).href}catch{return}}var C=e=>y(e)??(c(e)?e:void 0),I=e=>y(e)??(e.startsWith("/")&&c(e)?e:void 0),E={kind:"human"},g={color:"var(--graview-ink-muted)"};function N({icon:e}){if(!e)return null;let n=I(e);if(n)return(0,i.jsx)("img",{src:n,alt:"",width:20,height:20,"data-graview-app-icon":"",style:{width:20,height:20,borderRadius:5,objectFit:"cover",flex:"0 0 auto"}});let r=[...e.trim()].slice(0,2).join("");return r?(0,i.jsx)("span",{"aria-hidden":"true","data-graview-app-icon":"",style:{flex:"0 0 auto",lineHeight:"20px"},children:r}):null}function M(e){let n=k(),r=(0,f.useContext)(S)??n?.resolveApp,a=n?.principal??E,o=()=>r?w.get(r)?.get(P(e,a))??"asking":null,[t,s]=(0,f.useState)(o);return(0,f.useEffect)(()=>{let p=o();if(s(p),p!=="asking"||!r)return;let l=!0;return W(r,e,a).then(d=>l&&s(d)),()=>{l=!1}},[r,e,a.kind,a.id]),t}function V({address:e,as:n="chip",nodeId:r,field:a,style:o}){let t=M(e),s={position:"relative",zIndex:m.raised,overflowWrap:"anywhere",minWidth:0,maxWidth:"100%",...o},p;if(t==="asking")p=(0,i.jsx)("span",{"data-graview-app-link":"","data-graview-app-state":"asking","aria-busy":"true",style:{...g,...s},children:"Linked app"});else if(t&&"denied"in t)p=(0,i.jsx)("span",{"data-graview-app-link":"","data-graview-app-state":"denied",style:{...g,fontStyle:"italic",...s},children:"linked app (no access)"});else if(t){let l=C(t.href),d=n==="record"?t.headline?.trim():void 0;p=(0,i.jsxs)(l?"a":"span",{"data-graview-app-link":"","data-graview-app-state":"found",...l?{href:l}:{},...!d&&t.headline?{title:t.headline}:{},style:{display:"inline-flex",alignItems:d?"flex-start":"center",minHeight:24,gap:8,color:"inherit",textUnderlineOffset:3,...s},children:[(0,i.jsx)(N,{icon:t.icon}),(0,i.jsxs)("span",{style:{display:"grid",minWidth:0},children:[(0,i.jsx)("span",{"data-graview-app-name":"",style:{fontWeight:600},children:t.name}),d?(0,i.jsx)("span",{"data-graview-app-headline":"",style:{...g,fontSize:"0.8125em",fontWeight:400},children:d}):null]})]})}else{let l=y(e);p=l?(0,i.jsx)("a",{"data-graview-app-link":"","data-graview-app-state":"plain",href:l,rel:"noopener noreferrer",target:"_blank",style:{color:"var(--graview-accent)",display:"inline-flex",alignItems:"center",minHeight:24,...s},children:e}):(0,i.jsx)("span",{"data-graview-app-link":"","data-graview-app-state":"plain",style:s,children:e})}return r&&a?(0,i.jsx)(H,{nodeId:r,field:a,address:e,drawn:p}):p}function H({nodeId:e,field:n,address:r,drawn:a}){return v(e).fields.some(t=>t.field===n)?(0,i.jsxs)("span",{style:{display:"inline-flex",flexWrap:"wrap",alignItems:"baseline",gap:"4px 12px",maxWidth:"100%",minWidth:0},children:[a,(0,i.jsx)("span",{style:{fontSize:"0.8125rem"},children:(0,i.jsx)(x,{nodeId:e,field:n,value:"Change",stored:r})})]}):a}var Y=e=>(0,i.jsx)(V,{...e});export{V as AppLink,Y as drawAppLink};
@@ -0,0 +1 @@
1
+ import{a as $e,b as Ae,c as Fe,d as de,e as S,f as De,h as Re}from"./chunk.UTHHX2TJ.js";import{e as Te,f as Ke,g as Pe}from"./chunk.7DNFXJH3.js";import{a as ne,b as te,c as L,d as Me,e as W,g as X,h as Ce}from"./chunk.2NCTM5K2.js";import{b as xe,g as h,h as Ee,i as ce}from"./chunk.JU2ZVKMT.js";import{b as ee,c as Y,e as ke,f as we,g as G,h as k,k as _,l as ve,m as P,n as je,o as N,p as R,r as w,s as Se,t as M,u as O,v as U,w as K,x as t,y as V,z as Oe}from"./chunk.HLLWKSZB.js";function le(e){let n=/^(edit|remove|archive|unarchive|merge|skip|detach|split)-(.+)$/.exec(e);return n?{act:n[1],kind:n[2]}:void 0}var pe="graview-document",ue=1,me=256*1024,fe=64*1024,_e=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/,ge=/^[a-z][A-Za-z0-9]*$/,nn=new Set(["id","kind"]),tn=e=>e in Object.prototype,Ne=V(e=>!tn(e),"every object already has this name \u2014 choose another"),Ie=(e,n)=>[...e===void 0?[]:[we(e)],...n===void 0?[]:[ke(n)]],$=(e,n)=>k().check(...Ie(e,n)),x=(e,n,s)=>R(e).check(...Ie(n,s)),D=e=>k().check(G(_e,`${e} names are lower-case words joined by hyphens, like "booked-vendor"`)),on=/^(?:[a-z][a-z0-9]*(?:-[a-z0-9]+)*|[a-z][A-Za-z0-9]*)$/,B=k().check(G(on,'relation names are one camelCase word, like "tendedBy"'),Ne),C=k().check(G(ge,'field names are one word or camelCase, like "dueDate" \u2014 rules say them bare'),V(e=>!nn.has(e),'a field cannot be called "id" or "kind" \u2014 the framework keeps those; try "type" or "category"'),Ne),I=$(1,500),J=$(1,2e3),se=$(1,300),sn=["string","text","number","integer","boolean","date","datetime","enum","list","url","email","image","file","app-link","phone","place","duration"],qe=w({type:U(sn),required:t(P()),description:t(I),label:t($(1,60)),options:t(x($(1,80),1,100)),of:t(U(["string","number","date","image","file"])),default:t(N()),unit:t($(void 0,12)),format:t(U(["money","percent","duration","markdown"])),min:t(_()),max:t(_()),step:t(_()),renamedFrom:t(k().check(G(ge))),repeats:t(P())}).check(Oe((e,n)=>{e.type==="enum"&&!e.options&&n.addIssue({code:"custom",message:'an enum field lists its "options"',path:["options"]}),e.type!=="enum"&&e.options&&n.addIssue({code:"custom",message:'"options" belongs only on an enum field',path:["options"]}),e.type!=="list"&&e.of&&n.addIssue({code:"custom",message:'"of" belongs only on a list field',path:["of"]}),e.repeats&&e.type!=="date"&&e.type!=="datetime"&&n.addIssue({code:"custom",message:'"repeats" belongs only on a date or datetime field',path:["repeats"]})})),rn=w({to:M([x(D("kind"),1),K("*")]),cardinality:t(U(["one","many"])),description:t(I),inverse:t($(1,80)),appendOnly:t(P()),renamedFrom:t(k())}),Ve=M([J,w({expr:J,label:t($(1,60)),description:t(I)})]),an=w({noun:t($(1,40)),plural:t($(1,40)),description:t(I),fields:O(C,qe).check(V(e=>Object.keys(e).length>0,"a kind has at least one field")),label:t(se),describe:t(se),lifecycle:t(w({field:C,retired:x(M([k(),_(),P()]),1)})),figure:t($(void 0,2e4)),glance:t(x(C,1,20)),page:t(w({fields:t(x(C,1,40)),groups:t(x(w({title:$(1,60),fields:x(C,1,40)}),1,12))})),edges:t(O(B,rn)),computed:t(O(k(),Ve).check(V(e=>Object.keys(e).length<=20,"a kind works out at most 20 computed fields"))),fieldRoles:t(O(k(),k())),renamedFrom:t(k().check(G(_e))),people:t(P()),archives:t(K(!1))}),H=M([k(),_(),P(),je(),R(N()),w({expr:J})]),Z=k().check(G(/^\$[A-Za-z][A-Za-z0-9]*$/,'a reference is "$" and a name, like "$subject" or "$new"')),cn=M([w({create:D("kind"),as:t(k().check(G(ge))),set:t(O(C,H))}),w({set:O(C,H),target:t(Z)}),w({connect:B,from:Z,to:Z}),w({sever:B,from:Z,to:Z}),w({remove:Z})]),dn=w({title:t($(1,80)),description:t(I),fromTheOtherEnd:t($(1,80)),on:t(M([D("kind"),x(D("kind"),1)])),creates:t(D("kind")),sets:t(O(C,H)),writes:t(x(C,1)),connects:t(B),severs:t(B),setsOther:t(O(C,H)),replaces:t(M([K(!0),x(B,1,10)])),removes:t(K(!0)),args:t(O(C,qe)),effects:t(x(cn,1,20)),allowedWhen:t(J),refusal:t(se),destructive:t(P())}),ln=w({act:D("act"),label:t($(1,80)),args:t(O(k(),H))}),fn=w({title:t($(1,120)),description:t(I),over:M([K("graph"),D("kind")]),when:t(J),require:J,says:t(se),repairs:t(x(ln,void 0,10))}),pn=w({roles:M([x(D("role"),1),K("*")]),mutations:M([x(D("act"),1),K("*")]),kinds:t(M([R(D("kind")),K("*")])),describe:t(I),self:t(P()),ownEnd:t(P())}),Ge=t(x(D("field"),1)),un=w({roles:M([x(D("role"),1),K("*")]),kinds:x(D("kind"),1),own:t(P()),via:t(B),fields:Ge,hide:Ge}),mn=w({grants:R(pn),sees:t(R(un))}),gn=w({accent:t(k().check(G(/^#[0-9a-fA-F]{6}$/,'an accent is a color like "#c2577a"'))),name:t($(1,60)),currency:t(k().check(G(/^[A-Z]{3}$/,'a currency is its three-letter code, like "USD" or "EUR"'))),locale:t($(2,35)),logo:t(M([$(1,fe),w({src:$(1,fe),alt:t($(1,120))})])),favicon:t($(1,fe)),typography:t(w({display:t($(1,200)),body:t($(1,200)),mono:t($(1,200))})),shape:t(w({radius:t(_().check(Y(0),ee(32))),density:t(_().check(Y(.75),ee(1.5)))})),accents:t(O(k(),_().check(Y(0),ee(360)))),scheme:t(U(["light","dark","auto"]))}),oe=O(k(),N()),hn=w({card:t(R(N())),row:t(R(N())),page:t(R(N()))}),zn=Se({order:t(R(k())),hide:t(R(k())),first:t(k()),primary:t(x($(1,80),void 0,40)),scene:t($(1,40)),pages:t($(1,40)),lists:t(O(k(),w({filters:t(x($(1,120),void 0,40))})))}),Be=w({$schema:t(k()),format:K(pe),formatVersion:K(ue),name:$(1,80),description:t(I),version:t(_().check(ve(),Y(1))),kinds:O(D("kind"),an).check(V(e=>Object.keys(e).length>0,"a document declares at least one kind"),V(e=>Object.keys(e).length<=40,"a document declares at most 40 kinds")),computed:t(O(k(),Ve)),acts:t(O(D("act"),dn)),rules:t(O(D("rule"),fn)),roles:t(R(D("role"))),policy:t(mn),modules:t(oe),lenses:t(R(oe)),pages:t(zn),views:t(O(k(),M([hn,R(N())]))),brand:t(gn),settings:t(R(oe)),migrations:t(R(oe))});var yn={};function Ue(e,n=yn,s=ue){let{document:r,respelled:a}=$e(e),u=a.length>0?{respelled:a}:{};if(!r||typeof r!="object"||Array.isArray(r))return{document:r};let g=r;if(g.format!==pe||typeof g.formatVersion!="number"||g.formatVersion>=s)return{document:r,...u};let l=g.formatVersion,i=structuredClone(g);for(let o=l;o<s;o++){let c=n[o];if(!c)throw new Error(`there is no upgrade from format ${o} to ${o+1}`);i={...c(i),formatVersion:o+1}}return{document:i,from:l,...u}}function Le(e,n,s){let r=Object.keys(e).filter(l=>e[l].edges?.[n]!==void 0);if(r.length===0)return;let a=r.map(l=>e[l].edges[n].to),u=a.some(l=>l==="*")?"*":[...new Set(a.flatMap(l=>l))];if(s.length===0||s.some(l=>r.includes(l)))return{reversed:!1,kinds:u};let g=r.filter(l=>{let i=e[l].edges[n].to;return i==="*"||s.every(o=>i.includes(o))});return g.length>0?{reversed:!0,kinds:g}:{reversed:!1,kinds:u}}var Je=(e,n)=>{let s=e?.fields[n];return s!==void 0&&(s.type==="duration"||(s.type==="number"||s.type==="integer")&&s.format==="duration")};function We(e,n,s,r){if(r==="out"){let a=e[n]?.edges?.[s]?.to;return a===void 0?[]:a==="*"?Object.keys(e):a}return Object.entries(e).filter(([,a])=>{let u=a.edges?.[s]?.to;return u!==void 0&&(u==="*"||u.includes(n))}).map(([a])=>a)}function he(e,n,s){if(s.t==="ident")return e[n]?.edges?.[s.name]?We(e,n,s.name,"out"):void 0;if(s.t==="where")return he(e,n,s.set);if(s.t==="call"&&(s.fn==="out"||s.fn==="in")&&s.args[0]?.t==="lit"&&typeof s.args[0].value=="string")return We(e,n,s.args[0].value,s.fn)}var Ze=(e,n,s)=>{let r=n.filter(a=>e[a]?.fields[s]!==void 0);return r.length>0&&r.every(a=>Je(e[a],s))};function Ye(e,n,s){let r=e.kinds,a=r[n],u=new Map(s),g=new Map,l=(o,c)=>{if(c>8)return!1;switch(o.t){case"ident":return Je(a,o.name)||i(o.name,c+1);case"member":{let d=he(r,n,o.object);return d!==void 0&&Ze(r,d,o.name)}case"call":{if(o.fn!=="sum"&&o.fn!=="min"&&o.fn!=="max")return!1;let[d,y]=o.args,p=d&&he(r,n,d);return p!==void 0&&y?.t==="ident"&&Ze(r,p,y.name)}case"binary":return(o.op==="+"||o.op==="-")&&l(o.left,c)&&l(o.right,c);case"unary":return o.op==="-"&&l(o.operand,c);default:return!1}},i=(o,c)=>{if(a?.computed?.[o]===void 0)return!1;if(g.has(o))return g.get(o);g.set(o,!1);let d=u.get(o),y=d!==void 0&&l(d,c);return g.set(o,y),y};return s.map(([o])=>o).filter(o=>i(o,0))}function Xe(e,n,s=`kinds.${e}.page`){let r=n.page;if(!r)return[];let a=[],u=[...Object.keys(n.fields),...Object.keys(n.computed??{})],g=new Set,l=(o,c)=>{u.includes(o)?g.has(o)&&a.push(h("page-field-twice",c,`"${o}" is on ${e}'s page twice; name each field once`)):a.push(h("page-field",c,`${e}'s page is to show "${o}", and ${e} has no field or computed field called that`,`use one of: ${u.join(", ")}`)),g.add(o)};(r.fields??[]).forEach((o,c)=>l(o,`${s}.fields.${c}`));let i=new Set;return(r.groups??[]).forEach((o,c)=>{let d=o.title.trim().toLowerCase();i.has(d)&&a.push(h("page-group-twice",`${s}.groups.${c}.title`,`${e}'s page has two groups called "${o.title}"; give each its own title`)),i.add(d),o.fields.forEach((y,p)=>l(y,`${s}.groups.${c}.fields.${p}`))}),a}var bn=new Set(["subject","now","today","me"]);function $n(e){if((typeof e=="string"?e:JSON.stringify(e??null)).length>me)return{findings:[h("too-large","",`a document may be at most ${me/1024} KB`)]};if(typeof e=="string")try{e=JSON.parse(e)}catch(r){return{findings:[h("not-json","",`this is not JSON: ${r.message}`)]}}try{e=Ue(e).document}catch(r){return{findings:[h("format","formatVersion",r.message)]}}let n=Be.safeParse(e);if(!n.success)return{findings:n.error.issues.map(r=>{let a=r.path.map(String).join(".");if(r.code==="unrecognized_keys")return h("unknown-key",a,`${r.keys.map(u=>`"${u}"`).join(", ")} ${r.keys.length===1?"is":"are"} not part of a Graview document here`,"check the spelling against docs/declaration-document.md");if(r.code==="invalid_union"&&/\.effects\.\d+$/.test(a))return h("effect-shape",a,"this effect is not one Graview knows",'an effect is one of {"create": kind, "as"?: name, "set"?: {field: value}}, {"set": {field: value, \u2026}, "target"?: "$ref"}, {"connect"|"sever": relation, "from": "$ref", "to": "$ref"}, {"remove": "$ref"}');if(r.code==="invalid_key"){let u=r.issues?.[0]?.message;return h("shape",a,`the name "${String(r.path.at(-1))}" is not allowed here${u?`: ${u}`:""}`)}return h("shape",a,r.message)})};let s=n.data;return{document:s,findings:kn(s)}}var ie=e=>[e??[]].flat();function He(e){let n=new Map;for(let[s,r]of Object.entries(e.kinds))for(let[a,u]of Object.entries(r.edges??{})){let g=n.get(a);n.set(a,{name:a,from:[...g?.from??[],s],to:u.to==="*"||g?.to==="*"?"*":[...new Set([...g?.to??[],...u.to])],cardinality:u.cardinality??"many"})}return n}function Hn(e){let n=new Map;for(let[r,a]of Object.entries(e.kinds)){let u=X(a);n.set(r,{fields:new Set(Object.keys(a.fields)),edges:new Map(Object.entries(a.edges??{}).map(([g,l])=>[g,l.cardinality??"many"])),...u?{computed:u}:{}})}let s=X(e);return s&&n.set(xe,{computed:s}),n}function Qe(e,n){let s=[],r=ie(e.on),a=(u,g)=>{let l=Le(n.kinds,u,r)?.reversed===!0,[i,o]=l?["$to","$subject"]:["$subject","$to"];return g==="connect"?{connect:u,from:i,to:o}:{sever:u,from:i,to:o}};if(e.creates){let u=n.kinds[e.creates],g={};for(let l of Object.keys(u?.fields??{}))g[l]=`$${l}`;for(let l of e.effects??[])"set"in l&&!("create"in l)&&S(l.target)==="new"&&Object.assign(g,l.set);s.push({create:e.creates,as:"new",set:g})}return e.sets&&s.push({set:e.sets}),e.writes&&!(e.creates&&e.on===void 0)&&s.push({set:Object.fromEntries(e.writes.map(u=>[u,`$${u}`]))}),e.connects&&(e.replaces&&s.push({replace:e.replaces===!0?[e.connects]:[...e.replaces],keep:e.connects}),s.push(a(e.connects,"connect"))),e.severs&&s.push(a(e.severs,"sever")),e.setsOther&&(e.connects||e.severs)&&s.push({set:e.setsOther,target:"$to"}),e.removes&&s.push({remove:"$subject"}),e.effects&&s.push(...e.effects.filter(u=>!(e.creates&&"set"in u&&!("create"in u)&&S(u.target)==="new"))),s}function ze(e,n,s){try{let r=L(e),a=ne(r);for(let u of a.unknownFunctions)s.push(h("unknown-function",n,`"${u}" is not a function the rule language knows`,"see docs/declaration-document.md#expression-language"));return r}catch(r){if(r instanceof te){s.push(h("expression",n,r.sentence+` (at character ${r.at+1})`));return}throw r}}function ye(e,n,s){try{return W(e)}catch(r){if(r instanceof Me||r instanceof te){s.push(h("template",n,(r instanceof te,r.sentence)));return}throw r}}function kn(e){let n=[],s=new Set(Object.keys(e.kinds)),r=He(e),a=e.acts??{},u=new Set(e.roles??[]);for(let[l,i]of Object.entries(e.kinds)){let o=`kinds.${l}`;for(let[d,y]of Object.entries(i.edges??{})){if(y.to!=="*")for(let p of y.to)s.has(p)||n.push(h("edge-target",`${o}.edges.${d}.to`,`"${p}" is not a kind this document declares`));i.fields[d]&&n.push(h("edge-field-clash",`${o}.edges.${d}`,`"${d}" is both a field and a relation of ${l}`,"rename one of them"))}i.lifecycle&&!i.fields[i.lifecycle.field]&&n.push(h("lifecycle-field",`${o}.lifecycle.field`,`${l} has no field "${i.lifecycle.field}"`));let c=d=>i.computed!==void 0&&Object.hasOwn(i.computed,d);for(let d of i.glance??[])!i.fields[d]&&!c(d)&&n.push(h("glance-field",`${o}.glance`,`a glance at ${l} is to say "${d}", and ${l} has no field or computed field called that`,`use one of: ${[...Object.keys(i.fields),...Object.keys(i.computed??{})].join(", ")}`));n.push(...Xe(l,i));for(let d of["label","describe"]){let y=i[d];if(!y)continue;let p=ye(y,`${o}.${d}`,n);for(let f of p??[])if(f.expr){for(let m of ne(f.expr).names)if(!i.fields[m]){if(c(m)){Ce(i,m)||n.push(h("template-field",`${o}.${d}`,`${l}'s ${m} is worked out from beyond the record, and a ${d} is said with no graph to read`,`show it in a view instead, or name a computed field worked out from ${l}'s own fields`));continue}n.push(h("template-field",`${o}.${d}`,`${l} has no field "${m}" for its ${d} to show`,d==="label"?"a label can only show the record's own fields and what they work out":void 0))}}}for(let[d,y]of Object.entries(i.fields)){y.default!==void 0&&y.type==="enum"&&!y.options?.includes(String(y.default))&&n.push(h("default-option",`${o}.fields.${d}.default`,`"${String(y.default)}" is not one of ${d}'s options`));let p=`${d}Repeat`;y.repeats&&(i.fields[p]||i.edges?.[p]||i.computed?.[p])&&n.push(h("repeat-clash",`${o}.fields.${d}.repeats`,`${l} already has "${p}", where how ${d} repeats is kept`))}}for(let[l,i]of Object.entries(a)){let o=`acts.${l}`;for(let p of ie(i.on))s.has(p)||n.push(h("act-kind",`${o}.on`,`"${p}" is not a kind this document declares`));let c=ie(i.on),d=Qe(i,e);if(i.creates&&i.on===void 0&&i.writes&&s.has(i.creates))for(let p of i.writes)e.kinds[i.creates].fields[p]||(e.kinds[i.creates].computed?.[p]!==void 0?n.push(h("computed-written",`${o}.writes`,`${i.creates}'s ${p} is worked out, not written: no act can set it`,"write the stored fields it is worked out from")):n.push(h("act-field",`${o}.writes`,`${i.creates} has no field "${p}"`)));d.length===0&&n.push(h("act-empty",o,`"${l}" does nothing`,"give it effects or a shorthand such as sets or creates"));let y=new Map;d.forEach((p,f)=>{let m=d.length-(i.effects?.length??0),v=i.effects&&f>=m?`${o}.effects.${f-m}`:o;if("create"in p){if(!s.has(p.create))n.push(h("act-kind",`${v}.create`,`"${p.create}" is not a kind this document declares`));else for(let b of Object.keys(p.set??{}))e.kinds[p.create].fields[b]||(e.kinds[p.create].computed?.[b]!==void 0?n.push(h("computed-written",`${v}.set.${b}`,`${p.create}'s ${b} is worked out, not written: no act can set it`,"set the stored fields it is worked out from")):n.push(h("act-field",`${v}.set.${b}`,`${p.create} has no field "${b}"`)));p.as&&y.set(p.as,p.create)}else if("connect"in p||"sever"in p){let b="connect"in p?p.connect:p.sever;r.has(b)||n.push(h("act-edge",`${v}.${"connect"in p?"connect":"sever"}`,`"${b}" is not a relation any kind declares`)),S(p.from)==="subject"&&c.length===0&&n.push(h("act-subject",`${o}.on`,`"${l}" acts on "$subject" but does not say which kinds it is "on"`))}else if("set"in p){let b=S(p.target??"$subject"),E=b==="subject"?c:y.has(b??"")?[y.get(b)]:[];b==="subject"&&c.length===0&&n.push(h("act-subject",`${o}.on`,`"${l}" changes "$subject" but does not say which kinds it is "on"`));for(let F of Object.keys(p.set))for(let q of E)!s.has(q)||e.kinds[q].fields[F]||(e.kinds[q].computed?.[F]!==void 0?n.push(h("computed-written",`${v}.set.${F}`,`${q}'s ${F} is worked out, not written: no act can set it`,"set the stored fields it is worked out from")):n.push(h("act-field",`${v}.set.${F}`,`${q} has no field "${F}"`)))}else"remove"in p&&S(p.remove)==="subject"&&c.length===0&&n.push(h("act-subject",`${o}.on`,`"${l}" removes "$subject" but does not say which kinds it is "on"`));("set"in p&&p.set?Object.values(p.set):[]).forEach(b=>{b&&typeof b=="object"&&!Array.isArray(b)&&"expr"in b&&ze(b.expr,`${v}.set`,n)})}),i.allowedWhen&&ze(i.allowedWhen,`${o}.allowedWhen`,n),i.refusal&&ye(i.refusal,`${o}.refusal`,n)}for(let[l,i]of Object.entries(e.rules??{})){let o=`rules.${l}`;i.over!=="graph"&&!s.has(i.over)&&n.push(h("rule-kind",`${o}.over`,`"${i.over}" is not a kind this document declares`));let c=i.over==="graph"?void 0:e.kinds[i.over];for(let d of["when","require"]){let y=i[d];if(!y)continue;let p=ze(y,`${o}.${d}`,n);if(!p)continue;let f=ne(p);for(let m of f.names)if(i.over==="graph")n.push(h("rule-name",`${o}.${d}`,`"${m}" means nothing in a rule over the whole graph`,`name a kind in "over", or use all('kind')`));else if(c&&!c.fields[m]&&!c.edges?.[m]&&c.computed?.[m]===void 0){let v=Object.keys(c.edges??{}).find(A=>A.includes("-")&&A.split("-").includes(m));n.push(h("rule-name",`${o}.${d}`,`${i.over} has no field or relation called "${m}"`,v?`"${v}" reads as a subtraction in a rule; rename the relation to one camelCase word, like "${v.replace(/-([a-z0-9])/g,(A,b)=>b.toUpperCase())}"`:void 0))}for(let m of f.edges)r.has(m)||n.push(h("rule-edge",`${o}.${d}`,`"${m}" is not a relation any kind declares`));for(let m of f.sweeps)s.has(m)?i.over!=="graph"&&n.push(Ee("rule-cost",`${o}.${d}`,`this rule looks at every ${m} for every ${i.over}, which grows slowly as the app grows`,"walk a relation with out()/in() instead of all() where you can")):n.push(h("rule-kind",`${o}.${d}`,`"${m}" is not a kind this document declares`))}i.says&&ye(i.says,`${o}.says`,n),(i.repairs??[]).forEach((d,y)=>{!a[d.act]&&!le(d.act)&&n.push(h("repair-act",`${o}.repairs.${y}.act`,`"${d.act}" is not an act this document declares`))})}let g=e.policy;return g&&(g.grants.forEach((l,i)=>{if(l.roles!=="*"&&u.size>0)for(let o of l.roles)u.has(o)||n.push(h("grant-role",`policy.grants.${i}.roles`,`"${o}" is not one of the document's roles`));if(l.mutations!=="*")for(let o of l.mutations)!a[o]&&!le(o)&&n.push(h("grant-act",`policy.grants.${i}.mutations`,`"${o}" is not an act this document declares`))}),(g.sees??[]).forEach((l,i)=>{for(let o of l.kinds)s.has(o)||n.push(h("sight-kind",`policy.sees.${i}.kinds`,`"${o}" is not a kind this document declares`));if(l.roles!=="*"&&u.size>0)for(let o of l.roles)u.has(o)||n.push(h("sight-role",`policy.sees.${i}.roles`,`"${o}" is not one of the document's roles`))})),n.push(...Pe(e)),n}function wn(e,n,s,r){let a=new Map,u=ie(e.on),g=new Map,l=new Map;(u.length>0||n.some(f=>"remove"in f&&S(f.remove)==="subject"||"from"in f&&(S(f.from)==="subject"||S(f.to)==="subject")||"set"in f&&!("create"in f)&&S(f.target??"$subject")==="subject"))&&a.set(de,{ref:u.length>0?u:"*",required:!0});let o=e.args??{},c=e.writes?.length===1,d=(f,m)=>m&&f.type===m.type&&f.min===void 0&&f.max===void 0&&f.step===void 0?{...f,...m.min===void 0?{}:{min:m.min},...m.max===void 0?{}:{max:m.max},...m.step===void 0?{}:{step:m.step}}:f,y=(f,m)=>m&&f.type===m.type&&f.format===void 0&&f.unit===void 0?{...d(f,m),...m.format?{format:m.format}:{},...m.unit?{unit:m.unit}:{}}:d(f,m),p=(f,m,v)=>{if(f===de||bn.has(f)||g.has(f)||a.has(f))return;let A=o[f]?y(o[f],v):void 0;a.set(f,A?{field:A,optional:!A.required,required:!!A.required}:m())};for(let f of n)if("create"in f){let m=s.kinds[f.create];for(let[v,A]of Object.entries(f.set??{})){let b=S(A),E=m?.fields[v];if(b&&E){let F=!!E.required&&E.default===void 0;p(b,()=>({field:E,optional:!F,required:F}),E)}}f.as&&g.set(f.as,f.create)}else if("connect"in f||"sever"in f){let m=r.get("connect"in f?f.connect:f.sever);for(let[v,A]of[["from",f.from],["to",f.to]]){let b=S(A);if(!b)continue;let E=v==="to"?m?.to??"*":m?.from??"*";E!=="*"&&!l.has(b)&&l.set(b,E),p(b,()=>({ref:E,required:!0}))}}else if("set"in f){let m=S(f.target??"$subject"),v=m==="subject"?u[0]:g.get(m??"")??l.get(m??"")?.[0];m&&m!=="subject"&&!g.has(m)&&p(m,()=>({ref:"*",required:!0}));for(let[A,b]of Object.entries(f.set)){let E=S(b);if(!E)continue;let F=v?s.kinds[v]?.fields[A]:void 0;p(E,()=>F?{field:F,optional:!c,required:c}:{any:!0,required:!1},F)}}else if("remove"in f){let m=S(f.remove);m&&p(m,()=>({ref:"*",required:!0}))}for(let[f,m]of Object.entries(o))a.has(f)||a.set(f,{field:m,optional:!m.required,required:!!m.required});return a}function Qn(e,n={}){let s=$n(e);if(!s.document||ce(s.findings))return{ok:!1,findings:s.findings};let r=s.document,a=[...s.findings];n.previous&&a.push(...jn(r,n.previous));let u=vn(r,a);return ce(u.findings)?{ok:!1,findings:u.findings}:Re(u,n)}function re(e,n){return e.map(s=>{let r=!s.format&&s.expr?.t==="ident"?n?.[s.expr.name]?.format:void 0;return r==="money"||r==="percent"?{...s,format:r}:s})}function vn(e,n){let s=He(e),r={};for(let[o,c]of Object.entries(e.kinds)){let d=De(c),y=c.label??(d?`{${d}}`:void 0),p=X(c),f=p?Ye(e,o,[...p]):[];r[o]={...y?{label:re(W(y),c.fields)}:{},...c.describe?{describe:re(W(c.describe),c.fields)}:{},...p?{computed:[...p]}:{},...f.length>0?{durations:f}:{}}}let a={};for(let[o,c]of Object.entries(e.acts??{})){let d=Qe(c,e),y=wn(c,d,e,s),p=c.destructive??d.some(z=>"remove"in z||"sever"in z||"replace"in z),f=[...new Set(d.flatMap(z=>"create"in z?[z.create]:[]))],m=[...new Set(d.flatMap(z=>"connect"in z?[z.connect]:[]))],v=[...new Set(d.flatMap(z=>"sever"in z?[z.sever]:"replace"in z?z.replace:[]))],A=[...new Set(d.flatMap(z=>"set"in z&&!("create"in z)&&S(z.target??"$subject")==="subject"?Object.keys(z.set):[]))],b=new Map;for(let z of d){if(!("connect"in z)&&!("sever"in z))continue;let j=s.get("connect"in z?z.connect:z.sever);for(let[T,en]of[["from",z.from],["to",z.to]]){let Q=S(en),ae=T==="to"?j?.to:j?.from;Q&&Q!=="subject"&&ae&&ae!=="*"&&b.set(Q,[...new Set([...b.get(Q)??[],...ae])])}}let E={};for(let z of d){if(!("set"in z)||"create"in z)continue;let j=S(z.target??"$subject");for(let T of j&&j!=="subject"&&b.get(j)||[])E[T]=[...new Set([...E[T]??[],...Object.keys(z.set)])]}let F={};for(let z of d)if(!(!("set"in z)||"create"in z||S(z.target??"$subject")!=="subject"))for(let[j,T]of Object.entries(z.set??{}))typeof T=="string"&&S(T)===void 0||typeof T=="number"||typeof T=="boolean"?F[j]=typeof T=="string"&&T.startsWith("$$")?T.slice(1):T:delete F[j];let q=f.length===0&&d.every(z=>!("set"in z)||!z.set||Object.values(z.set).every(j=>!(j&&typeof j=="object"&&!Array.isArray(j)&&"expr"in j))),be=new Map;for(let z of d)if(!(!("set"in z)||!z.set))for(let j of Object.values(z.set))j&&typeof j=="object"&&!Array.isArray(j)&&"expr"in j&&be.set(j.expr,L(j.expr));a[o]={title:c.title??o.replace(/-/g," "),effects:d,args:[...y],...c.allowedWhen?{guard:L(c.allowedWhen)}:{},...c.refusal?{refusal:re(W(c.refusal),e.kinds[[c.on??[]].flat()[0]??""]?.fields)}:{},exprs:[...be],destructive:p,idempotent:q,creates:f,connects:m,severs:v,writes:A,writesOther:E,sets:F}}let u={};for(let[o,c]of Object.entries(e.rules??{}))u[o]={title:c.title??o.replace(/-/g," "),require:L(c.require),...c.when?{when:L(c.when)}:{},...c.says?{says:re(W(c.says),e.kinds[c.over]?.fields)}:{}};let g=Ae(e,n),l=Te(e),i=Ke(e);return{format:Fe,document:e,findings:n,kinds:r,...e.computed?{facts:[...X(e)??[]]}:{},edges:[...s].map(([o,{from:c,to:d,cardinality:y}])=>[o,{from:c,to:d,cardinality:y}]),acts:a,rules:u,brand:g,...Object.keys(l).length>0?{viewSpecs:l}:{},...i?{home:i}:{}}}function et(e,n){let s=e.split(/[\s:·]/).find(r=>r.length>0)??e;return n.kinds[s]?`kinds.${s}`:n.acts?.[s]?`acts.${s}`:n.rules?.[s]?`rules.${s}`:e}function nt(e,n,s){let r=/^defineNode\("([^"]+)"\)/.exec(n)?.[1],a=r?s.kinds[r]:void 0;if(!r||!a)return e;let u=Object.keys(a.fields).filter(g=>g!=="label").slice(0,3);return{...e,path:`kinds.${r}.glance`,fix:`Say which: "glance": [${u.map(g=>`"${g}"`).join(", ")}] on kinds.${r} \u2014 the facts a person compares one by, at a glance.`}}function jn(e,n){let s=[],r=new Set(Object.values(n.kinds).flatMap(a=>Object.keys(a.edges??{})));for(let[a,u]of Object.entries(e.kinds)){let g=u.renamedFrom;g&&!n.kinds[g]&&s.push(h("renamed-from-nothing",`kinds.${a}.renamedFrom`,`${a} says it was ${g}, and the previous version has no kind called ${g}`,"name the kind it was, or drop renamedFrom"));let l=n.kinds[g??a];for(let[i,o]of Object.entries(u.fields)){let c=o.renamedFrom;c&&!l?.fields[c]&&s.push(h("renamed-from-nothing",`kinds.${a}.fields.${i}.renamedFrom`,`${i} says it was ${c}, and the previous ${g??a} has no field called ${c}`,"name the field it was, or drop renamedFrom"))}for(let[i,o]of Object.entries(u.edges??{})){let c=o.renamedFrom;c&&!r.has(c)&&s.push(h("renamed-from-nothing",`kinds.${a}.edges.${i}.renamedFrom`,`${i} says it was ${c}, and the previous version has no relation called ${c}`,"name the relation it was, or drop renamedFrom"))}}return s}export{$n as a,Hn as b,Qe as c,Qn as d,et as e,nt as f};
@@ -0,0 +1,25 @@
1
+ import{H as on,Hb as sn,Sb as ln,Vb as un,ec as dn,ob as an,sc as cn,wa as rn,xc as ke,yc as Je}from"./chunk.HLLWKSZB.js";import{a as Ae,b as H}from"./chunk.AJZBJBMO.js";var Mn=Ae(w=>{"use strict";var rt=Symbol.for("react.transitional.element"),Mo=Symbol.for("react.portal"),Oo=Symbol.for("react.fragment"),Vo=Symbol.for("react.strict_mode"),_o=Symbol.for("react.profiler"),Co=Symbol.for("react.consumer"),Io=Symbol.for("react.context"),Lo=Symbol.for("react.forward_ref"),Ho=Symbol.for("react.suspense"),No=Symbol.for("react.memo"),En=Symbol.for("react.lazy"),Do=Symbol.for("react.activity"),Sn=Symbol.iterator;function jo(e){return e===null||typeof e!="object"?null:(e=Sn&&e[Sn]||e["@@iterator"],typeof e=="function"?e:null)}var Rn={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Pn=Object.assign,An={};function se(e,t,n){this.props=e,this.context=t,this.refs=An,this.updater=n||Rn}se.prototype.isReactComponent={};se.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};se.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function kn(){}kn.prototype=se.prototype;function it(e,t,n){this.props=e,this.context=t,this.refs=An,this.updater=n||Rn}var at=it.prototype=new kn;at.constructor=it;Pn(at,se.prototype);at.isPureReactComponent=!0;var vn=Array.isArray;function ot(){}var k={H:null,A:null,T:null,S:null},Tn=Object.prototype.hasOwnProperty;function st(e,t,n){var o=n.ref;return{$$typeof:rt,type:e,key:t,ref:o!==void 0?o:null,props:n}}function Go(e,t){return st(e.type,t,e.props)}function lt(e){return typeof e=="object"&&e!==null&&e.$$typeof===rt}function Wo(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(n){return t[n]})}var bn=/\/+/g;function nt(e,t){return typeof e=="object"&&e!==null&&e.key!=null?Wo(""+e.key):t.toString(36)}function Fo(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(ot,ot):(e.status="pending",e.then(function(t){e.status==="pending"&&(e.status="fulfilled",e.value=t)},function(t){e.status==="pending"&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}function ae(e,t,n,o,r){var i=typeof e;(i==="undefined"||i==="boolean")&&(e=null);var a=!1;if(e===null)a=!0;else switch(i){case"bigint":case"string":case"number":a=!0;break;case"object":switch(e.$$typeof){case rt:case Mo:a=!0;break;case En:return a=e._init,ae(a(e._payload),t,n,o,r)}}if(a)return r=r(e),a=o===""?"."+nt(e,0):o,vn(r)?(n="",a!=null&&(n=a.replace(bn,"$&/")+"/"),ae(r,t,n,"",function(c){return c})):r!=null&&(lt(r)&&(r=Go(r,n+(r.key==null||e&&e.key===r.key?"":(""+r.key).replace(bn,"$&/")+"/")+a)),t.push(r)),1;a=0;var d=o===""?".":o+":";if(vn(e))for(var l=0;l<e.length;l++)o=e[l],i=d+nt(o,l),a+=ae(o,t,n,i,r);else if(l=jo(e),typeof l=="function")for(e=l.call(e),l=0;!(o=e.next()).done;)o=o.value,i=d+nt(o,l++),a+=ae(o,t,n,i,r);else if(i==="object"){if(typeof e.then=="function")return ae(Fo(e),t,n,o,r);throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return a}function He(e,t,n){if(e==null)return e;var o=[],r=0;return ae(e,o,"","",function(i){return t.call(n,i,r++)}),o}function Ko(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(n){(e._status===0||e._status===-1)&&(e._status=1,e._result=n)},function(n){(e._status===0||e._status===-1)&&(e._status=2,e._result=n)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var xn=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},Bo={map:He,forEach:function(e,t,n){He(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return He(e,function(){t++}),t},toArray:function(e){return He(e,function(t){return t})||[]},only:function(e){if(!lt(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};w.Activity=Do;w.Children=Bo;w.Component=se;w.Fragment=Oo;w.Profiler=_o;w.PureComponent=it;w.StrictMode=Vo;w.Suspense=Ho;w.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=k;w.__COMPILER_RUNTIME={__proto__:null,c:function(e){return k.H.useMemoCache(e)}};w.cache=function(e){return function(){return e.apply(null,arguments)}};w.cacheSignal=function(){return null};w.cloneElement=function(e,t,n){if(e==null)throw Error("The argument must be a React element, but you passed "+e+".");var o=Pn({},e.props),r=e.key;if(t!=null)for(i in t.key!==void 0&&(r=""+t.key),t)!Tn.call(t,i)||i==="key"||i==="__self"||i==="__source"||i==="ref"&&t.ref===void 0||(o[i]=t[i]);var i=arguments.length-2;if(i===1)o.children=n;else if(1<i){for(var a=Array(i),d=0;d<i;d++)a[d]=arguments[d+2];o.children=a}return st(e.type,r,o)};w.createContext=function(e){return e={$$typeof:Io,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:Co,_context:e},e};w.createElement=function(e,t,n){var o,r={},i=null;if(t!=null)for(o in t.key!==void 0&&(i=""+t.key),t)Tn.call(t,o)&&o!=="key"&&o!=="__self"&&o!=="__source"&&(r[o]=t[o]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var d=Array(a),l=0;l<a;l++)d[l]=arguments[l+2];r.children=d}if(e&&e.defaultProps)for(o in a=e.defaultProps,a)r[o]===void 0&&(r[o]=a[o]);return st(e,i,r)};w.createRef=function(){return{current:null}};w.forwardRef=function(e){return{$$typeof:Lo,render:e}};w.isValidElement=lt;w.lazy=function(e){return{$$typeof:En,_payload:{_status:-1,_result:e},_init:Ko}};w.memo=function(e,t){return{$$typeof:No,type:e,compare:t===void 0?null:t}};w.startTransition=function(e){var t=k.T,n={};k.T=n;try{var o=e(),r=k.S;r!==null&&r(n,o),typeof o=="object"&&o!==null&&typeof o.then=="function"&&o.then(ot,xn)}catch(i){xn(i)}finally{t!==null&&n.types!==null&&(t.types=n.types),k.T=t}};w.unstable_useCacheRefresh=function(){return k.H.useCacheRefresh()};w.use=function(e){return k.H.use(e)};w.useActionState=function(e,t,n){return k.H.useActionState(e,t,n)};w.useCallback=function(e,t){return k.H.useCallback(e,t)};w.useContext=function(e){return k.H.useContext(e)};w.useDebugValue=function(){};w.useDeferredValue=function(e,t){return k.H.useDeferredValue(e,t)};w.useEffect=function(e,t){return k.H.useEffect(e,t)};w.useEffectEvent=function(e){return k.H.useEffectEvent(e)};w.useId=function(){return k.H.useId()};w.useImperativeHandle=function(e,t,n){return k.H.useImperativeHandle(e,t,n)};w.useInsertionEffect=function(e,t){return k.H.useInsertionEffect(e,t)};w.useLayoutEffect=function(e,t){return k.H.useLayoutEffect(e,t)};w.useMemo=function(e,t){return k.H.useMemo(e,t)};w.useOptimistic=function(e,t){return k.H.useOptimistic(e,t)};w.useReducer=function(e,t,n){return k.H.useReducer(e,t,n)};w.useRef=function(e){return k.H.useRef(e)};w.useState=function(e){return k.H.useState(e)};w.useSyncExternalStore=function(e,t,n){return k.H.useSyncExternalStore(e,t,n)};w.useTransition=function(){return k.H.useTransition()};w.version="19.2.8"});var G=Ae((ai,On)=>{"use strict";On.exports=Mn()});var In=Ae(je=>{"use strict";var Jo=Symbol.for("react.transitional.element"),Zo=Symbol.for("react.fragment");function Cn(e,t,n){var o=null;if(n!==void 0&&(o=""+n),t.key!==void 0&&(o=""+t.key),"key"in t){n={};for(var r in t)r!=="key"&&(n[r]=t[r])}else n=t;return t=n.ref,{$$typeof:Jo,type:e,key:o,ref:t!==void 0?t:null,props:n}}je.Fragment=Zo;je.jsx=Cn;je.jsxs=Cn});var xe=Ae((ci,Ln)=>{"use strict";Ln.exports=In()});var oe={focusId:null,relation:null,expanded:[],pins:{}},Te=e=>{let t=Number(e);return Number.isFinite(t)?t:null};function Y(e){let t=new URLSearchParams;e.focusId&&t.set("focus",e.focusId),e.relation&&t.set("relation",e.relation),e.overview&&t.set("overview","1"),e.zoom&&t.set("zoom","1"),e.past&&t.set("past","1"),e.shown&&e.shown.length>0&&t.set("show",[...e.shown].sort().join(",")),e.selection!==void 0&&e.selection.length>0&&t.set("sel",[...e.selection].sort().join(",")),e.expanded.length>0&&t.set("expand",[...e.expanded].sort().join(","));for(let o of Object.keys(e.pins).sort()){let r=e.pins[o];t.set(`pin.${o}`,`${Me(r.x)},${Me(r.y)}`)}e.pan&&(e.pan.x!==0||e.pan.y!==0)&&t.set("pan",`${Me(e.pan.x)},${Me(e.pan.y)}`);for(let o of Object.keys(e.within??{}).sort()){let r=e.within[o];r.length>0&&t.set(`in.${o}`,r)}e.q&&e.q.trim().length>0&&t.set("q",e.q);let n=t.toString();return n?`#${n}`:"#"}function Ao(e){return e&&e.startsWith("agg:")?`aggregate:${e.slice(4)}`:e}function Oe(e){let t=e.includes("#")?e.slice(e.indexOf("#")+1):e,n=new URLSearchParams(t),o=Object.create(null);for(let[S,p]of n){if(!S.startsWith("pin."))continue;let[g,b]=p.split(","),T=g===void 0?null:Te(g),y=b===void 0?null:Te(b);T===null||y===null||(o[S.slice(4)]={x:T,y})}let r=Object.create(null);for(let[S,p]of n)!S.startsWith("in.")||p.length===0||(r[S.slice(3)]=p);let i=n.get("view");i&&i.length>0&&r.view===void 0&&(r.view=i);let a=n.get("pan")?.split(",")??[],d=a[0]===void 0?null:Te(a[0]),l=a[1]===void 0?null:Te(a[1]),c=(n.get("sel")??"").split(",").filter(S=>S.length>0).sort(),f=n.get("overview")==="1";return{...c.length>0?{selection:c}:{},...f?{overview:!0}:{},...n.get("zoom")==="1"?{zoom:!0}:{},...n.get("past")==="1"?{past:!0}:{},...n.get("show")?{shown:[...new Set(n.get("show").split(",").filter(Boolean))].sort()}:{},...d!==null&&l!==null?{pan:{x:d,y:l}}:{},...Object.keys(r).length>0?{within:r}:{},...n.get("q")?.trim()?{q:n.get("q")}:{},focusId:Ao(n.get("focus")),relation:n.get("relation"),expanded:(n.get("expand")??"").split(",").filter(S=>S.length>0&&(f||!S.startsWith("kind:"))).sort(),pins:o}}function Yr(e){let t=Oe(e);return Y(t)==="#"?{...t,overview:!0}:t}function Xr(e){let t=Y(e);return t==="#overview=1"?"":t}function Me(e){return Math.round(e*100)/100}function pn(e,t){return Y(e)===Y(t)}var fn="edge:";function yn(e){if(!e.startsWith(fn))return null;let t=e.slice(fn.length).split(":");if(t.length!==3)return null;let[n,o,r]=t;if(!n||!o||!r)return null;try{return{kind:decodeURIComponent(n),from:decodeURIComponent(o),to:decodeURIComponent(r)}}catch{return null}}function Ze(e){let{pan:t,...n}=e;return{...n,pins:{}}}function X(e,t){if(t===e.focusId)return{...e,focusId:t};let n=Ze(e);return{...n.within?.q!==void 0?Ve(n,"q",null):n,focusId:t}}function mn(e,t){return{...e,relation:t}}function Ve(e,t,n){let o={...e.within??{}};if(n===null?delete o[t]:o[t]=n,Object.keys(o).length===0){let{within:r,...i}=e;return i}return{...e,within:o}}function Qe(e,t){if(t!==e.overview&&(e=Ze(e)),!t){let n=e.expanded.filter(o=>!o.startsWith("kind:"));return{...e,overview:!1,expanded:n}}return{...e,overview:t}}function _e(e,t){if(t.length===0){let{selection:n,...o}=e;return o}return{...e,selection:[...t]}}function be(e,t){if(t!==(e.zoom===!0)&&(e=Ze(e)),!t){let{zoom:n,...o}=e;return o}return{...e,zoom:!0}}function Ce(e,t){let n=new Set(e.expanded);return n.has(t)?n.delete(t):n.add(t),{...e,expanded:[...n].sort()}}var Le="aggregate:",Ie="kind:";function et(e){return`${Ie}${e}`}function re(e){return e.startsWith(Ie)?e.slice(Ie.length):null}var Qr="kinds:beyond";function ko(e){let t=re(e);return t?[t]:Q(e)}function ie(...e){return`${Le}${[...e].sort().join("+")}`}function gn(e){return e.startsWith(Le)}function Q(e){return!gn(e)||e.includes("|")?[]:e.slice(Le.length).split("+").filter(Boolean)}function hn(e,t,n={}){let o=re(t);if(o!==null&&e.overview&&n.ownPicture!==!0)return Ce(e,t);let r=o!==null?ie(o):t;if(e.zoom&&e.focusId===r&&!(o!==null&&n.carry))return be(e,!1);if(o!==null&&n.carry){let i=Qe({...X(e,r),relation:null},!1);return Ve(be(i,!0),"q",n.carry)}return be({...X(e,r),relation:null},!0)}function To(e,t,n){return Ve(Qe(X(e,ie(t)),!1),"view",n)}function ei(e,t){return e.id<t.id?-1:e.id>t.id?1:0}var wn="aggregate:";function tt(e){return e.startsWith(wn)&&e.includes("|")}var ut=H(G(),1),$o={turns:[],outcomes:new Map,busy:!1,open:!1,side:"left",pending:null,drawn:0,draft:null,draftNote:null},Vn=e=>`graview:seat:${e}`;function zo(e){if(!e)return{};try{let t=sessionStorage.getItem(e);if(!t)return{};let n=JSON.parse(t);return{...Array.isArray(n.turns)?{turns:n.turns}:{},...Array.isArray(n.outcomes)?{outcomes:new Map(n.outcomes)}:{},...typeof n.open=="boolean"?{open:n.open}:{},...n.side==="left"||n.side==="right"?{side:n.side}:{},...n.draft?.drawn?{draft:n.draft}:{}}}catch{return{}}}function qo(e,t){if(e)try{sessionStorage.setItem(e,JSON.stringify({turns:t.turns.slice(-40),outcomes:[...t.outcomes],open:t.open,side:t.side,draft:t.draft}))}catch{}}function dt(e){let t=e===null?null:Vn(e),n={...$o,...zo(t)},o=new Set,r=(i,a=!0)=>{n=i,a&&qo(t,n);for(let d of[...o])d()};return{get:()=>n,subscribe(i){return o.add(i),()=>void o.delete(i)},setTurns:i=>r({...n,turns:i(n.turns)}),settle:(i,a)=>r({...n,outcomes:new Map(n.outcomes).set(i,a)}),setBusy:i=>r({...n,busy:i},!1),setOpen:i=>{n.open!==i&&r({...n,open:i})},setSide:i=>{n.side!==i&&r({...n,side:i})},ask:i=>r({...n,open:!0,pending:i.trim()||null}),takePending(){let i=n.pending;return i!==null&&r({...n,pending:null},!1),i},drawn(){return r({...n,drawn:n.drawn+1},!1),()=>r({...n,drawn:Math.max(0,n.drawn-1)},!1)},setDraft:(i,a=null)=>r({...n,draft:i,draftNote:a})}}function Uo(e){let t=()=>e.get().drawn>0;return(0,ut.useSyncExternalStore)(e.subscribe,t,t)}function Yo(e){return(0,ut.useSyncExternalStore)(e.subscribe,e.get,e.get)}function _n(e){return e?.closest?.("[data-graview-pick]")?.getAttribute("data-graview-pick")??null}var Ne=H(G(),1),De=(0,Ne.createContext)(void 0),Xo=()=>(0,Ne.useContext)(De);var ct={};var Qo="I can answer about what's in this app. Open questions need AI, which isn't on here.",er="Answered with AI";var Hn=e=>`graview:setting:${e}`;function Nn(){return localStorage}function Dn(e,t){try{let n=(t??Nn()).getItem(Hn(e.name));if(n!==null&&e.options.some(o=>o.value===n))return n}catch{}return e.initial}function jn(e,t,n){try{(n??Nn()).setItem(Hn(e.name),t)}catch{}}function Gn(e,t){if(typeof document>"u")return;let n=document.documentElement;if(e.honored==="root-font-size"){n.style.fontSize=t===e.initial?"":t;return}let o=`graview${e.name.replace(/-([a-z0-9])/g,(r,i)=>i.toUpperCase()).replace(/^[a-z]/,r=>r.toUpperCase())}`;t===e.initial?delete n.dataset[o]:n.dataset[o]=t}var _=H(G(),1);function ft(e){return ke(e)}var tr=12,nr=4;function or(e,t,n){let o=ft(t);return e.get(o)??{participant:o,who:t.id??t.kind,at:null,mode:"docked",since:n,trail:[]}}var Ge=(e,t)=>t===null||e[e.length-1]===t?e:[...e,t].slice(-tr);function Wn(e,t){let n=e.filter(r=>r.length>0);if(n.length===0)return null;if(n.length<=nr)return n[0];let o=new Set(n.map(r=>t(r)).filter(r=>r!==void 0));return o.size===1?et([...o][0]):n[0]}function pt(e,t,n){let o=new Map(e);if(t.type==="rest"){for(let[a,d]of e)d.mode!=="asking"&&d.mode!=="docked"&&t.at-d.since>=t.holdMs&&o.set(a,{...d,mode:"docked",at:null,trail:[],say:void 0,confidence:void 0});return o}if(t.author.kind!=="agent")return o;let r=or(e,t.author,t.at),i=a=>o.set(r.participant,{...r,...a,since:t.at});switch(t.type){case"read":{let a=Wn(t.ids,n);return i({at:a,mode:"reading",trail:Ge(r.trail,a)}),o}case"about-to-write":case"write":{let a=Wn(t.ids,n);return i({at:a,mode:"writing",trail:Ge(r.trail,a),say:void 0,confidence:void 0}),o}case"refused":return i({at:t.where,mode:"refused",say:t.say,confidence:void 0,trail:Ge(r.trail,t.where)}),o;case"asking":return i({at:t.where??r.at,mode:"asking",say:t.say,...t.confidence!==void 0?{confidence:t.confidence}:{confidence:void 0},trail:Ge(r.trail,t.where)}),o;case"said":return i({say:t.say,...t.confidence!==void 0?{confidence:t.confidence}:{confidence:void 0},...t.caption?{caption:t.caption}:{}}),o;case"over":return i({over:t.over}),o;case"home":return i({at:null,mode:"docked",trail:[],say:void 0,confidence:void 0,over:null}),o;default:return o}}var Fn="graview:session";function Kn(e){let t=()=>typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID().slice(0,8):Math.random().toString(36).slice(2,10);try{let n=e??sessionStorage,o=n.getItem(Fn);if(o)return o;let r=t();return n.setItem(Fn,r),r}catch{return t()}}var yt={name:"share-where",title:"Where you are",description:"Whether the others here see which stop you are on.",honored:"root-attribute",options:[{value:"shared",label:"Shown"},{value:"private",label:"Hidden"}],initial:"shared"},mt={name:"share-over",title:"What you point at",description:"Whether the others see the thing under your pointer, outlined in your color.",honored:"root-attribute",options:[{value:"private",label:"Kept to yourself"},{value:"shared",label:"Outlined for others"}],initial:"private"},Bn=[yt,mt],ir=800;function $n(e){let{channel:t,store:n,view:o,principal:r,session:i,robots:a,seatWho:d,settingValues:l,setView:c,ttlMs:f=1e4,people:S,seats:p}=e,[g,b]=(0,_.useState)(()=>new Map),[T,y]=(0,_.useState)(null),[v,h]=(0,_.useState)(null),[E,M]=(0,_.useState)(null),C=typeof r.id=="string"&&r.id.length>0,O=C&&(l[yt.name]??yt.initial)==="shared",W=O&&(l[mt.name]??mt.initial)==="shared",I=ft({kind:r.kind,...r.id?{id:r.id}:{},session:i}),D=C?rn(r,{graph:n.graph,schema:n.schema,...p?{seats:p}:{},...S?{people:S}:{}}):"",V=d?a.get(`agent:${d}:${i}`):void 0,x=(0,_.useMemo)(()=>!t||!O?null:{participant:I,kind:r.kind,name:D,...r.onBehalfOf?.id?{onBehalfOf:r.onBehalfOf.id,...r.onBehalfOf.name?{onBehalfOfName:r.onBehalfOf.name}:{}}:{},hue:an(r.id??"nobody"),stop:E??Y(o),...W?{over:T}:{},...V?{robot:{at:V.at,mode:V.mode}}:{},at:new Date().toISOString()},[t,O,W,I,D,r.id,r.kind,r.onBehalfOf?.id,r.onBehalfOf?.name,o,E,T,V?.at,V?.mode]);(0,_.useEffect)(()=>{if(!t||!x)return;t.here(x);let R=setInterval(()=>t.here({...x,at:new Date().toISOString()}),ir);return()=>clearInterval(R)},[t,x]),(0,_.useEffect)(()=>t?t.onWho(j=>b(Je(new Map,j,Date.now(),f))):void 0,[t,f]);let K=g.size>0;(0,_.useEffect)(()=>{if(!K)return;let R=setInterval(()=>{b(j=>{let ee=Je(j,[],Date.now(),f);return ee.size===j.size?j:ee})},Math.max(250,Math.min(1e3,f/4)));return()=>clearInterval(R)},[K,f]),(0,_.useEffect)(()=>{if(!t||typeof window>"u")return;let R=()=>t.leave();return window.addEventListener("pagehide",R),()=>window.removeEventListener("pagehide",R)},[t]),(0,_.useEffect)(()=>{if(!W||typeof document>"u")return;let R=null,j=ee=>{let te=_n(ee.target);te!==R&&(R=te,y(te))};return document.addEventListener("pointermove",j,{passive:!0}),()=>document.removeEventListener("pointermove",j)},[W]);let Z=(0,_.useRef)(null),z=v?g.get(v)??null:null,pe=(0,_.useCallback)(R=>{Z.current=null,h(R)},[]);return(0,_.useEffect)(()=>{if(v){if(!z){h(null);return}z.stop!==Z.current?.stop&&(Z.current={stop:z.stop,at:Date.now()},c(Oe(z.stop)))}},[v,z,c]),(0,_.useEffect)(()=>{let R=Z.current;!v||R===null||Date.now()-R.at<400||pn(o,Oe(R.stop))||h(null)},[o,v]),(0,_.useEffect)(()=>{if(!v||typeof document>"u")return;let R=j=>{j.key==="Escape"&&h(null)};return document.addEventListener("keydown",R),()=>document.removeEventListener("keydown",R)},[v]),(0,_.useMemo)(()=>({who:g,sharing:x?{participant:I,name:D}:null,following:z,follow:pe,sayWhere:M}),[g,x,I,D,z,pe])}var B=H(G(),1);function zn(e){return ke(e.author)}function ar(e,t){return e.length>1?"co-edited":t==="rule"?"rule":t==="agent"?"autonomous":"directed"}function qn(e,t,n,o,r){let i=new Map;for(let[l,c]of e)o-c.at<r&&i.set(l,c);let a=new Set(n.flatMap(l=>l.nodeIds)),d=(l,c,f)=>{let S=i.get(l),p=S?.participants.includes(zn(c))?S.participants:[...S?.participants??[],zn(c)];i.set(l,{at:o,manner:ar(p,c.author.kind),intent:c.intent,wrote:(S?.wrote??!1)||(f.wrote??!1),read:(S?.read??!1)||(f.read??!1),broke:(S?.broke??!1)||a.has(l),participants:p})};for(let l of t){for(let c of l.writes)d(c,l,{wrote:!0});for(let c of l.reads)l.writes.includes(c)||d(c,l,{read:!0})}for(let l of n)for(let c of l.nodeIds){let f=i.get(c);i.set(c,{at:o,manner:f?.manner??"rule",intent:f?.intent??l.message,wrote:f?.wrote??!1,read:f?.read??!1,broke:!0,participants:f?.participants??["rule::"]})}return i}var sr=2600;function Un(e,t=sr){let[n,o]=(0,B.useState)(()=>new Map),r=(0,B.useRef)(n);r.current=n;let i=(0,B.useRef)(null),a=(0,B.useCallback)(l=>{r.current=l,o(l),i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{r.current=new Map,o(new Map)},t)},[t]);(0,B.useEffect)(()=>{let l=e.violations(),c=e.subscribe((f,S)=>{let p=e.violations(),g=un(e.allInvariants(),l,p).introduces;l=p,a(qn(r.current,S,g.map(b=>({nodeIds:b.nodeIds,message:b.message})),Date.now(),t))});return()=>{c(),i.current&&clearTimeout(i.current)}},[e,t,a]);let d=(0,B.useCallback)(l=>{l.reads.length!==0&&a(qn(r.current,[lr(l)],[],Date.now(),t))},[t,a]);return{activity:n,noteAttention:d}}function lr(e){return{id:`attention:${e.intent}`,seq:-1,batch:"attention",author:e.author,intent:e.intent,mutation:null,primitives:[],inverse:[],reads:e.reads,writes:[],at:new Date().toISOString()}}var s=H(G(),1);function Yn(){let e=null,t=new Set,n=new Set,o=r=>{for(let i of n)i(r)};return{subscribe(r){return t.add(r),t.size===1&&o(!0),()=>{t.delete(r),t.size===0&&(e=null,o(!1))}},snapshot:()=>e,set(r){if(!(e===r||e&&r&&e.x===r.x&&e.y===r.y)){e=r;for(let i of t)i()}},get listeners(){return t.size},onActive(r){return n.add(r),()=>void n.delete(r)}}}function Xn(){let e=!1,t=new Set;return{moving:()=>e,set(n){if(n!==e){e=n;for(let o of t)o()}},subscribe(n){return t.add(n),()=>t.delete(n)}}}var le=H(xe(),1),We=(0,s.createContext)(null),eo=(0,s.createContext)("scene");function ur({mode:e,children:t}){return(0,le.jsx)(eo.Provider,{value:e,children:t})}function dr(){return(0,s.useContext)(eo)}var to={kind:"human"},cr=[],fr=[],pr=[],gt=[];function no(e,t){let n=(0,s.useId)();(0,s.useEffect)(()=>{if(!globalThis.__graviewWatch)return;let o=t??to,r=()=>ln(e,o,n);r();let i,a=e.subscribe(()=>{clearTimeout(i),i=setTimeout(r,250)});return()=>{clearTimeout(i),a(),globalThis.__graviewWatch?.unseen?.({words:[],from:n,gone:!0})}},[e,t,n])}function yr({store:e,views:t,initialView:n,scheme:o="dark",initialSelection:r,principal:i,seats:a=cr,onSeat:d,people:l=fr,memory:c,presenceTtlMs:f,app:S,settings:p=S?.settings??pr,presence:g,brand:b,locale:T,onKeepLens:y,providers:v,ai:h=ct,files:E,resolveApp:M,view:C,onViewChange:O,children:W}){let[I,D]=(0,s.useState)(null),V=I??i??a[0]?.principal??to,x=(0,s.useMemo)(()=>e.seenBy(V),[e,V]);no(e,V);let[K]=(0,s.useState)(()=>Kn(c)),[Z,z]=(0,s.useState)(!1),pe=(0,s.useCallback)(()=>z(!0),[]),R=(0,s.useMemo)(()=>g?[...p,...Bn]:p,[p,g]),[j]=(0,s.useState)(()=>n??vt(t,e.schema)),[ee,te]=(0,s.useState)(()=>_e(j??oe,r??j?.selection??[])),ye=(0,s.useRef)(j??oe).current,[Ot,ho]=(0,s.useState)(null),[Vt,wo]=(0,s.useState)(null),Re=(0,s.useContext)(We),[_t]=(0,s.useState)(()=>Re?.seatTalk??dt(b?.name??e.schema.kinds.join(","))),qe=y??Re?.onKeepLens,Ue=S??Re?.app,Pe=T??Re?.locale,So=b?.locale??Ue?.brand?.locale;on({reader:Pe,app:So});let Ct=(0,s.useRef)(null),It=(0,s.useCallback)(u=>{Ct.current=u},[]),Lt=(0,s.useCallback)(u=>Ct.current?.whereIs(u)??null,[]),[Ht]=(0,s.useState)(()=>Yn()),[Nt]=(0,s.useState)(()=>Xn()),[Ye,vo]=(0,s.useState)(null),[me,Dt]=(0,s.useState)(()=>new Map),ge=(0,s.useRef)(me);ge.current=me;let he=(0,s.useRef)(null),Xe=(0,s.useCallback)(u=>x.graph.getNode(u)?.kind,[x]),U=(0,s.useCallback)(u=>{let m=pt(ge.current,u,Xe);ge.current=m,Dt(m),he.current&&clearTimeout(he.current),[...m.values()].some(A=>A.mode!=="docked"&&A.mode!=="asking")&&(he.current=setTimeout(()=>{let A=pt(ge.current,{type:"rest",at:Date.now(),holdMs:St},Xe);ge.current=A,Dt(A)},St+20))},[Xe]),jt=(0,s.useCallback)(u=>U({...u,at:u.at??Date.now()}),[U]),Gt=(0,s.useCallback)(u=>{vo(u),u&&U({type:"home",author:{kind:"agent",id:u,session:K},at:Date.now()})},[U,K]);(0,s.useEffect)(()=>x.subscribe((u,m)=>{for(let P of m)P.author.kind==="agent"&&U({type:"write",author:P.author,ids:P.writes,at:Date.now()})}),[x,U]),(0,s.useEffect)(()=>()=>{he.current&&clearTimeout(he.current)},[]);let q=(0,s.useMemo)(()=>({...V,session:K}),[V,K]),Wt=(0,s.useCallback)(u=>{D(u),d?.(u)},[d]),[we,bo]=(0,s.useState)(()=>Object.fromEntries(R.map(u=>[u.name,Dn(u,c)])));(0,s.useEffect)(()=>{for(let u of R)Gn(u,we[u.name]??u.initial)},[R,we]);let Ft=(0,s.useCallback)((u,m)=>{let P=R.find(A=>A.name===u);!P||!P.options.some(A=>A.value===m)||(jn(P,m,c),bo(A=>({...A,[u]:m})))},[R,c]),[Kt,xo]=(0,s.useState)(null),{activity:Bt,noteAttention:$t}=Un(x),zt=(0,s.useCallback)(u=>{$t(u),U({type:"read",author:u.author,ids:u.reads,at:Date.now()})},[$t,U]),ne=(0,s.useCallback)(u=>{if(re(u)!==null||Q(u).length>0||tt(u))return!0;let m=yn(u);return m?x.graph.allEdges().some(P=>P.kind===m.kind&&P.from===m.from&&P.to===m.to):x.graph.getNode(u)!==void 0},[x]),qt=(0,s.useCallback)(u=>{let m=u.selection??gt,P=m.filter(ne),A=P.length===m.length?u:_e(u,P);return A.focusId!==null&&!ne(A.focusId)&&(A=X(A,null)),A},[ne]),Se=(0,s.useCallback)(u=>{let m=qt(u),P=Qn(x,q,m.shown);if(m.focusId!==null&&P.size>0){let A=Q(m.focusId),nn=x.graph.getNode(m.focusId);(A.length>0?A.every(Po=>P.has(Po)):nn?P.has(nn.kind):!1)&&(m={...m,focusId:null})}if(!m.overview&&m.focusId===null){let A=ye.focusId!==null&&!ne(ye.focusId)?vt(t,e.schema)??{...oe,overview:!0}:ye;A.focusId!==null&&ne(A.focusId)?m={...m,focusId:A.focusId}:A.overview===!0&&(m={...m,overview:!0})}return m},[qt,ne,x,ye,q,t,e.schema]),F=Se(C??ee),Ut=(0,s.useMemo)(()=>Qn(x,q,F.shown),[x,q,F.shown]),Yt=(0,s.useMemo)(()=>[...x.modules.administered.entries()].map(([u,m])=>{let P=x.mayAdminister(u,q);return{name:u,...m.description?{description:m.description}:{},kinds:m.kinds??[],canShow:P,shown:P&&(F.shown??[]).includes(u)}}),[x,q,F.shown]),ve=(0,s.useCallback)(u=>{let m=P=>Se(typeof u=="function"?u(P):u);if(C!==void 0){O?.(m(C));return}O&&O(m(F)),te(P=>m(P))},[F,O,C,Se]);(0,s.useEffect)(()=>{C===void 0&&te(u=>{let m=Se(u);return m===u?u:m})},[F,C,Se]);let Xt=F.selection??gt,Jt=(0,s.useCallback)(u=>{ve(m=>_e(m,typeof u=="function"?u(m.selection??gt):u))},[ve]),{who:Zt,following:Qt,follow:en,sayWhere:Eo,sharing:tn}=$n({channel:g,store:x,view:F,principal:q,session:K,robots:me,seatWho:Ye,settingValues:we,setView:ve,seats:a,people:l,...f!==void 0?{ttlMs:f}:{}}),Ro=(0,s.useMemo)(()=>({store:x,scheme:o,views:t,view:F,setView:ve,homeView:ye,selection:Xt,setSelection:Jt,menuAt:Ot,setMenuAt:ho,whereIs:Lt,pointer:Ht,motion:Nt,registerScene:It,robots:me,noteSeat:jt,seatWho:Ye,registerSeatWho:Gt,actsDoor:Vt,registerActsDoor:wo,seatTalk:_t,...c?{memory:c}:{},who:Zt,following:Qt,follow:en,sayWhere:Eo,sharing:tn,session:K,ai:h,resolveApp:M,movedByHand:Z,noteMoved:pe,emphasis:Kt,setEmphasis:xo,activity:Bt,noteAttention:zt,principal:q,seats:a,people:l,takeSeat:Wt,settings:R,settingValues:we,chooseSetting:Ft,hiddenKinds:Ut,administered:Yt,...v?{providers:v}:{},...b?{brand:b}:{},...qe?{onKeepLens:qe}:{},app:Ue,...Pe?{locale:Pe}:{}}),[x,o,t,F,ve,Xt,Jt,Ot,Lt,Ht,Nt,It,me,jt,Ye,Gt,Vt,_t,c,Zt,Qt,en,tn,K,h,M,Z,pe,Kt,Bt,zt,q,a,l,Wt,R,we,Ft,Ut,Yt,v,b,qe,Ue,Pe]);return(0,le.jsx)(We.Provider,{value:Ro,children:(0,le.jsx)(Sr,{children:E?(0,le.jsx)(De.Provider,{value:E,children:W}):W})})}var oo=(0,s.createContext)(null),ht,wt=new Set,mr=e=>(wt.add(e),()=>void wt.delete(e)),Jn=()=>ht;function gr(e){if(!ht){ht=e;for(let t of[...wt])t()}}var hr=300;function wr(e){let t=0;return async(n,o)=>{let r=++t;return await new Promise(i=>setTimeout(i,hr)),r===t?e(n,o):[]}}function Sr({children:e}){let{store:t,view:n,views:o,principal:r,hiddenKinds:i,selection:a,ai:d}=J(),l=Fe(),c=n.q,f=n.focusId,S=!!(c&&c.trim().length>0),p=(0,s.useSyncExternalStore)(mr,Jn,Jn),g=(0,s.useMemo)(()=>S&&p?{flagged:new Set(t.violations().flatMap(E=>E.nodeIds)),touched:p.touchWeights(t.log.all())}:null,[t,l,S,p]),b=f?t.graph.getNode(f)?.kind??re(f)??(Q(f).length===1?Q(f)[0]:void 0):void 0,T=(0,s.useMemo)(()=>d.near&&wr(d.near),[d.near]),y=(0,s.useMemo)(()=>!c||!g||!p?null:p.search(t,c,{...b?{inKind:b}:{},principal:r,places:o.places(),kinds:t.schema.kinds.filter(E=>!i.has(E)),from:[...a,...f&&t.graph.has(f)?[f]:[]],flagged:g.flagged,touched:g.touched,limit:200,rank:T}),[t,c,r,o,i,a,f,b,g,T]),[v,h]=(0,s.useState)();return(0,s.useEffect)(()=>void y?.later?.then(E=>h([y,E])),[y]),(0,le.jsx)(oo.Provider,{value:v?.[0]===y?v[1]:y,children:e})}var Zn=new WeakMap;function Gi(e){let t=Zn.get(e);return t||Zn.set(e,t=new Set(e.matched)),t}function vr(){return(0,s.useContext)(oo)}function J(){let e=(0,s.useContext)(We);if(!e)throw new Error("useGraview must be used inside a <GraviewProvider>.");return e}function br(){return(0,s.useContext)(We)??null}function Fe(){let{store:e}=J(),t=(0,s.useRef)(null),n=(0,s.useRef)(null),o=(0,s.useCallback)(()=>(n.current!==e&&(n.current=e,t.current=null),t.current??=e.graph.allNodes(),t.current),[e]),r=(0,s.useCallback)(i=>e.subscribe(()=>{t.current=null,i()}),[e]);return(0,s.useSyncExternalStore)(r,o,o)}function xr(e){let{store:t}=J(),n=(0,s.useCallback)(r=>t.subscribe(r),[t]),o=(0,s.useCallback)(()=>e===null?void 0:t.graph.getNode(e),[t,e]);return(0,s.useSyncExternalStore)(n,o,o)}function Qn(e,t,n){let o=new Set(e.modules.disabledKinds);for(let r of e.kindsKeptFrom(t))o.add(r);for(let[r,i]of e.modules.administered)if(!(e.mayAdminister(r,t)&&(n??[]).includes(r)))for(let a of i.kinds??[])o.add(a);return o}var St=2600;function vt(e,t){let n=cn(e.arrangement?.()?.first,t,e.places());if(!(!n||n.to==="home"))return n.to==="place"?{...oe,focusId:ie(n.place.kind),within:{view:n.place.as}}:{...oe,focusId:ie(n.kind)}}var ro=H(G(),1),Er=(0,ro.createContext)(!1);var Ke=Symbol.for("graview.default-view");function io(e){return Object.defineProperty(e,Ke,{value:!0,enumerable:!1}),e}function ao(e){return typeof e=="function"&&e[Ke]===!0}var bt=Symbol.for("graview.replaces-page");function so(e){return typeof e=="function"&&e[bt]===!0}function Pr(e){return dn(e)}function Ar(e,t){if(t===e)return e;for(let r of t.registrations())e.register(r.kind,r,r.view,r);let n=t.arrangement?.();n&&e.arrange?.(n);let o=t.homeView?.();return o&&e.home?.(o),e}var de=H(G(),1);function kr(){let{selection:e,setSelection:t}=J();return(0,de.useMemo)(()=>({selection:e,set:n=>t(n),clear:()=>t([]),toggle:n=>t(o=>o.includes(n)?o.filter(r=>r!==n):[...o,n]),isSelected:n=>e.includes(n)}),[e,t])}function Tr(){let{store:e}=J(),t=Fe();return(0,de.useMemo)(()=>Mr(e),[e,t])}var lo=new WeakMap;function Mr(e){let t=lo.get(e);if(!t){let n={violations:null};e.subscribe(()=>{n.violations=null}),lo.set(e,n),t=n}return t.violations??=e.violations(),t.violations}function Or(){let{view:e,setView:t}=J();return(0,de.useMemo)(()=>({view:e,url:Y(e),focus:n=>t(o=>X(o,n)),show:n=>t(o=>mn(o,n)),toggle:n=>t(o=>Ce(o,n)),go:n=>t(n)}),[e,t])}var ue={at:0,depth:0,listeners:new Set,tell(){for(let e of this.listeners)e()}};typeof window<"u"&&window.addEventListener("popstate",e=>{let t=e.state;ue.at=typeof t?.graview=="number"?t.graview:0,ue.at>ue.depth&&(ue.depth=ue.at),ue.tell()});var L=H(G(),1),Et={profile:{trigger:"profile-button",pane:"profile",opens:"press",focus:"into",drawn:["shell","embed"]},problems:{trigger:"standing",pane:"problems",opens:"press",focus:"into",drawn:["shell","embed"]},places:{trigger:"app-places-open",pane:"app-places",opens:"press",focus:"into",drawn:["embed"]},here:{trigger:"here-open",pane:"here-list",opens:"press",focus:"into",drawn:["shell","embed","pages"]},activity:{trigger:"activity-button",pane:"activity",opens:"press",focus:"into",drawn:["shell","embed","pages"]},find:{trigger:"find-box",pane:"find-strip",opens:"typing",focus:"stays",drawn:["shell"]},districts:{trigger:"beyond-more",pane:"beyond-list",opens:"press",focus:"into",drawn:["shell","embed"]},acts:{trigger:null,pane:"context-menu",opens:"context-menu",focus:"into",drawn:["shell","embed"]},arrange:{trigger:"arrange-add",pane:"arrange-list",opens:"press",focus:"into",drawn:["pages"]},"studio-ask":{trigger:"studio-agent",pane:"studio-agent-panel",opens:"press",focus:"into",drawn:["studio"]}},Vr={position:"fixed",inset:"auto",margin:0,zIndex:sn("popover"),boxSizing:"border-box"},Be=6,ce=8,_r=e=>typeof e.showPopover=="function";function $e(e){try{return e.matches(":popover-open")}catch{return!1}}function Cr(e){if(typeof e=="function"){let o=e();return o?{left:o.x,right:o.x,top:o.y,bottom:o.y}:null}let t=e.current;if(!t||!t.isConnected)return null;let n=t.getBoundingClientRect();return{left:n.left,right:n.right,top:n.top,bottom:n.bottom}}function Rt(e,t,n={}){let o=Cr(t);if(!o)return;let r={width:document.documentElement.clientWidth||innerWidth,height:innerHeight},i=e.dataset.graviewDesignedHeight??=e.style.maxHeight;e.style.maxHeight=i;let a=e.getBoundingClientRect(),d=r.height-o.bottom-Be-ce,l=o.top-Be-ce,c=a.height<=d||d>=l,f=Math.max(96,Math.floor(c?d:l)),S=Math.min(a.height,f);a.height>f&&(e.style.maxHeight=i?`min(${i}, ${f}px)`:`${f}px`);let p=a.width,g=n.align==="start"?o.left:o.right-p,b=typeof t=="function"?null:t.current?.closest("[data-graview-embed]")?.getBoundingClientRect();b&&p<=b.right-b.left&&(g<b.left?g=o.left+p<=b.right?o.left:b.left:g+p>b.right&&(g=o.right-p>=b.left?o.right-p:b.right-p));let T=p>=r.width-2*ce?Math.max(0,(r.width-p)/2):Math.max(ce,Math.min(g,r.width-ce-p)),y=c?o.bottom+Be:Math.max(ce,o.top-Be-S);e.style.left=`${Math.round(T)}px`,e.style.top=`${Math.round(y)}px`}function uo(e,t,n,o={}){let r=o.align??"end";(0,L.useLayoutEffect)(()=>{let i=e.current;if(!t||!i)return;if(_r(i)&&!$e(i))try{i.showPopover(),Lr()}catch{}let a=0,d=c=>{c?.target instanceof Node&&i.contains(c.target)||(cancelAnimationFrame(a),a=requestAnimationFrame(()=>Rt(i,n,{align:r})))};Rt(i,n,{align:r}),addEventListener("resize",d),addEventListener("scroll",d,!0);let l=typeof ResizeObserver>"u"?null:new ResizeObserver(()=>d());return l?.observe(i),()=>{if(cancelAnimationFrame(a),removeEventListener("resize",d),removeEventListener("scroll",d,!0),l?.disconnect(),i.isConnected&&$e(i))try{i.hidePopover()}catch{}}},[t,e,r])}var Pt=new Set;function Ir(e){return Pt.add(e),()=>Pt.delete(e)}function Lr(){for(let e of Pt)if(!(!e.isConnected||!$e(e)))try{e.hidePopover(),e.showPopover()}catch{}}var fe=null,Hr='button:not([disabled]), [href], input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), summary, [tabindex]:not([tabindex="-1"])';function Nr(e){for(let t of e.querySelectorAll(Hr))if(t.closest("[hidden]")===null&&getComputedStyle(t).visibility!=="hidden")return t;return e}var xt=()=>{let e=document.activeElement;return e===null||e===document.body};function Dr(e,t={}){let{at:n,returnTo:o,onOpenChange:r}=t,i=t.popover!==!1,[a,d]=(0,L.useState)(!1),l=t.open??a,c=(0,L.useRef)(null),f=(0,L.useRef)(null),S=(0,L.useCallback)(h=>{c.current=h},[]),p=(0,L.useCallback)(h=>{f.current=h},[]),g=`graview-popover-${(0,L.useId)().replace(/:/g,"")}`,b=(0,L.useRef)({onOpenChange:r,returnTo:o,controlled:t.open!==void 0});b.current={onOpenChange:r,returnTo:o,controlled:t.open!==void 0};let T=(0,L.useCallback)(h=>{b.current.controlled||d(h),b.current.onOpenChange?.(h)},[]),y=(0,L.useCallback)(()=>{(document.querySelector(`[aria-controls="${g}"]`)??c.current??b.current.returnTo?.()??null)?.focus({preventScroll:!0})},[g]),v=(0,L.useCallback)(h=>{let E=f.current,M=typeof document>"u"?null:document.activeElement,C=M===null||M===document.body||E!==null&&E.contains(M);T(!1),!(!h||!C)&&(y(),requestAnimationFrame(()=>{xt()&&y()}))},[T,y]);return uo(f,i&&l,n??c,t.align?{align:t.align}:{}),(0,L.useEffect)(()=>{if(!i||!l)return;let h={name:e,close:()=>v(!1)};if(fe&&fe.close!==h.close&&fe.close(),fe=h,Et[e].focus==="into"){let I=f.current;I&&!I.contains(document.activeElement)&&Nr(I).focus({preventScroll:!0})}let E=I=>{I.key==="Escape"&&v(!0)},M=I=>{let D=I.target;if(!(D instanceof Node))return;let V=f.current;if(V?.contains(D)||c.current?.contains(D))return;let x=D instanceof Element?D.closest('[role="dialog"], [role="alertdialog"]'):null;x&&!(V&&x.contains(V))||(v(!1),Et[e].focus==="into"&&requestAnimationFrame(()=>{(xt()||V!==null&&V.contains(document.activeElement))&&y()}))},C=null,O=null,W=I=>{let D=I.target;if(!(D instanceof Element))return;let V=f.current,x=D.closest('[role="dialog"], [role="alertdialog"]');!x||V&&(V.contains(x)||x.contains(V))||(C=x,v(!1))};return document.addEventListener("keydown",E),document.addEventListener("pointerdown",M,!0),document.addEventListener("focusin",W),()=>{document.removeEventListener("keydown",E),document.removeEventListener("pointerdown",M,!0),document.removeEventListener("focusin",W);let I=C;I&&typeof MutationObserver<"u"&&(O?.disconnect(),O=new MutationObserver(()=>{I.isConnected||(O?.disconnect(),requestAnimationFrame(()=>{(xt()||document.activeElement.closest("[hidden]")!==null)&&y()}))}),O.observe(document.body,{childList:!0,subtree:!0}),setTimeout(()=>O?.disconnect(),10*6e4)),fe?.close===h.close&&(fe=null)}},[i,l,e,v,y]),{open:l,setOpen:h=>h?T(!0):v(!0),toggle:()=>l?v(!0):T(!0),trigger:{ref:S,"aria-expanded":l,"aria-controls":g,"data-graview-popover-trigger":e},pane:{ref:p,id:g,popover:"manual",tabIndex:-1,"data-graview-popover":e,"data-graview-overlay":""}}}var N=H(G(),1),$=H(xe(),1),At=new Set,co=!1;function kt(){for(let e of[...At])e()}function jr(){co||typeof window>"u"||(co=!0,window.addEventListener("online",kt))}function Gr(e){let t,n=!1,o=!1,r,i=0,a=new Set,d=()=>{i+=1;for(let p of[...a])p()},l=p=>(a.add(p),()=>void a.delete(p)),c=()=>i,f=()=>void S().catch(()=>{});function S(){if(n)return Promise.resolve(t);if(r)return r;let p=e().then(g=>(t=g,n=!0,o=!1,r=void 0,At.delete(f),d(),g),g=>{throw r=void 0,o=!0,At.add(f),jr(),d(),g});return p.catch(()=>{}),r=p,p}return{load:S,prefetch:f,get current(){return t},get failed(){return o},part(p,g={}){let b=g.what??"This part";function T(h){(0,N.useSyncExternalStore)(l,c,c);let E=(0,N.useRef)(null),M=(0,N.useRef)(null),C=(0,N.useRef)(!1);return(0,N.useEffect)(()=>{o&&r===void 0&&f()},[]),n&&typeof document<"u"&&E.current!==null&&document.activeElement===E.current&&(C.current=!0),(0,N.useLayoutEffect)(()=>{if(!(!n||!C.current)){C.current=!1;for(let O=M.current?.nextElementSibling??null;O!==null;O=O.nextElementSibling){let W=O.matches(fo)?O:O.querySelector(fo);if(W instanceof HTMLElement){W.focus();return}}}}),n?(0,$.jsxs)($.Fragment,{children:[C.current?(0,$.jsx)("span",{ref:M,hidden:!0}):null,p(t,h)]}):g.quiet?null:(0,$.jsx)(Wr,{what:b,button:E,...g.as?{as:g.as}:{}})}let y=(0,N.lazy)(()=>S().then(()=>({default:T}),()=>({default:T})));function v(h){let[E]=(0,N.useState)(()=>n||o);return(0,N.createElement)(E?T:y,h)}return v}}}var fo="button,a[href],input,select,textarea,[tabindex]:not([tabindex='-1'])";function Wr({what:e,button:t,as:n="p"}){let r=typeof navigator<"u"&&navigator.onLine===!1?`${e} will load when you're back online.`:`${e} didn't load.`;return(0,$.jsxs)(n,{"data-testid":"lazy-part-missing",style:{margin:0,fontSize:"0.875rem",color:"var(--graview-ink-muted)"},children:[(0,$.jsx)("span",{role:"status",children:r})," ",(0,$.jsx)("button",{ref:t,type:"button","data-testid":"lazy-part-retry",onClick:kt,style:{font:"inherit",fontWeight:600,color:"var(--graview-ink)",background:"none",border:"1px solid var(--graview-edge)",borderRadius:6,padding:"2px 10px"},children:"Try again"})]})}var ze=H(G(),1);var Fr=(0,ze.createContext)(null);var po=H(G(),1),Kr=(0,po.createContext)(!1);var yo=H(G(),1),Br=(0,yo.createContext)(null);var mo=H(G(),1),Tt='button:not([disabled]), a[href], input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), summary, [tabindex]:not([tabindex="-1"])',Mt=e=>e instanceof HTMLElement&&(e.matches(Tt)||e.hasAttribute("tabindex")),Ee=e=>typeof e.checkVisibility=="function"?e.checkVisibility():e.getClientRects().length>0;function $r(e,t){let n=l=>l.replace(/["\\]/g,"\\$&"),o=t.getAttribute("data-testid"),r=t.getAttribute("data-graview-pick"),i=t.getAttribute("aria-label"),a=o?`[data-testid="${n(o)}"]`:r?`[data-graview-pick="${n(r)}"]`:i?`${t.tagName.toLowerCase()}[aria-label="${n(i)}"]`:null;if(!a)return null;let d=e.querySelector(a);return d&&Mt(d)&&Ee(d)?d:null}var zr=e=>e.isConnected&&Mt(e)&&!e.matches(":disabled")&&e instanceof HTMLElement&&Ee(e);function go(e,t){let n=t?$r(e,t):null;if(n)return n;let o=e.querySelector("[data-graview-view][tabindex]");if(o&&Ee(o))return o;for(let r of e.querySelectorAll(Tt))if(Ee(r))return r;return Mt(e)&&Ee(e)?e:null}function qr(e){(0,mo.useEffect)(()=>{let t=e.current;if(!t||typeof MutationObserver>"u")return;let n=[],o=y=>{let v=y.target;if(v instanceof Element){n=[];for(let h=v;h&&h!==t.parentElement;h=h.parentElement)n.push(h)}},r=!1,i=!1,a=t.ownerDocument,d=()=>!i&&a.defaultView!==null,l=(y,v)=>void setTimeout(()=>d()&&v(),y),c=y=>void requestAnimationFrame(()=>d()&&y()),f=y=>{if(r=!1,i)return;let v=a.activeElement;if(!(!(v===null||v===a.body||v===a.documentElement)||n.length===0)){if(zr(n[0])){y&&n[0]instanceof HTMLElement&&n[0].focus({preventScroll:!0});return}for(let E of n.slice(1)){if(!E.isConnected)continue;let M=go(E,n[0]);if(M){M.focus({preventScroll:!0}),n=[];return}}}},S=(y,v=Date.now()+2500)=>{l(100,()=>{f(y);let h=a.activeElement;(h===null||h===a.body||h===a.documentElement)&&n.length>0&&Date.now()<v&&S(y,v)})},p=()=>{r||n.length===0||(r=!0,l(60,()=>c(()=>{f(!1),S(!1)})))},g=y=>{if(!(y instanceof KeyboardEvent&&!["Enter"," ","Escape"].includes(y.key))){if(!(y instanceof KeyboardEvent)){let v=y.target instanceof Element?y.target.closest(Tt):null,h=a.activeElement,E=h===null||h===a.body||h===a.documentElement;if(v&&E&&t.contains(v)){n=[];for(let M=v;M&&M!==t.parentElement;M=M.parentElement)n.push(M);l(150,()=>c(()=>{f(!1),S(!1)}));return}}!(y instanceof KeyboardEvent)&&!(y.target instanceof Node&&n[0]?.contains(y.target))||l(150,()=>c(()=>{f(!0),S(!0)}))}},b=new MutationObserver(()=>{n.length>0&&!n[0].isConnected&&p()}),T=y=>{y.relatedTarget===null&&p()};return t.addEventListener("focusin",o),t.addEventListener("focusout",T),t.addEventListener("click",g),t.addEventListener("keydown",g),b.observe(t,{childList:!0,subtree:!0}),()=>{i=!0,t.removeEventListener("focusin",o),t.removeEventListener("focusout",T),t.removeEventListener("click",g),t.removeEventListener("keydown",g),b.disconnect()}},[e])}export{oe as a,Y as b,Oe as c,Yr as d,Xr as e,pn as f,fn as g,yn as h,Ze as i,X as j,mn as k,Ve as l,Qe as m,_e as n,be as o,Ce as p,Le as q,et as r,re as s,Qr as t,ko as u,ie as v,gn as w,Q as x,hn as y,To as z,ei as A,wn as B,tt as C,Qo as D,er as E,G as F,dt as G,Uo as H,Yo as I,_n as J,De as K,Xo as L,xe as M,ur as N,dr as O,no as P,yr as Q,gr as R,Gi as S,vr as T,J as U,br as V,Fe as W,xr as X,vt as Y,Fr as Z,Er as _,io as $,ao as aa,so as ba,Pr as ca,Ar as da,Kr as ea,Br as fa,kr as ga,Tr as ha,Or as ia,ue as ja,qr as ka,Vr as la,$e as ma,Ir as na,Dr as oa,Gr as pa};
2
+ /*! Bundled license information:
3
+
4
+ react/cjs/react.production.js:
5
+ (**
6
+ * @license React
7
+ * react.production.js
8
+ *
9
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
10
+ *
11
+ * This source code is licensed under the MIT license found in the
12
+ * LICENSE file in the root directory of this source tree.
13
+ *)
14
+
15
+ react/cjs/react-jsx-runtime.production.js:
16
+ (**
17
+ * @license React
18
+ * react-jsx-runtime.production.js
19
+ *
20
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
21
+ *
22
+ * This source code is licensed under the MIT license found in the
23
+ * LICENSE file in the root directory of this source tree.
24
+ *)
25
+ */
@@ -0,0 +1,3 @@
1
+ import{F as g,M as u}from"./chunk.Z56B2JR2.js";import{b as m}from"./chunk.AJZBJBMO.js";var d=m(g(),1),n=m(u(),1),f=/^\s*(\d{1,6})[.)]\s+(.*)$/s,c=/^\s*[-*•]\s+(.*)$/s;function S(o){let s=[];for(let p of o.replace(/\r\n?/g,`
2
+ `).split(/\n[ \t]*\n+/)){let t=null,a=()=>{t&&(t.t==="p"?t.lines.length>0:t.items.length>0)&&s.push(t),t=null};for(let e of p.split(`
3
+ `)){let i=f.exec(e),l=i?null:c.exec(e);if(i)t?.t!=="ol"&&(a(),t={t:"ol",start:Number(i[1]),items:[]}),t.items.push(i[2]);else if(l)t?.t!=="ul"&&(a(),t={t:"ul",items:[]}),t.items.push(l[1]);else if(t&&t.t!=="p"&&/^\s+\S/.test(e)){let r=t.items;r[r.length-1]=`${r[r.length-1]} ${e.trim()}`}else e.trim().length>0&&(t?.t!=="p"&&(a(),t={t:"p",lines:[]}),t.lines.push(e.trim()))}a()}return s}function b(o){return/[\r\n]/.test(o)}var h={display:"grid",gap:"0.7em",minWidth:0,overflowWrap:"anywhere"},k={margin:0},y={margin:0,paddingInlineStart:"1.6em",display:"grid",gap:"0.3em"},x=(0,d.lazy)(()=>import("./chunk.O4QPITBD.js"));function B({text:o,className:s,style:p,markdown:t,headingsFrom:a}){return t?(0,n.jsx)(d.Suspense,{fallback:(0,n.jsx)(B,{text:o,...s?{className:s}:{},...p?{style:p}:{}}),children:(0,n.jsx)(x,{text:o,...s?{className:s}:{},...p?{style:p}:{},...a?{headingsFrom:a}:{}})}):(0,n.jsx)("div",{"data-graview-text-body":"",...s?{className:s}:{},style:{...h,...p},children:S(o).map((e,i)=>e.t==="p"?(0,n.jsx)("p",{style:k,children:e.lines.map((l,r)=>(0,n.jsxs)("span",{children:[r>0?(0,n.jsx)("br",{}):null,l]},r))},i):e.t==="ol"?(0,n.jsx)("ol",{start:e.start,style:y,children:e.items.map((l,r)=>(0,n.jsx)("li",{children:l},r))},i):(0,n.jsx)("ul",{style:y,children:e.items.map((l,r)=>(0,n.jsx)("li",{children:l},r))},i))})}export{b as a,B as b};
@@ -0,0 +1 @@
1
+ import{c as u}from"./chunk.G4WQGTZR.js";import{Z as l}from"./chunk.HLLWKSZB.js";function a(e,n){let s=new Map;for(let o of e){let t=n(o.from),i=n(o.to);if(t===void 0||i===void 0)continue;let d=`${o.kind}|${t}|${i}`,r=s.get(d);r||s.set(d,r={edge:o.kind,from:t,to:i,links:0,froms:new Set,tos:new Set}),r.links+=1,r.froms.add(o.from),r.tos.add(o.to)}return[...s.entries()].sort(([o],[t])=>o<t?-1:o>t?1:0).map(([o,t])=>({key:o,edge:t.edge,from:t.from,to:t.to,links:t.links,fromCount:t.froms.size,toCount:t.tos.size}))}function m(e,n,s){let o=[],t=[];for(let d of e){let r=f(d);if(r!==null){o.includes(r)||o.push(r);continue}s(d)!==void 0&&t.push(d)}let i=n.overview&&n.focusId!==null?f(n.focusId):null;return n.beside&&n.overview&&i===null&&n.focusId!==null&&t.length===0&&o.length===0&&s(n.focusId)!==void 0&&t.push(n.focusId),{districts:o,records:t,lens:i}}function f(e){return e.startsWith("kind:")?e.slice(5)||null:e.startsWith("aggregate:")&&!e.includes("|")&&e.slice(10)||null}function y(e,n){let s=u(e,n.from,n.edge,"out"),o=n.from===n.to?" of their own":"";return`${l(e,n.from,n.fromCount)} \u2192 ${l(e,n.to,n.toCount)}${o}, ${s}`}export{a,m as b,f as c,y as d};
@@ -0,0 +1 @@
1
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o}from"./chunk.V6TK4LHW.js";import"./chunk.G4JJXA63.js";import"./chunk.YRQZZH5V.js";import"./chunk.HONUT6OG.js";import"./chunk.X53HI436.js";import"./chunk.COTG2IG5.js";import"./chunk.Q5WEOX3Q.js";import"./chunk.Z2RGLFLS.js";import"./chunk.UTHHX2TJ.js";import"./chunk.YCA7P5MK.js";import"./chunk.WVUJXDXZ.js";import"./chunk.DAA6XWLF.js";import"./chunk.7DNFXJH3.js";import"./chunk.7PRFYYVM.js";import"./chunk.2NCTM5K2.js";import"./chunk.JU2ZVKMT.js";import"./chunk.ZS4DJ76C.js";import"./chunk.5R66YTET.js";import"./chunk.G4WQGTZR.js";import"./chunk.HFKMHLJ3.js";import"./chunk.HLLWKSZB.js";import"./chunk.AJZBJBMO.js";export{i as draftAnswer,h as draftFromLens,b as draftSight,l as draftView,a as isDraftFailure,c as judgeLens,d as lensEditOf,f as lensFromSpec,j as recipeDraft,g as recipeOfLens,m as refineDraft,o as runDraftTool,e as takeBackEditOf,k as templateDraft,n as withReaderLenses};