graview 0.1.37 → 0.1.38
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.
- package/dist/preview/{chunk.YFW5BF6J.js → chunk.2EJAIT33.js} +1 -1
- package/dist/preview/chunk.2HFRVWWM.js +1 -0
- package/dist/preview/chunk.2VIGF4FO.js +1 -0
- package/dist/preview/chunk.33GN2NUT.js +1 -0
- package/dist/preview/{chunk.5CLFTXP3.js → chunk.36SQJMEE.js} +1 -1
- package/dist/preview/{chunk.NOZEHLWG.js → chunk.3D5T3XIE.js} +1 -1
- package/dist/preview/chunk.3FW4QNGV.js +1 -0
- package/dist/preview/chunk.3RT2GUZ5.js +1 -0
- package/dist/preview/chunk.3ZRHHB7X.js +1 -0
- package/dist/preview/{chunk.YW2BZ2LH.js → chunk.4DEUD66C.js} +2 -2
- package/dist/preview/{chunk.VW6WGFL6.js → chunk.4EQSP7I3.js} +1 -1
- package/dist/preview/chunk.4Y6BCHV2.js +1 -0
- package/dist/preview/{chunk.UPBUF7KR.js → chunk.5MSO3KRO.js} +1 -1
- package/dist/preview/chunk.5VBBQ6Z3.js +1 -0
- package/dist/preview/chunk.5XJEGXDO.js +3 -0
- package/dist/preview/{chunk.BXWO6ILK.js → chunk.67WL7BGF.js} +1 -1
- package/dist/preview/{chunk.NWHFFOXW.js → chunk.6CKBIY7L.js} +1 -1
- package/dist/preview/{chunk.WNMLA4YW.js → chunk.6IHXTT6Z.js} +1 -1
- package/dist/preview/{chunk.QJYALCIW.js → chunk.6ONRWFA6.js} +1 -1
- package/dist/preview/{chunk.TSI4O3GH.js → chunk.6UCRL4OF.js} +1 -1
- package/dist/preview/{chunk.ENJKCSNX.js → chunk.6XJP7F3I.js} +1 -1
- package/dist/preview/{chunk.JDRM6XXD.js → chunk.74RMHUCX.js} +1 -1
- package/dist/preview/{chunk.YAXOIJVH.js → chunk.7H5KVW2F.js} +1 -1
- package/dist/preview/chunk.7RSZMIAL.js +1 -0
- package/dist/preview/{chunk.7MMNMZLF.js → chunk.AFY35RJP.js} +1 -1
- package/dist/preview/{chunk.SNKOPWAD.js → chunk.AZCFXPEL.js} +1 -1
- package/dist/preview/{chunk.JBRXGPPM.js → chunk.B5ILKGEF.js} +1 -1
- package/dist/preview/{chunk.BRBY5WJT.js → chunk.BRHRAVU2.js} +2 -2
- package/dist/preview/chunk.BUVAMSOZ.js +3 -0
- package/dist/preview/{chunk.ENEOGGFM.js → chunk.DFVVS6C5.js} +1 -1
- package/dist/preview/{chunk.YNJOLOFG.js → chunk.DL637Q3W.js} +1 -1
- package/dist/preview/chunk.DQJAEU4V.js +1 -0
- package/dist/preview/chunk.ESSQAMPM.js +1 -0
- package/dist/preview/{chunk.QYWBQ5NX.js → chunk.EUGWV3S6.js} +1 -1
- package/dist/preview/chunk.EV553KRT.js +1 -0
- package/dist/preview/{chunk.EHT4HBH5.js → chunk.EZP4FHDX.js} +1 -1
- package/dist/preview/chunk.F6PIK2J2.js +1 -0
- package/dist/preview/{chunk.AWRS6TUN.js → chunk.FMVWXSQ7.js} +1 -1
- package/dist/preview/{chunk.NZJZIYDK.js → chunk.FTJBW25J.js} +1 -1
- package/dist/preview/chunk.FUJM7GDV.js +1 -0
- package/dist/preview/{chunk.AZ333RB3.js → chunk.FYIQZMVF.js} +1 -1
- package/dist/preview/{chunk.UVLPVHID.js → chunk.GR5Q4HTW.js} +1 -1
- package/dist/preview/{chunk.KAWP4RNR.js → chunk.GZ3IXNA4.js} +1 -1
- package/dist/preview/chunk.HUSFMFXH.js +1 -0
- package/dist/preview/chunk.HVTGPEVW.js +1 -0
- package/dist/preview/chunk.I3SQJ2L2.js +1 -0
- package/dist/preview/{chunk.GMZAQGH7.js → chunk.IEDXW36H.js} +1 -1
- package/dist/preview/chunk.IM7LXLIB.js +2 -0
- package/dist/preview/chunk.IU6ISXXC.js +1 -0
- package/dist/preview/{chunk.XS3SAH6U.js → chunk.JWJQ2VXS.js} +1 -1
- package/dist/preview/chunk.K5KEECHL.js +88 -0
- package/dist/preview/{chunk.UR5TT4JH.js → chunk.KNJZ2YNJ.js} +1 -1
- package/dist/preview/chunk.L34FY7QQ.js +1 -0
- package/dist/preview/{chunk.HYAKRLPT.js → chunk.L73VUBXN.js} +3 -3
- package/dist/preview/{chunk.QOXTBRKE.js → chunk.L7JKEEMM.js} +1 -1
- package/dist/preview/chunk.LAW5PQEM.js +1 -0
- package/dist/preview/chunk.LDD3QX7G.js +1 -0
- package/dist/preview/chunk.LF7PU77M.js +7 -0
- package/dist/preview/chunk.LHO7L3CS.js +1 -0
- package/dist/preview/chunk.LU5LSXSW.js +1 -0
- package/dist/preview/{chunk.3V2M3S4U.js → chunk.MCVY6RRS.js} +1 -1
- package/dist/preview/chunk.MQ7FNHXG.js +25 -0
- package/dist/preview/{chunk.YX354FRV.js → chunk.MVNUWK5Y.js} +1 -1
- package/dist/preview/{chunk.7OLVQ2FZ.js → chunk.MWZK3HVG.js} +1 -1
- package/dist/preview/{chunk.QNGFBJWP.js → chunk.NH5TDAB2.js} +1 -1
- package/dist/preview/{chunk.7UQOXYJX.js → chunk.NORRCKGN.js} +1 -1
- package/dist/preview/{chunk.LJE5J3JK.js → chunk.NPX7SPXM.js} +1 -1
- package/dist/preview/chunk.NQQHOSOK.js +1 -0
- package/dist/preview/chunk.NWWMUOZM.js +1 -0
- package/dist/preview/{chunk.X2OLXTRL.js → chunk.OE4QOBJF.js} +1 -1
- package/dist/preview/chunk.OEF3GPRM.js +1 -0
- package/dist/preview/{chunk.LYJXX6BU.js → chunk.OS3L4ZOF.js} +1 -1
- package/dist/preview/chunk.OTL3Z345.js +1 -0
- package/dist/preview/{chunk.3KJQXYCA.js → chunk.P3UPCI23.js} +1 -1
- package/dist/preview/chunk.PGKIEDYV.js +9 -0
- package/dist/preview/{chunk.H4LFJPDV.js → chunk.PKUWET2F.js} +1 -1
- package/dist/preview/chunk.POHEWJKZ.js +1 -0
- package/dist/preview/chunk.PUBG2L6F.js +117 -0
- package/dist/preview/chunk.QT4XGC5Z.js +344 -0
- package/dist/preview/chunk.QTTBZJ6W.js +1 -0
- package/dist/preview/{chunk.FGYCYLUS.js → chunk.QYRPELLU.js} +1 -1
- package/dist/preview/chunk.RJDZOF2L.js +1 -0
- package/dist/preview/{chunk.MJLUAGEV.js → chunk.ROGYDMES.js} +1 -1
- package/dist/preview/{chunk.UCVZG7S4.js → chunk.RVJYEOFN.js} +1 -1
- package/dist/preview/{chunk.EKUAI5YL.js → chunk.RZVZG2BQ.js} +1 -1
- package/dist/preview/{chunk.CV4CBHFT.js → chunk.SGB6IMWN.js} +1 -1
- package/dist/preview/chunk.SGLJTSTD.js +1 -0
- package/dist/preview/{chunk.G7S7GLDK.js → chunk.SITFEJES.js} +1 -1
- package/dist/preview/{chunk.WVEKYJSI.js → chunk.SZWX56WR.js} +6 -6
- package/dist/preview/{chunk.5JPRRV47.js → chunk.TKSGC6XH.js} +1 -1
- package/dist/preview/chunk.TOWYHWPB.js +17 -0
- package/dist/preview/{chunk.TXS4I326.js → chunk.UF3L6FJO.js} +1 -1
- package/dist/preview/chunk.UXIFQIHA.js +2 -0
- package/dist/preview/{chunk.SZMWJHU2.js → chunk.V2NBJDAX.js} +1 -1
- package/dist/preview/{chunk.CGQLE7JW.js → chunk.V5ZT5NSJ.js} +1 -1
- package/dist/preview/chunk.VKHKYK5L.js +1 -0
- package/dist/preview/{chunk.TN4GY6LW.js → chunk.VNBR4DHD.js} +1 -1
- package/dist/preview/chunk.VSYHU5MA.js +1 -0
- package/dist/preview/{chunk.ELY2RMGE.js → chunk.VTWFVPKD.js} +1 -1
- package/dist/preview/chunk.VV4BPOIK.js +1 -0
- package/dist/preview/chunk.W2HCJQVK.js +32 -0
- package/dist/preview/{chunk.BA3REPV5.js → chunk.WERYQENC.js} +1 -1
- package/dist/preview/{chunk.6DYZBDWT.js → chunk.WG5NIR23.js} +1 -1
- package/dist/preview/{chunk.HBBVVALN.js → chunk.WLPTY4BF.js} +5 -5
- package/dist/preview/chunk.XHWL7QBF.js +1 -0
- package/dist/preview/chunk.XM3NPZLP.js +1 -0
- package/dist/preview/chunk.YAXZNQY6.js +1 -0
- package/dist/preview/chunk.YG423NEB.js +1 -0
- package/dist/preview/{chunk.74DXEKUV.js → chunk.YPY5BOEI.js} +1 -1
- package/dist/preview/{chunk.RPOYSIVQ.js → chunk.YUJG5SN5.js} +1 -1
- package/dist/preview/chunk.YVR3ZMTV.js +1 -0
- package/dist/preview/chunk.YXH3IWNR.js +1 -0
- package/dist/preview/{chunk.4NCXMVPY.js → chunk.Z3ZKYSPN.js} +1 -1
- package/dist/preview/{chunk.TRLVFHFT.js → chunk.ZLXPIEUC.js} +2 -2
- package/dist/preview/{chunk.UV2TSAB4.js → chunk.ZRQI5VJF.js} +1 -1
- package/dist/preview/chunk.ZYCNEOAQ.js +1 -0
- package/dist/preview/index.html +43 -42
- package/dist/preview/page.js +7 -7
- package/package.json +6 -6
- package/dist/preview/chunk.24E4R4ZH.js +0 -1
- package/dist/preview/chunk.2JF254FO.js +0 -9
- package/dist/preview/chunk.2TDB4D6Y.js +0 -1
- package/dist/preview/chunk.3IVVXVG7.js +0 -1
- package/dist/preview/chunk.57XTDW57.js +0 -1
- package/dist/preview/chunk.5EXYDBAL.js +0 -88
- package/dist/preview/chunk.67PVRVAC.js +0 -1
- package/dist/preview/chunk.6SK2K72G.js +0 -1
- package/dist/preview/chunk.76QUEWYD.js +0 -1
- package/dist/preview/chunk.AHC4EXLW.js +0 -3
- package/dist/preview/chunk.CYPTJNES.js +0 -1
- package/dist/preview/chunk.D2ILIAND.js +0 -1
- package/dist/preview/chunk.DLCFCMKX.js +0 -1
- package/dist/preview/chunk.DMUUYZ37.js +0 -1
- package/dist/preview/chunk.DNNL7F3P.js +0 -25
- package/dist/preview/chunk.FEPYKPZE.js +0 -1
- package/dist/preview/chunk.FFW6XWHB.js +0 -17
- package/dist/preview/chunk.GXPBRYSR.js +0 -1
- package/dist/preview/chunk.HCK4Y6C5.js +0 -1
- package/dist/preview/chunk.HSRGYZOR.js +0 -1
- package/dist/preview/chunk.IHBIRAC4.js +0 -2
- package/dist/preview/chunk.IWK5QL6P.js +0 -1
- package/dist/preview/chunk.J2HQEUYA.js +0 -1
- package/dist/preview/chunk.JFLUVZNW.js +0 -1
- package/dist/preview/chunk.LPJY6V5D.js +0 -1
- package/dist/preview/chunk.LVLAS5GL.js +0 -1
- package/dist/preview/chunk.LVNAB2BW.js +0 -27
- package/dist/preview/chunk.MKPJKZAP.js +0 -1
- package/dist/preview/chunk.MMBMVHIG.js +0 -1
- package/dist/preview/chunk.NNNVB6RV.js +0 -1
- package/dist/preview/chunk.NV6IZJKA.js +0 -1
- package/dist/preview/chunk.O6KNGFWH.js +0 -1
- package/dist/preview/chunk.PMK73A53.js +0 -1
- package/dist/preview/chunk.PQPZZ7ZW.js +0 -117
- package/dist/preview/chunk.QMZUKAPJ.js +0 -1
- package/dist/preview/chunk.QXARGANF.js +0 -341
- package/dist/preview/chunk.TX5QIZEP.js +0 -1
- package/dist/preview/chunk.U4URQDC5.js +0 -1
- package/dist/preview/chunk.VUKHDZNI.js +0 -1
- package/dist/preview/chunk.VX7MGVP5.js +0 -1
- package/dist/preview/chunk.WLV2QYTS.js +0 -1
- package/dist/preview/chunk.WNKRXL3O.js +0 -1
- package/dist/preview/chunk.XWJ2MRQF.js +0 -1
- package/dist/preview/chunk.Y44TR4WG.js +0 -1
- package/dist/preview/chunk.ZB7GV3IT.js +0 -1
- package/dist/preview/chunk.ZOT4V66Q.js +0 -3
- package/dist/preview/chunk.ZYPCE2LZ.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as on,c as rn}from"./chunk.UT6642FC.js";import{e as N}from"./chunk.7OLVQ2FZ.js";import{c as B}from"./chunk.UVLPVHID.js";import{Eb as sn,Fb as E,Rb as V,Ub as Q,Va as H,ba as F,ca as K,da as q,ea as nn,fa as en,ia as tn,ja as J,ka as T}from"./chunk.HBBVVALN.js";function an(){return{name:"insight",derive({store:n,nodes:a,kindSelection:t}){let l=[],v=f=>F(n.schema.tryDefinition(f.kind),f);for(let f of a){if([...n.schema.edgeKinds].reduce((c,S)=>c+n.graph.out(f.id,S).length+n.graph.in(f.id,S).length,0)===0){l.push({id:`insight:island:${f.id}`,text:`${v(f)} is connected to nothing yet`,nodeIds:[f.id]});continue}for(let c of n.schema.edgeKinds){let S=n.graph.in(f.id,c).length;if(S<3)continue;let s=[...n.graph.allEdges()].filter(r=>r.kind===c),e=s.length;e>=4&&S/e>.6&&l.push({id:`insight:load:${f.id}:${c}`,text:`${v(f)} ${mn(n,s,c,S)}`,nodeIds:[f.id]})}}for(let f of t){if(n.graph.nodesOfKind(f).length>0)continue;let A=n.schema.definitions.filter(c=>c.kind!==f).filter(c=>Object.values(c.edges).some(S=>S.to!=="*"&&S.to.includes(f))).map(c=>c.plural??`${c.kind}s`);A.length>0&&l.push({id:`insight:gap:${f}`,text:`Nothing here yet, though ${A.join(" and ")} expect to connect to these`,nodeIds:[]})}return{observations:l}}}}function mn(n,a,t,l){let v=new Set(a.map(s=>n.graph.getNode(s.from)?.kind).filter(s=>s!==void 0)),f=v.size===1?[...v][0]:void 0,A=a.length,c=B(n.schema,f??[...v][0]??"",t,"in"),S=s=>f?nn(n.schema,f,s):String(s);return l===A?`${c}: all ${S(l)}`:`${c}: ${l} of the ${S(A)}`}function dn(n){let a=new Map;if(n.length===0)return a;let t=n.slice(-512),l=new Set;for(let f of t)f.undoes&&l.add(f.undoes);let v=n[n.length-1].seq;for(let f of t){if(!f.mutation||l.has(f.id))continue;let A=Math.pow(.5,(v-f.seq)/64);a.set(f.mutation.name,(a.get(f.mutation.name)??0)+A)}return a}function cn(n){return 8*(n/(n+1))}var pn=100;function un(){return{name:"invariant",derive({store:n,selection:a,nodes:t,violations:l}){let v=s=>F(n.schema.tryDefinition(s.kind),s),f=new Set(a),A=l.filter(s=>s.nodeIds.some(e=>f.has(e))||s.subjectId!==void 0&&f.has(s.subjectId)),c=[],S=[];A.forEach((s,e)=>{S.push({id:`violation:${s.invariant}:${e}`,text:s.message,nodeIds:s.nodeIds}),s.repairs.forEach((r,h)=>{c.push({id:`invariant:${s.invariant}:${e}:${h}`,label:r.label,provider:"invariant",mutation:r.mutation,args:r.args??{},open:(r.missing??[]).map(k=>{let d=n.allMutations().find(p=>p.name===r.mutation);if(!d)return{name:k};let o=E(d.input).find(p=>p.name===k),m=o?o.kinds.includes("*")?n.graph.allNodes().map(p=>p.id):o.kinds.flatMap(p=>n.graph.nodesOfKind(p).map($=>$.id)):void 0;return{name:k,shape:N(d.input,k),...o?{kinds:o.kinds}:{},...m?{candidates:m}:{}}}),score:pn-h-(r.missing?.length??0),why:s.message,nodeIds:s.nodeIds,...s.subjectId===void 0?{}:{subjectId:s.subjectId}})})});for(let s of t){let e=n.allInvariants().filter(r=>{if(r.scope==="graph")return!1;let h=r.scope;return h.kind!==s.kind?!1:h.match?h.match(s):!0});e.length!==0&&(A.some(r=>r.subjectId===s.id||r.nodeIds.includes(s.id))||S.push({id:`holds:${s.id}`,text:`${v(s)} holds \u2014 nothing currently breaks ${e.length===1?"it":`any of its ${e.length} rules`}`,nodeIds:[s.id]}))}return{affordances:c,observations:S}}}}var U=40;function fn(){return{name:"schema",derive({store:n,selection:a,nodes:t,kindSelection:l,edgeSelection:v,principal:f}){let A=(e,r)=>f!==void 0&&!n.permits({name:e,args:r},f).ok,c=[];if(t.length===0&&v.length>0){for(let e of v){let r=n.graph.getNode(e.from),h=n.graph.getNode(e.to);if(!r||!h)continue;let k=rn(n,e);k?.provisional&&c.push({id:`schema:edge:${V}:${e.kind}:${e.from}:${e.to}`,label:"Keep this link",provider:"schema",mutation:V,args:{kind:e.kind,from:e.from,to:e.to},open:[],score:64,why:on(k),nodeIds:[e.from,e.to]});for(let d of n.allMutations()){let o=(d.connects??[]).includes(e.kind),m=(d.severs??[]).includes(e.kind);if(!o&&!m||d.derived?.relation!==void 0&&d.derived.kind!==r.kind)continue;let p={},$=[],j=E(d.input);for(let g of j){let w=g.kinds.includes("*")||g.kinds.includes(r.kind),P=g.kinds.includes("*")||g.kinds.includes(h.kind),y=w&&!j.some(I=>I!==g&&(I.kinds.includes(r.kind)||I.kinds.includes("*")));w&&!P?p[g.name]=e.from:P&&!w?p[g.name]=e.to:w&&P&&y?p[g.name]=e.from:$.push({name:g.name,kinds:g.kinds,candidates:[e.from,e.to],shape:N(d.input,g.name)})}for(let g of G(d.input,""))g in p||$.some(w=>w.name===g)||$.push({name:g,shape:N(d.input,g)});$.every(g=>g.optional===!0?!0:g.kinds!==void 0?(g.candidates?.length??0)>0:(g.candidates?.length??0)>0||g.shape!==void 0&&g.shape.type!=="unknown")&&(o&&!m&&$.length===0||c.push({id:`schema:edge:${d.name}:${e.kind}:${e.from}:${e.to}`,label:K(d),provider:"schema",mutation:d.name,args:p,open:$,...d.destructive?{destructive:!0}:{},score:(m?62:58)-$.length,why:`this line is "${B(n.schema,n.graph.getNode(e.from)?.kind??"",e.kind,"out")}"`,nodeIds:[e.from,e.to]}))}}return{affordances:c}}if(t.length===0&&l.length>0){let e=new Set(l),r=[];for(let h of n.allMutations()){if(!(h.creates??[]).some(o=>e.has(o)))continue;let k=[];for(let o of E(h.input)){let m=o.kinds.includes("*")?n.graph.allNodes().map(p=>p.id):o.kinds.flatMap(p=>n.graph.nodesOfKind(p).map($=>$.id));k.push({name:o.name,kinds:o.kinds,candidates:m,shape:N(h.input,o.name),...o.optional?{optional:!0}:{}})}for(let o of G(h.input,""))k.some(m=>m.name===o)||k.push({name:o,shape:N(h.input,o)});if(!k.every(o=>o.optional===!0?!0:o.kinds!==void 0?(o.candidates?.length??0)>0:(o.candidates?.length??0)>0||o.shape!==void 0&&o.shape.type!=="unknown")&&!A(h.name,{})){let o=k.filter(m=>m.optional!==!0&&m.kinds!==void 0&&!m.kinds.includes("*")&&(m.candidates?.length??0)===0);if(o.length>0){let m=[...new Set(o.flatMap(p=>p.kinds??[]))].map(p=>J(T(n.schema.tryDefinition(p),p)));r.push({id:`schema:waits:${h.name}`,text:`"${h.title??h.name}" cannot begin until there is ${m.length===1?m[0]:`${m.slice(0,-1).join(", ")} and ${m[m.length-1]}`}.`,nodeIds:[]})}continue}c.push({id:`schema:add:${h.name}`,label:K(h),provider:"schema",mutation:h.name,args:{},open:k,score:U-k.length,why:`this makes ${(h.creates??[]).filter(o=>e.has(o)).map(o=>J(T(n.schema.tryDefinition(o),o))).join(", ")}`,nodeIds:[]})}return{affordances:c,observations:r}}if(t.length===0)return{};let S=new Set(t.map(e=>e.kind)),s=(e,r,h)=>{let k=[];for(let d of n.graph.allEdges()){if(!r.includes(d.kind))continue;let o=d.from===e?d.to:d.to===e?d.from:null;if(!o)continue;let m=n.graph.getNode(o);m&&(!h.includes("*")&&!h.includes(m.kind)||k.includes(o)||k.push(o))}return k};for(let e of n.allMutations()){let r=e.subject;if(!r||!(r.kinds==="*"?!0:[...S].every(u=>r.kinds.includes(u))))continue;let k=e.derived?.act;if((k==="archive"||k==="merge")&&t.some(u=>H(u))||k==="unarchive"&&!t.some(u=>H(u))||k==="leave-alone"&&t.every(u=>Q(n,u.id))||k==="allow-tidying"&&!t.some(u=>Q(n,u.id)))continue;let d=t.length===1?t[0].id:null,o=e.severs??[],m=e.connects??[];if(d&&o.length>0&&m.length===0&&s(d,o,["*"]).length===0)continue;let p=[];for(let u of E(e.input)){if(u.name===r.arg)continue;let g=u.kinds.includes("*")?n.graph.allNodes().map(w=>w.id):u.kinds.flatMap(w=>n.graph.nodesOfKind(w).map(P=>P.id));if(d&&m.length>0){let w=new Set(s(d,m,u.kinds));g=g.filter(P=>!w.has(P))}else d&&o.length>0&&(g=s(d,o,u.kinds));p.push({name:u.name,kinds:u.kinds,candidates:g.filter(w=>!a.includes(w)),shape:N(e.input,u.name),...u.optional?{optional:!0}:{}})}for(let u of G(e.input,r.arg))p.some(g=>g.name===u)||p.push({name:u,shape:N(e.input,u)});if(p.length===0&&d){let u=kn(e.input,r.arg);if(u.length>0&&!yn(n,e.name,{[r.arg]:d}))for(let g of u){let w=E(e.input).find(P=>P.name===g);p.push({name:g,optional:!0,...w?{kinds:w.kinds}:{},shape:N(e.input,g)})}}if(!p.every(u=>u.optional===!0?!0:u.kinds!==void 0?(u.candidates?.length??0)>0:(u.candidates?.length??0)>0||u.shape!==void 0&&u.shape.type!=="unknown")&&!A(e.name,d?{[r.arg]:d}:{}))continue;let j=t.map(u=>({[r.arg]:u.id}));p.length===0&&!j.some(u=>n.wouldChange({name:e.name,args:u}))||c.push({id:`schema:${e.name}`,label:t.length>1?`${K(e)} (${t.length})`:K(e),provider:"schema",mutation:e.name,args:j[0]??{},open:p,...e.destructive?{destructive:!0}:{},...e.derived?.act==="archive"||e.derived?.act==="merge"||e.derived?.act==="leave-alone"||e.derived?.act==="allow-tidying"?{setsAside:!0}:{},...o.length>0||m.length>0?{ties:!0}:{},...t.length>1?{batch:j}:{},score:U-p.length,why:t.length>1?`all ${t.length} selected nodes are ${[...S].map(u=>en(n.schema,u).toLowerCase()).join(" or ")}`:`this is ${J(T(n.schema.tryDefinition(t[0].kind),t[0].kind))}`,nodeIds:t.map(u=>u.id)})}if(t.length===1){let e=t[0];for(let r of n.allMutations()){let h=r.subject,k=r.severs??[],d=r.connects??[];if(!h||k.length===0&&d.length===0)continue;let o=h.kinds==="*"?"*":h.kinds;if(o==="*"||o.includes(e.kind))continue;let m=E(r.input),p=m.find(y=>y.name!==h.arg&&(y.kinds.includes("*")||y.kinds.includes(e.kind)));if(!p)continue;let $=o,j=$.includes("*")?n.graph.allNodes().map(y=>y.id):$.flatMap(y=>n.graph.nodesOfKind(y).map(I=>I.id)),u=new Set(s(e.id,d.length>0?d:k,$)),g=d.length>0?j.filter(y=>!u.has(y)):j.filter(y=>u.has(y));if(g.length===0)continue;let w=[{name:h.arg,kinds:$,candidates:g,shape:N(r.input,h.arg)}];for(let y of m){if(y.name===p.name||y.name===h.arg)continue;let I=y.kinds.includes("*")?n.graph.allNodes().map(D=>D.id):y.kinds.flatMap(D=>n.graph.nodesOfKind(D).map(O=>O.id));w.push({name:y.name,kinds:y.kinds,candidates:I,shape:N(r.input,y.name),...y.optional?{optional:!0}:{}})}for(let y of G(r.input,p.name))y===h.arg||w.some(I=>I.name===y)||w.push({name:y,shape:N(r.input,y)});w.every(y=>y.optional===!0?!0:y.kinds!==void 0?(y.candidates?.length??0)>0:(y.candidates?.length??0)>0||y.shape!==void 0&&y.shape.type!=="unknown")&&c.push({id:`schema:tie:${r.name}:${e.id}`,label:r.fromTheOtherEnd??K(r),provider:"schema",mutation:r.name,args:{[p.name]:e.id},open:w,ties:!0,...r.destructive?{destructive:!0}:{},score:U-w.length+2,why:`${k.length>0?"this one is on":"this one could join"} ${w[0].candidates.length===1?"it":"one of these"}`,nodeIds:[e.id]})}}return{affordances:c}}}}function kn(n,a){let t=n.shape;return t?Object.entries(t).filter(([l,v])=>l!==a&&v.safeParse(void 0).success).map(([l])=>l):[]}function yn(n,a,t){try{return n.preview({name:a,args:t}),!0}catch{return!1}}function G(n,a){let t=n.shape;return t?Object.entries(t).filter(([l,v])=>l!==a&&!v.safeParse(void 0).success).map(([l])=>l):[]}var vn=70,bn=80,Sn=new Set(["id","kind"]);function ln(){return{name:"structure",derive({store:n,nodes:a}){let t=c=>F(n.schema.tryDefinition(c.kind),c);if(a.length<2)return{};let l=[],v=[],f=a.map(c=>c.id);for(let c of n.schema.edgeKinds){let S=wn(a.map(e=>new Set([...n.graph.out(e.id,c).map(r=>r.id),...n.graph.in(e.id,c).map(r=>r.id)])));for(let e of S){let r=n.graph.getNode(e);r&&l.push({id:`shared:${c}:${e}`,text:`all ${a.length} share "${t(r)}" (${q(c).toLowerCase()})`,nodeIds:[...f,e]})}let s=new Map;for(let e of a)for(let r of[...n.graph.out(e.id,c),...n.graph.in(e.id,c)])s.set(r.id,(s.get(r.id)??0)+1);for(let[e,r]of s){if(r!==a.length-1||a.length<3||f.includes(e))continue;let h=n.graph.getNode(e);if(!h)continue;let k=a.find(d=>![...n.graph.out(d.id,c),...n.graph.in(d.id,c)].some(o=>o.id===e));if(k){l.push({id:`near-shared:${c}:${e}`,text:`all but "${t(k)}" share "${t(h)}" (${q(c).toLowerCase()})`,nodeIds:[...f,e]});for(let d of n.allMutations()){let o=d.subject;if(!o||o.kinds!=="*"&&!o.kinds.includes(k.kind))continue;let m=An(d.input,h.kind);m&&v.push({id:`structure:join:${d.name}:${k.id}:${e}`,label:`${K(d)}: bring "${t(k)}" in line with the others`,provider:"structure",mutation:d.name,args:{[o.arg]:k.id,[m]:e},open:[],score:vn,why:`every other selected node is connected to "${t(h)}"`,nodeIds:[k.id,e]})}}}}let A=new Map;for(let c of a)A.set(c.kind,[...A.get(c.kind)??[],c]);for(let[c,S]of A){if(S.length<2)continue;let s=S,e=S.map(d=>d.id),r=A.size>1?`${c}:`:"",h=new Set;for(let d of s)for(let o of Object.keys(d))Sn.has(o)||h.add(o);let k=d=>n.schema.definitions.find(o=>o.kind===d);for(let d of[...h].sort()){let o=k(s[0].kind),m=tn(o,d).toLowerCase(),p=o?.display?.format?.[d],$=O=>{if(!p)return O;try{return String(p(JSON.parse(O)))}catch{return O}},j=s.map(O=>O[d]),u=new Map;if(j.forEach((O,R)=>{let L=JSON.stringify(O??null),x=u.get(L);x?x.push(s[R]):u.set(L,[s[R]])}),u.size===1){let O=[...u.keys()][0];if(O==="null")continue;l.push({id:`agree:${r}${d}`,text:`all ${s.length} share the ${m} ${$(O)}`,nodeIds:e});continue}if(s.length<3||u.size!==2)continue;let g=[...u.entries()].sort((O,R)=>R[1].length-O[1].length),[w,P]=g[0],[,y]=g[1];if(y.length!==1||w==="null")continue;let I=y[0],D=JSON.parse(w);l.push({id:`odd-one-out:${r}${d}`,text:`${P.length} share the ${m} ${$(w)}; "${t(I)}" does not`,nodeIds:e});for(let O of n.allMutations()){let R=O.subject;if(!R||R.kinds!=="*"&&!R.kinds.includes(I.kind))continue;let L=hn(O.input);if(!L||!(d in L))continue;let x={[R.arg]:I.id,[d]:D},_=!0;for(let[C,Z]of Object.entries(L)){if(C in x||Z.safeParse(void 0).success)continue;let i=I[C];if(i===void 0){_=!1;break}x[C]=i}!_||!O.input.safeParse(x).success||v.push({id:`structure:align:${O.name}:${d}:${I.id}`,label:`Align the ${m} of "${t(I)}" with the other ${P.length}`,provider:"structure",mutation:O.name,args:x,open:[],score:bn,why:`${P.length} of ${s.length} share the ${m} ${$(w)}`,nodeIds:e})}}}return{affordances:v,observations:l}}}}function wn(n){if(n.length===0)return[];let[a,...t]=n;return[...a].filter(l=>t.every(v=>v.has(l))).sort()}function hn(n){return n.shape??null}function An(n,a){let t=hn(n);if(!t)return null;for(let[l]of Object.entries(t)){let v=sn(t[l]);if(v&&(v.includes("*")||v.includes(a)))return l}return null}function $n(){return[un(),ln(),fn(),an()]}function Hn(n,a,t={}){let l=gn(),v=t.providers??$n(),f=a.map(i=>n.graph.getNode(i)).filter(i=>i!==void 0),A={store:n,selection:a,nodes:f,kindSelection:t.kindSelection??[],edgeSelection:t.edgeSelection??[],violations:n.violations(t.context),context:t.context??{},principal:t.principal??{kind:"human"}},c=[],S=[];for(let i of v){let b=i.derive(A);c.push(...b.affordances??[]),S.push(...b.observations??[])}let s=new Set(n.allMutations().filter(i=>i.pinned).map(i=>i.name)),e=new Set(t.pins?.pinned??[]),r=new Set(t.pins?.unpinned??[]),h=i=>e.has(i.mutation)?"user":s.has(i.mutation)&&!r.has(i.mutation)?"declared":void 0,k=i=>{let b=h(i);return b?{...i,pinned:b}:i},d=new Map;for(let[i,b]of dn(n.log.all()))d.set(i,cn(b));let o=i=>i.pinned==="user"?0:i.pinned==="declared"?1:2,m=i=>i.score+(d.get(i.mutation)??0),p=new Map(n.allMutations().map(i=>[i.name,i])),$=new Map,j=i=>{let b=p.get(i.mutation);if(!b)return[];let M=$.get(i.mutation);M||(M=E(b.input).map(W=>W.name),$.set(i.mutation,M));let z=[];for(let W of i.batch??[i.args])for(let X of M){let Y=W[X]??i.args[X];typeof Y=="string"&&z.push(Y)}return z},u=t.focus,g=4,w=i=>i.open.length>0?1:0,P=i=>{if(u===void 0)return g;let b=j(i);return b.length>0?b.includes(u)?y(i,0):g:i.nodeIds.includes(u)||i.subjectId===u?y(i,1):g},y=(i,b)=>i.provider==="invariant"?b:2+w(i),I=i=>i.setsAside?1:0,D=On(c).map(k),O=new Map(D.map((i,b)=>[i,b])),R=D.sort((i,b)=>{let M=Number(i.destructive??!1)-Number(b.destructive??!1);if(M!==0)return M;let z=I(i)-I(b);if(z!==0)return z;let W=P(i)-P(b);return W!==0?W:P(i)<2?O.get(i)-O.get(b):+(b.provider==="invariant")-+(i.provider==="invariant")||o(i)-o(b)||m(b)-m(i)||i.id.localeCompare(b.id)}),L=t.principal??{kind:"human"},x=[],_=[];for(let i of R){let b=n.permits({name:i.mutation,args:{...i.args,...i.batch?.[0]??{}}},L);if(b.ok)x.push(i);else{let M=Pn(n,i,L);if(M==="done")continue;M?x.push(M):_.push({...i,refusal:b.refusal})}}let C=x.map((i,b)=>({...i,rank:b})),Z=_.map((i,b)=>({...i,rank:x.length+b}));return{affordances:t.limit===void 0?C:C.slice(0,t.limit),withheld:Z,observations:In(S),ms:gn()-l}}function On(n){let a=new Map;for(let t of n){let l=[t.mutation,JSON.stringify(t.args),JSON.stringify(t.batch??null)].join("|"),v=a.get(l);(!v||t.score>v.score)&&a.set(l,t)}return[...a.values()]}function In(n){let a=new Map;for(let t of n)a.set(t.text,t);return[...a.values()]}function gn(){return typeof performance<"u"?performance.now():Date.now()}function Vn(n,a,t={},l={}){let v=(a.batch??[a.args]).map(A=>({name:a.mutation,args:{...a.args,...A,...t}})),f=n.allMutations().find(A=>A.name===a.mutation);return n.applyAll(v,{...f?.describe?{}:{intent:a.label},...l.author?{author:l.author}:{}})}function Qn(n,a,t={}){return n.preview({name:a.mutation,args:{...a.args,...t}})}function Pn(n,a,t){let l=n.allMutations().find(s=>s.name===a.mutation)?.subject,v=l!==void 0&&a.args[l.arg]===void 0,f=v?a.open.find(s=>s.name===l.arg):a.open.find(s=>s.name!==l?.arg&&s.candidates);if(!f?.candidates)return;let A=s=>n.permits({name:a.mutation,args:{...a.args,...a.batch?.[0]??{},[f.name]:s}},t).ok,c=f.candidates.filter(A),S=t.id===void 0?void 0:n.graph.getNode(t.id);if(c.length===0){let s=v?l.kinds:"*";return S!==void 0&&(s==="*"||s.includes(S.kind))&&A(S.id)?"done":void 0}return c.length===1&&c[0]===t.id?{...a,args:{...a.args,[f.name]:t.id},open:a.open.filter(s=>s!==f)}:{...a,open:a.open.map(s=>s===f?{...s,candidates:c}:s)}}export{Hn as a,Vn as b,Qn as c};
|
|
1
|
+
import{b as on,c as rn}from"./chunk.UT6642FC.js";import{e as N}from"./chunk.MWZK3HVG.js";import{c as B}from"./chunk.GR5Q4HTW.js";import{Eb as sn,Fb as E,Rb as V,Ub as Q,Va as H,ba as F,ca as K,da as q,ea as nn,fa as en,ia as tn,ja as J,ka as T}from"./chunk.WLPTY4BF.js";function an(){return{name:"insight",derive({store:n,nodes:a,kindSelection:t}){let l=[],v=f=>F(n.schema.tryDefinition(f.kind),f);for(let f of a){if([...n.schema.edgeKinds].reduce((c,S)=>c+n.graph.out(f.id,S).length+n.graph.in(f.id,S).length,0)===0){l.push({id:`insight:island:${f.id}`,text:`${v(f)} is connected to nothing yet`,nodeIds:[f.id]});continue}for(let c of n.schema.edgeKinds){let S=n.graph.in(f.id,c).length;if(S<3)continue;let s=[...n.graph.allEdges()].filter(r=>r.kind===c),e=s.length;e>=4&&S/e>.6&&l.push({id:`insight:load:${f.id}:${c}`,text:`${v(f)} ${mn(n,s,c,S)}`,nodeIds:[f.id]})}}for(let f of t){if(n.graph.nodesOfKind(f).length>0)continue;let A=n.schema.definitions.filter(c=>c.kind!==f).filter(c=>Object.values(c.edges).some(S=>S.to!=="*"&&S.to.includes(f))).map(c=>c.plural??`${c.kind}s`);A.length>0&&l.push({id:`insight:gap:${f}`,text:`Nothing here yet, though ${A.join(" and ")} expect to connect to these`,nodeIds:[]})}return{observations:l}}}}function mn(n,a,t,l){let v=new Set(a.map(s=>n.graph.getNode(s.from)?.kind).filter(s=>s!==void 0)),f=v.size===1?[...v][0]:void 0,A=a.length,c=B(n.schema,f??[...v][0]??"",t,"in"),S=s=>f?nn(n.schema,f,s):String(s);return l===A?`${c}: all ${S(l)}`:`${c}: ${l} of the ${S(A)}`}function dn(n){let a=new Map;if(n.length===0)return a;let t=n.slice(-512),l=new Set;for(let f of t)f.undoes&&l.add(f.undoes);let v=n[n.length-1].seq;for(let f of t){if(!f.mutation||l.has(f.id))continue;let A=Math.pow(.5,(v-f.seq)/64);a.set(f.mutation.name,(a.get(f.mutation.name)??0)+A)}return a}function cn(n){return 8*(n/(n+1))}var pn=100;function un(){return{name:"invariant",derive({store:n,selection:a,nodes:t,violations:l}){let v=s=>F(n.schema.tryDefinition(s.kind),s),f=new Set(a),A=l.filter(s=>s.nodeIds.some(e=>f.has(e))||s.subjectId!==void 0&&f.has(s.subjectId)),c=[],S=[];A.forEach((s,e)=>{S.push({id:`violation:${s.invariant}:${e}`,text:s.message,nodeIds:s.nodeIds}),s.repairs.forEach((r,h)=>{c.push({id:`invariant:${s.invariant}:${e}:${h}`,label:r.label,provider:"invariant",mutation:r.mutation,args:r.args??{},open:(r.missing??[]).map(k=>{let d=n.allMutations().find(p=>p.name===r.mutation);if(!d)return{name:k};let o=E(d.input).find(p=>p.name===k),m=o?o.kinds.includes("*")?n.graph.allNodes().map(p=>p.id):o.kinds.flatMap(p=>n.graph.nodesOfKind(p).map($=>$.id)):void 0;return{name:k,shape:N(d.input,k),...o?{kinds:o.kinds}:{},...m?{candidates:m}:{}}}),score:pn-h-(r.missing?.length??0),why:s.message,nodeIds:s.nodeIds,...s.subjectId===void 0?{}:{subjectId:s.subjectId}})})});for(let s of t){let e=n.allInvariants().filter(r=>{if(r.scope==="graph")return!1;let h=r.scope;return h.kind!==s.kind?!1:h.match?h.match(s):!0});e.length!==0&&(A.some(r=>r.subjectId===s.id||r.nodeIds.includes(s.id))||S.push({id:`holds:${s.id}`,text:`${v(s)} holds \u2014 nothing currently breaks ${e.length===1?"it":`any of its ${e.length} rules`}`,nodeIds:[s.id]}))}return{affordances:c,observations:S}}}}var U=40;function fn(){return{name:"schema",derive({store:n,selection:a,nodes:t,kindSelection:l,edgeSelection:v,principal:f}){let A=(e,r)=>f!==void 0&&!n.permits({name:e,args:r},f).ok,c=[];if(t.length===0&&v.length>0){for(let e of v){let r=n.graph.getNode(e.from),h=n.graph.getNode(e.to);if(!r||!h)continue;let k=rn(n,e);k?.provisional&&c.push({id:`schema:edge:${V}:${e.kind}:${e.from}:${e.to}`,label:"Keep this link",provider:"schema",mutation:V,args:{kind:e.kind,from:e.from,to:e.to},open:[],score:64,why:on(k),nodeIds:[e.from,e.to]});for(let d of n.allMutations()){let o=(d.connects??[]).includes(e.kind),m=(d.severs??[]).includes(e.kind);if(!o&&!m||d.derived?.relation!==void 0&&d.derived.kind!==r.kind)continue;let p={},$=[],j=E(d.input);for(let g of j){let w=g.kinds.includes("*")||g.kinds.includes(r.kind),P=g.kinds.includes("*")||g.kinds.includes(h.kind),y=w&&!j.some(I=>I!==g&&(I.kinds.includes(r.kind)||I.kinds.includes("*")));w&&!P?p[g.name]=e.from:P&&!w?p[g.name]=e.to:w&&P&&y?p[g.name]=e.from:$.push({name:g.name,kinds:g.kinds,candidates:[e.from,e.to],shape:N(d.input,g.name)})}for(let g of G(d.input,""))g in p||$.some(w=>w.name===g)||$.push({name:g,shape:N(d.input,g)});$.every(g=>g.optional===!0?!0:g.kinds!==void 0?(g.candidates?.length??0)>0:(g.candidates?.length??0)>0||g.shape!==void 0&&g.shape.type!=="unknown")&&(o&&!m&&$.length===0||c.push({id:`schema:edge:${d.name}:${e.kind}:${e.from}:${e.to}`,label:K(d),provider:"schema",mutation:d.name,args:p,open:$,...d.destructive?{destructive:!0}:{},score:(m?62:58)-$.length,why:`this line is "${B(n.schema,n.graph.getNode(e.from)?.kind??"",e.kind,"out")}"`,nodeIds:[e.from,e.to]}))}}return{affordances:c}}if(t.length===0&&l.length>0){let e=new Set(l),r=[];for(let h of n.allMutations()){if(!(h.creates??[]).some(o=>e.has(o)))continue;let k=[];for(let o of E(h.input)){let m=o.kinds.includes("*")?n.graph.allNodes().map(p=>p.id):o.kinds.flatMap(p=>n.graph.nodesOfKind(p).map($=>$.id));k.push({name:o.name,kinds:o.kinds,candidates:m,shape:N(h.input,o.name),...o.optional?{optional:!0}:{}})}for(let o of G(h.input,""))k.some(m=>m.name===o)||k.push({name:o,shape:N(h.input,o)});if(!k.every(o=>o.optional===!0?!0:o.kinds!==void 0?(o.candidates?.length??0)>0:(o.candidates?.length??0)>0||o.shape!==void 0&&o.shape.type!=="unknown")&&!A(h.name,{})){let o=k.filter(m=>m.optional!==!0&&m.kinds!==void 0&&!m.kinds.includes("*")&&(m.candidates?.length??0)===0);if(o.length>0){let m=[...new Set(o.flatMap(p=>p.kinds??[]))].map(p=>J(T(n.schema.tryDefinition(p),p)));r.push({id:`schema:waits:${h.name}`,text:`"${h.title??h.name}" cannot begin until there is ${m.length===1?m[0]:`${m.slice(0,-1).join(", ")} and ${m[m.length-1]}`}.`,nodeIds:[]})}continue}c.push({id:`schema:add:${h.name}`,label:K(h),provider:"schema",mutation:h.name,args:{},open:k,score:U-k.length,why:`this makes ${(h.creates??[]).filter(o=>e.has(o)).map(o=>J(T(n.schema.tryDefinition(o),o))).join(", ")}`,nodeIds:[]})}return{affordances:c,observations:r}}if(t.length===0)return{};let S=new Set(t.map(e=>e.kind)),s=(e,r,h)=>{let k=[];for(let d of n.graph.allEdges()){if(!r.includes(d.kind))continue;let o=d.from===e?d.to:d.to===e?d.from:null;if(!o)continue;let m=n.graph.getNode(o);m&&(!h.includes("*")&&!h.includes(m.kind)||k.includes(o)||k.push(o))}return k};for(let e of n.allMutations()){let r=e.subject;if(!r||!(r.kinds==="*"?!0:[...S].every(u=>r.kinds.includes(u))))continue;let k=e.derived?.act;if((k==="archive"||k==="merge")&&t.some(u=>H(u))||k==="unarchive"&&!t.some(u=>H(u))||k==="leave-alone"&&t.every(u=>Q(n,u.id))||k==="allow-tidying"&&!t.some(u=>Q(n,u.id)))continue;let d=t.length===1?t[0].id:null,o=e.severs??[],m=e.connects??[];if(d&&o.length>0&&m.length===0&&s(d,o,["*"]).length===0)continue;let p=[];for(let u of E(e.input)){if(u.name===r.arg)continue;let g=u.kinds.includes("*")?n.graph.allNodes().map(w=>w.id):u.kinds.flatMap(w=>n.graph.nodesOfKind(w).map(P=>P.id));if(d&&m.length>0){let w=new Set(s(d,m,u.kinds));g=g.filter(P=>!w.has(P))}else d&&o.length>0&&(g=s(d,o,u.kinds));p.push({name:u.name,kinds:u.kinds,candidates:g.filter(w=>!a.includes(w)),shape:N(e.input,u.name),...u.optional?{optional:!0}:{}})}for(let u of G(e.input,r.arg))p.some(g=>g.name===u)||p.push({name:u,shape:N(e.input,u)});if(p.length===0&&d){let u=kn(e.input,r.arg);if(u.length>0&&!yn(n,e.name,{[r.arg]:d}))for(let g of u){let w=E(e.input).find(P=>P.name===g);p.push({name:g,optional:!0,...w?{kinds:w.kinds}:{},shape:N(e.input,g)})}}if(!p.every(u=>u.optional===!0?!0:u.kinds!==void 0?(u.candidates?.length??0)>0:(u.candidates?.length??0)>0||u.shape!==void 0&&u.shape.type!=="unknown")&&!A(e.name,d?{[r.arg]:d}:{}))continue;let j=t.map(u=>({[r.arg]:u.id}));p.length===0&&!j.some(u=>n.wouldChange({name:e.name,args:u}))||c.push({id:`schema:${e.name}`,label:t.length>1?`${K(e)} (${t.length})`:K(e),provider:"schema",mutation:e.name,args:j[0]??{},open:p,...e.destructive?{destructive:!0}:{},...e.derived?.act==="archive"||e.derived?.act==="merge"||e.derived?.act==="leave-alone"||e.derived?.act==="allow-tidying"?{setsAside:!0}:{},...o.length>0||m.length>0?{ties:!0}:{},...t.length>1?{batch:j}:{},score:U-p.length,why:t.length>1?`all ${t.length} selected nodes are ${[...S].map(u=>en(n.schema,u).toLowerCase()).join(" or ")}`:`this is ${J(T(n.schema.tryDefinition(t[0].kind),t[0].kind))}`,nodeIds:t.map(u=>u.id)})}if(t.length===1){let e=t[0];for(let r of n.allMutations()){let h=r.subject,k=r.severs??[],d=r.connects??[];if(!h||k.length===0&&d.length===0)continue;let o=h.kinds==="*"?"*":h.kinds;if(o==="*"||o.includes(e.kind))continue;let m=E(r.input),p=m.find(y=>y.name!==h.arg&&(y.kinds.includes("*")||y.kinds.includes(e.kind)));if(!p)continue;let $=o,j=$.includes("*")?n.graph.allNodes().map(y=>y.id):$.flatMap(y=>n.graph.nodesOfKind(y).map(I=>I.id)),u=new Set(s(e.id,d.length>0?d:k,$)),g=d.length>0?j.filter(y=>!u.has(y)):j.filter(y=>u.has(y));if(g.length===0)continue;let w=[{name:h.arg,kinds:$,candidates:g,shape:N(r.input,h.arg)}];for(let y of m){if(y.name===p.name||y.name===h.arg)continue;let I=y.kinds.includes("*")?n.graph.allNodes().map(D=>D.id):y.kinds.flatMap(D=>n.graph.nodesOfKind(D).map(O=>O.id));w.push({name:y.name,kinds:y.kinds,candidates:I,shape:N(r.input,y.name),...y.optional?{optional:!0}:{}})}for(let y of G(r.input,p.name))y===h.arg||w.some(I=>I.name===y)||w.push({name:y,shape:N(r.input,y)});w.every(y=>y.optional===!0?!0:y.kinds!==void 0?(y.candidates?.length??0)>0:(y.candidates?.length??0)>0||y.shape!==void 0&&y.shape.type!=="unknown")&&c.push({id:`schema:tie:${r.name}:${e.id}`,label:r.fromTheOtherEnd??K(r),provider:"schema",mutation:r.name,args:{[p.name]:e.id},open:w,ties:!0,...r.destructive?{destructive:!0}:{},score:U-w.length+2,why:`${k.length>0?"this one is on":"this one could join"} ${w[0].candidates.length===1?"it":"one of these"}`,nodeIds:[e.id]})}}return{affordances:c}}}}function kn(n,a){let t=n.shape;return t?Object.entries(t).filter(([l,v])=>l!==a&&v.safeParse(void 0).success).map(([l])=>l):[]}function yn(n,a,t){try{return n.preview({name:a,args:t}),!0}catch{return!1}}function G(n,a){let t=n.shape;return t?Object.entries(t).filter(([l,v])=>l!==a&&!v.safeParse(void 0).success).map(([l])=>l):[]}var vn=70,bn=80,Sn=new Set(["id","kind"]);function ln(){return{name:"structure",derive({store:n,nodes:a}){let t=c=>F(n.schema.tryDefinition(c.kind),c);if(a.length<2)return{};let l=[],v=[],f=a.map(c=>c.id);for(let c of n.schema.edgeKinds){let S=wn(a.map(e=>new Set([...n.graph.out(e.id,c).map(r=>r.id),...n.graph.in(e.id,c).map(r=>r.id)])));for(let e of S){let r=n.graph.getNode(e);r&&l.push({id:`shared:${c}:${e}`,text:`all ${a.length} share "${t(r)}" (${q(c).toLowerCase()})`,nodeIds:[...f,e]})}let s=new Map;for(let e of a)for(let r of[...n.graph.out(e.id,c),...n.graph.in(e.id,c)])s.set(r.id,(s.get(r.id)??0)+1);for(let[e,r]of s){if(r!==a.length-1||a.length<3||f.includes(e))continue;let h=n.graph.getNode(e);if(!h)continue;let k=a.find(d=>![...n.graph.out(d.id,c),...n.graph.in(d.id,c)].some(o=>o.id===e));if(k){l.push({id:`near-shared:${c}:${e}`,text:`all but "${t(k)}" share "${t(h)}" (${q(c).toLowerCase()})`,nodeIds:[...f,e]});for(let d of n.allMutations()){let o=d.subject;if(!o||o.kinds!=="*"&&!o.kinds.includes(k.kind))continue;let m=An(d.input,h.kind);m&&v.push({id:`structure:join:${d.name}:${k.id}:${e}`,label:`${K(d)}: bring "${t(k)}" in line with the others`,provider:"structure",mutation:d.name,args:{[o.arg]:k.id,[m]:e},open:[],score:vn,why:`every other selected node is connected to "${t(h)}"`,nodeIds:[k.id,e]})}}}}let A=new Map;for(let c of a)A.set(c.kind,[...A.get(c.kind)??[],c]);for(let[c,S]of A){if(S.length<2)continue;let s=S,e=S.map(d=>d.id),r=A.size>1?`${c}:`:"",h=new Set;for(let d of s)for(let o of Object.keys(d))Sn.has(o)||h.add(o);let k=d=>n.schema.definitions.find(o=>o.kind===d);for(let d of[...h].sort()){let o=k(s[0].kind),m=tn(o,d).toLowerCase(),p=o?.display?.format?.[d],$=O=>{if(!p)return O;try{return String(p(JSON.parse(O)))}catch{return O}},j=s.map(O=>O[d]),u=new Map;if(j.forEach((O,R)=>{let L=JSON.stringify(O??null),x=u.get(L);x?x.push(s[R]):u.set(L,[s[R]])}),u.size===1){let O=[...u.keys()][0];if(O==="null")continue;l.push({id:`agree:${r}${d}`,text:`all ${s.length} share the ${m} ${$(O)}`,nodeIds:e});continue}if(s.length<3||u.size!==2)continue;let g=[...u.entries()].sort((O,R)=>R[1].length-O[1].length),[w,P]=g[0],[,y]=g[1];if(y.length!==1||w==="null")continue;let I=y[0],D=JSON.parse(w);l.push({id:`odd-one-out:${r}${d}`,text:`${P.length} share the ${m} ${$(w)}; "${t(I)}" does not`,nodeIds:e});for(let O of n.allMutations()){let R=O.subject;if(!R||R.kinds!=="*"&&!R.kinds.includes(I.kind))continue;let L=hn(O.input);if(!L||!(d in L))continue;let x={[R.arg]:I.id,[d]:D},_=!0;for(let[C,Z]of Object.entries(L)){if(C in x||Z.safeParse(void 0).success)continue;let i=I[C];if(i===void 0){_=!1;break}x[C]=i}!_||!O.input.safeParse(x).success||v.push({id:`structure:align:${O.name}:${d}:${I.id}`,label:`Align the ${m} of "${t(I)}" with the other ${P.length}`,provider:"structure",mutation:O.name,args:x,open:[],score:bn,why:`${P.length} of ${s.length} share the ${m} ${$(w)}`,nodeIds:e})}}}return{affordances:v,observations:l}}}}function wn(n){if(n.length===0)return[];let[a,...t]=n;return[...a].filter(l=>t.every(v=>v.has(l))).sort()}function hn(n){return n.shape??null}function An(n,a){let t=hn(n);if(!t)return null;for(let[l]of Object.entries(t)){let v=sn(t[l]);if(v&&(v.includes("*")||v.includes(a)))return l}return null}function $n(){return[un(),ln(),fn(),an()]}function Hn(n,a,t={}){let l=gn(),v=t.providers??$n(),f=a.map(i=>n.graph.getNode(i)).filter(i=>i!==void 0),A={store:n,selection:a,nodes:f,kindSelection:t.kindSelection??[],edgeSelection:t.edgeSelection??[],violations:n.violations(t.context),context:t.context??{},principal:t.principal??{kind:"human"}},c=[],S=[];for(let i of v){let b=i.derive(A);c.push(...b.affordances??[]),S.push(...b.observations??[])}let s=new Set(n.allMutations().filter(i=>i.pinned).map(i=>i.name)),e=new Set(t.pins?.pinned??[]),r=new Set(t.pins?.unpinned??[]),h=i=>e.has(i.mutation)?"user":s.has(i.mutation)&&!r.has(i.mutation)?"declared":void 0,k=i=>{let b=h(i);return b?{...i,pinned:b}:i},d=new Map;for(let[i,b]of dn(n.log.all()))d.set(i,cn(b));let o=i=>i.pinned==="user"?0:i.pinned==="declared"?1:2,m=i=>i.score+(d.get(i.mutation)??0),p=new Map(n.allMutations().map(i=>[i.name,i])),$=new Map,j=i=>{let b=p.get(i.mutation);if(!b)return[];let M=$.get(i.mutation);M||(M=E(b.input).map(W=>W.name),$.set(i.mutation,M));let z=[];for(let W of i.batch??[i.args])for(let X of M){let Y=W[X]??i.args[X];typeof Y=="string"&&z.push(Y)}return z},u=t.focus,g=4,w=i=>i.open.length>0?1:0,P=i=>{if(u===void 0)return g;let b=j(i);return b.length>0?b.includes(u)?y(i,0):g:i.nodeIds.includes(u)||i.subjectId===u?y(i,1):g},y=(i,b)=>i.provider==="invariant"?b:2+w(i),I=i=>i.setsAside?1:0,D=On(c).map(k),O=new Map(D.map((i,b)=>[i,b])),R=D.sort((i,b)=>{let M=Number(i.destructive??!1)-Number(b.destructive??!1);if(M!==0)return M;let z=I(i)-I(b);if(z!==0)return z;let W=P(i)-P(b);return W!==0?W:P(i)<2?O.get(i)-O.get(b):+(b.provider==="invariant")-+(i.provider==="invariant")||o(i)-o(b)||m(b)-m(i)||i.id.localeCompare(b.id)}),L=t.principal??{kind:"human"},x=[],_=[];for(let i of R){let b=n.permits({name:i.mutation,args:{...i.args,...i.batch?.[0]??{}}},L);if(b.ok)x.push(i);else{let M=Pn(n,i,L);if(M==="done")continue;M?x.push(M):_.push({...i,refusal:b.refusal})}}let C=x.map((i,b)=>({...i,rank:b})),Z=_.map((i,b)=>({...i,rank:x.length+b}));return{affordances:t.limit===void 0?C:C.slice(0,t.limit),withheld:Z,observations:In(S),ms:gn()-l}}function On(n){let a=new Map;for(let t of n){let l=[t.mutation,JSON.stringify(t.args),JSON.stringify(t.batch??null)].join("|"),v=a.get(l);(!v||t.score>v.score)&&a.set(l,t)}return[...a.values()]}function In(n){let a=new Map;for(let t of n)a.set(t.text,t);return[...a.values()]}function gn(){return typeof performance<"u"?performance.now():Date.now()}function Vn(n,a,t={},l={}){let v=(a.batch??[a.args]).map(A=>({name:a.mutation,args:{...a.args,...A,...t}})),f=n.allMutations().find(A=>A.name===a.mutation);return n.applyAll(v,{...f?.describe?{}:{intent:a.label},...l.author?{author:l.author}:{}})}function Qn(n,a,t={}){return n.preview({name:a.mutation,args:{...a.args,...t}})}function Pn(n,a,t){let l=n.allMutations().find(s=>s.name===a.mutation)?.subject,v=l!==void 0&&a.args[l.arg]===void 0,f=v?a.open.find(s=>s.name===l.arg):a.open.find(s=>s.name!==l?.arg&&s.candidates);if(!f?.candidates)return;let A=s=>n.permits({name:a.mutation,args:{...a.args,...a.batch?.[0]??{},[f.name]:s}},t).ok,c=f.candidates.filter(A),S=t.id===void 0?void 0:n.graph.getNode(t.id);if(c.length===0){let s=v?l.kinds:"*";return S!==void 0&&(s==="*"||s.includes(S.kind))&&A(S.id)?"done":void 0}return c.length===1&&c[0]===t.id?{...a,args:{...a.args,[f.name]:t.id},open:a.open.filter(s=>s!==f)}:{...a,open:a.open.map(s=>s===f?{...s,candidates:c}:s)}}export{Hn as a,Vn as b,Qn as c};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as a,H as h,_ as d,ba as c,ta as u}from"./chunk.MQ7FNHXG.js";import{b as l}from"./chunk.AJZBJBMO.js";var i=l(h(),1);function w(){let e=u();return(0,i.useMemo)(()=>[...new Set(e.flatMap(o=>o.nodeIds))],[e])}function S(){let e=g(),o=d();return(0,i.useMemo)(()=>{if(!o)return e;let n=o.matched;return n.length===0&&e.length===0?[m]:[...new Set([...e,...n])]},[o,e])}function g(){let{store:e,selection:o}=a(),n=c();return(0,i.useMemo)(()=>{if(o.length===0)return[];let r=new Set(o),s=new Set(r);for(let t of e.graph.allEdges())r.has(t.from)&&s.add(t.to),r.has(t.to)&&s.add(t.from);for(let t of e.violations())if(t.subjectId!==void 0&&r.has(t.subjectId))for(let f of t.nodeIds)s.add(f);return[...s]},[e,o,n])}var m="search:nothing";export{w as a,S as b,g as c};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as y}from"./chunk.
|
|
1
|
+
import{b as y}from"./chunk.BRHRAVU2.js";import"./chunk.QT4XGC5Z.js";import{H as w,S as c}from"./chunk.MQ7FNHXG.js";import"./chunk.WLPTY4BF.js";import{b as l}from"./chunk.AJZBJBMO.js";var r=l(w(),1);var t=l(c(),1);function x({field:d,label:p,value:m,markdown:b,onSave:n,onCancel:u}){let[a,v]=(0,r.useState)(m),[i,h]=(0,r.useState)(!1),o=(0,r.useRef)(null);return(0,r.useEffect)(()=>o.current?.focus(),[i]),(0,r.useLayoutEffect)(()=>{let e=o.current;if(!e||i||typeof CSS<"u"&&CSS.supports?.("field-sizing","content"))return;let f=()=>{e.style.height="auto";let g=getComputedStyle(e);e.style.height=`${e.scrollHeight+parseFloat(g.borderTopWidth)+parseFloat(g.borderBottomWidth)}px`};f();let S=requestAnimationFrame(f);return()=>cancelAnimationFrame(S)},[a,i]),(0,t.jsxs)("form",{style:{display:"grid",gap:8,minWidth:0},onSubmit:e=>{e.preventDefault(),n(a,!1)},children:[i?(0,t.jsx)("div",{"data-graview-preview":d,"aria-label":`${p}, as it will read`,role:"region",style:C,children:(0,t.jsx)(y,{text:a,markdown:!0})}):(0,t.jsx)("textarea",{ref:o,"aria-label":p,"data-graview-field":d,value:a,rows:3,onChange:e=>v(e.target.value),onKeyDown:e=>{e.key==="Escape"?(e.preventDefault(),u()):e.key==="Enter"&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),n(a,!1))},onBlur:e=>{e.relatedTarget instanceof Node&&e.currentTarget.form?.contains(e.relatedTarget)||n(a,!0)},style:E}),(0,t.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:8},children:[(0,t.jsx)("button",{type:"submit",style:s,children:"Save"}),(0,t.jsx)("button",{type:"button",onClick:u,style:s,children:"Cancel"}),b?(0,t.jsx)("button",{type:"button","aria-pressed":i,onClick:()=>h(!i),style:s,children:i?"Write":"Preview"}):null,(0,t.jsx)("span",{style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:"Ctrl or \u2318 Enter saves \xB7 Esc puts it back"})]})]})}var C={minHeight:"7.5em",padding:"8px 10px",border:"1px dashed var(--graview-edge-bright)",borderRadius:6,lineHeight:1.6,minWidth:0},s={font:"inherit",fontSize:"0.8125rem",minHeight:28,padding:"2px 12px"},E={font:"inherit",lineHeight:1.5,width:"100%",boxSizing:"border-box",minHeight:"7.5em",padding:"8px 10px",resize:"vertical",fieldSizing:"content",color:"var(--graview-ink)",background:"var(--graview-panel, transparent)",border:"1px solid var(--graview-edge-bright)",borderRadius:6};export{x as default};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{B as y,Cb as $,Gb as x,K as h,T as g,da as m}from"./chunk.
|
|
1
|
+
import{B as y,Cb as $,Gb as x,K as h,T as g,da as m}from"./chunk.WLPTY4BF.js";function B(n,e,t){let o=n?.display?.format?.[e];return o?o(t):typeof t=="string"?m(t):String(t)}function G(n,e,t,o){let s=n.tryDefinition(e)?.edges,i=s&&Object.hasOwn(s,t)?s[t]:void 0;return(o==="out"?i?.description:i?.inverse)??m(t).toLowerCase()}var O=Symbol.for("@graview/core:markdown");function S(n){let e=y(n);return!!e&&(e[O]===1||S(e.innerType))}var w=/^ {0,3}#{1,6}(?:[ \t]+|$)/,b=/^[ \t]*(?:[-*+•]|\d{1,9}[.)])[ \t]+(?:\[[ xX]\][ \t]+)?/,k=/^ {0,3}(?:(?:-[ \t]*){3,}|(?:\*[ \t]*){3,}|(?:_[ \t]*){3,})$/,R=/^ {0,3}(?:`{3,}|~{3,})/,F=/^ {0,3}(?:>[ \t]?)+/,A=/^\|?\s*:?-{2,}:?\s*(?:\|\s*:?-{2,}:?\s*)*\|?$/,_={amp:"&",lt:"<",gt:">",quot:'"',"#39":"'",nbsp:" "};function E(n){return n.replace(/!?\[([^\]\n]{0,500})\]\([^)\n]{0,500}\)/g,"$1").replace(/<((?:https?:|mailto:)[^>\s]*)>/gi,"$1").replace(/<\/?[A-Za-z][^<>\n]*>/g,"").replace(/`+([^`\n]*)`+/g,"$1").replace(/(\*\*|__|~~)(?=\S)([^\n]{0,500}?\S)\1/g,"$2").replace(/(^|[^\w*])\*(?=\S)([^*\n]{0,500}?\S)\*(?![\w*])/g,"$1$2").replace(/(^|\W)_(?=\S)([^_\n]{0,500}?\S)_(?!\w)/g,"$1$2").replace(/\\([\\`*_{}[\]()#+\-.!>|~])/g,"$1").replace(/&(amp|lt|gt|quot|#39|nbsp);/g,(e,t)=>_[t]??"")}function N(n,e,t){let o=n.replace(/\r\n?/g,`
|
|
2
2
|
`).split(`
|
|
3
3
|
`),s=[],i=[],c=0,d=!1,u=()=>{let r=i.join(" ").replace(/\s+/g," ").trim();r&&(s.push(r),c+=r.length),i=[]},a=0;for(;a<o.length&&c<=t;){let r=o[a++];if(e&&R.test(r)){d=!d,d||u();continue}if(!d&&(r.trim().length===0||e&&(k.test(r)||A.test(r.trim())))){u();continue}let f=!d&&e&&w.test(r),l=!d&&b.test(r);if((f||l)&&u(),e&&!d?(r=r.replace(F,""),f&&(r=r.replace(w,"").replace(/[ \t]+#+[ \t]*$/,"")),l&&(r=r.replace(b,"")),r.includes("|")&&(r=r.replace(/^[ \t]*\||\|[ \t]*$/g,"").split("|").map(p=>p.trim()).filter(Boolean).join(" \xB7 ")),r=E(Number.isFinite(t)?r.slice(0,t*2+200):r)):l&&(r=r.replace(b,"")),i.push(r),f&&u(),i.reduce((p,T)=>p+T.length,0)>t)break}return u(),{blocks:s,more:o.slice(a).some(r=>r.trim().length>0&&!(e&&(R.test(r)||k.test(r))))}}function M(n,e){return`${(n.slice(0,e+1).replace(/\s+\S*$/,"")||n.slice(0,e)).replace(/[\s,;:.—-]+$/,"")}\u2026`}function Z(n,e={}){let t=e.most??160,{blocks:o,more:s}=N(n,e.markdown===!0,t),i=o[0]??"";if(i.length<=t)return(s||o.length>1)&&i.length>0&&!/[.!?…:]$/.test(i)?`${i}\u2026`:i;let c=x(i);return c&&c.length<=t?c:M(i,t)}var J=n=>N(n,!0,Number.POSITIVE_INFINITY).blocks.join(" ");var j={d:1440,h:60,m:1};function ne(n){if(typeof n=="number")return Number.isFinite(n)&&n>=0?Math.round(n):void 0;if(typeof n!="string")return;let e=n.trim().toLowerCase();if(/^\d+$/.test(e))return Number(e);let t=/^(\d+):([0-5]\d)(?::([0-5]\d))?$/.exec(e);if(t)return Number(t[1])*60+Number(t[2])+Math.round(Number(t[3]??0)/60);let o=0,s=!1,i=e.replace(/(\d*[.,]?\d+) *(days?|d|hours?|hrs?|hr|h|minutes?|mins?|min|m)(?![a-z])/g,(c,d,u)=>(s=!0,o+=Number(d.replace(",","."))*j[u[0]]," "));return s&&/^[\s,+]*(?:and[\s,+]*)*$/.test(i)?Math.round(o):void 0}function I(n,e){if(!Number.isFinite(n))return String(n);let t=Math.round(Math.abs(n)),o=Math.floor(t/60),s=t%60,i=[o?`${g(o,e)} h`:"",s||!o?`${g(s,e)} min`:""].filter(Boolean).join(" ");return n<0?`\u2212${i}`:i}var D=/^(\+?1[ .-]?)?\(?([2-9]\d\d)\)?[ .-]?(\d{3})[ .-]?(\d{4})(?: *(?:ext\.?|x|#) *(\d+))?$/i;function W(n,e){let t=n.trim(),o=/[-_](US|CA)\b/i.test(h(e))?D.exec(t):null;if(!o)return t;let[,s,i,c,d,u]=o;return`${s?.startsWith("+")?"+1 ":""}(${i}) ${c}-${d}${u?` ext. ${u}`:""}`}function P(n){let[,e="",t]=/^(.*?)(?: *(?:ext\.?|x|#) *(\d+))?$/i.exec(n.trim())??[],o=e.replace(/\D/g,"");return o.length<3?void 0:`tel:${e.startsWith("+")?"+":""}${o}${t?`;ext=${t}`:""}`}var L=()=>/Mac|iPhone|iPad|iPod/.test(globalThis.navigator?.userAgent??"");function q(n,e=L()){let t=encodeURIComponent(n.trim());return e?`https://maps.apple.com/?q=${t}`:`https://www.google.com/maps/search/?api=1&query=${t}`}var C=n=>n?.fields?.shape??{},U=(n,e)=>{let t=C(n);return Object.hasOwn(t,e)?$(t[e]):void 0},H=(n,e)=>{let t=n.computed,o=t&&Object.hasOwn(t,e)?t[e]:void 0;return typeof o=="object"?o.as:void 0};function te(n,e){return U(n,e)??(n&&H(n,e)==="duration"?"duration":void 0)}function re(n,e,t){return n==="duration"?typeof e=="number"?I(e,t):void 0:n==="phone"?typeof e=="string"?W(e,t):void 0:n==="place"&&typeof e=="string"?e.trim():void 0}function oe(n,e){if(!(typeof e!="string"||!e.trim()))return n==="phone"?P(e):n==="place"?q(e):void 0}export{S as a,B as b,G as c,Z as d,J as e,ne as f,te as g,re as h,oe as i};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as u}from"./chunk.
|
|
1
|
+
import{c as u}from"./chunk.GR5Q4HTW.js";import{ea as l}from"./chunk.WLPTY4BF.js";function a(e,n){let s=new Map;for(let o of e){let t=n(o.from),i=n(o.to);if(t===void 0||i===void 0)continue;let d=`${o.kind}|${t}|${i}`,r=s.get(d);r||s.set(d,r={edge:o.kind,from:t,to:i,links:0,froms:new Set,tos:new Set}),r.links+=1,r.froms.add(o.from),r.tos.add(o.to)}return[...s.entries()].sort(([o],[t])=>o<t?-1:o>t?1:0).map(([o,t])=>({key:o,edge:t.edge,from:t.from,to:t.to,links:t.links,fromCount:t.froms.size,toCount:t.tos.size}))}function m(e,n,s){let o=[],t=[];for(let d of e){let r=f(d);if(r!==null){o.includes(r)||o.push(r);continue}s(d)!==void 0&&t.push(d)}let i=n.overview&&n.focusId!==null?f(n.focusId):null;return n.beside&&n.overview&&i===null&&n.focusId!==null&&t.length===0&&o.length===0&&s(n.focusId)!==void 0&&t.push(n.focusId),{districts:o,records:t,lens:i}}function f(e){return e.startsWith("kind:")?e.slice(5)||null:e.startsWith("aggregate:")&&!e.includes("|")&&e.slice(10)||null}function y(e,n){let s=u(e,n.from,n.edge,"out"),o=n.from===n.to?" of their own":"";return`${l(e,n.from,n.fromCount)} \u2192 ${l(e,n.to,n.toCount)}${o}, ${s}`}export{a,m as b,f as c,y as d};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as b,b as c,c as d,d as e,e as f}from"./chunk.XHWL7QBF.js";import"./chunk.6UCRL4OF.js";import"./chunk.6XJP7F3I.js";import"./chunk.OE4QOBJF.js";import"./chunk.74RMHUCX.js";import{rb as a}from"./chunk.WLPTY4BF.js";import"./chunk.AJZBJBMO.js";export{a as ActRefusal,e as compileDocumentWithoutCheck,d as effectsOf,f as inDocumentWords,c as kindShapes,b as readDocument};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./chunk.GZHZLJBF.js";import{n as P}from"./chunk.I3SQJ2L2.js";import"./chunk.OJGHDWI6.js";import"./chunk.FUJM7GDV.js";import"./chunk.MWZK3HVG.js";import"./chunk.3D5T3XIE.js";import"./chunk.GR5Q4HTW.js";import"./chunk.QT4XGC5Z.js";import{H as A,S,aa as b}from"./chunk.MQ7FNHXG.js";import{ma as L,pc as x,ya as w}from"./chunk.WLPTY4BF.js";import{b as R}from"./chunk.AJZBJBMO.js";var u=R(A(),1);var n=R(S(),1),C={kind:"human"},p={color:"var(--graview-ink-muted)"};function I(e){if(e){if(/^https?:\/\//i.test(e))try{return new URL(e).href}catch{return}return L(e)?e:void 0}}function z(e){let o=b(),t=o?.linkedReads,[i,a]=(0,u.useState)(()=>t?t.answered(e)??"asking":null);return(0,u.useEffect)(()=>{if(!t){a(o?.linkedRecords?"asking":null);return}let d=t.answered(e);if(a(d===void 0?"asking":d),d!==void 0)return;let s=!0;return t.ask(e).then(l=>s&&a(l)),()=>{s=!1}},[t,o?.linkedRecords,e.address,e.kind,e.id]),i}function V({reference:e,as:o}){let t=b(),i=z(e),a={position:"relative",zIndex:x.raised,overflowWrap:"anywhere",minWidth:0,maxWidth:"100%"};if(i==="asking")return(0,n.jsx)("span",{"data-graview-linked":"","data-graview-linked-state":"asking","aria-busy":"true",style:{...p,...a},children:"Linked record"});if(i&&"denied"in i)return(0,n.jsx)("span",{"data-graview-linked":"","data-graview-linked-state":"denied",style:{...p,fontStyle:"italic",...a},children:"linked record (no access)"});if(!i)return(0,n.jsx)("span",{"data-graview-linked":"","data-graview-linked-state":"missing",style:{...p,fontStyle:"italic",...a},children:"linked record (not found)"});let d=I(i.href),s=t?.linkedRecords,l=t?.principal??C,g=s?.open?c=>{c.metaKey||c.ctrlKey||(c.preventDefault(),s.open(e,l))}:void 0,k=(0,n.jsx)("a",{"data-graview-linked-title":"",...d?{href:d}:{role:"link",tabIndex:0},...g?{onClick:g,onKeyDown:c=>!d&&(c.key==="Enter"||c.key===" ")?g(c):void 0}:{},style:{fontWeight:600,color:"inherit",textUnderlineOffset:3,cursor:d||g?"pointer":"default"},children:i.label});return o==="chip"?(0,n.jsx)("span",{"data-graview-linked":"","data-graview-linked-state":"found",title:i.describe,style:{display:"inline-flex",alignItems:"center",minHeight:24,...a},children:k}):(0,n.jsx)(D,{record:i,title:k,base:a})}function D({record:e,title:o,base:t}){return(0,n.jsxs)("span",{"data-graview-linked":"","data-graview-linked-state":"found",style:{display:"grid",gap:2,padding:"8px 10px",border:"1px solid var(--graview-line)",borderRadius:"var(--graview-radius-sm, 6px)",background:"var(--graview-surface)",...t},children:[(0,n.jsxs)("span",{style:{display:"flex",flexWrap:"wrap",alignItems:"baseline",gap:"2px 8px"},children:[o,e.app?(0,n.jsxs)("span",{"data-graview-linked-app":"",style:{...p,fontSize:"0.75rem"},children:["in ",e.app]}):null]}),e.describe?(0,n.jsx)("span",{"data-graview-linked-describe":"",style:{...p,fontSize:"0.8125rem"},children:e.describe}):null,e.card&&e.card.length>0?(0,n.jsx)("span",{"data-graview-linked-card":"",style:{display:"flex",flexWrap:"wrap",gap:"2px 12px",fontSize:"0.8125rem"},children:e.card.map(i=>(0,n.jsxs)("span",{children:[(0,n.jsx)("span",{style:p,children:i.label})," ",i.text]},i.label))}):null]})}function H({relation:e,refs:o,as:t="record",nodeId:i,field:a,style:d}){let s=(0,n.jsx)("span",{"data-graview-linked-list":"",style:{display:"grid",gap:6,minWidth:0,...d},children:o.map(l=>(0,n.jsx)(V,{reference:l,as:t},w(l)))});return i&&a?(0,n.jsx)(K,{nodeId:i,field:a,relation:e,refs:o,drawn:s}):s}function K({nodeId:e,field:o,relation:t,refs:i,drawn:a}){let{fields:d,commit:s}=P(e),l=d.find(f=>f.field===o),[g,k]=(0,u.useState)(!1);if(!l)return a;let c=t.cardinality==="one"?i[0]?w(i[0]):void 0:i.map(w);return(0,n.jsxs)("span",{style:{display:"grid",gap:6,minWidth:0},children:[a,g?(0,n.jsx)(N,{relation:t,value:c,label:"Link another record",onChange:f=>{s(l,f),k(!1)},onCancel:()=>k(!1)}):(0,n.jsx)("button",{type:"button","data-graview-linked-change":"",onClick:()=>k(!0),style:{justifySelf:"start",font:"inherit",fontSize:"0.8125rem",background:"none",border:0,padding:"4px 0",color:"var(--graview-accent)",cursor:"pointer",minHeight:24},children:"Change"})]})}function N({relation:e,value:o,onChange:t,onCancel:i,label:a}){let d=b(),s=d?.linkedRecords,l=d?.principal??C,g=(0,u.useId)(),[k,c]=(0,u.useState)(""),[f,m]=(0,u.useState)("asking");(0,u.useEffect)(()=>{if(!s)return;let r=!0;m("asking");let y=setTimeout(()=>{Promise.resolve().then(()=>s.find({address:e.address,kinds:e.kinds,query:k,limit:20},l)).then(h=>r&&m(Array.isArray(h)?h:"denied"),()=>r&&m([]))},150);return()=>{r=!1,clearTimeout(y)}},[s,e.address,e.kinds.join(","),k,l.kind,l.id]);let v=new Set([o].flat().filter(r=>typeof r=="string")),W=r=>{let y=w(r);if(e.cardinality==="one")return t(y);t(v.has(y)?[...v].filter(h=>h!==y):[...v,y])};return s?(0,n.jsxs)("span",{"data-graview-linked-picker":"",style:{display:"grid",gap:6,minWidth:0},children:[(0,n.jsx)("label",{htmlFor:g,style:{...p,fontSize:"0.8125rem"},children:a}),(0,n.jsx)("input",{id:g,type:"search",value:k,placeholder:`Find one in ${e.address}`,onChange:r=>c(r.target.value),style:{font:"inherit",minHeight:32,padding:"4px 8px",border:"1px solid var(--graview-line)",borderRadius:6,background:"var(--graview-surface)",color:"inherit",minWidth:0}}),f==="asking"?(0,n.jsx)("span",{"aria-busy":"true",style:p,children:"Looking\u2026"}):f==="denied"?(0,n.jsx)("span",{"data-graview-linked-state":"denied",style:{...p,fontStyle:"italic"},children:"linked record (no access)"}):f.length===0?(0,n.jsx)("span",{style:p,children:"Nothing there matches."}):(0,n.jsx)("ul",{role:"list",style:{listStyle:"none",margin:0,padding:0,display:"grid",gap:4},children:f.map(r=>{let y=v.has(w(r));return(0,n.jsx)("li",{children:(0,n.jsxs)("button",{type:"button","data-graview-linked-candidate":w(r),"aria-pressed":y,onClick:()=>W(r),style:{display:"grid",gap:2,width:"100%",textAlign:"start",font:"inherit",padding:"6px 8px",minHeight:32,border:"1px solid var(--graview-line)",borderRadius:6,background:y?"var(--graview-accent-soft, var(--graview-surface))":"var(--graview-surface)",color:"inherit",cursor:"pointer"},children:[(0,n.jsx)("span",{style:{fontWeight:600},children:r.label}),r.describe?(0,n.jsx)("span",{style:{...p,fontSize:"0.8125rem"},children:r.describe}):null]})},w(r))})}),i?(0,n.jsx)("button",{type:"button",onClick:i,style:{justifySelf:"start",font:"inherit",fontSize:"0.8125rem",background:"none",border:0,padding:"4px 0",color:"var(--graview-ink-muted)",cursor:"pointer",minHeight:24},children:"Keep it as it is"}):null]}):(0,n.jsxs)("span",{"data-graview-linked-picker":"","data-graview-linked-state":"no-host",style:p,children:["This page cannot read ",e.address,", so nothing there can be linked here."]})}var U=e=>(0,n.jsx)(H,{...e}),j=e=>(0,n.jsx)(N,{...e});export{N as LinkedPicker,H as LinkedRecordView,j as drawLinkedPicker,U as drawLinkedRecord};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{l as O}from"./chunk.OJGHDWI6.js";import{e as C}from"./chunk.MWZK3HVG.js";import{$ as w,H as x,S as M,aa as I,ba as W,d as V,ra as G,y as B}from"./chunk.MQ7FNHXG.js";import{B as D,Fb as F,Lb as N,lc as _,mc as L,sc as j}from"./chunk.WLPTY4BF.js";import{b as m}from"./chunk.AJZBJBMO.js";function H(t,e){let n=t.graph.getNode(e);if(!n)return[];let i=n.kind,a=t.schema.tryDefinition(i);if(!a)return[];let c=t.seenFor,u=c?j.keptFrom?.(t,c)?.(n):void 0,o=new Map;for(let r of t.allMutations()){let s=r.subject;if(!s||!(s.kinds==="*"||s.kinds.includes(i)))continue;let l=r.input.shape??{};for(let d of N(r,a)){if(u?.(d))continue;let b=d in l,k=[];for(let h of Object.keys(l)){if(h===s.arg||h===d||X(l[h]))continue;let v=F(r.input).find(S=>S.name===h);k.push({name:h,...v?{kinds:v.kinds}:{},...v?{candidates:v.kinds.includes("*")?t.graph.allNodes().map(S=>S.id):v.kinds.flatMap(S=>t.graph.nodesOfKind(S).map(J=>J.id))}:{},shape:C(r.input,h)})}let Q={field:d,mutation:r.name,title:r.title??r.name,shape:b?C(r.input,d):{type:"unknown"},takesValue:b,alternatives:[],open:k,call:h=>({name:r.name,args:b?{[s.arg]:e,[d]:h}:{[s.arg]:e}})};o.set(d,[...o.get(d)??[],Q])}}return[...o.values()].map(r=>{let s=[...r.filter(d=>d.takesValue),...r.filter(d=>!d.takesValue)],[f,...l]=s;return{...f,alternatives:l}})}function X(t){let e=D(t)?.type;return e==="optional"||e==="default"||e==="nullable"}var R=m(x(),1);function be(t){let{store:e,principal:n}=w(),i=W(),a=(0,R.useMemo)(()=>t===null?[]:H(e,t),[e,t,i]),c=(0,R.useCallback)((u,o,r={})=>{let s=u.call(o);e.apply({name:s.name,args:{...s.args,...r}},{author:n})},[e,n]);return{fields:a,commit:c}}var K=m(x(),1);function Qe(){let{brand:t}=w(),e=t?.kit;return(0,K.useMemo)(()=>_(e),[e])}function Je(t,e){let n=L(t,e),i={...n.color!==void 0?{color:n.color}:{},...n.pattern!==void 0?{pattern:n.pattern}:{},...n.width!==void 0?{width:n.width}:{},...n.cap!==void 0?{cap:n.cap}:{},...n.opacity!==void 0?{opacity:n.opacity}:{}};return{connector:n,style:O(e,{[e]:i})}}var $=m(x(),1);var g=m(M(),1);function Z(t){let e=t?.hint;return typeof e=="string"&&e.length>0?e:void 0}function ee(t){if(t instanceof Error&&t.message)return t.message;let e=String(t);return e==="[object Object]"?"The view threw without a message.":e}var U=class extends $.Component{static contextType=G;state={};static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,n){console.error(`[graview] the ${this.props.view??"view"} of ${this.props.kind} threw while rendering`,e,n.componentStack),this.context?.(e,{module:"@graview/react"})}render(){let{error:e}=this.state;if(!e)return this.props.children;let n=Z(e);return(0,g.jsxs)("div",{role:"alert","data-graview-view-error":this.props.kind,style:{display:"flex",flexDirection:"column",gap:"0.375rem",padding:"var(--graview-pad, 12px)",height:"100%",overflow:"auto",boxSizing:"border-box",borderRadius:"var(--graview-radius-sm, 6px)",background:"var(--graview-panel-warning, #fdf3ec)",color:"var(--graview-ink, #1a1a1a)",font:"var(--graview-font-body, 13px/1.45 system-ui)",fontSize:"0.875rem",lineHeight:1.45},children:[(0,g.jsx)("strong",{style:{color:"var(--graview-warn, #b4462a)"},children:this.props.view?`${this.props.view} could not draw`:"This view could not draw"}),(0,g.jsx)("span",{style:{color:"var(--graview-ink-muted, #555)"},children:this.props.kind}),(0,g.jsx)("span",{children:ee(e)}),n?(0,g.jsx)("span",{style:{color:"var(--graview-ink-muted, #555)"},children:n}):null]})}};var y=m(x(),1);var q=m(M(),1),A=(0,y.createContext)([]);function nt({sections:t,children:e}){let n=(0,y.useContext)(A),i=(0,y.useMemo)(()=>[...n,...t.filter(a=>!n.includes(a))],[n,t]);return(0,q.jsx)(A.Provider,{value:i,children:e})}function z(){let t=(0,y.useContext)(A),e=I()?.menuSections;return(0,y.useMemo)(()=>e?[...t,...e.filter(n=>!t.includes(n))]:t,[t,e])}function rt(){let t=z();return(0,y.useCallback)(e=>{for(let n of t)try{n(e)?.prepare?.()}catch{}},[t])}function ot(t){let e=z();if(t===null||e.length===0)return{start:[],end:[]};let n=e.flatMap(i=>{try{let a=i(t);return a&&((a.items?.length??0)>0||a.render)?[a]:[]}catch{return[]}});return{start:n.filter(i=>i.at==="start"),end:n.filter(i=>i.at!=="start")}}var te=m(x(),1);function st(){return w().activity}var P=(t,e)=>t.length*e*.58;var ne=156,re=2,E=ne-18,oe=7.1,ie=16;function ae(t,e){let n=0,i=E;for(let a of t.split(" ")){let c=e(a),u=i+e(" ")+c;if(u<=E)i=u;else{let o=Math.ceil(c/E)||1;n+=o,i=c-(o-1)*E}}return n}var se=16.25,Y=27,ce=(t,e)=>{let n=Math.ceil(t.length*oe/E);return e?Math.max(Y,Math.ceil(Math.max(n,ae(t,e))*se)+6):Math.max(Y,n*ie+6)};function ut(t,e,n){return t.length===0?0:10+t.reduce((i,a)=>i+ce(a,n),0)+(t.length-1)*re}var de=27,ue=8,lt=4,le=64,pt=t=>Math.max(1,Math.min(ue,t)),ft=t=>t*de+le;var p=m(x(),1);function gt(t,{units:e,target:n=0,legibleAt:i=260}){let[a,c]=(0,p.useState)(e);(0,p.useEffect)(()=>{let o=t.current;if(o===null||typeof ResizeObserver>"u")return;let r=new ResizeObserver(([s])=>{let f=s?.contentRect.width??0;f>0&&c(f)});return r.observe(o),()=>r.disconnect()},[t]);let u=a/e;return{scale:u,width:a,touchable:u*n>=24,legible:a>=i}}function xt(t="--graview-font-body",e="sans-serif"){let n=(0,p.useRef)(void 0),i=(0,p.useMemo)(()=>{if(typeof getComputedStyle!="function"||typeof document>"u")return e;let a=getComputedStyle(document.documentElement).getPropertyValue(t).trim();return a.length>0?a:e},[t,e]);return(0,p.useMemo)(()=>{n.current===void 0&&(n.current=typeof document>"u"?null:document.createElement("canvas").getContext("2d")??null);let a=n.current;return a===null?P:(c,u)=>{a.font=`${u}px ${i}`;let o=a.measureText(c).width;return o>0?o:P(c,u)}},[i])}var wt=(0,p.createContext)(void 0);var T=3;function pe(t){let e=V(t),n=e.focusId;if(!n)return null;if(e.within?.view){let[a]=B(n);if(a)return{at:`screen:${a}`,audience:!0}}return{at:n,audience:!1}}var fe=102,me=32;function St(t,e,n){let i=[],a=new Map,c=new Map,u=0;for(let o of t){let r=pe(o.stop),s=r?e(r.at):null;if(!r||!s){o.name&&i.push({kind:"edge",presence:o,point:{x:n-8,y:fe+u++*me}});continue}if(!o.name){let k=c.get(r.at);c.set(r.at,{n:(k?.n??0)+1,box:s});continue}let f=a.get(r.at)??[];if(f.push(o),a.set(r.at,f),f.length>T)continue;let l=s,d=f.length-1,b=r.audience?{x:l.x+l.width*.5+(d-1)*26,y:l.y+Math.min(l.height,24)}:{x:l.x+l.width*.5-26-d*26,y:l.y+l.height-4};i.push({kind:"person",presence:o,point:b,at:r.at,index:d,of:f.length,audience:r.audience})}for(let[o,r]of a){if(r.length<=T)continue;let s=e(o);s&&i.push({kind:"count",at:o,point:{x:s.x+s.width*.5+2*26+18,y:s.y+s.height-4},n:r.length-T})}for(let[o,{n:r,box:s}]of c)i.push({kind:"count",at:o,point:{x:s.x+s.width*.5+40,y:s.y+s.height-4},n:r});for(let o of t)if(o.name){if(o.robot?.at&&o.robot.mode!=="docked"){let r=e(o.robot.at);r&&i.push({kind:"robot",presence:o,point:{x:r.x+r.width/2+22,y:r.y+r.height-4},mode:o.robot.mode})}if(o.over){let r=e(o.over);r&&i.push({kind:"over",presence:o,box:r})}}return i}export{st as a,P as b,ne as c,re as d,Y as e,ut as f,de as g,lt as h,le as i,pt as j,ft as k,gt as l,xt as m,be as n,Qe as o,Je as p,St as q,U as r,nt as s,rt as t,ot as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as g}from"./chunk.TI4OSTQV.js";import{H as c,Ob as f,S as d,Sb as m,V as y,ab as h}from"./chunk.
|
|
1
|
+
import{a as g}from"./chunk.TI4OSTQV.js";import{H as c,Ob as f,S as d,Sb as m,V as y,ab as h}from"./chunk.WLPTY4BF.js";function S(t,i=()=>!0){let e=f(t),n=new Set(t.map(o=>o.lineage?.suggestion));return t.filter(o=>o.suggests&&!o.withheld&&!e.has(o.id)&&!n.has(o.id)).map(({id:o,batch:s,suggests:r,intent:I,author:j,lineage:l,at:v})=>{let u=new Set;return JSON.stringify(r.map(p=>p.args),(p,a)=>(typeof a=="string"&&i(a)&&u.add(a),a)),{id:o,batch:s,calls:r,intent:I,author:j,...l?{lineage:l}:{},at:v,about:[...u]}})}function x(t,i){return t.ops.length>0&&t.ops.every(e=>e.suggests!==void 0||e.undoes!==void 0&&i(e.undoes)?.suggests!==void 0)}var A=t=>JSON.stringify([t.kind,t.id??"",t.name??""]);function B(t,i=()=>{}){let e=[];for(let n of t){if(x(n,i))continue;let o=e.at(-1);if(!m(n.author)){e.push({batch:n});continue}if(o&&"digest"in o&&A(o.digest.author)===A(n.author)){let s=[...o.digest.batches,n];e[e.length-1]={digest:{author:o.digest.author,batches:s,things:w(s),at:n.at}}}else e.push({digest:{author:n.author,batches:[n],things:w([n]),at:n.at}})}return e}var w=t=>t.reduce((i,e)=>i+(e.undone?0:e.ops.length),0);function M(t,i=d(new Date().toISOString())??c()){let e=d(t.at)??t.at.slice(0,10),n=e===i?"today":`on ${y(e)}`;return`Tidied ${t.things===1?"one thing":`${t.things} things`} ${n}`}var b=t=>t;function P(t,i){let e=g(t),n=e?.store??t,o=i??e?.principal,s=(o!==void 0?n.seenBy(o):n).log.all();return S(s,r=>n.graph.has(r))}function O(t,i,e){let n=P(t,e).find(o=>o.id===i);if(!n)throw new h("That suggestion is no longer waiting: it was accepted or declined, or it is not one you can see.");return n}function E(t,i,e={}){let n=g(t)?.store??t,o=e.author??b(n).by,s=O(n,i,o);return n.applyAll(s.calls,{...e,author:o,lineage:{...s.lineage,suggestion:i}})}function F(t,i,e={}){let n=g(t)?.store??t,o=e.author??b(n).by,s=O(n,i,o);return n.undo(s.batch,{...e,author:o})}export{B as a,M as b,P as c,E as d,F as e};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as xe}from"./chunk.QYRPELLU.js";import{e as we,f as ke,i as $e,j as J,k as ve}from"./chunk.2EJAIT33.js";import{f as ge}from"./chunk.OE4QOBJF.js";import{d as V,e as be}from"./chunk.3D5T3XIE.js";import{b as he,e as ye}from"./chunk.GR5Q4HTW.js";import{$c as pe,B as X,Cc as ue,H as ne,Kb as q,Lb as ae,Rc as me,aa as E,ba as K,bc as le,da as oe,dc as ce,ea as Y,fa as re,hd as fe,ia as _,jc as L,ka as se,kc as de,xb as ie}from"./chunk.WLPTY4BF.js";function Oe(n,r,t){let i=n.tryDefinition(r)?.fields.shape,e=X(i?.[t]),l=!1,a=!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")&&(a=!0),e=X(e.innerType);if(e?.type!=="enum")return;let h=(e.entries?Object.values(e.entries):e.values??[]).filter(m=>typeof m=="string");return h.length>0?{values:h,empty:l&&!a}:void 0}function H(n,r,t){let i=Oe(n,r,t);if(!i)return[];let e=n.tryDefinition(r),l=i.values.map(a=>({value:a,label:he(e,t,a)}));return i.empty&&l.push({value:null,label:`No ${_(e,t).toLowerCase()}`}),l}function z(n,r,t){let i=n[r];return typeof i=="string"&&t.some(e=>e.value===i)?i:null}function Q(n,r,t,i,e=H(n.schema,t.kind,i)){return Se(n,r,t,i,e).flatMap(l=>l.move?[l.move]:[])}function Se(n,r,t,i,e=H(n.schema,t.kind,i)){let l=De(n.schema,n.allMutations(),t.kind,i,e),a=z(t,i,e),h=se(n.schema.tryDefinition(t.kind),t.kind),m=[];for(let{value:x,label:j,by:O,acts:B}of l){if(x===a)continue;let D,G,F;for(let s of B){let p=O==="step"?{[s.subject.arg]:t.id}:{[s.subject.arg]:t.id,[i]:x},b={name:s.name,args:p};if(!s.input.safeParse(p).success){F??=`${s.title??s.name} asks for more than the ${h} itself.`;continue}let w=n.permits(b,r);if(!w.ok){G??=w.refusal?.message??`You may not ${s.title??s.name}.`;continue}try{ie(n.graph,s,p)}catch(c){G??=c instanceof Error?c.message:String(c);continue}D={to:x,call:b,title:s.title??s.name};break}m.push(D?{to:x,label:j,move:D}:{to:x,label:j,why:G??F??`Nothing in this app moves a ${h} to ${j}.`})}return m}function De(n,r,t,i,e=H(n,t,i)){let l=Ce(n,r,t,i),a=Re(n,r,t,i);return e.flatMap(h=>{if(h.value===null)return[];let m=l.filter(x=>x.sets?.[i]===h.value);return[{value:h.value,label:h.label,by:m.length>0?"step":a.length>0?"value":"none",acts:m.length>0?m:a}]})}function Ce(n,r,t,i){return r.filter(e=>e.subject!==void 0&&e.derived===void 0&&typeof e.sets?.[i]=="string"&&q(n,e).includes(t))}function Re(n,r,t,i){let e=n.tryDefinition(t);return e?r.filter(l=>{if(!l.subject||!q(n,l).includes(t)||!ae(l,e).includes(i))return!1;let a=l.input.shape;return a!==void 0&&i in a}).sort((l,a)=>+(l.derived!==void 0)-+(a.derived!==void 0)):[]}var ee=(n,r)=>r&&n[r]!==void 0?String(n[r]):"";function Be(n,r,t){let i=s=>n.tryDefinition(s)?r.nodesOfKind(s).filter(p=>E(n.tryDefinition(s),p)):[],e=i(t.rows),l=i(t.columns),a=new Set(e.map(s=>s.id)),h=new Set(l.map(s=>s.id)),m=r.allEdges(),x=[],j=t.link;if(typeof j=="string"){let s=c=>n.tryDefinition(c)?.edges?.[j]?.to,p=(s(t.columns)??[]).some(c=>c===t.rows||c==="*"),b=(s(t.rows)??[]).some(c=>c===t.columns||c==="*"),w=p||!b;for(let c of m){if(c.kind!==j)continue;let P=w?c.to:c.from,o=w?c.from:c.to;a.has(P)&&h.has(o)&&x.push({rowId:P,columnId:o,via:[]})}}else{let s=new Map(j.path.map(b=>[b,new Map]));for(let b of m){let w=s.get(b.kind);if(!w)continue;let c=w.get(b.from);c?c.push(b.to):w.set(b.from,[b.to]);let P=w.get(b.to);P?P.push(b.from):w.set(b.to,[b.from])}let p=new Set;for(let b of l){let w=[{id:b.id,via:[]}];for(let c of j.path){let P=[],o=new Set;for(let k of w)for(let R of s.get(c).get(k.id)??[])o.has(`${k.id}|${R}`)||(o.add(`${k.id}|${R}`),P.push({id:R,via:[...k.via,k.id]}));w=P}for(let c of w){let P=`${c.id}|${b.id}`;!a.has(c.id)||p.has(P)||(p.add(P),x.push({rowId:c.id,columnId:b.id,via:c.via.slice(1)}))}}}let O=t.groupOrder??[],B=s=>O.indexOf(s)===-1?O.length:O.indexOf(s),D=(s,p)=>p==="label"?K(n.tryDefinition(s.kind),s):s[p],G=L(e,t.sort,D).map(s=>{let p=s;return{node:s,label:K(n.tryDefinition(s.kind),s),group:ee(p,t.rowGroup),ref:ee(p,t.rowRef)}}).sort((s,p)=>B(s.group)-B(p.group)||(t.sort!==void 0?0:s.ref<p.ref?-1:s.ref>p.ref?1:0)),F=L(l,t.columnSort,D).map(s=>({node:s,label:K(n.tryDefinition(s.kind),s),group:ee(s,t.columnGroup)})).sort((s,p)=>s.group<p.group?-1:s.group>p.group?1:t.columnSort!==void 0?0:s.node.id<p.node.id?-1:s.node.id>p.node.id?1:0);return{rows:G,columns:F,cells:x}}function Ae(n,r,t){let{rows:i,columns:e,cells:l}=Be(n,r,t),a=(o,k)=>Y(n,o,k),h=o=>Y(n,o,1).replace(/^1 /,""),m=o=>({id:o.id,kind:o.kind,title:K(n.tryDefinition(o.kind),o),parts:[]}),x=o=>{let k=r.getNode(o);if(!k)return null;let R=n.tryDefinition(k.kind),M=K(R,k),T=V(k,R,{limit:3,said:[M],glance:!0}).map(N=>N.alone.startsWith(N.label)?`${N.label.toLowerCase()}${N.alone.slice(N.label.length)}`:N.alone);return[M,...T].join(", ")},j=typeof t.link=="string"?[]:t.link.path.slice(0,-1).flatMap((o,k,R)=>{let M=ue(n,t.columns,R.slice(0,k+1));return M.ok?[...M.reached]:[]}),O=de(n,t,{rows:i.length,columns:e.length,cells:l.length});if(O)return[{t:"text",text:`${a(t.rows,i.length)} against ${a(t.columns,e.length)}.`},{t:"text",text:O}];let B=[{t:"text",text:`${a(t.rows,i.length)} against ${a(t.columns,e.length)}${j.length>0?`, through ${[...new Set(j)].map(o=>a(o,2).replace(/^2 /,"")).join(" and ")}`:""}${e.length>0?`: ${e.map(o=>o.label).join(", ")}`:""}.`}],D=new Map(e.map(o=>[o.node.id,o.label])),G=new Map(e.map((o,k)=>[o.node.id,k])),F=new Map,s=new Map;for(let o of l){let k=F.get(o.rowId);k?k.push(o):F.set(o.rowId,[o]);let R=s.get(o.columnId);R?R.add(o.rowId):s.set(o.columnId,new Set([o.rowId]))}for(let o of i){let R=[...F.get(o.node.id)??[]].sort((M,T)=>G.get(M.columnId)-G.get(T.columnId)).map(M=>{let T=M.via.map(x).filter(N=>N!==null);return`${D.get(M.columnId)}${T.length>0?` (${T.join("; ")})`:""}`});B.push({t:"field",label:o.label,text:R.length>0?R.join(", "):"none"})}B.push({t:"list",as:"name",columns:1,groups:e.map(o=>{let k=s.get(o.node.id)??new Set,R=i.filter(M=>k.has(M.node.id)).map(M=>m(M.node));return{heading:`${o.label} (${R.length})`,items:R}})});let p=new Set(l.map(o=>o.rowId)),b=new Set(l.map(o=>o.columnId)),w=i.filter(o=>!p.has(o.node.id)),c=e.filter(o=>!b.has(o.node.id)),P=t.rows===t.columns;return w.length>0&&B.push({t:"text",text:`${P?`${w.length} with none across`:`${a(t.rows,w.length)} with no ${h(t.columns)}`}: ${w.map(o=>o.label).join(", ")}.`}),c.length>0&&B.push({t:"text",text:`${P?`${c.length} with none down`:`${a(t.columns,c.length)} on no ${h(t.rows)}`}: ${c.map(o=>o.label).join(", ")}.`}),B}function te(n,r,t,i={}){let{app:e,blocks:l=t?e?.viewSpecs?.[t.kind]?.[i.slot??"page"]:e?.home}=i;if(!l?.length)return[];let a=i.firstHeading??(t||i.blocks?void 0:1),h=ve(n,r,t,{...i,money:i.money??e?.brand,firstHeading:a});return t&&!h.node?[]:ke(typeof l[0]?.t=="string"?l:we(l),h)}var Ie=240,Pe=10,Ge=1160,Fe=40,Ne=640,Ke=3,Te=n=>Math.max(1,Math.floor((Math.min(n,Ge)-Fe+Pe)/(Ie+Pe)));function We(n,r,t,i){let{app:e}=i,l=i.width??1440,a=i.today??n.today()??ne(e.brand?.timeZone),h=n.seenBy(r),m=h.schema,x=h.graph,j=xe(e),O=typeof t=="string"?t.trim():t.slug,B=typeof t=="string"?j.find(d=>d.slug===O||d.title===O||d.address===O):j.find(d=>d.slug===t.slug&&d.kind===t.kind)??t,D=!B&&typeof t=="string"?x.getNode(O):void 0;if(!B&&!D)return{ok:!1,error:`"${O}" is not a place this app has, nor a record this seat can see.`,places:j.map(d=>d.slug)};let G=[],F=e.viewSpecs??{},s=Te(l),p=(d,y)=>te(h,null,d,{app:e,today:a,...y}),b=(d,y,$)=>{let f=m.tryDefinition(d.kind),S=K(f,d);if(y==="name")return{id:d.id,kind:d.kind,title:S,parts:[]};if(F[d.kind]?.[y]){let A=p(d,{slot:y}),[I,...g]=A,C=I?.t==="title";return{id:d.id,kind:d.kind,title:C?I.text:S,parts:w(C?g:A,$,`views.${d.kind}.${y}`,` (${d.id})`,C?1:0)}}if(y==="row")return{id:d.id,kind:d.kind,title:S,parts:[]};let u=f?.computed?J(m,x,d):d,W=V(u,f,{limit:3,said:[S],glance:!0,locale:e.brand?.locale,timeZone:e.brand?.timeZone});return{id:d.id,kind:d.kind,title:S,parts:W.map(A=>({t:"text",text:A.alone}))}};function w(d,y,$,f="",S=0){let v=[];return d.forEach((u,W)=>{let A=`${$}.${W+S}`;switch("problem"in u&&u.problem&&G.push({at:`${A}${f}`,says:u.problem}),u.t){case"title":v.push({t:"heading",level:3,text:u.text});return;case"text":v.push({t:"text",text:u.markdown?ye(u.text):u.text,...u.tone?{tone:u.tone}:{}});return;case"badge":v.push({t:"badge",text:u.text});return;case"field":case"image":v.push({t:"field",label:u.label,text:u.text});return;case"progress":v.push({t:"progress",label:u.label,text:u.text});return;case"group":v.push(...w(u.blocks,y,`${A}.group`,f));return;case"when":v.push(...w(u.blocks,y,`${A}.show`,f));return;case"divider":case"figure":return;case"headline":v.push({t:"heading",level:u.level,text:u.text});return;case"number":v.push({t:"figure",text:u.text,...u.label?{label:u.label}:{}});return;case"list":{if(u.failed){v.push({t:"text",text:"\u2014"});return}if(u.members.length===0){u.empty&&v.push({t:"list",as:u.as,columns:1,groups:[],empty:u.empty});return}let I=y+1,g=I>Ke?"name":u.as,C=(u.groups??[{value:null,members:u.members}]).map(U=>({..."heading"in U&&U.heading?{heading:U.heading}:{},items:U.members.map(Me=>b(Me,g,I))}));v.push({t:"list",as:g,columns:g==="card"?s:1,groups:C,...u.more>0?{more:u.more}:{}});return}}}),v}let c=[],P,o,k;if(D){o="record";let d=m.tryDefinition(D.kind),y=K(d,D);k={slug:D.id,title:y,kind:D.kind,address:me(m,D.kind,D.id)},F[D.kind]?.page&&c.push(...w(p(D,{slot:"page"}),1,`views.${D.kind}.page`));let f=d?.computed?J(m,x,D):D;for(let S of be(d,V(f,d,{said:[y],locale:e.brand?.locale,timeZone:e.brand?.timeZone}))){S.title&&c.push({t:"heading",level:2,text:S.title});for(let v of S.fields)c.push({t:"field",label:v.label,text:v.value,...v.long?{long:!0}:{},...v.markdown?{markdown:!0}:{}})}}else{let d=B;k={slug:d.slug,title:d.title,kind:d.kind,address:d.address};let y=d.lens?pe(e).drawn.find($=>$.as===d.slug&&(d.kind===null||$.kinds.includes(d.kind))):void 0;if(d.kind===null){let $=e.brand,f=$?.name??e.name,S=$?.logo&&ce($.logo)?$.logo:void 0;if(P={name:f,...$?.subtitle?{subtitle:$.subtitle}:{},...S?{logo:{alt:$?.logoAlt??f,...le(S)?{drawn:"inline SVG"}:{drawn:"image",src:S}}}:{}},e.home)o="blocks",c=w(p(null,{}),0,"views.home");else{o="derived";let v=n.kindsKeptFrom(r),u=new Set([...e.pages?.hide??[],...v,...n.modules.disabledKinds]),W=fe(m.kinds,e.pages?.order).filter(A=>!u.has(A));c.push({t:"heading",level:1,text:e.name??"Home"});for(let A of W){let I=x.nodesOfKind(A).filter(g=>E(m.tryDefinition(A),g)).length;I>0&&c.push({t:"text",text:`${I} ${Z(m,A,I)}`})}}}else if(y?.lens==="blocks")o="lens:blocks",c=w(p(null,{blocks:y.options.blocks??[]}),0,`lenses.${y.index}.options.blocks`);else if(y?.lens==="columns"){o="lens:columns";let $=y.options.bindings??{};for(let f of Object.keys($)){let S=$[f]?.column;if(!S)continue;let v=H(m,f,S),u=L(x.nodesOfKind(f).filter(g=>E(m.tryDefinition(f),g)),y.options.sort,(g,C)=>C==="label"?K(m.tryDefinition(g.kind),g):g[C]);Object.keys($).length>1&&c.push({t:"heading",level:2,text:Z(m,f,2).replace(/^./,g=>g.toUpperCase())}),c.push({t:"text",text:`${u.length} ${Z(m,f,u.length)} in columns by ${_(m.tryDefinition(f),S).toLowerCase()}.`});let W=v.map(g=>({column:g,items:u.filter(C=>z(C,S,v)===g.value).map(C=>b(C,"card",1))})).filter(({column:g,items:C})=>g.value!==null||C.length>0).map(({column:g,items:C})=>({heading:`${g.label} (${C.length})`,items:C}));c.push({t:"list",as:"card",columns:1,groups:W});let A=new Map;for(let g of u)for(let C of Q(n,r,g,S,v))A.set(C.to,(A.get(C.to)??new Set).add(`"${C.title}"`));let I=v.filter(g=>g.value!==null&&A.has(g.value)).map(g=>`to ${g.label} by ${[...A.get(g.value)].join(" or ")}`);c.push({t:"text",text:I.length>0?`Moves: ${I.join("; ")}.`:"Moves: none for this seat."})}}else if(y?.lens==="coverage")o="lens:coverage",c=Ae(m,x,y.options);else if(y){o=`lens:${y.lens}`;let $=y.kinds.flatMap(f=>x.nodesOfKind(f).filter(S=>E(m.tryDefinition(f),S)));c.push({t:"text",text:`A ${y.lens} of ${$.length} ${y.kinds.map(f=>Z(m,f,$.length)).join(" and ")}.`}),c.push({t:"list",as:"name",columns:1,groups:[{items:$.map(f=>b(f,"name",1))}]})}else{o="derived";let $=x.nodesOfKind(d.kind).filter(f=>E(m.tryDefinition(d.kind),f));c.push({t:"heading",level:1,text:d.title}),$.length===0?c.push({t:"list",as:"row",columns:1,groups:[],empty:`No ${Z(m,d.kind,0)} yet.`}):c.push({t:"list",as:"row",columns:1,groups:[{items:$.map(f=>b(f,"row",1))}]})}}let R=r.kind==="system"?"the system":(r.roles??[]).length>0?(r.roles??[]).join(", "):r.kind,M=l<Ne?"phone":"wide",T=k.kind===null?Ee(m,x):[],N={...P?{masthead:P}:{},...T.length>0?{facts:T}:{},place:k,seat:R,width:l,variant:M,drawnBy:o,parts:c,problems:G};return{ok:!0,description:{...N,text:je(N)}}}function Ee(n,r){let t=$e(n,r,null),i=e=>Array.isArray(e)?e.map(i).join(", "):e===null?"nothing":typeof e=="boolean"?e?"yes":"no":typeof e=="object"?e.label:String(e);return[...ge(n)].map(([e,l])=>{let a=l.label??oe(e);return Object.hasOwn(t.values,e)?{name:e,label:a,value:i(t.values[e])}:{name:e,label:a,refused:t.refused[e]??"it could not be worked out"}})}function Z(n,r,t){let i=n.tryDefinition(r);if(t===1)return i?.noun??r;let e=re(n,r);return e.charAt(0).toLowerCase()+e.slice(1)}function je(n){let r=[`${n.place.title} (${n.place.address}) \u2014 as ${n.seat}, ${n.width} wide (${n.variant}).`],t=n.masthead;t&&r.push(`Masthead: ${t.logo?`the logo ("${t.logo.alt}", ${t.logo.drawn==="image"?t.logo.src:"inline SVG"}), `:""}${t.name}${t.subtitle?` \u2014 ${t.subtitle}`:""}`);let i=(e,l)=>{for(let a of e)switch(a.t){case"heading":r.push(`${l}${"#".repeat(a.level)} ${a.text}`);break;case"text":r.push(`${l}${a.text}`);break;case"badge":r.push(`${l}[${a.text}]`);break;case"field":case"progress":r.push(`${l}${a.label}: ${a.text}`);break;case"figure":r.push(`${l}${a.text}${a.label?` \u2014 ${a.label}`:""}`);break;case"list":if(a.groups.length===0){a.empty&&r.push(`${l}(${a.empty})`);break}for(let h of a.groups){h.heading&&r.push(`${l}${h.heading}:`);for(let m of h.items)r.push(`${l}${h.heading?" ":""}- ${m.title}`),i(m.parts,`${l}${h.heading?" ":" "}`)}a.as==="card"&&a.columns>1&&r.push(`${l}(cards, ${a.columns} across)`),a.more&&r.push(`${l}and ${a.more} more`);break}};if(i(n.parts,""),n.facts){r.push("Facts of the whole graph (what fact('<name>') reads):");for(let e of n.facts)r.push(`- ${e.label} (${e.name}): ${e.value??`not worked out \u2014 ${e.refused}`}`)}if(n.problems.length>0){r.push("Problems:");for(let e of n.problems)r.push(`- ${e.at}: ${e.says}`)}return r.join(`
|
|
2
|
+
`)}export{H as a,z as b,Q as c,Se as d,De as e,Ce as f,Re as g,te as h,We as i,je as j};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{q as ce}from"./chunk.2VIGF4FO.js";import{a as Z,b as C,c as ee,d as te,g as oe,j as re,k as P,l as se,p as le,s as de}from"./chunk.BUVAMSOZ.js";import{a as ie,b as ne,c as ae}from"./chunk.FTJBW25J.js";import"./chunk.UT6642FC.js";import"./chunk.MCVY6RRS.js";import"./chunk.RZVZG2BQ.js";import{a as X}from"./chunk.VKHKYK5L.js";import"./chunk.TI4OSTQV.js";import"./chunk.EUGWV3S6.js";import"./chunk.MWZK3HVG.js";import"./chunk.3D5T3XIE.js";import"./chunk.GR5Q4HTW.js";import{e as _,m as J}from"./chunk.QT4XGC5Z.js";import{$ as j,H as me,K as U,S as V}from"./chunk.MQ7FNHXG.js";import{fa as B,qc as Y}from"./chunk.WLPTY4BF.js";import{b as O}from"./chunk.AJZBJBMO.js";var a=O(me(),1);var d=O(V(),1),ke=new Set(["show","go","to","open","the","a","an","me"]),ge=s=>s.toLowerCase().normalize("NFKD").replace(/[̀-ͯ]/g,""),W=(s,p)=>{let r=ge(s);return p.every(t=>r.includes(t))},pe=s=>s&&`${s[0].toLowerCase()}${s.slice(1)}`,I={act:4,show:3,place:3,record:4},we=360,h=12;function Oe({face:s,opening:p,close:r}){let t=X(),{setMenuAt:v}=j(),n=(0,a.useMemo)(()=>p.target??Z(p.pointed??{about:[]},e=>t.store.graph.has(e)),[p,t.store]),f=(0,a.useMemo)(()=>oe(t.store,n,t.places),[t.store,n,t.places]),[u,y]=(0,a.useState)(""),[b,m]=(0,a.useState)(-1),[l,$]=(0,a.useState)(null),[A,L]=(0,a.useState)(null),E=(0,a.useRef)(null),z=(0,a.useRef)(null),T=(0,a.useId)(),R=(0,a.useRef)(!0),{ghost:G}=U(t.desk);(0,a.useEffect)(()=>()=>{R.current=!1;let e=t.desk.get().ghost;e?.onCard&&t.desk.setGhost({...e,onCard:!1})},[t.desk]);let M=(0,a.useMemo)(()=>{let e=P(t,n);return ee(t.store,n,{principal:t.principal,places:t.places,...e.acts?{acts:e.acts}:{}})},[t,n]),K=(0,a.useMemo)(()=>{let e=C(n);if(e.length===0)return[];let i=new Set(M.candidates.flatMap(c=>c.type==="act"?[c.mutation]:[]));return ie(t.store,e,{principal:t.principal,...e.length===1?{focus:e[0]}:{}}).affordances.filter(c=>!c.destructive&&i.has(c.mutation))},[t.store,t.principal,n,M]),q=(0,a.useCallback)(()=>{let e=p.returnTo,i=ue(E.current,n,s);r(),requestAnimationFrame(()=>{if(e?.isConnected&&!e.closest("[inert]"))return e.focus({preventScroll:!0});let c=(i&&i.tabIndex>=0?i:null)??document.querySelector("[data-graview-page-title]")??document.querySelector("main");c&&c.tabIndex<0&&!c.hasAttribute("tabindex")&&c.setAttribute("tabindex","-1"),c?.focus({preventScroll:!0})})},[p.returnTo,n,s,r]),F=(0,a.useCallback)(e=>{if(e.open.length>0){let i=E.current?.getBoundingClientRect();r(),v({x:i?.left??0,y:i?.top??0,on:e.args.id??C(n)[0],about:C(n)});return}try{ae(t.store,e,{}),ne(t.store,e,{},{author:t.principal}),q()}catch(i){L(i instanceof Error?i.message:String(i))}},[t.store,t.principal,r,q,v,n]),H=(0,a.useCallback)(async e=>{let i=e.trim();if(!i)return;let c=l?.result?.answer?{said:l.said,answer:l.result.answer}:void 0;y(""),m(-1),L(null),$({said:i,result:null});let S=await re(t.ai,{...P(t,n,i),said:i,...c?{follows:c}:{}});t.desk.record(S.interaction),S.ghost&&S.ghost.proposals.length>0&&t.desk.setGhost({ghost:S.ghost,onCard:!0}),R.current&&$({said:i,result:S})},[l,t,n]),N=(0,a.useRef)(p.asked);(0,a.useEffect)(()=>{let e=N.current;N.current=void 0,e&&H(e)},[]);let k=(0,a.useMemo)(()=>{let e=u.trim();if(!e&&l)return[];let i=ge(e).split(/\s+/).filter(o=>o&&!ke.has(o)),c=/^show\b/i.test(e),S=/^(go|open)\b/i.test(e),x=[];if(!c&&!S)for(let o of K.filter(g=>W(g.label,i)).slice(0,I.act))x.push({id:`act:${o.id}`,kind:"act",label:o.label,hint:o.open.length>0?"asks more":"do it",take:()=>F(o)});let Q=e&&!/\?\s*$/.test(e)?te(t.store,n,{principal:t.principal,places:t.places,said:e}):[];for(let o of Q)x.push({id:`place:${o.place}`,kind:"place",label:o.fit==="full"?`Open ${o.title}`:`Open and adjust ${o.title}`,hint:o.fit==="full"?"a view you have":"adjust it",take:()=>{r(),t.goTo.place(o.place),o.fit==="partial"&&_(t.desk,{target:{on:"lens",place:o.place,...o.kind?{kind:o.kind}:{}},asked:e})}});if(!S){let o=M.candidates.filter(g=>g.type==="panel");for(let g of o.filter(D=>W(`show ${D.label}`,i)).slice(0,I.show))x.push({id:g.id,kind:"show",label:`Show ${pe(g.label)}`,hint:"a panel",take:()=>{r(),se(t,{title:g.label,recipe:{...g.panel,title:g.label}})}})}if(!c){for(let o of t.places.filter(g=>W(g.title,i)&&!Q.some(D=>D.place===g.as)).slice(0,I.place))x.push({id:`place:${o.as}`,kind:"place",label:`Go to ${o.title}`,take:()=>(r(),t.goTo.place(o.as))});if(i.length>0){let o=ce(t.store,e.replace(/^(go to|open)\s+/i,""),{principal:t.principal,from:C(n),limit:I.record}).hits;for(let g of o)g.about==="node"&&x.push({id:`record:${g.id}`,kind:"record",label:g.label,hint:B(t.store.schema,g.kind),take:()=>(r(),t.goTo.record(g.id))})}}return e&&x.push({id:"ask",kind:"ask",label:e,take:()=>void H(e)}),x},[u,K,M,t,n,F,H,r,l]);(0,a.useEffect)(()=>m(u.trim()?0:-1),[u]),(0,a.useLayoutEffect)(()=>{let e=E.current;if(!e)return;if(typeof e.showPopover=="function")try{e.showPopover()}catch{}z.current?.focus({preventScroll:!0});let i=0,c=()=>{be(e,ue(e,n,s)),i=requestAnimationFrame(c)};return c(),()=>cancelAnimationFrame(i)},[n,s]),(0,a.useEffect)(()=>{if(l)return;let e=i=>{i.target instanceof Node&&E.current?.contains(i.target)||r()};return document.addEventListener("pointerdown",e,!0),()=>document.removeEventListener("pointerdown",e,!0)},[l,r]);let fe=e=>{if(e.key==="ArrowDown"&&k.length>0)e.preventDefault(),m(i=>Math.min(k.length-1,i+1));else if(e.key==="ArrowUp"&&k.length>0)e.preventDefault(),m(i=>Math.max(0,i-1));else if(e.key==="Enter"){e.preventDefault();let i=k[b];i?i.take():u.trim()&&H(u)}},w=l?.result??null,he=k[b];return(0,d.jsxs)("section",{ref:E,popover:"manual",role:"region","aria-label":l?`Answer about ${f}`:`Ask about ${f}`,"data-testid":"quick-ask","data-quick-ask":l?"answer":"bar","data-quick-ask-face":s,"data-graview-offstage":"","data-graview-overlay":"",onKeyDown:e=>{e.key==="Escape"&&(e.preventDefault(),e.stopPropagation(),q())},onMouseDown:e=>e.stopPropagation(),style:ve,children:[(0,d.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:8},children:[(0,d.jsxs)("p",{"data-testid":"quick-ask-about",style:{margin:0,flex:"1 1 auto",minWidth:0,fontSize:"0.75rem",color:"var(--graview-ink-muted)",overflowWrap:"anywhere"},children:["About ",f]}),(0,d.jsx)("button",{type:"button","data-testid":"quick-ask-close","aria-label":"Close",title:"Close",onClick:q,style:ye,children:(0,d.jsx)("span",{"aria-hidden":"true",children:"\u2715"})})]}),l?(0,d.jsxs)("div",{"data-testid":"quick-answer",style:{display:"grid",gap:8},children:[(0,d.jsxs)("p",{"data-testid":"quick-answer-asked",style:{margin:0,fontSize:"0.8125rem",color:"var(--graview-ink-muted)",fontStyle:"italic",overflowWrap:"anywhere"},children:["\u201C",l.said,"\u201D"]}),(0,d.jsx)("p",{"data-testid":"quick-answer-text","aria-live":"polite",style:{margin:0,fontSize:"0.9375rem",lineHeight:1.45,color:w?.interaction.outcome==="failed"?"var(--graview-warn)":"var(--graview-ink)",overflowWrap:"anywhere"},children:w===null?"Thinking\u2026":w.interaction.outcome==="failed"?w.interaction.failed??"The AI could not answer that here.":w.answer??""}),w&&w.offers.length>0?(0,d.jsx)("ul",{"aria-label":"What acts on it",style:{margin:0,padding:0,listStyle:"none",display:"flex",flexWrap:"wrap",gap:6},children:w.offers.map(e=>(0,d.jsx)("li",{children:(0,d.jsx)("button",{type:"button","data-testid":"quick-answer-offer","data-ai-offer":e.id,"data-ai-offer-type":e.type,onClick:()=>{le(t,w,e,r).then(i=>{i&&R.current&&L(i)})},style:xe,children:e.type==="panel"?`Show ${pe(e.label)}`:e.type==="place"?`Go to ${e.label}`:e.label})},e.id))}):null,G?.onCard&&G.ghost.interaction===w?.interaction.id?(0,d.jsx)(de,{placement:"card"}):null]}):null,(0,d.jsxs)("div",{style:{display:"grid",gap:4},children:[(0,d.jsx)("input",{ref:z,type:"text",role:"combobox","data-testid":"quick-ask-input","aria-label":l?`Ask a follow-up about ${f}`:`Ask about ${f}, or go somewhere`,"aria-expanded":k.length>0,"aria-controls":T,"aria-autocomplete":"list",...he?{"aria-activedescendant":`${T}-${b}`}:{},autoComplete:"off",enterKeyHint:"go",placeholder:l?"Ask a follow-up\u2026":"Ask, or go to\u2026",value:u,readOnly:l!==null&&w===null,"aria-busy":l!==null&&w===null,onChange:e=>y(e.target.value),onKeyDown:fe,style:Ae}),(0,d.jsx)("div",{id:T,role:"listbox","aria-label":u.trim()?`What \u201C${u.trim()}\u201D finds here`:"What can be done here",hidden:k.length===0,style:{display:k.length===0?"none":"grid",gap:1,maxHeight:280,overflowY:"auto"},children:k.map((e,i)=>(0,d.jsx)("div",{id:`${T}-${i}`,role:"option","aria-selected":i===b,"data-testid":"quick-ask-option","data-quick-ask-kind":e.kind,"data-quick-ask-row":e.id,onMouseEnter:()=>m(i),onMouseDown:c=>c.preventDefault(),onClick:e.take,style:{...Se,background:i===b?"var(--graview-panel-muted)":"transparent",...e.kind==="ask"?{borderTop:"1px solid var(--graview-edge)",marginTop:2}:{}},children:e.kind==="ask"?(0,d.jsxs)("span",{children:["Ask: ",(0,d.jsxs)("span",{style:{fontWeight:600},children:["\u2018",e.label,"\u2019"]})]}):(0,d.jsxs)("span",{children:[e.label,e.hint?(0,d.jsxs)("span",{style:{color:"var(--graview-ink-faint)"},children:[" \xB7 ",e.hint]}):null]})},e.id))})]}),A?(0,d.jsx)("p",{role:"alert","data-testid":"quick-ask-refused",style:{margin:0,fontSize:"0.8125rem",color:"var(--graview-warn)"},children:A}):null,(0,d.jsx)("span",{style:J,"aria-live":"polite",children:k.length>0&&u.trim()?`${k.length} ${k.length===1?"way":"ways"} to go on`:""})]})}function ue(s,p,r){let t=s?.closest("[data-graview-embed]")??document,v=p.on==="list"?[`aggregate:${p.kind}`,`kind:${p.kind}`]:p.on==="lens"&&p.kind?[`aggregate:${p.kind}`]:C(p);for(let n of v)for(let f of t.querySelectorAll(`[data-graview-view="${CSS.escape(n)}"], [data-graview-pick="${CSS.escape(n)}"]`)){if(s?.contains(f))continue;let u=f.getBoundingClientRect();if(u.width>0&&u.height>0)return f}return r==="pages"?t.querySelector("main [data-graview-page-title]")??t.querySelector("main h1"):null}function be(s,p){let r={width:document.documentElement.clientWidth||innerWidth,height:innerHeight},t=Math.min(we,r.width-2*h),v=s.getBoundingClientRect().height,n=p?.getBoundingClientRect(),f,u,y,b=A=>Math.max(h,Math.min(A,r.height-v-h));if(n&&n.width>0&&n.bottom>0&&n.top<r.height)if(n.right+h+t<=r.width-h)f=n.right+h,u=b(n.top),y="right";else if(n.left-h-t>=h)f=n.left-h-t,u=b(n.top),y="left";else{f=Math.max(h,Math.min(n.left,r.width-t-h));let A=n.bottom+h;u=A+v<=r.height-h?A:b(n.top-h-v),y=A+v<=r.height-h?"below":"above"}else f=(r.width-t)/2,u=b(72),y="top";let m=s.style,l={left:`${Math.round(f)}px`,top:`${Math.round(u)}px`,width:`${Math.round(t)}px`};m.left!==l.left&&(m.left=l.left),m.top!==l.top&&(m.top=l.top),m.width!==l.width&&(m.width=l.width);let $=p?.getAttribute("data-graview-view")??p?.getAttribute("data-graview-pick")??(p?"page":"");s.getAttribute("data-quick-ask-beside")!==$&&s.setAttribute("data-quick-ask-beside",$),s.getAttribute("data-quick-ask-side")!==y&&s.setAttribute("data-quick-ask-side",y)}var ve={position:"fixed",inset:"auto",margin:0,zIndex:Y("popover"),boxSizing:"border-box",display:"grid",gap:10,padding:12,borderRadius:12,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",color:"var(--graview-ink)",boxShadow:"var(--graview-lift-high)",maxHeight:"calc(100dvh - 24px)",overflowY:"auto",fontSize:"0.875rem"},ye={display:"inline-grid",placeItems:"center",width:28,height:28,padding:0,font:"inherit",fontSize:"0.875rem",lineHeight:1,color:"var(--graview-ink-muted)",background:"transparent",border:"1px solid transparent",borderRadius:6,boxShadow:"none",cursor:"pointer"},Ae={boxSizing:"border-box",width:"100%",height:36,padding:"0 10px",font:"inherit",fontSize:"max(1rem,16px)",color:"var(--graview-ink)",background:"var(--graview-panel)",border:"1px solid var(--graview-edge)",borderRadius:8},Se={display:"flex",alignItems:"center",minHeight:30,padding:"4px 8px",borderRadius:6,cursor:"pointer",overflowWrap:"anywhere"},xe={display:"inline-flex",alignItems:"center",minHeight:30,padding:"2px 10px",font:"inherit",fontSize:"0.8125rem",borderRadius:8};export{Oe as QuickAskCard};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"./chunk.
|
|
1
|
+
import"./chunk.QT4XGC5Z.js";import{S as T}from"./chunk.MQ7FNHXG.js";import"./chunk.WLPTY4BF.js";import{b as A}from"./chunk.AJZBJBMO.js";var F=/^ {0,3}(`{3,}|~{3,})[ \t]*([^`\s]*)/,D=/^ {0,3}(#{1,6})(?:[ \t]+|$)/,R=/^ {0,3}(?:(?:-[ \t]*){3,}|(?:\*[ \t]*){3,}|(?:_[ \t]*){3,})$/,v=/^ {0,3}>[ \t]?/,_=/^([ \t]*)([-*+]|(\d{1,9})[.)])(?:[ \t]+|$)/,K=/^\|?\s*:?-+:?\s*(?:\|\s*:?-+:?\s*)+\|?$|^\|\s*:?-+:?\s*\|$/,w=/^[ \t]*$/;function O(t){let n=F.exec(t);if(!(!n||n[1][0]==="`"&&t.indexOf("`",n[0].length)>=0))return{mark:n[1],lang:n[2]}}function U(t,n){let r=t.trim().slice(n).trim(),e=r.length;for(;e>0&&r[e-1]==="#";)e--;return(e===0||r[e-1]===" "||r[e-1]===" ")&&(r=r.slice(0,e).trim()),r}var $=t=>O(t)!==void 0||D.test(t)||R.test(t)||v.test(t)||_.test(t),b=t=>[...t].reduce((n,r)=>r===" "?n+4-n%4:n+1,0);function E(t){let n=t.trim().replace(/^\|/,"").replace(/(?<!\\)\|$/,""),r=[],e="",l=!1;for(let c=0;c<n.length;c++){let h=n[c];h==="\\"&&n[c+1]==="|"?(e+="|",c++):h==="`"?(l=!l,e+=h):h==="|"&&!l?(r.push(e.trim()),e=""):e+=h}return r.push(e.trim()),r}function W(t){return B(t.replace(/\r\n?/g,`
|
|
2
2
|
`).replace(/\0/g,"\uFFFD").split(`
|
|
3
3
|
`),0)}function B(t,n){let r=[],e=0;for(;e<t.length;){let l=t[e];if(w.test(l)){e++;continue}let c=O(l);if(c){let o=new RegExp(`^ {0,3}${c.mark[0]==="`"?"`":"~"}{${c.mark.length},}[ \\t]*$`),a=[];for(e++;e<t.length&&!o.test(t[e]);)a.push(t[e++]);e++,r.push({t:"code",text:a.join(`
|
|
4
4
|
`),...c.lang?{lang:c.lang}:{}});continue}let h=D.exec(l);if(h){r.push({t:"heading",level:h[1].length,children:k(U(l,h[1].length),0)}),e++;continue}if(R.test(l)){r.push({t:"rule"}),e++;continue}if(v.test(l)){let o=[];for(;e<t.length&&(v.test(t[e])||o.length>0&&!w.test(t[e])&&!$(t[e])&&!w.test(o[o.length-1]));)o.push(t[e++].replace(v,""));r.push(n<8?{t:"quote",blocks:B(o,n+1)}:{t:"p",children:k(o.join(`
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import{a as qe,c as Be}from"./chunk.AZCFXPEL.js";import{b as Ve}from"./chunk.W2HCJQVK.js";import{a as Ie,b as Ke,c as Fe,d as j}from"./chunk.4DEUD66C.js";import"./chunk.LHO7L3CS.js";import{j as Me,k as Le}from"./chunk.L73VUBXN.js";import"./chunk.YG423NEB.js";import"./chunk.VNBR4DHD.js";import"./chunk.Z3ZKYSPN.js";import{e as Ee}from"./chunk.6ONRWFA6.js";import"./chunk.HJCQ6I3S.js";import"./chunk.GZ3IXNA4.js";import{e as ne}from"./chunk.FMVWXSQ7.js";import"./chunk.IM7LXLIB.js";import{a as xe}from"./chunk.7RSZMIAL.js";import"./chunk.ROGYDMES.js";import"./chunk.6IHXTT6Z.js";import"./chunk.YXH3IWNR.js";import"./chunk.OEF3GPRM.js";import"./chunk.BRHRAVU2.js";import{m as Pe}from"./chunk.VTWFVPKD.js";import{a as Te,b as Oe}from"./chunk.ZRQI5VJF.js";import{h as $e}from"./chunk.33GN2NUT.js";import{e as Re,f as De}from"./chunk.2VIGF4FO.js";import{a as Se,b as Ne,j as Ae}from"./chunk.67WL7BGF.js";import"./chunk.G4JJXA63.js";import"./chunk.5MSO3KRO.js";import"./chunk.QYRPELLU.js";import"./chunk.FTJBW25J.js";import"./chunk.UT6642FC.js";import"./chunk.MCVY6RRS.js";import"./chunk.RZVZG2BQ.js";import"./chunk.Q5WEOX3Q.js";import"./chunk.XHWL7QBF.js";import"./chunk.6UCRL4OF.js";import"./chunk.V2NBJDAX.js";import"./chunk.WVUJXDXZ.js";import"./chunk.2EJAIT33.js";import{a as ye}from"./chunk.EUGWV3S6.js";import"./chunk.6XJP7F3I.js";import"./chunk.NPX7SPXM.js";import"./chunk.OE4QOBJF.js";import"./chunk.74RMHUCX.js";import"./chunk.GZHZLJBF.js";import{r as ke}from"./chunk.I3SQJ2L2.js";import"./chunk.OJGHDWI6.js";import"./chunk.FUJM7GDV.js";import{g as be}from"./chunk.MWZK3HVG.js";import{d as te}from"./chunk.3D5T3XIE.js";import{c as me}from"./chunk.GR5Q4HTW.js";import{C as Ce,r as J}from"./chunk.QT4XGC5Z.js";import{$ as V,H as tt,S as we,U as ve,ba as X,k as ge,ka as he,m as ue,n as fe,s as U,ta as ee,ua as Y}from"./chunk.MQ7FNHXG.js";import{H as se,N as de,T as D,Ta as Z,ba as G,ea as le,ga as pe,ia as ce}from"./chunk.WLPTY4BF.js";import{b as Q}from"./chunk.AJZBJBMO.js";var f=Q(tt(),1);var nt=300,it=14,z=50,at=3,ot=2;function _e(e,n,o){let p=e.tryDefinition(n)?.fields?.shape;return(p?.[o]===void 0?void 0:ye(p[o]))?.type}var rt=(e,n)=>Object.keys(e.tryDefinition(n)?.fields?.shape??{}),st=e=>e==="date"||e==="datetime",Ge=/^(due|dueOn|dueAt|dueDate|deadline|by)$/i,dt=/^(date|on|day|when|at|start|starts|startsOn|startsAt|begins|from|sown|scheduled|scheduledFor|planned|plannedFor)$/i,lt=/^(done|finished|complete|completed|closed)$/i;function ae(e,n){let o=e.tryDefinition(n),p=rt(e,n),a=p.filter(u=>st(_e(e,n,u)));if(a.length===0)return;let i=o?.fieldRoles??{},s=u=>i[u]!==void 0&&a.includes(i[u])?i[u]:void 0,c=s("start")??s("when")??a.find(u=>Ge.test(u))??a.find(u=>dt.test(u));if(!c)return;let S=s("end")??a.find(u=>u!==c&&/^(end|ends|until|to|finish|finished|harvested|through)$/i.test(u)),g=p.find(u=>lt.test(u)&&_e(e,n,u)==="boolean");return{field:c,due:Ge.test(c),...S?{end:S}:{},...g?{done:g}:{}}}function ie(e,n){return Math.round((Date.parse(`${n.slice(0,10)}T00:00:00Z`)-Date.parse(`${e.slice(0,10)}T00:00:00Z`))/864e5)}var q=e=>typeof e=="string"&&/^\d{4}-\d{2}-\d{2}/.test(e)?e.slice(0,10):void 0;function je(e,n,o,p){let a=ne(e,n);if(a&&o.length>0&&o.length<=nt)return{shape:"board",field:a.field};let i=ae(e,n);if(i&&!i.due){let s=r=>{let y=q(r[i.field]),h=q(Z(r,i.field,p));return y&&h?ie(y,h):0},c=o.map(r=>({from:q(Z(r,i.field,p)),to:i.end&&q(r[i.end])?L(q(r[i.end]),s(r)):void 0})).filter(r=>r.from!==void 0).map(r=>({from:r.from,to:r.to&&r.to>r.from?r.to:r.from})),S=`${p.slice(0,7)}-01`,g=L(`${L(S,31).slice(0,7)}-01`,-1),u=c.filter(r=>r.from<=g&&r.to>=S),w=c.map(r=>ie(r.from,r.to)).sort((r,y)=>r-y),l=w[Math.floor(w.length/2)]??0;if(u.length>0&&l<=it){let r=L(p,-((new Date(`${p}T00:00:00Z`).getUTCDay()+6)%7)),y=L(r,6),h=u.every(m=>m.from>=r&&m.to<=y);return{shape:"calendar",start:i.field,...i.end?{end:i.end}:{},...i.done?{done:i.done}:{},range:h?"week":"month"}}}return{shape:"table"}}function ze(e,n){let o=ae(e,n);return o?{by:o.field,direction:o.due?"asc":"desc"}:void 0}function He(e,n,o={}){switch(n.shape){case"board":return{lens:"columns",kind:e,column:n.field};case"calendar":return{lens:"calendar",kind:e,start:n.start,...n.end?{end:n.end}:{},...n.done?{done:n.done}:{},range:n.range};case"table":return{lens:"blocks",kind:e,as:"row",...o.group?.by?{group:o.group.by}:{},...o.sort?{sort:{by:o.sort.by,...o.sort.direction==="desc"?{direction:"desc"}:{}}}:{}}}}var pt=60;function We(e,n,o,p){let a=e.tryDefinition(n),i=o.slice(0,pt),s=new Map;i.forEach(w=>{let l=G(a,w);te(w,a,{glance:!0,said:[l]}).forEach((r,y)=>{if(r.long||r.files||r.app)return;let h=s.get(r.key);h?h.count++:s.set(r.key,{label:r.label,count:1,at:y})})});let c=Math.max(1,Math.ceil(i.length/3)),S=[...s.entries()].filter(([,w])=>w.count>=c).sort((w,l)=>w[1].at-l[1].at).slice(0,at).map(([w,l])=>({about:"field",key:w,label:l.label})),g=new Map;for(let w of i){let l=new Set;for(let[r,y]of[["out",p.outEdges(w.id)],["in",p.inEdges(w.id)]])for(let h of y){let m=p.getNode(r==="out"?h.to:h.from);if(!m||m.id===w.id)continue;let b=`${h.kind}|${r}`;if(l.has(b))continue;l.add(b);let A=g.get(b);A?A.count++:g.set(b,{edge:h.kind,direction:r,far:m.kind,count:1})}}let u=[...g.entries()].sort((w,l)=>l[1].count-w[1].count).slice(0,ot).map(([w,l])=>{let r=me(e,l.direction==="out"?n:l.far,l.edge,l.direction);return{about:"edge",key:w,label:r.charAt(0).toUpperCase()+r.slice(1),edge:l.edge,direction:l.direction}});return[...S,...u]}function Ze(e,n,o,p){if(o.about==="field"){let s=e.tryDefinition(n.kind);return{text:te(n,s,{excerpt:!0}).find(S=>S.key===o.key)?.value??""}}let i=(o.direction==="out"?p.outEdges(n.id):p.inEdges(n.id)).filter(s=>s.kind===o.edge).map(s=>p.getNode(o.direction==="out"?s.to:s.from)).filter(s=>s!==void 0).map(s=>G(e.tryDefinition(s.kind),s));return i.length===0?{text:""}:i.length===1?{text:i[0]}:{text:`${i[0]} +${i.length-1}`,title:i.join(", ")}}function Ue(e,n,o=()=>{}){let p=new Map;for(let a of e){let i=a.nodeIds.filter(c=>n.has(c));if(i.length===0&&!(a.subjectId!==void 0&&n.has(a.subjectId)))continue;let s=p.get(a.invariant)??{invariant:a.invariant,label:o(a.invariant)||a.label||a.message,violations:[],records:new Set};s.violations.push(a);for(let c of i)s.records.add(c);a.subjectId!==void 0&&n.has(a.subjectId)&&s.records.add(a.subjectId),p.set(a.invariant,s)}return[...p.values()].sort((a,i)=>i.violations.length-a.violations.length).map(a=>({invariant:a.invariant,label:a.label,violations:a.violations,records:[...a.records]}))}var Ye=6;function Je(e,n,o,p){let a=ae(e,n);if(!a)return;let i=ne(e,n),s=g=>{if(a.done!==void 0&&g[a.done]===!0)return!0;if(!i)return!1;let u=i.values.indexOf(String(g[i.field]));return u>=0&&i.tiers[u]==="done"},c=0,S=0;for(let g of o){let u=q(Z(g,a.field,p));if(!u||s(g))continue;let w=ie(p,u);a.due&&w<0?c++:w>=0&&w<=Ye&&S++}if(!(c===0&&S===0))return{field:a.field,due:a.due,overdue:c,soon:S}}function L(e,n){return new Date(Date.parse(`${e.slice(0,10)}T00:00:00Z`)+n*864e5).toISOString().slice(0,10)}function oe(e,n,o){return n==="overdue"?[{key:e.field,value:`before:${o}`}]:[{key:e.field,value:`after:${L(o,-1)}`},{key:e.field,value:`before:${L(o,Ye+1)}`}]}function Qe(e,n,o,p){let a=new Set,i=new Set;for(let s of e)if(!(s.at<=o))for(let c of s.primitives)c.op==="add-node"&&c.node?.kind===n?a.add(c.node.id):c.op==="patch-node"&&c.id!==void 0&&p(c.id)===n&&i.add(c.id);for(let s of a)i.delete(s);return{added:[...a].filter(s=>p(s)===n).length,changed:[...i].filter(s=>p(s)===n).length}}var t=Q(we(),1),Xe="as",ct=(e,n)=>`graview:kind-seen:${e}:${n}`;function gt(e){try{return localStorage.getItem(e)}catch{return null}}function ut(e,n){try{localStorage.setItem(e,n)}catch{}}var ft=(e,n)=>({...ge(fe(e,!1),n),relation:null});function Jt({kind:e,members:n,flagged:o=[],label:p,retired:a=0}){let{store:i,brand:s,principal:c,views:S,view:g}=V(),{go:u}=Y(),w=X(),l=i.schema,r=l.tryDefinition(e),y=p??pe(l,e),h=i.today()??se(),m=n,b=(0,f.useId)(),A=(0,f.useMemo)(()=>je(l,e,m,h),[l,e,m,h]),x=g.within?.[Xe]==="table"?{shape:"table"}:A,k=Te(g),C=x.shape==="table"&&!k.sort?ze(l,e):void 0,v=C?{...k,sort:C}:k,R=(0,f.useMemo)(()=>new Set(o),[o]),T=(0,f.useMemo)(()=>$e(m,v,{schema:l,graph:i.graph,flagged:R,today:h}),[m,v,l,i,R,h,w]),I=(0,f.useMemo)(()=>De(l,Re(l,e)),[l,e]),M=S.arrangement?.()?.lists?.[e]?.filters,K=$=>u(Oe(g,$)),B=(0,f.useMemo)(()=>({name:s?.name??"app",schema:l,...i.policy?{policy:i.policy}:{}}),[s,l,i]),H=JSON.stringify(He(e,x,v)),P=(0,f.useMemo)(()=>{let $=Ae(JSON.parse(H),{app:B,sight:Ne(B,c)});return Se($)?void 0:$},[H,B,c]),W=x.shape!=="table"&&P!==void 0;return(0,t.jsxs)("section",{"aria-labelledby":b,className:"graview-kind-stop","data-testid":"kind-stop","data-graview-kind-stop":e,"data-graview-shape":x.shape,children:[(0,t.jsx)("style",{children:St}),(0,t.jsx)(wt,{kind:e,plural:y,count:m.length,headingId:b,description:r?.description}),(0,t.jsx)(ht,{kind:e,plural:y,members:m,today:h,arrangement:v,onArrange:K}),(m.length>1||a>0)&&!W?(0,t.jsx)(Pe,{schema:l,graph:i.graph,kind:e,arrangement:v,onChange:K,offers:I,...M?{filters:M}:{},kept:{shown:T.nodes.length,of:m.length},testId:"kind-arrange",chips:{nodes:m,flagged:R,today:h},...a>0?{past:{count:a,widen:()=>u(Ee(g,!0))}}:{}}):null,m.length>0?(0,t.jsx)(yt,{derived:A,shape:x,draft:P}):null,(0,t.jsx)("div",{className:"graview-kind-stop-body","data-testid":"kind-stop-body",children:m.length===0?(0,t.jsx)("p",{className:"graview-kind-stop-empty","data-testid":"kind-stop-empty",children:"Nothing here yet."}):W?(0,t.jsx)(kt,{draft:P,nodes:m}):T.nodes.length===0?(0,t.jsxs)("p",{className:"graview-kind-stop-empty","data-testid":"kind-stop-none-kept",children:["None of the ",D(m.length)," ",y.toLowerCase()," ",v.query?`says \u201C${v.query}\u201D`:"is kept by these filters","."," ",(0,t.jsx)("button",{type:"button",className:"graview-kind-stop-link",onClick:()=>K({}),children:"Show them all"})]}):(0,t.jsx)(xt,{kind:e,nodes:T.nodes,groups:T.grouped?T.groups.map($=>({key:$.key,label:$.label,nodes:$.nodes})):void 0,flagged:R,plural:y,arrangement:v})})]})}function wt({kind:e,plural:n,count:o,headingId:p,description:a}){let{store:i,setSelection:s,setMenuAt:c}=V(),S=(0,f.useMemo)(()=>({about:[U(e)]}),[e]),{affordances:g}=Me(S),{apply:u,preview:w}=Le(),l=(0,f.useMemo)(()=>{let x=k=>i.allMutations().find(C=>C.name===k.mutation)?.creates?.includes(e)??!1;return g.find(k=>!k.destructive&&!k.setsAside&&x(k))},[g,i,e]),[r,y]=(0,f.useState)(!1),[h,m]=(0,f.useState)(null),b=(0,f.useRef)(null),A=(0,f.useRef)(null);(0,f.useEffect)(()=>{let x=A.current;!x||x.closest('[data-testid="kind-stop"]')?.contains(document.activeElement)||x.focus({preventScroll:!0})},[e]);let O=(x,k)=>{try{w(x,k),u(x,k),m(null),y(!1),requestAnimationFrame(()=>b.current?.focus())}catch(C){return m(be(i.schema,i.allMutations(),C)),[]}};return(0,t.jsxs)("header",{className:"graview-kind-stop-head",children:[(0,t.jsxs)("div",{className:"graview-kind-stop-title",children:[(0,t.jsx)("h2",{id:p,ref:A,tabIndex:-1,"data-testid":"kind-stop-title",children:n}),(0,t.jsxs)("p",{"data-testid":"kind-stop-count",children:[le(i.schema,e,o),a?` \xB7 ${a}`:""]})]}),(0,t.jsxs)("div",{className:"graview-kind-stop-acts",children:[l?(0,t.jsx)("button",{ref:b,type:"button",className:"graview-kind-stop-primary","data-testid":"kind-stop-primary","data-affordance":l.id,"aria-expanded":l.open.length>0?r:void 0,onClick:()=>{m(null),l.open.length===0?O(l):y(x=>!x)},children:l.label}):null,(0,t.jsx)("button",{type:"button",className:"graview-kind-stop-quiet","data-testid":"kind-stop-acts","aria-haspopup":"menu","aria-label":`What can be done with the ${n.toLowerCase()}`,onClick:x=>{let k=x.currentTarget.getBoundingClientRect();s([U(e)]),c({x:Math.round(k.left),y:Math.round(k.bottom+4),on:U(e)})},children:"Acts\u2026"})]}),r&&l?(0,t.jsx)("div",{className:"graview-kind-stop-ask","data-testid":"kind-stop-ask","aria-label":l.label,role:"group",children:(0,t.jsx)(xe,{affordance:l,onApply:x=>O(l,x),onCancel:()=>{y(!1),b.current?.focus()}})}):null,h?(0,t.jsx)("p",{role:"alert",className:"graview-kind-stop-failed","data-testid":"kind-stop-failed",children:h}):null]})}var vt=J.part((e,n)=>(0,t.jsx)(e.ProblemRows,{...n}),{what:"The problems",as:"li"});function ht({kind:e,plural:n,members:o,today:p,arrangement:a,onArrange:i}){let{store:s,brand:c,setSelection:S}=V(),g=s.schema,u=ee(),w=(0,f.useMemo)(()=>new Set(o.map(v=>v.id)),[o]),l=(0,f.useMemo)(()=>Ue(u,w,v=>s.allInvariants().find(R=>R.name===v)?.label),[u,w,s]),r=(0,f.useMemo)(()=>Je(g,e,o,p),[g,e,o,p]),y=ct(Ce(c,g),e),[h]=(0,f.useState)(()=>gt(y));(0,f.useEffect)(()=>()=>ut(y,new Date().toISOString()),[y]);let m=X(),b=(0,f.useMemo)(()=>h?Qe(s.log.all(),e,h,v=>s.graph.getNode(v)?.kind):null,[h,s,e,m]),[A,O]=(0,f.useState)(null),x=v=>i({...a,filter:[...(a.filter??[]).filter(R=>!v?.some(T=>T.key===R.key)),...v??[]]}),k=l.reduce((v,R)=>v+R.violations.length,0),C=[];if(r&&(r.overdue>0||r.soon>0)){let v=r.field;C.push((0,t.jsxs)("li",{"data-testid":"kind-stop-dates",children:[r.overdue>0?(0,t.jsxs)("button",{type:"button",className:"graview-kind-stop-fact","data-tone":"warn",onClick:()=>x(oe(r,"overdue",p)),"aria-label":`${D(r.overdue)} overdue \u2014 show only these`,children:[D(r.overdue)," overdue"]}):null,r.soon>0?(0,t.jsxs)("button",{type:"button",className:"graview-kind-stop-fact",onClick:()=>x(oe(r,"soon",p)),"aria-label":`${D(r.soon)} in the next 7 days \u2014 show only these`,children:[D(r.soon)," ",r.due?"due":""," in the next 7 days"]}):null,(0,t.jsxs)("span",{className:"graview-kind-stop-quiet-text",children:[" by ",ce(g.tryDefinition(e),v).toLowerCase()]})]},"dates"))}if(l.length>0&&C.push((0,t.jsxs)("li",{"data-testid":"kind-stop-problems","data-graview-problems":k,children:[(0,t.jsxs)("span",{className:"graview-kind-stop-warn",children:[(0,t.jsx)("span",{"aria-hidden":"true",children:"\u26A0 "}),k===1?"1 problem":`${D(k)} problems`]}),(0,t.jsxs)("span",{className:"graview-kind-stop-quiet-text",children:[" in ",n.toLowerCase(),":"]}),(0,t.jsx)("ul",{className:"graview-kind-stop-rules",children:l.map(v=>(0,t.jsx)(mt,{group:v,open:A===v.invariant,onToggle:()=>O(R=>R===v.invariant?null:v.invariant),onPick:R=>S([R])},v.invariant))}),(0,t.jsxs)("button",{type:"button",className:"graview-kind-stop-link","data-testid":"kind-stop-only-problems",onClick:()=>x([{key:"is",value:"flagged"}]),children:["Show only the ",n.toLowerCase()," with a problem"]})]},"problems")),b&&(b.added>0||b.changed>0)){let v=[b.added>0?`${D(b.added)} added`:"",b.changed>0?`${D(b.changed)} changed`:""].filter(Boolean);C.push((0,t.jsxs)("li",{"data-testid":"kind-stop-since",children:[(0,t.jsxs)("span",{className:"graview-kind-stop-quiet-text",children:["Since you last looked (",de(h.slice(0,10)),"):"]})," ",v.join(", ")]},"since"))}return C.length===0?null:(0,t.jsx)("ul",{className:"graview-kind-stop-going-on","aria-label":`What is going on in the ${n.toLowerCase()}`,"data-testid":"kind-stop-going-on",children:C})}function mt({group:e,open:n,onToggle:o,onPick:p}){let a=(0,f.useId)();return(0,t.jsxs)("li",{"data-graview-rule":e.invariant,children:[(0,t.jsxs)("button",{type:"button",className:"graview-kind-stop-rule","aria-expanded":n,"aria-controls":a,onClick:o,onPointerEnter:J.prefetch,onFocus:J.prefetch,children:[(0,t.jsx)("span",{"aria-hidden":"true",className:"graview-kind-stop-chevron","data-open":n||void 0,children:"\u203A"}),e.label," ",(0,t.jsxs)("span",{className:"graview-kind-stop-quiet-text",children:["\xB7 ",D(e.violations.length)]})]}),n?(0,t.jsx)("ol",{id:a,className:"graview-kind-stop-problem-rows","data-testid":"kind-stop-problem-rows",children:(0,t.jsx)(f.Suspense,{fallback:null,children:(0,t.jsx)(vt,{violations:e.violations,pick:i=>{let s=i.subjectId??e.records[0]??i.nodeIds[0];s!==void 0&&p(s)}})})}):null]})}var bt={board:"Board",calendar:"Calendar",table:"Table"};function yt({derived:e,shape:n,draft:o}){let{view:p}=V(),{go:a}=Y(),{keep:i}=qe(Be()),[s,c]=(0,f.useState)(!1),S=e.shape==="table"?[]:[e.shape,"table"];return(0,t.jsxs)("div",{className:"graview-kind-stop-shape","data-testid":"kind-stop-shape",children:[S.length>0?(0,t.jsx)("span",{role:"group","aria-label":"Show as",className:"graview-kind-stop-switch",children:S.map(g=>(0,t.jsx)("button",{type:"button","aria-pressed":n.shape===g,"data-testid":`kind-stop-as-${g}`,onClick:()=>a(ue(p,Xe,g===e.shape?null:g)),children:bt[g]},g))}):null,(0,t.jsx)("span",{className:"graview-kind-stop-quiet-text","data-testid":"kind-stop-derived",children:o?`${o.said.replace(/\.$/,"")}, derived from the declaration`:"Derived from the declaration"}),o?(0,t.jsx)("button",{type:"button",className:"graview-kind-stop-link","data-testid":"kind-stop-keep",disabled:s,title:`Keep \u201C${o.title}\u201D as a lens: a place of its own`,onClick:()=>{c(!0),i(o).finally(()=>c(!1))},children:"Keep as a lens"}):null]})}function kt({draft:e,nodes:n}){let o=Ve(e.drawn);return(0,t.jsx)("div",{className:"graview-kind-stop-lens","data-graview-draft":e.lens.name,children:(0,t.jsx)(ve,{mode:"scene",children:(0,t.jsx)(ke,{kind:e.kind,view:e.title,children:(0,t.jsx)(o,{nodes:n,label:e.title,fidelity:"full",cardinality:"many",mode:"fullscreen",selected:!1})})})})}function xt({kind:e,nodes:n,groups:o,flagged:p,plural:a,arrangement:i}){let{store:s,views:c,view:S,selection:g,setSelection:u,setMenuAt:w,principal:l}=V(),{go:r}=Y(),y=s.schema,h=s.graph,m=(0,f.useMemo)(()=>(o?o.flatMap(d=>d.nodes):n).map(d=>d.id),[n,o]),b=Ie(m),A=(0,f.useMemo)(()=>s.permittedMutations(l).some(d=>{let N=d.subject?.kinds;return N!==void 0&&(N==="*"||N.includes(e))}),[s,l,e]),O=(0,f.useRef)(null),x=d=>{b.choose(d),requestAnimationFrame(()=>{let N=b.list.current;((d[0]===void 0?null:N?.querySelector(`[data-graview-choose-box="${CSS.escape(d[0])}"]`))??N)?.focus({preventScroll:!0})})},k=b.chosen.length,C=c.lookup(e,{cardinality:"one",fidelity:"glyph"}),v=C!==void 0&&!he(C)?C:void 0,R=d=>g.includes(d),T=ee(),I=(0,f.useMemo)(()=>We(y,e,n,h),[y,e,n,h]),[M,K]=(0,f.useState)(z);(0,f.useEffect)(()=>K(z),[i.query,i.filter?.length,i.sort?.by,i.group?.by]);let B=y.tryDefinition(e),H=d=>T.filter(N=>N.nodeIds.includes(d)||N.subjectId===d).map(N=>N.message),P=i.sort?.by,W=`${a}${i.sort?`, in order of ${I.find(d=>d.key===P)?.label.toLowerCase()??P}`:""}`,$=M,et=d=>{let N=G(B,d),F=p.has(d.id)?H(d.id):[];return(0,t.jsxs)("tr",{"data-graview-pick":d.id,tabIndex:-1,"data-graview-record":d.id,"data-flagged":F.length>0||void 0,...A?{"data-graview-choose":d.id}:{},children:[A?(0,t.jsx)("td",{className:"graview-choose-at",children:(0,t.jsx)("input",{...b.boxProps(d.id,N),onPointerEnter:j,onFocus:j})}):null,(0,t.jsxs)("th",{scope:"row",className:"graview-kind-stop-name",children:[v?(0,t.jsx)("div",{"data-graview-pick":d.id,className:"graview-kind-stop-own-row",children:(0,t.jsx)(v,{node:d,cardinality:"one",fidelity:"glyph",mode:"scene",selected:R(d.id),...F.length>0?{flagged:[d.id]}:{}})}):(0,t.jsx)("button",{type:"button","data-testid":"kind-stop-row-go",title:`Go to ${N}`,onClick:()=>r(ft(S,d.id)),children:N}),F.length>0?(0,t.jsxs)("span",{className:"graview-kind-stop-flag",title:F.join(" \xB7 "),children:[(0,t.jsx)("span",{"aria-hidden":"true",children:"\u26A0"}),(0,t.jsx)("span",{className:"graview-kind-stop-hidden",children:`Problem: ${F.join(". ")}`})]}):null]}),I.map(_=>{let E=Ze(y,d,_,h);return(0,t.jsx)("td",{"data-label":_.label,"data-short":E.text.length>0&&E.text.length<=14||void 0,"data-empty":E.text?void 0:"",...E.title?{title:E.title}:{},children:E.text?(0,t.jsx)("span",{children:E.text}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("b",{"aria-hidden":"true",children:"\u2014"}),(0,t.jsx)("i",{className:"graview-kind-stop-hidden",children:"none"})]})},_.key)}),(0,t.jsx)("td",{className:"graview-kind-stop-row-acts",children:(0,t.jsx)("button",{type:"button","data-testid":"kind-stop-row-acts","aria-haspopup":"menu","aria-label":`What can be done with ${N}`,onClick:_=>{let E=_.currentTarget.getBoundingClientRect();u([d.id]),w({x:Math.round(E.left),y:Math.round(E.bottom+4),on:d.id})},children:(0,t.jsx)("span",{"aria-hidden":"true",children:"\u22EF"})})})]},d.id)},re=d=>{let N=d.slice(0,Math.max(0,$));return $-=N.length,N.map(et)};return(0,t.jsxs)("div",{className:"graview-kind-stop-table-at",...A?{...b.listProps,ref:d=>{O.current=d,b.list.current=d},tabIndex:-1,role:"group","aria-label":k>0?`${a}, ${k} chosen`:a,"data-graview-choosable":""}:{},children:[A?(0,t.jsx)("style",{children:Ke}):null,(0,t.jsxs)("table",{className:"graview-kind-stop-table","data-testid":"kind-stop-table",children:[(0,t.jsx)("caption",{className:"graview-kind-stop-hidden",children:W}),(0,t.jsx)("thead",{children:(0,t.jsxs)("tr",{children:[A?(0,t.jsx)("td",{className:"graview-choose-at graview-choose-all",children:(0,t.jsx)("input",{type:"checkbox",className:"graview-choose-box","data-testid":"kind-stop-choose-all","aria-label":`Choose all ${D(n.length)} ${a.toLowerCase()}`,checked:k>0&&k===n.length,ref:d=>{d&&(d.indeterminate=k>0&&k<n.length)},onPointerEnter:j,onFocus:j,onChange:()=>k===n.length?b.clear():b.choose(m)})}):null,(0,t.jsx)("th",{scope:"col","aria-sort":P==="label"?i.sort?.direction==="desc"?"descending":"ascending":void 0,children:"Name"}),I.map(d=>(0,t.jsx)("th",{scope:"col","aria-sort":d.about==="field"&&d.key===P?i.sort?.direction==="desc"?"descending":"ascending":void 0,children:d.label},d.key)),(0,t.jsx)("th",{scope:"col",children:(0,t.jsx)("span",{className:"graview-kind-stop-hidden",children:"Acts"})})]})}),o?o.map(d=>$<=0?null:(0,t.jsxs)("tbody",{"data-graview-group":d.key,children:[(0,t.jsx)("tr",{className:"graview-kind-stop-group",children:(0,t.jsxs)("th",{scope:"rowgroup",colSpan:I.length+(A?3:2),children:[d.label," ",(0,t.jsxs)("span",{className:"graview-kind-stop-quiet-text",children:["\xB7 ",D(d.nodes.length)]})]})}),re(d.nodes)]},d.key||"-")):(0,t.jsx)("tbody",{children:re(n)})]}),A?(0,t.jsx)(Fe,{store:s,chosen:b.chosen,principal:l,anchor:()=>O.current?.closest('[data-testid="kind-stop"]')??null,of:m.length,onChooseAll:()=>b.choose(m),onClear:b.clear,onActed:x}):null,n.length>M?(0,t.jsxs)("p",{className:"graview-kind-stop-more",children:[(0,t.jsxs)("span",{className:"graview-kind-stop-quiet-text","data-testid":"kind-stop-shown",children:[D(M)," of ",D(n.length)," shown"]})," ",(0,t.jsxs)("button",{type:"button",className:"graview-kind-stop-link","data-testid":"kind-stop-more",onClick:()=>K(d=>d+z),children:["Show ",D(Math.min(z,n.length-M))," more"]})]}):null]})}var St=`
|
|
2
|
+
.graview-kind-stop{container-type:inline-size;box-sizing:border-box;height:100%;min-height:0;display:flex;flex-direction:column;gap:10px;padding:16px 18px 12px;border:1px solid var(--graview-edge);border-radius:var(--graview-radius,12px);background:var(--graview-panel);color:var(--graview-ink);box-shadow:var(--graview-lift-low);overflow:auto;overscroll-behavior:contain}
|
|
3
|
+
[data-graview-map-panel] .graview-kind-stop{height:auto;padding:4px 6px 12px;border:0;box-shadow:none;background:none;overflow:visible}
|
|
4
|
+
.graview-kind-stop :focus-visible{outline:2px solid var(--graview-accent);outline-offset:2px}
|
|
5
|
+
.graview-kind-stop button{font:inherit;cursor:pointer}
|
|
6
|
+
.graview-kind-stop :is(.graview-kind-stop-link,.graview-kind-stop-rule,.graview-kind-stop-name button,.graview-kind-stop-row-acts button,.graview-kind-stop-fact,.graview-kind-stop-switch button){box-shadow:none}
|
|
7
|
+
.graview-kind-stop-head{display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px 16px}
|
|
8
|
+
.graview-kind-stop-title{flex:1 1 16rem;min-width:0}
|
|
9
|
+
.graview-kind-stop-title h2{margin:0;outline-offset:2px;font-size:var(--graview-text-heading);line-height:1.3;overflow-wrap:anywhere}
|
|
10
|
+
.graview-kind-stop-title p{margin:2px 0 0;font-size:.875rem;color:var(--graview-ink-muted);overflow-wrap:anywhere}
|
|
11
|
+
.graview-kind-stop-acts{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
|
|
12
|
+
.graview-kind-stop-primary,.graview-kind-stop-quiet{min-height:32px;padding:0 14px;border-radius:8px;font-size:.875rem}
|
|
13
|
+
.graview-kind-stop-primary{border:1px solid var(--graview-accent);background:var(--graview-accent);color:var(--graview-accent-ink);font-weight:600}
|
|
14
|
+
.graview-kind-stop-quiet{border:1px solid var(--graview-edge);background:transparent;color:var(--graview-ink)}
|
|
15
|
+
.graview-kind-stop-ask{flex:1 1 100%;min-width:0;padding:10px 12px;border:1px solid var(--graview-edge);border-radius:10px}
|
|
16
|
+
.graview-kind-stop-failed{flex:1 1 100%;margin:0;font-size:var(--graview-text-small);color:var(--graview-warn)}
|
|
17
|
+
.graview-kind-stop-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
|
|
18
|
+
.graview-kind-stop-going-on{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:.875rem}
|
|
19
|
+
.graview-kind-stop-going-on>li{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;min-width:0}
|
|
20
|
+
.graview-kind-stop-fact{min-height:28px;padding:0 10px;border:1px solid var(--graview-edge);border-radius:999px;background:transparent;color:var(--graview-ink)}
|
|
21
|
+
.graview-kind-stop-fact[data-tone=warn],.graview-kind-stop-warn{color:var(--graview-warn);font-weight:600}
|
|
22
|
+
.graview-kind-stop-quiet-text{color:var(--graview-ink-muted)}
|
|
23
|
+
.graview-kind-stop-rules{list-style:none;margin:0;padding:0;flex:1 1 100%;display:grid;gap:2px}
|
|
24
|
+
.graview-kind-stop-rule{display:inline-flex;align-items:center;gap:6px;min-height:28px;max-width:100%;padding:0 6px;border:1px solid transparent;border-radius:7px;background:none;color:var(--graview-ink);text-align:left;overflow-wrap:anywhere}
|
|
25
|
+
.graview-kind-stop-rule:hover{border-color:var(--graview-edge)}
|
|
26
|
+
.graview-kind-stop-chevron{display:inline-block;width:.8em}
|
|
27
|
+
.graview-kind-stop-chevron[data-open]{transform:rotate(90deg)}
|
|
28
|
+
.graview-kind-stop-problem-rows{list-style:none;margin:2px 0 6px 18px;padding:0;max-width:44rem}
|
|
29
|
+
.graview-kind-stop-link{min-height:28px;padding:0 4px;border:0;background:none;color:var(--graview-accent);text-decoration:underline;text-underline-offset:2px}
|
|
30
|
+
.graview-kind-stop-link:disabled{opacity:.6;cursor:default}
|
|
31
|
+
.graview-kind-stop-shape{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:var(--graview-text-small)}
|
|
32
|
+
.graview-kind-stop-switch{display:inline-flex;border:1px solid var(--graview-edge);border-radius:8px;overflow:hidden}
|
|
33
|
+
.graview-kind-stop-switch button{min-height:28px;padding:0 12px;border:0;background:transparent;color:var(--graview-ink-muted)}
|
|
34
|
+
.graview-kind-stop-switch button+button{border-left:1px solid var(--graview-edge)}
|
|
35
|
+
.graview-kind-stop-switch button[aria-pressed=true]{background:color-mix(in srgb,var(--graview-accent) 16%,transparent);color:var(--graview-ink);font-weight:600}
|
|
36
|
+
.graview-kind-stop-body{flex:1 0 auto;min-width:0}
|
|
37
|
+
.graview-kind-stop-empty{margin:24px 0;color:var(--graview-ink-muted)}
|
|
38
|
+
.graview-kind-stop-lens{min-width:0}
|
|
39
|
+
|
|
40
|
+
.graview-kind-stop-table-at{min-width:0}
|
|
41
|
+
.graview-kind-stop-table{width:100%;border-collapse:collapse;font-size:.875rem}
|
|
42
|
+
.graview-kind-stop-table th,.graview-kind-stop-table td{padding:7px 8px;text-align:left;vertical-align:top;border-top:1px solid var(--graview-edge);overflow-wrap:break-word}
|
|
43
|
+
.graview-kind-stop-table td{color:var(--graview-ink)}
|
|
44
|
+
.graview-kind-stop-table td>span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
|
|
45
|
+
.graview-kind-stop-table td[data-short]{white-space:nowrap;font-variant-numeric:tabular-nums}
|
|
46
|
+
.graview-kind-stop-table thead th{border-top:0;font-size:var(--graview-text-small);font-weight:600;letter-spacing:.04em;color:var(--graview-ink-muted)}
|
|
47
|
+
.graview-kind-stop-name{font-weight:500;min-width:8rem;max-width:22rem}
|
|
48
|
+
.graview-kind-stop-name button{display:inline-block;min-width:24px;min-height:24px;padding:0;border:0;background:none;color:var(--graview-ink);font-weight:500;text-align:left;text-decoration:underline;text-decoration-color:var(--graview-edge);text-underline-offset:3px}
|
|
49
|
+
.graview-kind-stop-name button:hover{text-decoration-color:currentColor}
|
|
50
|
+
.graview-kind-stop-own-row{display:inline-block;max-width:100%;cursor:pointer}
|
|
51
|
+
.graview-kind-stop-flag{margin-left:6px;color:var(--graview-warn)}
|
|
52
|
+
.graview-kind-stop-group th{padding-top:12px;font-weight:600;color:var(--graview-ink)}
|
|
53
|
+
.graview-kind-stop-row-acts{width:1%;white-space:nowrap;text-align:right}
|
|
54
|
+
.graview-kind-stop-row-acts button{min-width:32px;min-height:28px;border:1px solid var(--graview-edge-bright,var(--graview-edge));border-radius:7px;background:none;color:var(--graview-ink);font-size:1.125rem;font-weight:700;line-height:1}
|
|
55
|
+
.graview-kind-stop-row-acts button:hover{background:color-mix(in srgb,var(--graview-ink) 8%,transparent)}
|
|
56
|
+
.graview-kind-stop-table td[data-empty] b{font-weight:400;color:var(--graview-ink-faint)}
|
|
57
|
+
.graview-kind-stop-table tr[data-graview-pick]{cursor:default}
|
|
58
|
+
.graview-kind-stop-more{margin:10px 0 0;font-size:.875rem}
|
|
59
|
+
.graview-kind-stop-table-at[data-graview-choosable]{outline:none}
|
|
60
|
+
[data-graview-choosable]:hover .graview-choose-all .graview-choose-box{opacity:1}
|
|
61
|
+
.graview-kind-stop-table .graview-choose-at{width:1%;padding-right:0;vertical-align:middle}
|
|
62
|
+
@container (max-width: 559px){
|
|
63
|
+
.graview-kind-stop{padding:12px}
|
|
64
|
+
.graview-kind-stop-acts{flex:1 1 100%}
|
|
65
|
+
.graview-kind-stop-primary{flex:1 1 auto}
|
|
66
|
+
.graview-kind-stop-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
|
|
67
|
+
.graview-kind-stop-table,.graview-kind-stop-table tbody,.graview-kind-stop-table tr{display:block}
|
|
68
|
+
.graview-kind-stop-table tr{position:relative;padding:8px 40px 8px 0;border-top:1px solid var(--graview-edge)}
|
|
69
|
+
.graview-kind-stop-table th,.graview-kind-stop-table td{display:block;padding:1px 0;border:0}
|
|
70
|
+
.graview-kind-stop-table td>span{display:inline}
|
|
71
|
+
.graview-kind-stop-table td[data-short]{white-space:normal}
|
|
72
|
+
.graview-kind-stop-table td[data-label]::before{content:attr(data-label) " \xB7 ";color:var(--graview-ink-muted)}
|
|
73
|
+
.graview-kind-stop-row-acts{position:absolute;top:6px;right:0;width:auto}
|
|
74
|
+
.graview-kind-stop-table [data-graview-choose]{padding-left:34px}
|
|
75
|
+
.graview-kind-stop-table td.graview-choose-at{position:absolute;left:0;top:8px;width:auto;padding:0}
|
|
76
|
+
.graview-kind-stop-table thead .graview-choose-at{position:static}
|
|
77
|
+
}
|
|
78
|
+
@media (pointer: coarse){
|
|
79
|
+
.graview-kind-stop-table-at:not([data-graview-choosing]) .graview-choose-at{display:none}
|
|
80
|
+
.graview-kind-stop-table-at:not([data-graview-choosing]) [data-graview-choose]{padding-left:0}
|
|
81
|
+
}
|
|
82
|
+
@media (pointer: coarse){
|
|
83
|
+
.graview-kind-stop-primary,.graview-kind-stop-quiet,.graview-kind-stop-fact,.graview-kind-stop-rule,.graview-kind-stop-link,.graview-kind-stop-switch button,.graview-kind-stop-row-acts button{min-height:44px}
|
|
84
|
+
.graview-kind-stop-row-acts button{min-width:44px}
|
|
85
|
+
.graview-kind-stop-name button{min-height:44px}
|
|
86
|
+
}
|
|
87
|
+
@media (prefers-reduced-motion: reduce){.graview-kind-stop *{transition:none!important;animation:none!important}}
|
|
88
|
+
`;export{Jt as KindStop};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as y,b as h}from"./chunk.
|
|
1
|
+
import{a as y,b as h}from"./chunk.SGB6IMWN.js";import"./chunk.NPX7SPXM.js";import"./chunk.OE4QOBJF.js";import"./chunk.74RMHUCX.js";import{Ac as b}from"./chunk.WLPTY4BF.js";import"./chunk.AJZBJBMO.js";var k=(d,i)=>({id:i.id,said:h(d,i),when:i.when,...i.alsoMine?{alsoMine:!0}:{}});async function A(d,i,t){let a=b(t.principal);if(a.id===void 0)return{ok:!1,error:"This seat acts for nobody the app knows by id, so there is nobody to tell. Nothing was kept."};let r=t.store.seenBy(a),p=async()=>(await t.subscriptions.list(a.id)).filter(n=>n.app===t.app);if(d==="list_subscriptions")return{ok:!0,data:{subscriptions:(await p()).map(n=>k(r,n))}};if(d==="unsubscribe"){let n=String(i.id??"");return(await p()).some(g=>g.id===n)?(await t.subscriptions.remove(n),{ok:!0,data:{removed:n}}):{ok:!1,error:`No subscription "${n}" of yours. list_subscriptions says which there are.`}}let o=String(i.on??""),c=n=>typeof i[n]=="string"&&i[n].trim()!==""?i[n].trim():void 0,e=c("record");if(e!==void 0&&!r.graph.getNode(e)){let n=t.store.resolveRef({name:"record",kinds:["*"]},e,a);if(!n.ok)return{ok:!1,error:`${n.message} Nothing was kept.`};e=n.id}let s=c("kind")??(e!==void 0&&o!=="act"?r.graph.getNode(e)?.kind:void 0),f=c("act"),m=c("condition"),u=o==="act"?{on:o,...f!==void 0?{act:f}:{},...e!==void 0?{record:e}:{}}:o==="created"&&s!==void 0?{on:o,kind:s}:o==="changed"?{on:o,...s!==void 0&&e===void 0?{kind:s}:{},...e!==void 0?{record:e}:{}}:o==="reaches"&&s!==void 0?{on:o,kind:s,condition:m??"",...e!==void 0?{record:e}:{}}:void 0;if(!u)return{ok:!1,error:'Say what to be told of: on is "act", "created", "changed" or "reaches", with a kind (or a record) for all but act. Nothing was kept.'};let l=y({schema:r.schema,allMutations:()=>t.store.allMutations(),graph:r.graph},u);if(l)return{ok:!1,error:`${l} Nothing was kept.`};let S=await t.subscriptions.add({who:a,app:t.app,when:u,...i.alsoMine===!0?{alsoMine:!0}:{}});return{ok:!0,data:{subscription:k(r,S)}}}export{A as runSubscriptionTool};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{D as l,K as p,R as k,S as y,c}from"./chunk.WG5NIR23.js";import"./chunk.3ZRHHB7X.js";import"./chunk.UGFDSE37.js";import{b as m}from"./chunk.ZYCNEOAQ.js";import"./chunk.4DEUD66C.js";import"./chunk.LHO7L3CS.js";import"./chunk.YG423NEB.js";import"./chunk.VNBR4DHD.js";import"./chunk.Z3ZKYSPN.js";import"./chunk.6ONRWFA6.js";import"./chunk.AFY35RJP.js";import"./chunk.POHEWJKZ.js";import"./chunk.ROGYDMES.js";import"./chunk.6IHXTT6Z.js";import"./chunk.YXH3IWNR.js";import"./chunk.OEF3GPRM.js";import"./chunk.BRHRAVU2.js";import"./chunk.VTWFVPKD.js";import"./chunk.ZRQI5VJF.js";import"./chunk.33GN2NUT.js";import"./chunk.2VIGF4FO.js";import"./chunk.MB7LKKUD.js";import"./chunk.WVUJXDXZ.js";import"./chunk.2EJAIT33.js";import"./chunk.EUGWV3S6.js";import"./chunk.6XJP7F3I.js";import"./chunk.NPX7SPXM.js";import"./chunk.OE4QOBJF.js";import"./chunk.74RMHUCX.js";import"./chunk.GZHZLJBF.js";import"./chunk.I3SQJ2L2.js";import"./chunk.OJGHDWI6.js";import"./chunk.FUJM7GDV.js";import"./chunk.MWZK3HVG.js";import"./chunk.3D5T3XIE.js";import"./chunk.GR5Q4HTW.js";import"./chunk.QT4XGC5Z.js";import{H as S,I as s,J as d,S as f,aa as g}from"./chunk.MQ7FNHXG.js";import"./chunk.WLPTY4BF.js";import{b as n}from"./chunk.AJZBJBMO.js";var u=n(S(),1);var t=n(f(),1);function D({context:a}){let r=l(),h=g(),[w]=(0,u.useState)(()=>s(null)),o=d(h?.seatTalk??w),P=()=>{(window.history.state?.idx??0)>0?r(-1):r("/")};return(0,t.jsxs)(k,{context:a,"data-testid":"draft-page",children:[(0,t.jsx)(y,{context:a,...o.draft?{"data-testid":"draft-title"}:{},children:o.draft?o.draft.title:"Nothing drawn"}),o.draft?(0,t.jsx)(m,{page:!0,go:e=>r(e.address),onPick:e=>{let i=a.store.graph.getNode(e);i&&r(c(a.store.schema,i.kind,e))},onDiscard:P}):(0,t.jsxs)("p",{style:{margin:0,color:"var(--graview-ink-muted)"},children:["Ask for a way of seeing \u2014 \u201Ca board of tasks by status\u201D \u2014 and it is drawn here."," ",(0,t.jsx)(p,{to:"/",style:{color:"var(--graview-accent)"},children:"Home \u2192"})]})]})}export{D as DraftPage};
|