graview 0.1.25 → 0.1.26

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 (109) hide show
  1. package/dist/preview/chunk.24X6LFD3.js +6 -0
  2. package/dist/preview/{chunk.JIXW4WIO.js → chunk.2GFB5FOK.js} +1 -1
  3. package/dist/preview/chunk.3RT463XY.js +1 -0
  4. package/dist/preview/{chunk.UOYH2DFX.js → chunk.4INXWGIT.js} +2 -2
  5. package/dist/preview/{chunk.B57EIGTS.js → chunk.4MAYBFPU.js} +1 -1
  6. package/dist/preview/chunk.4YY54TMR.js +1 -0
  7. package/dist/preview/chunk.564EIRAT.js +1 -0
  8. package/dist/preview/chunk.5CXMUC6R.js +16 -0
  9. package/dist/preview/{chunk.ORJ3T4IW.js → chunk.6GJF3F7L.js} +1 -1
  10. package/dist/preview/chunk.6LJ66MB7.js +1 -0
  11. package/dist/preview/chunk.6MZBFEXW.js +1 -0
  12. package/dist/preview/chunk.6R4EI47C.js +1 -0
  13. package/dist/preview/chunk.7OOKA2DK.js +1 -0
  14. package/dist/preview/chunk.7ZJPJARU.js +1 -0
  15. package/dist/preview/{chunk.S24R4MRK.js → chunk.AAVCTGAE.js} +3 -3
  16. package/dist/preview/chunk.AKWBAWQF.js +1 -0
  17. package/dist/preview/chunk.BK2MJOUN.js +1 -0
  18. package/dist/preview/chunk.CL7GGNEK.js +1 -0
  19. package/dist/preview/{chunk.PY42PBMB.js → chunk.D3XF643V.js} +1 -1
  20. package/dist/preview/{chunk.DEZEXD24.js → chunk.DRIWJRQW.js} +1 -1
  21. package/dist/preview/chunk.ECG7RM6L.js +1 -0
  22. package/dist/preview/chunk.ECRZZ3U4.js +1 -0
  23. package/dist/preview/chunk.HFFEOCYY.js +107 -0
  24. package/dist/preview/chunk.I5U42VDK.js +3 -0
  25. package/dist/preview/chunk.IQLDOIWD.js +1 -0
  26. package/dist/preview/{chunk.DSZ3I557.js → chunk.JIWB6VGT.js} +1 -1
  27. package/dist/preview/{chunk.YZZGD5OY.js → chunk.KSEKVHJJ.js} +1 -1
  28. package/dist/preview/chunk.KXWRS6LY.js +1 -0
  29. package/dist/preview/chunk.LCFCU3I3.js +1 -0
  30. package/dist/preview/chunk.LEVR7WLB.js +1 -0
  31. package/dist/preview/{chunk.HQX5FGYT.js → chunk.LHIYFAN5.js} +2 -2
  32. package/dist/preview/chunk.LLUZMOBZ.js +1 -0
  33. package/dist/preview/{chunk.6OBXKKB5.js → chunk.LUUT2ZWF.js} +3 -3
  34. package/dist/preview/chunk.MLQQR57X.js +1 -0
  35. package/dist/preview/chunk.NIEQZOHX.js +1 -0
  36. package/dist/preview/{chunk.JCZH55RX.js → chunk.NLFLFIDS.js} +1 -1
  37. package/dist/preview/{chunk.6DU4XN2F.js → chunk.NQP3DWME.js} +1 -1
  38. package/dist/preview/{chunk.6UL2JUEH.js → chunk.OBGG4SYF.js} +1 -1
  39. package/dist/preview/chunk.OBQ4DIFO.js +1 -0
  40. package/dist/preview/chunk.P7YN4Z3K.js +8 -0
  41. package/dist/preview/{chunk.SSOTDXRS.js → chunk.PKFL2AR4.js} +1 -1
  42. package/dist/preview/chunk.PQ2IIC27.js +1 -0
  43. package/dist/preview/chunk.QFJRXAU3.js +8 -0
  44. package/dist/preview/chunk.REODVRPZ.js +1 -0
  45. package/dist/preview/chunk.RH6VRP76.js +1 -0
  46. package/dist/preview/chunk.SVL6I37U.js +1 -0
  47. package/dist/preview/chunk.TAW67PZU.js +1 -0
  48. package/dist/preview/chunk.TUYKH4FG.js +1 -0
  49. package/dist/preview/chunk.UEEXBS2U.js +1 -0
  50. package/dist/preview/chunk.UUMXYMOX.js +19 -0
  51. package/dist/preview/chunk.VW7U4CT5.js +1 -0
  52. package/dist/preview/chunk.WWWZZAHE.js +1 -0
  53. package/dist/preview/chunk.XD4Q4FI2.js +1 -0
  54. package/dist/preview/chunk.XNYBOKLW.js +1 -0
  55. package/dist/preview/chunk.XOC5BRPU.js +1 -0
  56. package/dist/preview/chunk.XXNC2AFL.js +1 -0
  57. package/dist/preview/chunk.YIZ3DJO3.js +1 -0
  58. package/dist/preview/chunk.YOMW4MKD.js +1 -0
  59. package/dist/preview/chunk.YXQCEXZX.js +1 -0
  60. package/dist/preview/chunk.ZLPA5BAW.js +1 -0
  61. package/dist/preview/chunk.ZOWWWRYA.js +1 -0
  62. package/dist/preview/page.js +6 -6
  63. package/package.json +6 -6
  64. package/dist/preview/chunk.2AJMM7JG.js +0 -1
  65. package/dist/preview/chunk.2WFEFZAW.js +0 -1
  66. package/dist/preview/chunk.2YVXTTC2.js +0 -1
  67. package/dist/preview/chunk.6KJSFIO7.js +0 -1
  68. package/dist/preview/chunk.6WFN4C46.js +0 -107
  69. package/dist/preview/chunk.7BAUPTMY.js +0 -1
  70. package/dist/preview/chunk.A4SJ7EEY.js +0 -1
  71. package/dist/preview/chunk.ACKTGTOT.js +0 -1
  72. package/dist/preview/chunk.BJ2Y5F66.js +0 -1
  73. package/dist/preview/chunk.BYUQOV3O.js +0 -1
  74. package/dist/preview/chunk.C5N4RTPF.js +0 -1
  75. package/dist/preview/chunk.CFL2B2Z5.js +0 -1
  76. package/dist/preview/chunk.DJ72CUS7.js +0 -1
  77. package/dist/preview/chunk.EA4BZKPG.js +0 -1
  78. package/dist/preview/chunk.EKZWX6NG.js +0 -1
  79. package/dist/preview/chunk.F26676IW.js +0 -1
  80. package/dist/preview/chunk.F2KDFGHR.js +0 -1
  81. package/dist/preview/chunk.FWV4XAZA.js +0 -1
  82. package/dist/preview/chunk.G3BOZHKR.js +0 -1
  83. package/dist/preview/chunk.H4LHHT56.js +0 -8
  84. package/dist/preview/chunk.I5ELK6JF.js +0 -1
  85. package/dist/preview/chunk.I6T3FDQS.js +0 -1
  86. package/dist/preview/chunk.IB6PGEU7.js +0 -1
  87. package/dist/preview/chunk.JEMQBV6K.js +0 -1
  88. package/dist/preview/chunk.JW3E4SAC.js +0 -1
  89. package/dist/preview/chunk.KUTTVYOB.js +0 -16
  90. package/dist/preview/chunk.LHFEOEYY.js +0 -1
  91. package/dist/preview/chunk.MJ67MK4R.js +0 -1
  92. package/dist/preview/chunk.Q5WEOX3Q.js +0 -1
  93. package/dist/preview/chunk.QOYC424P.js +0 -3
  94. package/dist/preview/chunk.R6F3YMRK.js +0 -6
  95. package/dist/preview/chunk.RAE4M3KQ.js +0 -8
  96. package/dist/preview/chunk.RUFAVEXB.js +0 -1
  97. package/dist/preview/chunk.RVEMN5WU.js +0 -1
  98. package/dist/preview/chunk.S56LSUHV.js +0 -1
  99. package/dist/preview/chunk.T6KID3WO.js +0 -1
  100. package/dist/preview/chunk.TAOT74FR.js +0 -1
  101. package/dist/preview/chunk.TTODVIXW.js +0 -1
  102. package/dist/preview/chunk.U6BWYBPM.js +0 -19
  103. package/dist/preview/chunk.US4KIJSW.js +0 -1
  104. package/dist/preview/chunk.WX5CJ7PI.js +0 -1
  105. package/dist/preview/chunk.WXO3XUNW.js +0 -1
  106. package/dist/preview/chunk.ZJVIH6IF.js +0 -1
  107. package/dist/preview/chunk.ZRVDIVYY.js +0 -1
  108. package/dist/preview/chunk.ZV7ZFH2S.js +0 -1
  109. /package/dist/preview/{chunk.WWRWXFYR.js → chunk.WVUJXDXZ.js} +0 -0
