graview 0.1.62 → 0.1.64
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/index.d.ts +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/preview/chunk.2D7K2IJQ.js +4 -0
- package/dist/preview/{chunk.UFDJXQQQ.js → chunk.2DH42I7L.js} +6 -6
- package/dist/preview/chunk.2E62YCMZ.js +1 -0
- package/dist/preview/{chunk.GX4G4BX3.js → chunk.2G5WLG3Z.js} +1 -1
- package/dist/preview/chunk.2HV5FF6O.js +1 -0
- package/dist/preview/{chunk.LGRLVJGS.js → chunk.2JDAUKSN.js} +3 -3
- package/dist/preview/{chunk.ZN3PUM2I.js → chunk.2JEN2RCB.js} +1 -1
- package/dist/preview/{chunk.66P5IDTH.js → chunk.2TCOLAL2.js} +1 -1
- package/dist/preview/{chunk.OWOOKLIU.js → chunk.2V7QTIAV.js} +1 -1
- package/dist/preview/{chunk.IQ3PRWGO.js → chunk.2VIS2NAT.js} +2 -2
- package/dist/preview/{chunk.UQQKDBIH.js → chunk.2VYGDY5Z.js} +1 -1
- package/dist/preview/{chunk.WEOVK2T4.js → chunk.37I45R6V.js} +1 -1
- package/dist/preview/chunk.3FKKH2XU.js +74 -0
- package/dist/preview/chunk.3J7XLJP2.js +1 -0
- package/dist/preview/chunk.3OEODIHB.js +1 -0
- package/dist/preview/{chunk.WPXPVD33.js → chunk.3RD4JHVG.js} +1 -1
- package/dist/preview/{chunk.CHHYIMB7.js → chunk.3RUV4HE4.js} +1 -1
- package/dist/preview/chunk.3SAESG6X.js +1 -0
- package/dist/preview/{chunk.4HEFUOLV.js → chunk.47N2G7A5.js} +1 -1
- package/dist/preview/{chunk.A3ZC2JBO.js → chunk.4DZOAB4D.js} +1 -1
- package/dist/preview/chunk.4HTB6TX2.js +1 -0
- package/dist/preview/chunk.4Q5PCMGZ.js +18 -0
- package/dist/preview/{chunk.DPEIT3TW.js → chunk.4U45EY5M.js} +1 -1
- package/dist/preview/{chunk.2B6P4GPS.js → chunk.4VRX7FCO.js} +1 -1
- package/dist/preview/{chunk.JT3MFPRD.js → chunk.4XCYZRZ3.js} +1 -1
- package/dist/preview/chunk.52MBXPEK.js +1 -0
- package/dist/preview/chunk.5AD2QHWH.js +3 -0
- package/dist/preview/{chunk.MDEX6ZVE.js → chunk.5B7NG6WH.js} +1 -1
- package/dist/preview/chunk.5HJ2GTKZ.js +1 -0
- package/dist/preview/chunk.5IEZF433.js +2 -0
- package/dist/preview/{chunk.QGU5QTR6.js → chunk.5PPCK7QT.js} +1 -1
- package/dist/preview/chunk.6NRWLCIZ.js +5 -0
- package/dist/preview/chunk.75JQCTR6.js +1 -0
- package/dist/preview/{chunk.KMV6PJFL.js → chunk.77JI5T4F.js} +1 -1
- package/dist/preview/chunk.77MLXWZV.js +35 -0
- package/dist/preview/chunk.7AOEZJRM.js +1 -0
- package/dist/preview/{chunk.QIPASE42.js → chunk.7CLKGKSF.js} +1 -1
- package/dist/preview/{chunk.BZMQDEIY.js → chunk.7SRSE5IS.js} +1 -1
- package/dist/preview/{chunk.2GEJNG2U.js → chunk.7VAHHEDX.js} +1 -1
- package/dist/preview/{chunk.VJBBVLGZ.js → chunk.7ZG77OI3.js} +1 -1
- package/dist/preview/chunk.7ZHH7WBN.js +1 -0
- package/dist/preview/chunk.AJEK3I5X.js +6 -0
- package/dist/preview/chunk.APRWUIE3.js +1 -0
- package/dist/preview/{chunk.QHY5NVYH.js → chunk.APUQIELA.js} +1 -1
- package/dist/preview/{chunk.Y4FZKUOK.js → chunk.ATHLE33D.js} +1 -1
- package/dist/preview/chunk.B2YTHEX5.js +1 -0
- package/dist/preview/{chunk.ELOFPE25.js → chunk.B6JR7EQO.js} +1 -1
- package/dist/preview/{chunk.5ODHHH35.js → chunk.BN42H3C6.js} +1 -1
- package/dist/preview/{chunk.DD2NKFDX.js → chunk.BVIJXL4J.js} +1 -1
- package/dist/preview/{chunk.5HGD6OWL.js → chunk.CC7P435K.js} +2 -2
- package/dist/preview/{chunk.IQMD7DG3.js → chunk.CJHYGRWV.js} +1 -1
- package/dist/preview/chunk.CM65MCHA.js +1 -0
- package/dist/preview/{chunk.MYNMBOLD.js → chunk.D2XLECMP.js} +1 -1
- package/dist/preview/chunk.DJIF7IAQ.js +2 -0
- package/dist/preview/{chunk.G4ULQK64.js → chunk.DLWFULWE.js} +1 -1
- package/dist/preview/{chunk.QDWSU47A.js → chunk.DMENNIHT.js} +1 -1
- package/dist/preview/{chunk.L3WTKQQL.js → chunk.DN7UCBOA.js} +1 -1
- package/dist/preview/{chunk.22BZU7ME.js → chunk.DQAMVVE6.js} +1 -1
- package/dist/preview/chunk.DUP2CGVH.js +1 -0
- package/dist/preview/{chunk.TM4EPUNO.js → chunk.DYRULRFX.js} +1 -1
- package/dist/preview/{chunk.AFNSAQEQ.js → chunk.E4TXLT25.js} +1 -1
- package/dist/preview/{chunk.DDUCIUVW.js → chunk.F6BNFLQM.js} +1 -1
- package/dist/preview/chunk.FN34P4IS.js +1 -0
- package/dist/preview/{chunk.AJSUHPBE.js → chunk.FUPYIOXZ.js} +1 -1
- package/dist/preview/{chunk.7KVUUEZA.js → chunk.FXRYMT3U.js} +1 -1
- package/dist/preview/{chunk.DEAP3H2L.js → chunk.G5BVZLCM.js} +1 -1
- package/dist/preview/{chunk.Y2YYH3JN.js → chunk.G7YLK4PX.js} +1 -1
- package/dist/preview/chunk.GF62K25C.js +1 -0
- package/dist/preview/chunk.GFQPO3NC.js +1 -0
- package/dist/preview/{chunk.5STU3KYG.js → chunk.GH5UBSQI.js} +1 -1
- package/dist/preview/chunk.GHHKRFPD.js +1 -0
- package/dist/preview/{chunk.THVC2BEC.js → chunk.GP5DAA4P.js} +1 -1
- package/dist/preview/{chunk.VN23AGIY.js → chunk.HPG6CNKM.js} +1 -1
- package/dist/preview/chunk.HSJEOM3W.js +1 -0
- package/dist/preview/{chunk.H5S7OL2U.js → chunk.HZPRMHSL.js} +1 -1
- package/dist/preview/chunk.IQGSEAQ2.js +5 -0
- package/dist/preview/{chunk.PCDUV3WP.js → chunk.ITBG37WJ.js} +1 -1
- package/dist/preview/{chunk.SVPKUWZU.js → chunk.JHUCKEJS.js} +1 -1
- package/dist/preview/{chunk.H7N7WN4U.js → chunk.JOM6MFVE.js} +1 -1
- package/dist/preview/{chunk.DNVWSWL2.js → chunk.JS2UZYGB.js} +1 -1
- package/dist/preview/{chunk.7XLS6XTY.js → chunk.K2PXP5H6.js} +1 -1
- package/dist/preview/{chunk.6AKW7TXM.js → chunk.K54ISAXN.js} +1 -1
- package/dist/preview/{chunk.3FON2Y72.js → chunk.K5YFUMRS.js} +1 -1
- package/dist/preview/chunk.KHXRJLLU.js +50 -0
- package/dist/preview/chunk.KMIFSPGQ.js +1 -0
- package/dist/preview/chunk.L4V5VLSM.js +1 -0
- package/dist/preview/{chunk.T6WHGKWR.js → chunk.LDMBJC3B.js} +1 -1
- package/dist/preview/{chunk.PLTH2LW5.js → chunk.LTOQ22ZJ.js} +1 -1
- package/dist/preview/{chunk.UVA7AALY.js → chunk.M5VHUIDB.js} +1 -1
- package/dist/preview/chunk.N643PVQA.js +1 -0
- package/dist/preview/{chunk.FULEUL34.js → chunk.NGRL3QOI.js} +1 -1
- package/dist/preview/{chunk.OFWNMTGB.js → chunk.NRPBTV6O.js} +2 -2
- package/dist/preview/{chunk.N6EJXXQK.js → chunk.O7HHNQK4.js} +2 -2
- package/dist/preview/{chunk.5YAOKOGV.js → chunk.OW3M4OBN.js} +1 -1
- package/dist/preview/{chunk.2N4Z5K5S.js → chunk.OXFDB5BB.js} +1 -1
- package/dist/preview/{chunk.4TX6VCBT.js → chunk.P4TAX3HE.js} +1 -1
- package/dist/preview/{chunk.RYRQ66JN.js → chunk.P6FNJR6E.js} +1 -1
- package/dist/preview/chunk.PR74PGLC.js +1 -0
- package/dist/preview/{chunk.F7YXLYLX.js → chunk.PVDDSBRG.js} +1 -1
- package/dist/preview/{chunk.OUDATENL.js → chunk.QROPDEJF.js} +1 -1
- package/dist/preview/{chunk.I77ZGIFE.js → chunk.QRT6BZR6.js} +1 -1
- package/dist/preview/{chunk.OWT3VVOT.js → chunk.R5MLRKAO.js} +2 -2
- package/dist/preview/chunk.RDA35HZB.js +2 -0
- package/dist/preview/{chunk.ROZTJ6IY.js → chunk.REXU6ARY.js} +1 -1
- package/dist/preview/chunk.S6QZBWCJ.js +1 -0
- package/dist/preview/{chunk.MAKODQO3.js → chunk.S7SHWDPR.js} +1 -1
- package/dist/preview/{chunk.SWMDFXUX.js → chunk.SADHOSRC.js} +1 -1
- package/dist/preview/chunk.SJHUC4TL.js +1 -0
- package/dist/preview/chunk.SL5FXE3R.js +1 -0
- package/dist/preview/{chunk.X6KYRBL6.js → chunk.T4JP6BGP.js} +1 -1
- package/dist/preview/{chunk.TIALD6SC.js → chunk.T4TRJDBF.js} +1 -1
- package/dist/preview/{chunk.M4AYA2PL.js → chunk.TA2JTUNX.js} +1 -1
- package/dist/preview/{chunk.EVBCEEQ4.js → chunk.TMHVYI5R.js} +1 -1
- package/dist/preview/chunk.TOLW64EO.js +1 -0
- package/dist/preview/chunk.TP3PZRHE.js +1 -0
- package/dist/preview/{chunk.PZQNR4KZ.js → chunk.TQ2G4AM4.js} +1 -1
- package/dist/preview/{chunk.5J3O2FVG.js → chunk.TUR2DA2M.js} +1 -1
- package/dist/preview/{chunk.B23WZQXQ.js → chunk.TYIBLD2D.js} +1 -1
- package/dist/preview/{chunk.DC35FJAB.js → chunk.UD2GGG7L.js} +1 -1
- package/dist/preview/chunk.UDU545CL.js +1 -0
- package/dist/preview/{chunk.RPDH32XV.js → chunk.UDYFGYJP.js} +1 -1
- package/dist/preview/{chunk.SEHRPTNA.js → chunk.UJNLT3L6.js} +1 -1
- package/dist/preview/chunk.UN2IAA5R.js +1 -0
- package/dist/preview/chunk.VLX7YWVH.js +25 -0
- package/dist/preview/{chunk.T3UQ7ZQK.js → chunk.VT4YBFZL.js} +1 -1
- package/dist/preview/{chunk.ELTV44HU.js → chunk.VZAF3452.js} +2 -2
- package/dist/preview/{chunk.O2BHPYA4.js → chunk.WFCE7NLK.js} +2 -2
- package/dist/preview/{chunk.CY3ELWCM.js → chunk.WHX47OJM.js} +1 -1
- package/dist/preview/{chunk.NUWDMH47.js → chunk.WMARJ5E3.js} +1 -1
- package/dist/preview/chunk.WPQP54FM.js +1 -0
- package/dist/preview/{chunk.6JO5HQDR.js → chunk.WX23K7ZU.js} +1 -1
- package/dist/preview/{chunk.W4BKYSZX.js → chunk.X36BYTEG.js} +1 -1
- package/dist/preview/{chunk.AQRB7LDA.js → chunk.XCLW4GP7.js} +1 -1
- package/dist/preview/{chunk.DDO3GLEJ.js → chunk.XEG7ZDRG.js} +1 -1
- package/dist/preview/{chunk.ILIIBSGA.js → chunk.XIVELWAM.js} +1 -1
- package/dist/preview/{chunk.75GVFX7L.js → chunk.XJWKIXPV.js} +1 -1
- package/dist/preview/{chunk.O75HWF3F.js → chunk.XQ5RTPEF.js} +1 -1
- package/dist/preview/{chunk.NOGGSLVG.js → chunk.YEXFVDRA.js} +1 -1
- package/dist/preview/{chunk.UXMPFPFH.js → chunk.YIZPW7IK.js} +2 -2
- package/dist/preview/chunk.YLOGIJOH.js +1 -0
- package/dist/preview/chunk.YMXWS4XN.js +3 -0
- package/dist/preview/{chunk.Z2TDZSMN.js → chunk.YSBTE3PX.js} +1 -1
- package/dist/preview/{chunk.RD2X25XB.js → chunk.Z26T5E76.js} +1 -1
- package/dist/preview/{chunk.A3OL2BI2.js → chunk.Z4XGEV34.js} +1 -1
- package/dist/preview/chunk.ZA5TDCBC.js +1 -0
- package/dist/preview/chunk.ZNDVJGTY.js +1 -0
- package/dist/preview/chunk.ZQGLPP7A.js +1 -0
- package/dist/preview/index.html +53 -52
- package/dist/preview/page.js +2 -2
- package/dist/preview/splash.js +7 -6
- package/package.json +6 -6
- package/dist/preview/chunk.2AT3GRXM.js +0 -1
- package/dist/preview/chunk.4HRYB7HF.js +0 -1
- package/dist/preview/chunk.5MZYCELA.js +0 -6
- package/dist/preview/chunk.7M4HNKDR.js +0 -1
- package/dist/preview/chunk.7OBIBPYH.js +0 -1
- package/dist/preview/chunk.7V56P2A7.js +0 -1
- package/dist/preview/chunk.7YOAW7ED.js +0 -1
- package/dist/preview/chunk.ACTXR2MI.js +0 -3
- package/dist/preview/chunk.AI34V6WV.js +0 -74
- package/dist/preview/chunk.BLUKSGI4.js +0 -1
- package/dist/preview/chunk.CAKFNKN5.js +0 -1
- package/dist/preview/chunk.CGALLZ54.js +0 -1
- package/dist/preview/chunk.DHJ3FQTR.js +0 -1
- package/dist/preview/chunk.DZZL5IDD.js +0 -5
- package/dist/preview/chunk.H24OC6OE.js +0 -1
- package/dist/preview/chunk.H73ZPYUX.js +0 -1
- package/dist/preview/chunk.HANJZ6FA.js +0 -1
- package/dist/preview/chunk.HIMQ65QT.js +0 -1
- package/dist/preview/chunk.IQPILSV3.js +0 -18
- package/dist/preview/chunk.IYBEXENQ.js +0 -1
- package/dist/preview/chunk.J7Q2WAF4.js +0 -28
- package/dist/preview/chunk.JYFZCJ4N.js +0 -2
- package/dist/preview/chunk.KDXU5DT3.js +0 -1
- package/dist/preview/chunk.KL7E4YHJ.js +0 -1
- package/dist/preview/chunk.LAYQ5PFS.js +0 -1
- package/dist/preview/chunk.LTZUF5VG.js +0 -1
- package/dist/preview/chunk.M7RESZB6.js +0 -25
- package/dist/preview/chunk.MGALQLRW.js +0 -1
- package/dist/preview/chunk.NAD7ZXYP.js +0 -1
- package/dist/preview/chunk.NHTGAP3G.js +0 -3
- package/dist/preview/chunk.NUYA4BWI.js +0 -1
- package/dist/preview/chunk.OKZT2QBM.js +0 -2
- package/dist/preview/chunk.OUPURRDE.js +0 -1
- package/dist/preview/chunk.PD2DECOP.js +0 -1
- package/dist/preview/chunk.PKWQKFPE.js +0 -2
- package/dist/preview/chunk.RMR24LFJ.js +0 -4
- package/dist/preview/chunk.RRKI24WY.js +0 -1
- package/dist/preview/chunk.SGCW2XRC.js +0 -1
- package/dist/preview/chunk.SS7234R6.js +0 -1
- package/dist/preview/chunk.TKUNRFDE.js +0 -1
- package/dist/preview/chunk.U6ZRJKVM.js +0 -1
- package/dist/preview/chunk.UKQUUPKE.js +0 -1
- package/dist/preview/chunk.VACKSKGJ.js +0 -1
- package/dist/preview/chunk.VC3V7HLL.js +0 -1
- package/dist/preview/chunk.VIH5AX7S.js +0 -5
- package/dist/preview/chunk.WKI5INH7.js +0 -1
- package/dist/preview/chunk.Y4S7CDRB.js +0 -1
- package/dist/preview/chunk.YP2QSPXU.js +0 -50
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import{a as Ee,b as Re,c as Le,d as we,e as U,f as ue,g as pe,h as fe}from"./chunk.WPQP54FM.js";import{c as j,e as ce}from"./chunk.OXFDB5BB.js";import{a as ge}from"./chunk.F6BNFLQM.js";import{G as H,V as z,da as le,fa as de}from"./chunk.VLX7YWVH.js";import"./chunk.SDO3U72B.js";import{Z as q,la as ae,oa as se,qd as _}from"./chunk.IQGSEAQ2.js";import"./chunk.FQLNBIQ5.js";import{b as C}from"./chunk.AJZBJBMO.js";var b=C(H(),1);var I=C(H(),1),Ae=(e,t)=>`graview:last-visit:${t??"anyone"}:${e.join(",")}`;function Oe(e,t,o){let n=new Set;for(let r of e)if(!(r.author.id!==void 0&&r.author.id===o)&&Date.parse(r.at)>t)for(let i of r.writes)n.add(i);return n}function ye(e,t,o){let n=Ae(t,o?.id),[r]=(0,I.useState)(()=>{try{let i=globalThis.localStorage?.getItem(n);return i?Number(i):null}catch{return null}});return(0,I.useEffect)(()=>{let i=()=>{if(document.visibilityState==="hidden")try{globalThis.localStorage?.setItem(n,String(Date.now()))}catch{}};return document.addEventListener("visibilitychange",i),window.addEventListener("pagehide",i),()=>{document.removeEventListener("visibilitychange",i),window.removeEventListener("pagehide",i)}},[n]),(0,I.useMemo)(()=>r===null?new Set:Oe(e,r,o?.id),[e,r,o?.id])}function me(e,t,o){let n=new Set;if(o===void 0)return n;n.add(o);for(let r of[...e.out(o),...e.in(o)])n.add(r.id);for(let r of t)if(r.author.id===o)for(let i of r.primitives)i.op==="add-node"&&n.add(i.node.id);return n}var J=C(H(),1);var v=C(z(),1),Ce=`.graview-workflows{position:absolute;left:0;top:0;pointer-events:none;z-index:${_.plots};opacity:var(--graview-altitude);transition:opacity 640ms cubic-bezier(.33,0,.2,1)}
|
|
2
|
+
.graview-workflow-wire{fill:none;stroke:var(--graview-accent);stroke-width:1.5;stroke-opacity:.7;stroke-linecap:round}
|
|
3
|
+
.graview-workflow-wire[data-wire=reads]{stroke-dasharray:3 4;stroke-opacity:.55}
|
|
4
|
+
.graview-workflow-spot{fill:var(--graview-accent);stroke:var(--graview-panel);stroke-width:1.5}
|
|
5
|
+
.graview-workflow{position:absolute;transform:translate(10px,-50%);max-width:16rem;padding:.25rem .5rem;border-radius:.375rem;background:var(--graview-panel);color:var(--graview-ink);border:1px solid color-mix(in oklab,var(--graview-accent) 45%,transparent);font-size:.75rem;line-height:1.25;box-shadow:0 1px 2px color-mix(in oklab,var(--graview-ink) 12%,transparent)}
|
|
6
|
+
.graview-workflow-title{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
7
|
+
.graview-workflow-last{display:block;color:var(--graview-ink-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
8
|
+
.graview-workflows [data-graview-workflow-status=paused]{opacity:.45}`,Fe=(e,t)=>{let o=n=>n.map(r=>se(t,r).toLowerCase()).join(", ");return[e.reads.length>0?`reads ${o(e.reads)}`:"",e.writes.length>0?`writes ${o(e.writes)}`:""].filter(Boolean).join("; ")};function We({frame:e,width:t,height:o,pan:n,app:r,workflows:i,acts:c,runs:y,graphVersion:k,hiddenKinds:h}){let u=(0,J.useMemo)(()=>ue(r,i,c),[r,i,c]),d=e.city,M=new Map;for(let s of e.nodes)s.plot&&Math.round(s.plane)===2&&!h.has(s.kind)&&M.set(s.kind,s.plot);let x=pe(u,M),S=(0,J.useMemo)(()=>new Map(u.map(s=>[s.name,y?fe(y.last(s.name)):void 0])),[u,y,k]);if(!d||x.length===0)return null;let a=d.cell,P=d.tilt??.5,O=d.originX+n.x,G=d.originY+n.y,N=(s,p)=>{let m=j(s,p,a,P);return{x:O+m.x,y:G+m.y}},F=new Map(u.map(s=>[s.name,s]));return(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)("style",{children:Ce}),(0,v.jsxs)("div",{className:"graview-workflows","data-graview-workflows":x.length,style:{width:t,height:o},children:[(0,v.jsx)("svg",{"aria-hidden":"true",width:t,height:o,style:{position:"absolute",left:0,top:0,overflow:"visible"},children:x.map(s=>{let p=F.get(s.name),m=N(s.col,s.row),W=[...p.writes.map(f=>[f,"writes"]),...p.reads.filter(f=>!p.writes.includes(f)).map(f=>[f,"reads"])];return(0,v.jsxs)("g",{"data-graview-workflow-status":p.status,children:[W.map(([f,L])=>{let $=M.get(f);if(!$)return null;let E=N($.col+$.side/2,$.row+$.side/2);return(0,v.jsx)("path",{className:"graview-workflow-wire","data-wire":L,"data-graview-workflow-wire":`${s.name}:${f}`,d:`M${m.x.toFixed(1)} ${m.y.toFixed(1)}L${E.x.toFixed(1)} ${E.y.toFixed(1)}`},f)}),(0,v.jsx)("circle",{className:"graview-workflow-spot",cx:m.x.toFixed(1),cy:m.y.toFixed(1),r:4})]},s.name)})}),x.map(s=>{let p=F.get(s.name),m=N(s.col,s.row),W=p.status==="paused",f=S.get(s.name),L=[W?"Paused":"",f??""].filter(Boolean).join(" \xB7 "),$=Fe(p,r.schema);return(0,v.jsxs)("div",{className:"graview-workflow",role:"group","aria-label":`Workflow: ${p.title}${W?", paused":""}. ${$?`${$.replace(/^./,E=>E.toUpperCase())}.`:""}${f?` ${f}.`:""}`,"data-graview-workflow":s.name,"data-graview-workflow-status":p.status,"data-graview-workflow-beside":s.beside,style:{left:m.x,top:m.y},children:[(0,v.jsx)("span",{className:"graview-workflow-title",children:p.title}),L?(0,v.jsx)("span",{className:"graview-workflow-last",children:L}):null]},s.name)})]})]})}var w=C(z(),1);function Be(e,t,o={x:0,y:0}){let n=(r,i)=>{let c=j(r,i,t.cell,t.tilt);return{x:t.originX+o.x+c.x,y:t.originY+o.y+c.y}};return[n(e.col,e.row),n(e.col+e.side,e.row),n(e.col+e.side,e.row+e.side),n(e.col,e.row+e.side)]}var X=e=>e.map(t=>`${t.x.toFixed(1)},${t.y.toFixed(1)}`).join(" ");function tt({frame:e,width:t,height:o,pan:n,pinned:r,close:i,today:c,swallowed:y,chosen:k=[],onFocus:h}){let{selection:u,store:d,scheme:M,principal:x}=le(),S=de(),a=(0,b.useMemo)(()=>d.log.all(),[d,S]),P=ye(a,d.schema.kinds,x),O=(0,b.useMemo)(()=>me(d.graph,a,x?.id),[d,a,x?.id]),G=ge(),N=e.city,F=e.nodes.filter(g=>g.plot!==void 0&&Math.round(g.plane)===2),s=N?.cell??0,p=N?.tilt??.5,m=(0,b.useRef)(h);m.current=h;let W=(0,b.useCallback)(g=>!m.current||y?.current?!1:(m.current(g),!0),[y]),f=(0,b.useRef)(new Map),L=(0,b.useRef)({nodes:void 0,names:new Map});L.current.nodes!==S&&(L.current={nodes:S,names:new Map});let $=L.current.names,E=new Map;for(let g of F){let D=g.aggregate?.memberIds??[],R=ce(d.schema,g.kind),ee=l=>R?d.graph.getNode(l)?.[R.field]:void 0,Y=D.filter(l=>k.includes(l)),te=`${s}|${p}|${g.plot.col},${g.plot.row},${g.plot.side}|${Y.join(",")}|${D.map(l=>`${l}=${String(ee(l))}`).join(",")}`,V=f.current.get(g.id);if(V&&V.key===te){E.set(g.id,V);continue}let ne={cell:s,originX:0,originY:0,tilt:p},oe={x:0,y:0},$e=d.schema.tryDefinition(g.kind),Se=l=>{let A=$.get(l);if(A!==void 0)return A;let T=d.graph.getNode(l),ie=T?ae($e,T):l;return $.set(l,ie),ie},B=R?R.values.map(()=>[]):[[]],K=R?[...R.tiers]:["waiting"];for(let l of Y.length>0?[...Y,...D.filter(A=>!Y.includes(A))]:D){let A=R?R.values.indexOf(ee(l)):0;A>=0?B[A].push(l):(B.length===K.length&&(B.push([]),K.push("waiting")),B[B.length-1].push(l))}let{blocks:Pe,rests:Me}=U(g.plot,B,K.map(l=>we[l])),Ne=Be(g.plot,ne,oe),re=R?_e(d.schema,g.kind):void 0;E.set(g.id,{key:te,tile:X(Ne),rests:Me.map(l=>({count:l.count,rows:l.rows,at:j(l.col,l.row,s,p)})),buildings:Pe.map(l=>{let T=(re?d.graph.getNode(l.id):void 0)?.[re];return{id:l.id,tier:K[l.lane],overdue:typeof T=="string"&&K[l.lane]!=="done"&&T.slice(0,10)<(c??new Date().toISOString().slice(0,10)),name:Se(l.id),width:l.footprint*s,...ze(l,ne,oe)}})})}if(f.current=E,!N)return null;let ve={position:"absolute",left:0,top:0,pointerEvents:"none",overflow:"visible"},he=u.join(`
|
|
9
|
+
`),ke=G.join(`
|
|
10
|
+
`),xe=P?[...P].join(`
|
|
11
|
+
`):"",be=O?[...O].join(`
|
|
12
|
+
`):"";return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)("style",{children:Xe(M)}),(0,w.jsx)("svg",{className:"graview-plots","aria-hidden":"true","data-graview-world":"",width:t,height:o,style:ve,"data-graview-plots":F.length,"data-graview-named":i?"":void 0,children:(0,w.jsx)("g",{transform:`translate(${(N.originX+n.x).toFixed(1)} ${(N.originY+n.y).toFixed(1)})`,children:F.map(g=>(0,w.jsx)(Ye,{id:g.id,drawing:E.get(g.id),pinned:r?.has(g.id)??!1,chosenKey:he,flaggedKey:ke,recentKey:xe,ownKey:be,named:i??!1,press:W},g.id))})})]})}var je=34,Z=6,Ie=9,Ke=3,Q=2;function Te(e,t){return t||e.name.length*Z<=e.width*1.6?e.name:`${e.name.slice(0,Math.max(1,Math.floor(e.width*1.6/Z)-1))}\u2026`}function De(e,t){let o=new Map,n=[],r=e.filter(i=>t.has(i.id));for(let i of[...r,...e.filter(c=>!t.has(c.id))]){let c=t.has(i.id);if(!c&&i.width<je)continue;let y=Te(i,c),k=y.length*Z/2+Q,h=i.top.y-3,u={left:i.top.x-k,right:i.top.x+k,top:h-Ie-Q,bottom:h+Ke+Q};n.some(d=>d.left<u.right&&u.left<d.right&&d.top<u.bottom&&u.top<d.bottom)||(n.push(u),o.set(i.id,y))}return o}var Ye=(0,b.memo)(function({id:t,drawing:o,pinned:n,chosenKey:r,flaggedKey:i,recentKey:c,ownKey:y,named:k,press:h}){let u=new Set(r.split(`
|
|
13
|
+
`)),d=new Set(i.split(`
|
|
14
|
+
`)),M=new Set(c.split(`
|
|
15
|
+
`)),x=new Set(y.split(`
|
|
16
|
+
`)),S=(0,b.useMemo)(()=>k?De(o.buildings,u):null,[k,o,r]);return(0,w.jsxs)("g",{className:"graview-plot","data-graview-plot":t,"data-graview-pinned":n?"":void 0,children:[(0,w.jsx)("polygon",{className:"graview-plot-tile",points:o.tile,onClick:a=>{h(t)&&a.stopPropagation()}}),o.buildings.length>0?(0,w.jsxs)("g",{className:"graview-village","data-graview-village":o.buildings.length,"data-graview-rest":o.rests.reduce((a,P)=>a+P.count,0)||void 0,children:[o.buildings.map(a=>(0,w.jsxs)("g",{className:"graview-building","data-graview-building":a.id,"data-graview-tier":a.tier,"data-graview-flagged":d.has(a.id)||a.overdue?"":void 0,"data-graview-overdue":a.overdue?"":void 0,"data-graview-recent":M.has(a.id)?"":void 0,"data-graview-own":x.has(a.id)?"":void 0,"data-graview-selected":u.has(a.id)?"":void 0,children:[(0,w.jsx)("polygon",{className:"graview-iso-left",points:a.left}),(0,w.jsx)("polygon",{className:"graview-iso-right",points:a.right}),(0,w.jsx)("polygon",{className:"graview-iso-roof",points:a.roof}),S?.has(a.id)?(0,w.jsx)("text",{className:"graview-building-name",x:a.top.x,y:a.top.y-3,textAnchor:"middle",children:S.get(a.id)}):null]},a.id)),o.rests.map((a,P)=>(0,w.jsxs)("text",{className:"graview-village-rest",x:a.at.x-3,y:a.at.y+4,textAnchor:"end",children:[(0,w.jsx)("title",{children:`${q(a.count)} more ${a.rows>1?`in ${a.rows} rows`:"in this row"} than the plot has room to show`}),"+",q(a.count)]},P))]}):null]})});function _e(e,t){return Object.keys(e.tryDefinition(t)?.fields.shape??{}).find(o=>/^(due|deadline|due[-_ ]?(on|date|at|by))$/i.test(o))}function ze(e,t,o){let n=e.footprint/2,r=(S,a,P=0)=>{let O=j(S,a,t.cell,t.tilt);return{x:t.originX+o.x+O.x,y:t.originY+o.y+O.y-P}},i=Math.min(1,t.tilt??.5),c=e.footprint*t.cell*.5*e.height*(Math.sqrt(1-i*i)/Math.sqrt(.75)),y=r(e.col-n,e.row-n,c),k=r(e.col+n,e.row-n,c),h=r(e.col+n,e.row+n,c),u=r(e.col-n,e.row+n,c),d=r(e.col+n,e.row+n),M=r(e.col-n,e.row+n),x=r(e.col+n,e.row-n);return{roof:X([y,k,h,u]),left:X([u,h,d,M]),right:X([h,k,x,d]),top:y}}function nt(e,t,o){let n=e.x-t.originX-o.x,r=e.y-t.originY-o.y,i=t.tilt??.5;return{col:n/t.cell+r/(t.cell*i),row:r/(t.cell*i)-n/t.cell}}function Xe(e){let t=e==="light",o=(n,r="var(--graview-ink)")=>`color-mix(in oklab, ${r} ${n}, var(--graview-panel))`;return`.graview-plots{z-index:${_.plots};opacity:var(--graview-altitude);transition:opacity 640ms cubic-bezier(.33,0,.2,1)}
|
|
17
|
+
.graview-plot-tile{fill:color-mix(in oklab,var(--graview-ink) ${t?5:9}%,transparent);stroke:color-mix(in oklab,var(--graview-ink) ${t?22:30}%,transparent);stroke-linejoin:round;pointer-events:auto;cursor:pointer}
|
|
18
|
+
.graview-plot-tile:hover{fill:color-mix(in oklab,var(--graview-ink) ${t?10:16}%,transparent)}
|
|
19
|
+
.graview-plot[data-graview-pinned] .graview-plot-tile{stroke-dasharray:4 3}
|
|
20
|
+
.graview-village{pointer-events:none}
|
|
21
|
+
.graview-building{--s:${t?30:40}%}
|
|
22
|
+
.graview-building[data-graview-tier=active]{--s:${t?64:70}%}
|
|
23
|
+
.graview-building polygon{stroke:var(--graview-panel);stroke-width:.6;stroke-opacity:.6;fill:${o("var(--s)")}}
|
|
24
|
+
.graview-building .graview-iso-left{fill:${o(`calc(var(--s) + ${t?15:-10}%)`)}}
|
|
25
|
+
.graview-building .graview-iso-right{fill:${o(`calc(var(--s) + ${t?8:-16}%)`)}}
|
|
26
|
+
.graview-building[data-graview-tier=done] polygon{fill:${o(t?"13%":"18%")}}
|
|
27
|
+
.graview-building[data-graview-flagged] polygon{fill:var(--graview-warn);stroke:var(--graview-warn)}
|
|
28
|
+
.graview-building[data-graview-flagged] .graview-iso-left{fill:color-mix(in oklab,var(--graview-warn) 80%,var(--graview-ink))}
|
|
29
|
+
.graview-building[data-graview-recent]{filter:drop-shadow(0 0 2px color-mix(in oklab,var(--graview-accent) 70%,transparent))}
|
|
30
|
+
.graview-building[data-graview-own] .graview-iso-roof{stroke:var(--graview-ink);stroke-width:1.4;stroke-opacity:1}
|
|
31
|
+
.graview-building[data-graview-selected] polygon{stroke:var(--graview-accent);stroke-width:1.4;stroke-opacity:1}
|
|
32
|
+
.graview-building[data-graview-selected] .graview-iso-roof{fill:${o("45%","var(--graview-accent)")}}
|
|
33
|
+
.graview-building-name{font-size:.625rem;fill:var(--graview-ink);paint-order:stroke;stroke:var(--graview-ground);stroke-width:3px}
|
|
34
|
+
.graview-ground:has(> .graview-plots[data-graview-named]) [data-graview-plot] .graview-kind-landmark{opacity:.3;transition:opacity 240ms}
|
|
35
|
+
.graview-village-rest{font-size:.6875rem;font-variant-numeric:tabular-nums;fill:var(--graview-ink-muted)}`}export{tt as Plots,We as WorkflowsLayer,ze as buildingFaces,U as districtBlocks,Re as heightOf,De as namesWithRoom,Be as tileCorners,nt as toLattice,Ee as villageCap,Le as villageOf};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as Q,b as Z}from"./chunk.25VJPUDH.js";import{a as J}from"./chunk.APUQIELA.js";import{e as _,f as U,g as F,h as R,i as X,j,k as z}from"./chunk.S6QZBWCJ.js";import{b as K}from"./chunk.LTOQ22ZJ.js";import"./chunk.2TCOLAL2.js";import"./chunk.FUPYIOXZ.js";import"./chunk.3OEODIHB.js";import{a as B}from"./chunk.X36BYTEG.js";import"./chunk.75JQCTR6.js";import"./chunk.5IEZF433.js";import"./chunk.5AD2QHWH.js";import{k as $}from"./chunk.3FKKH2XU.js";import"./chunk.DLWFULWE.js";import{G as N,Ta as V,V as D,Xa as Y,da as A,fa as P,na as G}from"./chunk.VLX7YWVH.js";import"./chunk.SDO3U72B.js";import{Cc as M,db as q,xb as L}from"./chunk.IQGSEAQ2.js";import"./chunk.FQLNBIQ5.js";import{b as k}from"./chunk.AJZBJBMO.js";var r=k(N(),1);var te=k(N(),1),h=k(D(),1),ee={minWidth:0,overflowWrap:"anywhere"};function ne({suggestion:e,decides:n,heard:l}){let{store:u,principal:v}=A(),[s,a]=(0,te.useState)(null),S=e.items;if(S.length<2)return null;let x=(i,y)=>{a(null);try{R(u,e.id,{author:v,items:[i]}),l("Accepted that change; the rest still wait."),requestAnimationFrame(()=>{let g=document.querySelector(`[data-suggestion="${CSS.escape(e.id)}"]`);(g?.querySelectorAll('[data-testid="suggestion-item-accept"]')[y]??g?.querySelectorAll('[data-testid="suggestion-item-accept"]')[y-1]??g?.querySelector('[data-testid="suggestion-accept"]'))?.focus()})}catch(g){a(g instanceof Error?g.message:String(g))}};return(0,h.jsxs)("details",{"data-testid":"suggestion-items",style:{minWidth:0},children:[(0,h.jsx)("summary",{style:{cursor:"pointer",fontSize:"0.75rem",color:"var(--graview-ink-muted)"},children:`Show the ${S.length} changes`}),(0,h.jsx)("ol",{style:{margin:"6px 0 0",padding:0,listStyle:"none",display:"grid",gap:4,minWidth:0},children:S.map((i,y)=>(0,h.jsxs)("li",{"data-testid":"suggestion-item","data-item":i.at,style:{display:"flex",alignItems:"baseline",gap:6,minWidth:0,fontSize:"0.75rem"},children:[(0,h.jsx)("span",{style:{...ee,flex:"1 1 auto"},children:i.intent}),n?(0,h.jsx)("button",{type:"button","data-testid":"suggestion-item-accept","aria-label":`Accept: ${i.intent}`,onClick:()=>x(i.at,y),style:{minHeight:24,padding:"1px 8px",fontSize:"0.75rem",flex:"0 0 auto"},children:"Accept"}):null]},i.at))}),s?(0,h.jsx)("span",{"data-testid":"suggestion-item-refused",role:"alert",style:{...ee,display:"block",fontSize:"0.75rem",color:"var(--graview-warn)"},children:s}):null]})}var t=k(D(),1);function ie(e,n,l=0){let u=[e>0?`${e===1?"one suggestion":`${e} suggestions`} waiting`:"",e>0&&l>0?`${l===1?"a reader agrees":`${l} readers agree`} with one that waits`:"",n>0?`tidied ${n===1?"one thing":`${n} things`} while you were away`:""].filter(Boolean);return u.length>0?u.join(" \xB7 ").replace(/^./,v=>v.toUpperCase()):void 0}function be(){let{store:e,principal:n,dismissals:l,whileAway:u,app:v}=A(),s=P(),a=(0,r.useMemo)(()=>Z(l,v?.name??"app",n),[l,v?.name,n]),[S,x]=(0,r.useReducer)(d=>d+1,0);(0,r.useEffect)(()=>a.onChange?.(x),[a]),(0,r.useEffect)(()=>e.subscribe((d,o)=>o.some(w=>w.vote!==void 0)&&x()),[e]);let i=(0,r.useMemo)(()=>_(e,n,{dismissed:a.list()}),[e,n,s,a,S]),[y,g]=(0,r.useState)(""),m=Y("suggested"),C=G(),T=d=>e.graph.has(d)?o=>{m.setOpen(!1),C.record(o)}:null,b=u?.tidied??0,f=u?ie(i.length,b,u.agreed):void 0;if(i.length===0&&b===0)return null;let p=d=>{if(g(d),i.length>1){requestAnimationFrame(()=>document.querySelector('[data-testid="suggested"] [data-testid="suggestion-accept"]')?.focus());return}m.setOpen(!1),(document.querySelector('[data-testid="activity-button"]')??document.querySelector('[data-graview-app-bar] button:not([data-testid="suggested-button"])'))?.focus()};return(0,t.jsxs)("div",{style:{position:"relative"},children:[(0,t.jsxs)("button",{type:"button","data-testid":"suggested-button",...m.trigger,onClick:m.toggle,title:f??"What tidying suggests, waiting for you",...f?{"aria-label":`Suggested: ${f}`}:{},style:{display:"inline-flex",alignItems:"center",gap:6,minHeight:30,padding:"0 8px",borderRadius:8,border:"1px solid transparent",background:"transparent",boxShadow:"none",fontSize:"0.875rem",whiteSpace:"nowrap",color:"var(--graview-ink-muted)"},children:[i.length>0?i.length:`Tidied ${b}`,(0,t.jsxs)("svg",{className:"graview-activity-mark",width:"15",height:"15",viewBox:"0 0 16 16","aria-hidden":"true",focusable:"false",style:{display:"var(--graview-activity-mark, none)"},children:[(0,t.jsx)("path",{d:"M3 4.5 H13 M3 8 H10 M3 11.5 H8",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round"}),(0,t.jsx)("circle",{cx:"12.25",cy:"11.5",r:"1.6",fill:"none",stroke:"currentColor",strokeWidth:"1.3"})]}),i.length>0?(0,t.jsx)("span",{className:"graview-activity-word",children:" Suggested"}):null]}),m.open?(0,t.jsxs)("section",{...m.pane,"aria-label":"Suggested","data-testid":"suggested","data-graview-offstage":"",style:{...V,width:"min(320px, calc(100vw - 16px))",maxHeight:"min(52cqh, 460px)",overflowX:"hidden",overflowY:"auto",display:"flex",flexDirection:"column",gap:9,padding:12,borderRadius:10,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)"},children:[(0,t.jsx)("h2",{style:{...$,margin:0},children:"Suggested"}),f?(0,t.jsxs)("p",{"data-testid":"while-away",style:{margin:0,fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)"},children:[f,"."]}):null,(0,t.jsx)("p",{style:{margin:0,fontSize:"0.75rem",lineHeight:1.45,color:"var(--graview-ink-faint)"},children:i.length>0?"Not made yet: each waits for you.":"What it did is in Activity."}),[i.filter(z),i.filter(d=>!z(d))].map((d,o)=>d.length===0?null:(0,t.jsxs)("div",{style:{display:"grid",gap:6,minWidth:0},children:[i.some(z)?(0,t.jsx)("h3",{style:{margin:0,fontSize:"0.75rem",fontWeight:600,color:"var(--graview-ink-muted)"},children:o===0?"Proposed":"Suggested by the app"}):null,(0,t.jsx)("ol",{"data-testid":o===0?"proposals":"suggestions",style:{margin:0,padding:0,listStyle:"none",display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:10,fontSize:"0.8125rem",minWidth:0},children:d.map(w=>(0,t.jsx)(de,{suggestion:w,notNow:a,settled:p,heard:g,goes:T},w.id))})]},o)),(0,t.jsx)("span",{role:"status","data-testid":"suggestion-heard",style:$,children:y})]}):null]})}var E={minWidth:0,overflowWrap:"anywhere"},ae={accept:"Accepted.",decline:"Declined: it will not be suggested again.",later:"Hidden from you until tomorrow.",withdraw:"Withdrawn."},O={recorded:"Your vote was recorded.",withdrawn:"Your vote was withdrawn."},oe=(e,n)=>n.startsWith(`${e}: `)?n.slice(e.length+2):n,re=e=>{let n=`${e.for} for, ${e.against} against`,l=se(e.advisory);return l?`${n} \xB7 ${l}`:n};function se(e){if(!e)return"";let n=e.for===0?"":e.for===1?"a visitor agrees":`${e.for} visitors agree`,l=e.against===0?"":e.against===1?`${n?"one":"a visitor"} disagrees`:`${e.against}${n?"":" visitors"} disagree`;return[n,l].filter(Boolean).join(", ")}function de({suggestion:e,notNow:n,settled:l,heard:u,goes:v}){let{store:s,principal:a,seats:S,people:x,signIn:i}=A(),[y,g]=(0,r.useState)(null),[m,C]=(0,r.useState)(null),T=(0,r.useId)(),b=(0,r.useId)(),f=q(e.author,{graph:s.graph,schema:s.schema,seats:S,people:x}),p=(0,r.useMemo)(()=>U(s,e,a),[s,e,a]),d=(0,r.useMemo)(()=>p||s.permits({name:M,args:{suggestion:e.id,vote:"for"}},a).ok,[p,s,e.id,a]),{tally:o}=e,w=z(e),W=w&&a!==void 0&&!p&&L(a).id===e.lineage.proposedBy,H=async c=>{g(null);try{if(c==="withdraw")j(s,e.id,{author:a});else if(c==="accept"||c==="decline"){if((c==="accept"?R(s,e.id,{author:a}):X(s,e.id,{author:a})).voted!==void 0){C(O.recorded),u(O.recorded);return}}else if(c==="unvote"){F(s,e.id,null,{author:a}),C(O.withdrawn),u(O.withdrawn);return}else await n.dismiss({suggestion:e.id,at:new Date().toISOString(),until:Q()});l(ae[c])}catch(I){g(I instanceof Error?I.message:String(I))}};return(0,t.jsxs)("li",{"data-testid":"suggestion","data-suggestion":e.id,style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:5,lineHeight:1.45,minWidth:0},children:[(0,t.jsxs)("span",{"data-graview-suggestion-words":"",style:E,children:[w?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("span",{"data-testid":"proposed-by",style:{color:"var(--graview-ink-muted)"},children:["Proposed by ",(0,t.jsx)("strong",{style:{fontWeight:600,color:"var(--graview-ink)"},children:W?"you":f}),":"]})," "]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("strong",{style:{fontWeight:600},children:f})," ",(0,t.jsx)("span",{style:{color:"var(--graview-ink-muted)"},children:"suggests"})," "]}),e.items.length>1?oe(f,e.headline??e.intent):e.intent]}),(0,t.jsx)(ne,{suggestion:e,decides:p,heard:u}),e.lineage&&!(w&&e.lineage.basis.startsWith("Proposed by "))?(0,t.jsx)("span",{"data-graview-lineage":"",style:{...E,color:"var(--graview-ink-faint)"},children:B(e.lineage)}):null,e.about.length>0?(0,t.jsx)("div",{"data-graview-suggestion-records":"",style:{display:"flex",flexWrap:"wrap",gap:4,minWidth:0},children:e.about.slice(0,4).map(c=>(0,t.jsx)(J,{id:c,label:K(s,c),go:v(c),testId:"suggestion-record"},c))}):null,(0,t.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:6,minWidth:0},children:[W?(0,t.jsx)("button",{type:"button","data-testid":"proposal-withdraw",onClick:()=>void H("withdraw"),style:{minHeight:24,padding:"1px 10px",fontSize:"0.75rem"},children:"Withdraw"}):d?(0,t.jsx)("button",{type:"button","data-testid":"suggestion-accept",onClick:()=>void H("accept"),...p?{}:{"aria-pressed":o.mine==="for","aria-describedby":b},style:{minHeight:24,padding:"1px 10px",fontSize:"0.75rem"},children:p&&e.items.length>1?"Accept all":"Accept"}):i?(0,t.jsx)("button",{type:"button","data-testid":"suggestion-sign-in",onClick:()=>i.run(),style:{minHeight:24,padding:"1px 10px",fontSize:"0.75rem"},children:"Sign in to vote"}):null,p&&o.for+o.against+(o.advisory?o.advisory.for+o.advisory.against:0)>0?(0,t.jsx)("span",{"data-testid":"suggestion-tally",style:{...E,fontSize:"0.75rem",color:"var(--graview-ink-muted)"},children:re(o)}):null,d&&!W?(0,t.jsx)("button",{type:"button","data-testid":"suggestion-decline",onClick:()=>void H("decline"),...p?{}:{"aria-pressed":o.mine==="against","aria-describedby":b},style:{minHeight:24,padding:"1px 10px",fontSize:"0.75rem"},children:"Decline"}):null,!p&&d&&!W?(0,t.jsx)("span",{id:b,style:$,children:"Counts as your vote; somebody who may make it decides."}):null,!p&&d&&!W&&o.mine!==void 0?(0,t.jsx)("button",{type:"button","data-testid":"suggestion-withdraw-vote",onClick:()=>void H("unvote"),style:{minHeight:24,padding:"1px 10px",fontSize:"0.75rem",border:"1px solid transparent",background:"transparent",boxShadow:"none",color:"var(--graview-ink-muted)"},children:"Withdraw vote"}):null,(0,t.jsx)("button",{type:"button","data-testid":"suggestion-not-now",onClick:()=>void H("later"),title:"Hide it from you until tomorrow. It still waits for everyone else.","aria-describedby":T,style:{minHeight:24,padding:"1px 10px",fontSize:"0.75rem",marginInlineStart:"auto",border:"1px solid transparent",background:"transparent",boxShadow:"none",color:"var(--graview-ink-muted)"},children:"Not now"}),(0,t.jsx)("span",{id:T,style:$,children:"Hides it from you until tomorrow; it still waits for everyone else."})]}),m?(0,t.jsx)("span",{"data-testid":"suggestion-voted",role:"status",style:{...E,fontSize:"0.75rem",color:"var(--graview-ink-muted)"},children:m}):null,y?(0,t.jsx)("span",{"data-testid":"suggestion-refused",role:"alert",style:{...E,fontSize:"0.75rem",color:"var(--graview-warn)"},children:y}):null]})}export{be as SuggestedTray,se as advisoryWords,ie as awayWords,re as tallyWords};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as O,b,c as w,d as R,e as V}from"./chunk.OWT3VVOT.js";import{h as d,i as S}from"./chunk.NHTGAP3G.js";import{Na as $,Oa as F}from"./chunk.DZZL5IDD.js";var E=["card","row","page"],j=["good","warn","bad","neutral","accent"],U=["money","percent","date","time","datetime","relative","count"],_=4,T=40,I=120,L=["number","money","percent"],B=["large"],C=["card","row"],M=1e3,ce=100;function X(e){let n=/^\s*(out|in)\(\s*['"]([A-Za-z][A-Za-z0-9_-]*)['"]\s*\)\s*$/.exec(e);return n?{edge:n[2],way:n[1]}:/^[A-Za-z][A-Za-z0-9_-]*$/.test(e)?{edge:e}:void 0}var v={title:[],headline:[],list:["sort","limit","group","empty","as"],text:["tone","lines"],badge:["tone"],field:["as","currency","label"],image:["as","label"],progress:["label"],group:["direction"],when:["show"],divider:[],figure:["as","currency","label","emphasis"]},Z=Object.keys(v),G=`{"title": "{name}"}, {"headline": "{count(all('offer'))} offers"}, {"figure": expr, "as"?: "number"|"money"|"percent", "currency"?, "label"?, "emphasis"?: "large"}, {"list": expr, "sort"?, "limit"?, "group"?, "empty"?, "as"?: "card"|"row"}, {"text": "\u2026", "tone"?, "lines"?: 0-12}, {"badge": "{status}", "tone"?}, {"field": "quote", "as"?, "currency"?, "label"?}, {"image": "photos", "as"?: "thumb"|"gallery"}, {"progress": {"value": expr, "max": expr}, "label"?}, {"group": [blocks], "direction"?: "row"|"column"}, {"when": expr, "show": [blocks]}, {"divider": true}, {"figure": true}`,Y=e=>/^(image|video|file)$/.test(e?.of??e?.type??"");function ge(e){return Object.fromEntries(Object.entries(e.views??{}).filter(([,n])=>!Array.isArray(n)))}function ye(e){let n=e.views?.home;return Array.isArray(n)?n:void 0}var q={field:()=>!1,relation:()=>!1,figure:!1},z=e=>e.kind??"the home",m=(e,n)=>e!==void 0&&Object.hasOwn(e,n),g=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function W(e,n,t){let s=O(e);for(let a of s.unknownFunctions)t.findings.push(d("unknown-function",n,`"${a}" is not a function the rule language knows`,"see docs/declaration-document.md#expression-language"));for(let a of s.names){if(t.kind===null){t.findings.push(d("view-name",n,`"${a}" names nothing here: these blocks are about no one record`,"reach records with all('<kind>'), like count(all('offer')) or first(all('party') where role == 'client').name"));continue}a==="id"||t.spec.field(a)||t.spec.relation(a)||t.findings.push(d("view-name",n,`${t.kind} has no field or relation called "${a}"`))}for(let a of s.edges)t.edges.has(a)||t.findings.push(d("view-edge",n,`"${a}" is not a relation any kind declares`));for(let a of s.sweeps)t.kinds.has(a)||t.findings.push(d("view-kind",n,`"${a}" is not a kind this document declares`))}function k(e,n,t){if(typeof e!="string"||e.length===0||e.length>2e3){t.findings.push(d("view-expression",n,`an expression is a line of the rule language, like "status == 'booked'"`));return}try{W(w(e),n,t)}catch(s){if(!(s instanceof b))throw s;t.findings.push(d("expression",n,`${s.sentence} (at character ${s.at+1})`))}}function A(e,n,t,s,a=!1){let l=s==="text";if(typeof e!="string"||e.length===0||e.length>300){t.findings.push(d("view-template",n,'a template is words with {field} in braces, like "{name}" or "{quote|money}", at most 300 characters'));return}let r;try{r=V(e)}catch(i){if(i instanceof R||i instanceof b){t.findings.push(d("template",n,i.sentence));return}throw i}for(let i of r)if(i.expr){if(W(i.expr,n,t),l&&!a&&!i.format&&i.expr.t==="ident"&&(t.slot==="card"||t.slot==="row")&&t.spec.prose?.(i.expr.name)){let o=i.expr.name;t.findings.push(S("view-whole-text",n,`${t.kind} ${t.slot} shows ${o} whole; it will be clamped. Use {${o}|excerpt} or move it to the page.`,`write {${o}|excerpt}, or {${o}|excerpt: 80} for fewer characters`))}if(s==="headline"&&!i.format&&i.expr.t==="ident"&&t.spec.prose?.(i.expr.name)){let o=i.expr.name;t.findings.push(S("view-headline-long",n,`${z(t)}${t.slot?` ${t.slot}`:""} heads it with ${o}, a long text, drawn at a headline's size; a headline is a few words.`,`say it in a text block, {"text": "{${o}}"}, or head it with {${o}|excerpt: 60}`))}}}var K=12;function J(e,n,t){typeof e=="number"&&Number.isInteger(e)&&e>=0&&e<=K||t.findings.push(d("view-lines",n,`lines is ${JSON.stringify(e)}, and a text block's lines is a whole number from 1 to ${K}, or 0 to show it whole`,'{"text": "{awards}", "lines": 6}, or "lines": 0 for no cut at all'))}function Q(e,n,t){if(typeof e=="string"){j.includes(e)||t.findings.push(d("view-tone",n,`"${e}" is not a tone`,`use one of ${j.join(", ")}, or {"expr": "if(status == 'booked', 'good', 'neutral')"}`));return}if(g(e)&&Object.keys(e).length===1&&"expr"in e){k(e.expr,`${n}.expr`,t);return}t.findings.push(d("view-tone",n,'a tone is a word or {"expr": \u2026}',`one of ${j.join(", ")}`))}function x(e,n,t,s){if(!Array.isArray(e)){s.findings.push(d("view-shape",n,"a view is a list of blocks"));return}if(t>_){s.findings.push(d("view-depth",n,`blocks nest at most ${_} deep`,"flatten a group or a condition"));return}e.forEach((a,l)=>ee(a,`${n}.${l}`,t,s))}function ee(e,n,t,s){if(t===1&&s.count++,s.all++,!g(e)){s.findings.push(d("view-block",n,"a block is an object naming what it shows",`one of ${G}`));return}let a=Object.keys(e),l=a.filter(o=>Z.includes(o)&&!(o==="group"&&a.includes("list")));if(l.length===0){s.findings.push(d("view-block",n,`${a.length>0?a.map(o=>`"${o}"`).join(", "):"an empty object"} is not a block Graview knows`,`one of ${G}`));return}if(l.length>1){s.findings.push(d("view-block",n,`a block is one thing, and this says ${l.map(o=>`"${o}"`).join(" and ")}`,"split it into two blocks"));return}let r=l[0];for(let o of a)o!==r&&o!="key"&&!v[r].includes(o)&&s.findings.push(d("unknown-key",`${n}.${o}`,`"${o}" is not part of a ${r} block`,v[r].length>0?`a ${r} block may also say ${v[r].map(f=>`"${f}"`).join(", ")}`:`a ${r} block says nothing else`));let i=e[r];switch(r){case"title":case"headline":case"text":case"badge":A(i,`${n}.${r}`,s,r==="text"||r==="headline"?r:void 0,r==="text"&&"lines"in e),"tone"in e&&Q(e.tone,`${n}.tone`,s),r==="text"&&"lines"in e&&J(e.lines,`${n}.lines`,s);return;case"image":case"field":{let o=r==="image";if(typeof i!="string"||!(o?s.spec.files?.(i):s.spec.field(i))){let u=typeof i=="string"&&s.spec.relation(i);s.findings.push(d(`view-${r}`,`${n}.${r}`,`${s.kind} has no ${o?"image, video or file ":""}field ${typeof i=="string"?`"${i}"`:"by that name"}`,u?`"${i}" is a relation; show it with {"text": "{${i}.name}"}`:void 0))}let f=o?["thumb","gallery"]:U;"as"in e&&!f.includes(e.as)&&s.findings.push(d("view-format",`${n}.as`,`"${String(e.as)}" is not a way to show ${o?"pictures":"a field"}`,`use one of ${f.join(", ")}`)),o||D(e,n,s,"field"),"label"in e&&oe(e.label,`${n}.label`,s);return}case"progress":{!g(i)||Object.keys(i).some(o=>o!=="value"&&o!=="max")||!("value"in i)||!("max"in i)?s.findings.push(d("view-progress",`${n}.progress`,'progress is {"value": expression, "max": expression}')):(k(i.value,`${n}.progress.value`,s),k(i.max,`${n}.progress.max`,s)),"label"in e&&A(e.label,`${n}.label`,s);return}case"group":"direction"in e&&e.direction!=="row"&&e.direction!=="column"&&s.findings.push(d("view-direction",`${n}.direction`,`a group runs "row" or "column", not "${String(e.direction)}"`)),x(i,`${n}.group`,t+1,s);return;case"when":k(i,`${n}.when`,s),"show"in e?x(e.show,`${n}.show`,t+1,s):s.findings.push(d("view-when",n,'a condition says what it shows: {"when": expr, "show": [blocks]}'));return;case"figure":if(typeof i=="string")return ne(e,n,s);for(let o of["as","currency","label","emphasis"])o in e&&s.findings.push(d("unknown-key",`${n}.${o}`,`"${o}" belongs to a figure that works a number out; {"figure": true} is the kind's picture`,`write {"figure": "count(all('offer'))", "as": "number"}`));i!==!0?s.findings.push(d("view-block",`${n}.figure`,`a figure is a number worked out, {"figure": "sum(all('offer'), net)", "as": "money"}, or the kind's picture, {"figure": true}`)):s.spec.figure||s.findings.push(d("view-figure",`${n}.figure`,`${z(s)} has no figure to show`,s.kind===null?`work a number out: {"figure": "count(all('offer'))"}`:'give the kind a "figure", or leave this block out'));return;case"list":return te(e,n,s);case"divider":i!==!0&&s.findings.push(d("view-block",`${n}.${r}`,`write {"${r}": true}`));return}}function ne(e,n,t){k(e.figure,`${n}.figure`,t),"as"in e&&!L.includes(e.as)&&t.findings.push(d("view-format",`${n}.as`,`"${String(e.as)}" is not a way to say a figure`,`use one of ${L.join(", ")}`)),D(e,n,t,"figure"),"label"in e&&A(e.label,`${n}.label`,t),"emphasis"in e&&!B.includes(e.emphasis)&&t.findings.push(d("view-emphasis",`${n}.emphasis`,`"${String(e.emphasis)}" is not how loudly a figure is said`,`use ${B.map(s=>`"${s}"`).join(", ")}, or leave it out for the figure's own size`))}function D(e,n,t,s){"currency"in e&&(typeof e.currency!="string"||!/^[A-Z]{3}$/.test(e.currency)?t.findings.push(d("view-currency",`${n}.currency`,'a currency is its three-letter code, like "USD" or "EUR"')):e.as!=="money"&&t.findings.push(d("view-currency",`${n}.currency`,`a currency belongs on a ${s} shown as money`,'add "as": "money"')))}function ie(e,n){let t=[...n.kinds],s=(l,r)=>{let i=new Set;for(let o of l){let f=n.vocabulary.namesOf(o)?.targets?.(r);if(f==="*")return t;for(let u of f??[])i.add(u)}return i.size>0?[...i]:void 0},a=l=>{switch(l.t){case"ident":return n.kind!==null&&n.spec.relation(l.name)?s([n.kind],l.name):void 0;case"member":{let r=a(l.object);return r?s(r,l.name):void 0}case"where":return a(l.set);case"call":{let r=l.args[0],i=r?.t==="lit"&&typeof r.value=="string"?r.value:void 0;if(l.fn==="all")return i!==void 0&&n.kinds.has(i)?[i]:void 0;let o=l.args.length===2&&l.args[1]?.t==="lit"&&typeof l.args[1].value=="string"?l.args[1].value:void 0;if(l.fn==="out"&&o!==void 0){let f=a(r);return f?s(f,o):void 0}if(l.fn==="out")return i!==void 0&&n.kind!==null?s([n.kind],i):void 0;if(l.fn==="in"){let f=o??i,u=o!==void 0?a(r):n.kind!==null?[n.kind]:void 0,c=f!==void 0?n.vocabulary.sources(f).filter(p=>{let y=n.vocabulary.namesOf(p)?.targets?.(f);return!u||y==="*"||u.some(h=>y?.includes(h))}):[];return c.length>0?c:void 0}if((l.fn==="sort"||l.fn==="first")&&r)return a(r);if(l.fn==="either"){let f=l.args.map(a);return f.every(u=>u!==void 0)?[...new Set(f.flatMap(u=>u??[]))]:void 0}return}default:return}};return a(e)}function N(e,n,t,s){let a;try{a=w(e)}catch(r){if(!(r instanceof b))throw r;s.findings.push(d("expression",n,`${r.sentence} (at character ${r.at+1})`));return}let l=O(a);for(let r of l.unknownFunctions)s.findings.push(d("unknown-function",n,`"${r}" is not a function the rule language knows`,"see docs/declaration-document.md#expression-language"));for(let r of l.edges)s.edges.has(r)||s.findings.push(d("view-edge",n,`"${r}" is not a relation any kind declares`));if(t)for(let r of l.names)r==="id"||t.some(i=>s.vocabulary.namesOf(i)?.field(r)||s.vocabulary.namesOf(i)?.relation(r))||s.findings.push(d("view-name",n,`${t.join(" and ")} ${t.length===1?"has":"have"} no field or relation called "${r}"`))}function te(e,n,t){let s=e.list;k(s,`${n}.list`,t);let a;if(typeof s=="string")try{a=ie(w(s),t)}catch{a=void 0}let l=i=>{if(!a)return[...t.kinds].map(f=>t.vocabulary.namesOf(f)?.choices?.(i)).find(f=>f!==void 0);let o=a.map(f=>t.vocabulary.namesOf(f)?.choices?.(i));return o.every(f=>f!==void 0)?[...new Set(o.flatMap(f=>f??[]))]:void 0},r=a?a.join(" and "):"any kind";if("sort"in e){let i=e.sort;if(typeof i=="string")N(i,`${n}.sort`,a,t);else if(g(i)&&typeof i.by=="string"&&Object.keys(i).every(o=>o==="by"||o==="direction")){let o=i.direction;o!==void 0&&o!=="asc"&&o!=="desc"&&o!=="choices"?t.findings.push(d("list-sort",`${n}.sort.direction`,`a list is sorted "asc", "desc" or "choices", not "${String(o)}"`,'"choices" puts a choice field in the order its choices are declared')):o==="choices"?l(i.by)===void 0&&t.findings.push(d("list-sort",`${n}.sort.by`,`"${i.by}" is not a choice field of ${r}, so it has no declared order`,'sort by a choice field, or say "asc" or "desc"')):N(i.by,`${n}.sort.by`,a,t)}else t.findings.push(d("list-sort",`${n}.sort`,'a sort is a key, like "net", or {"by": key, "direction": "asc" | "desc" | "choices"}'))}if("limit"in e){let i=e.limit;(typeof i!="number"||!Number.isInteger(i)||i<1||i>M)&&t.findings.push(d("list-limit",`${n}.limit`,`a limit is a whole number from 1 to ${M}`))}if("group"in e){let i=e.group,o=typeof i=="string"?i:g(i)&&typeof i.by=="string"?i.by:void 0;if(!(typeof i=="string"||g(i)&&Object.keys(i).every(u=>u==="by"||u==="headings"))||o===void 0)t.findings.push(d("list-group",`${n}.group`,'a group is a choice field, like "type", or {"by": "type", "headings": {"pain": "What hurts"}} \u2014 or a relation, like "inGenre", a heading per linked record'));else{let u=l(o),c=u===void 0?X(o):void 0,p=c!==void 0&&(c.way!==void 0?t.edges.has(c.edge):a?a.every(y=>t.vocabulary.namesOf(y)?.relation(c.edge)):t.edges.has(c.edge));if(u===void 0&&!p&&t.findings.push(d("list-group",`${n}.group`,`"${o}" is not a choice field or a relation of ${r}, so it has nothing to group by`,'group by a field whose type is enum, or by a relation of the kind listed, like "inGenre"')),g(i)&&"headings"in i){let y=i.headings;if(!g(y)||Object.values(y).some(h=>typeof h!="string"||h.length===0||h.length>80))t.findings.push(d("list-group",`${n}.group.headings`,'headings are words per choice, like {"pain": "What hurts"}, at most 80 characters each'));else if(u)for(let h of Object.keys(y))u.includes(h)||t.findings.push(d("list-group",`${n}.group.headings.${h}`,`"${h}" is not one of ${o}'s choices`,`use ${u.join(", ")}`))}}}"empty"in e&&(typeof e.empty!="string"||e.empty.length===0||e.empty.length>200)&&t.findings.push(d("list-empty",`${n}.empty`,"what an empty list says is a sentence, at most 200 characters")),"as"in e&&!C.includes(e.as)&&t.findings.push(d("list-as",`${n}.as`,`a list draws each record as its "card" or its "row", not "${String(e.as)}"`))}function oe(e,n,t){(typeof e!="string"||e.length===0||e.length>60)&&t.findings.push(d("view-label",n,"a label is a few words, at most 60 characters"))}function P(e,n,t,s,a,l,r){let i={kind:null,spec:q,kinds:s,edges:a,vocabulary:t,findings:l,count:0,all:0};Array.isArray(e)&&e.length===0&&l.push(d("view-shape",n,`${r} has no blocks`,'give it one: {"headline": "\u2026"}')),x(e,n,1,i),H(i,n,r,"show less")}function H(e,n,t,s){e.count>T?e.findings.push(d("view-size",n,`${t} has ${e.count} blocks at its top; a view has at most ${T} there, a group or a condition counting as one`,`${s}, or gather some into a group`)):e.all>I&&e.findings.push(d("view-size",n,`${t} has ${e.all} blocks counting the ones inside its groups and conditions; a view has at most ${I} in all`,s))}function se(e,n,t,s,a){Array.isArray(e)&&e.forEach((l,r)=>{if(!g(l)||l.name!=="blocks"||!g(l.options)||!("blocks"in l.options))return;let i=[];P(l.options.blocks,`lenses.${r}.options.blocks`,n,t,s,i,`the lens "${String(l.title??r)}"`);for(let o of i)a.push({...o,severity:"warning"})})}function re(e,n,t,s,a,l,r){let i=[];if(e===void 0)return i;if(!g(e))return i.push(d("view-shape",n,'views are an object of kinds, each with a "card", a "row" or a "page"')),i;for(let[o,f]of Object.entries(e)){if(o==="home"&&Array.isArray(f)){P(f,`${n}.home`,r,s,a,i,"the home");continue}let u=t(o);if(!u){i.push(d("view-kind",`${n}.${o}`,`"${o}" is not a kind this ${l} declares`));continue}if(!g(f)){i.push(d("view-shape",`${n}.${o}`,`a kind's views are {"card": [blocks], "row": [blocks], "page": [blocks]}`));continue}for(let c of Object.keys(f))E.includes(c)||i.push(d("view-slot",`${n}.${o}.${c}`,`"${c}" is not a place a view is drawn`,`use ${E.map(p=>`"${p}"`).join(", ")}`));for(let c of E){let p=f[c];if(p===void 0)continue;let y={kind:o,spec:u,kinds:s,edges:a,vocabulary:r,findings:i,count:0,all:0,slot:c};x(p,`${n}.${o}.${c}`,1,y),H(y,`${n}.${o}.${c}`,`this ${c}`,"show less, or move detail to the page")}}return i}function he(e){let n=new Set(Object.keys(e.kinds)),t=new Set(Object.values(e.kinds).flatMap(r=>Object.keys($(r.edges)))),s=r=>{let i=m(e.kinds,r)?e.kinds[r]:void 0;return i?{field:o=>m(i.fields,o)||m(i.computed,o)||F(i.edges).has(o),relation:o=>m($(i.edges),o),figure:i.figure!==void 0,files:o=>m(i.fields,o)&&Y(i.fields[o]),choices:o=>m(i.fields,o)&&i.fields[o].type==="enum"?i.fields[o].options:void 0,targets:o=>m($(i.edges),o)?i.edges[o].to:void 0,prose:o=>m(i.fields,o)&&i.fields[o].type==="text"}:void 0},a={namesOf:s,sources:r=>Object.keys(e.kinds).filter(i=>m(e.kinds[i].edges,r))},l=re(e.views,"views",s,n,t,"document",a);return se(e.lenses,a,n,t,l),l}export{j as a,U as b,L as c,B as d,M as e,ce as f,X as g,ge as h,ye as i,he as j};
|
|
1
|
+
import{a as O,b,c as w,d as R,e as V}from"./chunk.R5MLRKAO.js";import{h as d,i as S}from"./chunk.YMXWS4XN.js";import{Pa as $,Qa as F}from"./chunk.IQGSEAQ2.js";var E=["card","row","page"],j=["good","warn","bad","neutral","accent"],U=["money","percent","date","time","datetime","relative","count"],_=4,T=40,I=120,L=["number","money","percent"],B=["large"],C=["card","row"],M=1e3,ce=100;function X(e){let n=/^\s*(out|in)\(\s*['"]([A-Za-z][A-Za-z0-9_-]*)['"]\s*\)\s*$/.exec(e);return n?{edge:n[2],way:n[1]}:/^[A-Za-z][A-Za-z0-9_-]*$/.test(e)?{edge:e}:void 0}var v={title:[],headline:[],list:["sort","limit","group","empty","as"],text:["tone","lines"],badge:["tone"],field:["as","currency","label"],image:["as","label"],progress:["label"],group:["direction"],when:["show"],divider:[],figure:["as","currency","label","emphasis"]},Z=Object.keys(v),G=`{"title": "{name}"}, {"headline": "{count(all('offer'))} offers"}, {"figure": expr, "as"?: "number"|"money"|"percent", "currency"?, "label"?, "emphasis"?: "large"}, {"list": expr, "sort"?, "limit"?, "group"?, "empty"?, "as"?: "card"|"row"}, {"text": "\u2026", "tone"?, "lines"?: 0-12}, {"badge": "{status}", "tone"?}, {"field": "quote", "as"?, "currency"?, "label"?}, {"image": "photos", "as"?: "thumb"|"gallery"}, {"progress": {"value": expr, "max": expr}, "label"?}, {"group": [blocks], "direction"?: "row"|"column"}, {"when": expr, "show": [blocks]}, {"divider": true}, {"figure": true}`,Y=e=>/^(image|video|file)$/.test(e?.of??e?.type??"");function ge(e){return Object.fromEntries(Object.entries(e.views??{}).filter(([,n])=>!Array.isArray(n)))}function ye(e){let n=e.views?.home;return Array.isArray(n)?n:void 0}var q={field:()=>!1,relation:()=>!1,figure:!1},z=e=>e.kind??"the home",m=(e,n)=>e!==void 0&&Object.hasOwn(e,n),g=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function W(e,n,t){let s=O(e);for(let a of s.unknownFunctions)t.findings.push(d("unknown-function",n,`"${a}" is not a function the rule language knows`,"see docs/declaration-document.md#expression-language"));for(let a of s.names){if(t.kind===null){t.findings.push(d("view-name",n,`"${a}" names nothing here: these blocks are about no one record`,"reach records with all('<kind>'), like count(all('offer')) or first(all('party') where role == 'client').name"));continue}a==="id"||t.spec.field(a)||t.spec.relation(a)||t.findings.push(d("view-name",n,`${t.kind} has no field or relation called "${a}"`))}for(let a of s.edges)t.edges.has(a)||t.findings.push(d("view-edge",n,`"${a}" is not a relation any kind declares`));for(let a of s.sweeps)t.kinds.has(a)||t.findings.push(d("view-kind",n,`"${a}" is not a kind this document declares`))}function k(e,n,t){if(typeof e!="string"||e.length===0||e.length>2e3){t.findings.push(d("view-expression",n,`an expression is a line of the rule language, like "status == 'booked'"`));return}try{W(w(e),n,t)}catch(s){if(!(s instanceof b))throw s;t.findings.push(d("expression",n,`${s.sentence} (at character ${s.at+1})`))}}function A(e,n,t,s,a=!1){let l=s==="text";if(typeof e!="string"||e.length===0||e.length>300){t.findings.push(d("view-template",n,'a template is words with {field} in braces, like "{name}" or "{quote|money}", at most 300 characters'));return}let r;try{r=V(e)}catch(i){if(i instanceof R||i instanceof b){t.findings.push(d("template",n,i.sentence));return}throw i}for(let i of r)if(i.expr){if(W(i.expr,n,t),l&&!a&&!i.format&&i.expr.t==="ident"&&(t.slot==="card"||t.slot==="row")&&t.spec.prose?.(i.expr.name)){let o=i.expr.name;t.findings.push(S("view-whole-text",n,`${t.kind} ${t.slot} shows ${o} whole; it will be clamped. Use {${o}|excerpt} or move it to the page.`,`write {${o}|excerpt}, or {${o}|excerpt: 80} for fewer characters`))}if(s==="headline"&&!i.format&&i.expr.t==="ident"&&t.spec.prose?.(i.expr.name)){let o=i.expr.name;t.findings.push(S("view-headline-long",n,`${z(t)}${t.slot?` ${t.slot}`:""} heads it with ${o}, a long text, drawn at a headline's size; a headline is a few words.`,`say it in a text block, {"text": "{${o}}"}, or head it with {${o}|excerpt: 60}`))}}}var K=12;function J(e,n,t){typeof e=="number"&&Number.isInteger(e)&&e>=0&&e<=K||t.findings.push(d("view-lines",n,`lines is ${JSON.stringify(e)}, and a text block's lines is a whole number from 1 to ${K}, or 0 to show it whole`,'{"text": "{awards}", "lines": 6}, or "lines": 0 for no cut at all'))}function Q(e,n,t){if(typeof e=="string"){j.includes(e)||t.findings.push(d("view-tone",n,`"${e}" is not a tone`,`use one of ${j.join(", ")}, or {"expr": "if(status == 'booked', 'good', 'neutral')"}`));return}if(g(e)&&Object.keys(e).length===1&&"expr"in e){k(e.expr,`${n}.expr`,t);return}t.findings.push(d("view-tone",n,'a tone is a word or {"expr": \u2026}',`one of ${j.join(", ")}`))}function x(e,n,t,s){if(!Array.isArray(e)){s.findings.push(d("view-shape",n,"a view is a list of blocks"));return}if(t>_){s.findings.push(d("view-depth",n,`blocks nest at most ${_} deep`,"flatten a group or a condition"));return}e.forEach((a,l)=>ee(a,`${n}.${l}`,t,s))}function ee(e,n,t,s){if(t===1&&s.count++,s.all++,!g(e)){s.findings.push(d("view-block",n,"a block is an object naming what it shows",`one of ${G}`));return}let a=Object.keys(e),l=a.filter(o=>Z.includes(o)&&!(o==="group"&&a.includes("list")));if(l.length===0){s.findings.push(d("view-block",n,`${a.length>0?a.map(o=>`"${o}"`).join(", "):"an empty object"} is not a block Graview knows`,`one of ${G}`));return}if(l.length>1){s.findings.push(d("view-block",n,`a block is one thing, and this says ${l.map(o=>`"${o}"`).join(" and ")}`,"split it into two blocks"));return}let r=l[0];for(let o of a)o!==r&&o!="key"&&!v[r].includes(o)&&s.findings.push(d("unknown-key",`${n}.${o}`,`"${o}" is not part of a ${r} block`,v[r].length>0?`a ${r} block may also say ${v[r].map(f=>`"${f}"`).join(", ")}`:`a ${r} block says nothing else`));let i=e[r];switch(r){case"title":case"headline":case"text":case"badge":A(i,`${n}.${r}`,s,r==="text"||r==="headline"?r:void 0,r==="text"&&"lines"in e),"tone"in e&&Q(e.tone,`${n}.tone`,s),r==="text"&&"lines"in e&&J(e.lines,`${n}.lines`,s);return;case"image":case"field":{let o=r==="image";if(typeof i!="string"||!(o?s.spec.files?.(i):s.spec.field(i))){let u=typeof i=="string"&&s.spec.relation(i);s.findings.push(d(`view-${r}`,`${n}.${r}`,`${s.kind} has no ${o?"image, video or file ":""}field ${typeof i=="string"?`"${i}"`:"by that name"}`,u?`"${i}" is a relation; show it with {"text": "{${i}.name}"}`:void 0))}let f=o?["thumb","gallery"]:U;"as"in e&&!f.includes(e.as)&&s.findings.push(d("view-format",`${n}.as`,`"${String(e.as)}" is not a way to show ${o?"pictures":"a field"}`,`use one of ${f.join(", ")}`)),o||D(e,n,s,"field"),"label"in e&&oe(e.label,`${n}.label`,s);return}case"progress":{!g(i)||Object.keys(i).some(o=>o!=="value"&&o!=="max")||!("value"in i)||!("max"in i)?s.findings.push(d("view-progress",`${n}.progress`,'progress is {"value": expression, "max": expression}')):(k(i.value,`${n}.progress.value`,s),k(i.max,`${n}.progress.max`,s)),"label"in e&&A(e.label,`${n}.label`,s);return}case"group":"direction"in e&&e.direction!=="row"&&e.direction!=="column"&&s.findings.push(d("view-direction",`${n}.direction`,`a group runs "row" or "column", not "${String(e.direction)}"`)),x(i,`${n}.group`,t+1,s);return;case"when":k(i,`${n}.when`,s),"show"in e?x(e.show,`${n}.show`,t+1,s):s.findings.push(d("view-when",n,'a condition says what it shows: {"when": expr, "show": [blocks]}'));return;case"figure":if(typeof i=="string")return ne(e,n,s);for(let o of["as","currency","label","emphasis"])o in e&&s.findings.push(d("unknown-key",`${n}.${o}`,`"${o}" belongs to a figure that works a number out; {"figure": true} is the kind's picture`,`write {"figure": "count(all('offer'))", "as": "number"}`));i!==!0?s.findings.push(d("view-block",`${n}.figure`,`a figure is a number worked out, {"figure": "sum(all('offer'), net)", "as": "money"}, or the kind's picture, {"figure": true}`)):s.spec.figure||s.findings.push(d("view-figure",`${n}.figure`,`${z(s)} has no figure to show`,s.kind===null?`work a number out: {"figure": "count(all('offer'))"}`:'give the kind a "figure", or leave this block out'));return;case"list":return te(e,n,s);case"divider":i!==!0&&s.findings.push(d("view-block",`${n}.${r}`,`write {"${r}": true}`));return}}function ne(e,n,t){k(e.figure,`${n}.figure`,t),"as"in e&&!L.includes(e.as)&&t.findings.push(d("view-format",`${n}.as`,`"${String(e.as)}" is not a way to say a figure`,`use one of ${L.join(", ")}`)),D(e,n,t,"figure"),"label"in e&&A(e.label,`${n}.label`,t),"emphasis"in e&&!B.includes(e.emphasis)&&t.findings.push(d("view-emphasis",`${n}.emphasis`,`"${String(e.emphasis)}" is not how loudly a figure is said`,`use ${B.map(s=>`"${s}"`).join(", ")}, or leave it out for the figure's own size`))}function D(e,n,t,s){"currency"in e&&(typeof e.currency!="string"||!/^[A-Z]{3}$/.test(e.currency)?t.findings.push(d("view-currency",`${n}.currency`,'a currency is its three-letter code, like "USD" or "EUR"')):e.as!=="money"&&t.findings.push(d("view-currency",`${n}.currency`,`a currency belongs on a ${s} shown as money`,'add "as": "money"')))}function ie(e,n){let t=[...n.kinds],s=(l,r)=>{let i=new Set;for(let o of l){let f=n.vocabulary.namesOf(o)?.targets?.(r);if(f==="*")return t;for(let u of f??[])i.add(u)}return i.size>0?[...i]:void 0},a=l=>{switch(l.t){case"ident":return n.kind!==null&&n.spec.relation(l.name)?s([n.kind],l.name):void 0;case"member":{let r=a(l.object);return r?s(r,l.name):void 0}case"where":return a(l.set);case"call":{let r=l.args[0],i=r?.t==="lit"&&typeof r.value=="string"?r.value:void 0;if(l.fn==="all")return i!==void 0&&n.kinds.has(i)?[i]:void 0;let o=l.args.length===2&&l.args[1]?.t==="lit"&&typeof l.args[1].value=="string"?l.args[1].value:void 0;if(l.fn==="out"&&o!==void 0){let f=a(r);return f?s(f,o):void 0}if(l.fn==="out")return i!==void 0&&n.kind!==null?s([n.kind],i):void 0;if(l.fn==="in"){let f=o??i,u=o!==void 0?a(r):n.kind!==null?[n.kind]:void 0,c=f!==void 0?n.vocabulary.sources(f).filter(p=>{let y=n.vocabulary.namesOf(p)?.targets?.(f);return!u||y==="*"||u.some(h=>y?.includes(h))}):[];return c.length>0?c:void 0}if((l.fn==="sort"||l.fn==="first")&&r)return a(r);if(l.fn==="either"){let f=l.args.map(a);return f.every(u=>u!==void 0)?[...new Set(f.flatMap(u=>u??[]))]:void 0}return}default:return}};return a(e)}function N(e,n,t,s){let a;try{a=w(e)}catch(r){if(!(r instanceof b))throw r;s.findings.push(d("expression",n,`${r.sentence} (at character ${r.at+1})`));return}let l=O(a);for(let r of l.unknownFunctions)s.findings.push(d("unknown-function",n,`"${r}" is not a function the rule language knows`,"see docs/declaration-document.md#expression-language"));for(let r of l.edges)s.edges.has(r)||s.findings.push(d("view-edge",n,`"${r}" is not a relation any kind declares`));if(t)for(let r of l.names)r==="id"||t.some(i=>s.vocabulary.namesOf(i)?.field(r)||s.vocabulary.namesOf(i)?.relation(r))||s.findings.push(d("view-name",n,`${t.join(" and ")} ${t.length===1?"has":"have"} no field or relation called "${r}"`))}function te(e,n,t){let s=e.list;k(s,`${n}.list`,t);let a;if(typeof s=="string")try{a=ie(w(s),t)}catch{a=void 0}let l=i=>{if(!a)return[...t.kinds].map(f=>t.vocabulary.namesOf(f)?.choices?.(i)).find(f=>f!==void 0);let o=a.map(f=>t.vocabulary.namesOf(f)?.choices?.(i));return o.every(f=>f!==void 0)?[...new Set(o.flatMap(f=>f??[]))]:void 0},r=a?a.join(" and "):"any kind";if("sort"in e){let i=e.sort;if(typeof i=="string")N(i,`${n}.sort`,a,t);else if(g(i)&&typeof i.by=="string"&&Object.keys(i).every(o=>o==="by"||o==="direction")){let o=i.direction;o!==void 0&&o!=="asc"&&o!=="desc"&&o!=="choices"?t.findings.push(d("list-sort",`${n}.sort.direction`,`a list is sorted "asc", "desc" or "choices", not "${String(o)}"`,'"choices" puts a choice field in the order its choices are declared')):o==="choices"?l(i.by)===void 0&&t.findings.push(d("list-sort",`${n}.sort.by`,`"${i.by}" is not a choice field of ${r}, so it has no declared order`,'sort by a choice field, or say "asc" or "desc"')):N(i.by,`${n}.sort.by`,a,t)}else t.findings.push(d("list-sort",`${n}.sort`,'a sort is a key, like "net", or {"by": key, "direction": "asc" | "desc" | "choices"}'))}if("limit"in e){let i=e.limit;(typeof i!="number"||!Number.isInteger(i)||i<1||i>M)&&t.findings.push(d("list-limit",`${n}.limit`,`a limit is a whole number from 1 to ${M}`))}if("group"in e){let i=e.group,o=typeof i=="string"?i:g(i)&&typeof i.by=="string"?i.by:void 0;if(!(typeof i=="string"||g(i)&&Object.keys(i).every(u=>u==="by"||u==="headings"))||o===void 0)t.findings.push(d("list-group",`${n}.group`,'a group is a choice field, like "type", or {"by": "type", "headings": {"pain": "What hurts"}} \u2014 or a relation, like "inGenre", a heading per linked record'));else{let u=l(o),c=u===void 0?X(o):void 0,p=c!==void 0&&(c.way!==void 0?t.edges.has(c.edge):a?a.every(y=>t.vocabulary.namesOf(y)?.relation(c.edge)):t.edges.has(c.edge));if(u===void 0&&!p&&t.findings.push(d("list-group",`${n}.group`,`"${o}" is not a choice field or a relation of ${r}, so it has nothing to group by`,'group by a field whose type is enum, or by a relation of the kind listed, like "inGenre"')),g(i)&&"headings"in i){let y=i.headings;if(!g(y)||Object.values(y).some(h=>typeof h!="string"||h.length===0||h.length>80))t.findings.push(d("list-group",`${n}.group.headings`,'headings are words per choice, like {"pain": "What hurts"}, at most 80 characters each'));else if(u)for(let h of Object.keys(y))u.includes(h)||t.findings.push(d("list-group",`${n}.group.headings.${h}`,`"${h}" is not one of ${o}'s choices`,`use ${u.join(", ")}`))}}}"empty"in e&&(typeof e.empty!="string"||e.empty.length===0||e.empty.length>200)&&t.findings.push(d("list-empty",`${n}.empty`,"what an empty list says is a sentence, at most 200 characters")),"as"in e&&!C.includes(e.as)&&t.findings.push(d("list-as",`${n}.as`,`a list draws each record as its "card" or its "row", not "${String(e.as)}"`))}function oe(e,n,t){(typeof e!="string"||e.length===0||e.length>60)&&t.findings.push(d("view-label",n,"a label is a few words, at most 60 characters"))}function P(e,n,t,s,a,l,r){let i={kind:null,spec:q,kinds:s,edges:a,vocabulary:t,findings:l,count:0,all:0};Array.isArray(e)&&e.length===0&&l.push(d("view-shape",n,`${r} has no blocks`,'give it one: {"headline": "\u2026"}')),x(e,n,1,i),H(i,n,r,"show less")}function H(e,n,t,s){e.count>T?e.findings.push(d("view-size",n,`${t} has ${e.count} blocks at its top; a view has at most ${T} there, a group or a condition counting as one`,`${s}, or gather some into a group`)):e.all>I&&e.findings.push(d("view-size",n,`${t} has ${e.all} blocks counting the ones inside its groups and conditions; a view has at most ${I} in all`,s))}function se(e,n,t,s,a){Array.isArray(e)&&e.forEach((l,r)=>{if(!g(l)||l.name!=="blocks"||!g(l.options)||!("blocks"in l.options))return;let i=[];P(l.options.blocks,`lenses.${r}.options.blocks`,n,t,s,i,`the lens "${String(l.title??r)}"`);for(let o of i)a.push({...o,severity:"warning"})})}function re(e,n,t,s,a,l,r){let i=[];if(e===void 0)return i;if(!g(e))return i.push(d("view-shape",n,'views are an object of kinds, each with a "card", a "row" or a "page"')),i;for(let[o,f]of Object.entries(e)){if(o==="home"&&Array.isArray(f)){P(f,`${n}.home`,r,s,a,i,"the home");continue}let u=t(o);if(!u){i.push(d("view-kind",`${n}.${o}`,`"${o}" is not a kind this ${l} declares`));continue}if(!g(f)){i.push(d("view-shape",`${n}.${o}`,`a kind's views are {"card": [blocks], "row": [blocks], "page": [blocks]}`));continue}for(let c of Object.keys(f))E.includes(c)||i.push(d("view-slot",`${n}.${o}.${c}`,`"${c}" is not a place a view is drawn`,`use ${E.map(p=>`"${p}"`).join(", ")}`));for(let c of E){let p=f[c];if(p===void 0)continue;let y={kind:o,spec:u,kinds:s,edges:a,vocabulary:r,findings:i,count:0,all:0,slot:c};x(p,`${n}.${o}.${c}`,1,y),H(y,`${n}.${o}.${c}`,`this ${c}`,"show less, or move detail to the page")}}return i}function he(e){let n=new Set(Object.keys(e.kinds)),t=new Set(Object.values(e.kinds).flatMap(r=>Object.keys($(r.edges)))),s=r=>{let i=m(e.kinds,r)?e.kinds[r]:void 0;return i?{field:o=>m(i.fields,o)||m(i.computed,o)||F(i.edges).has(o),relation:o=>m($(i.edges),o),figure:i.figure!==void 0,files:o=>m(i.fields,o)&&Y(i.fields[o]),choices:o=>m(i.fields,o)&&i.fields[o].type==="enum"?i.fields[o].options:void 0,targets:o=>m($(i.edges),o)?i.edges[o].to:void 0,prose:o=>m(i.fields,o)&&i.fields[o].type==="text"}:void 0},a={namesOf:s,sources:r=>Object.keys(e.kinds).filter(i=>m(e.kinds[i].edges,r))},l=re(e.views,"views",s,n,t,"document",a);return se(e.lenses,a,n,t,l),l}export{j as a,U as b,L as c,B as d,M as e,ce as f,X as g,ge as h,ye as i,he as j};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as l}from"./chunk.
|
|
1
|
+
import{b as l}from"./chunk.HZPRMHSL.js";import{ie as i}from"./chunk.IQGSEAQ2.js";function c(e){return e.toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-|-$/g,"")}function p(e,n={}){let[t="/",a=""]=e.split("#")[0].split("?"),r=new URLSearchParams(a);n.filter&&r.set("filter",n.filter);let s=r.toString(),o=n.section?c(n.section):"";return`${t}${s?`?${s}`:""}${o?`#${o}`:""}`}var m=e=>({as:e.slug,title:e.title,kind:e.kind,is:e.kind===null?e.slug===i?"home":"overview":e.address.startsWith("/places/")?"place":"list",...e.hidden?{hidden:!0}:{}});function d(e,n){let t=[];for(let a of e)a.kind!==null&&n.has(a.kind)||a.over?.some(r=>n.has(r))||t.some(r=>r.as===a.slug)||t.push(m(a));return t}function y(e,n,t={}){return d(l(e,n,t.pages?{pages:t.pages}:{}),t.kept??new Set)}export{c as a,p as b,y as c};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as Ce,d as $e,i as U}from"./chunk.OKZT2QBM.js";import{e as Te}from"./chunk.ACTXR2MI.js";import{$a as Se,Dc as se,Id as Re,Kb as ae,L as ke,Ld as De,Nd as We,Od as Me,da as M,db as G,fa as xe,ga as W,he as je,ia as _,ja as z,ka as Ae,ld as ve,ma as we,md as Oe,na as Ne}from"./chunk.DZZL5IDD.js";function V(n,e){return n.display?.labels?.[e]??W(e)}function de(n){let e=U(n);switch(e.type){case"text":case"date":case"number":case"boolean":case"choice":return e.type;default:return}}function Je(n,e){let t=new Map,i=n.tryDefinition(e);for(let[r,a]of Object.entries(i?.edges??{}))t.set(r,{key:r,label:a.description?M(a.description):W(r),about:"edge",far:a.to==="*"?[...n.kinds]:[...a.to]});for(let r of n.definitions)if(r.kind!==e)for(let[a,s]of Object.entries(r.edges??{}))t.has(a)||s.to!=="*"&&!s.to.includes(e)||t.set(a,{key:a,label:s.inverse?M(s.inverse):W(a),about:"edge",far:[r.kind]});return[...t.values()]}var Ze=["current","past","any","flagged","clear"];function Fe(n,e){let t=n?.lifecycle;if(!t||t.retired==="date")return!1;let i=t.retired.map(String);return e.some(r=>r.key===t.field&&i.includes(r.value))}function Be(n,e){let t=n.tryDefinition(e);if(!t)return{kind:e,sorts:[],filters:[],groups:[]};let i=new Set(t.display?.hide??[]),r=t.fields.shape??{},a=[{key:"label",label:"Name",about:"label",type:"text"}],s=[],u=[];for(let[g,k]of Object.entries(r)){if(g==="id"||g==="kind"||g==="label"||i.has(g))continue;let A=en(k);if(A){s.push({key:g,label:V(t,g),about:"field",type:"choice",options:A});continue}let w=de(k);if(!w)continue;let N=V(t,g),O=w==="choice"?Le(k):w==="boolean"?["true","false"]:void 0,S={key:g,label:N,about:"field",type:w,...O?{options:O}:{}};a.push(S),s.push(S),(w==="boolean"||w==="choice")&&u.push(S),w==="date"&&u.push({...S,buckets:["day","week","month","year","decade"]})}for(let g of Je(n,e))a.push(g),s.push(g),u.push(g);let l={key:"is",label:t.lifecycle?"Standing and currency":"Standing",about:"is",type:"choice",options:t.lifecycle?[...Ze]:["flagged","clear"]};s.push(l);let y=t.fieldRoles?.order,f=y&&(y in r||y==="label")?{by:y,direction:"asc"}:void 0;return{kind:e,sorts:a,filters:s,groups:u,...f?{natural:f}:{}}}function On(n,e){let t=[];for(let r of e.filters){let a=r.about==="edge"&&r.far?.length===1?n.tryDefinition(r.far[0]):void 0;if(!(!a||a.kind===e.kind))for(let[s,u]of Object.entries(a.fields.shape??{}))de(u)!=="choice"||a.display?.hide?.includes(s)||t.push({key:`${r.key}.${s}`,label:`${r.label} \xB7 ${V(a,s)}`,about:"via",type:"choice",options:Le(u),far:[a.kind]})}if(t.length===0)return e;let i=e.filters.filter(r=>r.about!=="is");return{...e,filters:[...i,...t,...e.filters.filter(r=>r.about==="is")]}}function Rn(n,e){let t=n.tryDefinition(e.kind),i=Object.entries(t?.computed??{});if(!t||i.length===0)return e;let r=i.filter(([a])=>!e.sorts.some(s=>s.key===a)).map(([a,s])=>({key:a,label:(typeof s=="object"?s.label:void 0)??V(t,a),about:"field",type:"number"}));return{...e,sorts:[...e.sorts,...r]}}function Le(n){let e=U(n);return e.type==="choice"?e.options:[]}function en(n){let e=U(n);return e.type==="several"&&e.of.type==="choice"?e.of.options:void 0}var Ie=n=>n,Pe=n=>n;function nn(n,e,t){let i=new Map;for(let r of[...n.out(e,t),...n.in(e,t)])i.set(r.id,r);return[...i.values()]}function le(n,e,t){let i=n.schema.tryDefinition(e.kind);if(t.key==="is")switch(t.value){case"current":return _(i,Pe(e),n.today);case"past":return!_(i,Pe(e),n.today);case"any":return!0;case"flagged":return n.flagged?.has(e.id)??!1;case"clear":return!(n.flagged?.has(e.id)??!1);default:return!0}let r=i?.fields.shape??{};if(t.key in r){let l=Se(Ie(e),t.key,n.today??ke()),y=de(r[t.key]);if(y==="date"){let[f,g]=t.value.split(":");if(typeof l!="string"||!g)return!1;let k=l.slice(0,10);return f==="before"?k<g:f==="after"?k>g:k===g}if(y==="boolean")return String(l)===t.value;if(Array.isArray(l))return l.some(f=>String(f)===t.value);if(y==="number"){let f=t.value.lastIndexOf(":"),g=f>0?t.value.slice(0,f):"",k=Number(t.value.slice(f+1));if(g==="at-most"||g==="at-least")return typeof l!="number"||!Number.isFinite(k)?!1:g==="at-most"?l<=k:l>=k}return String(l)===t.value}let[a,s]=t.key.split("."),u=nn(n.graph,e.id,a);return s?u.some(l=>String(Ie(l)[s])===t.value):t.value==="*"?u.length>0:t.value==="none"?u.length===0:u.some(l=>l.id===t.value)}var tn=5;function ze(n){return n.normalize("NFD").replace(/\p{M}+/gu,"").toLowerCase().replace(/[^\p{L}\p{N}]+/gu," ").trim()}function ce(n){return ze(n).replace(/ /g,"")}var X=new Map,rn=5e4;function $(n){let e=X.get(n);if(e===void 0){X.size>=rn&&X.clear();let t=ze(n);e={tokens:t.split(" ").filter(Boolean),whole:t.replace(/ /g,"")},X.set(n,e)}return e}var T=n=>[...$(n).tokens];function j(n,e){if(e.length===0)return;let{whole:t,tokens:i}=$(n),r=e.join("");if(t.length===0)return;if(t===r)return"exact";if(e.every(s=>i.some(u=>u.startsWith(s))))return t.startsWith(r)?"prefix":e.every(s=>i.includes(s))?"word":"part"}function q(n,e,t=48){let i=n.replace(/\s+/g," ").trim();if(i.length<=t)return i;let r=e[0],a=i.normalize("NFD").replace(/\p{M}/gu,"").toLowerCase(),s=r?a.search(new RegExp(`(^|[^\\p{L}\\p{N}])${on(r)}`,"u")):-1,u=s<0?0:s+(a[s]&&/[\p{L}\p{N}]/u.test(a[s])?0:1),l=Math.max(0,u-Math.floor(t/3));if(l>0){let f=i.lastIndexOf(" ",l);l=f<0?0:f+1}let y=Math.min(i.length,l+t);if(y<i.length){let f=i.indexOf(" ",y);y=f<0||f-y>16?y:f}return`${l>0?"\u2026":""}${i.slice(l,y).trim()}${y<i.length?"\u2026":""}`}var on=n=>n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),an=/^([\p{L}][\p{L}\p{N}_-]*):(\S+)$/u;function sn(n){let e=[],t=[];for(let i of n.trim().split(/\s+/).filter(Boolean)){let r=an.exec(i);r?t.push({key:r[1],value:r[2]}):e.push(i)}return{words:e.join(" "),conditions:t}}var Ee=new WeakMap;function Q(n,e){let t=Ee.get(e);if(t&&t.definition===n)return t.texts;let i=dn(n,e);return Ee.set(e,{definition:n,texts:i}),i}function dn(n,e){let t=z(n,e),i=[{field:"label",reading:"Name",text:t}];for(let r of $e(e,n,{limit:Number.POSITIVE_INFINITY}))r.key==="label"||r.value===t||typeof e[r.key]!="boolean"&&i.push({field:r.key,reading:r.label,text:r.markdown?Te(r.value):r.value});return i}var I={exact:0,prefix:1,word:2,part:3,field:4,near:5},Ge=new Set(["a","an","the","of","and","or","for","to","in","on","at","by","with","my","our","is"]);function Ke(n){let e=n;e.length>4&&e.endsWith("ies")?e=`${e.slice(0,-3)}y`:e.length>4&&/(ss|x|ch|sh|z)es$/.test(e)?e=e.slice(0,-2):e.length>3&&e.endsWith("s")&&!/(ss|us|is)$/.test(e)&&(e=e.slice(0,-1));for(let t of["ing","ed"])if(e.length>t.length+2&&e.endsWith(t)){e=e.slice(0,-t.length),/([b-df-hj-km-np-rtv-z])\1$/.test(e)&&(e=e.slice(0,-1));break}return e.length>3&&e.endsWith("e")?e.slice(0,-1):e}function He(n,e,t){if(Math.abs(n.length-e.length)>t)return t+1;let i=[],r=Array.from({length:e.length+1},(a,s)=>s);for(let a=1;a<=n.length;a++){let s=[a],u=a;for(let l=1;l<=e.length;l++){let y=Math.min(r[l]+1,s[l-1]+1,r[l-1]+(n[a-1]===e[l-1]?0:1));a>1&&l>1&&n[a-1]===e[l-2]&&n[a-2]===e[l-1]&&(y=Math.min(y,i[l-2]+1)),s[l]=y,y<u&&(u=y)}if(u>t)return t+1;i=r,r=s}return r[e.length]}var Y=new Map;function ln(n,e){let t=Y.get(n);t||(Y.size>=64&&Y.clear(),Y.set(n,t=new Map));let i=t.get(e);return i===void 0&&(i=cn(n,e)??null,t.set(e,i)),i??void 0}function cn(n,e){if(/\d/.test(n))return;let t=Ke(n);if(t.length>=3&&(Ke(e)===t||t.length>=4&&e.startsWith(t)))return"stem";let i=n.length<4?0:n.length<=7?1:2;if(i!==0){if(He(n,e,i)<=i)return"spelling";if(n.length>=5){for(let r=n.length-i;r<=n.length+i;r++)if(r<e.length&&He(n,e.slice(0,r),i)<=i)return"spelling"}}}function fn(n,e){let t=e.length>1?e.filter(r=>!Ge.has(r)):e;if(t.length===0)return;let i;for(let r of t){let a;for(let s of n){for(let u of $(s.text).tokens){if(u.startsWith(r)){a={text:s,matched:u};break}let l=a?void 0:ln(r,u);l&&(a={text:s,matched:u,by:l})}if(a&&!a.by)break}if(!a)return;a.by&&!i&&(i={text:a.text,asked:r,matched:a.matched,by:a.by})}if(i)return{field:i.text.field,reading:i.text.reading,fragment:q(i.text.text,[i.matched]),strength:"near",asked:i.asked,matched:i.matched,by:i.by}}var un=80;function gn(n,e,t){let i=T(e).filter(s=>!Ge.has(s)).join(" ")||e,r=t===void 0?[]:T(t),a=r.length>0&&n.find(s=>r.every(u=>$(s.text).tokens.some(l=>l.startsWith(u))))||n[0];return{field:a.field,reading:a.reading,fragment:q(a.text,r),strength:"near",asked:i,matched:(t??a.text).slice(0,un),by:"meaning"}}function _e(n,e,t,i){let r=T(t);if(r.length===0)return;if(i){let A=Q(n,e),w=i.includes("label")||i.some(v=>typeof e[v]=="string"&&e[v]===A[0].text),N=A.filter((v,D)=>D===0?w:i.includes(v.field)),O=v=>D=>$(D.text).tokens.some(P=>P.startsWith(v));if(!r.every(v=>N.some(O(v))))return;let S=N.find(O(r[0]));return{field:S.field,reading:S.reading,fragment:q(S.text,r),strength:S.field==="label"?j(S.text,r)??"field":"field"}}let a=Q(n,e),[s,...u]=a,l=j(s.text,r);if(l)return{field:"label",reading:s.reading,fragment:q(s.text,r),strength:l};let y=A=>w=>$(w.text).tokens.some(N=>N.startsWith(A));if(!r.every(A=>a.some(y(A))))return;let f=T(s.text),g=r.find(A=>!f.some(w=>w.startsWith(A)))??r[0],k=u.find(y(g));return{field:k.field,reading:k.reading,fragment:q(k.text,[g]),strength:"field"}}var yn=512,hn=64;function pn(n){let e=new Map;if(n.length===0)return e;let t=n.slice(-yn),i=n[n.length-1].seq;for(let r of t){let a=Math.pow(.5,(i-r.seq)/hn);for(let s of r.writes)e.set(s,(e.get(s)??0)+a)}return e}var ue=(n,e)=>we({tryDefinition:()=>n},e),fe=(n,e)=>De({tryDefinition:()=>n},e);function mn(n,e,t){let i=n.tryDefinition(e),r=[{field:"plural",text:ue(i,e)},{field:"kind",text:W(e)},...i?.noun?[{field:"noun",text:i.noun}]:[],...(i?.aliases??[]).map(s=>({field:"alias",text:s}))],a;for(let s of r){let u=j(s.text,t);u&&(!a||I[u]<I[a.strength])&&(a={strength:u,...s})}return a}var bn,kn=(n,e)=>(bn??=new Intl.Collator(void 0,{sensitivity:"base",numeric:!0})).compare(n,e),qe=(n,e)=>(n.nearly??0)-(e.nearly??0)||(n.archived??0)-(e.archived??0)||n.tier-e.tier||n.inKind-e.inKind||n.near-e.near||n.past-e.past||n.touched-e.touched||n.flagged-e.flagged||kn(n.name,e.name)||(n.id<e.id?-1:n.id>e.id?1:0);function En(n,e,t={}){let i=n.schema,r=sn(e),a=T(r.words),s=t.principal??{kind:"human"},u=n.kindsKeptFrom(s),l=n.modules.disabledKinds,y=r.conditions.filter(o=>o.key==="kind").map(o=>o.value),f=r.conditions.filter(o=>o.key==="is").map(o=>o.value),g=f.includes("any")||f.includes("past"),k=f.includes("past")&&!f.includes("any")&&!f.includes("current"),A=f.includes("archived")?!0:t.archived??"all",w=(o,d)=>{let c=ce(d),h=i.tryDefinition(o);return ce(o)===c||ce(ue(h,o))===c},N=i.kinds.filter(o=>!u.has(o)&&!l.has(o)&&(t.kinds===void 0||t.kinds.includes(o))&&(y.length===0||y.some(d=>w(o,d)))),S=r.conditions.filter(o=>o.key!=="kind").map(o=>({...o,admittedBy:N.filter(d=>Be(i,d).filters.some(c=>c.key===o.key))})),v=S.filter(o=>o.key!=="is"),D=f.filter(o=>o==="flagged"||o==="clear"||o==="past"||o==="archived"),P={kinds:N,past:g},Qe={hits:[],words:r.words,conditions:S,searched:P,byKind:{},total:0,matched:[]};if(a.length===0&&v.length===0&&D.length===0)return Qe;let J=t.today,F=t.flagged??new Set(n.violations().flatMap(o=>o.nodeIds)),Ue=t.touched??pn(n.log.all()),Z=new Set;for(let o of t.from??[]){Z.add(o);for(let d of n.graph.neighbors(o))Z.add(d.id)}let ge=ve(n,s)?Oe(n,s):void 0,ee=ae.keptFrom?.(n,s)&&n.seenBy(s).graph,ne=o=>je(o,t.basePath===void 0?{}:{basePath:t.basePath}),ye={schema:i,graph:n.graph,flagged:F,...J?{today:J}:{}},R=[],B={},L=[],E=[],K=(o,d,c,h,p,m)=>{let x=z(c,o);B[d]=(B[d]??0)+1,R.push({hit:{about:"node",id:o.id,kind:d,label:x,why:p,current:h,flagged:F.has(o.id),address:ne(`${fe(c,d)}/${encodeURIComponent(o.id)}`),...m===void 0?{}:{near:!0},...G(o)?{archived:!0}:{}},...m===void 0?{}:{nearly:2-m},tier:I[p.strength],inKind:d===t.inKind?0:1,near:Z.has(o.id)?0:1,past:h?0:1,archived:G(o)?1:0,touched:-(Ue.get(o.id)??0),flagged:F.has(o.id)?0:1,name:x,id:o.id})};for(let o of N){let d=i.tryDefinition(o),c=S.filter(p=>p.key!=="is"&&p.admittedBy.includes(o));if(a.length===0&&c.length===0&&D.length===0)continue;let h=Fe(d,c);for(let p of n.graph.nodesOfKind(o,{archived:A})){if(ge&&!ge(p.id))continue;let m=ee?ee.getNode(p.id):p;if(!m)continue;let x=_(d,m,J);if(!g&&!h&&!x){if(a.length>0&&f.length===0&&c.every(b=>le(ye,m,b))){let b=_e(d,m,r.words);b&&E.push({node:m,kind:o,definition:d,why:b})}continue}if(k&&x||!c.every(b=>le(ye,m,b))||f.includes("flagged")&&!F.has(m.id)||f.includes("clear")&&F.has(m.id))continue;let C=a.length>0?_e(d,m,r.words):c[0]?{field:c[0].key,reading:W(c[0].key),fragment:`${c[0].key}:${c[0].value}`,strength:"field"}:{field:"is",reading:"Is",fragment:`is:${D[0]}`,strength:"field"};C?K(m,o,d,x,C):a.length>0&&L.push({node:m,kind:o,definition:d,current:x})}}let te=o=>o.strength!=="field",re=!1;if(E.length>0&&R.length===0){re=!0;for(let o of E)K(o.node,o.kind,o.definition,!1,o.why)}else if(E.some(o=>te(o.why))&&!R.some(o=>te(o.hit.why))){re=!0;for(let o of E)te(o.why)&&K(o.node,o.kind,o.definition,!1,o.why)}let he=t.near!==!1&&a.length>0&&R.length<tn&&L.length>0,ie=new Set;if(he)for(let o of L){let d=fn(Q(o.definition,o.node),a);d&&(ie.add(o.node.id),K(o.node,o.kind,o.definition,o.current,d,d.by==="stem"?.9:.8))}let Ve=o=>o==="exact"||o==="prefix"?-1:I[o],oe=(o,d,c,h)=>({hit:o,tier:Ve(d),inKind:1,near:1,past:0,touched:0,flagged:1,name:c,id:h});if(a.length>0){for(let d of N){let c=mn(i,d,a);if(!c)continue;let h=Ne(i,d),p={field:c.field,reading:c.field==="plural"?"Plural":"Kind",fragment:c.text,strength:c.strength};R.push(oe({about:"kind",kind:d,label:h,why:p,count:B[d]??0,address:ne(fe(i.tryDefinition(d),d))},c.strength,h,`kind:${d}`))}let o=t.places??[];for(let d of Re(o.filter(c=>N.includes(c.kind)))){if(d.across&&u.has(d.across))continue;let c=j(d.title,a);if(!c)continue;let h={field:"title",reading:"Title",fragment:d.title,strength:c},p=Me(d,o)?fe(i.tryDefinition(d.kind),d.kind).slice(1):void 0,m=ne(We(d.as,p));R.push(oe({about:"place",kind:d.kind,title:d.title,as:d.as,why:h,address:m},c,d.title,`place:${d.kind}:${d.as}`))}for(let d of n.allInvariants()){let c=d.scope==="graph"?void 0:d.scope.kind;if(c&&!N.includes(c))continue;let h=d.label??W(d.name),p=j(h,a),m=p?void 0:j(W(d.name),a),x=p??m;if(!x)continue;let C={field:p?"label":"name",reading:p?"Rule":"Name",fragment:p?h:d.name,strength:x};R.push(oe({about:"rule",name:d.name,label:h,...c?{kind:c}:{},why:C},x,h,`rule:${d.name}`))}}let pe=()=>{R.sort(qe);let o=t.limit??50,d=R.slice(0,o).map(b=>b.hit),c=d.flatMap(b=>b.about==="node"?[(ee||n.graph).getNode(b.id)]:[]).filter(Boolean),h=Ce(c,b=>i.tryDefinition(b)),p=d.map(b=>b.about==="node"&&h.has(b.id)?{...b,apart:h.get(b.id)}:b),m=Object.values(B).reduce((b,Ye)=>b+Ye,0),x=R.flatMap(b=>b.hit.about==="node"?[b.hit.id]:[]),C=t.subject&&N.includes(String(n.graph.getNode(t.subject)?.kind))?xn(n,t.subject,r.words,{principal:s}):[];return{hits:[...p,...C],words:r.words,conditions:S,searched:re?{...P,past:!0}:P,byKind:{...B},total:m,matched:x}},H=pe(),me=t.rank;if(!he||!me)return H;let be=L.filter(o=>!ie.has(o.node.id)).map(({node:o,kind:d,definition:c})=>({id:o.id,kind:d,label:z(c,o),texts:Q(c,o)}));if(be.length===0)return H;let Xe=(async()=>{let o;try{o=await me(r.words,be)}catch{return H}let d=new Map(L.filter(h=>!ie.has(h.node.id)).map(h=>[h.node.id,h])),c=!1;for(let{id:h,score:p,matched:m}of Array.isArray(o)?o:[]){let x=d.get(h);!x||!(p>0)||(d.delete(h),c=!0,K(x.node,x.kind,x.definition,x.current,gn(Q(x.definition,x.node),r.words,typeof m=="string"?m:void 0),Math.min(1,p)))}return c?pe():H})();return{...H,later:Xe}}function xn(n,e,t,i={}){let r=i.principal??{kind:"human"},a=(ae.keptFrom?.(n,r)?n.seenBy(r):n).graph.getNode(e);if(!a)return[];if(n.kindsKeptFrom(r).has(a.kind))return[];let s=T(t),u=z(n.schema.tryDefinition(a.kind),a),l=[];for(let f of n.allMutations()){let g=f.subject;if(!g||g.kinds!=="*"&&!g.kinds.includes(a.kind))continue;let k=f.derived?.act;if((k==="archive"||k==="merge")&&G(a)||k==="unarchive"&&!G(a)||k==="leave-alone"&&se(a)||k==="allow-tidying"&&!se(a)||!n.permits({name:f.name,args:{[g.arg]:a.id}},r).ok)continue;let A=Ae(f),w=T(A),N=s.filter(v=>w.some(D=>D.startsWith(v))),O=N.length>0?j(A,N):void 0,S=O?{field:"title",reading:"Act",fragment:A,strength:O}:{field:"subject",reading:"On",fragment:u,strength:"field"};l.push({hit:{about:"act",name:f.name,title:A,subject:a.id,why:S,destructive:f.destructive===!0},tier:O?I[O]:I.field+1,inKind:0,near:0,past:f.destructive?1:0,touched:0,flagged:f.pinned?0:1,name:A,id:`act:${f.name}`})}l.sort(qe);let y=l.map(f=>f.hit);return i.limit===void 0?y:y.slice(0,i.limit)}function Kn(n,e){let t=e.kinds.map((a,s)=>{let u=ue(n.tryDefinition(a),a);return s===0?u:u.toLowerCase()}),i=xe(t)||"Nothing";return e.kinds.some(a=>n.tryDefinition(a)?.lifecycle)?e.past?`${M(i)}, past ones included.`:`${M(i)}, current ones; add is:any for past ones.`:`${M(i)}.`}export{V as a,de as b,Je as c,Fe as d,Be as e,On as f,Rn as g,Le as h,Ie as i,Pe as j,nn as k,le as l,ze as m,ce as n,sn as o,_e as p,pn as q,En as r,xn as s,Kn as t};
|
|
1
|
+
import{b as Ce,d as $e,i as U}from"./chunk.5IEZF433.js";import{e as Te}from"./chunk.5AD2QHWH.js";import{L as ke,Lc as se,Pb as ae,Sd as Re,Vd as De,Xd as We,Yd as Me,bb as Se,da as M,fa as xe,fb as G,ga as W,ka as _,la as z,ma as Ae,oa as we,pa as Ne,re as je,vd as ve,wd as Oe}from"./chunk.IQGSEAQ2.js";function V(n,e){return n.display?.labels?.[e]??W(e)}function de(n){let e=U(n);switch(e.type){case"text":case"date":case"number":case"boolean":case"choice":return e.type;default:return}}function Je(n,e){let t=new Map,i=n.tryDefinition(e);for(let[r,a]of Object.entries(i?.edges??{}))t.set(r,{key:r,label:a.description?M(a.description):W(r),about:"edge",far:a.to==="*"?[...n.kinds]:[...a.to]});for(let r of n.definitions)if(r.kind!==e)for(let[a,s]of Object.entries(r.edges??{}))t.has(a)||s.to!=="*"&&!s.to.includes(e)||t.set(a,{key:a,label:s.inverse?M(s.inverse):W(a),about:"edge",far:[r.kind]});return[...t.values()]}var Ze=["current","past","any","flagged","clear"];function Fe(n,e){let t=n?.lifecycle;if(!t||t.retired==="date")return!1;let i=t.retired.map(String);return e.some(r=>r.key===t.field&&i.includes(r.value))}function Be(n,e){let t=n.tryDefinition(e);if(!t)return{kind:e,sorts:[],filters:[],groups:[]};let i=new Set(t.display?.hide??[]),r=t.fields.shape??{},a=[{key:"label",label:"Name",about:"label",type:"text"}],s=[],u=[];for(let[g,k]of Object.entries(r)){if(g==="id"||g==="kind"||g==="label"||i.has(g))continue;let A=en(k);if(A){s.push({key:g,label:V(t,g),about:"field",type:"choice",options:A});continue}let w=de(k);if(!w)continue;let N=V(t,g),O=w==="choice"?Le(k):w==="boolean"?["true","false"]:void 0,S={key:g,label:N,about:"field",type:w,...O?{options:O}:{}};a.push(S),s.push(S),(w==="boolean"||w==="choice")&&u.push(S),w==="date"&&u.push({...S,buckets:["day","week","month","year","decade"]})}for(let g of Je(n,e))a.push(g),s.push(g),u.push(g);let l={key:"is",label:t.lifecycle?"Standing and currency":"Standing",about:"is",type:"choice",options:t.lifecycle?[...Ze]:["flagged","clear"]};s.push(l);let y=t.fieldRoles?.order,f=y&&(y in r||y==="label")?{by:y,direction:"asc"}:void 0;return{kind:e,sorts:a,filters:s,groups:u,...f?{natural:f}:{}}}function On(n,e){let t=[];for(let r of e.filters){let a=r.about==="edge"&&r.far?.length===1?n.tryDefinition(r.far[0]):void 0;if(!(!a||a.kind===e.kind))for(let[s,u]of Object.entries(a.fields.shape??{}))de(u)!=="choice"||a.display?.hide?.includes(s)||t.push({key:`${r.key}.${s}`,label:`${r.label} \xB7 ${V(a,s)}`,about:"via",type:"choice",options:Le(u),far:[a.kind]})}if(t.length===0)return e;let i=e.filters.filter(r=>r.about!=="is");return{...e,filters:[...i,...t,...e.filters.filter(r=>r.about==="is")]}}function Rn(n,e){let t=n.tryDefinition(e.kind),i=Object.entries(t?.computed??{});if(!t||i.length===0)return e;let r=i.filter(([a])=>!e.sorts.some(s=>s.key===a)).map(([a,s])=>({key:a,label:(typeof s=="object"?s.label:void 0)??V(t,a),about:"field",type:"number"}));return{...e,sorts:[...e.sorts,...r]}}function Le(n){let e=U(n);return e.type==="choice"?e.options:[]}function en(n){let e=U(n);return e.type==="several"&&e.of.type==="choice"?e.of.options:void 0}var Ie=n=>n,Pe=n=>n;function nn(n,e,t){let i=new Map;for(let r of[...n.out(e,t),...n.in(e,t)])i.set(r.id,r);return[...i.values()]}function le(n,e,t){let i=n.schema.tryDefinition(e.kind);if(t.key==="is")switch(t.value){case"current":return _(i,Pe(e),n.today);case"past":return!_(i,Pe(e),n.today);case"any":return!0;case"flagged":return n.flagged?.has(e.id)??!1;case"clear":return!(n.flagged?.has(e.id)??!1);default:return!0}let r=i?.fields.shape??{};if(t.key in r){let l=Se(Ie(e),t.key,n.today??ke()),y=de(r[t.key]);if(y==="date"){let[f,g]=t.value.split(":");if(typeof l!="string"||!g)return!1;let k=l.slice(0,10);return f==="before"?k<g:f==="after"?k>g:k===g}if(y==="boolean")return String(l)===t.value;if(Array.isArray(l))return l.some(f=>String(f)===t.value);if(y==="number"){let f=t.value.lastIndexOf(":"),g=f>0?t.value.slice(0,f):"",k=Number(t.value.slice(f+1));if(g==="at-most"||g==="at-least")return typeof l!="number"||!Number.isFinite(k)?!1:g==="at-most"?l<=k:l>=k}return String(l)===t.value}let[a,s]=t.key.split("."),u=nn(n.graph,e.id,a);return s?u.some(l=>String(Ie(l)[s])===t.value):t.value==="*"?u.length>0:t.value==="none"?u.length===0:u.some(l=>l.id===t.value)}var tn=5;function ze(n){return n.normalize("NFD").replace(/\p{M}+/gu,"").toLowerCase().replace(/[^\p{L}\p{N}]+/gu," ").trim()}function ce(n){return ze(n).replace(/ /g,"")}var X=new Map,rn=5e4;function $(n){let e=X.get(n);if(e===void 0){X.size>=rn&&X.clear();let t=ze(n);e={tokens:t.split(" ").filter(Boolean),whole:t.replace(/ /g,"")},X.set(n,e)}return e}var T=n=>[...$(n).tokens];function j(n,e){if(e.length===0)return;let{whole:t,tokens:i}=$(n),r=e.join("");if(t.length===0)return;if(t===r)return"exact";if(e.every(s=>i.some(u=>u.startsWith(s))))return t.startsWith(r)?"prefix":e.every(s=>i.includes(s))?"word":"part"}function q(n,e,t=48){let i=n.replace(/\s+/g," ").trim();if(i.length<=t)return i;let r=e[0],a=i.normalize("NFD").replace(/\p{M}/gu,"").toLowerCase(),s=r?a.search(new RegExp(`(^|[^\\p{L}\\p{N}])${on(r)}`,"u")):-1,u=s<0?0:s+(a[s]&&/[\p{L}\p{N}]/u.test(a[s])?0:1),l=Math.max(0,u-Math.floor(t/3));if(l>0){let f=i.lastIndexOf(" ",l);l=f<0?0:f+1}let y=Math.min(i.length,l+t);if(y<i.length){let f=i.indexOf(" ",y);y=f<0||f-y>16?y:f}return`${l>0?"\u2026":""}${i.slice(l,y).trim()}${y<i.length?"\u2026":""}`}var on=n=>n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),an=/^([\p{L}][\p{L}\p{N}_-]*):(\S+)$/u;function sn(n){let e=[],t=[];for(let i of n.trim().split(/\s+/).filter(Boolean)){let r=an.exec(i);r?t.push({key:r[1],value:r[2]}):e.push(i)}return{words:e.join(" "),conditions:t}}var Ee=new WeakMap;function Q(n,e){let t=Ee.get(e);if(t&&t.definition===n)return t.texts;let i=dn(n,e);return Ee.set(e,{definition:n,texts:i}),i}function dn(n,e){let t=z(n,e),i=[{field:"label",reading:"Name",text:t}];for(let r of $e(e,n,{limit:Number.POSITIVE_INFINITY}))r.key==="label"||r.value===t||typeof e[r.key]!="boolean"&&i.push({field:r.key,reading:r.label,text:r.markdown?Te(r.value):r.value});return i}var I={exact:0,prefix:1,word:2,part:3,field:4,near:5},Ge=new Set(["a","an","the","of","and","or","for","to","in","on","at","by","with","my","our","is"]);function Ke(n){let e=n;e.length>4&&e.endsWith("ies")?e=`${e.slice(0,-3)}y`:e.length>4&&/(ss|x|ch|sh|z)es$/.test(e)?e=e.slice(0,-2):e.length>3&&e.endsWith("s")&&!/(ss|us|is)$/.test(e)&&(e=e.slice(0,-1));for(let t of["ing","ed"])if(e.length>t.length+2&&e.endsWith(t)){e=e.slice(0,-t.length),/([b-df-hj-km-np-rtv-z])\1$/.test(e)&&(e=e.slice(0,-1));break}return e.length>3&&e.endsWith("e")?e.slice(0,-1):e}function He(n,e,t){if(Math.abs(n.length-e.length)>t)return t+1;let i=[],r=Array.from({length:e.length+1},(a,s)=>s);for(let a=1;a<=n.length;a++){let s=[a],u=a;for(let l=1;l<=e.length;l++){let y=Math.min(r[l]+1,s[l-1]+1,r[l-1]+(n[a-1]===e[l-1]?0:1));a>1&&l>1&&n[a-1]===e[l-2]&&n[a-2]===e[l-1]&&(y=Math.min(y,i[l-2]+1)),s[l]=y,y<u&&(u=y)}if(u>t)return t+1;i=r,r=s}return r[e.length]}var Y=new Map;function ln(n,e){let t=Y.get(n);t||(Y.size>=64&&Y.clear(),Y.set(n,t=new Map));let i=t.get(e);return i===void 0&&(i=cn(n,e)??null,t.set(e,i)),i??void 0}function cn(n,e){if(/\d/.test(n))return;let t=Ke(n);if(t.length>=3&&(Ke(e)===t||t.length>=4&&e.startsWith(t)))return"stem";let i=n.length<4?0:n.length<=7?1:2;if(i!==0){if(He(n,e,i)<=i)return"spelling";if(n.length>=5){for(let r=n.length-i;r<=n.length+i;r++)if(r<e.length&&He(n,e.slice(0,r),i)<=i)return"spelling"}}}function fn(n,e){let t=e.length>1?e.filter(r=>!Ge.has(r)):e;if(t.length===0)return;let i;for(let r of t){let a;for(let s of n){for(let u of $(s.text).tokens){if(u.startsWith(r)){a={text:s,matched:u};break}let l=a?void 0:ln(r,u);l&&(a={text:s,matched:u,by:l})}if(a&&!a.by)break}if(!a)return;a.by&&!i&&(i={text:a.text,asked:r,matched:a.matched,by:a.by})}if(i)return{field:i.text.field,reading:i.text.reading,fragment:q(i.text.text,[i.matched]),strength:"near",asked:i.asked,matched:i.matched,by:i.by}}var un=80;function gn(n,e,t){let i=T(e).filter(s=>!Ge.has(s)).join(" ")||e,r=t===void 0?[]:T(t),a=r.length>0&&n.find(s=>r.every(u=>$(s.text).tokens.some(l=>l.startsWith(u))))||n[0];return{field:a.field,reading:a.reading,fragment:q(a.text,r),strength:"near",asked:i,matched:(t??a.text).slice(0,un),by:"meaning"}}function _e(n,e,t,i){let r=T(t);if(r.length===0)return;if(i){let A=Q(n,e),w=i.includes("label")||i.some(v=>typeof e[v]=="string"&&e[v]===A[0].text),N=A.filter((v,D)=>D===0?w:i.includes(v.field)),O=v=>D=>$(D.text).tokens.some(P=>P.startsWith(v));if(!r.every(v=>N.some(O(v))))return;let S=N.find(O(r[0]));return{field:S.field,reading:S.reading,fragment:q(S.text,r),strength:S.field==="label"?j(S.text,r)??"field":"field"}}let a=Q(n,e),[s,...u]=a,l=j(s.text,r);if(l)return{field:"label",reading:s.reading,fragment:q(s.text,r),strength:l};let y=A=>w=>$(w.text).tokens.some(N=>N.startsWith(A));if(!r.every(A=>a.some(y(A))))return;let f=T(s.text),g=r.find(A=>!f.some(w=>w.startsWith(A)))??r[0],k=u.find(y(g));return{field:k.field,reading:k.reading,fragment:q(k.text,[g]),strength:"field"}}var yn=512,hn=64;function pn(n){let e=new Map;if(n.length===0)return e;let t=n.slice(-yn),i=n[n.length-1].seq;for(let r of t){let a=Math.pow(.5,(i-r.seq)/hn);for(let s of r.writes)e.set(s,(e.get(s)??0)+a)}return e}var ue=(n,e)=>we({tryDefinition:()=>n},e),fe=(n,e)=>De({tryDefinition:()=>n},e);function mn(n,e,t){let i=n.tryDefinition(e),r=[{field:"plural",text:ue(i,e)},{field:"kind",text:W(e)},...i?.noun?[{field:"noun",text:i.noun}]:[],...(i?.aliases??[]).map(s=>({field:"alias",text:s}))],a;for(let s of r){let u=j(s.text,t);u&&(!a||I[u]<I[a.strength])&&(a={strength:u,...s})}return a}var bn,kn=(n,e)=>(bn??=new Intl.Collator(void 0,{sensitivity:"base",numeric:!0})).compare(n,e),qe=(n,e)=>(n.nearly??0)-(e.nearly??0)||(n.archived??0)-(e.archived??0)||n.tier-e.tier||n.inKind-e.inKind||n.near-e.near||n.past-e.past||n.touched-e.touched||n.flagged-e.flagged||kn(n.name,e.name)||(n.id<e.id?-1:n.id>e.id?1:0);function En(n,e,t={}){let i=n.schema,r=sn(e),a=T(r.words),s=t.principal??{kind:"human"},u=n.kindsKeptFrom(s),l=n.modules.disabledKinds,y=r.conditions.filter(o=>o.key==="kind").map(o=>o.value),f=r.conditions.filter(o=>o.key==="is").map(o=>o.value),g=f.includes("any")||f.includes("past"),k=f.includes("past")&&!f.includes("any")&&!f.includes("current"),A=f.includes("archived")?!0:t.archived??"all",w=(o,d)=>{let c=ce(d),h=i.tryDefinition(o);return ce(o)===c||ce(ue(h,o))===c},N=i.kinds.filter(o=>!u.has(o)&&!l.has(o)&&(t.kinds===void 0||t.kinds.includes(o))&&(y.length===0||y.some(d=>w(o,d)))),S=r.conditions.filter(o=>o.key!=="kind").map(o=>({...o,admittedBy:N.filter(d=>Be(i,d).filters.some(c=>c.key===o.key))})),v=S.filter(o=>o.key!=="is"),D=f.filter(o=>o==="flagged"||o==="clear"||o==="past"||o==="archived"),P={kinds:N,past:g},Qe={hits:[],words:r.words,conditions:S,searched:P,byKind:{},total:0,matched:[]};if(a.length===0&&v.length===0&&D.length===0)return Qe;let J=t.today,F=t.flagged??new Set(n.violations().flatMap(o=>o.nodeIds)),Ue=t.touched??pn(n.log.all()),Z=new Set;for(let o of t.from??[]){Z.add(o);for(let d of n.graph.neighbors(o))Z.add(d.id)}let ge=ve(n,s)?Oe(n,s):void 0,ee=ae.keptFrom?.(n,s)&&n.seenBy(s).graph,ne=o=>je(o,t.basePath===void 0?{}:{basePath:t.basePath}),ye={schema:i,graph:n.graph,flagged:F,...J?{today:J}:{}},R=[],B={},L=[],E=[],K=(o,d,c,h,p,m)=>{let x=z(c,o);B[d]=(B[d]??0)+1,R.push({hit:{about:"node",id:o.id,kind:d,label:x,why:p,current:h,flagged:F.has(o.id),address:ne(`${fe(c,d)}/${encodeURIComponent(o.id)}`),...m===void 0?{}:{near:!0},...G(o)?{archived:!0}:{}},...m===void 0?{}:{nearly:2-m},tier:I[p.strength],inKind:d===t.inKind?0:1,near:Z.has(o.id)?0:1,past:h?0:1,archived:G(o)?1:0,touched:-(Ue.get(o.id)??0),flagged:F.has(o.id)?0:1,name:x,id:o.id})};for(let o of N){let d=i.tryDefinition(o),c=S.filter(p=>p.key!=="is"&&p.admittedBy.includes(o));if(a.length===0&&c.length===0&&D.length===0)continue;let h=Fe(d,c);for(let p of n.graph.nodesOfKind(o,{archived:A})){if(ge&&!ge(p.id))continue;let m=ee?ee.getNode(p.id):p;if(!m)continue;let x=_(d,m,J);if(!g&&!h&&!x){if(a.length>0&&f.length===0&&c.every(b=>le(ye,m,b))){let b=_e(d,m,r.words);b&&E.push({node:m,kind:o,definition:d,why:b})}continue}if(k&&x||!c.every(b=>le(ye,m,b))||f.includes("flagged")&&!F.has(m.id)||f.includes("clear")&&F.has(m.id))continue;let C=a.length>0?_e(d,m,r.words):c[0]?{field:c[0].key,reading:W(c[0].key),fragment:`${c[0].key}:${c[0].value}`,strength:"field"}:{field:"is",reading:"Is",fragment:`is:${D[0]}`,strength:"field"};C?K(m,o,d,x,C):a.length>0&&L.push({node:m,kind:o,definition:d,current:x})}}let te=o=>o.strength!=="field",re=!1;if(E.length>0&&R.length===0){re=!0;for(let o of E)K(o.node,o.kind,o.definition,!1,o.why)}else if(E.some(o=>te(o.why))&&!R.some(o=>te(o.hit.why))){re=!0;for(let o of E)te(o.why)&&K(o.node,o.kind,o.definition,!1,o.why)}let he=t.near!==!1&&a.length>0&&R.length<tn&&L.length>0,ie=new Set;if(he)for(let o of L){let d=fn(Q(o.definition,o.node),a);d&&(ie.add(o.node.id),K(o.node,o.kind,o.definition,o.current,d,d.by==="stem"?.9:.8))}let Ve=o=>o==="exact"||o==="prefix"?-1:I[o],oe=(o,d,c,h)=>({hit:o,tier:Ve(d),inKind:1,near:1,past:0,touched:0,flagged:1,name:c,id:h});if(a.length>0){for(let d of N){let c=mn(i,d,a);if(!c)continue;let h=Ne(i,d),p={field:c.field,reading:c.field==="plural"?"Plural":"Kind",fragment:c.text,strength:c.strength};R.push(oe({about:"kind",kind:d,label:h,why:p,count:B[d]??0,address:ne(fe(i.tryDefinition(d),d))},c.strength,h,`kind:${d}`))}let o=t.places??[];for(let d of Re(o.filter(c=>N.includes(c.kind)))){if(d.across&&u.has(d.across))continue;let c=j(d.title,a);if(!c)continue;let h={field:"title",reading:"Title",fragment:d.title,strength:c},p=Me(d,o)?fe(i.tryDefinition(d.kind),d.kind).slice(1):void 0,m=ne(We(d.as,p));R.push(oe({about:"place",kind:d.kind,title:d.title,as:d.as,why:h,address:m},c,d.title,`place:${d.kind}:${d.as}`))}for(let d of n.allInvariants()){let c=d.scope==="graph"?void 0:d.scope.kind;if(c&&!N.includes(c))continue;let h=d.label??W(d.name),p=j(h,a),m=p?void 0:j(W(d.name),a),x=p??m;if(!x)continue;let C={field:p?"label":"name",reading:p?"Rule":"Name",fragment:p?h:d.name,strength:x};R.push(oe({about:"rule",name:d.name,label:h,...c?{kind:c}:{},why:C},x,h,`rule:${d.name}`))}}let pe=()=>{R.sort(qe);let o=t.limit??50,d=R.slice(0,o).map(b=>b.hit),c=d.flatMap(b=>b.about==="node"?[(ee||n.graph).getNode(b.id)]:[]).filter(Boolean),h=Ce(c,b=>i.tryDefinition(b)),p=d.map(b=>b.about==="node"&&h.has(b.id)?{...b,apart:h.get(b.id)}:b),m=Object.values(B).reduce((b,Ye)=>b+Ye,0),x=R.flatMap(b=>b.hit.about==="node"?[b.hit.id]:[]),C=t.subject&&N.includes(String(n.graph.getNode(t.subject)?.kind))?xn(n,t.subject,r.words,{principal:s}):[];return{hits:[...p,...C],words:r.words,conditions:S,searched:re?{...P,past:!0}:P,byKind:{...B},total:m,matched:x}},H=pe(),me=t.rank;if(!he||!me)return H;let be=L.filter(o=>!ie.has(o.node.id)).map(({node:o,kind:d,definition:c})=>({id:o.id,kind:d,label:z(c,o),texts:Q(c,o)}));if(be.length===0)return H;let Xe=(async()=>{let o;try{o=await me(r.words,be)}catch{return H}let d=new Map(L.filter(h=>!ie.has(h.node.id)).map(h=>[h.node.id,h])),c=!1;for(let{id:h,score:p,matched:m}of Array.isArray(o)?o:[]){let x=d.get(h);!x||!(p>0)||(d.delete(h),c=!0,K(x.node,x.kind,x.definition,x.current,gn(Q(x.definition,x.node),r.words,typeof m=="string"?m:void 0),Math.min(1,p)))}return c?pe():H})();return{...H,later:Xe}}function xn(n,e,t,i={}){let r=i.principal??{kind:"human"},a=(ae.keptFrom?.(n,r)?n.seenBy(r):n).graph.getNode(e);if(!a)return[];if(n.kindsKeptFrom(r).has(a.kind))return[];let s=T(t),u=z(n.schema.tryDefinition(a.kind),a),l=[];for(let f of n.allMutations()){let g=f.subject;if(!g||g.kinds!=="*"&&!g.kinds.includes(a.kind))continue;let k=f.derived?.act;if((k==="archive"||k==="merge")&&G(a)||k==="unarchive"&&!G(a)||k==="leave-alone"&&se(a)||k==="allow-tidying"&&!se(a)||!n.permits({name:f.name,args:{[g.arg]:a.id}},r).ok)continue;let A=Ae(f),w=T(A),N=s.filter(v=>w.some(D=>D.startsWith(v))),O=N.length>0?j(A,N):void 0,S=O?{field:"title",reading:"Act",fragment:A,strength:O}:{field:"subject",reading:"On",fragment:u,strength:"field"};l.push({hit:{about:"act",name:f.name,title:A,subject:a.id,why:S,destructive:f.destructive===!0},tier:O?I[O]:I.field+1,inKind:0,near:0,past:f.destructive?1:0,touched:0,flagged:f.pinned?0:1,name:A,id:`act:${f.name}`})}l.sort(qe);let y=l.map(f=>f.hit);return i.limit===void 0?y:y.slice(0,i.limit)}function Kn(n,e){let t=e.kinds.map((a,s)=>{let u=ue(n.tryDefinition(a),a);return s===0?u:u.toLowerCase()}),i=xe(t)||"Nothing";return e.kinds.some(a=>n.tryDefinition(a)?.lifecycle)?e.past?`${M(i)}, past ones included.`:`${M(i)}, current ones; add is:any for past ones.`:`${M(i)}.`}export{V as a,de as b,Je as c,Fe as d,Be as e,On as f,Rn as g,Le as h,Ie as i,Pe as j,nn as k,le as l,ze as m,ce as n,sn as o,_e as p,pn as q,En as r,xn as s,Kn as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as O,b}from"./chunk.
|
|
1
|
+
import{a as O,b}from"./chunk.5B7NG6WH.js";import"./chunk.UDYFGYJP.js";import"./chunk.TMHVYI5R.js";import"./chunk.R5MLRKAO.js";import"./chunk.YMXWS4XN.js";import"./chunk.3FKKH2XU.js";import"./chunk.DLWFULWE.js";import{G as z,V as M,da as S}from"./chunk.VLX7YWVH.js";import"./chunk.SDO3U72B.js";import{Ad as A}from"./chunk.IQGSEAQ2.js";import"./chunk.FQLNBIQ5.js";import{b as v}from"./chunk.AJZBJBMO.js";var o=v(z(),1);var t=v(M(),1);function G(i){for(let d of i)for(let[r,s]of Object.entries(d))if(s===!1)return`${r} == true`;return""}var w={margin:0,fontSize:"0.8125rem",color:"var(--graview-ink-muted)"};function $({ask:i,close:d}){let{store:r,principal:s,subscriptions:h,app:f}=S(),c=(0,o.useRef)(null),p=(0,o.useId)(),[n,u]=(0,o.useState)(0),[l,y]=(0,o.useState)(!0),[m,P]=(0,o.useState)(()=>{let e=i.choices.find(g=>g.on==="reaches");if(!e)return"";let a=e.record!==void 0?r.graph.getNode(e.record):void 0;return G(a?[a]:r.graph.nodesOfKind(e.kind).slice(0,5))}),[C,x]=(0,o.useState)(null),[W,k]=(0,o.useState)(!1);(0,o.useEffect)(()=>{let e=c.current;e&&!e.open&&e.showModal()},[]);let T=()=>{let e=i.returnTo;d(),requestAnimationFrame(()=>{e?.isConnected?e.focus():document.querySelector("[data-graview-page-title], main h1, [data-testid='activity-button']")?.focus()})},N=e=>e.on==="reaches"?{...e,condition:m}:e,E=e=>b(r,{when:N(e),alsoMine:!l}),L=async()=>{let e=N(i.choices[n]),a=O(r,e);if(a){x(a);return}k(!0);try{await h.add({who:A(s),app:f?.name??"app",when:e,...l?{}:{alsoMine:!0}}),T()}catch(g){k(!1),x(g instanceof Error?g.message:String(g))}};return(0,t.jsx)("dialog",{ref:c,"aria-labelledby":p,"data-testid":"notify-sheet",onClose:T,onClick:e=>{e.target===e.currentTarget&&e.currentTarget.close()},style:{width:"min(92vw, 420px)",padding:0,border:"1px solid var(--graview-edge)",borderRadius:"var(--graview-radius, 12px)",background:"var(--graview-panel)",color:"var(--graview-ink)",boxShadow:"var(--graview-lift-high)"},children:(0,t.jsxs)("form",{method:"dialog",onSubmit:e=>{e.preventDefault(),L()},style:{display:"grid",gap:12,padding:18},children:[(0,t.jsx)("h2",{id:p,style:{margin:0,fontSize:"1.0625rem"},children:"Notify me"}),(0,t.jsxs)("fieldset",{style:{margin:0,padding:0,border:0,display:"grid",gap:6},children:[(0,t.jsx)("legend",{style:{...w,marginBottom:6},children:"Tell me"}),i.choices.map((e,a)=>(0,t.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"baseline",cursor:"pointer"},children:[(0,t.jsx)("input",{type:"radio",name:`${p}-when`,checked:n===a,onChange:()=>u(a),"data-notify-choice":e.on}),(0,t.jsx)("span",{children:e.on==="reaches"?`When ${e.record!==void 0?"it":"one"} reaches a condition`:E(e)})]},a))]}),i.choices[n]?.on==="reaches"?(0,t.jsxs)("label",{style:{display:"grid",gap:4},children:[(0,t.jsx)("span",{style:w,children:"The condition, in the app's own words (done == true, amount > 100)"}),(0,t.jsx)("input",{value:m,onChange:e=>P(e.target.value),"data-testid":"notify-condition",autoComplete:"off",spellCheck:!1})]}):null,(0,t.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"center"},children:[(0,t.jsx)("input",{type:"checkbox",checked:l,onChange:e=>y(e.target.checked),"data-testid":"notify-others-only"}),"Only when someone else does it"]}),(0,t.jsxs)("p",{style:w,"data-testid":"notify-said",children:[E(i.choices[n]),"."]}),C?(0,t.jsx)("p",{role:"alert",style:{margin:0,color:"var(--graview-danger, var(--graview-ink))"},children:C}):null,(0,t.jsxs)("div",{style:{display:"flex",gap:8,justifyContent:"flex-end"},children:[(0,t.jsx)("button",{type:"button",onClick:()=>c.current?.close(),children:"Cancel"}),(0,t.jsx)("button",{type:"submit",autoFocus:!0,disabled:W,"data-testid":"notify-keep",style:{borderColor:"var(--graview-accent)",color:"var(--graview-accent)"},children:"Notify me"})]})]})})}function j({style:i}){let{store:d,principal:r,subscriptions:s,app:h}=S(),f=(r.onBehalfOf??r).id,[c,p]=(0,o.useState)([]);return(0,o.useEffect)(()=>{if(f===void 0)return;let n=!0,u=()=>void Promise.resolve(s.list(f)).then(y=>n&&p(y.filter(m=>m.app===(h?.name??"app"))),()=>n&&p([]));u();let l=s.onChange?.(u);return()=>{n=!1,l?.()}},[s,f,h]),c.length===0?null:(0,t.jsxs)("section",{"aria-label":"What you are told of","data-testid":"notified",style:{display:"grid",gap:6,...i},children:[(0,t.jsx)("span",{style:{fontSize:"0.75rem",letterSpacing:"0.14em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},children:"You are told"}),(0,t.jsx)("ul",{style:{margin:0,padding:0,listStyle:"none",display:"grid",gap:4},children:c.map(n=>(0,t.jsxs)("li",{style:{display:"flex",gap:8,alignItems:"baseline",justifyContent:"space-between"},"data-subscription":n.id,children:[(0,t.jsx)("span",{style:{fontSize:"0.8125rem"},children:b(d,n)}),(0,t.jsx)("button",{type:"button","data-testid":"notify-stop","aria-label":`Stop: ${b(d,n)}`,onClick:u=>{let l=u.currentTarget.closest("li"),y=(l?.nextElementSibling??l?.previousElementSibling)?.querySelector("button");Promise.resolve(s.remove(n.id)).then(()=>(y??document.querySelector("[data-testid='activity-button']"))?.focus())},style:{padding:"1px 8px",fontSize:"0.8125rem"},children:"Stop"})]},n.id))})]})}export{j as NotifiedList,$ as NotifySheet};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a,b,c,d,e,f}from"./chunk.XCLW4GP7.js";import"./chunk.BIDL7GQD.js";import"./chunk.Q5WEOX3Q.js";import"./chunk.2E62YCMZ.js";import"./chunk.DUP2CGVH.js";import"./chunk.7CLKGKSF.js";import"./chunk.TMHVYI5R.js";import"./chunk.R5MLRKAO.js";import"./chunk.YMXWS4XN.js";import"./chunk.IQGSEAQ2.js";import"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";export{a as PROPOSE_CHANGE,b as documentOfApp,f as proposeReshape,d as readReshape,e as reshapeCard,c as reshapeQuestions};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{d as z,e as D,f as H}from"./chunk.GHHKRFPD.js";import"./chunk.6NRWLCIZ.js";import{a as P,b as A,c as p,d as W}from"./chunk.Q355UPFG.js";import"./chunk.ZQGLPP7A.js";import"./chunk.VZAF3452.js";import"./chunk.WHX47OJM.js";import"./chunk.QRT6BZR6.js";import"./chunk.2V7QTIAV.js";import"./chunk.Z26T5E76.js";import"./chunk.77JI5T4F.js";import"./chunk.SADHOSRC.js";import"./chunk.4DZOAB4D.js";import"./chunk.UDU545CL.js";import"./chunk.7VAHHEDX.js";import"./chunk.P4TAX3HE.js";import"./chunk.T4TRJDBF.js";import"./chunk.2TCOLAL2.js";import"./chunk.2VYGDY5Z.js";import"./chunk.FUPYIOXZ.js";import"./chunk.APRWUIE3.js";import"./chunk.3OEODIHB.js";import"./chunk.WFCE7NLK.js";import{a as C,b as O}from"./chunk.MB7LKKUD.js";import"./chunk.WVUJXDXZ.js";import"./chunk.ZA5TDCBC.js";import"./chunk.2JEN2RCB.js";import"./chunk.7CLKGKSF.js";import"./chunk.TMHVYI5R.js";import"./chunk.R5MLRKAO.js";import"./chunk.YMXWS4XN.js";import"./chunk.GZHZLJBF.js";import"./chunk.3SAESG6X.js";import"./chunk.OJGHDWI6.js";import"./chunk.F6BNFLQM.js";import"./chunk.75JQCTR6.js";import"./chunk.5IEZF433.js";import"./chunk.5AD2QHWH.js";import"./chunk.3FKKH2XU.js";import"./chunk.DLWFULWE.js";import{G as B,Ua as k,V as L}from"./chunk.VLX7YWVH.js";import"./chunk.SDO3U72B.js";import{sd as R}from"./chunk.IQGSEAQ2.js";import"./chunk.FQLNBIQ5.js";import{b as E}from"./chunk.AJZBJBMO.js";var r=E(B(),1);var s=E(L(),1);function M(c){let e=document.activeElement;if(e!==null&&e!==document.body&&e!==document.documentElement&&e.isConnected)return;let n=c??document,o=n.querySelector("main")??n.querySelector("[data-graview-page]")??null,t=n.querySelector("[data-graview-page-title]")??o?.querySelector("h1, h2")??o;t instanceof HTMLElement&&(t.hasAttribute("tabindex")||t.setAttribute("tabindex","-1"),t.focus({preventScroll:!0}))}var I=1500;function N(c,e,n){let{store:o,principal:t}=c,l=z(o),g=(0,r.useMemo)(()=>P(o,t),[o,t,l]),w=(0,r.useRef)(n),[b,d]=(0,r.useState)(),[y,u]=(0,r.useState)("");(0,r.useEffect)(()=>{let a=A(o,t,w.current);w.current=o.batches().length,a&&(d({batch:a.batch,at:e,when:Date.now()}),u(""))},[o,t,l]),(0,r.useEffect)(()=>{d(a=>!a||a.at===e?a:Date.now()-a.when<I?{...a,at:e}:void 0)},[e]);let[x,i]=(0,r.useState)(null),v=(0,r.useCallback)(()=>{d(void 0),i(null)},[]),f=(0,r.useCallback)(()=>{i(null);try{let a=W(o,t);a&&u(`Took back \u201C${a.intent}\u201D`)}catch(a){i(a instanceof Error?a.message:String(a))}},[o,t]),S=g&&b?.batch===g.batch&&b.at===e?g:void 0;return{change:g,offered:S,close:v,takeBack:f,refused:x,said:y}}function ee({context:c,docked:e,at:n,since:o,compact:t=!1,className:l,size:g}){let{change:w,offered:b,close:d,takeBack:y,refused:u,said:x}=N(c,n,o),i=e?b:w,v=(0,r.useRef)(null),f=e&&(i!==void 0||u!==null);j(v,f),(0,r.useEffect)(()=>{if(!f)return;let m,h=()=>m=setTimeout(()=>v.current?.matches(":hover, :focus-within")?h():d(),1e4);return h(),()=>clearTimeout(m)},[f,i?.batch,u,d]);let S=x||(e&&i?p(i):""),a=e?{position:"fixed",inset:"auto",margin:0,padding:0,border:"none",background:"none",overflow:"visible",zIndex:R("toast"),width:"max-content",height:"auto",bottom:"calc(16px + env(safe-area-inset-bottom, 0px))",left:16,justifyItems:"start",color:"var(--graview-ink)",...f?{}:{display:"none"}}:{},T=i?(0,s.jsxs)("button",{type:"button","data-testid":"page-undo",title:`${p(i)} \u2014 \u2318Z or Ctrl+Z`,"aria-keyshortcuts":"Meta+Z Control+Z",onClick:m=>{let h=m.currentTarget.closest("[data-graview-face]");y(),requestAnimationFrame(()=>M(h))},...e?{style:U}:{className:H("graview-undo",l),...D(g),...t?{"data-compact":"","aria-label":p(i)}:{}},children:[(0,s.jsx)("span",{"aria-hidden":"true",children:"\u21B6"}),e?(0,s.jsx)("span",{style:K,children:p(i)}):(0,s.jsx)("span",{className:"graview-undo-words",children:t?"Undo":p(i)})]}):null;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{role:"status","aria-live":"polite",style:V,children:S}),(0,s.jsxs)("div",{ref:v,...e?{popover:"manual","data-graview-foot":"","data-graview-offstage":""}:{},"data-testid":e?"face-undo-dock":"page-undo-place",...e?{style:{...F,...a}}:{className:"graview-undo-place"},children:[e?null:(0,s.jsx)("style",{children:q}),e&&i?(0,s.jsxs)("div",{"data-testid":"page-undo-notice",style:Z,children:[T,(0,s.jsx)("button",{type:"button","data-testid":"page-undo-dismiss","aria-label":`Dismiss: ${p(i)}`,title:"Dismiss",onClick:m=>{let h=m.currentTarget.closest("[data-graview-face]");d(),requestAnimationFrame(()=>M(h))},style:$,children:"\xD7"})]}):T,u?(0,s.jsx)("span",{"data-testid":"page-undo-refused",role:"alert",className:"graview-undo-refused",...e?{style:{fontSize:"0.8125rem",lineHeight:1.4,color:"var(--graview-warn)",borderRadius:6,background:"var(--graview-float)",padding:"4px 8px"}}:{},children:u}):null]})]})}function j(c,e){(0,r.useLayoutEffect)(()=>{let n=c.current;if(!n||!e)return;if(typeof n.showPopover=="function"&&!k(n))try{n.showPopover()}catch{}let o=()=>n.parentElement?.closest("[data-embed-content]")??null,t=()=>{O(n,o()),dispatchEvent(new Event(C))};t(),addEventListener("resize",t),addEventListener("scroll",t,!0);let l=typeof ResizeObserver=="function"?new ResizeObserver(t):null;return l?.observe(n),()=>{if(l?.disconnect(),removeEventListener("resize",t),removeEventListener("scroll",t,!0),n.isConnected&&k(n))try{n.hidePopover()}catch{}dispatchEvent(new Event(C))}},[c,e])}var q=`:where(.graview-undo-place){display:grid;justify-items:end;gap:4px;max-width:100%;min-width:0}
|
|
2
|
+
:where(.graview-undo){box-sizing:border-box;display:inline-flex;align-items:center;gap:6px;min-height:var(--graview-control-height,36px);max-width:min(100%,var(--graview-undo-widest,18rem));min-width:0;padding:0 14px;border-radius:999px;border:1px solid var(--graview-edge);background:var(--graview-float);color:var(--graview-ink);font:inherit;font-size:.875rem;cursor:pointer}
|
|
3
|
+
:where(.graview-undo[data-size=sm]){--graview-control-height:30px}
|
|
4
|
+
:where(.graview-undo[data-compact]){padding:0 10px}
|
|
5
|
+
:where(.graview-undo-words){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
6
|
+
:where(.graview-undo-refused){font-size:.8125rem;line-height:1.4;color:var(--graview-warn);border-radius:6px}`,F={display:"grid",justifyItems:"end",gap:4,maxWidth:"100%",minWidth:0},U={display:"inline-flex",alignItems:"center",gap:6,minHeight:36,maxWidth:"100%",minWidth:0,borderRadius:999,font:"inherit",fontSize:"0.875rem",cursor:"pointer",textAlign:"start",lineHeight:1.4,padding:"8px 4px 8px 14px",border:"none",background:"none",color:"inherit"},Z={display:"flex",alignItems:"center",gap:2,maxWidth:"100%",minWidth:0,paddingRight:6,borderRadius:"var(--graview-radius, 12px)",border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)"},$={flex:"0 0 auto",minWidth:28,minHeight:28,padding:0,border:"none",background:"none",boxShadow:"none",color:"var(--graview-ink-muted)",font:"inherit",fontSize:"1rem",cursor:"pointer"},K={minWidth:0,overflow:"hidden",overflowWrap:"anywhere",display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:4},V={position:"absolute",width:1,height:1,margin:-1,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",whiteSpace:"nowrap",border:0};export{ee as TakeBack};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{a as q,b as ye,e as fe,f as he,g as be}from"./chunk.3OEODIHB.js";import{b as X}from"./chunk.WFCE7NLK.js";import{c as ge}from"./chunk.ZA5TDCBC.js";import{o as V}from"./chunk.3SAESG6X.js";import{b as R,c as pe,d as ue,j as ce,k as me}from"./chunk.75JQCTR6.js";import{d as le,e as de}from"./chunk.5IEZF433.js";import{b as j,f as se}from"./chunk.5AD2QHWH.js";import{G as Se,Ja as ie,Ka as oe,U as ne,V as ae,da as F,ea as re,ga as G}from"./chunk.VLX7YWVH.js";import{a as te}from"./chunk.SDO3U72B.js";import{Eb as ee,ga as $,ra as Z}from"./chunk.IQGSEAQ2.js";import{b as K}from"./chunk.AJZBJBMO.js";var d=K(Se(),1);var xe=oe(te(()=>(__graviewPreload(import.meta.url,["./chunk.APRWUIE3.js","./chunk.3OEODIHB.js","./chunk.WFCE7NLK.js","./chunk.WVUJXDXZ.js","./chunk.ZA5TDCBC.js","./chunk.2JEN2RCB.js","./chunk.7CLKGKSF.js","./chunk.TMHVYI5R.js","./chunk.R5MLRKAO.js","./chunk.YMXWS4XN.js","./chunk.GZHZLJBF.js","./chunk.3SAESG6X.js","./chunk.OJGHDWI6.js","./chunk.F6BNFLQM.js","./chunk.75JQCTR6.js","./chunk.5IEZF433.js","./chunk.5AD2QHWH.js","./chunk.3FKKH2XU.js","./chunk.DLWFULWE.js","./chunk.VLX7YWVH.js","./chunk.SDO3U72B.js","./chunk.IQGSEAQ2.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.XEG7ZDRG.js")))),ve=xe.part((i,n)=>i.drawAppLink(n),{quiet:!0});var e=K(ae(),1);function Y({nodeId:i,field:n,value:l,stored:s=l,said:f,blank:m=!1}){let{fields:o,commit:g}=V(i),t=o.find(r=>r.field===n),{store:k,principal:v}=F(),L=k.graph.getNode(i)?.kind,S=k.schema.definitions.find(r=>r.kind===L),h=Z(S,n),a=h.toLowerCase(),T=f??`${h.charAt(0).toUpperCase()}${h.slice(1)}: ${l}`,[E,M]=(0,d.useState)(!1),p=t?.shape.type==="number"?t.shape.amount:void 0,W=p&&s!==""&&Number.isFinite(Number(s))?pe(Number(s),p):s,[b,P]=(0,d.useState)(W),c=(0,d.useRef)(null),z=(0,d.useRef)(null),U=(0,d.useRef)(!1),[J,O]=(0,d.useState)(void 0),x=r=>{U.current=r,M(!1)};(0,d.useEffect)(()=>P(W),[W,E]);let Q=t?.shape.type==="date";if((0,d.useEffect)(()=>{if(Q)return ie(()=>void be())},[Q]),(0,d.useEffect)(()=>{E?c.current?.focus():U.current&&(U.current=!1,z.current?.focus())},[E]),!t)return(0,e.jsx)("span",{"data-graview-field":n,"data-graview-readonly":"",title:`Read-only \u2014 nothing this app declares changes the ${a}`,style:{color:"var(--graview-ink)",cursor:"default",overflowWrap:"anywhere"},children:l});if(!E){let r=(0,e.jsx)("button",{ref:z,type:"button","data-graview-field":n,"data-graview-editable":t.mutation,...m?{"data-graview-blank":""}:{},...T===l?{}:{"aria-label":T},title:`${t.title} \u2014 changes the ${a}, and can be undone`,onClick:()=>{O(void 0),M(!0)},style:{all:"unset",cursor:"text",display:"inline-flex",alignItems:"flex-end",minHeight:24,minWidth:24,maxWidth:"100%",overflowWrap:"anywhere",paddingBottom:1,borderBottom:"1px dashed var(--graview-edge-bright)",color:m?"var(--graview-ink-muted)":"var(--graview-ink)"},children:m?"add":l});return J?(0,e.jsxs)(e.Fragment,{children:[r,(0,e.jsx)("span",{role:"status","data-graview-refused":n,style:{marginLeft:6,fontSize:"0.75rem",color:"var(--graview-ink-muted)"},children:J})]}):r}let N=(r,{left:y=!1}={})=>{if(x(!y),r!==s){if(r===""||r===void 0||r===null){if(s==="")return;t.clearable?g(t,null):O(`${h.charAt(0).toUpperCase()}${h.slice(1)} can't be empty; it keeps ${l}.`);return}t.shape.type==="date"&&typeof r=="string"&&ke(r)||g(t,r)}},ke=r=>{if(t.shape.type!=="date")return!1;let y=o.filter(H=>H.shape.type==="date"&&H.takesValue),C=me(y.map(H=>H.field),S?.fieldRoles??{}),I=C?.start===n?y.find(H=>H.field===C.end):void 0,w=k.graph.getNode(i)?.[C?.end??""];if(!I||typeof w!="string")return!1;let A=ce(s===""?void 0:s,r,w,{time:t.shape.time===!0,instant:t.shape.instant===!0});if(A===void 0||A===w)return!1;let B=t.call(r),_=I.call(A);return k.applyAll(B.name===_.name?[{name:B.name,args:{...B.args,..._.args}}]:[B,_],{author:v}),!0};if(!t.takesValue){let r=[t,...t.alternatives];return(0,e.jsx)("span",{role:"group","aria-label":`Change ${$(n).toLowerCase()}`,"data-graview-field":n,style:{display:"inline-flex",gap:6,alignItems:"center",flexWrap:"wrap"},onKeyDown:y=>{y.key==="Escape"&&x(!0)},children:r.map((y,C)=>(0,e.jsx)("button",{type:"button",ref:C===0?c:void 0,"data-graview-act":y.mutation,onClick:()=>{x(!0),g(y,void 0)},onBlur:I=>{let u=I.relatedTarget;(!u||!I.currentTarget.parentElement?.contains(u))&&x(!1)},style:{padding:"2px 9px",fontSize:"0.8125rem",borderRadius:999},children:y.title},y.mutation))})}if(t.shape.type==="several"&&t.shape.of.type==="choice"){let r=t.shape.of.options,y=k.graph.getNode(i),C=Array.isArray(y?.[n])?y[n].map(String):[],I=u=>{let w=r.filter(A=>u.includes(A));if(w.length>0)return g(t,w);t.clearable?g(t,null):O(`${h.charAt(0).toUpperCase()}${h.slice(1)} can't be empty; it keeps ${l}.`)};return(0,e.jsxs)("fieldset",{"data-graview-field":n,"data-graview-choices":n,style:{display:"inline-flex",flexWrap:"wrap",gap:"4px 12px",margin:0,padding:"2px 6px",border:"1px solid var(--graview-edge-bright)",borderRadius:6,maxWidth:"100%"},onKeyDown:u=>{u.key==="Escape"&&x(!0)},onBlur:u=>{let w=u.relatedTarget;(!w||!u.currentTarget.contains(w))&&x(!1)},children:[(0,e.jsx)("legend",{style:{position:"absolute",width:1,height:1,overflow:"hidden",clip:"rect(0 0 0 0)"},children:$(n)}),r.map((u,w)=>(0,e.jsxs)("label",{style:{display:"inline-flex",alignItems:"center",gap:4,minHeight:24,cursor:"pointer"},children:[(0,e.jsx)("input",{ref:w===0?c:void 0,type:"checkbox",value:u,checked:C.includes(u),onChange:A=>I(A.target.checked?[...C,u]:C.filter(B=>B!==u))}),j(S,n,u)]},u))]})}return(0,e.jsxs)("form",{style:{display:"inline-flex",flexWrap:"wrap",gap:4,maxWidth:"100%"},onSubmit:r=>{r.preventDefault(),N(we(t,b))},children:[t.shape.type==="choice"?(0,e.jsxs)("select",{ref:c,"aria-label":$(n),"data-graview-field":n,value:b,onChange:r=>N(r.target.value),onBlur:()=>x(!1),style:{font:"inherit",fontSize:"inherit"},children:[b===""?(0,e.jsx)("option",{value:"",disabled:!0,children:"Choose\u2026"}):null,t.shape.options.map(r=>(0,e.jsx)("option",{value:r,children:j(S,n,r)},r))]}):t.shape.type==="date"?(0,e.jsx)(he,{inputRef:c,label:$(n),value:b===""?void 0:b,time:t.shape.time===!0,instant:t.shape.instant===!0,partial:t.shape.partial===!0,onChange:r=>P(r??""),onLeave:r=>N(r,{left:!0}),onCancel:()=>x(!0),autoSelect:!0,boxStyle:{fontSize:"inherit",minHeight:24,padding:"0 3px"}}):(0,e.jsxs)(e.Fragment,{children:[p&&R(p).prefix?(0,e.jsx)("span",{"aria-hidden":"true",children:R(p).prefix}):null,(0,e.jsx)("input",{ref:c,"aria-label":p?`${$(n)}, ${R(p).hint}`:$(n),"data-graview-field":n,...p?{inputMode:"decimal",placeholder:R(p).placeholder,"data-graview-amount":p.format??"unit"}:{},type:p?"text":t.shape.type==="number"&&!t.shape.duration?"number":"text",...t.shape.type==="number"&&t.shape.duration?{placeholder:"1h 30m"}:{},...t.shape.type==="text"&&t.shape.holds==="phone"?{inputMode:"tel",autoComplete:"tel"}:{},...t.shape.type==="number"&&t.shape.min!==void 0&&!p?{min:t.shape.min}:{},...t.shape.type==="number"&&t.shape.max!==void 0&&!p?{max:t.shape.max}:{},...t.shape.type==="number"&&t.shape.step!==void 0&&!p?{step:t.shape.step}:{},value:b,onChange:r=>P(r.target.value),onBlur:()=>N(we(t,b),{left:!0}),onKeyDown:r=>{r.key==="Escape"&&x(!0)},style:{font:"inherit",fontSize:"inherit",width:`min(${Math.max(6,b.length+1)}ch, 100%)`,maxWidth:"100%",minWidth:0,boxSizing:"border-box",minHeight:24,display:"inline-flex",alignItems:"center",padding:"0 3px"}}),p&&R(p).suffix?(0,e.jsx)("span",{"aria-hidden":"true",children:R(p).suffix}):null]}),t.open.length>0?(0,e.jsxs)("span",{style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:["also needs ",t.open.map(r=>r.name).join(", ")]}):null]})}function we(i,n){return n.trim()===""?"":i.shape.type==="number"&&i.shape.amount?ue(n,i.shape.amount):i.shape.type==="number"?i.shape.duration?se(n)??n:Number(n):i.shape.type==="text"&&i.shape.holds?n.trim():n}function Ce({href:i,field:n,value:l,stored:s,nodeId:f}){let m=i.startsWith("tel:"),o=(g,t)=>(0,e.jsx)("a",{href:i,"data-graview-link":n,...t?{"aria-label":t}:{},...m?{}:{target:"_blank",rel:"noopener noreferrer"},style:{display:"inline-flex",alignItems:"center",minHeight:24,minWidth:24,maxWidth:"100%",overflowWrap:"anywhere",color:"var(--graview-accent)"},children:g});return f===void 0?o(l):(0,e.jsxs)("span",{style:{display:"inline-flex",flexWrap:"wrap",alignItems:"center",gap:"0 10px",maxWidth:"100%"},children:[(0,e.jsx)(Y,{nodeId:f,field:n,value:l,...s===void 0?{}:{stored:s}}),o(m?"Call":"Map",m?`Call ${l}`:`Open ${l} in maps`)]})}function Ge({id:i,hide:n=[],limit:l=10,labels:s={},shown:f=[]}){let{store:m}=F(),o=G(i);if(!o)return null;let g=m.schema.tryDefinition(o.kind),t=le(o,g,{limit:l,said:f}).filter(v=>!n.includes(v.key)),k=ge(g).length>0;return t.length===0&&!k?null:(0,e.jsxs)("div",{"data-graview-fields":o.id,style:{display:"grid",gap:14,alignContent:"start",minWidth:0,fontSize:"0.875rem"},children:[de(g,t).map((v,L)=>{let S=(0,e.jsx)("dl",{style:{margin:0,display:"grid",gridTemplateColumns:"auto 1fr",gap:"5px 16px",alignContent:"start",minWidth:0},children:v.fields.map(a=>a.files?(0,e.jsx)(q,{as:"field",nodeId:o.id,field:a.key,label:s[a.key]??a.label,files:a.files,labelStyle:D,style:{marginTop:6}},a.key):a.long?(0,e.jsx)(Le,{nodeId:o.id,field:a.key,label:s[a.key]??a.label,value:a.value,markdown:a.markdown,labelStyle:D,style:{gridColumn:"1 / -1",marginTop:6}},a.key):(0,e.jsxs)("div",{style:{display:"contents"},children:[(0,e.jsx)("dt",{style:{...D,whiteSpace:"nowrap"},children:s[a.key]??a.label}),(0,e.jsxs)("dd",{style:{margin:0,minWidth:0},children:[a.linked?(0,e.jsx)(ye,{relation:a.linked.relation,refs:a.linked.refs,nodeId:o.id,field:a.key}):a.app?(0,e.jsx)(ve,{address:a.app,as:"record",nodeId:o.id,field:a.key}):a.href?(0,e.jsx)(Ce,{href:a.href,field:a.key,value:a.value,stored:a.stored,nodeId:o.id}):(0,e.jsx)(Y,{nodeId:o.id,field:a.key,value:a.value,stored:a.stored}),a.repeats?(0,e.jsx)(fe,{nodeId:o.id,field:a.key,start:o[a.key],value:o[`${a.key}Repeat`],label:`${s[a.key]??a.label} repeats`}):null]})]},a.key))});if(!v.title)return(0,e.jsx)("div",{children:S},L);let h=`graview-field-group-${o.id}-${L}`;return(0,e.jsxs)("div",{role:"group","aria-labelledby":h,style:{display:"grid",gap:6,minWidth:0},children:[(0,e.jsx)("p",{id:h,"data-graview-field-group":v.title,style:Ee,children:v.title}),S]},L)}),k?(0,e.jsx)(q,{as:"unfilled",nodeId:o.id,skip:n,labels:s,labelStyle:D}):null]})}var D={color:"var(--graview-ink-faint)",fontSize:"0.8125rem"},Ee={margin:0,fontSize:"0.75rem",letterSpacing:"0.06em",textTransform:"uppercase",color:"var(--graview-ink-muted)",fontWeight:560};function Le(i){return re()?(0,e.jsx)(We,{...i}):(0,e.jsx)(Te,{...i})}function Te({field:i,label:n,value:l,labelStyle:s,valueStyle:f,style:m,markdown:o}){return(0,e.jsxs)("div",{"data-graview-long":i,style:{display:"grid",gap:6,minWidth:0,...m},children:[(0,e.jsx)("dt",{style:s,children:n}),(0,e.jsx)("dd",{style:{margin:0,minWidth:0,...f},children:(0,e.jsx)("div",{"data-graview-field":i,children:(0,e.jsx)(X,{text:l,markdown:o})})})]})}function We({nodeId:i,field:n,label:l,value:s,labelStyle:f,valueStyle:m,style:o,markdown:g}){let{fields:t,commit:k}=V(i),{store:v,principal:L}=F(),S=(0,d.useContext)(ne)!==null&&v.collaborative(i,n),h=t.find(c=>c.field===n&&c.takesValue),a=h&&(!S||v.permits({name:ee,args:{node:i,field:n,at:0,remove:0,insert:""}},L).ok)?h:void 0,[T,E]=(0,d.useState)(!1),M=(0,d.useRef)(null),p=(0,d.useRef)(!1);(0,d.useEffect)(()=>{!T&&p.current&&(p.current=!1,M.current?.focus())},[T]);let W=c=>{p.current=c,E(!1)},b=l.toLowerCase(),P=(0,e.jsx)(X,{text:s,markdown:g});return(0,e.jsxs)("div",{"data-graview-long":n,style:{display:"grid",gap:6,minWidth:0,...o},children:[(0,e.jsxs)("dt",{style:{display:"flex",alignItems:"baseline",gap:10,...f},children:[(0,e.jsx)("span",{children:l}),a&&!T?(0,e.jsx)("button",{ref:M,type:"button","data-graview-editable":a.mutation,"aria-label":`Edit the ${b}`,title:`${a.title} \u2014 changes the ${b}, and can be undone`,onClick:()=>E(!0),style:Ae,children:"Edit"}):null]}),(0,e.jsx)("dd",{style:{margin:0,minWidth:0,...m},children:T&&a?(0,e.jsx)(d.Suspense,{fallback:P,children:(0,e.jsx)(Ie,{nodeId:i,field:n,label:l,value:s,...g?{markdown:!0}:{},onCancel:()=>W(!0),onDone:c=>W(!c),onSave:(c,z)=>{W(!z),c!==s&&k(a,c)}})}):(0,e.jsx)("div",{"data-graview-field":n,...a?{}:{"data-graview-readonly":"",title:`Read-only \u2014 nothing this app declares changes the ${b}`},...a?{onClick:()=>E(!0)}:{},style:{cursor:a?"text":"default",minWidth:0},children:P})})]})}var Ie=(0,d.lazy)(()=>(__graviewPreload(import.meta.url,["./chunk.WFCE7NLK.js","./chunk.3FKKH2XU.js","./chunk.DLWFULWE.js","./chunk.VLX7YWVH.js","./chunk.SDO3U72B.js","./chunk.IQGSEAQ2.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.XIVELWAM.js"))),Ae={all:"unset",cursor:"pointer",fontSize:"0.75rem",letterSpacing:"normal",textTransform:"none",color:"var(--graview-accent)",borderBottom:"1px dashed currentColor",minHeight:24,minWidth:24,display:"inline-flex",alignItems:"flex-end"};function je({nodeId:i,children:n}){let{fields:l}=V(i),s=G(i);if(!s)return(0,e.jsx)(e.Fragment,{children:n});let f=l.find(m=>{let o=s[m.field];return typeof o=="string"&&o===n});return f?(0,e.jsx)(Y,{nodeId:i,field:f.field,value:n,said:n}):(0,e.jsx)(e.Fragment,{children:n})}export{ve as a,Y as b,Ce as c,Ge as d,Le as e,je as f};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as i}from"./chunk.
|
|
1
|
+
import{d as i}from"./chunk.FUPYIOXZ.js";import{V as o}from"./chunk.VLX7YWVH.js";import{b as a}from"./chunk.AJZBJBMO.js";var t=a(o(),1);function s({id:r,label:e,go:n,testId:d}){return n?(0,t.jsx)("button",{type:"button","data-testid":d,"data-record":r,title:`Go to ${e}`,onClick:()=>n(r),style:{all:"unset",display:"inline-flex",maxWidth:"100%",minWidth:0,cursor:"pointer",borderRadius:7},className:"graview-activity-record",children:(0,t.jsx)(i,{label:e})}):(0,t.jsx)(i,{label:e})}export{s as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{a as N,g as se,h as de}from"./chunk.TIALD6SC.js";import{a as R}from"./chunk.QHY5NVYH.js";import{a as ie,b as oe,c as re}from"./chunk.U6ZRJKVM.js";import{b}from"./chunk.PLTH2LW5.js";import{a as ae}from"./chunk.W4BKYSZX.js";import{a as S,b as T,c as A,d as $}from"./chunk.U5P23GO7.js";import{a as C}from"./chunk.NUYA4BWI.js";import{j as ne}from"./chunk.AI34V6WV.js";import{G as X,Ia as Z,J,O as H,P as q,Ra as ee,T as K,Va as te,ba as w,la as Q}from"./chunk.M7RESZB6.js";import{a as _}from"./chunk.SDO3U72B.js";import{Db as x,bb as j,cb as E,ga as U,ja as Y,oe as G}from"./chunk.DZZL5IDD.js";import{b as z}from"./chunk.AJZBJBMO.js";var h=z(X(),1);var le=z(X(),1);function pe(){let{ai:n,aiDesk:a}=w(),{entries:o}=J(a),i=n.off===!0;return(0,le.useEffect)(()=>{i||a.load()},[a,i]),i?[]:o}var e=z(K(),1),ue=Z(_(()=>(__graviewPreload(import.meta.url,["./chunk.7XLS6XTY.js","./chunk.U5P23GO7.js","./chunk.5STU3KYG.js","./chunk.AI34V6WV.js","./chunk.G4ULQK64.js","./chunk.M7RESZB6.js","./chunk.SDO3U72B.js","./chunk.DZZL5IDD.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.HIMQ65QT.js")))),ve=ue.part((n,a)=>(0,e.jsx)(n.InteractionRow,{...a}),{quiet:!0,as:"li"}),me=ue.part((n,a)=>(0,e.jsx)(n.ActivityFilter,{...a}),{quiet:!0,as:"div"}),we=n=>n.undoes===void 0&&n.primitives.some(a=>a.op==="remove-node"||a.op==="patch-node"&&a.after[E]===!0&&a.before[E]!==!0);function ke(n){let a=[...new Set(n.ops.filter(o=>!x(o)&&we(o)).map(o=>o.intent))].filter(o=>o!==n.intent);return a.length===0?n.intent:`${n.intent} \u2014 ${a.join("; ")}`}var ge=(n,a,o=ce(n,[a]))=>({intent:ke(a),author:a.author.kind,...a.author.id?{authorId:a.author.id}:{},by:a.author,...a.ops[0]?.via?{via:a.ops[0].via}:{},...a.lineage?{basis:ae(a.lineage)}:{},touched:[...new Set(a.ops.filter(i=>!x(i)).flatMap(i=>i.writes))],...xe(a.ops.filter(i=>!x(i)).flatMap(i=>i.writes),o),batch:a.id,at:a.at,...a.lineage?.interaction?{interaction:a.lineage.interaction}:{},seq:a.ops.at(-1).seq+1,...a.ops.every(x)?{withheld:!0}:{}});function be(n=4){let{store:a,principal:o}=w(),i=q(a,o),s=i.log.length;return(0,h.useMemo)(()=>{let d=i.batches(),l=ce(i,d);return oe(d,r=>i.log.get(r)).reverse().slice(0,n).map(r=>{if("batch"in r){let p=ge(i,r.batch,l);return r.typed?{...p,intent:ie(r.typed,i.schema,i.graph),batches:r.typed.batches.filter(k=>!k.undone).map(k=>k.id)}:p}let u=[...r.digest.batches].reverse().map(p=>ge(i,p,l));return{intent:re(r.digest),author:r.digest.author.kind,...r.digest.author.id?{authorId:r.digest.author.id}:{},by:r.digest.author,touched:[...new Set(u.flatMap(p=>p.touched))],batch:"",...u[0]?.at?{at:u[0].at}:{},seq:u[0]?.seq??0,digest:u}})},[i,s,n])}function ce(n,a){let o=new Map;for(let i of a)for(let s of i.ops)if(!x(s))for(let d of s.primitives)(d.op==="add-node"||d.op==="remove-node")&&d.node&&o.set(d.node.id,Y(n.schema.tryDefinition(d.node.kind),d.node));return o}function xe(n,a){let o={};for(let i of n){let s=a.get(i);s!==void 0&&(o[i]=s)}return Object.keys(o).length>0?{named:o}:{}}function Se({change:n}){let{store:a,principal:o,seats:i,people:s}=w();return(0,e.jsxs)("strong",{style:{fontWeight:600},children:[n.author==="human"&&n.by?.onBehalfOf===void 0&&(n.authorId===void 0||o.id===void 0||n.authorId===o.id)?"you":j(n.by??{kind:n.author,id:n.authorId},{graph:a.graph,schema:a.schema,seats:i,people:s}),C(n.via)?(0,e.jsxs)("span",{style:{fontWeight:400,color:"var(--graview-ink-muted)"},children:[", ",C(n.via)]}):null]})}function Ae({change:n,goes:a}){let{store:o}=w(),[i,s]=(0,h.useState)(!1),d=n.digest??[];return(0,e.jsxs)("li",{"data-testid":"activity-digest",style:{...S,gap:5},children:[(0,e.jsxs)("div",{"data-graview-activity-head":"",style:T,children:[(0,e.jsxs)("span",{"data-graview-activity-words":"",style:A,children:[(0,e.jsx)(Se,{change:n})," ",(0,e.jsx)("span",{style:{color:"var(--graview-ink-muted)"},children:n.intent})]}),(0,e.jsx)("button",{type:"button","data-testid":"digest-toggle","aria-expanded":i,onClick:()=>s(l=>!l),style:{marginLeft:"auto",flex:"0 0 auto",display:"inline-flex",alignItems:"center",minHeight:24,minWidth:24,padding:"1px 8px",fontSize:"0.75rem"},children:i?"Hide":"Show each"})]}),i?(0,e.jsx)("ol",{"data-testid":"digest-changes",style:{margin:0,padding:"0 0 0 10px",listStyle:"none",display:"grid",gap:6,borderLeft:"1px solid var(--graview-edge)"},children:d.map(l=>(0,e.jsxs)("li",{"data-testid":"digest-change",style:S,children:[(0,e.jsxs)("div",{"data-graview-activity-head":"",style:T,children:[(0,e.jsxs)("span",{"data-graview-activity-words":"",style:A,children:[(0,e.jsx)("span",{style:{color:"var(--graview-ink-muted)"},children:l.intent}),l.basis?(0,e.jsxs)("span",{"data-graview-lineage":"",style:{color:"var(--graview-ink-faint)"},children:[" \xB7 ",l.basis]}):null]}),l.withheld?null:(0,e.jsx)(V,{batch:l.batch})]}),l.touched.length>0?(0,e.jsx)("div",{"data-touched":l.touched.join(" "),style:$,children:l.touched.slice(0,4).map(r=>(0,e.jsx)(R,{id:r,label:o.graph.has(r)?b(o,r):l.named?.[r]??b(o,r),go:a(r),testId:"activity-record"},r))}):null]},l.batch))}):null]})}function V({batch:n}){let{store:a,principal:o,noteSeat:i}=w(),s=q(a,o),d=H()?.open??!1,l=s.log.length,[r,u]=(0,h.useState)(null),p=(0,h.useMemo)(()=>s.canUndo(n),[s,n,l]),k=(0,h.useMemo)(()=>p.ok?s.mayUndo(n,o):{ok:!0},[s,n,l,o,p]);if(d||!p.ok&&p.ops.length===0||!k.ok)return null;let f=!p.ok,W=f?p.includeBatches:[];return(0,e.jsxs)("span",{style:{marginLeft:"auto",flex:"0 0 auto",display:"grid",justifyItems:"end",gap:2},children:[(0,e.jsx)("button",{type:"button","data-testid":"undo-turn",title:f?`${p.message} \u2014 undo those too`:"Take this back, keeping everything since",onClick:()=>{u(null);try{let v=typeof n=="string"?[n]:n,L=s.log.all().find(O=>v.includes(O.batch)&&O.author.kind==="agent");s.undo(f?[...v,...W]:typeof n=="string"?n:[...n],{author:o}),L&&i({type:"home",author:L.author})}catch(v){u(v instanceof Error?v.message:String(v))}},style:{display:"inline-flex",alignItems:"center",minHeight:24,minWidth:24,padding:"1px 8px",fontSize:"0.75rem",...f?{borderColor:"var(--graview-warn)",color:"var(--graview-warn)"}:{}},children:f?`undo +${W.length}`:"undo"}),r?(0,e.jsx)("span",{"data-testid":"undo-refused",role:"alert",style:{fontSize:"0.75rem",lineHeight:1.4,color:"var(--graview-warn)",maxWidth:260,textAlign:"right"},children:r}):null]})}function Ie({seq:n,intent:a}){let o=H();if(!o)return null;let i=o.past?.seq===n;return(0,e.jsx)("button",{type:"button","data-testid":"show-past","aria-label":`Show the app as it was after \u201C${a}\u201D`,title:"Show the app as it was here","aria-pressed":i,onPointerEnter:N,onFocus:N,onClick:()=>o.show(n),style:{display:"inline-flex",alignItems:"center",justifyContent:"center",minHeight:24,minWidth:24,padding:"1px 6px",fontSize:"0.75rem",flex:"0 0 auto"},children:(0,e.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 16 16","aria-hidden":"true",focusable:"false",children:[(0,e.jsx)("path",{d:"M2.5 8 a5.5 5.5 0 1 0 1.6-3.9",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"}),(0,e.jsx)("path",{d:"M2 2.5 V5.5 H5",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),(0,e.jsx)("path",{d:"M8 5 V8 L10 9.25",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})})}function Ce(){let n=()=>G(window.location.href);return(0,e.jsx)("a",{href:"#fresh","data-testid":"start-fresh",title:"Forget every edit made in this browser and return to the example",onClick:a=>{a.preventDefault(),window.location.assign(n())},style:{display:"inline-flex",alignItems:"center",minHeight:24,minWidth:24,fontSize:"0.8125rem",color:"var(--graview-ink-muted)",textDecoration:"underline",textDecorationColor:"var(--graview-edge-bright)",textUnderlineOffset:3},children:"Start fresh"})}function Ve({calls:n,seat:a,remembers:o=!1}){let i=be(),{store:s,principal:d,seats:l,people:r}=w(),u=pe(),[p,k]=(0,h.useState)("all"),[f,W]=(0,h.useState)(!1),v=t=>t!==void 0&&(t.id===d.id||t.onBehalfOf?.id===d.id)&&d.id!==void 0,L=new Set(u.map(t=>t.id)),O=i.filter(t=>!(t.interaction!==void 0&&L.has(t.interaction))&&(!f||v(t.by))),he=u.filter(t=>!f||v(t.by)).slice(0,4),M=[...p==="ai"?[]:O.map(t=>({at:t.at??"",change:t})),...p==="changes"?[]:he.map(t=>({at:t.at,entry:t}))].sort((t,y)=>t.at<y.at?1:t.at>y.at?-1:0),m=q(s,d),B=n.some(t=>t.phase==="running"),ye=se(),I=te("activity"),F=I.open,fe=Q(),P=H(),D=t=>m.graph.has(t)?y=>{I.setOpen(!1),P?.past&&P.show(null),fe.record(y)}:null;return a===void 0&&n.length===0&&i.length===0&&u.length===0&&!o&&ye===0?null:(0,e.jsxs)("div",{style:{position:"relative"},children:[(0,e.jsxs)("button",{type:"button","data-testid":"activity-button",...I.trigger,onClick:I.toggle,title:B?"An agent is working":"What has happened",style:{display:"inline-flex",alignItems:"center",gap:6,minHeight:30,padding:"0 8px",borderRadius:8,border:"1px solid transparent",background:"transparent",boxShadow:"none",fontSize:"0.875rem",whiteSpace:"nowrap",color:B?"var(--graview-accent)":"var(--graview-ink-muted)"},children:[B?(0,e.jsx)("span",{"aria-hidden":"true",style:{width:6,height:6,borderRadius:999,background:"var(--graview-accent)"}}):null,i.length>0?i.length:"",(0,e.jsxs)("svg",{className:"graview-activity-mark",width:"15",height:"15",viewBox:"0 0 16 16","aria-hidden":"true",focusable:"false",style:{display:"var(--graview-activity-mark, none)"},children:[(0,e.jsx)("circle",{cx:"8",cy:"8",r:"5.75",fill:"none",stroke:"currentColor",strokeWidth:"1.4"}),(0,e.jsx)("path",{d:"M8 4.75 V8 L10.25 9.5",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})]}),(0,e.jsx)("span",{className:"graview-activity-word",children:" Activity"})]}),!F&&a!==void 0?(0,e.jsx)("div",{hidden:!0,"data-testid":"agent-seat-seated",children:a}):null,F?(0,e.jsxs)("section",{...I.pane,"aria-label":"Activity","data-testid":"activity","data-graview-offstage":"",style:{...ee,width:"min(300px, calc(100vw - 16px))",maxHeight:"min(52cqh, 460px)",overflowX:"hidden",overflowY:"auto",display:"flex",flexDirection:"column",gap:9,padding:12,borderRadius:10,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)"},children:[(0,e.jsx)("h2",{style:{...ne,margin:0},children:"Activity"}),a!==void 0?(0,e.jsxs)("div",{"data-testid":"agent-seat-row",style:{display:"grid",gap:5,paddingBottom:n.length>0||M.length>0?9:0,...n.length>0||M.length>0?{borderBottom:"1px solid var(--graview-edge)"}:{}},children:[(0,e.jsx)("span",{style:{fontSize:"0.75rem",letterSpacing:"0.14em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},children:"The agent's seat"}),a]}):null,n.length>0?(0,e.jsx)("ol",{style:{margin:0,padding:0,listStyle:"none",display:"grid",gap:7},children:n.slice(0,6).map((t,y)=>(0,e.jsxs)("li",{style:{...S,gap:2,fontSize:"0.8125rem"},children:[(0,e.jsxs)("div",{"data-graview-activity-head":"",style:T,children:[(0,e.jsx)("span",{"aria-hidden":"true",style:{width:6,height:6,borderRadius:999,flex:"0 0 auto",background:t.phase==="running"?"var(--graview-accent)":t.phase==="failed"?"var(--graview-warn)":"var(--graview-edge-bright)"}}),(0,e.jsxs)("span",{"data-graview-activity-words":"",style:{...A,color:"var(--graview-ink)"},children:[t.mutating?"changed":"read"," \xB7"," ",m.allMutations().find(g=>g.name===t.name)?.title??U(t.name)]})]}),!t.mutating&&t.reads&&t.reads.length>0?(0,e.jsxs)("div",{"data-testid":"activity-reads",style:{display:"flex",flexWrap:"wrap",gap:4,paddingLeft:12},children:[[...new Set(t.reads)].slice(0,3).map(g=>(0,e.jsx)(R,{id:g,label:b(m,g),go:D(g),testId:"activity-record"},g)),new Set(t.reads).size>3?(0,e.jsxs)("span",{style:{color:"var(--graview-ink-muted)"},children:["+",new Set(t.reads).size-3]}):null]}):Object.values(t.args).some(g=>typeof g=="string")?(0,e.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:4,paddingLeft:12},children:Object.entries(t.args).filter(g=>typeof g[1]=="string").slice(0,3).map(([g,c])=>(0,e.jsx)(R,{id:c,label:b(m,c),go:D(c),testId:"activity-record"},g))}):null,t.error?(0,e.jsx)("div",{style:{paddingLeft:12,color:"var(--graview-warn)"},children:t.error}):null]},`${t.at}:${y}`))}):null,u.length>0?(0,e.jsx)(h.Suspense,{fallback:null,children:(0,e.jsx)(me,{shows:p,onShows:k,mine:f,onMine:W})}):null,M.length>0?(0,e.jsx)("ol",{"data-testid":"diff-log",style:{margin:0,padding:0,listStyle:"none",display:"grid",gap:6,fontSize:"0.8125rem"},children:M.map(({change:t,entry:y},g)=>y!==void 0?(0,e.jsx)(h.Suspense,{fallback:null,children:(0,e.jsx)(ve,{entry:y,undo:c=>(0,e.jsx)(V,{batch:c})})},`ai:${y.id}`):t.digest?(0,e.jsx)(Ae,{change:t,goes:D},`digest:${t.digest[0]?.batch??g}`):t.withheld?(0,e.jsx)("li",{"data-testid":"withheld-change",style:S,children:(0,e.jsx)("span",{"data-touched":"",style:{...A,color:"var(--graview-ink-muted)",fontStyle:"italic"},children:t.intent})},`change:${g}`):(0,e.jsxs)("li",{"data-batch":t.batch,style:S,children:[(0,e.jsxs)("div",{"data-graview-activity-head":"",style:T,children:[(0,e.jsxs)("span",{"data-graview-activity-words":"",style:A,children:[(0,e.jsxs)("strong",{style:{fontWeight:600},children:[t.author==="human"&&t.by?.onBehalfOf===void 0&&(t.authorId===void 0||d.id===void 0||t.authorId===d.id)?"you":j(t.by??{kind:t.author,id:t.authorId},{graph:m.graph,schema:m.schema,seats:l,people:r}),C(t.via)?(0,e.jsxs)("span",{style:{fontWeight:400,color:"var(--graview-ink-muted)"},children:[", ",C(t.via)]}):null]})," ",(0,e.jsx)("span",{style:{color:"var(--graview-ink-muted)"},children:t.intent}),t.basis?(0,e.jsxs)("span",{"data-graview-lineage":"",style:{color:"var(--graview-ink-faint)"},children:[" \xB7 ",t.basis]}):null]}),t.batch?(0,e.jsx)(Ie,{seq:t.seq,intent:t.intent}):null,t.batch?(0,e.jsx)(V,{batch:t.batches&&t.batches.length>0?t.batches.length===1?t.batches[0]:t.batches:t.batch}):null]}),(0,e.jsx)("div",{"data-touched":t.touched.join(" "),style:$,children:t.touched.slice(0,4).map(c=>(0,e.jsx)(R,{id:c,label:m.graph.has(c)?b(m,c):t.named?.[c]??b(m,c),go:D(c),testId:"activity-record"},c))})]},`change:${g}`))}):null,(0,e.jsx)(de,{style:{paddingTop:8,borderTop:"1px solid var(--graview-edge)"}}),o?(0,e.jsxs)("div",{"data-testid":"remembered",style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:10,paddingTop:8,borderTop:"1px solid var(--graview-edge)",fontSize:"0.8125rem",color:"var(--graview-ink-faint)"},children:[(0,e.jsx)("span",{children:"Remembered in this browser"}),(0,e.jsx)(Ce,{})]}):null]}):null]})}export{V as a,Ve as b};
|
|
1
|
+
var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{a as N,g as se,h as de}from"./chunk.T4TRJDBF.js";import{a as R}from"./chunk.APUQIELA.js";import{a as ie,b as oe,c as re}from"./chunk.S6QZBWCJ.js";import{b}from"./chunk.LTOQ22ZJ.js";import{a as ae}from"./chunk.X36BYTEG.js";import{a as S,b as T,c as A,d as $}from"./chunk.U5P23GO7.js";import{a as C}from"./chunk.75JQCTR6.js";import{k as ne}from"./chunk.3FKKH2XU.js";import{G as X,J,Ka as Z,Q as H,R as q,Ta as ee,V as K,Xa as te,da as w,na as Q}from"./chunk.VLX7YWVH.js";import{a as _}from"./chunk.SDO3U72B.js";import{Ib as x,db as j,eb as E,ga as U,la as Y,ye as G}from"./chunk.IQGSEAQ2.js";import{b as z}from"./chunk.AJZBJBMO.js";var h=z(X(),1);var le=z(X(),1);function pe(){let{ai:n,aiDesk:a}=w(),{entries:o}=J(a),i=n.off===!0;return(0,le.useEffect)(()=>{i||a.load()},[a,i]),i?[]:o}var e=z(K(),1),ue=Z(_(()=>(__graviewPreload(import.meta.url,["./chunk.K2PXP5H6.js","./chunk.U5P23GO7.js","./chunk.GH5UBSQI.js","./chunk.3FKKH2XU.js","./chunk.DLWFULWE.js","./chunk.VLX7YWVH.js","./chunk.SDO3U72B.js","./chunk.IQGSEAQ2.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.B2YTHEX5.js")))),ve=ue.part((n,a)=>(0,e.jsx)(n.InteractionRow,{...a}),{quiet:!0,as:"li"}),me=ue.part((n,a)=>(0,e.jsx)(n.ActivityFilter,{...a}),{quiet:!0,as:"div"}),we=n=>n.undoes===void 0&&n.primitives.some(a=>a.op==="remove-node"||a.op==="patch-node"&&a.after[E]===!0&&a.before[E]!==!0);function ke(n){let a=[...new Set(n.ops.filter(o=>!x(o)&&we(o)).map(o=>o.intent))].filter(o=>o!==n.intent);return a.length===0?n.intent:`${n.intent} \u2014 ${a.join("; ")}`}var ge=(n,a,o=ce(n,[a]))=>({intent:ke(a),author:a.author.kind,...a.author.id?{authorId:a.author.id}:{},by:a.author,...a.ops[0]?.via?{via:a.ops[0].via}:{},...a.lineage?{basis:ae(a.lineage)}:{},touched:[...new Set(a.ops.filter(i=>!x(i)).flatMap(i=>i.writes))],...xe(a.ops.filter(i=>!x(i)).flatMap(i=>i.writes),o),batch:a.id,at:a.at,...a.lineage?.interaction?{interaction:a.lineage.interaction}:{},seq:a.ops.at(-1).seq+1,...a.ops.every(x)?{withheld:!0}:{}});function be(n=4){let{store:a,principal:o}=w(),i=q(a,o),s=i.log.length;return(0,h.useMemo)(()=>{let d=i.batches(),l=ce(i,d);return oe(d,r=>i.log.get(r)).reverse().slice(0,n).map(r=>{if("batch"in r){let p=ge(i,r.batch,l);return r.typed?{...p,intent:ie(r.typed,i.schema,i.graph),batches:r.typed.batches.filter(k=>!k.undone).map(k=>k.id)}:p}let u=[...r.digest.batches].reverse().map(p=>ge(i,p,l));return{intent:re(r.digest),author:r.digest.author.kind,...r.digest.author.id?{authorId:r.digest.author.id}:{},by:r.digest.author,touched:[...new Set(u.flatMap(p=>p.touched))],batch:"",...u[0]?.at?{at:u[0].at}:{},seq:u[0]?.seq??0,digest:u}})},[i,s,n])}function ce(n,a){let o=new Map;for(let i of a)for(let s of i.ops)if(!x(s))for(let d of s.primitives)(d.op==="add-node"||d.op==="remove-node")&&d.node&&o.set(d.node.id,Y(n.schema.tryDefinition(d.node.kind),d.node));return o}function xe(n,a){let o={};for(let i of n){let s=a.get(i);s!==void 0&&(o[i]=s)}return Object.keys(o).length>0?{named:o}:{}}function Se({change:n}){let{store:a,principal:o,seats:i,people:s}=w();return(0,e.jsxs)("strong",{style:{fontWeight:600},children:[n.author==="human"&&n.by?.onBehalfOf===void 0&&(n.authorId===void 0||o.id===void 0||n.authorId===o.id)?"you":j(n.by??{kind:n.author,id:n.authorId},{graph:a.graph,schema:a.schema,seats:i,people:s}),C(n.via)?(0,e.jsxs)("span",{style:{fontWeight:400,color:"var(--graview-ink-muted)"},children:[", ",C(n.via)]}):null]})}function Ae({change:n,goes:a}){let{store:o}=w(),[i,s]=(0,h.useState)(!1),d=n.digest??[];return(0,e.jsxs)("li",{"data-testid":"activity-digest",style:{...S,gap:5},children:[(0,e.jsxs)("div",{"data-graview-activity-head":"",style:T,children:[(0,e.jsxs)("span",{"data-graview-activity-words":"",style:A,children:[(0,e.jsx)(Se,{change:n})," ",(0,e.jsx)("span",{style:{color:"var(--graview-ink-muted)"},children:n.intent})]}),(0,e.jsx)("button",{type:"button","data-testid":"digest-toggle","aria-expanded":i,onClick:()=>s(l=>!l),style:{marginLeft:"auto",flex:"0 0 auto",display:"inline-flex",alignItems:"center",minHeight:24,minWidth:24,padding:"1px 8px",fontSize:"0.75rem"},children:i?"Hide":"Show each"})]}),i?(0,e.jsx)("ol",{"data-testid":"digest-changes",style:{margin:0,padding:"0 0 0 10px",listStyle:"none",display:"grid",gap:6,borderLeft:"1px solid var(--graview-edge)"},children:d.map(l=>(0,e.jsxs)("li",{"data-testid":"digest-change",style:S,children:[(0,e.jsxs)("div",{"data-graview-activity-head":"",style:T,children:[(0,e.jsxs)("span",{"data-graview-activity-words":"",style:A,children:[(0,e.jsx)("span",{style:{color:"var(--graview-ink-muted)"},children:l.intent}),l.basis?(0,e.jsxs)("span",{"data-graview-lineage":"",style:{color:"var(--graview-ink-faint)"},children:[" \xB7 ",l.basis]}):null]}),l.withheld?null:(0,e.jsx)(V,{batch:l.batch})]}),l.touched.length>0?(0,e.jsx)("div",{"data-touched":l.touched.join(" "),style:$,children:l.touched.slice(0,4).map(r=>(0,e.jsx)(R,{id:r,label:o.graph.has(r)?b(o,r):l.named?.[r]??b(o,r),go:a(r),testId:"activity-record"},r))}):null]},l.batch))}):null]})}function V({batch:n}){let{store:a,principal:o,noteSeat:i}=w(),s=q(a,o),d=H()?.open??!1,l=s.log.length,[r,u]=(0,h.useState)(null),p=(0,h.useMemo)(()=>s.canUndo(n),[s,n,l]),k=(0,h.useMemo)(()=>p.ok?s.mayUndo(n,o):{ok:!0},[s,n,l,o,p]);if(d||!p.ok&&p.ops.length===0||!k.ok)return null;let f=!p.ok,W=f?p.includeBatches:[];return(0,e.jsxs)("span",{style:{marginLeft:"auto",flex:"0 0 auto",display:"grid",justifyItems:"end",gap:2},children:[(0,e.jsx)("button",{type:"button","data-testid":"undo-turn",title:f?`${p.message} \u2014 undo those too`:"Take this back, keeping everything since",onClick:()=>{u(null);try{let v=typeof n=="string"?[n]:n,L=s.log.all().find(O=>v.includes(O.batch)&&O.author.kind==="agent");s.undo(f?[...v,...W]:typeof n=="string"?n:[...n],{author:o}),L&&i({type:"home",author:L.author})}catch(v){u(v instanceof Error?v.message:String(v))}},style:{display:"inline-flex",alignItems:"center",minHeight:24,minWidth:24,padding:"1px 8px",fontSize:"0.75rem",...f?{borderColor:"var(--graview-warn)",color:"var(--graview-warn)"}:{}},children:f?`undo +${W.length}`:"undo"}),r?(0,e.jsx)("span",{"data-testid":"undo-refused",role:"alert",style:{fontSize:"0.75rem",lineHeight:1.4,color:"var(--graview-warn)",maxWidth:260,textAlign:"right"},children:r}):null]})}function Ie({seq:n,intent:a}){let o=H();if(!o)return null;let i=o.past?.seq===n;return(0,e.jsx)("button",{type:"button","data-testid":"show-past","aria-label":`Show the app as it was after \u201C${a}\u201D`,title:"Show the app as it was here","aria-pressed":i,onPointerEnter:N,onFocus:N,onClick:()=>o.show(n),style:{display:"inline-flex",alignItems:"center",justifyContent:"center",minHeight:24,minWidth:24,padding:"1px 6px",fontSize:"0.75rem",flex:"0 0 auto"},children:(0,e.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 16 16","aria-hidden":"true",focusable:"false",children:[(0,e.jsx)("path",{d:"M2.5 8 a5.5 5.5 0 1 0 1.6-3.9",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"}),(0,e.jsx)("path",{d:"M2 2.5 V5.5 H5",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),(0,e.jsx)("path",{d:"M8 5 V8 L10 9.25",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})})}function Ce(){let n=()=>G(window.location.href);return(0,e.jsx)("a",{href:"#fresh","data-testid":"start-fresh",title:"Forget every edit made in this browser and return to the example",onClick:a=>{a.preventDefault(),window.location.assign(n())},style:{display:"inline-flex",alignItems:"center",minHeight:24,minWidth:24,fontSize:"0.8125rem",color:"var(--graview-ink-muted)",textDecoration:"underline",textDecorationColor:"var(--graview-edge-bright)",textUnderlineOffset:3},children:"Start fresh"})}function Ve({calls:n,seat:a,remembers:o=!1}){let i=be(),{store:s,principal:d,seats:l,people:r}=w(),u=pe(),[p,k]=(0,h.useState)("all"),[f,W]=(0,h.useState)(!1),v=t=>t!==void 0&&(t.id===d.id||t.onBehalfOf?.id===d.id)&&d.id!==void 0,L=new Set(u.map(t=>t.id)),O=i.filter(t=>!(t.interaction!==void 0&&L.has(t.interaction))&&(!f||v(t.by))),he=u.filter(t=>!f||v(t.by)).slice(0,4),M=[...p==="ai"?[]:O.map(t=>({at:t.at??"",change:t})),...p==="changes"?[]:he.map(t=>({at:t.at,entry:t}))].sort((t,y)=>t.at<y.at?1:t.at>y.at?-1:0),m=q(s,d),B=n.some(t=>t.phase==="running"),ye=se(),I=te("activity"),F=I.open,fe=Q(),P=H(),D=t=>m.graph.has(t)?y=>{I.setOpen(!1),P?.past&&P.show(null),fe.record(y)}:null;return a===void 0&&n.length===0&&i.length===0&&u.length===0&&!o&&ye===0?null:(0,e.jsxs)("div",{style:{position:"relative"},children:[(0,e.jsxs)("button",{type:"button","data-testid":"activity-button",...I.trigger,onClick:I.toggle,title:B?"An agent is working":"What has happened",style:{display:"inline-flex",alignItems:"center",gap:6,minHeight:30,padding:"0 8px",borderRadius:8,border:"1px solid transparent",background:"transparent",boxShadow:"none",fontSize:"0.875rem",whiteSpace:"nowrap",color:B?"var(--graview-accent)":"var(--graview-ink-muted)"},children:[B?(0,e.jsx)("span",{"aria-hidden":"true",style:{width:6,height:6,borderRadius:999,background:"var(--graview-accent)"}}):null,i.length>0?i.length:"",(0,e.jsxs)("svg",{className:"graview-activity-mark",width:"15",height:"15",viewBox:"0 0 16 16","aria-hidden":"true",focusable:"false",style:{display:"var(--graview-activity-mark, none)"},children:[(0,e.jsx)("circle",{cx:"8",cy:"8",r:"5.75",fill:"none",stroke:"currentColor",strokeWidth:"1.4"}),(0,e.jsx)("path",{d:"M8 4.75 V8 L10.25 9.5",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})]}),(0,e.jsx)("span",{className:"graview-activity-word",children:" Activity"})]}),!F&&a!==void 0?(0,e.jsx)("div",{hidden:!0,"data-testid":"agent-seat-seated",children:a}):null,F?(0,e.jsxs)("section",{...I.pane,"aria-label":"Activity","data-testid":"activity","data-graview-offstage":"",style:{...ee,width:"min(300px, calc(100vw - 16px))",maxHeight:"min(52cqh, 460px)",overflowX:"hidden",overflowY:"auto",display:"flex",flexDirection:"column",gap:9,padding:12,borderRadius:10,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)"},children:[(0,e.jsx)("h2",{style:{...ne,margin:0},children:"Activity"}),a!==void 0?(0,e.jsxs)("div",{"data-testid":"agent-seat-row",style:{display:"grid",gap:5,paddingBottom:n.length>0||M.length>0?9:0,...n.length>0||M.length>0?{borderBottom:"1px solid var(--graview-edge)"}:{}},children:[(0,e.jsx)("span",{style:{fontSize:"0.75rem",letterSpacing:"0.14em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},children:"The agent's seat"}),a]}):null,n.length>0?(0,e.jsx)("ol",{style:{margin:0,padding:0,listStyle:"none",display:"grid",gap:7},children:n.slice(0,6).map((t,y)=>(0,e.jsxs)("li",{style:{...S,gap:2,fontSize:"0.8125rem"},children:[(0,e.jsxs)("div",{"data-graview-activity-head":"",style:T,children:[(0,e.jsx)("span",{"aria-hidden":"true",style:{width:6,height:6,borderRadius:999,flex:"0 0 auto",background:t.phase==="running"?"var(--graview-accent)":t.phase==="failed"?"var(--graview-warn)":"var(--graview-edge-bright)"}}),(0,e.jsxs)("span",{"data-graview-activity-words":"",style:{...A,color:"var(--graview-ink)"},children:[t.mutating?"changed":"read"," \xB7"," ",m.allMutations().find(g=>g.name===t.name)?.title??U(t.name)]})]}),!t.mutating&&t.reads&&t.reads.length>0?(0,e.jsxs)("div",{"data-testid":"activity-reads",style:{display:"flex",flexWrap:"wrap",gap:4,paddingLeft:12},children:[[...new Set(t.reads)].slice(0,3).map(g=>(0,e.jsx)(R,{id:g,label:b(m,g),go:D(g),testId:"activity-record"},g)),new Set(t.reads).size>3?(0,e.jsxs)("span",{style:{color:"var(--graview-ink-muted)"},children:["+",new Set(t.reads).size-3]}):null]}):Object.values(t.args).some(g=>typeof g=="string")?(0,e.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:4,paddingLeft:12},children:Object.entries(t.args).filter(g=>typeof g[1]=="string").slice(0,3).map(([g,c])=>(0,e.jsx)(R,{id:c,label:b(m,c),go:D(c),testId:"activity-record"},g))}):null,t.error?(0,e.jsx)("div",{style:{paddingLeft:12,color:"var(--graview-warn)"},children:t.error}):null]},`${t.at}:${y}`))}):null,u.length>0?(0,e.jsx)(h.Suspense,{fallback:null,children:(0,e.jsx)(me,{shows:p,onShows:k,mine:f,onMine:W})}):null,M.length>0?(0,e.jsx)("ol",{"data-testid":"diff-log",style:{margin:0,padding:0,listStyle:"none",display:"grid",gap:6,fontSize:"0.8125rem"},children:M.map(({change:t,entry:y},g)=>y!==void 0?(0,e.jsx)(h.Suspense,{fallback:null,children:(0,e.jsx)(ve,{entry:y,undo:c=>(0,e.jsx)(V,{batch:c})})},`ai:${y.id}`):t.digest?(0,e.jsx)(Ae,{change:t,goes:D},`digest:${t.digest[0]?.batch??g}`):t.withheld?(0,e.jsx)("li",{"data-testid":"withheld-change",style:S,children:(0,e.jsx)("span",{"data-touched":"",style:{...A,color:"var(--graview-ink-muted)",fontStyle:"italic"},children:t.intent})},`change:${g}`):(0,e.jsxs)("li",{"data-batch":t.batch,style:S,children:[(0,e.jsxs)("div",{"data-graview-activity-head":"",style:T,children:[(0,e.jsxs)("span",{"data-graview-activity-words":"",style:A,children:[(0,e.jsxs)("strong",{style:{fontWeight:600},children:[t.author==="human"&&t.by?.onBehalfOf===void 0&&(t.authorId===void 0||d.id===void 0||t.authorId===d.id)?"you":j(t.by??{kind:t.author,id:t.authorId},{graph:m.graph,schema:m.schema,seats:l,people:r}),C(t.via)?(0,e.jsxs)("span",{style:{fontWeight:400,color:"var(--graview-ink-muted)"},children:[", ",C(t.via)]}):null]})," ",(0,e.jsx)("span",{style:{color:"var(--graview-ink-muted)"},children:t.intent}),t.basis?(0,e.jsxs)("span",{"data-graview-lineage":"",style:{color:"var(--graview-ink-faint)"},children:[" \xB7 ",t.basis]}):null]}),t.batch?(0,e.jsx)(Ie,{seq:t.seq,intent:t.intent}):null,t.batch?(0,e.jsx)(V,{batch:t.batches&&t.batches.length>0?t.batches.length===1?t.batches[0]:t.batches:t.batch}):null]}),(0,e.jsx)("div",{"data-touched":t.touched.join(" "),style:$,children:t.touched.slice(0,4).map(c=>(0,e.jsx)(R,{id:c,label:m.graph.has(c)?b(m,c):t.named?.[c]??b(m,c),go:D(c),testId:"activity-record"},c))})]},`change:${g}`))}):null,(0,e.jsx)(de,{style:{paddingTop:8,borderTop:"1px solid var(--graview-edge)"}}),o?(0,e.jsxs)("div",{"data-testid":"remembered",style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:10,paddingTop:8,borderTop:"1px solid var(--graview-edge)",fontSize:"0.8125rem",color:"var(--graview-ink-faint)"},children:[(0,e.jsx)("span",{children:"Remembered in this browser"}),(0,e.jsx)(Ce,{})]}):null]}):null]})}export{V as a,Ve as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a,b}from"./chunk.K2PXP5H6.js";import"./chunk.U5P23GO7.js";import"./chunk.GH5UBSQI.js";import"./chunk.3FKKH2XU.js";import"./chunk.DLWFULWE.js";import"./chunk.VLX7YWVH.js";import"./chunk.SDO3U72B.js";import"./chunk.IQGSEAQ2.js";import"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";export{a as ActivityFilter,b as InteractionRow};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{e as $}from"./chunk.
|
|
1
|
+
import{e as $}from"./chunk.DJIF7IAQ.js";import{a as C}from"./chunk.TQ2G4AM4.js";import{l as M}from"./chunk.5IEZF433.js";import{Nb as x,la as k,ma as v,na as j}from"./chunk.IQGSEAQ2.js";function N(a,s){let c=a.tryDefinition(s),r=Object.keys(c?.fields?.shape??{}),m=[c?.lifecycle?.field,...r.filter(l=>/^(status|stage|state|phase)$/i.test(l))].filter(l=>l!==void 0&&r.includes(l));return[...new Set(m)].slice(0,1)}function P(a,s){return a.tryDefinition(s)?.fieldRoles?.title??"label"}function V(a,s,c={}){let r=s.map(e=>a.graph.getNode(e)).filter(e=>e!==void 0);if(r.length===0)return{acts:[],withheld:[]};let u=c.principal??{kind:"human"},m=C(a,r.map(e=>e.id),{...c.derive,principal:u,...c.context?{context:c.context}:{}}),l=new Map(a.allMutations().map(e=>[e.name,e])),g=[...new Set(r.map(e=>e.kind))],p=new Set(g.map(e=>P(a.schema,e))),h=new Set(m.affordances.filter(e=>e.provider==="schema").map(e=>e.mutation)),o=e=>{let n=l.get(e.mutation);if(!n?.subject)return;let t=r.length===1&&e.provider==="invariant"&&!h.has(e.mutation)&&e.args[n.subject.arg]===r[0].id;if(!(e.provider!=="schema"&&!t)&&!(r.length>1&&e.batch?.length!==r.length)&&n.derived?.act!=="edit"&&!e.open.some(i=>p.has(i.name)))return n},y=[],b=new Set;for(let e of m.affordances){let n=o(e);if(!n||b.has(n.name))continue;b.add(n.name);let{[n.subject.arg]:t,...i}=e.args;y.push({id:e.id,label:v(n),mutation:n.name,subject:n.subject.arg,args:i,open:e.open,...e.destructive||e.setsAside?{more:!0}:{},...e.destructive?{destructive:!0}:{},affordance:{...e,label:v(n)}})}if(g.length===1){let e=g[0];for(let n of N(a.schema,e))for(let t of $(a.schema,[...l.values()],e,n)){if(t.by==="none"||r.every(d=>d[n]===t.value))continue;let i=r.find(d=>d[n]!==t.value),f=t.acts.find(d=>{let D=t.by==="step"?{[d.subject.arg]:i.id}:{[d.subject.arg]:i.id,[n]:t.value};return a.permits({name:d.name,args:D},u).ok});if(!f)continue;let w=t.by==="step"?{}:{[n]:t.value};if(t.by==="step"&&y.some(d=>d.mutation===f.name))continue;let R=t.by==="step"?v(f):`Move to ${t.label}`,O=`set:${n}:${t.value}`;y.push({id:O,label:R,mutation:f.name,subject:f.subject.arg,args:w,open:[],affordance:{id:O,label:R,provider:"schema",mutation:f.name,args:{[f.subject.arg]:i.id,...w},open:[],score:0,why:`every one is ${e}`,nodeIds:r.map(d=>d.id)}})}}let S=[...y.filter(e=>!e.more),...y.filter(e=>e.more)],A=m.withheld.filter(e=>{let n=l.get(e.mutation);return n?.subject!==void 0&&n.derived?.act!=="edit"&&(r.length===1||e.batch?.length===r.length)}).map(e=>({label:v(l.get(e.mutation)),message:e.refusal.message}));return{acts:S,withheld:A}}function _(a,s,c,r={}){let u=r.author,m=a.allMutations().find(e=>e.name===s.mutation),l=e=>M(a.schema,a.allMutations(),e),g=e=>{let n=a.graph.getNode(e);return n?k(a.schema.tryDefinition(n.kind),n):e},p=[],h=[],o=[];for(let e of[...new Set(c)]){let n={name:s.mutation,args:{...s.args,[s.subject]:e}};if(!m){p.push({id:e,label:g(e),message:`There is no act \u201C${s.mutation}\u201D.`,reason:"invalid"});continue}let t=a.permits(n,u);if(!t.ok){p.push({id:e,label:g(e),message:t.refusal.message,reason:"forbidden"});continue}if(!a.wouldChange(n,u)){h.push(e);continue}o.push({id:e,call:n})}let y=e=>a.previewAll(e,{...u?{author:u}:{},...r.context?{context:r.context}:{}});for(let e=0;o.length>0;e+=1)try{y(o.map(n=>n.call));break}catch(n){let t=[];for(let i of o)try{y([i.call]),t.push(i)}catch(f){p.push({id:i.id,label:g(i.id),message:l(f),reason:x(f).reason})}if(t.length===o.length||e>o.length){for(let i of t)p.push({id:i.id,label:g(i.id),message:l(n),reason:x(n).reason});o=[];break}o=t}if(o.length===0)return{applied:[],unchanged:h,refused:p};let b=s.label??(m?v(m):s.mutation),S=[...new Set(o.map(e=>a.graph.getNode(e.id)?.kind))],A=`${b} \u2014 ${S.length===1&&S[0]?j(a.schema,S[0],o.length):`${o.length} records`}`;try{let e=a.applyAll(o.map(n=>n.call),{intent:A,...u?{author:u}:{},...r.via?{via:r.via}:{}});return{batch:e.batch,intent:A,applied:o.map(n=>n.id),unchanged:h,refused:p,result:e}}catch(e){let n=l(e),t=x(e).reason;return{applied:[],unchanged:h,refused:[...p,...o.map(i=>({id:i.id,label:g(i.id),message:n,reason:t}))],allOrNothing:!0}}}export{V as a,_ as b};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./chunk.WVUJXDXZ.js";import{k as x}from"./chunk.
|
|
1
|
+
import"./chunk.WVUJXDXZ.js";import{k as x}from"./chunk.ZA5TDCBC.js";import"./chunk.2JEN2RCB.js";import"./chunk.7CLKGKSF.js";import"./chunk.TMHVYI5R.js";import"./chunk.R5MLRKAO.js";import"./chunk.YMXWS4XN.js";import"./chunk.5AD2QHWH.js";import{fb as f,hb as N,la as S}from"./chunk.IQGSEAQ2.js";import"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";var k=(n,r,t)=>({untrusted:!0,authoredBy:t.say(r),text:n});function O(n,r){let t;for(let[a,e]of Object.entries(n)){if(typeof e!="string"||a==="id"||a==="kind")continue;let o=r.fieldBy(n.id,a);o&&(t??={...n},t[a]=k(e,o,r))}return t??n}function L(n,r,t){let a=e=>{if(Array.isArray(e))return e.map(a);if(e!==null&&typeof e=="object"&&"id"in e&&"label"in e){let o=e,i=t.recordBy(o.id);return i?{...o,label:k(o.label,i,t)}:o}if(typeof e=="string"){let o=t.recordBy(n);return o?k(e,o,t):e}return e};return Object.fromEntries(Object.entries(r).map(([e,o])=>[e,a(o)]))}function $(n,r){return n.map(t=>{let a=r.recordBy(t.id);return a?{...t,label:k(t.label,a,r)}:t})}function D(n,r){return{...n,nodes:n.nodes.map(t=>O(t,r))}}var E=n=>(JSON.stringify(n)??"null").length,R=n=>typeof n=="number"&&Number.isFinite(n)&&n>0?Math.floor(n):0;function w(n,r,t,a,e,o=""){let i=n-r-t;return i>0?`and ${i} more ${e}: call ${a} with ${o}offset ${r+t} for the next page.`:void 0}var j=({line:n,...r})=>r;function T(n){let r;for(let[t,a]of Object.entries(n))typeof a!="string"||a.length<=600||(r??={...n},r[t]=`${a.slice(0,600)}\u2026 (cut at ${600} of ${a.length} characters)`);return r??n}function B(n,r,t,a){let e=Math.min(t,Math.max(0,n.length-r)),o=n.slice(r,r+e),i=a(o);for(;e>1&&E(i)>8e3;)e=Math.max(1,Math.floor(e*.75)),o=n.slice(r,r+e),i=a(o);return{page:o,answer:i}}function C(n,r){let t=JSON.stringify(r)??"null";if(t.length<=8e3)return r;let a=`This answer was ${t.length} characters, more than the ${8e3} one read answers, so it is cut. Ask ${n} for less, or use search_graph and get_node to read one thing.`;for(let e=8e3-a.length-40;;){let o={cut:a,partial:t.slice(0,e)},i=E(o)-8e3;if(i<=0)return o;e=Math.max(0,e-i-8)}}function I(n,r){let{matched:t,later:a,...e}=r,o=n.hits.filter(i=>i.about==="node").length;return n.total>o?{...e,more:`and ${n.total-o} more records match: narrow the words, or add kind:<kind>.`}:e}function P(n,r,t){let a=N(t.archived),e={nodes:n.graph.allNodes({archived:a}),edges:n.graph.allEdges({archived:"all"})},o=R(t.offset),i=e.nodes.length,{page:h,answer:u}=B(e.nodes,o,25,d=>{let g=new Set(d.map(s=>s.id)),l=new Set(d.map(s=>s.id)),c=w(i,o,d.length,"get_graph","nodes"),p=s=>l.has(s)||(a==="all"?n.graph.has(s):n.graph.has(s)&&f(n.graph.getNode(s))===a);return{...D({nodes:d.map(T),edges:e.edges.filter(s=>g.has(s.from)&&p(s.to))},r),total:i,...c?{more:c}:{}}});return{data:u,reads:h.map(d=>d.id)}}function U(n,r,t,a){let e=n.graph.getNode(t),o=R(a.offset),i=n.graph.outEdges(t),h=n.graph.inEdges(t),u=i.slice(o,o+20),d=h.slice(o,o+20),g=(s,A)=>{let m=n.graph.getNode(A);return{kind:s,id:A,label:m?S(n.schema.tryDefinition(m.kind),m):A,...f(m)?{archived:!0}:{}}},l=x(n.schema,n.graph,e),c=n.violations().filter(s=>s.nodeIds.includes(t)),p=[w(i.length,o,u.length,"get_node","links out",`id "${t}" and `),w(h.length,o,d.length,"get_node","links in",`id "${t}" and `),c.length>20?`and ${c.length-20} more problems: get_violations lists them.`:void 0].filter(Boolean);return{data:{node:O(T(e),r),...f(e)?{archived:!0}:{},...Object.keys(l.values).length>0?{computed:L(t,l.values,r)}:{},...Object.keys(l.refused).length>0?{uncomputed:l.refused}:{},out:$(u.map(s=>g(s.kind,s.to)),r),in:$(d.map(s=>g(s.kind,s.from)),r),violations:c.slice(0,20).map(j),...p.length>0?{more:p.join(" ")}:{}},reads:[t,...u.map(s=>s.to),...d.map(s=>s.from)]}}function F(n,r){let t=R(r.offset),{page:a,answer:e}=B(n,t,20,o=>{let i=w(n.length,t,o.length,"get_violations","problems");return{violations:o.map(j),total:n.length,...i?{more:i}:{}}});return{data:e,reads:[...new Set(a.flatMap(o=>o.nodeIds))]}}export{P as graphRead,U as nodeRead,I as searchRead,F as violationsRead,C as withinReadChars};
|