@@ -1,2 +1,2 @@
1
- import{a as ge,b as ye,e as he,f as J,g as be}from"./chunk.BJ2Y5F66.js";import{f as fe}from"./chunk.YZZGD5OY.js";import{$a as ie,B as z,Bb as ce,H as E,J as T,Ka as se,Lb as ue,M as ne,N as te,O as X,P as re,S as _,Tb as pe,V as H,Vb as me,W as oe,ab as q,bb as ae,nb as le,pb as de}from"./chunk.RAE4M3KQ.js";function Pe(t,r,n){let s=t.tryDefinition(r)?.fields.shape,e=z(s?.[n]),l=!1,i=!1;for(;e&&(e.type==="optional"||e.type==="default"||e.type==="nullable"||e.type==="prefault");)(e.type==="optional"||e.type==="nullable")&&(l=!0),(e.type==="default"||e.type==="prefault")&&(i=!0),e=z(e.innerType);if(e?.type!=="enum")return;let y=(e.entries?Object.values(e.entries):e.values??[]).filter(u=>typeof u=="string");return y.length>0?{values:y,empty:l&&!i}:void 0}function L(t,r,n){let s=Pe(t,r,n);if(!s)return[];let e=t.tryDefinition(r),l=s.values.map(i=>({value:i,label:te(e,n,i)}));return s.empty&&l.push({value:null,label:`No ${_(e,n).toLowerCase()}`}),l}function U(t,r,n){let s=t[r];return typeof s=="string"&&n.some(e=>e.value===s)?s:null}function Q(t,r,n,s,e=L(t.schema,n.kind,s)){let l=we(t.schema,t.allMutations(),n.kind,s,e),i=U(n,s,e),y=[];for(let{value:u,by:A,acts:O}of l)if(u!==i)for(let $ of O){let I=A==="step"?{[$.subject.arg]:n.id}:{[$.subject.arg]:n.id,[s]:u},R={name:$.name,args:I};if($.input.safeParse(I).success&&t.permits(R,r).ok){try{ie(t.graph,$,I)}catch{continue}y.push({to:u,call:R,title:$.title??$.name});break}}return y}function we(t,r,n,s,e=L(t,n,s)){let l=xe(t,r,n,s),i=ve(t,r,n,s);return e.flatMap(y=>{if(y.value===null)return[];let u=l.filter(A=>A.sets?.[s]===y.value);return[{value:y.value,label:y.label,by:u.length>0?"step":i.length>0?"value":"none",acts:u.length>0?u:i}]})}function xe(t,r,n,s){return r.filter(e=>e.subject!==void 0&&e.derived===void 0&&typeof e.sets?.[s]=="string"&&q(t,e).includes(n))}function ve(t,r,n,s){let e=t.tryDefinition(n);return e?r.filter(l=>{if(!l.subject||!q(t,l).includes(n)||!ae(l,e).includes(s))return!1;let i=l.input.shape;return i!==void 0&&s in i}).sort((l,i)=>+(l.derived!==void 0)-+(i.derived!==void 0)):[]}var Y=(t,r)=>r&&t[r]!==void 0?String(t[r]):"";function Re(t,r,n){let s=d=>t.tryDefinition(d)?r.nodesOfKind(d).filter(k=>E(t.tryDefinition(d),k)):[],e=s(n.rows),l=s(n.columns),i=new Set(e.map(d=>d.id)),y=new Set(l.map(d=>d.id)),u=r.allEdges(),A=[],O=n.link;if(typeof O=="string"){let d=p=>t.tryDefinition(p)?.edges?.[O]?.to,k=(d(n.columns)??[]).some(p=>p===n.rows||p==="*"),w=(d(n.rows)??[]).some(p=>p===n.columns||p==="*"),D=k||!w;for(let p of u){if(p.kind!==O)continue;let m=D?p.to:p.from,o=D?p.from:p.to;i.has(m)&&y.has(o)&&A.push({rowId:m,columnId:o,via:[]})}}else{let d=new Map(O.path.map(w=>[w,new Map]));for(let w of u){let D=d.get(w.kind);if(!D)continue;let p=D.get(w.from);p?p.push(w.to):D.set(w.from,[w.to]);let m=D.get(w.to);m?m.push(w.from):D.set(w.to,[w.from])}let k=new Set;for(let w of l){let D=[{id:w.id,via:[]}];for(let p of O.path){let m=[],o=new Set;for(let f of D)for(let P of d.get(p).get(f.id)??[])o.has(`${f.id}|${P}`)||(o.add(`${f.id}|${P}`),m.push({id:P,via:[...f.via,f.id]}));D=m}for(let p of D){let m=`${p.id}|${w.id}`;!i.has(p.id)||k.has(m)||(k.add(m),A.push({rowId:p.id,columnId:w.id,via:p.via.slice(1)}))}}}let $=n.groupOrder??[],I=d=>$.indexOf(d)===-1?$.length:$.indexOf(d),R=e.map(d=>{let k=d;return{node:d,label:String(k.label??T(t.tryDefinition(d.kind),d)),group:Y(k,n.rowGroup),ref:Y(k,n.rowRef)}}).sort((d,k)=>I(d.group)-I(k.group)||(d.ref<k.ref?-1:d.ref>k.ref?1:0)),N=l.map(d=>({node:d,label:T(t.tryDefinition(d.kind),d),group:Y(d,n.columnGroup)})).sort((d,k)=>d.group<k.group?-1:d.group>k.group?1:d.node.id<k.node.id?-1:d.node.id>k.node.id?1:0);return{rows:R,columns:N,cells:A}}function $e(t,r,n){let{rows:s,columns:e,cells:l}=Re(t,r,n),i=(o,f)=>X(t,o,f),y=o=>X(t,o,1).replace(/^1 /,""),u=o=>({id:o.id,kind:o.kind,title:T(t.tryDefinition(o.kind),o),parts:[]}),A=o=>{let f=r.getNode(o);if(!f)return null;let P=t.tryDefinition(f.kind),M=T(P,f),K=H(f,P,{limit:3,said:[M],glance:!0}).map(B=>B.alone.startsWith(B.label)?`${B.label.toLowerCase()}${B.alone.slice(B.label.length)}`:B.alone);return[M,...K].join(", ")},O=typeof n.link=="string"?[]:n.link.path.slice(0,-1).flatMap((o,f,P)=>{let M=ce(t,n.columns,P.slice(0,f+1));return M.ok?[...M.reached]:[]}),$=[{t:"text",text:`${i(n.rows,s.length)} against ${i(n.columns,e.length)}${O.length>0?`, through ${[...new Set(O)].map(o=>i(o,2).replace(/^2 /,"")).join(" and ")}`:""}${e.length>0?`: ${e.map(o=>o.label).join(", ")}`:""}.`}],I=new Map(e.map(o=>[o.node.id,o.label])),R=new Map(e.map((o,f)=>[o.node.id,f])),N=new Map,d=new Map;for(let o of l){let f=N.get(o.rowId);f?f.push(o):N.set(o.rowId,[o]);let P=d.get(o.columnId);P?P.add(o.rowId):d.set(o.columnId,new Set([o.rowId]))}for(let o of s){let P=[...N.get(o.node.id)??[]].sort((M,K)=>R.get(M.columnId)-R.get(K.columnId)).map(M=>{let K=M.via.map(A).filter(B=>B!==null);return`${I.get(M.columnId)}${K.length>0?` (${K.join("; ")})`:""}`});$.push({t:"field",label:o.label,text:P.length>0?P.join(", "):"none"})}$.push({t:"list",as:"name",columns:1,groups:e.map(o=>{let f=d.get(o.node.id)??new Set,P=s.filter(M=>f.has(M.node.id)).map(M=>u(M.node));return{heading:`${o.label} (${P.length})`,items:P}})});let k=new Set(l.map(o=>o.rowId)),w=new Set(l.map(o=>o.columnId)),D=s.filter(o=>!k.has(o.node.id)),p=e.filter(o=>!w.has(o.node.id)),m=n.rows===n.columns;return D.length>0&&$.push({t:"text",text:`${m?`${D.length} with none across`:`${i(n.rows,D.length)} with no ${y(n.columns)}`}: ${D.map(o=>o.label).join(", ")}.`}),p.length>0&&$.push({t:"text",text:`${m?`${p.length} with none down`:`${i(n.columns,p.length)} on no ${y(n.rows)}`}: ${p.map(o=>o.label).join(", ")}.`}),$}function Z(t,r,n,s={}){let{app:e,blocks:l=n?e?.viewSpecs?.[n.kind]?.[s.slot??"page"]:e?.home}=s;if(!l?.length)return[];let i=s.firstHeading??(n||s.blocks?void 0:1),y=be(t,r,n,{...s,money:s.money??e?.brand,firstHeading:i});return n&&!y.node?[]:ye(typeof l[0]?.t=="string"?l:ge(l),y)}var Ae=240,ke=10,Ce=1160,je=40,Me=640,Oe=3,Ie=t=>Math.max(1,Math.floor((Math.min(t,Ce)-je+ke)/(Ae+ke)));function Be(t,r,n,s){let{app:e}=s,l=s.width??1440,i=s.today??new Date().toISOString().slice(0,10),y=t.seenBy(r),u=y.schema,A=y.graph,O=me(e),$=typeof n=="string"?n.trim():n.slug,I=typeof n=="string"?O.find(a=>a.slug===$||a.title===$||a.address===$):O.find(a=>a.slug===n.slug&&a.kind===n.kind)??n,R=!I&&typeof n=="string"?A.getNode($):void 0;if(!I&&!R)return{ok:!1,error:`"${$}" is not a place this app has, nor a record this seat can see.`,places:O.map(a=>a.slug)};let N=[],d=e.viewSpecs??{},k=Ie(l),w=(a,h)=>Z(y,null,a,{app:e,today:i,...h}),D=(a,h,b)=>{let g=u.tryDefinition(a.kind),S=T(g,a);if(h==="name")return{id:a.id,kind:a.kind,title:S,parts:[]};if(d[a.kind]?.[h]){let j=w(a,{slot:h}),[F,...v]=j,C=F?.t==="title";return{id:a.id,kind:a.kind,title:C?F.text:S,parts:p(C?v:j,b,`views.${a.kind}.${h}`,` (${a.id})`,C?1:0)}}if(h==="row")return{id:a.id,kind:a.kind,title:S,parts:[]};let c=g?.computed?J(u,A,a):a,G=H(c,g,{limit:3,said:[S],glance:!0});return{id:a.id,kind:a.kind,title:S,parts:G.map(j=>({t:"text",text:j.alone}))}};function p(a,h,b,g="",S=0){let x=[];return a.forEach((c,G)=>{let j=`${b}.${G+S}`;switch("problem"in c&&c.problem&&N.push({at:`${j}${g}`,says:c.problem}),c.t){case"title":x.push({t:"heading",level:3,text:c.text});return;case"text":x.push({t:"text",text:c.text,...c.tone?{tone:c.tone}:{}});return;case"badge":x.push({t:"badge",text:c.text});return;case"field":x.push({t:"field",label:c.label,text:c.text});return;case"progress":x.push({t:"progress",label:c.label,text:c.text});return;case"group":x.push(...p(c.blocks,h,`${j}.group`,g));return;case"when":x.push(...p(c.blocks,h,`${j}.show`,g));return;case"divider":case"figure":return;case"headline":x.push({t:"heading",level:c.level,text:c.text});return;case"number":x.push({t:"figure",text:c.text,...c.label?{label:c.label}:{}});return;case"list":{if(c.failed){x.push({t:"text",text:"\u2014"});return}if(c.members.length===0){c.empty&&x.push({t:"list",as:c.as,columns:1,groups:[],empty:c.empty});return}let F=h+1,v=F>Oe?"name":c.as,C=(c.groups??[{value:null,members:c.members}]).map(W=>({..."heading"in W&&W.heading?{heading:W.heading}:{},items:W.members.map(De=>D(De,v,F))}));x.push({t:"list",as:v,columns:v==="card"?k:1,groups:C,...c.more>0?{more:c.more}:{}});return}}}),x}let m=[],o,f,P;if(R){f="record";let a=u.tryDefinition(R.kind),h=T(a,R);P={slug:R.id,title:h,kind:R.kind,address:se(u,R.kind,R.id)},d[R.kind]?.page&&m.push(...p(w(R,{slot:"page"}),1,`views.${R.kind}.page`));let g=a?.computed?J(u,A,R):R;for(let S of oe(a,H(g,a,{said:[h]}))){S.title&&m.push({t:"heading",level:2,text:S.title});for(let x of S.fields)m.push({t:"field",label:x.label,text:x.value})}}else{let a=I;P={slug:a.slug,title:a.title,kind:a.kind,address:a.address};let h=a.lens?ue(e).drawn.find(b=>b.as===a.slug&&(a.kind===null||b.kinds.includes(a.kind))):void 0;if(a.kind===null){let b=e.brand,g=b?.name??e.name,S=b?.logo&&de(b.logo)?b.logo:void 0;if(o={name:g,...b?.subtitle?{subtitle:b.subtitle}:{},...S?{logo:{alt:b?.logoAlt??g,...le(S)?{drawn:"inline SVG"}:{drawn:"image",src:S}}}:{}},e.home)f="blocks",m=p(w(null,{}),0,"views.home");else{f="derived";let x=new Set(e.pages?.hide??[]),c=pe(u.kinds,e.pages?.order).filter(G=>!x.has(G));m.push({t:"heading",level:1,text:e.name??"Home"});for(let G of c){let j=A.nodesOfKind(G).filter(F=>E(u.tryDefinition(G),F)).length;j>0&&m.push({t:"text",text:`${j} ${V(u,G,j)}`})}}}else if(h?.lens==="blocks")f="lens:blocks",m=p(w(null,{blocks:h.options.blocks??[]}),0,`lenses.${h.index}.options.blocks`);else if(h?.lens==="columns"){f="lens:columns";let b=h.options.bindings??{};for(let g of Object.keys(b)){let S=b[g]?.column;if(!S)continue;let x=L(u,g,S),c=A.nodesOfKind(g).filter(v=>E(u.tryDefinition(g),v));Object.keys(b).length>1&&m.push({t:"heading",level:2,text:V(u,g,2).replace(/^./,v=>v.toUpperCase())}),m.push({t:"text",text:`${c.length} ${V(u,g,c.length)} in columns by ${_(u.tryDefinition(g),S).toLowerCase()}.`});let G=x.map(v=>({column:v,items:c.filter(C=>U(C,S,x)===v.value).map(C=>D(C,"card",1))})).filter(({column:v,items:C})=>v.value!==null||C.length>0).map(({column:v,items:C})=>({heading:`${v.label} (${C.length})`,items:C}));m.push({t:"list",as:"card",columns:1,groups:G});let j=new Map;for(let v of c)for(let C of Q(t,r,v,S,x))j.set(C.to,(j.get(C.to)??new Set).add(`"${C.title}"`));let F=x.filter(v=>v.value!==null&&j.has(v.value)).map(v=>`to ${v.label} by ${[...j.get(v.value)].join(" or ")}`);m.push({t:"text",text:F.length>0?`Moves: ${F.join("; ")}.`:"Moves: none for this seat."})}}else if(h?.lens==="coverage")f="lens:coverage",m=$e(u,A,h.options);else if(h){f=`lens:${h.lens}`;let b=h.kinds.flatMap(g=>A.nodesOfKind(g).filter(S=>E(u.tryDefinition(g),S)));m.push({t:"text",text:`A ${h.lens} of ${b.length} ${h.kinds.map(g=>V(u,g,b.length)).join(" and ")}.`}),m.push({t:"list",as:"name",columns:1,groups:[{items:b.map(g=>D(g,"name",1))}]})}else{f="derived";let b=A.nodesOfKind(a.kind).filter(g=>E(u.tryDefinition(a.kind),g));m.push({t:"heading",level:1,text:a.title}),b.length===0?m.push({t:"list",as:"row",columns:1,groups:[],empty:`No ${V(u,a.kind,0)} yet.`}):m.push({t:"list",as:"row",columns:1,groups:[{items:b.map(g=>D(g,"row",1))}]})}}let M=r.kind==="system"?"the system":(r.roles??[]).length>0?(r.roles??[]).join(", "):r.kind,K=l<Me?"phone":"wide",B=P.kind===null?Ge(u,A):[],ee={...o?{masthead:o}:{},...B.length>0?{facts:B}:{},place:P,seat:M,width:l,variant:K,drawnBy:f,parts:m,problems:N};return{ok:!0,description:{...ee,text:Se(ee)}}}function Ge(t,r){let n=he(t,r,null),s=e=>Array.isArray(e)?e.map(s).join(", "):e===null?"nothing":typeof e=="boolean"?e?"yes":"no":typeof e=="object"?e.label:String(e);return[...fe(t)].map(([e,l])=>{let i=l.label??ne(e);return Object.hasOwn(n.values,e)?{name:e,label:i,value:s(n.values[e])}:{name:e,label:i,refused:n.refused[e]??"it could not be worked out"}})}function V(t,r,n){let s=t.tryDefinition(r);if(n===1)return s?.noun??r;let e=re(t,r);return e.charAt(0).toLowerCase()+e.slice(1)}function Se(t){let r=[`${t.place.title} (${t.place.address}) \u2014 as ${t.seat}, ${t.width} wide (${t.variant}).`],n=t.masthead;n&&r.push(`Masthead: ${n.logo?`the logo ("${n.logo.alt}", ${n.logo.drawn==="image"?n.logo.src:"inline SVG"}), `:""}${n.name}${n.subtitle?` \u2014 ${n.subtitle}`:""}`);let s=(e,l)=>{for(let i of e)switch(i.t){case"heading":r.push(`${l}${"#".repeat(i.level)} ${i.text}`);break;case"text":r.push(`${l}${i.text}`);break;case"badge":r.push(`${l}[${i.text}]`);break;case"field":case"progress":r.push(`${l}${i.label}: ${i.text}`);break;case"figure":r.push(`${l}${i.text}${i.label?` \u2014 ${i.label}`:""}`);break;case"list":if(i.groups.length===0){i.empty&&r.push(`${l}(${i.empty})`);break}for(let y of i.groups){y.heading&&r.push(`${l}${y.heading}:`);for(let u of y.items)r.push(`${l}${y.heading?" ":""}- ${u.title}`),s(u.parts,`${l}${y.heading?" ":" "}`)}i.as==="card"&&i.columns>1&&r.push(`${l}(cards, ${i.columns} across)`),i.more&&r.push(`${l}and ${i.more} more`);break}};if(s(t.parts,""),t.facts){r.push("Facts of the whole graph (what fact('<name>') reads):");for(let e of t.facts)r.push(`- ${e.label} (${e.name}): ${e.value??`not worked out \u2014 ${e.refused}`}`)}if(t.problems.length>0){r.push("Problems:");for(let e of t.problems)r.push(`- ${e.at}: ${e.says}`)}return r.join(`
1
+ import{e as ge,f as ye,i as he,j as J,k as be}from"./chunk.TAW67PZU.js";import{f as fe}from"./chunk.KSEKVHJJ.js";import{$ as oe,$b as me,B as z,Hb as ce,M as E,O as T,Qa as se,R as ne,Rb as ue,S as te,T as X,U as re,X as _,Zb as pe,_ as H,fb as ie,gb as q,hb as ae,tb as le,vb as de}from"./chunk.P7YN4Z3K.js";function Pe(t,r,n){let s=t.tryDefinition(r)?.fields.shape,e=z(s?.[n]),l=!1,i=!1;for(;e&&(e.type==="optional"||e.type==="default"||e.type==="nullable"||e.type==="prefault");)(e.type==="optional"||e.type==="nullable")&&(l=!0),(e.type==="default"||e.type==="prefault")&&(i=!0),e=z(e.innerType);if(e?.type!=="enum")return;let y=(e.entries?Object.values(e.entries):e.values??[]).filter(u=>typeof u=="string");return y.length>0?{values:y,empty:l&&!i}:void 0}function L(t,r,n){let s=Pe(t,r,n);if(!s)return[];let e=t.tryDefinition(r),l=s.values.map(i=>({value:i,label:te(e,n,i)}));return s.empty&&l.push({value:null,label:`No ${_(e,n).toLowerCase()}`}),l}function U(t,r,n){let s=t[r];return typeof s=="string"&&n.some(e=>e.value===s)?s:null}function Q(t,r,n,s,e=L(t.schema,n.kind,s)){let l=we(t.schema,t.allMutations(),n.kind,s,e),i=U(n,s,e),y=[];for(let{value:u,by:A,acts:O}of l)if(u!==i)for(let $ of O){let I=A==="step"?{[$.subject.arg]:n.id}:{[$.subject.arg]:n.id,[s]:u},R={name:$.name,args:I};if($.input.safeParse(I).success&&t.permits(R,r).ok){try{ie(t.graph,$,I)}catch{continue}y.push({to:u,call:R,title:$.title??$.name});break}}return y}function we(t,r,n,s,e=L(t,n,s)){let l=xe(t,r,n,s),i=ve(t,r,n,s);return e.flatMap(y=>{if(y.value===null)return[];let u=l.filter(A=>A.sets?.[s]===y.value);return[{value:y.value,label:y.label,by:u.length>0?"step":i.length>0?"value":"none",acts:u.length>0?u:i}]})}function xe(t,r,n,s){return r.filter(e=>e.subject!==void 0&&e.derived===void 0&&typeof e.sets?.[s]=="string"&&q(t,e).includes(n))}function ve(t,r,n,s){let e=t.tryDefinition(n);return e?r.filter(l=>{if(!l.subject||!q(t,l).includes(n)||!ae(l,e).includes(s))return!1;let i=l.input.shape;return i!==void 0&&s in i}).sort((l,i)=>+(l.derived!==void 0)-+(i.derived!==void 0)):[]}var Y=(t,r)=>r&&t[r]!==void 0?String(t[r]):"";function Re(t,r,n){let s=d=>t.tryDefinition(d)?r.nodesOfKind(d).filter(k=>E(t.tryDefinition(d),k)):[],e=s(n.rows),l=s(n.columns),i=new Set(e.map(d=>d.id)),y=new Set(l.map(d=>d.id)),u=r.allEdges(),A=[],O=n.link;if(typeof O=="string"){let d=p=>t.tryDefinition(p)?.edges?.[O]?.to,k=(d(n.columns)??[]).some(p=>p===n.rows||p==="*"),w=(d(n.rows)??[]).some(p=>p===n.columns||p==="*"),D=k||!w;for(let p of u){if(p.kind!==O)continue;let m=D?p.to:p.from,o=D?p.from:p.to;i.has(m)&&y.has(o)&&A.push({rowId:m,columnId:o,via:[]})}}else{let d=new Map(O.path.map(w=>[w,new Map]));for(let w of u){let D=d.get(w.kind);if(!D)continue;let p=D.get(w.from);p?p.push(w.to):D.set(w.from,[w.to]);let m=D.get(w.to);m?m.push(w.from):D.set(w.to,[w.from])}let k=new Set;for(let w of l){let D=[{id:w.id,via:[]}];for(let p of O.path){let m=[],o=new Set;for(let f of D)for(let P of d.get(p).get(f.id)??[])o.has(`${f.id}|${P}`)||(o.add(`${f.id}|${P}`),m.push({id:P,via:[...f.via,f.id]}));D=m}for(let p of D){let m=`${p.id}|${w.id}`;!i.has(p.id)||k.has(m)||(k.add(m),A.push({rowId:p.id,columnId:w.id,via:p.via.slice(1)}))}}}let $=n.groupOrder??[],I=d=>$.indexOf(d)===-1?$.length:$.indexOf(d),R=e.map(d=>{let k=d;return{node:d,label:String(k.label??T(t.tryDefinition(d.kind),d)),group:Y(k,n.rowGroup),ref:Y(k,n.rowRef)}}).sort((d,k)=>I(d.group)-I(k.group)||(d.ref<k.ref?-1:d.ref>k.ref?1:0)),N=l.map(d=>({node:d,label:T(t.tryDefinition(d.kind),d),group:Y(d,n.columnGroup)})).sort((d,k)=>d.group<k.group?-1:d.group>k.group?1:d.node.id<k.node.id?-1:d.node.id>k.node.id?1:0);return{rows:R,columns:N,cells:A}}function $e(t,r,n){let{rows:s,columns:e,cells:l}=Re(t,r,n),i=(o,f)=>X(t,o,f),y=o=>X(t,o,1).replace(/^1 /,""),u=o=>({id:o.id,kind:o.kind,title:T(t.tryDefinition(o.kind),o),parts:[]}),A=o=>{let f=r.getNode(o);if(!f)return null;let P=t.tryDefinition(f.kind),M=T(P,f),K=H(f,P,{limit:3,said:[M],glance:!0}).map(B=>B.alone.startsWith(B.label)?`${B.label.toLowerCase()}${B.alone.slice(B.label.length)}`:B.alone);return[M,...K].join(", ")},O=typeof n.link=="string"?[]:n.link.path.slice(0,-1).flatMap((o,f,P)=>{let M=ce(t,n.columns,P.slice(0,f+1));return M.ok?[...M.reached]:[]}),$=[{t:"text",text:`${i(n.rows,s.length)} against ${i(n.columns,e.length)}${O.length>0?`, through ${[...new Set(O)].map(o=>i(o,2).replace(/^2 /,"")).join(" and ")}`:""}${e.length>0?`: ${e.map(o=>o.label).join(", ")}`:""}.`}],I=new Map(e.map(o=>[o.node.id,o.label])),R=new Map(e.map((o,f)=>[o.node.id,f])),N=new Map,d=new Map;for(let o of l){let f=N.get(o.rowId);f?f.push(o):N.set(o.rowId,[o]);let P=d.get(o.columnId);P?P.add(o.rowId):d.set(o.columnId,new Set([o.rowId]))}for(let o of s){let P=[...N.get(o.node.id)??[]].sort((M,K)=>R.get(M.columnId)-R.get(K.columnId)).map(M=>{let K=M.via.map(A).filter(B=>B!==null);return`${I.get(M.columnId)}${K.length>0?` (${K.join("; ")})`:""}`});$.push({t:"field",label:o.label,text:P.length>0?P.join(", "):"none"})}$.push({t:"list",as:"name",columns:1,groups:e.map(o=>{let f=d.get(o.node.id)??new Set,P=s.filter(M=>f.has(M.node.id)).map(M=>u(M.node));return{heading:`${o.label} (${P.length})`,items:P}})});let k=new Set(l.map(o=>o.rowId)),w=new Set(l.map(o=>o.columnId)),D=s.filter(o=>!k.has(o.node.id)),p=e.filter(o=>!w.has(o.node.id)),m=n.rows===n.columns;return D.length>0&&$.push({t:"text",text:`${m?`${D.length} with none across`:`${i(n.rows,D.length)} with no ${y(n.columns)}`}: ${D.map(o=>o.label).join(", ")}.`}),p.length>0&&$.push({t:"text",text:`${m?`${p.length} with none down`:`${i(n.columns,p.length)} on no ${y(n.rows)}`}: ${p.map(o=>o.label).join(", ")}.`}),$}function Z(t,r,n,s={}){let{app:e,blocks:l=n?e?.viewSpecs?.[n.kind]?.[s.slot??"page"]:e?.home}=s;if(!l?.length)return[];let i=s.firstHeading??(n||s.blocks?void 0:1),y=be(t,r,n,{...s,money:s.money??e?.brand,firstHeading:i});return n&&!y.node?[]:ye(typeof l[0]?.t=="string"?l:ge(l),y)}var Ae=240,ke=10,Ce=1160,je=40,Me=640,Oe=3,Ie=t=>Math.max(1,Math.floor((Math.min(t,Ce)-je+ke)/(Ae+ke)));function Be(t,r,n,s){let{app:e}=s,l=s.width??1440,i=s.today??new Date().toISOString().slice(0,10),y=t.seenBy(r),u=y.schema,A=y.graph,O=me(e),$=typeof n=="string"?n.trim():n.slug,I=typeof n=="string"?O.find(a=>a.slug===$||a.title===$||a.address===$):O.find(a=>a.slug===n.slug&&a.kind===n.kind)??n,R=!I&&typeof n=="string"?A.getNode($):void 0;if(!I&&!R)return{ok:!1,error:`"${$}" is not a place this app has, nor a record this seat can see.`,places:O.map(a=>a.slug)};let N=[],d=e.viewSpecs??{},k=Ie(l),w=(a,h)=>Z(y,null,a,{app:e,today:i,...h}),D=(a,h,b)=>{let g=u.tryDefinition(a.kind),S=T(g,a);if(h==="name")return{id:a.id,kind:a.kind,title:S,parts:[]};if(d[a.kind]?.[h]){let j=w(a,{slot:h}),[F,...v]=j,C=F?.t==="title";return{id:a.id,kind:a.kind,title:C?F.text:S,parts:p(C?v:j,b,`views.${a.kind}.${h}`,` (${a.id})`,C?1:0)}}if(h==="row")return{id:a.id,kind:a.kind,title:S,parts:[]};let c=g?.computed?J(u,A,a):a,G=H(c,g,{limit:3,said:[S],glance:!0});return{id:a.id,kind:a.kind,title:S,parts:G.map(j=>({t:"text",text:j.alone}))}};function p(a,h,b,g="",S=0){let x=[];return a.forEach((c,G)=>{let j=`${b}.${G+S}`;switch("problem"in c&&c.problem&&N.push({at:`${j}${g}`,says:c.problem}),c.t){case"title":x.push({t:"heading",level:3,text:c.text});return;case"text":x.push({t:"text",text:c.text,...c.tone?{tone:c.tone}:{}});return;case"badge":x.push({t:"badge",text:c.text});return;case"field":case"image":x.push({t:"field",label:c.label,text:c.text});return;case"progress":x.push({t:"progress",label:c.label,text:c.text});return;case"group":x.push(...p(c.blocks,h,`${j}.group`,g));return;case"when":x.push(...p(c.blocks,h,`${j}.show`,g));return;case"divider":case"figure":return;case"headline":x.push({t:"heading",level:c.level,text:c.text});return;case"number":x.push({t:"figure",text:c.text,...c.label?{label:c.label}:{}});return;case"list":{if(c.failed){x.push({t:"text",text:"\u2014"});return}if(c.members.length===0){c.empty&&x.push({t:"list",as:c.as,columns:1,groups:[],empty:c.empty});return}let F=h+1,v=F>Oe?"name":c.as,C=(c.groups??[{value:null,members:c.members}]).map(W=>({..."heading"in W&&W.heading?{heading:W.heading}:{},items:W.members.map(De=>D(De,v,F))}));x.push({t:"list",as:v,columns:v==="card"?k:1,groups:C,...c.more>0?{more:c.more}:{}});return}}}),x}let m=[],o,f,P;if(R){f="record";let a=u.tryDefinition(R.kind),h=T(a,R);P={slug:R.id,title:h,kind:R.kind,address:se(u,R.kind,R.id)},d[R.kind]?.page&&m.push(...p(w(R,{slot:"page"}),1,`views.${R.kind}.page`));let g=a?.computed?J(u,A,R):R;for(let S of oe(a,H(g,a,{said:[h]}))){S.title&&m.push({t:"heading",level:2,text:S.title});for(let x of S.fields)m.push({t:"field",label:x.label,text:x.value})}}else{let a=I;P={slug:a.slug,title:a.title,kind:a.kind,address:a.address};let h=a.lens?ue(e).drawn.find(b=>b.as===a.slug&&(a.kind===null||b.kinds.includes(a.kind))):void 0;if(a.kind===null){let b=e.brand,g=b?.name??e.name,S=b?.logo&&de(b.logo)?b.logo:void 0;if(o={name:g,...b?.subtitle?{subtitle:b.subtitle}:{},...S?{logo:{alt:b?.logoAlt??g,...le(S)?{drawn:"inline SVG"}:{drawn:"image",src:S}}}:{}},e.home)f="blocks",m=p(w(null,{}),0,"views.home");else{f="derived";let x=new Set(e.pages?.hide??[]),c=pe(u.kinds,e.pages?.order).filter(G=>!x.has(G));m.push({t:"heading",level:1,text:e.name??"Home"});for(let G of c){let j=A.nodesOfKind(G).filter(F=>E(u.tryDefinition(G),F)).length;j>0&&m.push({t:"text",text:`${j} ${V(u,G,j)}`})}}}else if(h?.lens==="blocks")f="lens:blocks",m=p(w(null,{blocks:h.options.blocks??[]}),0,`lenses.${h.index}.options.blocks`);else if(h?.lens==="columns"){f="lens:columns";let b=h.options.bindings??{};for(let g of Object.keys(b)){let S=b[g]?.column;if(!S)continue;let x=L(u,g,S),c=A.nodesOfKind(g).filter(v=>E(u.tryDefinition(g),v));Object.keys(b).length>1&&m.push({t:"heading",level:2,text:V(u,g,2).replace(/^./,v=>v.toUpperCase())}),m.push({t:"text",text:`${c.length} ${V(u,g,c.length)} in columns by ${_(u.tryDefinition(g),S).toLowerCase()}.`});let G=x.map(v=>({column:v,items:c.filter(C=>U(C,S,x)===v.value).map(C=>D(C,"card",1))})).filter(({column:v,items:C})=>v.value!==null||C.length>0).map(({column:v,items:C})=>({heading:`${v.label} (${C.length})`,items:C}));m.push({t:"list",as:"card",columns:1,groups:G});let j=new Map;for(let v of c)for(let C of Q(t,r,v,S,x))j.set(C.to,(j.get(C.to)??new Set).add(`"${C.title}"`));let F=x.filter(v=>v.value!==null&&j.has(v.value)).map(v=>`to ${v.label} by ${[...j.get(v.value)].join(" or ")}`);m.push({t:"text",text:F.length>0?`Moves: ${F.join("; ")}.`:"Moves: none for this seat."})}}else if(h?.lens==="coverage")f="lens:coverage",m=$e(u,A,h.options);else if(h){f=`lens:${h.lens}`;let b=h.kinds.flatMap(g=>A.nodesOfKind(g).filter(S=>E(u.tryDefinition(g),S)));m.push({t:"text",text:`A ${h.lens} of ${b.length} ${h.kinds.map(g=>V(u,g,b.length)).join(" and ")}.`}),m.push({t:"list",as:"name",columns:1,groups:[{items:b.map(g=>D(g,"name",1))}]})}else{f="derived";let b=A.nodesOfKind(a.kind).filter(g=>E(u.tryDefinition(a.kind),g));m.push({t:"heading",level:1,text:a.title}),b.length===0?m.push({t:"list",as:"row",columns:1,groups:[],empty:`No ${V(u,a.kind,0)} yet.`}):m.push({t:"list",as:"row",columns:1,groups:[{items:b.map(g=>D(g,"row",1))}]})}}let M=r.kind==="system"?"the system":(r.roles??[]).length>0?(r.roles??[]).join(", "):r.kind,K=l<Me?"phone":"wide",B=P.kind===null?Ge(u,A):[],ee={...o?{masthead:o}:{},...B.length>0?{facts:B}:{},place:P,seat:M,width:l,variant:K,drawnBy:f,parts:m,problems:N};return{ok:!0,description:{...ee,text:Se(ee)}}}function Ge(t,r){let n=he(t,r,null),s=e=>Array.isArray(e)?e.map(s).join(", "):e===null?"nothing":typeof e=="boolean"?e?"yes":"no":typeof e=="object"?e.label:String(e);return[...fe(t)].map(([e,l])=>{let i=l.label??ne(e);return Object.hasOwn(n.values,e)?{name:e,label:i,value:s(n.values[e])}:{name:e,label:i,refused:n.refused[e]??"it could not be worked out"}})}function V(t,r,n){let s=t.tryDefinition(r);if(n===1)return s?.noun??r;let e=re(t,r);return e.charAt(0).toLowerCase()+e.slice(1)}function Se(t){let r=[`${t.place.title} (${t.place.address}) \u2014 as ${t.seat}, ${t.width} wide (${t.variant}).`],n=t.masthead;n&&r.push(`Masthead: ${n.logo?`the logo ("${n.logo.alt}", ${n.logo.drawn==="image"?n.logo.src:"inline SVG"}), `:""}${n.name}${n.subtitle?` \u2014 ${n.subtitle}`:""}`);let s=(e,l)=>{for(let i of e)switch(i.t){case"heading":r.push(`${l}${"#".repeat(i.level)} ${i.text}`);break;case"text":r.push(`${l}${i.text}`);break;case"badge":r.push(`${l}[${i.text}]`);break;case"field":case"progress":r.push(`${l}${i.label}: ${i.text}`);break;case"figure":r.push(`${l}${i.text}${i.label?` \u2014 ${i.label}`:""}`);break;case"list":if(i.groups.length===0){i.empty&&r.push(`${l}(${i.empty})`);break}for(let y of i.groups){y.heading&&r.push(`${l}${y.heading}:`);for(let u of y.items)r.push(`${l}${y.heading?" ":""}- ${u.title}`),s(u.parts,`${l}${y.heading?" ":" "}`)}i.as==="card"&&i.columns>1&&r.push(`${l}(cards, ${i.columns} across)`),i.more&&r.push(`${l}and ${i.more} more`);break}};if(s(t.parts,""),t.facts){r.push("Facts of the whole graph (what fact('<name>') reads):");for(let e of t.facts)r.push(`- ${e.label} (${e.name}): ${e.value??`not worked out \u2014 ${e.refused}`}`)}if(t.problems.length>0){r.push("Problems:");for(let e of t.problems)r.push(`- ${e.at}: ${e.says}`)}return r.join(`
2
2
  `)}export{L as a,U as b,Q as c,we as d,xe as e,ve as f,Z as g,Be as h,Se as i};
@@ -0,0 +1 @@
1
+ import{a as m}from"./chunk.MRK6QJV5.js";import{b as f}from"./chunk.AJZBJBMO.js";function h(n){let r,i=!1,e,t,o=0;return()=>{if(i)return Promise.resolve(r);if(e)return e;let d=o>0&&t!==void 0?p(t):n();o+=1;let a=d.then(s=>(r=s,i=!0,e=void 0,s),s=>{throw e=void 0,t??=g(s),s});return e=a,a}}var c=0;function p(n){return c+=1,import(`${n}${n.includes("?")?"&":"?"}retry=${c}`)}function g(n,r=import.meta.url){let i=n instanceof Error?n.message:typeof n=="string"?n:"",e=/^(?:Failed to fetch|error loading) dynamically imported module: ([a-z]+:\/\/[^\s"'<>]+)/.exec(i)?.[1]?.replace(/[.,;:)\]]+$/,""),t=o=>o.split("/",3).join("/");return e&&t(e)===t(r)?e:void 0}var u=f(m(),1);function v(n){let[r,i]=(0,u.useState)(null);return(0,u.useEffect)(()=>{let e=n.current;if(!e||typeof ResizeObserver>"u")return;let t=()=>i(Math.round(e.getBoundingClientRect().width));t();let o=new ResizeObserver(t);return o.observe(e),()=>o.disconnect()},[n]),r}function M(n=!0){let[r,i]=(0,u.useState)();return(0,u.useEffect)(()=>{if(!n)return i(void 0);let e=0,t=()=>i(innerHeight),o=()=>{t(),clearTimeout(e),e=window.setTimeout(t,300)},d=a=>{for(let[s,l]of[[window,"resize"],[window,"orientationchange"],[window.visualViewport,"resize"]])s?.[a](l,o)};return d("addEventListener"),t(),()=>{clearTimeout(e),d("removeEventListener")}},[n]),r}var b={position:"absolute",width:1,height:1,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(50%)",whiteSpace:"nowrap"};export{h as a,v as b,M as c,b as d};
@@ -0,0 +1 @@
1
+ import{a as I}from"./chunk.ZLPA5BAW.js";import{i as K}from"./chunk.TAW67PZU.js";import{Kb as F,Ma as D,Q as C,Ya as U,aa as G,db as q,eb as V,g as B,ra as L,xa as _,za as W}from"./chunk.P7YN4Z3K.js";function Z(e){return B(e,{io:"input",unrepresentable:"any",override:de})}var se={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string"};function de(e){let t=e.zodSchema._zod?.def;if(!t||t.type!=="string"||typeof t.format!="string"||t.format==="regex")return;let n=e.jsonSchema,l=(t.checks??[]).map(r=>r._zod?.def).filter(r=>r?.format==="regex"&&r.pattern instanceof RegExp).map(r=>r.pattern.source);delete n.pattern;let a=n.allOf;Array.isArray(a)&&a.every(r=>typeof r=="object"&&r!==null&&Object.keys(r).length===1&&"pattern"in r)&&delete n.allOf,n.format=se[t.format]??t.format,l.length===1?n.pattern=l[0]:l.length>1&&(n.allOf=l.map(r=>({pattern:r})))}function N(e){let t=_(e.input),n=Z(e.input),l=n.properties??{};if(q(e)){let a=e.creates.join(" | ");l.id={type:"string",minLength:1,description:`Optional: the id for the ${a} this makes. Refused if the graph already has it; left out, one is minted from the label.`},n.properties=l}V(e)&&(n.additionalProperties=!1);for(let a of t){let r=l[a.name];if(!r)continue;let g=a.kinds.includes("*")?"any node kind":a.kinds.join(" | ");r.description=[r.description,`Id of a node (${g}).`].filter(Boolean).join(" ")}return{name:e.name,...e.title===void 0?{}:{title:e.title},description:e.description??e.title??e.name,inputSchema:n,nodeRefs:t}}function X(e){let t=new Set;for(let n=e;n;n=n.onBehalfOf)n.id!==void 0&&t.add(`${n.kind}:${n.id}`);return t}function M(e,t){let n=X(t),l=m=>{if(m.kind==="rule")return!1;let y=X(m);if(y.size===0)return!1;for(let h of y)if(n.has(h))return!1;return!0},a,r=()=>{if(a)return a;a=new Map;for(let m of e.log.live()){if(m.undoes!==void 0)continue;let y=l(m.author)?m.author:void 0;for(let h of m.primitives){h.op==="remove-node"&&a.delete(h.node.id);let d=h.op==="add-node"?h.node.id:h.op==="patch-node"?h.id:void 0;if(d===void 0)continue;let s=h.op==="add-node"?Object.keys(h.node):Object.keys(h.after),u=a.get(d);(h.op==="add-node"||!u)&&a.set(d,u=new Map);for(let c of s)c==="id"||c==="kind"||(y?u.set(c,y):u.delete(c))}}return a},g=e.schema,w=new Map,R=(m,y)=>{let h=`${m}\0${y}`,d=w.get(h);if(d===void 0){let s=g.tryDefinition(m)?.fields?.shape;d=s!==void 0&&y in s&&W(s[y]).type==="text",w.set(h,d)}return d},j=m=>e.graph.getNode(m)?.kind;return{prose:R,say:m=>G(m,{graph:e.graph,schema:g}),fieldBy(m,y){let h=j(m);if(!(h===void 0||!R(h,y)))return r().get(m)?.get(y)},recordBy(m){let y=j(m),h=r().get(m);if(y===void 0||!h)return;let d;for(let[s,u]of h)R(y,s)&&(d=u);return d}}}var T=(e,t,n)=>({untrusted:!0,authoredBy:n.say(t),text:e});function P(e,t){let n;for(let[l,a]of Object.entries(e)){if(typeof a!="string"||l==="id"||l==="kind")continue;let r=t.fieldBy(e.id,l);r&&(n??={...e},n[l]=T(a,r,t))}return n??e}function Y(e,t,n){let l=a=>{if(Array.isArray(a))return a.map(l);if(a!==null&&typeof a=="object"&&"id"in a&&"label"in a){let r=a,g=n.recordBy(r.id);return g?{...r,label:T(r.label,g,n)}:r}if(typeof a=="string"){let r=n.recordBy(e);return r?T(a,r,n):a}return a};return Object.fromEntries(Object.entries(t).map(([a,r])=>[a,l(r)]))}function Q(e,t){return{...e,nodes:e.nodes.map(n=>P(n,t))}}function ee(e,t){return{...e,hits:e.hits.map(n=>{if(n.about!=="node")return n;let l=t.recordBy(n.id);if(!l)return n;let a=t.prose(n.kind,n.why.field)?t.fieldBy(n.id,n.why.field):l;return{...n,label:T(n.label,l,t),...n.apart!==void 0?{apart:T(n.apart,l,t)}:{},why:a?{...n.why,fragment:T(n.why.fragment,a,t)}:n.why}})}}var ne,le=()=>ne??=import("./chunk.IQLDOIWD.js").catch(e=>{throw ne=void 0,e}),ce=()=>import("./chunk.LCFCU3I3.js").catch(()=>{}),ue=async()=>{(await ce())?.judgeWithLines()},te,fe=()=>te??=import("./chunk.24X6LFD3.js").catch(e=>{throw te=void 0,e}),v=e=>({title:e,readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1}),$=[{name:"search_graph",title:"Find by name",description:"Find things by name: records whose name or readable fields carry the words, and the kinds, places and rules the words name \u2014 each with why it matched. Reach for this before get_graph when you know what something is called. Words match the start of words, case and accents aside; key:value tokens narrow as a list's filter does (done:false, is:any for past records, kind:<kind>). Pass subject (a node id) to get the acts you may run on it as hits too.",inputSchema:{type:"object",properties:{query:{type:"string",description:"Words, with optional key:value conditions."},limit:{type:"number",description:"Most hits to return; 20 when unsaid."},subject:{type:"string",description:"A node id whose acts to include."}},required:["query"],additionalProperties:!1},mutating:!1,annotations:v("Find by name")},{name:"get_graph",title:"Read the whole graph",description:"Read the whole graph: every node with its fields, and every edge. Start here when you need the shape of the domain rather than one thing in it.",inputSchema:{type:"object",properties:{},additionalProperties:!1},mutating:!1,annotations:v("Read the whole graph")},{name:"get_node",title:"Read one node",description:"Read one node, its edges, and the violations that implicate it, with its computed values: read-only fields worked out from what you can see, which no act sets. Use this to check a thing before you change it.",inputSchema:{type:"object",properties:{id:{type:"string",description:"A node's id, or its name."}},required:["id"],additionalProperties:!1},mutating:!1,annotations:v("Read one node")},{name:"get_violations",title:"List the problems",description:"List every invariant violation the graph currently has, with the repairs that would resolve each one. Read this before proposing work: a rule that is already broken is more urgent than anything you could add.",inputSchema:{type:"object",properties:{context:{type:"object",description:"Evaluation context, e.g. { weekStart }."}},additionalProperties:!1},mutating:!1,annotations:v("List the problems")},{name:"get_affordances",title:"Ask what can be done",description:"Ask what can legally be done with a selection, ranked. Prefer these over composing a mutation by hand: they are derived from the schema, the invariants and the shape of the graph, so they cannot name an action that does not exist.",inputSchema:{type:"object",properties:{selection:{type:"array",items:{type:"string"},description:"Node ids."},context:{type:"object"}},required:["selection"],additionalProperties:!1},mutating:!1,annotations:v("Ask what can be done")},{name:"describe_place",title:"Say what a place shows",description:`Say what one place of the app shows you, as a person in your seat would see it: its headings, its figures as drawn, its lists with each record's title and what its card or row says, the headings a list is grouped under, what an empty list says, and any block that could not be worked out. Pass a place's slug ("home", a lens's address like "the-offers", a kind's like "offers") or a record's id, and width 390 for a phone. Use it after a change to check what somebody now sees, instead of guessing.`,inputSchema:{type:"object",properties:{place:{type:"string",description:`"home", a place's slug, or a record's id.`},width:{type:"number",description:"The screen's width in CSS pixels; 390 is a phone, 1440 when unsaid."}},required:["place"],additionalProperties:!1},mutating:!1,annotations:v("Say what a place shows")},{name:"preview_mutation",title:"Try an act without applying it",description:"Try a mutation without applying it: get back the diff it would produce and any invariant it would break. Do this when you are unsure, rather than applying and undoing.",inputSchema:{type:"object",properties:{mutation:{type:"string"},args:{type:"object"}},required:["mutation","args"],additionalProperties:!1},mutating:!1,annotations:v("Try an act without applying it")},{name:"undo_batch",title:"Undo a batch",description:"Undo one batch of operations. Fails, naming the blocking operation, when a later operation read what it wrote.",inputSchema:{type:"object",properties:{batch:{type:"string"},include:{type:"array",items:{type:"string"}}},required:["batch"],additionalProperties:!1},mutating:!0,annotations:{title:"Undo a batch",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1}}],H={type:"object",description:"A lens, as draft_view returns one.",properties:{title:{type:"string"},lens:{type:"string"},on:{type:"string"},bindings:{type:"object"},options:{type:"object"}},required:["title","lens","on"]},E={name:"draft_view",title:"Draw a view",description:'Draw a view of the data from words ("a board of tasks by status", "who covers what") as a lens the app could keep; or check a lens you wrote (lens); or change the one on screen (current, with ask: "only this month"). Returns the lens and its add-lens edit, or one sentence saying why not. Writes nothing.',inputSchema:{type:"object",properties:{ask:{type:"string",description:"What to see, in words."},lens:H,current:H},additionalProperties:!1},mutating:!1,annotations:v("Draw a view")},re={name:"keep_lens",title:"Keep a view as a lens",description:"Keep a lens draft_view drew as one of the app's places: checked again, then written as the add-lens edit. Returns the remove-lens edit that takes it back.",inputSchema:{...H,additionalProperties:!1},mutating:!0,annotations:{title:"Keep a view as a lens",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1}};function pe(e,t){return e===void 0?[]:e==="keep"&&!t?[E,re]:[E]}var he="An argument that names a record takes its id or its name.",ie=[...$.map(e=>e.name),E.name,re.name],ae=64;function A(e){let{line:t,...n}=e;return n}function oe(e){return{...e,...e.introduces?{introduces:e.introduces.map(A)}:{},...e.resolves?{resolves:e.resolves.map(A)}:{},...e.violationsAfter?{violationsAfter:e.violationsAfter.map(A)}:{}}}function me(e){let t=e.normalize("NFKD").replace(/\p{M}/gu,"").replace(/[^A-Za-z0-9_-]/g,"_");return t.length===0&&(t="act"),/^[A-Za-z_]/.test(t)||(t=`act_${t}`),t.slice(0,ae)}function ye(e){let t=new Set(ie),n=new Map;for(let l of e){let a=me(l),r=a;for(let g=2;t.has(r);g+=1)r=`${a.slice(0,ae-`_${g}`.length)}_${g}`;t.add(r),n.set(l,r)}return n}function ge(e,t){let n=N(e),l=C(e),a=n.nodeRefs.length>0?`${n.description}${/[.!?]$/.test(n.description)?"":"."} ${he}`:n.description;return{name:t,title:l,description:a,inputSchema:n.inputSchema,mutating:!0,annotations:{title:l,readOnlyHint:!1,destructiveHint:e.destructive===!0||(e.severs?.length??0)>0,idempotentHint:e.idempotent===!0,openWorldHint:!1},act:e.name}}function J(e){if(e===null||typeof e!="object")return JSON.stringify(e)??"null";if(Array.isArray(e))return`[${e.map(J).join(",")}]`;let t=e;return`{${Object.keys(t).filter(n=>t[n]!==void 0).sort().map(n=>`${JSON.stringify(n)}:${J(t[n])}`).join(",")}}`}function ke(e){return`sha256:${F(J(e))}`}function we(e,t,n,l){let a=ye(e.map(w=>w.name)),r=pe(l,n);return{definitions:n?[...$.filter(w=>!w.mutating),...r]:[...$,...r,...e.filter(w=>t.has(w.name)).map(w=>ge(w,a.get(w.name)))],names:a}}function Ve(e,t={}){let n=t.author??{kind:"agent"},l=e.allMutations(),a=new Set(e.permittedMutations(n).map(d=>d.name)),{definitions:r,names:g}=we(l,a,t.readOnly===!0,t.drafts?t.drafts.keep?"keep":"draw":void 0),w=ke(r),R=d=>{if(!ie.includes(d)){for(let[s,u]of g)if(u===d)return s;return g.has(d)?d:void 0}},j=(d,s)=>{let u=l.find(o=>o.name===d);if(!u)return{args:s,resolved:[]};let c={...s},i=[];for(let o of _(u.input)){let p=c[o.name];if(typeof p!="string"||p.trim()==="")continue;let f=e.resolveRef(o,p,n);if(!f.ok){let S=f.reason==="none"?` Nothing was changed. Use search_graph to look it up, then pass its id as ${o.name}.`:" Nothing was changed.";return{ok:!1,error:`${f.message}${S}`,argument:o.name,candidates:f.candidates}}f.by!=="id"&&(c[o.name]=f.id,i.push({argument:o.name,given:p,id:f.id,label:f.label}))}return{args:c,resolved:i}},m=async(d,s)=>{try{await ue();let u=r.find(i=>i.name===d)??r.find(i=>i.act===d);if(!u){let i=R(d);if(i){let o=e.permits({name:i,args:s},n);if(!o.ok)return{ok:!1,error:o.refusal.message,reason:"forbidden"}}return{ok:!1,error:`Unknown tool "${d}". Available: ${r.map(o=>o.name).join(", ")}`}}if(u.mutating&&t.readOnly)return{ok:!1,error:`"${d}" changes the graph, and this seat is read-only.`,reason:"forbidden"};if(u.act!==void 0){let i=j(u.act,s);if("ok"in i)return i;let o=D(e,n,e.apply({name:u.act,args:i.args},{...t.author?{author:t.author}:{},...Se(t.via)}));return{ok:!0,data:{batch:o.batch,intent:o.intent,introduces:o.introduces.map(A),resolves:o.resolves.map(A),...i.resolved.length>0?{resolved:i.resolved}:{}},diff:o.diff}}let c=e.seenBy(n);switch(u.name){case"search_graph":{let i=typeof t.places=="function"?t.places():t.places,o=typeof s.subject=="string"?s.subject:void 0,p=U(c,String(s.query??""),{principal:n,limit:typeof s.limit=="number"?s.limit:20,...i?{places:i}:{},...o?{subject:o,from:[o]}:{}});return{ok:!0,data:ee(p,M(c,n)),reads:p.hits.flatMap(f=>f.about==="node"?[f.id]:[])}}case"get_graph":{let i=c.graph.snapshot();return{ok:!0,data:Q(i,M(c,n)),reads:i.nodes.map(o=>o.id)}}case"get_node":{let i=String(s.id??""),o=i,p;if(!c.graph.getNode(i)){let k=i.trim()===""?void 0:e.resolveRef({name:"id",kinds:["*"]},i,n);if(k?.ok)o=k.id,p={argument:"id",given:i,id:o,label:k.label};else return k?.reason==="ambiguous"?{ok:!1,error:k.message,argument:"id",candidates:k.candidates}:{ok:!1,error:`No node "${i}".`}}let f=c.graph.getNode(o),S=c.graph.outEdges(o),b=c.graph.inEdges(o),O=M(c,n),x=K(c.schema,c.graph,f);return{ok:!0,data:{node:P(f,O),...Object.keys(x.values).length>0?{computed:Y(o,x.values,O)}:{},...Object.keys(x.refused).length>0?{uncomputed:x.refused}:{},out:S,in:b,violations:c.violations().filter(k=>k.nodeIds.includes(o)).map(A),...p?{resolved:[p]}:{}},reads:[o,...S.map(k=>k.to),...b.map(k=>k.from)]}}case"describe_place":{let i=t.app??{name:"",schema:e.schema},o=typeof s.width=="number"&&Number.isFinite(s.width)&&s.width>0?s.width:1440,{describePlace:p}=await le(),f=p(e,n,String(s.place??""),{app:i,width:o});if(!f.ok)return{ok:!1,error:`${f.error} The places are: ${f.places.join(", ")}.`};let S=new Set,b=O=>{for(let x of O)for(let k of x.groups??[])for(let z of k.items)S.add(z.id),b(z.parts)};return b(f.description.parts),{ok:!0,data:f.description,reads:[...S]}}case"draft_view":case"keep_lens":{let i=t.app??{name:"",schema:e.schema};return(await fe()).runDraftTool(u.name,s,{app:i,principal:n,...t.drafts?{drafts:t.drafts}:{}})}case"get_violations":{let i=c.violations(s.context);return{ok:!0,data:i.map(A),reads:[...new Set(i.flatMap(o=>o.nodeIds))]}}case"get_affordances":{let i=s.selection??[];return{ok:!0,data:I(c,i,{...typeof t.derive=="function"?t.derive():t.derive,...t.author?{principal:t.author}:{},...s.context?{context:s.context}:{}}),reads:i.filter(p=>c.graph.has(p))}}case"preview_mutation":{let i=String(s.mutation),o=R(i)??i,p=j(o,s.args??{});if("ok"in p)return p;let f=e.missingFor({name:o,args:p.args},n);if(f)return{ok:!1,error:f.message,reason:"missing"};let S=D(e,n,e.preview({name:o,args:p.args},void 0,{author:n})),b=oe(S);return{ok:!0,data:p.resolved.length>0?{...b,resolved:p.resolved}:b}}case"undo_batch":{let i=String(s.batch),o=s.include??[],p=c.canUndo([i,...o]);if(!p.ok)return{ok:!1,error:p.message};let f=D(e,n,e.undo([i,...o],{...t.author?{author:t.author}:{}}));return{ok:!0,data:oe(f),diff:f.diff}}default:return{ok:!1,error:`Unknown tool "${d}".`}}}catch(u){let{reason:c,wouldNeed:i}=L(u);return{ok:!1,error:u instanceof Error?u.message:String(u),reason:c,...i?{wouldNeed:i}:{}}}},y=new Set,h=d=>{for(let s of y)s(d)};return{definitions:r,hash:w,...t.author?{author:t.author}:{},onDiff(d){return e.subscribe(d)},onCall(d){return y.add(d),()=>y.delete(d)},async call(d,s){let u=(r.find(o=>o.name===d)??r.find(o=>o.act===d))?.mutating??!1,c={name:d,args:s,mutating:u,at:new Date().toISOString()};return h({...c,phase:"running"}),(o=>(h(o.ok?{...c,phase:"ok",...!u&&o.reads?{reads:o.reads}:{}}:{...c,phase:"failed",error:o.error}),o))(await m(d,s))}}}function Se(e){let t=typeof e=="function"?e():e;return t?{via:t}:{}}export{Ve as a};
@@ -0,0 +1 @@
1
+ var l=["solid","dashed","dotted","double","tapered"],i=["arrow","none","dot","bar"];function p(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return t>>>0}function m(e,t={}){let r=p(e);return{...{pattern:l[r%l.length],width:1.5+(r>>>3)%3*.75,cap:i[(r>>>7)%i.length],hue:(r>>>11)%360,opacity:.85},...t[e]}}var y={solid:void 0,dashed:"7 5",dotted:"1 5",double:"12 3",tapered:"10 3 3 3"};function h(e){return e.color??`hsl(${Math.round(e.hue)} 55% 62%)`}function x(e,t){return t?Math.max(1.6,e.width):Math.min(1.4,e.width)}function s(e,t,r){return[e,0,0,0,0,e,0,0,0,0,1,0,t,r,0,1]}var d={0:{scale:1,blur:0,falloff:0,shadow:.16,fidelity:"full"},1:{scale:.95,blur:.3,falloff:.26,shadow:.12,fidelity:"summary"},2:{scale:.9,blur:.3,falloff:.34,shadow:.07,fidelity:"glyph"}},c={0:{scale:1,blur:0,falloff:0,shadow:.34,fidelity:"full"},1:{scale:.95,blur:.45,falloff:.18,shadow:.24,fidelity:"summary"},2:{scale:.9,blur:.45,falloff:.26,shadow:.14,fidelity:"glyph"}};function b(e,t="dark"){let r=Math.max(0,Math.min(2,Math.round(e)));return(t==="light"?d:c)[r]}function S(e,t,r){let o=Math.max(0,Math.min(1,r)),n=(a,u)=>a+(u-a)*o;return{scale:n(e.scale,t.scale),blur:n(e.blur,t.blur),falloff:n(e.falloff,t.falloff),shadow:n(e.shadow,t.shadow),fidelity:o<.5?e.fidelity:t.fidelity}}function P(e,t,r,o,n){return s(e.scale,t,r)}export{c as a,b,S as c,P as d,m as e,y as f,h as g,x as h};
@@ -0,0 +1 @@
1
+ import{a as ze,b as Oe,c as xe,d as de,e as v,f as Ee,h as Fe}from"./chunk.RH6VRP76.js";import{e as Re,f as De,g as Me}from"./chunk.YOMW4MKD.js";import{a as te,b as oe,c as U,d as Ae,e as L,g as X,h as Te}from"./chunk.KSEKVHJJ.js";import{b as Se,g as u,h as ve,i as ce}from"./chunk.JIWB6VGT.js";import{a as ne,b as Y,d as ye,e as $e,f as C,h as b,k as G,l as ke,m as _,n as be,o as q,p as F,qa as We,r as w,s as we,t as R,u as O,v as B,w as T,x as n,y as V,z as je}from"./chunk.P7YN4Z3K.js";import"./chunk.AJZBJBMO.js";var pe="graview-document",fe=1,Q=256*1024,le=64*1024,Pe=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/,ue=/^[a-z][A-Za-z0-9]*$/,Ze=new Set(["id","kind"]),Je=e=>e in Object.prototype,Ke=V(e=>!Je(e),"every object already has this name \u2014 choose another"),Ce=(e,t)=>[...e===void 0?[]:[$e(e)],...t===void 0?[]:[ye(t)]],k=(e,t)=>b().check(...Ce(e,t)),x=(e,t,i)=>F(e).check(...Ce(t,i)),A=e=>b().check(C(Pe,`${e} names are lower-case words joined by hyphens, like "booked-vendor"`)),Ye=/^(?:[a-z][a-z0-9]*(?:-[a-z0-9]+)*|[a-z][A-Za-z0-9]*)$/,Z=b().check(C(Ye,'relation names are one camelCase word, like "tendedBy"'),Ke),P=b().check(C(ue,'field names are one word or camelCase, like "dueDate" \u2014 rules say them bare'),V(e=>!Ze.has(e),'a field cannot be called "id" or "kind" \u2014 the framework keeps those; try "type" or "category"'),Ke),I=k(1,500),J=k(1,2e3),re=k(1,300),Xe=["string","text","number","integer","boolean","date","datetime","enum","list","url","email","image","file"],Ge=w({type:B(Xe),required:n(_()),description:n(I),label:n(k(1,60)),options:n(x(k(1,80),1,100)),of:n(B(["string","number","date","image","file"])),default:n(q()),unit:n(k(void 0,12)),format:n(B(["money","percent","duration"])),min:n(G()),max:n(G()),step:n(G()),renamedFrom:n(b().check(C(ue)))}).check(je((e,t)=>{e.type==="enum"&&!e.options&&t.addIssue({code:"custom",message:'an enum field lists its "options"',path:["options"]}),e.type!=="enum"&&e.options&&t.addIssue({code:"custom",message:'"options" belongs only on an enum field',path:["options"]}),e.type!=="list"&&e.of&&t.addIssue({code:"custom",message:'"of" belongs only on a list field',path:["of"]})})),He=w({to:R([x(A("kind"),1),T("*")]),cardinality:n(B(["one","many"])),description:n(I),inverse:n(k(1,80)),appendOnly:n(_()),renamedFrom:n(b())}),_e=R([J,w({expr:J,label:n(k(1,60)),description:n(I)})]),Qe=w({noun:n(k(1,40)),plural:n(k(1,40)),description:n(I),fields:O(P,Ge).check(V(e=>Object.keys(e).length>0,"a kind has at least one field")),label:n(re),describe:n(re),lifecycle:n(w({field:P,retired:x(R([b(),G(),_()]),1)})),figure:n(k(void 0,2e4)),glance:n(x(P,1,20)),page:n(w({fields:n(x(P,1,40)),groups:n(x(w({title:k(1,60),fields:x(P,1,40)}),1,12))})),edges:n(O(Z,He)),computed:n(O(b(),_e).check(V(e=>Object.keys(e).length<=20,"a kind works out at most 20 computed fields"))),fieldRoles:n(O(b(),b())),renamedFrom:n(b().check(C(Pe)))}),H=R([b(),G(),_(),be(),F(q()),w({expr:J})]),W=b().check(C(/^\$[A-Za-z][A-Za-z0-9]*$/,'a reference is "$" and a name, like "$subject" or "$new"')),en=R([w({create:A("kind"),as:n(b().check(C(ue))),set:n(O(P,H))}),w({set:O(P,H),target:n(W)}),w({connect:Z,from:W,to:W}),w({sever:Z,from:W,to:W}),w({remove:W})]),nn=w({title:n(k(1,80)),description:n(I),fromTheOtherEnd:n(k(1,80)),on:n(R([A("kind"),x(A("kind"),1)])),creates:n(A("kind")),sets:n(O(P,H)),writes:n(x(P,1)),connects:n(Z),severs:n(Z),setsOther:n(O(P,H)),replaces:n(R([T(!0),x(Z,1,10)])),removes:n(T(!0)),args:n(O(P,Ge)),effects:n(x(en,1,20)),allowedWhen:n(J),refusal:n(re),destructive:n(_())}),tn=w({act:A("act"),label:n(k(1,80)),args:n(O(b(),H))}),on=w({title:n(k(1,120)),description:n(I),over:R([T("graph"),A("kind")]),when:n(J),require:J,says:n(re),repairs:n(x(tn,void 0,10))}),sn=w({roles:R([x(A("role"),1),T("*")]),mutations:R([x(A("act"),1),T("*")]),kinds:n(R([F(A("kind")),T("*")])),describe:n(I),self:n(_())}),rn=w({roles:R([x(A("role"),1),T("*")]),kinds:x(A("kind"),1),own:n(_())}),an=w({grants:F(sn),sees:n(F(rn))}),cn=w({accent:n(b().check(C(/^#[0-9a-fA-F]{6}$/,'an accent is a color like "#c2577a"'))),name:n(k(1,60)),currency:n(b().check(C(/^[A-Z]{3}$/,'a currency is its three-letter code, like "USD" or "EUR"'))),locale:n(k(2,35)),logo:n(R([k(1,le),w({src:k(1,le),alt:n(k(1,120))})])),favicon:n(k(1,le)),typography:n(w({display:n(k(1,200)),body:n(k(1,200)),mono:n(k(1,200))})),shape:n(w({radius:n(G().check(Y(0),ne(32))),density:n(G().check(Y(.75),ne(1.5)))})),accents:n(O(b(),G().check(Y(0),ne(360)))),scheme:n(B(["light","dark","auto"]))}),se=O(b(),q()),dn=w({card:n(F(q())),row:n(F(q())),page:n(F(q()))}),ln=we({order:n(F(b())),hide:n(F(b())),first:n(b()),primary:n(x(k(1,80),void 0,40)),scene:n(k(1,40)),pages:n(k(1,40))}),qe=w({$schema:n(b()),format:T(pe),formatVersion:T(fe),name:k(1,80),description:n(I),version:n(G().check(ke(),Y(1))),kinds:O(A("kind"),Qe).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:n(O(b(),_e)),acts:n(O(A("act"),nn)),rules:n(O(A("rule"),on)),roles:n(F(A("role"))),policy:n(an),modules:n(se),lenses:n(F(se)),pages:n(ln),views:n(O(b(),R([dn,F(q())]))),brand:n(cn),settings:n(F(se)),migrations:n(F(se))});var pn={};function Ie(e,t=pn,i=fe){let{document:a,respelled:p}=ze(e),f=p.length>0?{respelled:p}:{};if(!a||typeof a!="object"||Array.isArray(a))return{document:a};let m=a;if(m.format!==pe||typeof m.formatVersion!="number"||m.formatVersion>=i)return{document:a,...f};let c=m.formatVersion,r=structuredClone(m);for(let s=c;s<i;s++){let d=t[s];if(!d)throw new Error(`there is no upgrade from format ${s} to ${s+1}`);r={...d(r),formatVersion:s+1}}return{document:r,from:c,...f}}function Ne(e,t,i){let a=Object.keys(e).filter(c=>e[c].edges?.[t]!==void 0);if(a.length===0)return;let p=a.map(c=>e[c].edges[t].to),f=p.some(c=>c==="*")?"*":[...new Set(p.flatMap(c=>c))];if(i.length===0||i.some(c=>a.includes(c)))return{reversed:!1,kinds:f};let m=a.filter(c=>{let r=e[c].edges[t].to;return r==="*"||i.every(s=>r.includes(s))});return m.length>0?{reversed:!0,kinds:m}:{reversed:!1,kinds:f}}function Ve(e,t,i=`kinds.${e}.page`){let a=t.page;if(!a)return[];let p=[],f=[...Object.keys(t.fields),...Object.keys(t.computed??{})],m=new Set,c=(s,d)=>{f.includes(s)?m.has(s)&&p.push(u("page-field-twice",d,`"${s}" is on ${e}'s page twice; name each field once`)):p.push(u("page-field",d,`${e}'s page is to show "${s}", and ${e} has no field or computed field called that`,`use one of: ${f.join(", ")}`)),m.add(s)};(a.fields??[]).forEach((s,d)=>c(s,`${i}.fields.${d}`));let r=new Set;return(a.groups??[]).forEach((s,d)=>{let l=s.title.trim().toLowerCase();r.has(l)&&p.push(u("page-group-twice",`${i}.groups.${d}.title`,`${e}'s page has two groups called "${s.title}"; give each its own title`)),r.add(l),s.fields.forEach((y,o)=>c(y,`${i}.groups.${d}.fields.${o}`))}),p}var fn=new Set(["subject","now","today"]);function un(e){if(typeof e=="string"){if(e.length>Q)return{findings:[u("too-large","",`a document may be at most ${Q/1024} KB`)]};try{e=JSON.parse(e)}catch(a){return{findings:[u("not-json","",`this is not JSON: ${a.message}`)]}}}else if(JSON.stringify(e??null).length>Q)return{findings:[u("too-large","",`a document may be at most ${Q/1024} KB`)]};try{e=Ie(e).document}catch(a){return{findings:[u("format","formatVersion",a.message)]}}let t=qe.safeParse(e);if(!t.success)return{findings:t.error.issues.map(a=>{let p=a.path.map(String).join(".");if(a.code==="unrecognized_keys")return u("unknown-key",p,`${a.keys.map(f=>`"${f}"`).join(", ")} ${a.keys.length===1?"is":"are"} not part of a Graview document here`,"check the spelling against docs/declaration-document.md");if(a.code==="invalid_union"&&/\.effects\.\d+$/.test(p))return u("effect-shape",p,"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(a.code==="invalid_key"){let f=a.issues?.[0]?.message;return u("shape",p,`the name "${String(a.path.at(-1))}" is not allowed here${f?`: ${f}`:""}`)}return u("shape",p,a.message)})};let i=t.data;return{document:i,findings:mn(i)}}var ie=e=>e===void 0?[]:Array.isArray(e)?e:[e];function Be(e){let t=new Map;for(let[i,a]of Object.entries(e.kinds))for(let[p,f]of Object.entries(a.edges??{})){let m=t.get(p);t.set(p,{name:p,from:[...m?.from??[],i],to:f.to==="*"||m?.to==="*"?"*":[...new Set([...m?.to??[],...f.to])],cardinality:f.cardinality??"many"})}return t}function qn(e){let t=new Map;for(let[a,p]of Object.entries(e.kinds)){let f=X(p);t.set(a,{fields:new Set(Object.keys(p.fields)),edges:new Map(Object.entries(p.edges??{}).map(([m,c])=>[m,c.cardinality??"many"])),...f?{computed:f}:{}})}let i=X(e);return i&&t.set(Se,{computed:i}),t}function Ue(e,t){let i=[],a=ie(e.on),p=(f,m)=>{let c=Ne(t.kinds,f,a)?.reversed===!0,[r,s]=c?["$to","$subject"]:["$subject","$to"];return m==="connect"?{connect:f,from:r,to:s}:{sever:f,from:r,to:s}};if(e.creates){let f=t.kinds[e.creates],m={};for(let c of Object.keys(f?.fields??{}))m[c]=`$${c}`;for(let c of e.effects??[])"set"in c&&!("create"in c)&&v(c.target)==="new"&&Object.assign(m,c.set);i.push({create:e.creates,as:"new",set:m})}return e.sets&&i.push({set:e.sets}),e.writes&&!(e.creates&&e.on===void 0)&&i.push({set:Object.fromEntries(e.writes.map(f=>[f,`$${f}`]))}),e.connects&&(e.replaces&&i.push({replace:e.replaces===!0?[e.connects]:[...e.replaces],keep:e.connects}),i.push(p(e.connects,"connect"))),e.severs&&i.push(p(e.severs,"sever")),e.setsOther&&(e.connects||e.severs)&&i.push({set:e.setsOther,target:"$to"}),e.removes&&i.push({remove:"$subject"}),e.effects&&i.push(...e.effects.filter(f=>!(e.creates&&"set"in f&&!("create"in f)&&v(f.target)==="new"))),i}function me(e,t,i){try{let a=U(e),p=te(a);for(let f of p.unknownFunctions)i.push(u("unknown-function",t,`"${f}" is not a function the rule language knows`,"see docs/declaration-document.md#expression-language"));return a}catch(a){if(a instanceof oe){i.push(u("expression",t,a.sentence+` (at character ${a.at+1})`));return}throw a}}function ge(e,t,i){try{return L(e)}catch(a){if(a instanceof Ae||a instanceof oe){i.push(u("template",t,(a instanceof oe,a.sentence)));return}throw a}}function mn(e){let t=[],i=new Set(Object.keys(e.kinds)),a=Be(e),p=e.acts??{},f=new Set(e.roles??[]);for(let[c,r]of Object.entries(e.kinds)){let s=`kinds.${c}`;for(let[l,y]of Object.entries(r.edges??{})){if(y.to!=="*")for(let o of y.to)i.has(o)||t.push(u("edge-target",`${s}.edges.${l}.to`,`"${o}" is not a kind this document declares`));r.fields[l]&&t.push(u("edge-field-clash",`${s}.edges.${l}`,`"${l}" is both a field and a relation of ${c}`,"rename one of them"))}r.lifecycle&&!r.fields[r.lifecycle.field]&&t.push(u("lifecycle-field",`${s}.lifecycle.field`,`${c} has no field "${r.lifecycle.field}"`));let d=l=>r.computed!==void 0&&Object.hasOwn(r.computed,l);for(let l of r.glance??[])!r.fields[l]&&!d(l)&&t.push(u("glance-field",`${s}.glance`,`a glance at ${c} is to say "${l}", and ${c} has no field or computed field called that`,`use one of: ${[...Object.keys(r.fields),...Object.keys(r.computed??{})].join(", ")}`));t.push(...Ve(c,r));for(let l of["label","describe"]){let y=r[l];if(!y)continue;let o=ge(y,`${s}.${l}`,t);for(let h of o??[])if(h.expr){for(let $ of te(h.expr).names)if(!r.fields[$]){if(d($)){Te(r,$)||t.push(u("template-field",`${s}.${l}`,`${c}'s ${$} is worked out from beyond the record, and a ${l} is said with no graph to read`,`show it in a view instead, or name a computed field worked out from ${c}'s own fields`));continue}t.push(u("template-field",`${s}.${l}`,`${c} has no field "${$}" for its ${l} to show`,l==="label"?"a label can only show the record's own fields and what they work out":void 0))}}}for(let[l,y]of Object.entries(r.fields))y.default!==void 0&&y.type==="enum"&&!y.options?.includes(String(y.default))&&t.push(u("default-option",`${s}.fields.${l}.default`,`"${String(y.default)}" is not one of ${l}'s options`))}for(let[c,r]of Object.entries(p)){let s=`acts.${c}`;for(let o of ie(r.on))i.has(o)||t.push(u("act-kind",`${s}.on`,`"${o}" is not a kind this document declares`));let d=ie(r.on),l=Ue(r,e);if(r.creates&&r.on===void 0&&r.writes&&i.has(r.creates))for(let o of r.writes)e.kinds[r.creates].fields[o]||(e.kinds[r.creates].computed?.[o]!==void 0?t.push(u("computed-written",`${s}.writes`,`${r.creates}'s ${o} is worked out, not written: no act can set it`,"write the stored fields it is worked out from")):t.push(u("act-field",`${s}.writes`,`${r.creates} has no field "${o}"`)));l.length===0&&t.push(u("act-empty",s,`"${c}" does nothing`,"give it effects or a shorthand such as sets or creates"));let y=new Map;l.forEach((o,h)=>{let $=l.length-(r.effects?.length??0),j=r.effects&&h>=$?`${s}.effects.${h-$}`:s;if("create"in o){if(!i.has(o.create))t.push(u("act-kind",`${j}.create`,`"${o.create}" is not a kind this document declares`));else for(let z of Object.keys(o.set??{}))e.kinds[o.create].fields[z]||(e.kinds[o.create].computed?.[z]!==void 0?t.push(u("computed-written",`${j}.set.${z}`,`${o.create}'s ${z} is worked out, not written: no act can set it`,"set the stored fields it is worked out from")):t.push(u("act-field",`${j}.set.${z}`,`${o.create} has no field "${z}"`)));o.as&&y.set(o.as,o.create)}else if("connect"in o||"sever"in o){let z="connect"in o?o.connect:o.sever;a.has(z)||t.push(u("act-edge",`${j}.${"connect"in o?"connect":"sever"}`,`"${z}" is not a relation any kind declares`)),v(o.from)==="subject"&&d.length===0&&t.push(u("act-subject",`${s}.on`,`"${c}" acts on "$subject" but does not say which kinds it is "on"`))}else if("set"in o){let z=v(o.target??"$subject"),M=z==="subject"?d:y.has(z??"")?[y.get(z)]:[];z==="subject"&&d.length===0&&t.push(u("act-subject",`${s}.on`,`"${c}" changes "$subject" but does not say which kinds it is "on"`));for(let K of Object.keys(o.set))for(let N of M)!i.has(N)||e.kinds[N].fields[K]||(e.kinds[N].computed?.[K]!==void 0?t.push(u("computed-written",`${j}.set.${K}`,`${N}'s ${K} is worked out, not written: no act can set it`,"set the stored fields it is worked out from")):t.push(u("act-field",`${j}.set.${K}`,`${N} has no field "${K}"`)))}else"remove"in o&&v(o.remove)==="subject"&&d.length===0&&t.push(u("act-subject",`${s}.on`,`"${c}" removes "$subject" but does not say which kinds it is "on"`));("set"in o&&o.set?Object.values(o.set):[]).forEach(z=>{z&&typeof z=="object"&&!Array.isArray(z)&&"expr"in z&&me(z.expr,`${j}.set`,t)})}),r.allowedWhen&&me(r.allowedWhen,`${s}.allowedWhen`,t),r.refusal&&ge(r.refusal,`${s}.refusal`,t)}for(let[c,r]of Object.entries(e.rules??{})){let s=`rules.${c}`;r.over!=="graph"&&!i.has(r.over)&&t.push(u("rule-kind",`${s}.over`,`"${r.over}" is not a kind this document declares`));let d=r.over==="graph"?void 0:e.kinds[r.over];for(let l of["when","require"]){let y=r[l];if(!y)continue;let o=me(y,`${s}.${l}`,t);if(!o)continue;let h=te(o);for(let $ of h.names)if(r.over==="graph")t.push(u("rule-name",`${s}.${l}`,`"${$}" means nothing in a rule over the whole graph`,`name a kind in "over", or use all('kind')`));else if(d&&!d.fields[$]&&!d.edges?.[$]&&d.computed?.[$]===void 0){let j=Object.keys(d.edges??{}).find(E=>E.includes("-")&&E.split("-").includes($));t.push(u("rule-name",`${s}.${l}`,`${r.over} has no field or relation called "${$}"`,j?`"${j}" reads as a subtraction in a rule; rename the relation to one camelCase word, like "${j.replace(/-([a-z0-9])/g,(E,z)=>z.toUpperCase())}"`:void 0))}for(let $ of h.edges)a.has($)||t.push(u("rule-edge",`${s}.${l}`,`"${$}" is not a relation any kind declares`));for(let $ of h.sweeps)i.has($)?r.over!=="graph"&&t.push(ve("rule-cost",`${s}.${l}`,`this rule looks at every ${$} for every ${r.over}, which grows slowly as the app grows`,"walk a relation with out()/in() instead of all() where you can")):t.push(u("rule-kind",`${s}.${l}`,`"${$}" is not a kind this document declares`))}r.says&&ge(r.says,`${s}.says`,t),(r.repairs??[]).forEach((l,y)=>{!p[l.act]&&!/^(edit|remove)-/.test(l.act)&&t.push(u("repair-act",`${s}.repairs.${y}.act`,`"${l.act}" is not an act this document declares`))})}let m=e.policy;return m&&(m.grants.forEach((c,r)=>{if(c.roles!=="*"&&f.size>0)for(let s of c.roles)f.has(s)||t.push(u("grant-role",`policy.grants.${r}.roles`,`"${s}" is not one of the document's roles`));if(c.mutations!=="*")for(let s of c.mutations)!p[s]&&!/^(edit|remove)-/.test(s)&&t.push(u("grant-act",`policy.grants.${r}.mutations`,`"${s}" is not an act this document declares`))}),(m.sees??[]).forEach((c,r)=>{for(let s of c.kinds)i.has(s)||t.push(u("sight-kind",`policy.sees.${r}.kinds`,`"${s}" is not a kind this document declares`));if(c.roles!=="*"&&f.size>0)for(let s of c.roles)f.has(s)||t.push(u("sight-role",`policy.sees.${r}.roles`,`"${s}" is not one of the document's roles`))})),t.push(...Me(e)),t}function gn(e,t,i,a){let p=new Map,f=ie(e.on),m=new Map,c=new Map;(f.length>0||t.some(o=>"remove"in o&&v(o.remove)==="subject"||"from"in o&&(v(o.from)==="subject"||v(o.to)==="subject")||"set"in o&&!("create"in o)&&v(o.target??"$subject")==="subject"))&&p.set(de,{ref:f.length>0?f:"*",required:!0});let s=e.args??{},d=e.writes?.length===1,l=(o,h)=>h&&o.type===h.type&&o.min===void 0&&o.max===void 0&&o.step===void 0?{...o,...h.min===void 0?{}:{min:h.min},...h.max===void 0?{}:{max:h.max},...h.step===void 0?{}:{step:h.step}}:o,y=(o,h,$)=>{if(o===de||fn.has(o)||m.has(o)||p.has(o))return;let j=s[o]?l(s[o],$):void 0;p.set(o,j?{field:j,optional:!j.required,required:!!j.required}:h())};for(let o of t)if("create"in o){let h=i.kinds[o.create];for(let[$,j]of Object.entries(o.set??{})){let E=v(j),z=h?.fields[$];if(E&&z){let M=!!z.required&&z.default===void 0;y(E,()=>({field:z,optional:!M,required:M}),z)}}o.as&&m.set(o.as,o.create)}else if("connect"in o||"sever"in o){let h=a.get("connect"in o?o.connect:o.sever);for(let[$,j]of[["from",o.from],["to",o.to]]){let E=v(j);if(!E)continue;let z=$==="to"?h?.to??"*":h?.from??"*";z!=="*"&&!c.has(E)&&c.set(E,z),y(E,()=>({ref:z,required:!0}))}}else if("set"in o){let h=v(o.target??"$subject"),$=h==="subject"?f[0]:m.get(h??"")??c.get(h??"")?.[0];h&&h!=="subject"&&!m.has(h)&&y(h,()=>({ref:"*",required:!0}));for(let[j,E]of Object.entries(o.set)){let z=v(E);if(!z)continue;let M=$?i.kinds[$]?.fields[j]:void 0;y(z,()=>M?{field:M,optional:!d,required:d}:{any:!0,required:!1},M)}}else if("remove"in o){let h=v(o.remove);h&&y(h,()=>({ref:"*",required:!0}))}for(let[o,h]of Object.entries(s))p.has(o)||p.set(o,{field:h,optional:!h.required,required:!!h.required});return p}function In(e,t={}){let i=un(e);if(!i.document||ce(i.findings))return{ok:!1,findings:i.findings};let a=i.document,p=[...i.findings];t.previous&&p.push(...zn(a,t.previous));let f=hn(a,p);return ce(f.findings)?{ok:!1,findings:f.findings}:Fe(f,t)}function hn(e,t){let i=Be(e),a={};for(let[s,d]of Object.entries(e.kinds)){let l=Ee(d),y=d.label??(l?`{${l}}`:void 0),o=X(d);a[s]={...y?{label:L(y)}:{},...d.describe?{describe:L(d.describe)}:{},...o?{computed:[...o]}:{}}}let p={};for(let[s,d]of Object.entries(e.acts??{})){let l=Ue(d,e),y=gn(d,l,e,i),o=d.destructive??l.some(g=>"remove"in g||"sever"in g||"replace"in g),h=[...new Set(l.flatMap(g=>"create"in g?[g.create]:[]))],$=[...new Set(l.flatMap(g=>"connect"in g?[g.connect]:[]))],j=[...new Set(l.flatMap(g=>"sever"in g?[g.sever]:"replace"in g?g.replace:[]))],E=[...new Set(l.flatMap(g=>"set"in g&&!("create"in g)&&v(g.target??"$subject")==="subject"?Object.keys(g.set):[]))],z=new Map;for(let g of l){if(!("connect"in g)&&!("sever"in g))continue;let S=i.get("connect"in g?g.connect:g.sever);for(let[D,Le]of[["from",g.from],["to",g.to]]){let ee=v(Le),ae=D==="to"?S?.to:S?.from;ee&&ee!=="subject"&&ae&&ae!=="*"&&z.set(ee,[...new Set([...z.get(ee)??[],...ae])])}}let M={};for(let g of l){if(!("set"in g)||"create"in g)continue;let S=v(g.target??"$subject");for(let D of S&&S!=="subject"&&z.get(S)||[])M[D]=[...new Set([...M[D]??[],...Object.keys(g.set)])]}let K={};for(let g of l)if(!(!("set"in g)||"create"in g||v(g.target??"$subject")!=="subject"))for(let[S,D]of Object.entries(g.set??{}))typeof D=="string"&&v(D)===void 0||typeof D=="number"||typeof D=="boolean"?K[S]=typeof D=="string"&&D.startsWith("$$")?D.slice(1):D:delete K[S];let N=h.length===0&&l.every(g=>!("set"in g)||!g.set||Object.values(g.set).every(S=>!(S&&typeof S=="object"&&!Array.isArray(S)&&"expr"in S))),he=new Map;for(let g of l)if(!(!("set"in g)||!g.set))for(let S of Object.values(g.set))S&&typeof S=="object"&&!Array.isArray(S)&&"expr"in S&&he.set(S.expr,U(S.expr));p[s]={title:d.title??s.replace(/-/g," "),effects:l,args:[...y],...d.allowedWhen?{guard:U(d.allowedWhen)}:{},...d.refusal?{refusal:L(d.refusal)}:{},exprs:[...he],destructive:o,idempotent:N,creates:h,connects:$,severs:j,writes:E,writesOther:M,sets:K}}let f={};for(let[s,d]of Object.entries(e.rules??{}))f[s]={title:d.title??s.replace(/-/g," "),require:U(d.require),...d.when?{when:U(d.when)}:{},...d.says?{says:L(d.says)}:{}};let m=Oe(e,t),c=Re(e),r=De(e);return{format:xe,document:e,findings:t,kinds:a,...e.computed?{facts:[...X(e)??[]]}:{},edges:[...i].map(([s,{from:d,to:l,cardinality:y}])=>[s,{from:d,to:l,cardinality:y}]),acts:p,rules:f,brand:m,...Object.keys(c).length>0?{viewSpecs:c}:{},...r?{home:r}:{}}}function Nn(e,t){let i=e.split(/[\s:·]/).find(a=>a.length>0)??e;return t.kinds[i]?`kinds.${i}`:t.acts?.[i]?`acts.${i}`:t.rules?.[i]?`rules.${i}`:e}function Vn(e,t,i){let a=/^defineNode\("([^"]+)"\)/.exec(t)?.[1],p=a?i.kinds[a]:void 0;if(!a||!p)return e;let f=Object.keys(p.fields).filter(m=>m!=="label").slice(0,3);return{...e,path:`kinds.${a}.glance`,fix:`Say which: "glance": [${f.map(m=>`"${m}"`).join(", ")}] on kinds.${a} \u2014 the facts a person compares one by, at a glance.`}}function zn(e,t){let i=[],a=new Set(Object.values(t.kinds).flatMap(p=>Object.keys(p.edges??{})));for(let[p,f]of Object.entries(e.kinds)){let m=f.renamedFrom;m&&!t.kinds[m]&&i.push(u("renamed-from-nothing",`kinds.${p}.renamedFrom`,`${p} says it was ${m}, and the previous version has no kind called ${m}`,"name the kind it was, or drop renamedFrom"));let c=t.kinds[m??p];for(let[r,s]of Object.entries(f.fields)){let d=s.renamedFrom;d&&!c?.fields[d]&&i.push(u("renamed-from-nothing",`kinds.${p}.fields.${r}.renamedFrom`,`${r} says it was ${d}, and the previous ${m??p} has no field called ${d}`,"name the field it was, or drop renamedFrom"))}for(let[r,s]of Object.entries(f.edges??{})){let d=s.renamedFrom;d&&!a.has(d)&&i.push(u("renamed-from-nothing",`kinds.${p}.edges.${r}.renamedFrom`,`${r} says it was ${d}, and the previous version has no relation called ${d}`,"name the relation it was, or drop renamedFrom"))}}return i}export{We as ActRefusal,In as compileDocumentWithoutCheck,Ue as effectsOf,Nn as frameworkPath,Vn as inDocumentWords,qn as kindShapes,un as readDocument};
@@ -0,0 +1 @@
1
+ import{e as B}from"./chunk.XNYBOKLW.js";import{A as M,da as _,h as q}from"./chunk.SVL6I37U.js";import{$a as j,N as H,O as L,R,W as K,Z as T}from"./chunk.P7YN4Z3K.js";import{a as J,b as G}from"./chunk.MRK6QJV5.js";import{b as $}from"./chunk.AJZBJBMO.js";var i=$(J(),1),a=$(G(),1);function ae({affordance:r,onApply:o,onCancel:u}){let{store:l}=_(),[y,m]=(0,i.useState)({}),[f,x]=(0,i.useState)(""),[A,F]=(0,i.useState)(U),W=(0,i.useId)(),O=(0,i.useRef)(null),v=r.open.filter(e=>!(e.name in y)),s=v[0];if((0,i.useEffect)(()=>x(""),[s?.name]),(0,i.useEffect)(()=>{O.current?.scrollIntoView?.({block:"nearest",inline:"nearest"})},[s?.name]),(0,i.useLayoutEffect)(()=>{let e=O.current,n=typeof document>"u"?null:document.activeElement;if(!e||n&&n!==document.body&&!e.contains(n))return;let p=e.querySelector("form input, [role=group] button:not([disabled])");p&&p!==n&&p.focus()},[s?.name]),!s)return null;let h=e=>{let n={...y,[s.name]:e};if(r.open.filter(c=>!(c.name in n)).length===0){let c=o(Object.fromEntries(Object.entries(n).filter(([,E])=>E!==void 0)));c&&c.length>0&&m(Object.fromEntries(Object.entries(n).filter(([E])=>!c.includes(E))))}else m(n)},N=s.optional?(0,a.jsx)("button",{type:"button",onClick:()=>h(void 0),style:{fontSize:"0.8125rem"},children:"Skip"}):null,t=s.shape??{type:"unknown"},d=Q(s,t),g=j(l.schema,l.allMutations().find(e=>e.name===r.mutation),s.name),[z,V]=(0,i.useState)(""),I=(0,i.useMemo)(()=>{let e=d.map(n=>l.graph.getNode(n)).filter(n=>n!==void 0);return H(e,n=>l.schema.tryDefinition(n))},[d,l]),C=e=>{let n=Z(l,t,e),p=t.type==="choice"||t.type==="several"&&t.of.type==="choice"?g.option(e):n,c=I.get(e);return c?`${p} \xB7 ${c}`:p},w=(0,i.useMemo)(()=>{let e=z.trim().toLowerCase();return e===""?d:d.filter(n=>C(n).toLowerCase().includes(e))},[d,z,l,t,I]),b=t.type==="several",P=t.type==="file"?t:t.type==="several"&&t.of.type==="file"?t.of:void 0,D=b&&d.length===0,k=s.kinds&&s.kinds.length>0&&!s.kinds.includes("*")?s.kinds.map(e=>R(T(l.schema.tryDefinition(e),e))).join(" or "):g.label,Y=r.open.length>1?`${k} \xB7 ${r.open.length-v.length+1} of ${r.open.length}`:k;return(0,a.jsxs)("div",{ref:O,"data-graview-asking":r.id,style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:4,padding:"5px 0 2px"},children:[r.open.length>1||d.length>0?(0,a.jsx)("span",{id:W,style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:Y}):null,d.length>S?(0,a.jsx)("input",{type:"search",value:z,onChange:e=>V(e.target.value),placeholder:`Filter ${d.length}\u2026`,"aria-label":`Filter ${k}`,"data-testid":"ask-filter",style:{font:"inherit",fontSize:"0.8125rem",minWidth:0,padding:"3px 7px"}}):null,P?(0,a.jsxs)("div",{style:{display:"grid",gap:4},children:[(0,a.jsx)(B,{as:"control",value:void 0,onChange:h,several:b,image:P.image===!0,label:g.label}),N]}):d.length>0?(0,a.jsxs)("div",{role:"group","aria-labelledby":W,style:{display:"flex",flexWrap:"wrap",gap:4},children:[w.slice(0,S).map(e=>{let n=A.includes(e);return(0,a.jsx)("button",{type:"button","aria-label":`${k}: ${C(e)}`,...b?{"aria-pressed":n}:{},style:{padding:"3px 9px",fontSize:"0.8125rem",...n?{borderColor:"var(--graview-accent)",color:"var(--graview-accent)"}:{}},onClick:()=>b?F(p=>p.includes(e)?p.filter(c=>c!==e):[...p,e]):h(t.type==="boolean"?e==="yes":e),children:C(e)},e)}),w.length>S?(0,a.jsxs)("span",{"data-testid":"ask-more",style:{alignSelf:"center",fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:[w.length-S," more \u2014 type to narrow"]}):null,w.length===0?(0,a.jsxs)("span",{"data-testid":"ask-none",style:{alignSelf:"center",fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:["None of the ",d.length," match that."]}):null,b?(0,a.jsx)("button",{type:"button",disabled:A.length===0,style:{fontSize:"0.8125rem"},onClick:()=>{let e=A;F(U),h(e)},children:v.length>1?"Next":"Apply"}):null,N]}):(0,a.jsxs)("form",{style:{display:"flex",flexWrap:"wrap",gap:4},onSubmit:e=>{if(e.preventDefault(),D){h(f.split(/[,\n]/).map(n=>n.trim()).filter(Boolean));return}f.trim().length!==0&&h(t.type==="number"?Number(f):f)},children:[t.type==="text"&&t.long?(0,a.jsx)("textarea",{autoFocus:!0,name:s.name,"aria-label":g.label,placeholder:g.label,value:f,rows:4,onChange:e=>x(e.target.value),onKeyDown:e=>{e.key==="Escape"?u():e.key==="Enter"&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),e.currentTarget.form?.requestSubmit())},style:{flex:"1 1 100%",minWidth:0,font:"inherit",fontSize:"0.875rem",lineHeight:1.45,padding:"5px 8px",borderRadius:7,border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",color:"var(--graview-ink)",resize:"vertical",fieldSizing:"content",minHeight:"5.5em",maxHeight:"40vh"}}):(0,a.jsx)("input",{autoFocus:!0,type:t.type==="date"?t.time?"datetime-local":"date":t.type==="number"?"number":"text",name:s.name,"aria-label":g.label,placeholder:D?`${g.label}, separated by commas`:g.label,value:f,...t.type==="number"&&t.min!==void 0?{min:t.min}:{},...t.type==="number"&&t.max!==void 0?{max:t.max}:{},...t.type==="number"&&t.step!==void 0?{step:t.step}:{},onChange:e=>x(e.target.value),onKeyDown:e=>{e.key==="Escape"&&u()},style:{flex:1,minWidth:0,font:"inherit",fontSize:"0.875rem",padding:"5px 8px",borderRadius:7,border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",color:"var(--graview-ink)"}}),(0,a.jsx)("button",{type:"submit",disabled:!D&&f.trim().length===0,style:{fontSize:"0.8125rem"},children:v.length>1?"Next":"Apply"}),N]})]})}var U=[],S=10;function Q(r,o){return r.candidates&&r.candidates.length>0?r.candidates:o.type==="choice"?o.options:o.type==="several"&&o.of.type==="choice"?o.of.options:o.type==="boolean"?X:[]}var X=["yes","no"];function Z(r,o,u){return o.type==="boolean"||o.type==="choice"||o.type==="several"&&o.of.type==="choice"?u:ee(r,u)}function ee(r,o){let u=q(o);if(u){let m=K(r.schema,r.graph.getNode(u.from)?.kind??"",u.kind,"out");return m.charAt(0).toUpperCase()+m.slice(1)}let l=M(o);if(l.length>0)return l.map(m=>r.schema.tryDefinition(m)?.plural??`${m}s`).join(" + ");let y=r.graph.getNode(o);return y?L(r.schema.tryDefinition(y.kind),y):o}export{ae as a,ee as b};
@@ -1,4 +1,4 @@
1
- import{a as Be,b as Oe,c as qt,d as _t,f as We}from"./chunk.G3BOZHKR.js";import{h as Pt,i as Dt,j as Wt,k as Ft}from"./chunk.H4LHHT56.js";import{a as Bt,b as Ot}from"./chunk.EKZWX6NG.js";import"./chunk.7BAUPTMY.js";import"./chunk.TTODVIXW.js";import"./chunk.WX5CJ7PI.js";import{d as Kt}from"./chunk.C5N4RTPF.js";import{a as na}from"./chunk.IKT7JQUW.js";import{b as Lt}from"./chunk.T6KID3WO.js";import{b as Et,i as Ht}from"./chunk.6DU4XN2F.js";import{b as Mt}from"./chunk.MJ67MK4R.js";import"./chunk.US4KIJSW.js";import{a as It}from"./chunk.BYUQOV3O.js";import{a as Rt,b as Q}from"./chunk.F2KDFGHR.js";import"./chunk.B57EIGTS.js";import{l as Nt}from"./chunk.2YVXTTC2.js";import"./chunk.WWRWXFYR.js";import"./chunk.BJ2Y5F66.js";import"./chunk.A4SJ7EEY.js";import"./chunk.6KJSFIO7.js";import"./chunk.DEZEXD24.js";import"./chunk.YZZGD5OY.js";import"./chunk.DSZ3I557.js";import"./chunk.ZRVDIVYY.js";import"./chunk.AHDOKM4O.js";import"./chunk.JCZH55RX.js";import{B as yt,Ba as ze,E as kt,F as St,G as $t,K as he,W as zt,a as wt,ba as Ct,ca as T,ea as At,i as ht,j as ye,m as we,n as mt,o as ft,p as ke,pa as De,q as bt,qa as Tt,r as Se,ra as de,s as Ne,ua as $e,v as Pe,xa as Ee,y as xt}from"./chunk.2WFEFZAW.js";import{O as lt,Q as xe,R as dt,T as Me,Ta as gt,U as Le,Wa as pt,Xa as ct,fb as ut,mb as vt,xb as W,zb as F}from"./chunk.RAE4M3KQ.js";import{a as ae,b as E}from"./chunk.MRK6QJV5.js";import{b as w}from"./chunk.AJZBJBMO.js";var Ce=t=>`${t.saturation}% ${t.lightness}%`,Ut=t=>`${Ce(t)} / ${t.alpha}`;function la(t){let a=vt(t);return`
1
+ import{a as Be,b as Oe,c as qt,d as _t,f as We}from"./chunk.YXQCEXZX.js";import"./chunk.4MAYBFPU.js";import{h as Pt,i as Dt,j as Bt,k as Ot,n as Wt,o as Ft}from"./chunk.QFJRXAU3.js";import"./chunk.UEEXBS2U.js";import"./chunk.6MZBFEXW.js";import"./chunk.ZLPA5BAW.js";import"./chunk.NIEQZOHX.js";import"./chunk.XOC5BRPU.js";import{d as Kt}from"./chunk.XXNC2AFL.js";import{b as Nt}from"./chunk.BK2MJOUN.js";import{a as na}from"./chunk.IKT7JQUW.js";import{b as Et,i as Mt}from"./chunk.NQP3DWME.js";import{b as Lt}from"./chunk.3RT463XY.js";import"./chunk.ZOWWWRYA.js";import{l as Rt}from"./chunk.LEVR7WLB.js";import"./chunk.WVUJXDXZ.js";import"./chunk.TAW67PZU.js";import"./chunk.YOMW4MKD.js";import"./chunk.DRIWJRQW.js";import"./chunk.KSEKVHJJ.js";import"./chunk.JIWB6VGT.js";import{a as Ht}from"./chunk.564EIRAT.js";import{a as It,b as Q}from"./chunk.7ZJPJARU.js";import"./chunk.XNYBOKLW.js";import"./chunk.AHDOKM4O.js";import"./chunk.6R4EI47C.js";import"./chunk.NLFLFIDS.js";import{a as wt,d as ze}from"./chunk.6LJ66MB7.js";import{A as yt,D as kt,E as St,F as $t,J as he,V as zt,ca as Ct,da as T,fa as At,h as ht,i as ye,l as we,m as mt,n as ft,o as ke,p as bt,q as Se,qa as De,r as Ne,ra as Tt,sa as de,u as Pe,va as $e,x as xt,ya as Ee}from"./chunk.SVL6I37U.js";import{Db as W,Fb as F,T as lt,V as xe,W as dt,Y as Me,Z as Le,Za as gt,ab as pt,bb as ct,lb as ut,sb as vt}from"./chunk.P7YN4Z3K.js";import{a as ae,b as E}from"./chunk.MRK6QJV5.js";import{b as w}from"./chunk.AJZBJBMO.js";var Ce=t=>`${t.saturation}% ${t.lightness}%`,Ut=t=>`${Ce(t)} / ${t.alpha}`;function la(t){let a=vt(t);return`
2
2
 
3
3
 
4
4
  .graview-altitude-control {
@@ -1036,5 +1036,5 @@ import{a as Be,b as Oe,c as qt,d as _t,f as We}from"./chunk.G3BOZHKR.js";import{
1036
1036
  [data-graview-connector][data-graview-activity] {
1037
1037
  animation: graview-relation 1200ms cubic-bezier(0.22, 1, 0.36, 1);
1038
1038
  }`}function Fe(t="dark",a={}){let p=la(t);return a.scope===void 0?p:Et(p,a.scope)}var K=w(ae(),1);var ge=w(E(),1);function Ke(){let{store:t}=T(),a=At(),p=(0,K.useMemo)(()=>t.graph.allEdges().length>0,[t,a]),[s,i]=(0,K.useState)(!1),v=(0,K.useId)(),b=(0,K.useRef)(null),m=(0,K.useRef)(null);return(0,K.useEffect)(()=>{if(!s)return;let x=S=>{let L=S.target;L&&(m.current?.contains(L)||b.current?.contains(L))||i(!1)};return document.addEventListener("pointerdown",x,!0),()=>document.removeEventListener("pointerdown",x,!0)},[s]),p?(0,ge.jsxs)("div",{style:{display:"contents"},onKeyDown:x=>{x.key!=="Escape"||!s||(x.preventDefault(),x.stopPropagation(),i(!1),b.current?.focus({preventScroll:!0}))},children:[(0,ge.jsx)("button",{ref:b,type:"button","data-testid":"lines-key","aria-expanded":s,"aria-controls":v,title:"What the lines mean",onClick:()=>i(x=>!x),style:{position:"absolute",top:60,right:14,zIndex:F("overview"),height:30,padding:"0 11px",borderRadius:8,borderColor:"transparent",fontSize:"0.8125rem",color:s?"var(--graview-accent)":"var(--graview-ink-muted)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-low)"},children:"Key"}),s?(0,ge.jsx)("div",{ref:m,id:v,"data-testid":"lines-key-pane","data-graview-offstage":"",style:{position:"absolute",top:98,right:14,zIndex:F("rail"),width:_t,maxHeight:"calc(100cqh - 120px)",overflowY:"auto",boxSizing:"border-box",padding:"8px 8px",borderRadius:10,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)"},children:(0,ge.jsx)(qt,{inside:!0})}):null]}):null}var h=w(ae(),1);var l=w(E(),1),da="A";function qe({placement:t="float"}={}){let{store:a,menuAt:p,setMenuAt:s,view:i,registerActsDoor:v}=T();(0,h.useEffect)(()=>{if(t==="menu")return v({key:da,open:e=>{let o=e.getBoundingClientRect(),r=e.closest("[data-graview-pick]")?.getAttribute("data-graview-pick")??e.closest("[data-graview-view]")?.getAttribute("data-graview-view")??void 0;s({x:Math.round(o.left+Math.min(16,o.width/2)),y:Math.round(Math.min(o.bottom,o.top+36)),...r?{on:r}:{}})}}),()=>v(null)},[t,v,s]);let b=(0,h.useRef)(null),m=(0,h.useRef)(null),x=(0,h.useRef)(null),S=e=>{let o=e.closest("[data-graview-asking]")?.getAttribute("data-graview-asking"),r=e.getAttribute("data-pin-for"),U=o??e.getAttribute("data-affordance")??(r===null?null:`pin:${r}`);m.current=U===null?null:{key:U,element:e}};(0,h.useEffect)(()=>{let e=b.current,o=m.current;if(o===null||document.activeElement!==document.body||o.element.isConnected)return;let r=o.key;if(!e){m.current=null,x.current?.focus();return}((r.startsWith("pin:")?e.querySelector(`[data-pin-for="${CSS.escape(r.slice(4))}"]`):null)??e.querySelector(`[data-affordance="${CSS.escape(r)}"]:not([disabled])`)??e).focus()});let[L,z]=(0,h.useState)(null);(0,h.useLayoutEffect)(()=>{let e=b.current?.offsetParent??b.current?.parentElement;if(e instanceof HTMLElement&&(x.current=e),!e)return;let o=e.getBoundingClientRect();z(r=>r&&r.left===o.left&&r.top===o.top&&r.width===o.width&&r.height===o.height?r:{left:o.left,top:o.top,width:o.width,height:o.height})});let{selection:c,set:C,clear:O}=De(),[$,J]=(0,h.useState)(()=>Bt()),Z=p?.on??c[c.length-1],G=(0,h.useMemo)(()=>({pins:$,...Z===void 0?{}:{focus:Z}}),[$,Z]),ne=(0,h.useMemo)(()=>new Set(a.allMutations().filter(e=>e.pinned).map(e=>e.name)),[a]),{affordances:f,withheld:P,observations:oe}=Wt(G),N=oe.some(e=>e.id.startsWith("schema:waits:")),{apply:Y,preview:D}=Ft(),[_,j]=(0,h.useState)(null),[Te,ie]=(0,h.useState)(!1),[fe,pe]=(0,h.useState)(!1),[n,d]=(0,h.useState)(""),[g,A]=(0,h.useState)(null),M=(0,h.useRef)([]),ee=(e,o)=>{try{return D(e,o),Y(e,o),A(null),s(null),M.current=[],!0}catch(r){return A(ct(a.schema,a.allMutations(),r)),M.current=r instanceof pt?r.issues.map(U=>String(U.path[0]??"")).filter(Boolean):[],!1}},B=[...new Set(c.flatMap(e=>{let o=a.graph.getNode(e);return o?[o.kind]:[]}))],V=B.length>0?B:[...new Set(c.flatMap(e=>yt(e)))],k=c.length===1?ht(c[0]):null,ce=k?{from:a.graph.getNode(k.from),to:a.graph.getNode(k.to)}:null,Je=k?(()=>{let e=a.schema.tryDefinition(a.graph.getNode(k.from)?.kind??"")?.edges?.[k.kind],o=a.graph.getNode(k.to);return e?.inverse&&o?`From ${Q(a,o.id)}: ${e.inverse}`:null})():null;(0,h.useEffect)(()=>{j(null),ie(!1),pe(!1),A(null),d("")},[c]);let y=p!==null,aa=t==="menu"&&!y,ue=(0,h.useRef)(p);ue.current=p;let Ze=Ee("acts",{open:y&&t==="menu",onOpenChange:e=>{e||s(null)},at:()=>ue.current?{x:ue.current.x,y:ue.current.y}:null,returnTo:()=>{let e=ue.current?.on;return e?document.querySelector(`[data-graview-view="${CSS.escape(e)}"]`):null},align:"start"}),et=(L?.width??Number.POSITIVE_INFINITY)<564;if((0,h.useLayoutEffect)(()=>{let e=b.current?.offsetParent;if(!e||!et||y)return;let o=b.current?.getBoundingClientRect().height??0,r=`${Math.round(o)+20}px`;if(e.style.paddingBottom===r)return;let U=e.style.paddingBottom;return e.style.paddingBottom=r,()=>{e.style.paddingBottom=U}}),c.length===0&&!y)return null;let tt=!(c.length===1&&c[0]===i.focusId),at=Math.max(1,Math.min(9,f.length)),se=[...f.filter(e=>e.provider==="invariant"&&!e.destructive),...f.filter(e=>e.pinned&&e.provider!=="invariant"&&!e.destructive),...f.filter(e=>!e.ties&&!e.destructive&&!e.pinned&&e.provider!=="invariant"),...f.filter(e=>e.ties&&!e.destructive&&!e.pinned&&e.provider!=="invariant"),...f.filter(e=>e.destructive)],rt=se.length>at&&!y,it=n.trim().toLowerCase(),te=rt&&it.length>0?se.filter(e=>`${e.label} ${e.why}`.toLowerCase().includes(it)):null,Re=te??(Te||y?se:se.slice(0,at)),nt=te?0:se.length-Re.length,be=[];for(let e of Re){let o=!y&&e.provider==="invariant",r=!y&&!o&&e.pinned!==void 0&&!e.destructive,U=!y&&!o&&!r&&e.ties===!0&&!e.destructive,st=o?e.why:r?"pinned":U?"its ties":null,ia=o?"violation":r||U?"ties":null,He=be[be.length-1];He&&He.heading===st?He.items.push(e):be.push({heading:st,tone:ia,items:[e]})}let Ie=f.find(e=>e.id===_),ve=c.length===1?Q(a,c[0]):null,ot=e=>{if(!ve)return e;let o=e.startsWith(`"${ve}"`)?e.slice(ve.length+2):e.startsWith(ve)?e.slice(ve.length):null;if(o===null)return e;let r=o.trimStart();return r.length===0?e:r[0].toUpperCase()+r.slice(1)},ra=new Set(y?[]:Re.filter(e=>e.provider==="invariant").map(e=>e.why)),le=oe.filter(e=>!ra.has(e.text)).map(e=>({...e,text:ot(e.text)}));return aa?null:(0,l.jsxs)("section",{...y?Ze.pane:{},ref:e=>{b.current=e,y&&Ze.pane.ref(e)},"aria-label":"Inspector","data-graview-offstage":"","data-testid":y?"context-menu":"inspector-strip",tabIndex:-1,onFocus:e=>S(e.target),onBlur:e=>{e.relatedTarget!==null&&(m.current=null)},onMouseDown:e=>e.stopPropagation(),style:{...y?$e:{position:"absolute",zIndex:F("rail")},boxSizing:"border-box",display:"flex",flexDirection:"column",gap:7,padding:"9px 12px",borderRadius:"var(--graview-radius, 12px)",border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)",...y?{width:300,maxHeight:"min(52cqh, 420px)",overflow:"auto"}:et?{left:10,right:10,width:"auto",bottom:10,maxHeight:"min(42cqh, 300px)",overflow:"auto"}:{left:14,top:i.overview?"min(296px, 38cqh)":44,width:236,maxHeight:i.overview?"calc(100cqh - min(296px, 38cqh) - 20px)":"calc(68cqh - 94px)",overflow:"auto"}},children:[(0,l.jsx)("h2",{style:{...ze,margin:0},children:"Inspector"}),(0,l.jsxs)("div",{style:{display:tt||!y?"flex":"none",alignItems:"baseline",flexWrap:"wrap",gap:"2px 8px",minWidth:0,paddingRight:y?0:24},children:[tt?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("strong",{style:{fontSize:"0.9375rem",whiteSpace:"nowrap"},children:c.length===1?Q(a,c[0]):`${c.length} selected`}),B.length>0||k?(0,l.jsx)("span",{style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)",whiteSpace:"nowrap"},children:k?"relation":B.join(" \xB7 ")}):null,c.length===1&&!k?(0,l.jsx)("span",{style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)",whiteSpace:"nowrap"},children:i.expanded.includes(c[0])?"\xB7 double-click closes":"\xB7 double-click opens"}):null]}):null,(0,l.jsx)("span",{style:{flex:"1 1 auto"}})]}),y?null:(0,l.jsx)("button",{type:"button",onClick:()=>{s(null),O()},"aria-label":"Clear selection",title:"Clear selection",style:{position:"absolute",top:6,right:6,flex:"0 0 auto",width:24,height:24,display:"grid",placeItems:"center",padding:0,fontSize:"0.875rem",lineHeight:1,borderRadius:7},children:"\xD7"}),k&&ce?(0,l.jsxs)("div",{style:{display:"grid",gap:6},children:[Je?(0,l.jsx)("p",{"data-testid":"edge-said",style:{margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)"},children:Je}):null,(0,l.jsx)("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},children:[["from",ce.from],["to",ce.to]].map(([e,o],r)=>(0,l.jsxs)(h.Fragment,{children:[r===1?(0,l.jsx)("span",{"aria-hidden":"true",style:{color:"var(--graview-ink-faint)"},children:"\u2192"}):null,o?(0,l.jsx)("button",{type:"button","data-testid":`edge-${e}`,onClick:()=>C([o.id]),title:`Select ${Q(a,o.id)}`,style:{fontSize:"0.8125rem",padding:"3px 9px",borderRadius:6},children:Q(a,o.id)}):(0,l.jsx)("span",{style:{fontSize:"0.8125rem",color:"var(--graview-ink-faint)"},children:"gone"})]},e))})]}):null,le.length>0?(0,l.jsx)("div",{"data-testid":"observations",title:le.map(e=>e.text).join(`
1039
- `),style:{display:"grid",gap:3},children:le.slice(0,2).map(e=>(0,l.jsxs)("p",{style:{margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)"},children:[e.text,e===le[1]&&le.length>2?(0,l.jsxs)("span",{style:{color:"var(--graview-ink-faint)"},children:[" +",le.length-2]}):null]},e.id))}):null,g?(0,l.jsx)("p",{"data-testid":"refused",style:{margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-warn)"},children:g}):null,rt?(0,l.jsx)("input",{"data-testid":"action-filter",value:n,onChange:e=>d(e.target.value),placeholder:`Filter ${se.length} actions\u2026`,"aria-label":"Filter actions",onKeyDown:e=>{if(e.key==="Escape"){e.stopPropagation(),n.length>0?d(""):e.currentTarget.blur();return}if(e.key==="Enter"&&te?.length===1){let o=te[0];if(o.destructive)return;o.open.length>0?j(o.id):ee(o)&&d("")}},style:{font:"inherit",fontSize:"0.875rem",padding:"5px 9px",borderRadius:8,border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",color:"var(--graview-ink)"}}):null,te!==null&&te.length===0?(0,l.jsxs)("p",{"data-testid":"no-matches",style:{margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)"},children:["Nothing offered here matches \u201C",n.trim(),"\u201D."]}):null,f.length===0&&!N?(0,l.jsx)("p",{"data-testid":"no-affordances",style:{margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)"},children:P.length>0?`Nothing you may do with ${k?"this relation":V.length===1?Me(Le(a.schema.tryDefinition(V[0]),V[0])):"this mix of kinds"} \u2014 ${P.length} action${P.length===1?"":"s"} withheld.`:k?`Nothing can be done with this line yet \u2014 nothing this app declares makes or breaks \u201C${dt(a.schema,a.graph.getNode(k.from)?.kind??"",k.kind,"out")}\u201D.`:`Nothing can be done with ${V.length===1?Me(Le(a.schema.tryDefinition(V[0]),V[0])):"this mix of kinds"} yet \u2014 nothing this app declares acts on ${V.length===1?"it":"them"}.`}):(0,l.jsxs)("ol",{"data-testid":"affordances",style:{margin:0,padding:0,listStyle:"none",display:"flex",flexDirection:"column",flexWrap:"nowrap",gap:2},children:[be.map((e,o)=>(0,l.jsxs)(h.Fragment,{children:[e.heading?(0,l.jsxs)("li",{"data-graview-heading":e.tone,style:{fontSize:"0.75rem",lineHeight:1.4,color:e.tone==="violation"?"var(--graview-warn)":"var(--graview-ink-faint)",...e.tone!=="violation"?{letterSpacing:"0.12em",textTransform:"uppercase",fontSize:"0.75rem"}:{},padding:"2px 2px 1px",marginTop:o>0?6:0},children:[e.tone==="violation"?"\u26A0 ":"",e.tone==="violation"?ot(e.heading):e.heading]}):o>0?(0,l.jsx)("li",{"aria-hidden":"true",style:{borderTop:"1px solid var(--graview-edge)",margin:"6px 0 3px"}}):null,e.items.map(r=>(0,l.jsxs)("li",{style:{display:"flex",gap:2,alignItems:"stretch"},children:[(0,l.jsxs)("button",{type:"button","data-affordance":r.id,"data-rank":r.rank,"data-graview-destructive":r.destructive||void 0,"aria-pressed":_===r.id,title:r.why,style:{padding:"5px 10px",fontSize:"0.875rem",borderRadius:8,width:"100%",textAlign:"left",borderWidth:1,borderStyle:"solid",borderColor:_===r.id?"var(--graview-accent)":y?"transparent":"var(--graview-edge)",background:y?"none":"var(--graview-panel)",boxShadow:"none",...r.destructive?{color:"var(--graview-warn)"}:{},..._===r.id?{color:"var(--graview-accent)"}:{}},onClick:()=>{if(r.open.length>0){j(_===r.id?null:r.id);return}ee(r)},children:[r.label,r.open.length>0?(0,l.jsx)("span",{style:{color:"var(--graview-ink-faint)"},children:" \u2026"}):null,te?.length===1&&te[0]?.id===r.id&&!r.destructive?(0,l.jsx)("span",{"aria-hidden":"true",title:"Enter runs it",style:{float:"right",color:"var(--graview-ink-faint)",fontSize:"0.75rem"},children:"\u21B5"}):null]}),(0,l.jsx)("button",{type:"button","data-testid":"pin-toggle","data-pin-for":r.mutation,"aria-pressed":r.pinned!==void 0,"aria-label":r.pinned!==void 0?`Unpin ${r.label}`:`Pin ${r.label}`,title:r.pinned==="declared"?"Pinned by the app \u2014 unpin it for yourself":r.pinned==="user"?"Unpin":"Pin to the top",onClick:()=>J(Ot($,r.mutation,ne.has(r.mutation))),style:{flex:"0 0 auto",width:24,minHeight:24,display:"grid",placeItems:"center",padding:0,fontSize:"0.75rem",border:"1px solid transparent",background:"none",boxShadow:"none",borderRadius:7,color:r.pinned==="user"?"var(--graview-accent)":r.pinned==="declared"?"var(--graview-ink-muted)":"var(--graview-ink-faint)"},children:r.pinned!==void 0?"\u2605":"\u2606"})]},r.id))]},`${e.heading??"plain"}-${o}`)),nt>0?(0,l.jsx)("li",{children:(0,l.jsxs)("button",{type:"button",onClick:()=>ie(!0),title:`Show all ${f.length} actions`,style:{padding:"4px 10px",fontSize:"0.875rem",borderRadius:8},children:["Show ",nt," more"]})}):null]}),P.length>0?(0,l.jsxs)("ul",{"data-testid":"withheld",style:{margin:0,padding:0,listStyle:"none",display:"flex",flexDirection:"column",flexWrap:"nowrap",gap:2},children:[P.slice(0,y||fe?P.length:3).map(e=>(0,l.jsxs)("li",{style:{display:"grid",gap:2},children:[(0,l.jsx)("button",{type:"button",disabled:!0,"data-affordance":e.id,"data-rank":e.rank,"data-withheld":e.refusal.wouldNeed.join(",")||"nobody",style:{padding:"4px 10px",fontSize:"0.875rem",borderRadius:8,borderStyle:"dashed",width:"100%",textAlign:"left",background:"none"},children:(0,l.jsx)("s",{children:e.label})}),(0,l.jsx)("span",{"data-testid":"withheld-why",style:{fontSize:"0.8125rem",lineHeight:1.4,color:"var(--graview-ink-muted)",padding:"0 10px"},children:e.refusal.message})]},e.id)),!y&&!fe&&P.length>3?(0,l.jsx)("li",{children:(0,l.jsxs)("button",{type:"button","data-testid":"withheld-more",onClick:()=>pe(!0),title:`Show all ${P.length} actions this seat may not take`,style:{padding:"4px 10px",fontSize:"0.875rem",borderRadius:8},children:["Show ",P.length-3," more withheld"]})}):null]}):null,Ie?(0,l.jsx)(Rt,{affordance:Ie,onApply:e=>{if(ee(Ie,e))j(null);else return M.current},onCancel:()=>j(null)}):null]})}var ga=w(ae(),1);var X=w(E(),1);function _e(){let{view:t,go:a}=de(),{store:p,views:s,hiddenKinds:i}=T(),v=t.overview??!1,b=s.places().map(z=>z.kind).filter(z=>!i.has(z)),m=Lt(t,p.schema.kinds,b),x=()=>{a(ye(we(t,!1),m))},S=(()=>{if(!m)return null;let z=kt(m)[0],c=t.within?.view,C=(c?s.places().find(O=>O.as===c):void 0)??(z?s.places().find(O=>O.kind===z):void 0);return C?C.title:z?xe(p.schema,z):p.graph.getNode(m)?.label??null})(),L=v?S?`Down to ${S}`:"Down":"Up";return(0,X.jsxs)("button",{type:"button","data-testid":"overview",className:"graview-altitude-control","aria-pressed":v,"aria-label":L,title:v?`${L} \u2014 back down into the view`:"Up \u2014 the whole thing, from above",onClick:()=>v?x():a(we(t,!0)),style:{position:"absolute",top:14,right:14,zIndex:F("overview"),display:"inline-flex",alignItems:"center",justifyContent:"center",gap:7,height:38,padding:"0 13px 0 11px",borderRadius:8,borderColor:"transparent",fontSize:"0.875rem",whiteSpace:"nowrap",background:"var(--graview-float)",boxShadow:"var(--graview-lift-low)","--graview-altitude":v?1:0,...v?{color:"var(--graview-accent)"}:{}},children:[(0,X.jsxs)("svg",{className:"graview-altitude-mark",width:"16",height:"16",viewBox:"0 0 12 12","aria-hidden":"true",children:[(0,X.jsx)("ellipse",{className:"graview-altitude-mark-ring",cx:"6",cy:"6.6",rx:"5",ry:"2.6",fill:"none",stroke:"currentColor",strokeWidth:"0.9"}),(0,X.jsx)("circle",{className:"graview-altitude-mark-apex",cx:"6",cy:"4",r:"1.5",fill:"currentColor"}),(0,X.jsx)("circle",{className:"graview-altitude-mark-wing","data-side":"left",cx:"1.6",cy:"7.4",r:"1.2",fill:"currentColor"}),(0,X.jsx)("circle",{className:"graview-altitude-mark-wing","data-side":"right",cx:"10.4",cy:"7.4",r:"1.2",fill:"currentColor"})]}),(0,X.jsx)("span",{className:"graview-altitude-label",children:L})]})}var Ue=w(E(),1);function Ge(){let{administered:t}=T(),{view:a,go:p}=de(),s=t.filter(i=>i.canShow);return s.length===0?null:(0,Ue.jsx)("div",{role:"group","aria-label":"Administered","data-testid":"administered",style:{display:"flex",gap:6},children:s.map(i=>(0,Ue.jsx)("button",{type:"button","aria-pressed":i.shown,"data-testid":`show-${i.name}`,title:i.shown?`Hide the ${i.name}'s own districts again`:i.description??`Show the ${i.name}'s own districts beside the domain`,onClick:()=>p(mt(a,i.name,!i.shown)),style:{padding:"3px 11px",borderRadius:999,fontSize:"0.875rem",borderWidth:1,borderStyle:"solid",borderColor:i.shown?"var(--graview-accent)":"var(--graview-edge)",color:i.shown?"var(--graview-accent)":"var(--graview-ink-muted)",background:i.shown?"var(--graview-panel)":"transparent"},children:i.shown?`Hide the ${i.name}`:`Show the ${i.name}`},i.name))})}var R=w(ae(),1);var u=w(E(),1),pa=t=>t.about==="rule"?"rule:":t.about==="act"?"act:":t.kind;function Vt({compact:t=!1}){let{store:a,view:p,setView:s,principal:i,setMenuAt:v,brand:b,seatTalk:m}=T(),x=zt(m),S=Ct(),L=Tt(),z=Nt().marks.flag,c=(0,R.useRef)(null),C=(0,R.useId)(),[O,$]=(0,R.useState)(!1),[J,Z]=(0,R.useState)(null),[G,ne]=(0,R.useState)(null),f=p.q??"";(0,R.useEffect)(()=>{let n=d=>{if(d.defaultPrevented)return;let g=d.key.toLowerCase()==="k"&&(d.metaKey||d.ctrlKey)&&!d.altKey&&!d.shiftKey,A=d.key==="/"&&!d.metaKey&&!d.ctrlKey&&!d.altKey;if(!g&&!A)return;let M=c.current;if(!M)return;let ee=M.closest("[data-graview-embed]"),B=d.target,V=B===document.body||B===document.documentElement||B===window;if(ee&&!(g&&V||B instanceof Node&&ee.contains(B)))return;let k=document.activeElement,ce=k instanceof HTMLInputElement||k instanceof HTMLTextAreaElement||k instanceof HTMLSelectElement||k instanceof HTMLElement&&k.isContentEditable;A&&ce||(d.preventDefault(),M.getClientRects().length===0&&M.closest("[data-graview-app-bar]")?.querySelector('[data-testid="app-find-open"]')?.click(),M.focus({preventScroll:!0}),M.select(),$(!0))};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},[]);let P=(0,R.useMemo)(()=>G&&f.trim()?gt(a,G,S?.words??f,{principal:i,limit:4}):[],[a,f,S,G,i]),oe=(0,R.useMemo)(()=>{let n=new Map;for(let[d,g]of(S?.hits??[]).entries()){if(g.about==="act")continue;let A=pa(g),M=n.get(A)??[];if(M.push({id:`${C}-${d}`,hit:g}),n.set(A,M),g.about==="node"&&g.id===G)for(let[ee,B]of P.entries())M.push({id:`${C}-${d}-act-${ee}`,hit:B})}return[...n.entries()]},[S,P,G,C]),N=x.drawn>0&&f.trim()?{id:`${C}-ask`,ask:f.trim()}:null,Y=(0,R.useMemo)(()=>[...oe.flatMap(([,n])=>n),...N?[N]:[]],[oe,N?.ask]),D=Y.find(n=>n.id===J)??Y[0];(0,R.useEffect)(()=>{Z(null),ne(null)},[f]);let _=n=>{if(n){if(Z(n.id),"ask"in n){ne(null);return}n.hit.about==="node"?ne(n.hit.id):n.hit.about!=="act"&&ne(null)}},j=n=>{if(!n)return;if("ask"in n){m.ask(n.ask),s(g=>ke(g)),$(!1);return}let d=n.hit;switch(d.about){case"node":s(g=>Se(ye(we(g,!1),d.id),[d.id]));break;case"kind":s(g=>St(g,xt(d.kind),{ownPicture:!0,...g.q?{carry:g.q}:{}}));break;case"place":s(g=>$t(g,d.kind,d.as));break;case"rule":{let g=L.filter(A=>A.invariant===d.name).flatMap(A=>A.nodeIds);s(A=>Se(A,[...new Set(g)]));break}case"act":{s(A=>Se(A,[d.subject]));let g=c.current?.getBoundingClientRect();v({x:g?.left??0,y:(g?.bottom??0)+6,on:d.subject});break}}$(!1),c.current?.blur()},Te=S?va(S.byKind,S.hits,a.schema):"",ie=O&&f.trim().length>0,fe=(0,R.useCallback)(()=>{let n=c.current?.closest("[data-graview-app-bar]")?.getBoundingClientRect();if(n)return{x:n.right,y:n.bottom-wa};let d=c.current?.getBoundingClientRect();return d?{x:d.right,y:d.bottom}:null},[]),pe=Ee("find",{open:ie,onOpenChange:n=>{n||$(!1)},...t?{at:fe}:{}});return(0,u.jsxs)("div",{style:{position:"relative",minWidth:0,flex:"1 1 auto"},"data-testid":"find",children:[(0,u.jsx)("input",{ref:n=>{c.current=n,pe.trigger.ref(n)},"data-graview-popover-trigger":"find",type:"search",role:"combobox","aria-label":"Find anything","aria-expanded":ie,"aria-controls":C,"aria-autocomplete":"list",...ie&&D?{"aria-activedescendant":D.id}:{},"data-testid":"find-box",placeholder:"Find\u2026","aria-keyshortcuts":"/ Meta+K Control+K",value:f,onChange:n=>{let d=n.target.value;$(!0),s(g=>ft(g,d.length>0?d:null))},onFocus:()=>$(!0),onBlur:()=>$(!1),onKeyDown:n=>{let d=J!==null&&D?Y.indexOf(D):-1;n.key==="ArrowDown"?(n.preventDefault(),$(!0),_(Y[Math.min(Y.length-1,d+1)])):n.key==="ArrowUp"?(n.preventDefault(),_(Y[Math.max(0,d-1)])):n.key==="Enter"?(n.preventDefault(),j(D)):n.key==="Escape"&&(n.preventDefault(),f?s(g=>ke(g)):c.current?.blur())},style:{width:"100%",boxSizing:"border-box",minWidth:0,height:30,padding:"0 var(--graview-bar-find-end, 10px) 0 10px",font:"inherit",fontSize:"0.875rem",color:"var(--graview-ink)",background:"var(--graview-panel)",border:`1px solid ${f?"var(--graview-accent)":"var(--graview-edge)"}`,borderRadius:8}}),(0,u.jsx)("span",{role:"status","aria-live":"polite",style:ze,"data-testid":"find-count",children:f.trim()?Te:""}),(0,u.jsxs)("div",{...pe.pane,id:C,role:"listbox","aria-label":f?`What \u201C${f}\u201D finds`:"What the words find","data-testid":"find-strip",hidden:!ie,onMouseDown:n=>n.preventDefault(),style:t?{...Yt,...ha}:Yt,children:[Y.every(n=>"ask"in n)?(0,u.jsxs)("p",{role:"presentation",style:{margin:0,padding:"10px 12px",color:"var(--graview-ink-muted)",fontSize:"0.875rem"},"data-testid":"find-nothing",children:["Nothing here is called \u201C",S?.words||f,"\u201D."]}):oe.map(([n,d])=>(0,u.jsxs)("div",{role:"group","aria-label":Gt(n,a.schema),children:[(0,u.jsxs)("div",{role:"presentation",style:ma,children:[n!=="rule:"?(0,u.jsx)(ua,{kind:n,accents:b?.accents}):null,Gt(n,a.schema)]}),d.map(g=>(0,u.jsx)("div",{id:g.id,role:"option","aria-selected":g===D,"data-testid":"find-hit","data-about":g.hit.about,onMouseEnter:()=>_(g),onClick:()=>j(g),style:{...jt,...g.hit.about==="act"?{paddingLeft:30}:{},background:g===D?"var(--graview-panel-muted)":"transparent"},children:(0,u.jsx)(ca,{hit:g.hit,flag:z})},g.id))]},n)),N?(0,u.jsx)("div",{id:N.id,role:"option","aria-selected":N===D||D?.id===N.id,"data-testid":"find-ask",onMouseEnter:()=>_(N),onClick:()=>j(N),style:{...jt,borderTop:"1px solid var(--graview-edge)",marginTop:4,background:D?.id===N.id?"var(--graview-panel-muted)":"transparent"},children:(0,u.jsxs)("span",{children:["Ask: ",(0,u.jsxs)("span",{style:{fontWeight:600},children:["\u2018",N.ask,"\u2019"]})]})}):null,S&&S.searched.past===!1&&S.searched.kinds.some(n=>a.schema.tryDefinition(n)?.lifecycle)?(0,u.jsx)("p",{role:"presentation",style:{margin:0,padding:"6px 12px 8px",color:"var(--graview-ink-faint)",fontSize:"0.75rem"},children:"Current ones; add is:any for the past."}):null]})]})}function ca({hit:t,flag:a}){switch(t.about){case"node":return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsxs)("span",{style:{fontWeight:600,overflowWrap:"anywhere"},children:[t.flagged?(0,u.jsxs)("span",{style:{color:"var(--graview-warn)"},children:[a," "]}):null,t.label,t.apart?(0,u.jsxs)("span",{style:me,children:[" \xB7 ",t.apart]}):null,t.current?null:(0,u.jsx)("span",{style:me,children:" \xB7 past"})]}),t.why.field!=="label"?(0,u.jsxs)("span",{style:me,children:[t.why.reading.toLowerCase(),": ",t.why.fragment]}):null]});case"kind":return(0,u.jsxs)("span",{children:[t.label,(0,u.jsxs)("span",{style:me,children:[" \xB7 ",t.count," match"]})]});case"place":return(0,u.jsxs)("span",{children:["Go to ",t.title]});case"rule":return(0,u.jsxs)("span",{children:["The rule \u201C",t.label,"\u201D"]});case"act":return(0,u.jsxs)("span",{style:t.destructive?{color:"var(--graview-warn)"}:void 0,children:[t.title,(0,u.jsxs)("span",{style:me,children:[" \xB7 ",t.why.field==="title"?"act":`on ${t.why.fragment}`]})]})}}function ua({kind:t,accents:a}){let p=Math.round(ut(t,a));return(0,u.jsx)("span",{"aria-hidden":"true",style:{width:8,height:8,borderRadius:2,flex:"0 0 auto",background:`hsl(${p} 55% 52%)`}})}function Gt(t,a){return t==="rule:"?"Rules":t==="act:"?"Acts":a.tryDefinition(t)?.plural??`${t}s`}function va(t,a,p){let s=Object.entries(t).map(([v,b])=>lt(p,v,b)),i=a.filter(v=>v.about==="kind"||v.about==="place"||v.about==="rule").length;return i>0&&s.push(`${i} ${i===1?"place or rule":"places and rules"}`),s.length===0?"Nothing found":`${s.join(", ")} found`}var Yt={...$e,width:"min(26rem, calc(100vw - 24px))",maxHeight:"min(60vh, 28rem)",overflowY:"auto",boxSizing:"border-box",background:"var(--graview-panel)",borderTop:"1px solid var(--graview-edge)",borderRight:"1px solid var(--graview-edge)",borderBottom:"1px solid var(--graview-edge)",borderLeft:"1px solid var(--graview-edge)",borderRadius:10,boxShadow:"0 10px 28px rgb(0 0 0 / 0.18)",padding:"4px 0"},wa=6,ha={width:"var(--graview-bar-width, 100vw)",maxHeight:"55vh",borderRadius:0,borderLeft:"none",borderRight:"none"},ma={display:"flex",alignItems:"center",gap:6,padding:"8px 12px 2px",fontSize:"0.6875rem",letterSpacing:"0.06em",textTransform:"uppercase",color:"var(--graview-ink-muted)"},jt={display:"grid",gap:1,minHeight:32,padding:"5px 12px",alignContent:"center",cursor:"pointer",fontSize:"0.875rem",lineHeight:1.35,color:"var(--graview-ink)"},me={color:"var(--graview-ink-muted)",fontSize:"0.8125rem",fontWeight:400};var Ae=w(ae(),1),Ye=w(na(),1);var Xt=w(E(),1);function Qt(){let{following:t,follow:a}=T();return t?(0,Xt.jsxs)("button",{type:"button","data-testid":"following-who",onClick:()=>a(null),title:"Press, or Escape, to stop following",style:{display:"inline-flex",alignItems:"center",gap:6,minHeight:24,padding:"2px 9px",borderRadius:999,border:"1px solid var(--graview-accent)",background:"transparent",color:"var(--graview-accent)",fontSize:"0.875rem",whiteSpace:"nowrap"},children:["following ",t.name]}):null}var Jt=w(ae(),1);var I=w(E(),1);function Zt({home:t,homeLabel:a,children:p,onPicture:s=!1}){let{view:i,focus:v,show:b,go:m}=de(),{store:x}=T(),{movedByHand:S}=T(),L=S&&(i.pan!==void 0||Object.keys(i.pins).length>0),z=i.focusId&&i.focusId!==t?x.graph.getNode(i.focusId):void 0,c=J=>xe(x.schema,J),C={display:"inline-flex",alignItems:"center",gap:6,minHeight:26,padding:"2px 6px",fontSize:"0.8125rem",borderRadius:6,border:"1px solid transparent",boxShadow:"none",background:"transparent",color:"var(--graview-ink-muted)",whiteSpace:"nowrap"},O=a!==void 0&&z!==void 0,$=[];return z&&!s&&$.push({key:"focused",node:(0,I.jsxs)("button",{type:"button","data-testid":"focused",onClick:()=>m(Ne({...i,focusId:t},!1)),title:Q(x,z.id),style:{...C,maxWidth:"min(14rem, 15vw)"},children:[(0,I.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis"},children:Q(x,z.id)}),(0,I.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\xD7"})]})}),i.past&&$.push({key:"past",node:(0,I.jsxs)("button",{type:"button","data-testid":"past",onClick:()=>m(bt(i,!1)),title:"Back to now \u2014 retired things leave the picture again",style:C,children:["the past",(0,I.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\xD7"})]})}),i.zoom&&$.push({key:"zoomed",node:(0,I.jsxs)("button",{type:"button","data-testid":"zoomed",onClick:()=>m(Ne(i,!1)),title:"Zoom back out",style:C,children:["zoomed in",(0,I.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\xD7"})]})}),L&&$.push({key:"moved",node:(0,I.jsxs)("button",{type:"button","data-testid":"moved",onClick:()=>m(Pe(i)),title:"Put the camera and everything you dragged back where the layout wanted them",style:C,children:["moved",(0,I.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\xD7"})]})}),i.relation&&$.push({key:"raised",node:(0,I.jsxs)("button",{type:"button","data-testid":"raised",onClick:()=>b(null),title:`Stop showing ${c(i.relation)}`,style:C,children:[c(i.relation),(0,I.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\xD7"})]})}),s&&!O&&$.length===0&&p===void 0?null:(0,I.jsxs)("nav",{"aria-label":"View","data-testid":"trail",style:{display:"flex",alignItems:"center",gap:8,fontSize:"0.875rem",minWidth:0,...s?{pointerEvents:"auto",padding:"4px 6px",borderRadius:8,background:"var(--graview-float)",boxShadow:"var(--graview-lift-low)",overflow:"hidden"}:{}},children:[O?(0,I.jsx)("button",{type:"button",onClick:()=>v(t),style:{border:"none",background:"none",padding:"3px 0",minHeight:24,whiteSpace:"nowrap",color:"var(--graview-ink-muted)"},children:a}):null,$.map(({key:J,node:Z},G)=>(0,I.jsxs)(Jt.Fragment,{children:[O||G>0?(0,I.jsx)("span",{style:{color:"var(--graview-ink-faint)"},children:"\u203A"}):null,Z]},J)),p]})}var q=w(E(),1);function je(){let[t,a]=(0,Ae.useState)([]),p=(0,Ae.useCallback)(s=>{a(i=>{let v=s.phase!=="running"&&i[0]?.name===s.name&&i[0]?.at===s.at;return[s,...v?i.slice(1):i].slice(0,12)})},[]);return[t,p]}function Ve({find:t,calls:a,seat:p,remembers:s=!1}){return t?(0,q.jsxs)(q.Fragment,{children:[(0,Ye.createPortal)((0,q.jsx)(Vt,{compact:t.compact}),t.slot),t.own?(0,Ye.createPortal)((0,q.jsx)(It,{calls:a,remembers:s,...p!==void 0?{seat:p}:{}}),t.own):null]}):null}function Qe({home:t=null}){return(0,q.jsxs)("div",{"data-graview-scene-trail":"",style:{position:"absolute",top:14,left:14,maxWidth:"calc(100% - 150px)",zIndex:F("overview"),display:"flex",alignItems:"center",gap:6,minWidth:0,pointerEvents:"none"},children:[(0,q.jsx)(Zt,{home:t,onPicture:!0}),(0,q.jsx)("span",{style:{pointerEvents:"auto"},children:(0,q.jsx)(Qt,{})})]})}var re=w(ae(),1);var ea=w(E(),1),fa=wt(()=>import("./chunk.YSYT3ASK.js"));function Xe(){let{store:t,principal:a}=T(),p=(0,re.useContext)(Mt),s=(0,re.useRef)(null),i=(0,re.useRef)(!1);return(0,re.useEffect)(()=>()=>void(i.current=!0),[]),(0,re.useEffect)(()=>{let v=t.batches().length,b=fa().then(m=>m.sceneWay(t,a,p,v,s.current),()=>{});return()=>void b.then(m=>m?.(i.current))},[t,a,p]),(0,ea.jsx)("span",{ref:s,hidden:!0})}var ta=w(ae(),1);var H=w(E(),1);function Ir({address:t=!1,auto:a,seat:p,scheme:s,scope:i}){let v=(0,ta.useMemo)(()=>`${We({scope:`.${i}`})}
1040
- ${Fe(s,{scope:`.${i}`})}`,[s,i]),b=Ht(),[m,x]=je();return(0,H.jsxs)("div",{"data-embed-content":"",style:{position:"relative",flex:a?`0 0 ${Kt}px`:"1 1 auto",minHeight:0,containerType:"size"},children:[(0,H.jsx)("style",{children:v}),t?(0,H.jsx)(Dt,{}):null,(0,H.jsx)(Pt,{renderer:"dom"}),(0,H.jsx)(Qe,{}),(0,H.jsx)(_e,{}),(0,H.jsx)(Ke,{}),(0,H.jsx)(Oe,{}),(0,H.jsx)(Be,{...p?{start:p}:{},onCall:x}),(0,H.jsx)(qe,{placement:"menu"}),(0,H.jsx)(Ve,{find:b,calls:m}),(0,H.jsx)(Xe,{})]})}function Hr(){return(0,H.jsx)(Ge,{})}export{Ir as SceneFace,Hr as SceneKeeping};
1039
+ `),style:{display:"grid",gap:3},children:le.slice(0,2).map(e=>(0,l.jsxs)("p",{style:{margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)"},children:[e.text,e===le[1]&&le.length>2?(0,l.jsxs)("span",{style:{color:"var(--graview-ink-faint)"},children:[" +",le.length-2]}):null]},e.id))}):null,g?(0,l.jsx)("p",{"data-testid":"refused",style:{margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-warn)"},children:g}):null,rt?(0,l.jsx)("input",{"data-testid":"action-filter",value:n,onChange:e=>d(e.target.value),placeholder:`Filter ${se.length} actions\u2026`,"aria-label":"Filter actions",onKeyDown:e=>{if(e.key==="Escape"){e.stopPropagation(),n.length>0?d(""):e.currentTarget.blur();return}if(e.key==="Enter"&&te?.length===1){let o=te[0];if(o.destructive)return;o.open.length>0?j(o.id):ee(o)&&d("")}},style:{font:"inherit",fontSize:"0.875rem",padding:"5px 9px",borderRadius:8,border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",color:"var(--graview-ink)"}}):null,te!==null&&te.length===0?(0,l.jsxs)("p",{"data-testid":"no-matches",style:{margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)"},children:["Nothing offered here matches \u201C",n.trim(),"\u201D."]}):null,f.length===0&&!N?(0,l.jsx)("p",{"data-testid":"no-affordances",style:{margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)"},children:P.length>0?`Nothing you may do with ${k?"this relation":V.length===1?Me(Le(a.schema.tryDefinition(V[0]),V[0])):"this mix of kinds"} \u2014 ${P.length} action${P.length===1?"":"s"} withheld.`:k?`Nothing can be done with this line yet \u2014 nothing this app declares makes or breaks \u201C${dt(a.schema,a.graph.getNode(k.from)?.kind??"",k.kind,"out")}\u201D.`:`Nothing can be done with ${V.length===1?Me(Le(a.schema.tryDefinition(V[0]),V[0])):"this mix of kinds"} yet \u2014 nothing this app declares acts on ${V.length===1?"it":"them"}.`}):(0,l.jsxs)("ol",{"data-testid":"affordances",style:{margin:0,padding:0,listStyle:"none",display:"flex",flexDirection:"column",flexWrap:"nowrap",gap:2},children:[be.map((e,o)=>(0,l.jsxs)(h.Fragment,{children:[e.heading?(0,l.jsxs)("li",{"data-graview-heading":e.tone,style:{fontSize:"0.75rem",lineHeight:1.4,color:e.tone==="violation"?"var(--graview-warn)":"var(--graview-ink-faint)",...e.tone!=="violation"?{letterSpacing:"0.12em",textTransform:"uppercase",fontSize:"0.75rem"}:{},padding:"2px 2px 1px",marginTop:o>0?6:0},children:[e.tone==="violation"?"\u26A0 ":"",e.tone==="violation"?ot(e.heading):e.heading]}):o>0?(0,l.jsx)("li",{"aria-hidden":"true",style:{borderTop:"1px solid var(--graview-edge)",margin:"6px 0 3px"}}):null,e.items.map(r=>(0,l.jsxs)("li",{style:{display:"flex",gap:2,alignItems:"stretch"},children:[(0,l.jsxs)("button",{type:"button","data-affordance":r.id,"data-rank":r.rank,"data-graview-destructive":r.destructive||void 0,"aria-pressed":_===r.id,title:r.why,style:{padding:"5px 10px",fontSize:"0.875rem",borderRadius:8,width:"100%",textAlign:"left",borderWidth:1,borderStyle:"solid",borderColor:_===r.id?"var(--graview-accent)":y?"transparent":"var(--graview-edge)",background:y?"none":"var(--graview-panel)",boxShadow:"none",...r.destructive?{color:"var(--graview-warn)"}:{},..._===r.id?{color:"var(--graview-accent)"}:{}},onClick:()=>{if(r.open.length>0){j(_===r.id?null:r.id);return}ee(r)},children:[r.label,r.open.length>0?(0,l.jsx)("span",{style:{color:"var(--graview-ink-faint)"},children:" \u2026"}):null,te?.length===1&&te[0]?.id===r.id&&!r.destructive?(0,l.jsx)("span",{"aria-hidden":"true",title:"Enter runs it",style:{float:"right",color:"var(--graview-ink-faint)",fontSize:"0.75rem"},children:"\u21B5"}):null]}),(0,l.jsx)("button",{type:"button","data-testid":"pin-toggle","data-pin-for":r.mutation,"aria-pressed":r.pinned!==void 0,"aria-label":r.pinned!==void 0?`Unpin ${r.label}`:`Pin ${r.label}`,title:r.pinned==="declared"?"Pinned by the app \u2014 unpin it for yourself":r.pinned==="user"?"Unpin":"Pin to the top",onClick:()=>J(Ot($,r.mutation,ne.has(r.mutation))),style:{flex:"0 0 auto",width:24,minHeight:24,display:"grid",placeItems:"center",padding:0,fontSize:"0.75rem",border:"1px solid transparent",background:"none",boxShadow:"none",borderRadius:7,color:r.pinned==="user"?"var(--graview-accent)":r.pinned==="declared"?"var(--graview-ink-muted)":"var(--graview-ink-faint)"},children:r.pinned!==void 0?"\u2605":"\u2606"})]},r.id))]},`${e.heading??"plain"}-${o}`)),nt>0?(0,l.jsx)("li",{children:(0,l.jsxs)("button",{type:"button",onClick:()=>ie(!0),title:`Show all ${f.length} actions`,style:{padding:"4px 10px",fontSize:"0.875rem",borderRadius:8},children:["Show ",nt," more"]})}):null]}),P.length>0?(0,l.jsxs)("ul",{"data-testid":"withheld",style:{margin:0,padding:0,listStyle:"none",display:"flex",flexDirection:"column",flexWrap:"nowrap",gap:2},children:[P.slice(0,y||fe?P.length:3).map(e=>(0,l.jsxs)("li",{style:{display:"grid",gap:2},children:[(0,l.jsx)("button",{type:"button",disabled:!0,"data-affordance":e.id,"data-rank":e.rank,"data-withheld":e.refusal.wouldNeed.join(",")||"nobody",style:{padding:"4px 10px",fontSize:"0.875rem",borderRadius:8,borderStyle:"dashed",width:"100%",textAlign:"left",background:"none"},children:(0,l.jsx)("s",{children:e.label})}),(0,l.jsx)("span",{"data-testid":"withheld-why",style:{fontSize:"0.8125rem",lineHeight:1.4,color:"var(--graview-ink-muted)",padding:"0 10px"},children:e.refusal.message})]},e.id)),!y&&!fe&&P.length>3?(0,l.jsx)("li",{children:(0,l.jsxs)("button",{type:"button","data-testid":"withheld-more",onClick:()=>pe(!0),title:`Show all ${P.length} actions this seat may not take`,style:{padding:"4px 10px",fontSize:"0.875rem",borderRadius:8},children:["Show ",P.length-3," more withheld"]})}):null]}):null,Ie?(0,l.jsx)(It,{affordance:Ie,onApply:e=>{if(ee(Ie,e))j(null);else return M.current},onCancel:()=>j(null)}):null]})}var ga=w(ae(),1);var X=w(E(),1);function _e(){let{view:t,go:a}=de(),{store:p,views:s,hiddenKinds:i}=T(),v=t.overview??!1,b=s.places().map(z=>z.kind).filter(z=>!i.has(z)),m=Nt(t,p.schema.kinds,b),x=()=>{a(ye(we(t,!1),m))},S=(()=>{if(!m)return null;let z=kt(m)[0],c=t.within?.view,C=(c?s.places().find(O=>O.as===c):void 0)??(z?s.places().find(O=>O.kind===z):void 0);return C?C.title:z?xe(p.schema,z):p.graph.getNode(m)?.label??null})(),L=v?S?`Down to ${S}`:"Down":"Up";return(0,X.jsxs)("button",{type:"button","data-testid":"overview",className:"graview-altitude-control","aria-pressed":v,"aria-label":L,title:v?`${L} \u2014 back down into the view`:"Up \u2014 the whole thing, from above",onClick:()=>v?x():a(we(t,!0)),style:{position:"absolute",top:14,right:14,zIndex:F("overview"),display:"inline-flex",alignItems:"center",justifyContent:"center",gap:7,height:38,padding:"0 13px 0 11px",borderRadius:8,borderColor:"transparent",fontSize:"0.875rem",whiteSpace:"nowrap",background:"var(--graview-float)",boxShadow:"var(--graview-lift-low)","--graview-altitude":v?1:0,...v?{color:"var(--graview-accent)"}:{}},children:[(0,X.jsxs)("svg",{className:"graview-altitude-mark",width:"16",height:"16",viewBox:"0 0 12 12","aria-hidden":"true",children:[(0,X.jsx)("ellipse",{className:"graview-altitude-mark-ring",cx:"6",cy:"6.6",rx:"5",ry:"2.6",fill:"none",stroke:"currentColor",strokeWidth:"0.9"}),(0,X.jsx)("circle",{className:"graview-altitude-mark-apex",cx:"6",cy:"4",r:"1.5",fill:"currentColor"}),(0,X.jsx)("circle",{className:"graview-altitude-mark-wing","data-side":"left",cx:"1.6",cy:"7.4",r:"1.2",fill:"currentColor"}),(0,X.jsx)("circle",{className:"graview-altitude-mark-wing","data-side":"right",cx:"10.4",cy:"7.4",r:"1.2",fill:"currentColor"})]}),(0,X.jsx)("span",{className:"graview-altitude-label",children:L})]})}var Ue=w(E(),1);function Ge(){let{administered:t}=T(),{view:a,go:p}=de(),s=t.filter(i=>i.canShow);return s.length===0?null:(0,Ue.jsx)("div",{role:"group","aria-label":"Administered","data-testid":"administered",style:{display:"flex",gap:6},children:s.map(i=>(0,Ue.jsx)("button",{type:"button","aria-pressed":i.shown,"data-testid":`show-${i.name}`,title:i.shown?`Hide the ${i.name}'s own districts again`:i.description??`Show the ${i.name}'s own districts beside the domain`,onClick:()=>p(mt(a,i.name,!i.shown)),style:{padding:"3px 11px",borderRadius:999,fontSize:"0.875rem",borderWidth:1,borderStyle:"solid",borderColor:i.shown?"var(--graview-accent)":"var(--graview-edge)",color:i.shown?"var(--graview-accent)":"var(--graview-ink-muted)",background:i.shown?"var(--graview-panel)":"transparent"},children:i.shown?`Hide the ${i.name}`:`Show the ${i.name}`},i.name))})}var R=w(ae(),1);var u=w(E(),1),pa=t=>t.about==="rule"?"rule:":t.about==="act"?"act:":t.kind;function Vt({compact:t=!1}){let{store:a,view:p,setView:s,principal:i,setMenuAt:v,brand:b,seatTalk:m}=T(),x=zt(m),S=Ct(),L=Tt(),z=Rt().marks.flag,c=(0,R.useRef)(null),C=(0,R.useId)(),[O,$]=(0,R.useState)(!1),[J,Z]=(0,R.useState)(null),[G,ne]=(0,R.useState)(null),f=p.q??"";(0,R.useEffect)(()=>{let n=d=>{if(d.defaultPrevented)return;let g=d.key.toLowerCase()==="k"&&(d.metaKey||d.ctrlKey)&&!d.altKey&&!d.shiftKey,A=d.key==="/"&&!d.metaKey&&!d.ctrlKey&&!d.altKey;if(!g&&!A)return;let M=c.current;if(!M)return;let ee=M.closest("[data-graview-embed]"),B=d.target,V=B===document.body||B===document.documentElement||B===window;if(ee&&!(g&&V||B instanceof Node&&ee.contains(B)))return;let k=document.activeElement,ce=k instanceof HTMLInputElement||k instanceof HTMLTextAreaElement||k instanceof HTMLSelectElement||k instanceof HTMLElement&&k.isContentEditable;A&&ce||(d.preventDefault(),M.getClientRects().length===0&&M.closest("[data-graview-app-bar]")?.querySelector('[data-testid="app-find-open"]')?.click(),M.focus({preventScroll:!0}),M.select(),$(!0))};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},[]);let P=(0,R.useMemo)(()=>G&&f.trim()?gt(a,G,S?.words??f,{principal:i,limit:4}):[],[a,f,S,G,i]),oe=(0,R.useMemo)(()=>{let n=new Map;for(let[d,g]of(S?.hits??[]).entries()){if(g.about==="act")continue;let A=pa(g),M=n.get(A)??[];if(M.push({id:`${C}-${d}`,hit:g}),n.set(A,M),g.about==="node"&&g.id===G)for(let[ee,B]of P.entries())M.push({id:`${C}-${d}-act-${ee}`,hit:B})}return[...n.entries()]},[S,P,G,C]),N=x.drawn>0&&f.trim()?{id:`${C}-ask`,ask:f.trim()}:null,Y=(0,R.useMemo)(()=>[...oe.flatMap(([,n])=>n),...N?[N]:[]],[oe,N?.ask]),D=Y.find(n=>n.id===J)??Y[0];(0,R.useEffect)(()=>{Z(null),ne(null)},[f]);let _=n=>{if(n){if(Z(n.id),"ask"in n){ne(null);return}n.hit.about==="node"?ne(n.hit.id):n.hit.about!=="act"&&ne(null)}},j=n=>{if(!n)return;if("ask"in n){m.ask(n.ask),s(g=>ke(g)),$(!1);return}let d=n.hit;switch(d.about){case"node":s(g=>Se(ye(we(g,!1),d.id),[d.id]));break;case"kind":s(g=>St(g,xt(d.kind),{ownPicture:!0,...g.q?{carry:g.q}:{}}));break;case"place":s(g=>$t(g,d.kind,d.as));break;case"rule":{let g=L.filter(A=>A.invariant===d.name).flatMap(A=>A.nodeIds);s(A=>Se(A,[...new Set(g)]));break}case"act":{s(A=>Se(A,[d.subject]));let g=c.current?.getBoundingClientRect();v({x:g?.left??0,y:(g?.bottom??0)+6,on:d.subject});break}}$(!1),c.current?.blur()},Te=S?va(S.byKind,S.hits,a.schema):"",ie=O&&f.trim().length>0,fe=(0,R.useCallback)(()=>{let n=c.current?.closest("[data-graview-app-bar]")?.getBoundingClientRect();if(n)return{x:n.right,y:n.bottom-wa};let d=c.current?.getBoundingClientRect();return d?{x:d.right,y:d.bottom}:null},[]),pe=Ee("find",{open:ie,onOpenChange:n=>{n||$(!1)},...t?{at:fe}:{}});return(0,u.jsxs)("div",{style:{position:"relative",minWidth:0,flex:"1 1 auto"},"data-testid":"find",children:[(0,u.jsx)("input",{ref:n=>{c.current=n,pe.trigger.ref(n)},"data-graview-popover-trigger":"find",type:"search",role:"combobox","aria-label":"Find anything","aria-expanded":ie,"aria-controls":C,"aria-autocomplete":"list",...ie&&D?{"aria-activedescendant":D.id}:{},"data-testid":"find-box",placeholder:"Find\u2026","aria-keyshortcuts":"/ Meta+K Control+K",value:f,onChange:n=>{let d=n.target.value;$(!0),s(g=>ft(g,d.length>0?d:null))},onFocus:()=>$(!0),onBlur:()=>$(!1),onKeyDown:n=>{let d=J!==null&&D?Y.indexOf(D):-1;n.key==="ArrowDown"?(n.preventDefault(),$(!0),_(Y[Math.min(Y.length-1,d+1)])):n.key==="ArrowUp"?(n.preventDefault(),_(Y[Math.max(0,d-1)])):n.key==="Enter"?(n.preventDefault(),j(D)):n.key==="Escape"&&(n.preventDefault(),f?s(g=>ke(g)):c.current?.blur())},style:{width:"100%",boxSizing:"border-box",minWidth:0,height:30,padding:"0 var(--graview-bar-find-end, 10px) 0 10px",font:"inherit",fontSize:"0.875rem",color:"var(--graview-ink)",background:"var(--graview-panel)",border:`1px solid ${f?"var(--graview-accent)":"var(--graview-edge)"}`,borderRadius:8}}),(0,u.jsx)("span",{role:"status","aria-live":"polite",style:ze,"data-testid":"find-count",children:f.trim()?Te:""}),(0,u.jsxs)("div",{...pe.pane,id:C,role:"listbox","aria-label":f?`What \u201C${f}\u201D finds`:"What the words find","data-testid":"find-strip",hidden:!ie,onMouseDown:n=>n.preventDefault(),style:t?{...Yt,...ha}:Yt,children:[Y.every(n=>"ask"in n)?(0,u.jsxs)("p",{role:"presentation",style:{margin:0,padding:"10px 12px",color:"var(--graview-ink-muted)",fontSize:"0.875rem"},"data-testid":"find-nothing",children:["Nothing here is called \u201C",S?.words||f,"\u201D."]}):oe.map(([n,d])=>(0,u.jsxs)("div",{role:"group","aria-label":Gt(n,a.schema),children:[(0,u.jsxs)("div",{role:"presentation",style:ma,children:[n!=="rule:"?(0,u.jsx)(ua,{kind:n,accents:b?.accents}):null,Gt(n,a.schema)]}),d.map(g=>(0,u.jsx)("div",{id:g.id,role:"option","aria-selected":g===D,"data-testid":"find-hit","data-about":g.hit.about,onMouseEnter:()=>_(g),onClick:()=>j(g),style:{...jt,...g.hit.about==="act"?{paddingLeft:30}:{},background:g===D?"var(--graview-panel-muted)":"transparent"},children:(0,u.jsx)(ca,{hit:g.hit,flag:z})},g.id))]},n)),N?(0,u.jsx)("div",{id:N.id,role:"option","aria-selected":N===D||D?.id===N.id,"data-testid":"find-ask",onMouseEnter:()=>_(N),onClick:()=>j(N),style:{...jt,borderTop:"1px solid var(--graview-edge)",marginTop:4,background:D?.id===N.id?"var(--graview-panel-muted)":"transparent"},children:(0,u.jsxs)("span",{children:["Ask: ",(0,u.jsxs)("span",{style:{fontWeight:600},children:["\u2018",N.ask,"\u2019"]})]})}):null,S&&S.searched.past===!1&&S.searched.kinds.some(n=>a.schema.tryDefinition(n)?.lifecycle)?(0,u.jsx)("p",{role:"presentation",style:{margin:0,padding:"6px 12px 8px",color:"var(--graview-ink-faint)",fontSize:"0.75rem"},children:"Current ones; add is:any for the past."}):null]})]})}function ca({hit:t,flag:a}){switch(t.about){case"node":return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsxs)("span",{style:{fontWeight:600,overflowWrap:"anywhere"},children:[t.flagged?(0,u.jsxs)("span",{style:{color:"var(--graview-warn)"},children:[a," "]}):null,t.label,t.apart?(0,u.jsxs)("span",{style:me,children:[" \xB7 ",t.apart]}):null,t.current?null:(0,u.jsx)("span",{style:me,children:" \xB7 past"})]}),t.why.field!=="label"?(0,u.jsxs)("span",{style:me,children:[t.why.reading.toLowerCase(),": ",t.why.fragment]}):null]});case"kind":return(0,u.jsxs)("span",{children:[t.label,(0,u.jsxs)("span",{style:me,children:[" \xB7 ",t.count," match"]})]});case"place":return(0,u.jsxs)("span",{children:["Go to ",t.title]});case"rule":return(0,u.jsxs)("span",{children:["The rule \u201C",t.label,"\u201D"]});case"act":return(0,u.jsxs)("span",{style:t.destructive?{color:"var(--graview-warn)"}:void 0,children:[t.title,(0,u.jsxs)("span",{style:me,children:[" \xB7 ",t.why.field==="title"?"act":`on ${t.why.fragment}`]})]})}}function ua({kind:t,accents:a}){let p=Math.round(ut(t,a));return(0,u.jsx)("span",{"aria-hidden":"true",style:{width:8,height:8,borderRadius:2,flex:"0 0 auto",background:`hsl(${p} 55% 52%)`}})}function Gt(t,a){return t==="rule:"?"Rules":t==="act:"?"Acts":a.tryDefinition(t)?.plural??`${t}s`}function va(t,a,p){let s=Object.entries(t).map(([v,b])=>lt(p,v,b)),i=a.filter(v=>v.about==="kind"||v.about==="place"||v.about==="rule").length;return i>0&&s.push(`${i} ${i===1?"place or rule":"places and rules"}`),s.length===0?"Nothing found":`${s.join(", ")} found`}var Yt={...$e,width:"min(26rem, calc(100vw - 24px))",maxHeight:"min(60vh, 28rem)",overflowY:"auto",boxSizing:"border-box",background:"var(--graview-panel)",borderTop:"1px solid var(--graview-edge)",borderRight:"1px solid var(--graview-edge)",borderBottom:"1px solid var(--graview-edge)",borderLeft:"1px solid var(--graview-edge)",borderRadius:10,boxShadow:"0 10px 28px rgb(0 0 0 / 0.18)",padding:"4px 0"},wa=6,ha={width:"var(--graview-bar-width, 100vw)",maxHeight:"55vh",borderRadius:0,borderLeft:"none",borderRight:"none"},ma={display:"flex",alignItems:"center",gap:6,padding:"8px 12px 2px",fontSize:"0.6875rem",letterSpacing:"0.06em",textTransform:"uppercase",color:"var(--graview-ink-muted)"},jt={display:"grid",gap:1,minHeight:32,padding:"5px 12px",alignContent:"center",cursor:"pointer",fontSize:"0.875rem",lineHeight:1.35,color:"var(--graview-ink)"},me={color:"var(--graview-ink-muted)",fontSize:"0.8125rem",fontWeight:400};var Ae=w(ae(),1),Ye=w(na(),1);var Xt=w(E(),1);function Qt(){let{following:t,follow:a}=T();return t?(0,Xt.jsxs)("button",{type:"button","data-testid":"following-who",onClick:()=>a(null),title:"Press, or Escape, to stop following",style:{display:"inline-flex",alignItems:"center",gap:6,minHeight:24,padding:"2px 9px",borderRadius:999,border:"1px solid var(--graview-accent)",background:"transparent",color:"var(--graview-accent)",fontSize:"0.875rem",whiteSpace:"nowrap"},children:["following ",t.name]}):null}var Jt=w(ae(),1);var I=w(E(),1);function Zt({home:t,homeLabel:a,children:p,onPicture:s=!1}){let{view:i,focus:v,show:b,go:m}=de(),{store:x}=T(),{movedByHand:S}=T(),L=S&&(i.pan!==void 0||Object.keys(i.pins).length>0),z=i.focusId&&i.focusId!==t?x.graph.getNode(i.focusId):void 0,c=J=>xe(x.schema,J),C={display:"inline-flex",alignItems:"center",gap:6,minHeight:26,padding:"2px 6px",fontSize:"0.8125rem",borderRadius:6,border:"1px solid transparent",boxShadow:"none",background:"transparent",color:"var(--graview-ink-muted)",whiteSpace:"nowrap"},O=a!==void 0&&z!==void 0,$=[];return z&&!s&&$.push({key:"focused",node:(0,I.jsxs)("button",{type:"button","data-testid":"focused",onClick:()=>m(Ne({...i,focusId:t},!1)),title:Q(x,z.id),style:{...C,maxWidth:"min(14rem, 15vw)"},children:[(0,I.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis"},children:Q(x,z.id)}),(0,I.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\xD7"})]})}),i.past&&$.push({key:"past",node:(0,I.jsxs)("button",{type:"button","data-testid":"past",onClick:()=>m(bt(i,!1)),title:"Back to now \u2014 retired things leave the picture again",style:C,children:["the past",(0,I.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\xD7"})]})}),i.zoom&&$.push({key:"zoomed",node:(0,I.jsxs)("button",{type:"button","data-testid":"zoomed",onClick:()=>m(Ne(i,!1)),title:"Zoom back out",style:C,children:["zoomed in",(0,I.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\xD7"})]})}),L&&$.push({key:"moved",node:(0,I.jsxs)("button",{type:"button","data-testid":"moved",onClick:()=>m(Pe(i)),title:"Put the camera and everything you dragged back where the layout wanted them",style:C,children:["moved",(0,I.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\xD7"})]})}),i.relation&&$.push({key:"raised",node:(0,I.jsxs)("button",{type:"button","data-testid":"raised",onClick:()=>b(null),title:`Stop showing ${c(i.relation)}`,style:C,children:[c(i.relation),(0,I.jsx)("span",{"aria-hidden":"true",style:{opacity:.7},children:"\xD7"})]})}),s&&!O&&$.length===0&&p===void 0?null:(0,I.jsxs)("nav",{"aria-label":"View","data-testid":"trail",style:{display:"flex",alignItems:"center",gap:8,fontSize:"0.875rem",minWidth:0,...s?{pointerEvents:"auto",padding:"4px 6px",borderRadius:8,background:"var(--graview-float)",boxShadow:"var(--graview-lift-low)",overflow:"hidden"}:{}},children:[O?(0,I.jsx)("button",{type:"button",onClick:()=>v(t),style:{border:"none",background:"none",padding:"3px 0",minHeight:24,whiteSpace:"nowrap",color:"var(--graview-ink-muted)"},children:a}):null,$.map(({key:J,node:Z},G)=>(0,I.jsxs)(Jt.Fragment,{children:[O||G>0?(0,I.jsx)("span",{style:{color:"var(--graview-ink-faint)"},children:"\u203A"}):null,Z]},J)),p]})}var q=w(E(),1);function je(){let[t,a]=(0,Ae.useState)([]),p=(0,Ae.useCallback)(s=>{a(i=>{let v=s.phase!=="running"&&i[0]?.name===s.name&&i[0]?.at===s.at;return[s,...v?i.slice(1):i].slice(0,12)})},[]);return[t,p]}function Ve({find:t,calls:a,seat:p,remembers:s=!1}){return t?(0,q.jsxs)(q.Fragment,{children:[(0,Ye.createPortal)((0,q.jsx)(Vt,{compact:t.compact}),t.slot),t.own?(0,Ye.createPortal)((0,q.jsx)(Ht,{calls:a,remembers:s,...p!==void 0?{seat:p}:{}}),t.own):null]}):null}function Qe({home:t=null}){return(0,q.jsxs)("div",{"data-graview-scene-trail":"",style:{position:"absolute",top:14,left:14,maxWidth:"calc(100% - 150px)",zIndex:F("overview"),display:"flex",alignItems:"center",gap:6,minWidth:0,pointerEvents:"none"},children:[(0,q.jsx)(Zt,{home:t,onPicture:!0}),(0,q.jsx)("span",{style:{pointerEvents:"auto"},children:(0,q.jsx)(Qt,{})})]})}var re=w(ae(),1);var ea=w(E(),1),fa=wt(()=>import("./chunk.YSYT3ASK.js"));function Xe(){let{store:t,principal:a}=T(),p=(0,re.useContext)(Lt),s=(0,re.useRef)(null),i=(0,re.useRef)(!1);return(0,re.useEffect)(()=>()=>void(i.current=!0),[]),(0,re.useEffect)(()=>{let v=t.batches().length,b=fa().then(m=>m.sceneWay(t,a,p,v,s.current),()=>{});return()=>void b.then(m=>m?.(i.current))},[t,a,p]),(0,ea.jsx)("span",{ref:s,hidden:!0})}var ta=w(ae(),1);var H=w(E(),1);function Ir({address:t=!1,auto:a,seat:p,scheme:s,scope:i}){let v=(0,ta.useMemo)(()=>`${We({scope:`.${i}`})}
1040
+ ${Fe(s,{scope:`.${i}`})}`,[s,i]),b=Mt(),[m,x]=je();return(0,H.jsxs)("div",{"data-embed-content":"",style:{position:"relative",flex:a?`0 0 ${Kt}px`:"1 1 auto",minHeight:0,containerType:"size"},children:[(0,H.jsx)("style",{children:v}),t?(0,H.jsx)(Dt,{}):null,(0,H.jsx)(Pt,{renderer:"dom"}),(0,H.jsx)(Qe,{}),(0,H.jsx)(_e,{}),(0,H.jsx)(Ke,{}),(0,H.jsx)(Oe,{}),(0,H.jsx)(Be,{...p?{start:p}:{},onCall:x}),(0,H.jsx)(qe,{placement:"menu"}),(0,H.jsx)(Ve,{find:b,calls:m}),(0,H.jsx)(Xe,{})]})}function Hr(){return(0,H.jsx)(Ge,{})}export{Ir as SceneFace,Hr as SceneKeeping};
@@ -0,0 +1 @@
1
+ import{d as L}from"./chunk.ECRZZ3U4.js";import{a as R,b as O,c as v,d as P}from"./chunk.ONDILMIX.js";import"./chunk.YXQCEXZX.js";import"./chunk.I5U42VDK.js";import"./chunk.4MAYBFPU.js";import"./chunk.NQP3DWME.js";import{a as E,b as T}from"./chunk.ZOWWWRYA.js";import"./chunk.LEVR7WLB.js";import"./chunk.WVUJXDXZ.js";import"./chunk.TAW67PZU.js";import"./chunk.YOMW4MKD.js";import"./chunk.DRIWJRQW.js";import"./chunk.KSEKVHJJ.js";import"./chunk.JIWB6VGT.js";import"./chunk.KXWRS6LY.js";import"./chunk.PKFL2AR4.js";import"./chunk.XNYBOKLW.js";import"./chunk.AHDOKM4O.js";import"./chunk.6R4EI47C.js";import"./chunk.UUMXYMOX.js";import"./chunk.D3XF643V.js";import"./chunk.NLFLFIDS.js";import"./chunk.6LJ66MB7.js";import{wa as x}from"./chunk.SVL6I37U.js";import{Fb as k}from"./chunk.P7YN4Z3K.js";import{a as D,b as C}from"./chunk.MRK6QJV5.js";import{b as S}from"./chunk.AJZBJBMO.js";var o=S(D(),1);var i=S(C(),1);function W(c){let e=document.activeElement;if(e!==null&&e!==document.body&&e!==document.documentElement&&e.isConnected)return;let r=c??document,a=r.querySelector("main")??r.querySelector("[data-graview-page]")??null,n=r.querySelector("[data-graview-page-title]")??a?.querySelector("h1, h2")??a;n instanceof HTMLElement&&(n.hasAttribute("tabindex")||n.setAttribute("tabindex","-1"),n.focus({preventScroll:!0}))}var H=1500;function z(c,e,r){let{store:a,principal:n}=c,u=L(a),l=(0,o.useMemo)(()=>R(a,n),[a,n,u]),b=(0,o.useRef)(r),[p,m]=(0,o.useState)(),[s,f]=(0,o.useState)("");(0,o.useEffect)(()=>{let t=O(a,n,b.current);b.current=a.batches().length,t&&(m({batch:t.batch,at:e,when:Date.now()}),f(""))},[a,n,u]),(0,o.useEffect)(()=>{m(t=>!t||t.at===e?t:Date.now()-t.when<H?{...t,at:e}:void 0)},[e]);let[g,h]=(0,o.useState)(null),y=(0,o.useCallback)(()=>{m(void 0),h(null)},[]),w=(0,o.useCallback)(()=>{h(null);try{let t=P(a,n);t&&f(`Took back \u201C${t.intent}\u201D`)}catch(t){h(t instanceof Error?t.message:String(t))}},[a,n]),d=l&&p?.batch===l.batch&&p.at===e?l:void 0;return{change:l,offered:d,close:y,takeBack:w,refused:g,said:s}}function Y({context:c,docked:e,at:r,since:a}){let{change:n,offered:u,close:l,takeBack:b,refused:p,said:m}=z(c,r,a),s=e?u:n,f=(0,o.useRef)(null),g=e&&(s!==void 0||p!==null);B(f,g),(0,o.useEffect)(()=>{if(!g)return;let d,t=()=>d=setTimeout(()=>f.current?.matches(":hover, :focus-within")?t():l(),1e4);return t(),()=>clearTimeout(d)},[g,s?.batch,p,l]);let h=m||(e&&s?v(s):""),y=e?{position:"fixed",inset:"auto",margin:0,padding:0,border:"none",background:"none",overflow:"visible",zIndex:k("toast"),width:"max-content",height:"auto",bottom:"calc(16px + env(safe-area-inset-bottom, 0px))",left:16,justifyItems:"start",color:"var(--graview-ink)",...g?{}:{display:"none"}}:{},w=s?(0,i.jsxs)("button",{type:"button","data-testid":"page-undo",title:`${v(s)} \u2014 \u2318Z or Ctrl+Z`,"aria-keyshortcuts":"Meta+Z Control+Z",onClick:d=>{let t=d.currentTarget.closest("[data-graview-face]");b(),requestAnimationFrame(()=>W(t))},style:e?I:A,children:[(0,i.jsx)("span",{"aria-hidden":"true",children:"\u21B6"}),(0,i.jsx)("span",{style:e?j:F,children:v(s)})]}):null;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("span",{role:"status","aria-live":"polite",style:N,children:h}),(0,i.jsxs)("div",{ref:f,...e?{popover:"manual","data-graview-foot":"","data-graview-offstage":""}:{},"data-testid":e?"face-undo-dock":"page-undo-place",style:{display:"grid",justifyItems:"end",gap:4,maxWidth:"100%",minWidth:0,...y},children:[e&&s?(0,i.jsxs)("div",{"data-testid":"page-undo-notice",style:_,children:[w,(0,i.jsx)("button",{type:"button","data-testid":"page-undo-dismiss","aria-label":`Dismiss: ${v(s)}`,title:"Dismiss",onClick:d=>{let t=d.currentTarget.closest("[data-graview-face]");l(),requestAnimationFrame(()=>W(t))},style:q,children:"\xD7"})]}):w,p?(0,i.jsx)("span",{"data-testid":"page-undo-refused",role:"alert",style:{fontSize:"0.8125rem",lineHeight:1.4,color:"var(--graview-warn)",background:e?"var(--graview-float)":void 0,padding:e?"4px 8px":void 0,borderRadius:6},children:p}):null]})]})}function B(c,e){(0,o.useLayoutEffect)(()=>{let r=c.current;if(!r||!e)return;if(typeof r.showPopover=="function"&&!x(r))try{r.showPopover()}catch{}let a=()=>r.parentElement?.closest("[data-embed-content]")??null,n=()=>{T(r,a()),dispatchEvent(new Event(E))};n(),addEventListener("resize",n),addEventListener("scroll",n,!0);let u=typeof ResizeObserver=="function"?new ResizeObserver(n):null;return u?.observe(r),()=>{if(u?.disconnect(),removeEventListener("resize",n),removeEventListener("scroll",n,!0),r.isConnected&&x(r))try{r.hidePopover()}catch{}dispatchEvent(new Event(E))}},[c,e])}var A={display:"inline-flex",alignItems:"center",gap:6,minHeight:36,maxWidth:"100%",minWidth:0,padding:"0 14px",borderRadius:999,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",color:"var(--graview-ink)",font:"inherit",fontSize:"0.875rem",cursor:"pointer"},I={...A,textAlign:"start",lineHeight:1.4,padding:"8px 4px 8px 14px",border:"none",background:"none",color:"inherit"},_={display:"flex",alignItems:"center",gap:2,maxWidth:"100%",minWidth:0,paddingRight:6,borderRadius:"var(--graview-radius, 12px)",border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)"},q={flex:"0 0 auto",minWidth:28,minHeight:28,padding:0,border:"none",background:"none",boxShadow:"none",color:"var(--graview-ink-muted)",font:"inherit",fontSize:"1rem",cursor:"pointer"},F={minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},j={minWidth:0,overflow:"hidden",overflowWrap:"anywhere",display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:4},N={position:"absolute",width:1,height:1,margin:-1,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap",border:0};export{Y as TakeBack};
@@ -0,0 +1 @@
1
+ import{e as l}from"./chunk.NQP3DWME.js";import{a as P}from"./chunk.6LJ66MB7.js";import{B as f,F as E,a as h,da as O,e as V,ja as v,k as B,l as A,ma as L,sa as H,y as x,za as R}from"./chunk.SVL6I37U.js";import{Wb as g}from"./chunk.P7YN4Z3K.js";import{a as C,b as T}from"./chunk.MRK6QJV5.js";import{b as S}from"./chunk.AJZBJBMO.js";var k=S(C(),1);var _="The whole thing",y=e=>`scene:${e.kind}:${e.as}`;function D(e){let{view:t}=e,i=new Set,n=e.places.filter(r=>e.hidden.has(r.kind)||i.has(y(r))?!1:(i.add(y(r)),!0)),a=(r,p)=>{if(r===l)return B(A(p,!0),"view",null);let w=n.find(N=>y(N)===r);return w?E(p,w.kind,w.as):null},o=[{key:l,label:_,path:`${g}${V(a(l,h))}`,group:"home"},...n.map(r=>({key:y(r),label:r.title,path:`${g}${V(a(y(r),h))}`,group:"pictures",kind:r.kind}))],s=t.within?.view,d=r=>t.focusId===f(r.kind)&&(s===void 0?n.filter(p=>p.kind===r.kind).at(-1)===r:s===r.as),c=n.find(r=>d(r)&&(s!==void 0||!t.overview));return{places:o,current:c?y(c):l,to:a}}function I(){let{views:e,hiddenKinds:t}=O(),{view:i,go:n}=H(),a=e.places(),o=(0,k.useMemo)(()=>D({places:a,hidden:t,view:i}),[a,t,i]),s=(0,k.useMemo)(()=>({go:d=>{let c=o.to(d.key,i);c&&n(c)}}),[o,i,n]);return{places:o.places,current:o.current,reach:s}}function W(e,t,i=[]){if(e.focusId)return e.focusId;let a=(e.selection??[]).map(x).find(o=>o!==null)??i.find(o=>t.includes(o))??t[0]??null;return a===null?null:f(a)}var m=S(T(),1),u=R(P(()=>import("./chunk.TUYKH4FG.js")));function G(){return u.load().then(()=>{})}var K=[{cardinality:"one",fidelity:"full",slot:"page"},{cardinality:"one",fidelity:"summary",slot:"card"},{cardinality:"one",fidelity:"glyph",slot:"row"},{cardinality:"many",fidelity:"full"},{cardinality:"many",fidelity:"summary"},{cardinality:"many",fidelity:"glyph"}];function M({schema:e,specs:t,kind:i,view:n}){let a=u.current.frameworkViews(e,t).lookup(i,{cardinality:n.cardinality,fidelity:n.fidelity});return a?(0,m.jsx)(a,{...n}):null}var b=u.part((e,t)=>(0,m.jsx)(M,{...t}),{what:"This view"});function F(e,t,i){for(let n of t.kinds){let a=i?.[n];for(let o of K){let s=c=>(0,m.jsx)(b,{schema:t,specs:i,kind:n,view:c}),d=o.slot!==void 0&&a?.[o.slot]!==void 0;d&&(s.says=(c,r)=>u.current?.frameworkViews(t,i).lookup(n,{cardinality:o.cardinality,fidelity:o.fidelity})?.says?.(c,r)),e.register(n,{cardinality:o.cardinality,fidelity:o.fidelity},d?s:v(s))}}return e}function $(e,t){return F(L(e),e,t)}export{I as a,W as b,G as c,$ as d};
@@ -0,0 +1 @@
1
+ import{b as m}from"./chunk.HFFEOCYY.js";import"./chunk.LHIYFAN5.js";import"./chunk.ECRZZ3U4.js";import"./chunk.ONDILMIX.js";import{f as g}from"./chunk.YXQCEXZX.js";import"./chunk.I5U42VDK.js";import"./chunk.4MAYBFPU.js";import"./chunk.ZLPA5BAW.js";import"./chunk.XOC5BRPU.js";import"./chunk.IKT7JQUW.js";import"./chunk.NQP3DWME.js";import"./chunk.ZOWWWRYA.js";import"./chunk.LEVR7WLB.js";import"./chunk.WVUJXDXZ.js";import"./chunk.TAW67PZU.js";import"./chunk.YOMW4MKD.js";import"./chunk.DRIWJRQW.js";import"./chunk.KSEKVHJJ.js";import"./chunk.JIWB6VGT.js";import"./chunk.KXWRS6LY.js";import"./chunk.PKFL2AR4.js";import"./chunk.XNYBOKLW.js";import"./chunk.AHDOKM4O.js";import"./chunk.6R4EI47C.js";import"./chunk.UUMXYMOX.js";import"./chunk.D3XF643V.js";import"./chunk.NLFLFIDS.js";import"./chunk.6LJ66MB7.js";import"./chunk.SVL6I37U.js";import{sa as n}from"./chunk.P7YN4Z3K.js";import{a as b,b as l}from"./chunk.MRK6QJV5.js";import{b as t}from"./chunk.AJZBJBMO.js";var y=t(b(),1),a=t(l(),1);function P({store:h,auto:c,brand:r,views:f,presence:i,steering:o,overview:s,scope:d,titleLevel:v=2,props:e}){let u=(0,y.useMemo)(()=>g({scope:`.${d}`}),[d]);return(0,a.jsxs)("div",{"data-embed-content":"",style:c?{flex:"0 0 auto",background:"var(--graview-ground)"}:{flex:"1 1 auto",minHeight:0,overflow:"auto",background:"var(--graview-ground)"},children:[(0,a.jsx)("style",{children:u}),(0,a.jsx)("div",{"data-embed-measure":"",style:{display:"flow-root"},children:(0,a.jsx)(m,{context:{store:h,embedded:!0,...e.bar!==!1?{barAbove:!0}:{},...s?{overview:s}:{},titleLevel:v,views:f,settings:e.app.settings??[],...i?{presence:i}:{},...r?{brand:r}:{},...e.principal?{principal:e.principal}:{},...e.seats?{seats:e.seats}:{},...e.people?{people:e.people}:{}},...e.pages?{registry:e.pages}:{},...o?{steering:o}:{},...e.routing==="address"?n(e.basePath)===""?{}:{basename:n(e.basePath)}:{initialPath:e.path??"/"},...e.path!==void 0?{path:e.path}:{},...e.onNavigate?{onNavigate:e.onNavigate}:{}})})]})}export{P as PagesContent};
@@ -1 +1 @@
1
- import{b as a}from"./chunk.JCZH55RX.js";import{l as i}from"./chunk.2WFEFZAW.js";import{Ba as o}from"./chunk.RAE4M3KQ.js";function p(r){let t=r.within??{};return o({...t.sort?{sort:t.sort}:{},...t.filter?{filter:t.filter}:{},...t.group?{group:t.group}:{},...t.q?{q:t.q}:{}})}function s(r,t){let m=a(t),e=r;for(let n of["sort","filter","group","q"])e=i(e,n,m[n]??null);return e}export{p as a,s as b};
1
+ import{b as a}from"./chunk.NLFLFIDS.js";import{k as i}from"./chunk.SVL6I37U.js";import{Ha as o}from"./chunk.P7YN4Z3K.js";function p(r){let t=r.within??{};return o({...t.sort?{sort:t.sort}:{},...t.filter?{filter:t.filter}:{},...t.group?{group:t.group}:{},...t.q?{q:t.q}:{}})}function s(r,t){let m=a(t),e=r;for(let n of["sort","filter","group","q"])e=i(e,n,m[n]??null);return e}export{p as a,s as b};
@@ -1 +1 @@
1
- import{g as a}from"./chunk.YZZGD5OY.js";import{b as s}from"./chunk.DSZ3I557.js";function f(e){let r=new Map;for(let i of e.kinds){let n=e.tryDefinition(i),o=a(n);r.set(i,{fields:new Set(Object.keys(n?.fields?.shape??{})),edges:new Map(Object.entries(n?.edges??{}).map(([d,p])=>[d,p.cardinality??"many"])),...o?{computed:o}:{}})}let t=a(e);return t&&r.set(s,{computed:t}),r}export{f as a};
1
+ import{g as a}from"./chunk.KSEKVHJJ.js";import{b as s}from"./chunk.JIWB6VGT.js";function f(e){let r=new Map;for(let i of e.kinds){let n=e.tryDefinition(i),o=a(n);r.set(i,{fields:new Set(Object.keys(n?.fields?.shape??{})),edges:new Map(Object.entries(n?.edges??{}).map(([d,p])=>[d,p.cardinality??"many"])),...o?{computed:o}:{}})}let t=a(e);return t&&r.set(s,{computed:t}),r}export{f as a};
@@ -0,0 +1 @@
1
+ import{h as ae}from"./chunk.LEVR7WLB.js";import"./chunk.WVUJXDXZ.js";import{b as $,c as ne}from"./chunk.TAW67PZU.js";import"./chunk.YOMW4MKD.js";import"./chunk.DRIWJRQW.js";import"./chunk.KSEKVHJJ.js";import"./chunk.JIWB6VGT.js";import"./chunk.6R4EI47C.js";import{Y as X,da as ee,ga as te}from"./chunk.SVL6I37U.js";import{Eb as Y,G as J,H as v,I as j,X as Q}from"./chunk.P7YN4Z3K.js";import{a as we,b as Z}from"./chunk.MRK6QJV5.js";import{b as B}from"./chunk.AJZBJBMO.js";var g=B(we(),1);async function re(e,i){let r=await createImageBitmap(e);try{let l=Math.min(1,i/Math.max(r.width,r.height)),o=document.createElement("canvas");o.width=Math.max(1,Math.round(r.width*l)),o.height=Math.max(1,Math.round(r.height*l));let s=o.getContext("2d");if(s===null)throw new Error("This browser will not give us a canvas to resize with.");return s.drawImage(r,0,0,o.width,o.height),o}finally{r.close()}}var t=B(Z(),1),ve=2048,$e=.85;function H(e){return e<1e3?`${e} bytes`:e<1e6?`${Math.round(e/1e3)} KB`:`${(e/1e6).toFixed(e<1e7?1:0)} MB`}function O(e){if(e.type==="application/pdf")return"PDF";let i=/\.([a-z0-9]{2,5})$/i.exec(e.name??"")?.[1];return i?i.toUpperCase():(e.type.split("/")[1]??e.type).replace(/^x-|^vnd\./,"").split(/[.+-]/)[0].toUpperCase()}function ue(e){let i=[...new Set(e.map(r=>r==="image/*"?"pictures":r==="*/*"||r==="*"?"any file":`${O({type:r})} files`))];return i.length<=1?i[0]??"no files":`${i.slice(0,-1).join(", ")} and ${i[i.length-1]}`}function ce(e,i){if(e.length===0)return!0;let r=`${i.split("/")[0]}/*`;return e.some(l=>l==="*"||l==="*/*"||l===i||l===r)}var ie=/^image\/hei[cf]$|\.hei[cf]$/i,le=e=>ie.test(e.type)||ie.test(e.name);async function Fe(e,i,r){let l=e.name||(r.camera?"photo.jpg":"file"),o=e.type||(le({type:"",name:l})?"image/heic":"application/octet-stream"),s=le({type:o,name:l}),d=o.startsWith("image/")||s;if(r.image&&!d)return{refused:`\u201C${l}\u201D isn\u2019t a picture.`};if(s||d&&/^image\/(jpeg|webp)$/.test(o)&&(r.camera||e.size>i.maxBytes||e.size>15e5))try{let a=await re(e,ve),f=await new Promise(y=>a.toBlob(y,"image/jpeg",$e));if(f)return oe({blob:f,name:s?l.replace(/\.hei[cf]$/i,"")+".jpg":l,type:"image/jpeg",width:a.width,height:a.height},i)}catch{if(s&&!ce(i.kinds,o))return{refused:`\u201C${l}\u201D is a HEIC photo, which this browser can\u2019t turn into a JPEG and this host doesn\u2019t take. Save it as a JPEG and try again.`}}let c={};if(d&&!s)try{let a=await createImageBitmap(e);c={width:a.width,height:a.height},a.close()}catch{}return oe({blob:e,name:l,type:o,...c},i)}function oe(e,i){return ce(i.kinds,e.type)?e.blob.size>i.maxBytes?{refused:`\u201C${e.name}\u201D is ${H(e.blob.size)}; this host takes files up to ${H(i.maxBytes)}.`}:e:{refused:`\u201C${e.name}\u201D is a ${O(e)} file; this host takes ${ue(i.kinds)}.`}}async function ke(e,i,r){let l;try{l=await i.upload(e.blob,e.name)}catch(s){let d=s instanceof Error&&s.message.trim()?s.message.trim():"the host refused it";return{refused:`\u201C${e.name}\u201D wasn\u2019t kept: ${d}`}}return J(l)?r&&!v(l)?{refused:`\u201C${e.name}\u201D isn\u2019t a picture.`}:{...l,...l.width===void 0&&e.width?{width:e.width}:{},...l.height===void 0&&e.height?{height:e.height}:{}}:{refused:`The host\u2019s answer for \u201C${e.name}\u201D isn\u2019t a file a record can keep.`}}var F="var(--graview-radius, 8px)",S={color:"var(--graview-ink-muted)",fontSize:"0.8125rem"};function _({file:e,size:i=56,style:r}){return(0,t.jsx)("img",{src:e.href,alt:$(e),width:i,height:i,loading:"lazy",decoding:"async","data-graview-thumb":e.href,style:{width:i,height:i,objectFit:"cover",borderRadius:F,display:"block",flex:"none",background:"var(--graview-edge)",...r}})}function N({files:e,label:i}){let r=e.filter(v),l=e.filter(a=>!v(a)),[o,s]=(0,g.useState)(null),d=(0,g.useRef)(null),m=(0,g.useRef)(null);(0,g.useEffect)(()=>{let a=d.current;o!==null&&a&&!a.open&&a.showModal?.()},[o]);let c=o===null?void 0:r[o];return(0,t.jsxs)("div",{style:{display:"grid",gap:10,minWidth:0},children:[r.length>0?(0,t.jsx)("ul",{"data-graview-gallery":"","aria-label":i,style:{listStyle:"none",margin:0,padding:0,display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(96px, 1fr))",gap:8},children:r.map((a,f)=>(0,t.jsx)("li",{style:{minWidth:0},children:(0,t.jsx)("button",{type:"button","aria-label":`Open ${$(a)} full size`,onClick:y=>{m.current=y.currentTarget,s(f)},style:{padding:0,border:0,background:"none",cursor:"zoom-in",display:"block",width:"100%",borderRadius:F},children:(0,t.jsx)("img",{src:a.href,alt:$(a),loading:"lazy",decoding:"async",style:{width:"100%",aspectRatio:"1",objectFit:"cover",borderRadius:F,display:"block",background:"var(--graview-edge)"}})})},a.href))}):null,l.length>0?(0,t.jsx)("ul",{"data-graview-documents":"",style:{listStyle:"none",margin:0,padding:0,display:"grid",gap:10},children:l.map(a=>(0,t.jsxs)("li",{"data-graview-document":a.type,style:{display:"grid",gap:6,minWidth:0},children:[a.type==="application/pdf"?(0,t.jsx)("object",{data:a.href,type:"application/pdf","aria-label":$(a),style:{width:"100%",height:420,border:"1px solid var(--graview-edge)",borderRadius:F},children:(0,t.jsxs)("p",{style:{margin:0,padding:12},children:["This browser shows no PDF here: ",(0,t.jsxs)("a",{href:a.href,download:a.name,children:["download ",a.name]}),"."]})}):null,(0,t.jsxs)("span",{style:{display:"flex",flexWrap:"wrap",gap:"2px 10px",alignItems:"baseline",minWidth:0,overflowWrap:"anywhere"},children:[(0,t.jsx)("a",{href:a.href,download:a.name,...a.type==="application/pdf"?{target:"_blank",rel:"noopener"}:{},children:a.name}),(0,t.jsxs)("span",{style:S,children:[O(a)," \xB7 ",H(a.bytes)]})]}),a.caption?(0,t.jsx)("span",{style:S,children:a.caption}):null]},a.href))}):null,c?(0,t.jsx)("dialog",{ref:d,"data-graview-full":c.href,"aria-label":$(c),onClose:()=>{s(null),m.current?.focus()},onClick:a=>{a.target===a.currentTarget&&a.currentTarget.close()},style:{padding:0,border:0,borderRadius:F,maxWidth:"min(96vw, 1600px)",maxHeight:"94vh",background:"var(--graview-panel)",color:"var(--graview-ink)"},children:(0,t.jsxs)("figure",{style:{margin:0,display:"grid",gap:8,padding:10},children:[(0,t.jsx)("img",{src:c.href,alt:$(c),style:{maxWidth:"100%",maxHeight:"80vh",objectFit:"contain",display:"block",margin:"0 auto"}}),(0,t.jsxs)("figcaption",{style:{display:"flex",gap:12,alignItems:"center",justifyContent:"space-between"},children:[(0,t.jsx)("span",{children:c.caption??c.name}),(0,t.jsx)("form",{method:"dialog",style:{margin:0},children:(0,t.jsx)("button",{type:"submit",autoFocus:!0,children:"Close"})})]})]})}):null]})}function ge({value:e,onChange:i,several:r,image:l,label:o,thumbs:s=!0}){let d=X(),m=(0,g.useId)(),c=(0,g.useRef)(null),a=(0,g.useRef)(null),[f,y]=(0,g.useState)(null),[k,D]=(0,g.useState)(null),[U,E]=(0,g.useState)([]),[I,L]=(0,g.useState)(!1),C=d?l?d.kinds.filter(n=>n.startsWith("image/")||n==="*"||n==="*/*"):d.kinds:[],A=d?d.kinds.length===0||C.some(n=>n.startsWith("image/")||n.startsWith("*")):!1,P=!!d&&(!l||A),G=l?r?"pictures":"a picture":r?"files":"a file",q=l?C.length>0?C.join(","):"image/*":d?.kinds.join(",")||void 0,me=typeof matchMedia=="function"&&matchMedia("(pointer: coarse)").matches,V=(0,g.useRef)(e);V.current=e;let K=(0,g.useRef)(null),W=(0,g.useRef)(null);(0,g.useEffect)(()=>{let n=W.current;if(!n||n.from===e)return;W.current=null;let u=K.current?.children,h=u?.[Math.min(n.at,u.length-1)];((n.what==="move"?h?.querySelector("[data-graview-file-move]"):null)??h?.querySelector("[data-graview-file-remove]")??c.current?.parentElement?.querySelector("[data-graview-file-choose]"))?.focus()});let T=async(n,u)=>{if(!d||n.length===0)return;let h=r?n:n.slice(0,1),p=[],w=[];h.length<n.length&&w.push(`${o} holds one ${l?"picture":"file"}, so ${n.slice(1).map(b=>`\u201C${b.name||"the photo"}\u201D`).join(", ")} ${n.length>2?"were":"was"} left out.`),E([]),D(null);for(let b of h){y(`Sending ${b.name||"the photo"}\u2026`);let z=await Fe(b,d,{image:l,camera:u==="camera"});if("refused"in z){w.push(z.refused);continue}let x=await ke(z,d,l);"refused"in x?w.push(x.refused):[...r?V.current:[],...p].some(be=>be.href===x.href)?w.push(`\u201C${x.name}\u201D is already here.`):p.push(x)}if(y(null),E(w),p.length!==0)try{i(r?[...V.current,...p]:p.slice(-1)),D(`Added ${p.map(b=>b.name).join(", ")}.`)}catch(b){E([...w,b instanceof Error?b.message:String(b)])}},R=(n,u,h)=>{try{W.current=h?{...h,from:e}:null,i(n),D(u)}catch(p){W.current=null,E([p instanceof Error?p.message:String(p)])}},M=n=>n?Array.from(n):[],ye=n=>{let u=M(n.clipboardData?.files);!P||u.length===0||(n.preventDefault(),T(u,"pasted"))},fe=n=>{L(!1),P&&(n.preventDefault(),T(M(n.dataTransfer?.files),"dropped"))};return(0,t.jsxs)("div",{role:"group","aria-labelledby":`${m}-label`,"data-graview-file-editor":"","data-graview-dropping":I?"":void 0,onPaste:ye,onDragOver:n=>{P&&(n.preventDefault(),L(!0))},onDragLeave:()=>L(!1),onDrop:fe,style:{display:"grid",gap:8,minWidth:0,padding:I?6:0,outline:I?"2px dashed var(--graview-accent)":"none",borderRadius:F},children:[(0,t.jsx)("span",{id:`${m}-label`,style:{position:"absolute",width:1,height:1,overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap"},children:o}),e.length>0&&(r||e.length>1)?(0,t.jsx)("ul",{ref:K,style:{listStyle:"none",margin:0,padding:0,display:"grid",gap:6},children:e.map((n,u)=>(0,t.jsxs)("li",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap",minWidth:0},children:[s&&v(n)?(0,t.jsx)(_,{file:n,size:40}):null,(0,t.jsx)("span",{style:{flex:"1 1 8rem",minWidth:0,overflowWrap:"anywhere"},children:n.name}),(0,t.jsx)(de,{file:n,onCaption:h=>R(e.map((p,w)=>w===u?se(p,h):p),h?`${n.name} now says \u201C${h}\u201D.`:`${n.name} says its name again.`)}),r&&u>0?(0,t.jsx)("button",{type:"button","data-graview-file-move":"","aria-label":`Move ${n.name} earlier`,onClick:()=>R(e.map((h,p)=>p===u-1?n:p===u?e[u-1]:h),`Moved ${n.name} earlier.`,{at:u-1,what:"move"}),children:"\u2191"}):null,r?(0,t.jsx)("button",{type:"button","data-graview-file-remove":"","aria-label":`Remove ${n.name}`,onClick:()=>R(e.filter((h,p)=>p!==u),`Removed ${n.name}.`,{at:u,what:"remove"}),children:"Remove"}):null]},`${u}:${n.href}`))}):e.length===1?(0,t.jsx)(de,{file:e[0],onCaption:n=>R([se(e[0],n)],n?`${e[0].name} now says \u201C${n}\u201D.`:`${e[0].name} says its name again.`)}):null,P?(0,t.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:8,alignItems:"center"},children:[(0,t.jsx)("input",{ref:c,type:"file",hidden:!0,multiple:r,...q?{accept:q}:{},"data-graview-file-input":"","aria-label":`Choose ${G}`,onChange:n=>{let u=M(n.currentTarget.files);n.currentTarget.value="",T(u,"picked")}}),(0,t.jsx)("button",{type:"button",disabled:f!==null,onClick:()=>c.current?.click(),"data-graview-file-choose":"",children:e.length>0&&!r?`Replace ${l?"the picture":"the file"}`:`Choose ${G}`}),A?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("input",{ref:a,type:"file",hidden:!0,accept:"image/*",capture:"environment","data-graview-photo-input":"","aria-label":"Take a photo",onChange:n=>{let u=M(n.currentTarget.files);n.currentTarget.value="",T(u,"camera")}}),me?(0,t.jsx)("button",{type:"button",disabled:f!==null,onClick:()=>a.current?.click(),children:"Take a photo"}):null]}):null,(0,t.jsxs)("span",{style:S,"data-graview-file-takes":"",children:["or drop or paste ",r?"them":"it"," here \xB7 ",d.kinds.length>0?ue(C.length>0?C:d.kinds):"any file",", up to ",H(d.maxBytes)]})]}):(0,t.jsx)("p",{style:{...S,margin:0},"data-graview-file-none":"",children:d?"This host doesn\u2019t take pictures, so none can be added here.":"This host doesn\u2019t take files, so none can be added here."}),(0,t.jsx)("p",{"aria-live":"polite",style:{...S,margin:0,minHeight:f||k?void 0:0},"data-graview-file-status":"",children:f??k??""}),U.length>0?(0,t.jsx)("div",{role:"alert","data-graview-file-refused":"",style:{color:"var(--graview-warn)",fontSize:"0.875rem",display:"grid",gap:2},children:U.map((n,u)=>(0,t.jsx)("p",{style:{margin:0},children:n},u))}):null]})}var se=(e,i)=>{let{caption:r,...l}=e;return i?{...l,caption:i}:l};function de({file:e,onCaption:i}){let[r,l]=(0,g.useState)(e.caption??"");(0,g.useEffect)(()=>l(e.caption??""),[e.caption]);let o=()=>{let s=r.trim().slice(0,500);s!==(e.caption??"")&&i(s)};return(0,t.jsx)("input",{type:"text",value:r,placeholder:v(e)?"What it shows":"What it is","aria-label":`What ${e.name} ${v(e)?"shows":"is"}`,"data-graview-file-caption":e.href,onChange:s=>l(s.target.value),onBlur:o,onKeyDown:s=>{s.key==="Enter"&&(s.preventDefault(),o())},style:{flex:"1 1 10rem",minWidth:0,font:"inherit",fontSize:"0.875rem",minHeight:24}})}function pe({field:e,label:i,labelStyle:r,valueStyle:l,style:o,children:s}){return(0,t.jsxs)("div",{"data-graview-files":e,style:{display:"grid",gap:6,minWidth:0,gridColumn:"1 / -1",...o},children:[(0,t.jsx)("dt",{style:r,children:i}),(0,t.jsx)("dd",{style:{margin:0,minWidth:0,display:"grid",gap:10,...l},children:s})]})}function he(e){let{nodeId:i,field:r,label:l,files:o}=e,{fields:s,commit:d}=ae(i),m=s.find(y=>y.field===r&&y.takesValue),c=m?.shape,a=c?.type==="several"?c.of:c,f=c?.type==="several";return o.length===0&&a?.type!=="file"?null:(0,t.jsxs)(pe,{...e,children:[(0,t.jsx)(N,{files:o,label:l}),m&&a?.type==="file"?(0,t.jsx)(ge,{value:o,thumbs:!1,several:f,image:a.image===!0,label:l,onChange:y=>{let k=f?y:y[y.length-1];k!==void 0&&d(m,k)}}):null]})}function Re(e){switch(e.as){case"field":return e.read?e.files.length>0?(0,t.jsx)(pe,{...e,children:(0,t.jsx)(N,{files:e.files,label:e.label})}):null:(0,t.jsx)(he,{...e});case"unfilled":return(0,t.jsx)(Ce,{...e});case"thumb":return(0,t.jsx)(_,{...e});case"block":return e.files.length>0?(0,t.jsx)("span",{className:"graview-spec-image","data-graview-field":e.field,"data-graview-image":e.view,style:{display:"block",minWidth:0,...e.view==="gallery"?{position:"relative",zIndex:Y.raised}:{}},children:e.view==="thumb"?(0,t.jsx)(_,{file:e.files[0],size:72}):(0,t.jsx)(N,{files:e.files,label:e.label})}):null;case"control":{let i=(0,t.jsx)(ge,{value:j(e.value),several:e.several,image:e.image,label:e.label,onChange:r=>e.onChange(e.several?r:r[r.length-1])});return e.title===void 0?i:(0,t.jsxs)("fieldset",{"data-graview-part":"group","data-graview-field":e.several?"files":"file",children:[(0,t.jsx)("legend",{"data-graview-part":"label",children:e.title}),i]})}}}function Ce({nodeId:e,skip:i,labels:r,labelStyle:l,style:o}){let{store:s}=ee(),d=te(e),m=d?s.schema.tryDefinition(d.kind):void 0,c=ne(m).filter(a=>!i.includes(a)&&!(m?.display?.hide??[]).includes(a)&&j(d?.[a]).length===0);return c.length===0?null:(0,t.jsx)("dl",{style:{margin:0,display:"grid",gap:14,minWidth:0},children:c.map(a=>(0,t.jsx)(he,{nodeId:e,field:a,label:r?.[a]??Q(m,a),files:[],...l?{labelStyle:l}:{},...o?{style:o}:{}},a))})}export{ge as FilesEditor,ve as SEND_EDGE,Re as drawFiles,ue as kindsWords,Fe as prepare,ke as send,H as sizeWords,ce as takes,O as typeWords};
@@ -0,0 +1 @@
1
+ import{d as f}from"./chunk.NQP3DWME.js";import{Xb as c}from"./chunk.P7YN4Z3K.js";import{a as S,b as s}from"./chunk.MRK6QJV5.js";import{b as a}from"./chunk.AJZBJBMO.js";var m=a(s(),1),u=f.part(e=>(0,m.jsx)(e.ActivityRail,{calls:[]}),{quiet:!0});var o=a(S(),1),l=a(s(),1);function Ye({context:e,stop:r,title:t,style:n,className:i,children:g,...p}){let d=c(e.views?.arrangement?.()),y=g??`In ${d==="Scene"?"the scene":d.replace(/^The /,"the ")} \u2197`;if(e.overview){let h=e.overview;return(0,l.jsx)("a",{href:r,...p,...t?{title:t}:{},style:n,...i?{className:i}:{},onClick:x=>{x.preventDefault(),h(r)},children:y})}return e.embedded?null:(0,l.jsx)("a",{href:`${e.sceneHref??"/"}${r}`,...p,...t?{title:t}:{},style:n,...i?{className:i}:{},children:y})}function qe(){return(0,l.jsx)("a",{href:"#fresh","data-testid":"start-fresh",title:"Forget every edit made in this browser and return to the example",onClick:e=>{e.preventDefault();let r=new URL(window.location.href);r.searchParams.set("fresh","1"),window.location.assign(r.toString())},style:{color:"inherit",display:"inline-flex",alignItems:"center",minHeight:24,minWidth:24},children:"Start fresh"})}function ze(e){let r=(0,o.useRef)(0),t=(0,o.useCallback)(n=>e.subscribe(()=>{r.current+=1,n()}),[e]);return(0,o.useSyncExternalStore)(t,()=>r.current,()=>0)}export{u as a,Ye as b,qe as c,ze as d};