graview 0.1.29 → 0.1.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/preview/chunk.2NIOHEMX.js +1 -0
- package/dist/preview/{chunk.GZH6PTXN.js → chunk.3AGY4QVS.js} +1 -1
- package/dist/preview/chunk.3HXN4BOY.js +1 -0
- package/dist/preview/chunk.3K6YSVHC.js +1 -0
- package/dist/preview/{chunk.7D77HEIJ.js → chunk.3TVXGJTU.js} +1 -1
- package/dist/preview/chunk.3TY5NFLY.js +1 -0
- package/dist/preview/{chunk.IZW7DBK4.js → chunk.47STJVRV.js} +1 -1
- package/dist/preview/chunk.4HRAQNJO.js +27 -0
- package/dist/preview/chunk.4HZ7QTXZ.js +1 -0
- package/dist/preview/chunk.4MERAWS2.js +1 -0
- package/dist/preview/chunk.52W7WYME.js +1 -0
- package/dist/preview/chunk.5A4AOFOA.js +1 -0
- package/dist/preview/chunk.5H4VXLZF.js +88 -0
- package/dist/preview/{chunk.D4GOVA25.js → chunk.5T5XGILP.js} +1 -1
- package/dist/preview/chunk.5TVB6BUY.js +1 -0
- package/dist/preview/chunk.5UL7YDUD.js +1 -0
- package/dist/preview/chunk.63GXY2ME.js +1 -0
- package/dist/preview/chunk.6QWV5MVH.js +25 -0
- package/dist/preview/{chunk.HV6I74DF.js → chunk.6UGEYZAC.js} +1 -1
- package/dist/preview/chunk.6YCBYL2Y.js +2 -0
- package/dist/preview/chunk.7GKUVQVF.js +1 -0
- package/dist/preview/{chunk.QSDT2RLY.js → chunk.7T7NZZTC.js} +1 -1
- package/dist/preview/chunk.AKFKM4SW.js +3 -0
- package/dist/preview/chunk.AOSMJKLH.js +1 -0
- package/dist/preview/{chunk.IPBXAAQV.js → chunk.ASCLIM2P.js} +1 -1
- package/dist/preview/chunk.B2GLDIAS.js +1 -0
- package/dist/preview/chunk.BNV77BQZ.js +4 -0
- package/dist/preview/chunk.BOO6WVM4.js +117 -0
- package/dist/preview/chunk.BQ3JHEHV.js +1 -0
- package/dist/preview/chunk.CAVBSL27.js +1 -0
- package/dist/preview/chunk.CDP2XL66.js +1 -0
- package/dist/preview/chunk.CIPS2OGR.js +1 -0
- package/dist/preview/chunk.CJJLJ3KW.js +2 -0
- package/dist/preview/chunk.CN3UEF5N.js +90 -0
- package/dist/preview/chunk.COQKECUH.js +1 -0
- package/dist/preview/{chunk.3G5MQFZK.js → chunk.CWHRDBOF.js} +1 -1
- package/dist/preview/chunk.CX3KL2C5.js +1 -0
- package/dist/preview/chunk.D75KC3LL.js +1 -0
- package/dist/preview/chunk.DAZ2VSRD.js +1 -0
- package/dist/preview/{chunk.ONGVH3ZM.js → chunk.DHIUSUCL.js} +75 -24
- package/dist/preview/{chunk.44FVJOK4.js → chunk.DYSPCGXX.js} +1 -1
- package/dist/preview/chunk.E2YEOMPH.js +1 -0
- package/dist/preview/chunk.EBGAYL32.js +1 -0
- package/dist/preview/{chunk.HRWLR7T4.js → chunk.EF3XNU4O.js} +1 -1
- package/dist/preview/chunk.EJPI3ST6.js +1 -0
- package/dist/preview/chunk.EKPRNDUV.js +1 -0
- package/dist/preview/chunk.ERIT3R6N.js +1 -0
- package/dist/preview/chunk.EYTBDMTW.js +1 -0
- package/dist/preview/chunk.F6EH7HI2.js +1 -0
- package/dist/preview/{chunk.OGXE2RHC.js → chunk.F6ZK7RMB.js} +2 -2
- package/dist/preview/chunk.FSTCX2AI.js +1 -0
- package/dist/preview/chunk.FWTIUYXH.js +2 -0
- package/dist/preview/{chunk.YCA7P5MK.js → chunk.G5NZVPJU.js} +1 -1
- package/dist/preview/chunk.GO4XBWJO.js +9 -0
- package/dist/preview/chunk.GV2CQVKV.js +1 -0
- package/dist/preview/chunk.GYICGZMG.js +3 -0
- package/dist/preview/chunk.H7BST3XO.js +1 -0
- package/dist/preview/chunk.H7EPE74C.js +1 -0
- package/dist/preview/{chunk.X53HI436.js → chunk.HAIG6NVX.js} +1 -1
- package/dist/preview/chunk.HLTRQU4Y.js +35 -0
- package/dist/preview/{chunk.O4QPITBD.js → chunk.I6FPNX43.js} +1 -1
- package/dist/preview/chunk.IDVAR5HM.js +1 -0
- package/dist/preview/chunk.J25KOSNW.js +1 -0
- package/dist/preview/chunk.JDUJDAGA.js +1 -0
- package/dist/preview/chunk.JFAOHHJJ.js +1 -0
- package/dist/preview/chunk.JOOQUWLT.js +341 -0
- package/dist/preview/{chunk.ZBXOX3W3.js → chunk.JQU5GEU3.js} +1 -1
- package/dist/preview/chunk.K5ME5GCG.js +1 -0
- package/dist/preview/chunk.K7PMDSOL.js +1 -0
- package/dist/preview/chunk.KSES5U5B.js +1 -0
- package/dist/preview/chunk.LLLZEGRK.js +1 -0
- package/dist/preview/chunk.LR3VDXPI.js +1 -0
- package/dist/preview/chunk.LXBOVRFI.js +1 -0
- package/dist/preview/chunk.MAF7C3VM.js +2 -0
- package/dist/preview/chunk.MNP4JI33.js +5 -0
- package/dist/preview/{chunk.5AT4O4BN.js → chunk.MWGGV7DE.js} +1 -1
- package/dist/preview/chunk.N6OX4NEQ.js +1 -0
- package/dist/preview/chunk.NM6MZYFN.js +47 -0
- package/dist/preview/chunk.NRAYZY3X.js +1 -0
- package/dist/preview/chunk.NTF7FVB2.js +1 -0
- package/dist/preview/chunk.OC6IWRQ3.js +1 -0
- package/dist/preview/chunk.OF34OZ4V.js +1 -0
- package/dist/preview/chunk.OJGHDWI6.js +1 -0
- package/dist/preview/chunk.OKRNJXTV.js +1 -0
- package/dist/preview/chunk.PBSMLINK.js +1 -0
- package/dist/preview/chunk.PHKSMUIA.js +1 -0
- package/dist/preview/chunk.PIP6Z563.js +1 -0
- package/dist/preview/chunk.QGTSHKJL.js +1 -0
- package/dist/preview/chunk.QVVJRSRM.js +1 -0
- package/dist/preview/{chunk.J46KDTEZ.js → chunk.QYZNAUIR.js} +1 -1
- package/dist/preview/chunk.R6K6GF5R.js +1 -0
- package/dist/preview/chunk.RCKTBOY2.js +1 -0
- package/dist/preview/{chunk.CK7QWLMX.js → chunk.RIJUCHP4.js} +1 -1
- package/dist/preview/chunk.SHPXD6FC.js +1 -0
- package/dist/preview/chunk.SHTJZ6UX.js +1 -0
- package/dist/preview/chunk.SYAEBGDC.js +2 -0
- package/dist/preview/chunk.T5VG5A6V.js +1 -0
- package/dist/preview/{chunk.JNGUSAWX.js → chunk.TAQ764IQ.js} +17 -3
- package/dist/preview/chunk.TCNBCTWO.js +1 -0
- package/dist/preview/chunk.TI4OSTQV.js +1 -0
- package/dist/preview/{chunk.ZSKP6UQS.js → chunk.UATVTXZY.js} +1 -1
- package/dist/preview/{chunk.V6TK4LHW.js → chunk.UBFNZMUX.js} +4 -4
- package/dist/preview/chunk.UGFDSE37.js +1 -0
- package/dist/preview/chunk.UGFJKSHU.js +3 -0
- package/dist/preview/chunk.UHUGOTUU.js +19 -0
- package/dist/preview/chunk.ULRW47RP.js +1 -0
- package/dist/preview/chunk.UNL2HIF2.js +1 -0
- package/dist/preview/chunk.UZGRRDHD.js +1 -0
- package/dist/preview/chunk.VG3O4LWB.js +1 -0
- package/dist/preview/chunk.WAZ7OGBD.js +1 -0
- package/dist/preview/chunk.XANVHJQ4.js +1 -0
- package/dist/preview/chunk.XKABS745.js +1 -0
- package/dist/preview/chunk.XMC7YDWT.js +1 -0
- package/dist/preview/chunk.XNJEFUF7.js +3 -0
- package/dist/preview/chunk.Y6ZNFQK3.js +6 -0
- package/dist/preview/{chunk.QNHECGMH.js → chunk.YIR7PPF3.js} +1 -1
- package/dist/preview/index.html +51 -0
- package/dist/preview/page.js +6 -6
- package/package.json +6 -6
- package/dist/preview/chunk.2643W7FT.js +0 -1
- package/dist/preview/chunk.2CLPRG3I.js +0 -1
- package/dist/preview/chunk.2IZFIORK.js +0 -1
- package/dist/preview/chunk.2NCTM5K2.js +0 -2
- package/dist/preview/chunk.3JM2TNDD.js +0 -2
- package/dist/preview/chunk.4GGAPOMK.js +0 -2
- package/dist/preview/chunk.5JXUAMKI.js +0 -1
- package/dist/preview/chunk.5R66YTET.js +0 -2
- package/dist/preview/chunk.64P76WK4.js +0 -1
- package/dist/preview/chunk.7DNFXJH3.js +0 -1
- package/dist/preview/chunk.7PRFYYVM.js +0 -1
- package/dist/preview/chunk.AE5GKL4C.js +0 -1
- package/dist/preview/chunk.ARR75WBP.js +0 -35
- package/dist/preview/chunk.AVUS5LMG.js +0 -3
- package/dist/preview/chunk.BKPGDEES.js +0 -1
- package/dist/preview/chunk.BZ5OJYHU.js +0 -1
- package/dist/preview/chunk.COTG2IG5.js +0 -1
- package/dist/preview/chunk.DAA6XWLF.js +0 -1
- package/dist/preview/chunk.DKTCRFMS.js +0 -1
- package/dist/preview/chunk.DLGTFXGM.js +0 -1
- package/dist/preview/chunk.DN7SN6ZR.js +0 -1
- package/dist/preview/chunk.G4WQGTZR.js +0 -3
- package/dist/preview/chunk.GDA3G4U2.js +0 -6
- package/dist/preview/chunk.GS4T26WW.js +0 -328
- package/dist/preview/chunk.HFKMHLJ3.js +0 -1
- package/dist/preview/chunk.HGAMNIST.js +0 -1
- package/dist/preview/chunk.HKBKH7EK.js +0 -1
- package/dist/preview/chunk.HLLWKSZB.js +0 -5
- package/dist/preview/chunk.HONUT6OG.js +0 -1
- package/dist/preview/chunk.IWYUFYDJ.js +0 -1
- package/dist/preview/chunk.JU2ZVKMT.js +0 -2
- package/dist/preview/chunk.K4ZUVH2G.js +0 -1
- package/dist/preview/chunk.KC6UZHBM.js +0 -1
- package/dist/preview/chunk.KLITC55P.js +0 -1
- package/dist/preview/chunk.KZ2376BD.js +0 -19
- package/dist/preview/chunk.LYJAVUST.js +0 -1
- package/dist/preview/chunk.MOUGB4H6.js +0 -1
- package/dist/preview/chunk.MYFWM572.js +0 -1
- package/dist/preview/chunk.N4FBDA2W.js +0 -1
- package/dist/preview/chunk.O42YET3W.js +0 -1
- package/dist/preview/chunk.ONDILMIX.js +0 -1
- package/dist/preview/chunk.OQDETV4X.js +0 -1
- package/dist/preview/chunk.OWBEV6FR.js +0 -1
- package/dist/preview/chunk.OWE6OJ4P.js +0 -1
- package/dist/preview/chunk.OYJSFO3A.js +0 -1
- package/dist/preview/chunk.P62SKNJS.js +0 -27
- package/dist/preview/chunk.PA5HYAEO.js +0 -1
- package/dist/preview/chunk.PMEDLEZY.js +0 -9
- package/dist/preview/chunk.PTXQHHKF.js +0 -1
- package/dist/preview/chunk.R2D373VG.js +0 -1
- package/dist/preview/chunk.RB4RTBRZ.js +0 -1
- package/dist/preview/chunk.RCLJ4H52.js +0 -116
- package/dist/preview/chunk.RKRSRKF3.js +0 -1
- package/dist/preview/chunk.RWGLKDWH.js +0 -1
- package/dist/preview/chunk.SIL4KD3K.js +0 -1
- package/dist/preview/chunk.SS76EIMI.js +0 -1
- package/dist/preview/chunk.T4LY5QXO.js +0 -14
- package/dist/preview/chunk.UIIVEQAT.js +0 -1
- package/dist/preview/chunk.UTHHX2TJ.js +0 -1
- package/dist/preview/chunk.UWNYT7PF.js +0 -1
- package/dist/preview/chunk.VNBO2RXD.js +0 -1
- package/dist/preview/chunk.VPPUTA74.js +0 -1
- package/dist/preview/chunk.WKXNBHTL.js +0 -4
- package/dist/preview/chunk.WLRTPFAC.js +0 -1
- package/dist/preview/chunk.XAXJHEMD.js +0 -1
- package/dist/preview/chunk.XDZSTIS6.js +0 -88
- package/dist/preview/chunk.XXHNV24G.js +0 -1
- package/dist/preview/chunk.YRQZZH5V.js +0 -1
- package/dist/preview/chunk.YUWRZWGX.js +0 -1
- package/dist/preview/chunk.Z2RGLFLS.js +0 -1
- package/dist/preview/chunk.Z56B2JR2.js +0 -25
- package/dist/preview/chunk.Z5V23DQN.js +0 -3
- package/dist/preview/chunk.ZEGSQCSD.js +0 -1
- package/dist/preview/chunk.ZEVVWWNA.js +0 -44
- package/dist/preview/chunk.ZS4DJ76C.js +0 -1
- /package/dist/preview/{chunk.OHE5AMHH.js → chunk.GZHZLJBF.js} +0 -0
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import{a as $,b as V}from"./chunk.RKRSRKF3.js";import{e as Z}from"./chunk.KC6UZHBM.js";import{b as k}from"./chunk.G4WQGTZR.js";import{a as z,h as K}from"./chunk.GS4T26WW.js";import{F as te,M as B,la as W,oa as Y,pa as U}from"./chunk.Z56B2JR2.js";import{J as _,W as j}from"./chunk.HLLWKSZB.js";import{b as R}from"./chunk.AJZBJBMO.js";var w=R(te(),1);var t=R(B(),1),Ne=9,ae=40,oe=2;function ie(e){let r=new Map;for(let i of e.allNodes())r.set(i.kind,(r.get(i.kind)??0)+1);return r}var se=(e,r)=>(e.far??[]).reduce((i,a)=>i+(r.get(a)??0),0);function le(e,r,i){if(i)return i.flatMap(s=>e.filters.filter(u=>u.key===s));let a=ie(r),o=new Set(e.filters.filter(s=>s.about==="edge"&&se(s,a)>ae).map(s=>s.key));return e.filters.filter(s=>s.about==="edge"?!o.has(s.key):s.about==="via"?o.has(s.key.split(".")[0]):!0)}function ge(e,r){let i=e.filter(a=>a.about==="field"&&a.type==="choice"&&(a.options?.length??0)>0);return r?i:i.slice(0,oe)}var de=520;function ue(e,r,i,a){let o=i.filters.find(s=>s.key===a.key);if(!o)return`${a.key}: ${a.value}`;if(o.about==="is")return a.value.charAt(0).toUpperCase()+a.value.slice(1);if(o.about==="via")return`${o.label}: ${k(e.tryDefinition(o.far?.[0]??""),o.key.split(".")[1],a.value)}`;if(o.about==="edge"){if(a.value==="*")return`${o.label}: anything`;if(a.value==="none")return`${o.label}: nothing`;let s=r.getNode(a.value);return`${o.label}: ${s?j(e.tryDefinition(s.kind),s):a.value}`}if(o.type==="date"){let[s,u]=a.value.split(":");return`${o.label} ${s} ${u?_(u):""}`.trim()}if(o.type==="boolean")return`${o.label}: ${a.value==="true"?"yes":"no"}`;if(o.type==="number"){let s=a.value.lastIndexOf(":"),u=a.value.slice(0,Math.max(0,s));if(u==="at-most"||u==="at-least")return`${o.label}: ${u==="at-most"?"at most":"at least"} ${k(e.tryDefinition(i.kind),o.key,Number(a.value.slice(s+1)))}`}return o.type==="text"?`${o.label}: ${a.value}`:`${o.label}: ${k(e.tryDefinition(i.kind),o.key,a.value)}`}var I=e=>/^[A-Z][a-z]/.test(e)?e.charAt(0).toLowerCase()+e.slice(1):e;function ce(e){return e?.type==="date"?{asc:"Earliest first",desc:"Latest first"}:e?.type==="number"?{asc:"Lowest first",desc:"Highest first"}:e?.type==="boolean"?{asc:"No first",desc:"Yes first"}:e?.type==="choice"?{asc:"In their order",desc:"In reverse order"}:{asc:"A to Z",desc:"Z to A"}}var b=U(z(()=>import("./chunk.ARR75WBP.js"))),S=b.part((e,r)=>(0,t.jsx)(e.ArrangeLists,{...r}),{what:"This list",quiet:!0}),pe=b.part((e,r)=>(0,t.jsx)(e.ArrangeChips,{...r}),{what:"This list",quiet:!0}),Ee=()=>b.load(),D=new Map;function Le(e){let{schema:r,graph:i,kind:a,arrangement:o,onChange:s}=e,u=e.offers??Z(r,a),g=e.testId??"arrange",y=$(e.allow,"sort")&&u.sorts.length>1,h=$(e.allow,"group")&&u.groups.length>0,P=$(e.allow,"filter")?le(u,i,e.filters):[],N=e.chips?ge(P,e.filters):[],T=P.filter(n=>!N.includes(n)),M=T.length>0,F=e.query!==!1&&e.allow!==!1,m=fe(e.noun,e.kept);if(!y&&!h&&!M&&!F&&!m)return null;let H=n=>JSON.stringify(V(n)),E=`${g}|${a}`,c={current:D.get(E)??{words:new Set,latest:null,at:0}};D.set(E,c.current),c.current.latest&&Date.now()-c.current.at>1500&&!c.current.words.has(H(o))&&(c.current={words:new Set,latest:null,at:0},D.set(E,c.current));let l=c.current.latest??o,v=n=>{let d={...c.current.latest??o,...n};for(let p of Object.keys(d))d[p]===void 0&&delete d[p];c.current.latest=d,c.current.at=Date.now(),c.current.words.add(H(d)),s(d)},f=l.filter??[],L=n=>{let d=f.filter((p,ne)=>ne!==n);v({filter:d.length>0?d:void 0})},x=n=>f.some(d=>d.key===n.key&&d.value===n.value),J=n=>x(n)?L(f.findIndex(d=>d.key===n.key&&d.value===n.value)):v({filter:[...f,n]}),O=l.sort?u.sorts.find(n=>n.key===l.sort.by):void 0,q=l.group?u.groups.find(n=>n.key===l.group.by):void 0,Q=ce(O),A={schema:r,graph:i,offers:{...u,filters:T},arrangement:l,set:v,toggle:J,has:x,testId:g},X=(n,d)=>x({key:n,value:d})?L(f.findIndex(p=>p.key===n&&p.value===d)):v({filter:[...f.filter(p=>p.key!==n),{key:n,value:d}]}),ee=l.sort?(0,t.jsxs)(t.Fragment,{children:["Sorted by ",I(O?.label??l.sort.by),(0,t.jsx)("span",{"aria-hidden":"true",children:l.sort.direction==="desc"?" \u2193":" \u2191"})]}):"Sort",re=l.group?.bucket&&q?.buckets?`, a ${l.group.bucket} each`:"",G=l.group?`Grouped by ${I(q?.label??l.group.by)}${re}`:"Group";return(0,t.jsxs)("div",{"data-testid":`${g}-bar`,role:"group","aria-label":"Arrange",className:"graview-arrange",style:e.style,onPointerEnter:b.prefetch,onFocus:b.prefetch,children:[(0,t.jsx)("style",{children:we}),(0,t.jsxs)("div",{className:"graview-arrange-line",children:[m?(0,t.jsxs)("span",{className:"graview-arrange-count","data-testid":`${g}-count`,children:[m.kept?(0,t.jsx)("span",{"data-testid":`${g}-kept`,children:m.kept}):null,m.words]}):null,f.map((n,d)=>{let p=ue(r,i,u,n);return(0,t.jsxs)("span",{className:"graview-arrange-token","data-testid":`${g}-condition`,children:[p,(0,t.jsx)("button",{type:"button","aria-label":`Remove: ${p}`,title:"Remove",onClick:()=>L(d),children:"\xD7"})]},`${n.key}:${n.value}`)}),y?(0,t.jsx)("span",{className:"graview-arrange-part graview-arrange-one",children:(0,t.jsx)(C,{testId:`${g}-sort`,value:l.sort?.by??"",set:l.sort!==void 0,label:"Sort",name:l.sort?`Sorted by ${I(O?.label??l.sort.by)}, ${Q[l.sort.direction].toLowerCase()}`:"Sort",list:n=>(0,t.jsx)(S,{which:"sort",done:n,...A}),children:ee})}):null,h?(0,t.jsx)("span",{className:"graview-arrange-part graview-arrange-one",children:(0,t.jsx)(C,{testId:`${g}-group`,value:l.group?.by??"",set:l.group!==void 0,label:"Group",name:G,list:n=>(0,t.jsx)(S,{which:"group",done:n,...A}),children:G})}):null,M?(0,t.jsx)("span",{className:"graview-arrange-part",children:(0,t.jsx)(C,{testId:`${g}-add`,value:"",set:!1,label:"Filter",name:f.length>0?`Filter \u2014 ${f.length} on`:"Filter",list:n=>(0,t.jsx)(S,{which:"filter",done:n,...A}),children:"Filter"})}):null,y||h?(0,t.jsx)("span",{className:"graview-arrange-part graview-arrange-all",children:(0,t.jsx)(C,{testId:`${g}-all`,value:"",set:!1,label:"Arrange",name:"Arrange: sort and group",list:n=>(0,t.jsx)(S,{which:"all",done:n,parts:{sort:y,group:h,filter:!1},...A}),children:"Arrange"})}):null,F?(0,t.jsxs)("label",{className:"graview-arrange-words-at",children:[(0,t.jsx)("span",{style:K,children:"Find"}),(0,t.jsx)("input",{type:"search",className:"graview-arrange-words","data-testid":`${g}-query`,value:l.query??"",placeholder:"Find\u2026",onChange:n=>v({query:n.target.value.length>0?n.target.value:void 0})})]}):null,N.length>0&&e.chips?(0,t.jsx)(w.Suspense,{fallback:null,children:(0,t.jsx)(pe,{offers:N,chips:e.chips,schema:r,graph:i,kind:a,arrangement:l,has:x,choose:X,testId:g})}):null]})]})}function fe(e,r){if(!r)return null;let i=r.shown!==r.of;if(!e)return i?{words:"",kept:`${r.shown} of ${r.of}`}:null;let a=r.of===1?e.one:e.many;return i?{words:` ${a}`,kept:`${r.shown} of ${r.of}`}:{words:`${r.of} ${a}`}}function C({testId:e,value:r,set:i,label:a,name:o,list:s,children:u}){let g=Y("arrange",{align:"start"}),y=(0,w.useRef)(null);return(0,w.useEffect)(()=>{g.open&&y.current?.querySelector('[aria-pressed="true"]')?.focus({preventScroll:!0})},[g.open]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("button",{type:"button",className:"graview-arrange-open","data-testid":e,"data-set":i?"":void 0,value:r,"aria-label":o,...g.trigger,onClick:g.toggle,children:[u,(0,t.jsx)(he,{})]}),g.open?(0,t.jsx)("div",{...g.pane,ref:h=>{g.pane.ref(h),y.current=h},role:"group","aria-label":a,"data-testid":"arrange-list","data-arrange":e,className:"graview-arrange-list",style:W,onKeyDown:ye,children:s(()=>g.setOpen(!1))}):null]})}function ye(e){if(!["ArrowDown","ArrowUp","Home","End"].includes(e.key))return;let r=[...e.currentTarget.querySelectorAll("button:not([disabled]), input")];if(r.length===0)return;let i=r.indexOf(document.activeElement);if(document.activeElement instanceof HTMLInputElement&&document.activeElement.type==="date"&&(e.key==="ArrowUp"||e.key==="ArrowDown"))return;e.preventDefault();let a=e.key==="Home"?0:e.key==="End"?r.length-1:e.key==="ArrowDown"?(i+1)%r.length:(i-1+r.length)%r.length;r[a].focus()}function he(){return(0,t.jsx)("svg",{width:"9",height:"9",viewBox:"0 0 10 10","aria-hidden":"true",focusable:"false",style:{flex:"0 0 auto",opacity:.7},children:(0,t.jsx)("path",{d:"M2 3.5 L5 6.5 L8 3.5",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})})}var we=`
|
|
2
|
-
.graview-arrange{container-type:inline-size;box-sizing:border-box;width:100%;min-width:0;max-width:100%}
|
|
3
|
-
.graview-arrange-line{display:flex;flex-wrap:wrap;align-items:center;gap:2px 6px;min-width:0;font-size:.875rem;line-height:1.35;color:var(--graview-ink-muted)}
|
|
4
|
-
.graview-arrange-count{margin-right:2px;color:var(--graview-ink-muted)}
|
|
5
|
-
.graview-arrange-part{display:inline-flex;align-items:center;min-width:0}
|
|
6
|
-
.graview-arrange-count~.graview-arrange-part::before{content:"\xB7";margin-right:6px;color:var(--graview-ink-muted)}
|
|
7
|
-
.graview-arrange-open{display:inline-flex;align-items:center;gap:5px;min-height:28px;min-width:0;max-width:100%;margin:0;padding:0 6px;border:1px solid transparent;border-radius:7px;background:none;box-shadow:none;font:inherit;letter-spacing:normal;text-transform:none;text-align:left;color:var(--graview-ink-muted);cursor:pointer}
|
|
8
|
-
.graview-arrange-open[data-set]{color:var(--graview-ink)}
|
|
9
|
-
.graview-arrange-open:hover,.graview-arrange-open[aria-expanded=true]{border-color:var(--graview-edge);color:var(--graview-ink)}
|
|
10
|
-
.graview-arrange :focus-visible,.graview-arrange-list :focus-visible{outline:2px solid var(--graview-accent);outline-offset:1px}
|
|
11
|
-
.graview-arrange-all{display:none}
|
|
12
|
-
@container (max-width: ${de-1}px){.graview-arrange-one{display:none}.graview-arrange-all{display:inline-flex}}
|
|
13
|
-
.graview-arrange-token{display:inline-flex;align-items:center;gap:0;min-width:0;min-height:26px;box-sizing:border-box;padding:0 2px 0 10px;border:1px solid var(--graview-edge);border-radius:999px;background:var(--graview-panel);color:var(--graview-ink);overflow-wrap:anywhere}
|
|
14
|
-
.graview-arrange-token button{display:inline-flex;align-items:center;justify-content:center;min-width:24px;min-height:24px;margin:0;padding:0;border:0;border-radius:6px;background:none;font:inherit;line-height:1;color:var(--graview-ink-muted);cursor:pointer}
|
|
15
|
-
.graview-arrange-token button:hover{color:var(--graview-ink);background:color-mix(in srgb,var(--graview-ink) 7%,transparent)}
|
|
16
|
-
.graview-arrange-words-at{display:inline-flex;min-width:0;max-width:100%}
|
|
17
|
-
.graview-arrange-words{box-sizing:border-box;width:min(100%,12rem);min-height:28px;margin:0;padding:0 8px;border:1px solid transparent;border-radius:7px;background:transparent;font:inherit;color:var(--graview-ink)}
|
|
18
|
-
.graview-arrange-words:hover,.graview-arrange-words:focus{border-color:var(--graview-edge)}
|
|
19
|
-
`;function Oe(e){let r=[];return e.query&&r.push(`\u201C${e.query}\u201D`),e.filter?.length&&r.push(`${e.filter.length} condition${e.filter.length===1?"":"s"}`),e.group&&r.push(`by ${e.group.by}`),e.sort&&r.push(`sorted by ${e.sort.by}`),r.length>0?r.join(" \xB7 "):null}export{Ne as a,ae as b,oe as c,ie as d,se as e,le as f,ge as g,de as h,ue as i,I as j,ce as k,Ee as l,Le as m,Oe as n};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{B as Y,D as Z,b as T,e as K,g as z,j as W,k as D,o as _,p as j,q as U,t as J,v as Q,x as X}from"./chunk.GS4T26WW.js";import{F as ae,M as $,U as G,W as I,da as V,ka as q}from"./chunk.Z56B2JR2.js";import{Xb as N,pb as L,yb as M,zb as O}from"./chunk.HLLWKSZB.js";import{b as F}from"./chunk.AJZBJBMO.js";var o=F(ae(),1);function se(e){let t=[e?.typography?.body,e?.typography?.display,e?.typography?.mono],n=[];for(let a of t){let r=a?.split(",")[0]?.trim().replace(/^["']|["']$/g,"");!r||O(r)||r.toLowerCase()!==L.toLowerCase()&&(n.includes(r)||n.push(r))}return n}function ee(e){let t=se(e);return t.length===0?null:`https://fonts.googleapis.com/css2?${t.map(a=>`family=${encodeURIComponent(a).replace(/%20/g,"+")}:wght@400;500;600;700`).join("&")}&display=swap`}var u=F($(),1);function ge(e,t){let{app:n}=e;return(0,o.useMemo)(()=>{let a=Y(t(n.schema,n.viewSpecs),n),r=e.views?V(a,e.views(n.schema,a)):a;return Z(r,n.schema,Q(e.brand??n.brand,n.schema)),r},[e.views,n.schema,n.viewSpecs,n.lenses,n.pages,n.home])}function ie(e,t){return new N({schema:e.schema,mutations:e.mutations??[],invariants:e.invariants??[],...t?{snapshot:t}:{},...e.policy?{policy:e.policy}:{},...e.intelligence?{intelligence:e.intelligence}:{}})}function ne(e){if(typeof document>"u")return e==="dark"?"dark":"light";let t=document.documentElement.dataset.theme;return t==="dark"||t==="light"?t:e==="dark"||e==="light"?e:typeof matchMedia=="function"&&matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function ce(e,t){let[n,a]=(0,o.useState)(()=>ne(t));return(0,o.useEffect)(()=>{if(!e||typeof document>"u")return;let r=()=>a(ne(t));r();let i=new MutationObserver(r);i.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]});let d=typeof matchMedia=="function"?matchMedia("(prefers-color-scheme: dark)"):null;return d?.addEventListener?.("change",r),()=>{i.disconnect(),d?.removeEventListener?.("change",r)}},[e,t]),n}var R=e=>e?e.getBoundingClientRect().height:0;function be(e,t,n){let a=(0,o.useRef)(n);a.current=n;let r=n!==void 0;(0,o.useLayoutEffect)(()=>{let i=e.current;if(!i||!r)return;let d=()=>{let l=[...i.children],b=l.find(v=>v.hasAttribute("data-graview-app-bar")),p=l.find(v=>v.hasAttribute("data-embed-content")),h=p?.querySelector("[data-embed-measure]")??null,c=l.find(v=>v.hasAttribute("data-graview-place-line"));return{strip:b,line:c,content:p,measure:h}},s=-1,f=()=>{let{strip:l,line:b,content:p,measure:h}=d(),c=Math.ceil(R(l)+R(b)+R(h||p));c!==s&&(s=c,a.current?.(c))};if(f(),typeof ResizeObserver>"u")return;let m=new ResizeObserver(f),E=()=>{m.disconnect();let{strip:l,line:b,content:p,measure:h}=d();for(let c of[i,l,b,p,h])c&&m.observe(c)};E();let g=new MutationObserver(()=>{E(),f()});return g.observe(i,{childList:!0}),()=>{m.disconnect(),g.disconnect()}},[e,t,r])}var ve=480,de=0;function Se(e){let{app:t,seed:n,scheme:a="auto",brand:r=t.brand,fonts:i=!0,height:d="100%",label:s}=e,f=(0,o.useRef)(null);q(f);let m=d==="viewport"?"100dvh":d,E=z(typeof m=="string"&&/vh\b/.test(m)),g=(0,o.useMemo)(()=>`graview-embed-${++de}`,[]),l=(0,o.useMemo)(()=>e.store??e.remote?.store??ie(t,n),[e.store,e.remote,t,n]),b=e.presence??e.remote?.presence,p=e.hostContext?.theme,h=ce(a==="auto"&&p===void 0,r?.scheme),c=a==="auto"?p??h:a,v=(0,o.useMemo)(()=>T(c,r,{scope:`.${g}`}),[c,r,g]);K(e.favicon?M(r):void 0),(0,o.useEffect)(()=>{if(!i||typeof document>"u")return;let w=ee(r);if(!w||document.querySelector(`link[href="${w}"]`))return;let y=document.createElement("link");y.rel="stylesheet",y.href=w,document.head.appendChild(y)},[r,i]);let C=(0,o.useRef)(void 0);(0,o.useLayoutEffect)(()=>{let w=f.current,y=C.current;if(C.current=s,!w||!s)return;let oe=S=>{let x=S.getAttribute("aria-label")??"",A=y&&y!==s?x.startsWith(`${y} \xB7 `)?x.slice(y.length+3):x===y?"":x:x;A===s&&(S.getAttribute("role")==="region"||S.tagName==="SECTION"&&!S.hasAttribute("role"))&&S.setAttribute("role","group");let H=A.startsWith(`${s} \xB7 `)||A===s?A:A?`${s} \xB7 ${A}`:s;H!==x&&S.setAttribute("aria-label",H)},B=()=>w.querySelectorAll("aside, nav, main, header, footer, section[aria-label]:not([role]), [role=region], [role=complementary], [role=navigation], [role=search]").forEach(S=>{S.hasAttribute("data-graview-named-by-lens")||oe(S)});B();let P=new MutationObserver(B);return P.observe(w,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["aria-label"]}),()=>P.disconnect()},[s]);let re=E?`${m}`.replace(/([\d.]+)[sdl]?vh\b/g,(w,y)=>`${+y*E/100}px`):m;return{rootRef:f,scope:g,css:v,scheme:c,store:l,presence:b,brand:r,auto:d==="auto",height:re}}function we({rootRef:e,board:t}){let n=(0,o.useCallback)(()=>e.current?.querySelector("[data-embed-content]")??e.current,[e]);return(0,u.jsx)(J,{board:t,anchor:n})}function Ee(e,t,n){return{brand:n,locale:e.locale,principal:e.principal,seats:e.seats,presence:t,people:e.people,memory:e.memory,presenceTtlMs:e.presenceTtlMs,onKeepLens:e.onKeepLens,ai:e.ai,files:e.files,resolveApp:e.resolveApp,app:e.app}}function xe({name:e,heading:t,faces:n,at:a,without:r,home:i,reach:d,standing:s,hostActions:f,keeping:m,onFind:E,switch:g}){let{brand:l,store:b,principal:p,views:h}=G();I();let c=r?.has("places")?[]:W({store:b,principal:p,views:h}),v=U();return(0,u.jsx)(_,{brand:l,name:e,description:l?.subtitle,heading:t,faces:n,home:i,places:c,current:a===null?null:D(c,a),reach:d,onFind:E,...g?{switch:g}:{},...n?{scenePlaces:v}:{},tools:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(X,{clean:s}),(0,u.jsx)(j,{...f?{hostActions:f}:{},...m?{keeping:m}:{}})]})})}var Ae=e=>e===!1?2:Math.min(e+1,6);function Re(e){let[t,n]=(0,o.useState)(e),a=(0,o.useRef)(void 0),r=(0,o.useRef)(void 0),i=(0,o.useMemo)(()=>({go:a,at:n,pending:r}),[]),d=(0,o.useCallback)(s=>{if(a.current){a.current(s);return}r.current=s,n(s)},[]);return{at:t,setAt:n,steering:i,steer:d}}function le(e){let t=typeof e=="object"&&e!==null?e.name:void 0;return{name:typeof t=="string"&&t.length>0?t:typeof e=="object"?"Error":typeof e}}var k=()=>typeof performance<"u"?performance.now():Date.now();function Fe(e,t){let n=(0,o.useRef)({onError:e,face:t});return n.current={onError:e,face:t},(0,o.useCallback)((a,r)=>n.current.onError?.(le(a),{module:r.module,face:n.current.face}),[])}function ke(e,t){let n=(0,o.useRef)(null);n.current===null&&(n.current=k());let a=(0,o.useRef)({onReady:e,face:t});a.current={onReady:e,face:t};let r=(0,o.useRef)(!1);return(0,o.useCallback)(i=>{r.current||(r.current=!0,a.current.onReady?.({ms:Math.max(0,k()-(n.current??k())),face:i}))},[])}var te=class extends o.Component{state={failed:!1};static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(t,n){console.error(`[graview] ${this.props.module} threw while rendering`,t,n.componentStack),this.props.report(t,{module:this.props.module})}render(){return this.state.failed?(0,u.jsxs)("div",{role:"alert","data-graview-face-error":this.props.module,...this.props.content?{"data-embed-content":""}:{},style:this.props.content?{flex:"1 1 auto",display:"grid",alignContent:"center",justifyItems:"center",gap:8,padding:24,background:"var(--graview-ground)",color:"var(--graview-ink)",fontSize:"0.9375rem"}:{display:"inline-flex",alignItems:"center",gap:6,fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:[(0,u.jsx)("span",{children:this.props.content?"This part of the app could not draw.":"Could not draw."}),(0,u.jsx)("button",{type:"button",onClick:()=>this.setState({failed:!1}),style:{padding:"3px 11px",fontSize:"0.8125rem"},children:"Try again"})]}):this.props.children}};export{ge as a,ie as b,be as c,ve as d,Se as e,we as f,Ee as g,xe as h,Ae as i,Re as j,Fe as k,ke as l,te as m};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as c}from"./chunk.GS4T26WW.js";import{F as h,M as p}from"./chunk.Z56B2JR2.js";import{pc as f}from"./chunk.HLLWKSZB.js";import{b as a}from"./chunk.AJZBJBMO.js";var m=a(p(),1),u=c.part(e=>(0,m.jsx)(e.ActivityRail,{calls:[]}),{quiet:!0});var t=a(h(),1),s=a(p(),1);function ir({context:e,stop:r,title:o,style:n,className:i,children:x,...l}){let d=f(e.views?.arrangement?.()),y=x??`In ${d==="Scene"?"the scene":d.replace(/^The /,"the ")} \u2197`;if(e.overview){let g=e.overview;return(0,s.jsx)("a",{href:r,...l,...o?{title:o}:{},style:n,...i?{className:i}:{},onClick:S=>{S.preventDefault(),g(r)},children:y})}return e.embedded?null:(0,s.jsx)("a",{href:`${e.sceneHref??"/"}${r}`,...l,...o?{title:o}:{},style:n,...i?{className:i}:{},children:y})}function pr(){return(0,s.jsx)("a",{href:"#fresh","data-testid":"start-fresh",title:"Forget every edit made in this browser and return to the example",onClick:e=>{e.preventDefault();let r=new URL(window.location.href);r.searchParams.set("fresh","1"),window.location.assign(r.toString())},style:{color:"inherit",display:"inline-flex",alignItems:"center",minHeight:24,minWidth:24},children:"Start fresh"})}function sr(e){let r=(0,t.useRef)(0),o=(0,t.useCallback)(n=>e.subscribe(()=>{r.current+=1,n()}),[e]);return(0,t.useSyncExternalStore)(o,()=>r.current,()=>0)}export{u as a,ir as b,pr as c,sr as d};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as st}from"./chunk.XXHNV24G.js";import"./chunk.RKRSRKF3.js";import{e as V,k as ue,l as G,p as et}from"./chunk.KC6UZHBM.js";import{a as ee}from"./chunk.G4JJXA63.js";import{d as nt}from"./chunk.YRQZZH5V.js";import"./chunk.HONUT6OG.js";import"./chunk.X53HI436.js";import{b as tt}from"./chunk.COTG2IG5.js";import"./chunk.YCA7P5MK.js";import"./chunk.ZS4DJ76C.js";import{d as Ze}from"./chunk.5R66YTET.js";import{c as Xe}from"./chunk.G4WQGTZR.js";import"./chunk.HFKMHLJ3.js";import{$b as Ne,Ia as qe,Ja as Ve,N as ze,W as Je,_ as Ye,ac as Qe,ba as Ae,ca as F}from"./chunk.HLLWKSZB.js";import"./chunk.AJZBJBMO.js";var vt="Nothing by that name here.",$=o=>o.normalize("NFD").replace(/\p{M}+/gu,"").toLowerCase().replace(/[’']/g,"'").replace(/[^\p{L}\p{N}' ]+/gu," ").replace(/\s+/g," ").trim(),At=/^(?:(?:can you |could you |please )?(?:go|take me|bring me|head|jump|navigate|switch|get me)(?: back)? to|(?:please )?(?:open|show(?: me)?|bring up|let me see|view)) (.+)$/,Nt=/^(?:(?:can you |could you |please )?tell me (?:about|of)|what(?: is|'s| are) (?:in |on )?|describe|explain|who(?: is|'s)) (.+)$/,St=/^(?:what(?: is|'s| am i looking at| do i see)(?: (?:here|this|on (?:this|the) (?:page|screen)|in view|this place|this page))?|where am i|describe (?:this|here|this place|this page)|tell me about (?:this|here|this place|this page))$/,ot=new Set(["here","this","this place","this page","on this page","on the page","on this screen","in view"]),Ot=/^(?:date|day|when|on|at|the date|the day)$/,Ct=/^(?:what(?: is|'s) (?:wrong|broken|the (?:problem|matter|trouble))|what needs (?:fixing|attention|doing)|any (?:problems|issues|trouble)|(?:show(?: me)? |go to |open )?(?:the )?(?:problems|issues|trouble|standing|what's wrong)|is (?:anything|something) (?:wrong|broken)|are there (?:any )?(?:problems|issues))(?: (?:with|about|on|in) (.+))?$/,z=o=>o.replace(/^(?:the|a|an|my|our) /,""),te=new Set(["the","a","an","my","our","all","any","of","that","which","who","are","is","be","what","whats","what's","with","me","show","list","every","there","do","i","have","we","due","for","please","were","was","by","from","in","on"]),ut=864e5,he=o=>Date.UTC(Number(o.slice(0,4)),Number(o.slice(5,7))-1,Number(o.slice(8,10))),xe=o=>new Date(o).toISOString().slice(0,10),C=(o,i)=>xe(he(o)+i*ut),jt=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],xt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Mt="(monday|tuesday|tues|wednesday|thursday|thurs|friday|saturday|sunday)",rt="(january|february|march|april|may|june|july|august|september|october|november|december|jan|feb|mar|apr|jun|jul|aug|sept|sep|oct|nov|dec)",it="(\\d{1,2})(?:st|nd|rd|th)?",Wt=o=>jt.findIndex(i=>i.startsWith(o.slice(0,3))),at=o=>xt.findIndex(i=>o.startsWith(i.toLowerCase()));function Dt(o,i){return ze(o,{year:o.slice(0,4)!==i.slice(0,4)})}function Se(o,i,y){if(o<0||i<1||i>31)return;let f=Number(y.slice(0,4)),c=k=>{let j=Date.UTC(k,o,i);return new Date(j).getUTCMonth()===o?xe(j):void 0},p=c(f);if(p)return he(p)<he(y)-183*ut?c(f+1):p}function Oe(o,i,y){let f=new Date(he(i)).getUTCDay(),c=u=>{let S=(f-y+7)%7,w=C(i,-S+u*7);return{from:w,to:C(w,6)}},p=()=>{let u=`${i.slice(0,8)}01`,S=new Date(Date.UTC(Number(i.slice(0,4)),Number(i.slice(5,7)),1));return{from:u,to:C(xe(S.getTime()),-1)}},k=u=>u?{from:u,to:u,day:Dt(u,i)}:void 0,j=(u,S)=>{let w=Wt(S);return k(u==="this"||u==="next"?C(c(u==="next"?1:0).from,(w-y+7)%7):u==="last"?C(i,-((f-w+6)%7+1)):C(i,(w-f+7)%7))},J=u=>{let S=C(i,f===0?-1:6-f);return{from:C(S,u*7),to:C(S,u*7+1)}},B="\\b(?:(?:due |for |on |by )(?:the )?)?",P=[[/\b(?:overdue|past due|late)\b/,()=>({overdue:!0,to:C(i,-1)})],[/\b(?:due |for |on )?today\b/,()=>({from:i,to:i})],[/\b(?:due |for |on )?tomorrow\b/,()=>k(C(i,1))],[/\b(?:due |for |on )?yesterday\b/,()=>k(C(i,-1))],[/\b(?:due |for |on )?this week\b/,()=>c(0)],[/\b(?:due |for |on )?next week\b/,()=>c(1)],[/\b(?:due |for |on )?(?:last|previous) week\b/,()=>c(-1)],[/\b(?:due |for |on )?next weekend\b/,()=>J(1)],[/\b(?:due |for |on )?(?:this |the )?weekend\b/,()=>J(0)],[/\b(?:due |for |on )?this month\b/,()=>p()],[new RegExp(`${B}(\\d{4}) (\\d{2}) (\\d{2})\\b`),u=>k(Se(Number(u[2])-1,Number(u[3]),`${u[1]}-01-01`))],[new RegExp(`${B}${it} (?:of )?${rt}\\b`),u=>k(Se(at(u[2]),Number(u[1]),i))],[new RegExp(`${B}${rt} (?:the )?${it}\\b`),u=>k(Se(at(u[1]),Number(u[2]),i))],[new RegExp(`${B}(?:(this|next|last|coming) )?${Mt}\\b`),u=>j(u[1],u[2])]];for(let[u,S]of P){let w=o.match(u);if(!w)continue;let N=S(w);if(N)return{ask:{words:w[0],...N},rest:o.replace(w[0]," ").replace(/\s+/g," ").trim()}}}function ft(o,i,y={}){let f=y.principal??{kind:"human"},c=o.seenBy(f),p=c.schema,k=y.today??o.today?.()??new Date().toISOString().slice(0,10),j=y.weekStartsOn??1,J=o.kindsKeptFrom(f),B=o.modules.disabledKinds,P=p.kinds.filter(e=>!J.has(e)&&!B.has(e)),u=new Set(P),S=(y.places??[]).filter(e=>e.kind===null||u.has(e.kind)),w=c.graph,N=$(i).replace(/[?.!]+$/,"").trim();if(N.length===0)return{unresolved:!0};let M=e=>p.tryDefinition(e),H=e=>Je(M(e.kind),e),I=e=>Ye(p,e),se=e=>S.find(t=>t.kind===e&&t.address===Ne(p,e))?.address??Ne(p,e),ge=e=>Qe(p,e.kind,e.id),Me=e=>({to:"record",id:e.id,kind:e.kind,label:H(e),address:ge(e),said:`Went to ${H(e)}.`}),We=e=>{let t=`Went to ${e.title}.`;return e.kind===null?{to:"place",slug:e.slug,title:e.title,address:e.address,...e.slug==="overview"?{face:"scene"}:{},said:t}:e.lens||e.address.startsWith("/places/")?{to:"picture",kind:e.kind,as:e.slug,title:e.title,address:e.address,said:t}:{to:"kind",kind:e.kind,title:e.title,address:e.address,said:t}},De=()=>({unresolved:!0,say:vt}),oe=e=>{let t=M(e.kind),s=Ze(e,t,{limit:3,excerpt:!0}).map(r=>r.alone.startsWith(r.label)?r.alone:`${r.label.toLowerCase()} ${r.alone}`).join(", "),n=c.violations().filter(r=>r.nodeIds.includes(e.id));return[`${H(e)} \u2014 ${Ae(F(t,e.kind))}${s?` (${s})`:""}.`,n.length>0?`Trouble: ${n.map(r=>r.message).join("; ")}.`:""].filter(Boolean).join(" ")},re=e=>{let t=new Set([G(e),G(z(e))]);for(let n of[" page"," view"," lens"," place"," picture"," list"])e.endsWith(n)&&(t.add(G(e.slice(0,-n.length))),t.add(G(z(e.slice(0,-n.length)))));t.delete("");let s=n=>t.has(G(n.title))||t.has(G(z($(n.title))))||t.has(G(n.slug));return S.find(n=>n.kind!==null&&n.address.startsWith("/places/")&&s(n))??S.find(s)},pe=e=>{let t=et(o,e,{principal:f,today:k,limit:6,near:!1,...y.selection?{from:y.selection}:{}}),s=t.hits.filter(r=>r.about==="node"&&u.has(r.kind)&&w.getNode(r.id)!==void 0),n=s.filter(r=>r.why.field==="label"&&r.why.strength==="exact");return n.length===1?{one:w.getNode(n[0].id),picks:s}:n.length>1?{picks:n}:s.length===1&&t.total===1?{one:w.getNode(s[0].id),picks:s}:{picks:s}},Re=e=>{let t=e.map(s=>`${s.label} (${F(M(s.kind),s.kind)})`);return`${e.length===1?"One thing matches":`${e.length} things match`}: ${t.join("; ")}.`},Ee=(e,t)=>{if(ot.has(e))return Le();let s=t?pe(z(e)||e):void 0,n=s?.one&&$(H(s.one))===$(z(e)||e)?void 0:re(e);if(n){let l=We(n);return{about:"place",say:t?`${l.said} ${me(n)}`:l.said,moves:[l],subject:n.slug}}let r=pe(z(e)||e);if(r.one){let l=Me(r.one);return{about:t?"describe":"record",say:t?`${l.said} ${oe(r.one)}`:l.said,moves:[l],subject:r.one.id}}if(r.picks.length>0)return{about:"picks",say:Re(r.picks),moves:[],picks:r.picks};let h=ae(e);if(h)return h;let d=Pe(e);if(d){if(d.rest.split(" ").every(l=>l===""||te.has(l))){let l=I(d.kind),v={to:"kind",kind:d.kind,title:l,address:se(d.kind),said:`Went to the ${l.toLowerCase()}.`};return{about:"kind",say:v.said,moves:[v]}}return{unresolved:!0}}return De()},me=e=>{if(e.kind===null){let h=P.map(l=>({kind:l,count:w.nodesOfKind(l).length})).filter(l=>l.count>0).map(l=>`${l.count} ${(l.count===1?F(M(l.kind),l.kind):I(l.kind)).toLowerCase()}`),d=c.violations().length;return[h.length>0?`It holds ${fe(h)}.`:"It holds nothing yet.",d>0?`${d===1?"One problem":`${d} problems`} to see to.`:""].filter(Boolean).join(" ")}let t=w.nodesOfKind(e.kind).length,s=I(e.kind).toLowerCase(),n=new Set(c.violations().flatMap(h=>h.nodeIds)),r=w.nodesOfKind(e.kind).filter(h=>n.has(h.id)).length;return[e.lens?`It draws the ${s} as ${Ae(e.lens)}${t>0?` \u2014 ${t} of them`:""}.`:`${t===0?"No":t} ${t===1?F(M(e.kind),e.kind):s} ${t===1?"is":"are"} here.`,r>0?`${r} ${r===1?"has":"have"} a problem.`:""].filter(Boolean).join(" ")},Le=()=>{let e=(y.selection??[]).map(s=>w.getNode(s)).find(s=>s!==void 0);if(e)return{about:"here",say:oe(e),moves:[],subject:e.id};let t=S.find(s=>s.slug===y.place)??S.find(s=>s.slug==="home");return t?{about:"here",say:`${t.title}. ${me(t)}`,moves:[],subject:t.slug}:{about:"here",say:me({slug:"home",title:"Home",kind:null,cardinality:"many",address:"/",stop:"#"}),moves:[]}},Pe=e=>{let t=P.flatMap(s=>[I(s),F(M(s),s),s].map(n=>({kind:s,name:$(n)}))).filter(s=>s.name.length>0).sort((s,n)=>n.name.length-s.name.length);for(let{kind:s,name:n}of t)if(!(` ${e} `.indexOf(` ${n} `)<0))return{kind:s,rest:` ${e} `.replace(` ${n} `," ").replace(/\s+/g," ").trim()}},ie=(e,t)=>{let s=V(p,e).filters.filter(d=>d.about==="field"&&d.type==="date");if(s.length===0)return;let n=s.find(d=>t.some(l=>$(d.key)===l||$(d.label)===l));if(n)return n;let r=M(e)?.fieldRoles??{};for(let d of["due","deadline","date","when","start","end"]){let l=r[d],v=l?s.find(x=>x.key===l):void 0;if(v)return v}return s.find(d=>["due","deadline","date","when","on","at"].includes(d.key.toLowerCase()))??(s.length===1?s[0]:void 0)},He=e=>{let t=M(e),s=V(p,e).filters;if(t?.lifecycle)return{conditions:[{key:"is",value:"current"}],holds:d=>ue(be,d,{key:"is",value:"current"})};let r=s.find(d=>d.about==="field"&&d.type==="boolean"&&ne.has($(d.key)));if(r)return{conditions:[{key:r.key,value:"false"}],holds:d=>d[r.key]!==!0};let h=s.find(d=>d.about==="field"&&d.type==="choice"&&(d.options??[]).some(l=>ne.has($(l))));if(h){let d=new Set((h.options??[]).filter(v=>ne.has($(v)))),l=(h.options??[]).filter(v=>!d.has(v));return l.length===1?{conditions:[{key:h.key,value:l[0]}],holds:v=>v[h.key]===l[0]}:"unsayable"}return{conditions:[],holds:()=>!0}},Ie=(e,t)=>{let s=e.words.startsWith("due")||$(t.key)==="due",n=Ot.test($(t.label));if(e.day)return s?`due ${e.day}`:n?`on ${e.day}`:`${t.label.toLowerCase()} on ${e.day}`;let r=e.words.replace(/^(?:due|for|on|by) (?:the )?/,"");return s?`due ${r}`:n?r:`${t.label.toLowerCase()} ${r}`},ye=new Set(c.violations().flatMap(e=>e.nodeIds)),be={schema:p,graph:c.graph,flagged:ye,today:k},ae=e=>{let t=Oe(e,k,j),s=Pe(t?.rest??e),n=s?.kind,r=(s?.rest??t?.rest??e).split(" ").filter(Boolean);if(!n&&t){let g=e.split(" "),m=P.filter(L=>ie(L,g)!==void 0),E=m.filter(L=>{let b=ie(L,g);return g.some(O=>$(b.key)===O||$(b.label)===O)}),U=m.length===1?m:E;if(U.length!==1)return;n=U[0]}if(!n)return;let h=V(p,n).filters,d=[],l=[],v=[],x=[],q=!1,de=[];for(let g=0;g<r.length;g++){let m=r[g],E=g>0&&(r[g-1]==="not"||r[g-1]==="un"),U=h.find(b=>b.about==="field"&&b.type==="choice"&&(b.options??[]).some(O=>$(O)===m));if(U&&!E){let b=(U.options??[]).find(O=>$(O)===m);d.push({key:U.key,value:b}),l.push(b);continue}let L=h.find(b=>b.about==="field"&&b.type==="boolean"&&[$(b.key),$(b.label)].some(O=>O===m||O===m.replace(/^un/,"")));if(L){let b=!E&&!(m.startsWith("un")&&!$(L.key).startsWith("un"));d.push({key:L.key,value:String(b)}),l.push(b?m:`not ${m.replace(/^un/,"")}`);continue}if(Lt.has(m)&&!E){let b=He(n);b==="unsayable"?(q=!0,x.push(O=>!ct(p,O))):(d.push(...b.conditions),x.push(b.holds)),l.push(m);continue}m==="not"||m==="un"||t&&h.some(b=>b.type==="date"&&($(b.key)===m||$(b.label)===m))||de.push(m)}if(r=de,r.some(g=>!te.has(g))||!t&&d.length===0&&x.length===0)return;let T=I(n).toLowerCase(),Q=I(n);if(t){let g=ie(n,e.split(" "));if(!g){let m={to:"kind",kind:n,title:Q,address:se(n),said:`Went to the ${T}.`};return{about:"kind",say:`${ee(Q)} carry no date, so I can't tell which are ${/^(?:due|for|on|overdue|past due|late)\b/.test(t.ask.words)?t.ask.words:`due ${t.ask.words}`}. ${m.said}`,moves:[m]}}if(t.ask.from&&d.push({key:g.key,value:`after:${C(t.ask.from,-1)}`}),t.ask.to&&d.push({key:g.key,value:`before:${C(t.ask.to,1)}`}),t.ask.overdue){let m=He(n);m==="unsayable"?(q=!0,x.push(E=>!ct(p,E))):(d.push(...m.conditions),x.push(m.holds))}t.ask.overdue?l.push("overdue"):v.push(Ie(t.ask,g))}let R=w.nodesOfKind(n).filter(g=>d.every(m=>ue(be,g,m))&&x.every(m=>m(g))),K=[...l,...v].join(" and "),Y=[...l,T,...v].join(" "),W=R.slice(0,6).map(g=>({about:"node",id:g.id,kind:n,label:H(g),why:{field:d[0]?.key??"label",reading:d[0]?.key??"Name",fragment:K,strength:"field"},current:!0,flagged:ye.has(g.id),address:ge(g)})),X=R.length===0?`No ${T} are ${K}.`:`${R.length===1?`One ${F(M(n),n)} is`:`${R.length} ${T} are`} ${K}: ${fe(R.slice(0,6).map(H))}${R.length>6?`, and ${R.length-6} more`:""}.`;if(q)return{about:"kind",say:X,moves:[],picks:W,offer:{draft:Y,label:"Show as a view"}};let Z=d.map(g=>`${g.key}:${g.value}`).join(","),we=`${se(n)}?${new URLSearchParams({filter:Z}).toString()}`,_={to:"kind",kind:n,title:ee(Y),filter:Z,address:we,said:`Went to the ${Y}.`};return{about:"kind",say:`${_.said} ${X}`,moves:[_],picks:W}},Te=e=>M(e)?.figure==="person"?!0:[e,F(M(e),e),I(e)].some(s=>$(s).split(" ").some(n=>Rt.has(n))),gt=e=>{let t=[],s=n=>M(n)?.edges??{};for(let[n,r]of Object.entries(s(e)))for(let h of r.to??[])u.has(h)&&t.push({key:n,direction:"out",far:h,words:lt(`${r.description??""} ${n}`)});for(let n of P)for(let[r,h]of Object.entries(s(n)))(h.to??[]).includes(e)&&t.push({key:r,direction:"in",far:n,words:lt(`${h.inverse??""} ${r}`)});return t},pt=e=>{let t=e.match(/^(who|which|what)\b/)?.[1];if(!t)return;let s=Oe(e,k,j);if(!s||s.ask.overdue)return;let n=s.rest.split(" ").filter(Boolean),r=P.flatMap(a=>[I(a),F(M(a),a),a].map(A=>({kind:a,name:$(A)}))).filter(a=>a.name.length>0).sort((a,A)=>A.name.length-a.name.length),h=` ${n.join(" ")} `,d=[];for(let{kind:a,name:A}of r)h.includes(` ${A} `)&&(h=h.replace(` ${A} `," "),d.includes(a)||d.push(a));let l=h.match(/\b(?:is|are|was|were)\b|'s\b/)?.[0],v=h.replace(/'s\b/g," ").split(" ").filter(a=>a.length>0&&!te.has(a)&&!Ce.has(a)),x=t==="who"?d.find(Te):d[0];if(!x&&t!=="who")return;let q=d.find(a=>a!==x),de=v.flatMap(a=>[je(a),...dt.has(je(a))?[...dt]:[]]),T=P.filter(a=>q?a===q:a!==x).flatMap(a=>{let A=ie(a,e.split(" "))??V(p,a).filters.find(D=>D.about==="field"&&D.type==="date");return A?gt(a).filter(D=>(x?D.far===x:Te(D.far))&&D.far!==a).map(D=>({kind:a,field:A,relation:D,said:v.length===0||de.some(ve=>D.words.some(wt=>Et(wt,ve)))})):[]}).filter(a=>a.said);if(T.length===0)return;let Q=T.filter(a=>n.some(A=>$(a.field.key)===A||$(a.field.label)===A)),R=T.length===1?T[0]:Q.length===1?Q[0]:void 0;if(!R)return;let{kind:K,field:Y,relation:W}=R,X=[...s.ask.from?[{key:Y.key,value:`after:${C(s.ask.from,-1)}`}]:[],...s.ask.to?[{key:Y.key,value:`before:${C(s.ask.to,1)}`}]:[]],Z=w.nodesOfKind(K).filter(a=>X.every(A=>ue(be,a,A))),we=a=>(W.direction==="out"?c.graph.out(a.id,W.key):c.graph.in(a.id,W.key)).filter(A=>A.kind===W.far&&u.has(W.far)),_=[],g=[];for(let a of Z){let A=we(a);A.length===0&&g.push(a);for(let D of A)_.some(ve=>ve.id===D.id)||_.push(D)}let m=Ie(s.ask,Y),E=s.ask.day?`On ${s.ask.day}`:ee(s.ask.words.replace(/^(?:due|for|on|by) (?:the )?/,"")),U=I(K).toLowerCase(),L=X.map(a=>`${a.key}:${a.value}`).join(","),b=`${U} ${m}`,O={to:"kind",kind:K,title:ee(b),filter:L,address:`${se(K)}?${new URLSearchParams({filter:L}).toString()}`,said:`Went to the ${b}.`};if(Z.length===0)return{about:"related",say:`No ${b}. ${O.said}`,moves:[O]};let le=v.join(" "),mt=l==="was"||l==="were",Ge=a=>mt?a===1?"was":"were":a===1?"is":"are",ce=_.map(H),yt=ce.length>8?[...ce.slice(0,8),`${ce.length-8} more`]:ce,bt=_.length===0?`${E}: nobody ${Ge(1)}${le?` ${le}`:""}.`:`${E}: ${fe(yt)}${le?` ${Ge(_.length)} ${le}`:""}.`,kt=t==="who"&&g.length>0?`${fe(g.slice(0,4).map(H))}${g.length>4?` and ${g.length-4} more`:""} ${g.length===1?"has":"have"} nobody.`:"",$t=_.slice(0,8).map(a=>({about:"node",id:a.id,kind:a.kind,label:H(a),why:{field:W.key,reading:Xe(p,W.direction==="out"?K:W.far,W.key,W.direction==="out"?"out":"in"),fragment:m,strength:"field"},current:!0,flagged:ye.has(a.id),address:ge(a)}));return{about:"related",say:[bt,kt,O.said].filter(Boolean).join(" "),moves:[O],picks:$t}},Ke=N.match(Ct);if(Ke){let e=Ke[1];if(e&&!ot.has(e)&&!/^(?:it|this|that)$/.test(e)){let n=re(e),r=n?void 0:pe(z(e)||e);if(r?.one){let h=Me(r.one);return{about:"describe",say:`${h.said} ${oe(r.one)}`,moves:[h],subject:r.one.id}}if(!n)return r&&r.picks.length>0?{about:"picks",say:Re(r.picks),moves:[],picks:r.picks}:De()}if(e&&/^(?:it|this|that)$|^(?:here|this place|this page)$/.test(e)){let n=(y.selection??[]).map(r=>w.getNode(r)).find(r=>r!==void 0);if(n)return{about:"describe",say:oe(n),moves:[],subject:n.id}}let t=c.violations();if(t.length===0)return{about:"problems",say:"Nothing is wrong \u2014 every rule holds.",moves:[]};let s={to:"problems",address:"/problems",said:"Went to the problems."};return{about:"problems",say:`${s.said} ${Ve(t)}: ${t.slice(0,4).map(n=>n.message).join("; ")}${t.length>4?"\u2026":"."}`,moves:[s]}}if(St.test(N))return Le();let _e=pt(N);if(_e)return _e;let ke=Oe(N,k,j);if(ke&&!re(z(ke.ask.words))&&ke.rest.replace(/'s\b/g,"").split(" ").every(e=>e===""||te.has(e)||Ce.has(e))){let e=ae(N);if(e)return e}if(/^open /.test(N)){let e=ae(N);if(e)return e}let Fe=N.match(At)??N.match(/^(?:go|take me|head|get me)(?: back)? (home)$/);if(Fe)return Ee(Fe[1].trim(),!1);let Be=N.match(Nt);if(Be){let e=Ee(Be[1].trim(),!0);return"unresolved"in e&&e.unresolved&&!/^tell me|^describe/.test(N)?{unresolved:!0}:e}let $e=re(N);if($e){let e=We($e);return{about:"place",say:e.said,moves:[e],subject:$e.slug}}let Ue=ae(N);return Ue||{unresolved:!0}}var Ce=new Set(["who","whom","whose","which","what","whats","what's","who's"]),Rt=new Set(["person","people","user","users","member","members","volunteer","volunteers","gardener","gardeners","player","players","staff","worker","workers","employee","employees","owner","owners","assignee","assignees","helper","helpers","student","students","teacher","teachers","customer","customers","client","clients","contact","contacts","author","authors"]),dt=new Set(["work","cover","staff","assign","do","run","schedul","roster","book","duty","serv","help"]);function je(o){let i=o.toLowerCase().replace(/'s$/,"");for(let y of["ing","ed","es","s"])if(i.length>y.length+2&&i.endsWith(y)){let f=i.slice(0,-y.length);return f.length>3&&f[f.length-1]===f[f.length-2]?f.slice(0,-1):f}return i}function lt(o){return o.toLowerCase().split(/[^a-z']+/).filter(i=>i.length>1&&!te.has(i)&&!Ce.has(i)&&!["it","they","them","their","its","this","here","to","at"].includes(i)).map(je)}var Et=(o,i)=>o===i||o.length>=4&&i.length>=4&&(o.startsWith(i)||i.startsWith(o)),ne=new Set(["done","finished","complete","completed","closed","resolved","agreed","canceled","archived","shipped","delivered"]),Lt=new Set(["open","unfinished","outstanding","pending","remaining","undone","incomplete"]);function ct(o,i){return V(o,i.kind).filters.some(f=>f.about==="field"&&(f.type==="boolean"&&ne.has(f.key.toLowerCase())&&i[f.key]===!0||f.type==="choice"&&typeof i[f.key]=="string"&&ne.has(String(i[f.key]).toLowerCase())))}function fe(o){return o.length<=1?o[0]??"":`${o.slice(0,-1).join(", ")} and ${o[o.length-1]}`}function Gt(o,i,y={}){let f=y.scene!==void 0?{...y.pages,scene:y.scene}:y.pages;return[...tt(o,i,f?{pages:f}:{})].map(({first:c,hidden:p,lens:k,...j})=>j)}function ht(o,i){return{...o.principal?{principal:o.principal}:{},...o.places?{places:o.places}:{},...o.selection?{selection:o.selection}:{},...o.place?{place:o.place}:{},...i??o.today?{today:i??o.today}:{},...o.weekStartsOn!==void 0?{weekStartsOn:o.weekStartsOn}:{}}}function zt(o,i,y,f){let c=ft(o,i,ht(y,f));if(c.unresolved)return c.say?{reply:{say:c.say,proposals:[],grounded:!0}}:{};if(c.about==="picks")return{};let p=c.moves.length>0?{moves:c.moves}:{},k=c.subject?o.graph.getNode(c.subject):void 0;if(c.about==="problems")return{...p,problems:!0};if(k&&(c.about==="describe"||c.about==="here"))return{...p,told:k.id};let j=k?nt(o,st(qe(o.violations(),[k.id])).slice(0,3)):[];return{reply:{say:c.say,proposals:j,grounded:!0,...p,...c.picks&&c.picks.length>0?{picks:c.picks}:{},...c.offer?{offer:c.offer}:{}}}}function Jt(o,i,y={}){let f=ht(y),c=[];for(let p of i){let k=typeof p=="string"?p:typeof p=="object"&&p!==null&&typeof p.to=="string"?p.to:void 0;if(!k||k.trim().length===0)continue;let j=ft(o,/^(?:go|take me|open|show)\b/i.test(k.trim())?k:`go to ${k}`,f);if("moves"in j)for(let J of j.moves)c.some(B=>B.address===J.address)||c.push(J)}return c}export{vt as NOTHING_BY_THAT_NAME,ht as askContextOf,zt as goingFrom,Jt as movesFromNames,Gt as placesFromViews,ft as resolveAsk};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as y}from"./chunk.3G5MQFZK.js";import{a as f,h as g}from"./chunk.GS4T26WW.js";import{F as R,M as c,pa as m}from"./chunk.Z56B2JR2.js";import{ca as p}from"./chunk.HLLWKSZB.js";import{b as u}from"./chunk.AJZBJBMO.js";var o=u(R(),1);var r=u(c(),1),S,h=()=>S??=m(f(()=>import("./chunk.DN7SN6ZR.js")));function L(e){let[n,t]=(0,o.useState)(()=>h().current);return(0,o.useEffect)(()=>{if(!e||n)return;let i=!0;return h().load().then(a=>i&&t(a),()=>{}),()=>{i=!1}},[e,n]),n}function D(e,n){let t=L(n.length>0);return(0,o.useMemo)(()=>t?t.withLines(e,n):n,[t,e,n])}function I(e,n){let t=L(n.some(i=>i.shape));return(0,o.useMemo)(()=>{let i=new Map;if(!t)return i;for(let a of n){let l=t.ruleLine(a,e);l&&i.set(a.name,l)}return i},[t,e,n])}function M(e){let n=e.line;if(!(!n||e.message.endsWith(` \u2014 ${n.text}`)||e.message===b(e)))return e.message}function b(e){let n=e.line;return n?n.record!==void 0?`${n.record} \u2014 ${n.text}`:n.text:e.message}var P={name:{},op:{color:"var(--graview-ink-muted)",fontWeight:500},value:{fontWeight:600,fontVariantNumeric:"tabular-nums"},word:{color:"var(--graview-ink-muted)"},open:{color:"var(--graview-ink-faint)"},close:{color:"var(--graview-ink-faint)"}};function w({parts:e}){return(0,r.jsx)(r.Fragment,{children:e.map((n,t)=>(0,r.jsxs)("span",{children:[n.space?" ":"",(0,r.jsx)("span",{"data-graview-rule-part":n.as,style:P[n.as],children:n.text})]},t))})}function x(e,n){let t=p(e?.tryDefinition(n),n);return t.charAt(0).toUpperCase()+t.slice(1)}function C({line:e,schema:n,brand:t,lead:i=e.record===void 0?"kind":"record",stacked:a=!1,style:l}){let d=e.kind,s=i==="kind"?d?x(n,d):void 0:i==="record"?e.record:void 0,k=i==="kind"&&s?`${s}: ${e.said}`:i==="record"&&s?`${s} \u2014 ${e.said}`:e.said;return(0,r.jsxs)("span",{"data-graview-rule-line":"",style:{overflowWrap:"anywhere",...l},children:[(0,r.jsx)("span",{style:g,children:k}),(0,r.jsxs)("span",{"aria-hidden":"true",children:[i!=="none"&&d?(0,r.jsx)("span",{style:{display:"inline-flex",verticalAlign:"-0.1em",marginRight:"0.4em"},children:(0,r.jsx)(y,{kind:d,...n?{schema:n}:{},...t?{brand:t}:{},size:13})}):null,s?(0,r.jsxs)("span",{"data-graview-rule-head":"",style:{fontWeight:600,marginRight:i==="record"||a?0:"0.6em"},children:[s,i==="record"&&!a?(0,r.jsx)("span",{style:{color:"var(--graview-ink-faint)",fontWeight:400},children:" \u2014 "}):null]}):null,a&&s?(0,r.jsx)("br",{}):null,(0,r.jsx)(w,{parts:e.parts}),e.when&&e.when.length>0?(0,r.jsxs)("span",{"data-graview-rule-when":"",style:{color:"var(--graview-ink-faint)"},children:[", when ",(0,r.jsx)(w,{parts:e.when})]}):null]})]})}function z(e){return e.line?e.label&&e.label.trim().length>0?e.label:void 0:e.label&&e.label!==e.message&&!e.message.startsWith(e.label)?e.label:void 0}export{D as a,I as b,M as c,b as d,C as e,z as f};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as H}from"./chunk.Z5V23DQN.js";import{o as R}from"./chunk.OYJSFO3A.js";import{c as Q}from"./chunk.DAA6XWLF.js";import{a as z}from"./chunk.HGAMNIST.js";import{i as S,j as U,k as J}from"./chunk.ZS4DJ76C.js";import{d as G,e as K}from"./chunk.5R66YTET.js";import{b as _,g as q}from"./chunk.G4WQGTZR.js";import{a as T}from"./chunk.GS4T26WW.js";import{F as ne,M as C,U as $,V as O,X as M,pa as W}from"./chunk.Z56B2JR2.js";import{Y as P,aa as D}from"./chunk.HLLWKSZB.js";import{b as L}from"./chunk.AJZBJBMO.js";var p=L(ne(),1);var re=W(T(()=>import("./chunk.YUWRZWGX.js"))),X=re.part((a,n)=>a.drawAppLink(n),{quiet:!0});var F=L(C(),1),Y=W(T(()=>import("./chunk.K4ZUVH2G.js"))),fe=Y.part((a,n)=>(0,F.jsx)(a.RepeatPicker,{...n}),{quiet:!0}),Z=Y.part((a,n)=>(0,F.jsx)(a.RepeatEditor,{...n}),{quiet:!0});var t=L(C(),1);function N({nodeId:a,field:n,value:l,stored:o=l}){let{fields:m,commit:u}=R(a),e=m.find(i=>i.field===n),{store:y}=$(),f=y.graph.getNode(a)?.kind,b=y.schema.definitions.find(i=>i.kind===f),d=D(b,n).toLowerCase(),[c,h]=(0,p.useState)(!1),s=e?.shape.type==="number"?e.shape.amount:void 0,r=s&&o!==""&&Number.isFinite(Number(o))?U(Number(o),s):o,[k,x]=(0,p.useState)(r),w=(0,p.useRef)(null),g=(0,p.useRef)(null),I=(0,p.useRef)(!1),E=i=>{I.current=i,h(!1)};if((0,p.useEffect)(()=>x(r),[r,c]),(0,p.useEffect)(()=>{c?w.current?.focus():I.current&&(I.current=!1,g.current?.focus())},[c]),!e)return(0,t.jsx)("span",{"data-graview-field":n,"data-graview-readonly":"",title:`Read-only \u2014 nothing this app declares changes the ${d}`,style:{color:"var(--graview-ink)",cursor:"default",overflowWrap:"anywhere"},children:l});if(!c)return(0,t.jsx)("button",{ref:g,type:"button","data-graview-field":n,"data-graview-editable":e.mutation,title:`${e.title} \u2014 changes the ${d}, and can be undone`,onClick:()=>h(!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:"var(--graview-ink)"},children:l});let B=(i,{left:v=!1}={})=>{E(!v),!(i===o||i===""||i===void 0)&&u(e,i)};if(!e.takesValue){let i=[e,...e.alternatives];return(0,t.jsx)("span",{role:"group","aria-label":`Change ${P(n).toLowerCase()}`,"data-graview-field":n,style:{display:"inline-flex",gap:6,alignItems:"center",flexWrap:"wrap"},onKeyDown:v=>{v.key==="Escape"&&E(!0)},children:i.map((v,te)=>(0,t.jsx)("button",{type:"button",ref:te===0?w:void 0,"data-graview-act":v.mutation,onClick:()=>{E(!0),u(v,void 0)},onBlur:V=>{let j=V.relatedTarget;(!j||!V.currentTarget.parentElement?.contains(j))&&E(!1)},style:{padding:"2px 9px",fontSize:"0.8125rem",borderRadius:999},children:v.title},v.mutation))})}return(0,t.jsxs)("form",{style:{display:"inline-flex",gap:4},onSubmit:i=>{i.preventDefault(),B(ee(e,k))},children:[e.shape.type==="choice"?(0,t.jsx)("select",{ref:w,"aria-label":P(n),"data-graview-field":n,value:k,onChange:i=>B(i.target.value),onBlur:()=>E(!1),style:{font:"inherit",fontSize:"inherit"},children:e.shape.options.map(i=>(0,t.jsx)("option",{value:i,children:_(b,n,i)},i))}):(0,t.jsxs)(t.Fragment,{children:[s&&S(s).prefix?(0,t.jsx)("span",{"aria-hidden":"true",children:S(s).prefix}):null,(0,t.jsx)("input",{ref:w,"aria-label":s?`${P(n)}, ${S(s).hint}`:P(n),"data-graview-field":n,...s?{inputMode:"decimal",placeholder:S(s).placeholder,"data-graview-amount":s.format??"unit"}:{},type:s?"text":e.shape.type==="number"&&!e.shape.duration?"number":e.shape.type==="date"?e.shape.time?"datetime-local":"date":"text",...e.shape.type==="number"&&e.shape.duration?{placeholder:"1h 30m"}:{},...e.shape.type==="text"&&e.shape.holds==="phone"?{inputMode:"tel",autoComplete:"tel"}:{},...e.shape.type==="number"&&e.shape.min!==void 0&&!s?{min:e.shape.min}:{},...e.shape.type==="number"&&e.shape.max!==void 0&&!s?{max:e.shape.max}:{},...e.shape.type==="number"&&e.shape.step!==void 0&&!s?{step:e.shape.step}:{},value:k,onChange:i=>x(i.target.value),onBlur:()=>B(ee(e,k),{left:!0}),onKeyDown:i=>{i.key==="Escape"&&E(!0)},style:{font:"inherit",fontSize:"inherit",width:`${Math.max(6,k.length+1)}ch`,minHeight:24,display:"inline-flex",alignItems:"center",padding:"0 3px"}}),s&&S(s).suffix?(0,t.jsx)("span",{"aria-hidden":"true",children:S(s).suffix}):null]}),e.open.length>0?(0,t.jsxs)("span",{style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:["also needs ",e.open.map(i=>i.name).join(", ")]}):null]})}function ee(a,n){return a.shape.type==="number"&&a.shape.amount?J(n,a.shape.amount):a.shape.type==="number"?a.shape.duration?q(n)??n:Number(n):a.shape.type==="text"&&a.shape.holds?n.trim():n}function ae({href:a,field:n,value:l,stored:o,nodeId:m}){let u=a.startsWith("tel:"),e=(y,f)=>(0,t.jsx)("a",{href:a,"data-graview-link":n,...f?{"aria-label":f}:{},...u?{}:{target:"_blank",rel:"noopener noreferrer"},style:{display:"inline-flex",alignItems:"center",minHeight:24,minWidth:24,maxWidth:"100%",overflowWrap:"anywhere",color:"var(--graview-accent)"},children:y});return m===void 0?e(l):(0,t.jsxs)("span",{style:{display:"inline-flex",flexWrap:"wrap",alignItems:"center",gap:"0 10px",maxWidth:"100%"},children:[(0,t.jsx)(N,{nodeId:m,field:n,value:l,...o===void 0?{}:{stored:o}}),e(u?"Call":"Map",u?`Call ${l}`:`Open ${l} in maps`)]})}function Te({id:a,hide:n=[],limit:l=10,labels:o={},shown:m=[]}){let{store:u}=$(),e=M(a);if(!e)return null;let y=u.schema.tryDefinition(e.kind),f=G(e,y,{limit:l,said:m}).filter(d=>!n.includes(d.key)),b=Q(y).length>0;return f.length===0&&!b?null:(0,t.jsxs)("div",{"data-graview-fields":e.id,style:{display:"grid",gap:14,alignContent:"start",minWidth:0,fontSize:"0.875rem"},children:[K(y,f).map((d,c)=>{let h=(0,t.jsx)("dl",{style:{margin:0,display:"grid",gridTemplateColumns:"auto 1fr",gap:"5px 16px",alignContent:"start",minWidth:0},children:d.fields.map(r=>r.files?(0,t.jsx)(z,{as:"field",nodeId:e.id,field:r.key,label:o[r.key]??r.label,files:r.files,labelStyle:A,style:{marginTop:6}},r.key):r.long?(0,t.jsx)(oe,{nodeId:e.id,field:r.key,label:o[r.key]??r.label,value:r.value,markdown:r.markdown,labelStyle:A,style:{gridColumn:"1 / -1",marginTop:6}},r.key):(0,t.jsxs)("div",{style:{display:"contents"},children:[(0,t.jsx)("dt",{style:{...A,whiteSpace:"nowrap"},children:o[r.key]??r.label}),(0,t.jsxs)("dd",{style:{margin:0,minWidth:0},children:[r.app?(0,t.jsx)(X,{address:r.app,as:"record",nodeId:e.id,field:r.key}):r.href?(0,t.jsx)(ae,{href:r.href,field:r.key,value:r.value,stored:r.stored,nodeId:e.id}):(0,t.jsx)(N,{nodeId:e.id,field:r.key,value:r.value,stored:r.stored}),r.repeats?(0,t.jsx)(Z,{nodeId:e.id,field:r.key,start:e[r.key],value:e[`${r.key}Repeat`],label:`${o[r.key]??r.label} repeats`}):null]})]},r.key))});if(!d.title)return(0,t.jsx)("div",{children:h},c);let s=`graview-field-group-${e.id}-${c}`;return(0,t.jsxs)("div",{role:"group","aria-labelledby":s,style:{display:"grid",gap:6,minWidth:0},children:[(0,t.jsx)("p",{id:s,"data-graview-field-group":d.title,style:ie,children:d.title}),h]},c)}),b?(0,t.jsx)(z,{as:"unfilled",nodeId:e.id,skip:n,labels:o,labelStyle:A}):null]})}var A={color:"var(--graview-ink-faint)",fontSize:"0.8125rem"},ie={margin:0,fontSize:"0.75rem",letterSpacing:"0.06em",textTransform:"uppercase",color:"var(--graview-ink-muted)",fontWeight:560};function oe(a){return O()?(0,t.jsx)(le,{...a}):(0,t.jsx)(se,{...a})}function se({field:a,label:n,value:l,labelStyle:o,valueStyle:m,style:u,markdown:e}){return(0,t.jsxs)("div",{"data-graview-long":a,style:{display:"grid",gap:6,minWidth:0,...u},children:[(0,t.jsx)("dt",{style:o,children:n}),(0,t.jsx)("dd",{style:{margin:0,minWidth:0,...m},children:(0,t.jsx)("div",{"data-graview-field":a,children:(0,t.jsx)(H,{text:l,markdown:e})})})]})}function le({nodeId:a,field:n,label:l,value:o,labelStyle:m,valueStyle:u,style:e,markdown:y}){let{fields:f,commit:b}=R(a),d=f.find(g=>g.field===n&&g.takesValue),[c,h]=(0,p.useState)(!1),s=(0,p.useRef)(null),r=(0,p.useRef)(!1);(0,p.useEffect)(()=>{!c&&r.current&&(r.current=!1,s.current?.focus())},[c]);let k=g=>{r.current=g,h(!1)},x=l.toLowerCase(),w=(0,t.jsx)(H,{text:o,markdown:y});return(0,t.jsxs)("div",{"data-graview-long":n,style:{display:"grid",gap:6,minWidth:0,...e},children:[(0,t.jsxs)("dt",{style:{display:"flex",alignItems:"baseline",gap:10,...m},children:[(0,t.jsx)("span",{children:l}),d&&!c?(0,t.jsx)("button",{ref:s,type:"button","data-graview-editable":d.mutation,"aria-label":`Edit the ${x}`,title:`${d.title} \u2014 changes the ${x}, and can be undone`,onClick:()=>h(!0),style:pe,children:"Edit"}):null]}),(0,t.jsx)("dd",{style:{margin:0,minWidth:0,...u},children:c&&d?(0,t.jsx)(p.Suspense,{fallback:w,children:(0,t.jsx)(de,{field:n,label:l,value:o,...y?{markdown:!0}:{},onCancel:()=>k(!0),onSave:(g,I)=>{k(!I),g!==o&&b(d,g)}})}):(0,t.jsx)("div",{"data-graview-field":n,...d?{}:{"data-graview-readonly":"",title:`Read-only \u2014 nothing this app declares changes the ${x}`},...d?{onClick:()=>h(!0)}:{},style:{cursor:d?"text":"default",minWidth:0},children:w})})]})}var de=(0,p.lazy)(()=>import("./chunk.7D77HEIJ.js")),pe={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 Ce({nodeId:a,children:n}){let{fields:l}=R(a),o=M(a);if(!o)return(0,t.jsx)(t.Fragment,{children:n});let m=l.find(u=>{let e=o[u.field];return typeof e=="string"&&e===n});return m?(0,t.jsx)(N,{nodeId:a,field:m.field,value:n}):(0,t.jsx)(t.Fragment,{children:n})}export{X as a,fe as b,Z as c,N as d,ae as e,Te as f,oe as g,Ce as h};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function d(e,t){let a=e.batches();for(let i=a.length-1;i>=0;i--){let n=a[i];if(n.undone||n.ops.length===0||n.ops.every(o=>o.undoes!==void 0))continue;let c=n.author;if(!(c.kind==="human"&&(t?.id===void 0||c.id===void 0||c.id===t.id)))continue;let r=e.canUndo(n.id);if(!(!r.ok||!r.ops.every(o=>!o.mutation||e.permits(o.mutation,t).ok)))return{batch:n.id,intent:n.intent}}}function h(e,t,a){let i=d(e,t);return i&&e.batches().slice(a).some(n=>n.id===i.batch)?i:void 0}var f=e=>`Take back \u201C${e.intent}\u201D`;function m(e,t){let a=d(e,t);return a&&e.undo(a.batch,t?{author:t}:{}),a}function l(e){let t=e.target;return!e.defaultPrevented&&!e.altKey&&!e.shiftKey&&(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="z"&&!(t instanceof HTMLElement&&(t.isContentEditable||t.matches("input, textarea, select")))}export{d as a,h as b,f as c,m as d,l as e};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var l=["solid","dashed","dotted","double","tapered"],i=["arrow","none","dot","bar"];function p(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return t>>>0}function m(e,t={}){let r=p(e);return{...{pattern:l[r%l.length],width:1.5+(r>>>3)%3*.75,cap:i[(r>>>7)%i.length],hue:(r>>>11)%360,opacity:.85},...t[e]}}var y={solid:void 0,dashed:"7 5",dotted:"1 5",double:"12 3",tapered:"10 3 3 3"},h="2 6",x=.6;function b(e){return e.color??`hsl(${Math.round(e.hue)} 55% 62%)`}function S(e,t){return t?Math.max(1.6,e.width):Math.min(1.4,e.width)}function s(e,t,r){return[e,0,0,0,0,e,0,0,0,0,1,0,t,r,0,1]}var d={0:{scale:1,blur:0,falloff:0,shadow:.16,fidelity:"full"},1:{scale:.95,blur:.3,falloff:.26,shadow:.12,fidelity:"summary"},2:{scale:.9,blur:.3,falloff:.34,shadow:.07,fidelity:"glyph"}},c={0:{scale:1,blur:0,falloff:0,shadow:.34,fidelity:"full"},1:{scale:.95,blur:.45,falloff:.18,shadow:.24,fidelity:"summary"},2:{scale:.9,blur:.45,falloff:.26,shadow:.14,fidelity:"glyph"}};function P(e,t="dark"){let r=Math.max(0,Math.min(2,Math.round(e)));return(t==="light"?d:c)[r]}function M(e,t,r){let o=Math.max(0,Math.min(1,r)),n=(a,u)=>a+(u-a)*o;return{scale:n(e.scale,t.scale),blur:n(e.blur,t.blur),falloff:n(e.falloff,t.falloff),shadow:n(e.shadow,t.shadow),fidelity:o<.5?e.fidelity:t.fidelity}}function g(e,t,r,o,n){return s(e.scale,t,r)}export{c as a,P as b,M as c,g as d,m as e,y as f,h as g,x as h,b as i,S as j};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as c,b as d,c as e,d as f,e as g,f as h,g as i,h as j,i as k,j as l,k as m,l as n,m as o,n as p}from"./chunk.KZ2376BD.js";import{a,b}from"./chunk.IZW7DBK4.js";import"./chunk.RKRSRKF3.js";import"./chunk.KC6UZHBM.js";import"./chunk.ZS4DJ76C.js";import"./chunk.5R66YTET.js";import"./chunk.G4WQGTZR.js";import"./chunk.HFKMHLJ3.js";import"./chunk.GS4T26WW.js";import"./chunk.Z56B2JR2.js";import"./chunk.HLLWKSZB.js";import"./chunk.AJZBJBMO.js";export{j as ARRANGE_NARROW,o as ArrangeBar,e as CHIP_FIELDS,d as MANY_AT_THE_FAR_END,c as TYPED_FROM,p as arrangementCaption,a as arrangementOf,i as chipOffers,m as directionWords,g as farCount,f as farCounts,l as inSentence,h as offeredFilters,n as preloadArrangeLists,k as sayCondition,b as withArrangement};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as tn,c as sn}from"./chunk.UT6642FC.js";import{e as j}from"./chunk.ZS4DJ76C.js";import{c as J}from"./chunk.G4WQGTZR.js";import{W as L,X as M,Y as z,Z as X,_ as Y,aa as nn,ba as F,ca as _,db as en,eb as R,nb as G,ya as B}from"./chunk.HLLWKSZB.js";function on(){return{name:"insight",derive({store:n,nodes:i,kindSelection:t}){let h=[],v=l=>L(n.schema.tryDefinition(l.kind),l);for(let l of i){if([...n.schema.edgeKinds].reduce((y,c)=>y+n.graph.out(l.id,c).length+n.graph.in(l.id,c).length,0)===0){h.push({id:`insight:island:${l.id}`,text:`${v(l)} is connected to nothing yet`,nodeIds:[l.id]});continue}for(let y of n.schema.edgeKinds){let c=n.graph.in(l.id,y).length;if(c<3)continue;let r=[...n.graph.allEdges()].filter(s=>s.kind===y),e=r.length;e>=4&&c/e>.6&&h.push({id:`insight:load:${l.id}:${y}`,text:`${v(l)} ${gn(n,r,y,c)}`,nodeIds:[l.id]})}}for(let l of t){if(n.graph.nodesOfKind(l).length>0)continue;let A=n.schema.definitions.filter(y=>y.kind!==l).filter(y=>Object.values(y.edges).some(c=>c.to!=="*"&&c.to.includes(l))).map(y=>y.plural??`${y.kind}s`);A.length>0&&h.push({id:`insight:gap:${l}`,text:`Nothing here yet, though ${A.join(" and ")} expect to connect to these`,nodeIds:[]})}return{observations:h}}}}function gn(n,i,t,h){let v=new Set(i.map(r=>n.graph.getNode(r.from)?.kind).filter(r=>r!==void 0)),l=v.size===1?[...v][0]:void 0,A=i.length,y=J(n.schema,l??[...v][0]??"",t,"in"),c=r=>l?X(n.schema,l,r):String(r);return h===A?`${y}: all ${c(h)}`:`${y}: ${h} of the ${c(A)}`}function rn(n){let i=new Map;if(n.length===0)return i;let t=n.slice(-512),h=new Set;for(let l of t)l.undoes&&h.add(l.undoes);let v=n[n.length-1].seq;for(let l of t){if(!l.mutation||h.has(l.id))continue;let A=Math.pow(.5,(v-l.seq)/64);i.set(l.mutation.name,(i.get(l.mutation.name)??0)+A)}return i}function an(n){return 8*(n/(n+1))}var mn=100;function dn(){return{name:"invariant",derive({store:n,selection:i,nodes:t,violations:h}){let v=r=>L(n.schema.tryDefinition(r.kind),r),l=new Set(i),A=h.filter(r=>r.nodeIds.some(e=>l.has(e))||r.subjectId!==void 0&&l.has(r.subjectId)),y=[],c=[];A.forEach((r,e)=>{c.push({id:`violation:${r.invariant}:${e}`,text:r.message,nodeIds:r.nodeIds}),r.repairs.forEach((s,f)=>{y.push({id:`invariant:${r.invariant}:${e}:${f}`,label:s.label,provider:"invariant",mutation:s.mutation,args:s.args??{},open:(s.missing??[]).map(S=>{let u=n.allMutations().find(p=>p.name===s.mutation);if(!u)return{name:S};let a=R(u.input).find(p=>p.name===S),m=a?a.kinds.includes("*")?n.graph.allNodes().map(p=>p.id):a.kinds.flatMap(p=>n.graph.nodesOfKind(p).map($=>$.id)):void 0;return{name:S,shape:j(u.input,S),...a?{kinds:a.kinds}:{},...m?{candidates:m}:{}}}),score:mn-f-(s.missing?.length??0),why:r.message,nodeIds:r.nodeIds,...r.subjectId===void 0?{}:{subjectId:r.subjectId}})})});for(let r of t){let e=n.allInvariants().filter(s=>{if(s.scope==="graph")return!1;let f=s.scope;return f.kind!==r.kind?!1:f.match?f.match(r):!0});e.length!==0&&(A.some(s=>s.subjectId===r.id||s.nodeIds.includes(r.id))||c.push({id:`holds:${r.id}`,text:`${v(r)} holds \u2014 nothing currently breaks ${e.length===1?"it":`any of its ${e.length} rules`}`,nodeIds:[r.id]}))}return{affordances:y,observations:c}}}}var q=40;function cn(){return{name:"schema",derive({store:n,selection:i,nodes:t,kindSelection:h,edgeSelection:v,principal:l}){let A=(e,s)=>l!==void 0&&!n.permits({name:e,args:s},l).ok,y=[];if(t.length===0&&v.length>0){for(let e of v){let s=n.graph.getNode(e.from),f=n.graph.getNode(e.to);if(!s||!f)continue;let S=sn(n,e);S?.provisional&&y.push({id:`schema:edge:${G}:${e.kind}:${e.from}:${e.to}`,label:"Keep this link",provider:"schema",mutation:G,args:{kind:e.kind,from:e.from,to:e.to},open:[],score:64,why:tn(S),nodeIds:[e.from,e.to]});for(let u of n.allMutations()){let a=(u.connects??[]).includes(e.kind),m=(u.severs??[]).includes(e.kind);if(!a&&!m)continue;let p={},$=[],I=R(u.input);for(let d of I){let b=d.kinds.includes("*")||d.kinds.includes(s.kind),O=d.kinds.includes("*")||d.kinds.includes(f.kind),k=b&&!I.some(P=>P!==d&&(P.kinds.includes(s.kind)||P.kinds.includes("*")));b&&!O?p[d.name]=e.from:O&&!b?p[d.name]=e.to:b&&O&&k?p[d.name]=e.from:$.push({name:d.name,kinds:d.kinds,candidates:[e.from,e.to],shape:j(u.input,d.name)})}for(let d of T(u.input,""))d in p||$.some(b=>b.name===d)||$.push({name:d,shape:j(u.input,d)});$.every(d=>d.optional===!0?!0:d.kinds!==void 0?(d.candidates?.length??0)>0:(d.candidates?.length??0)>0||d.shape!==void 0&&d.shape.type!=="unknown")&&(a&&!m&&$.length===0||y.push({id:`schema:edge:${u.name}:${e.kind}:${e.from}:${e.to}`,label:M(u),provider:"schema",mutation:u.name,args:p,open:$,...u.destructive?{destructive:!0}:{},score:(m?62:58)-$.length,why:`this line is "${J(n.schema,n.graph.getNode(e.from)?.kind??"",e.kind,"out")}"`,nodeIds:[e.from,e.to]}))}}return{affordances:y}}if(t.length===0&&h.length>0){let e=new Set(h),s=[];for(let f of n.allMutations()){if(!(f.creates??[]).some(a=>e.has(a)))continue;let S=[];for(let a of R(f.input)){let m=a.kinds.includes("*")?n.graph.allNodes().map(p=>p.id):a.kinds.flatMap(p=>n.graph.nodesOfKind(p).map($=>$.id));S.push({name:a.name,kinds:a.kinds,candidates:m,shape:j(f.input,a.name),...a.optional?{optional:!0}:{}})}for(let a of T(f.input,""))S.some(m=>m.name===a)||S.push({name:a,shape:j(f.input,a)});if(!S.every(a=>a.optional===!0?!0:a.kinds!==void 0?(a.candidates?.length??0)>0:(a.candidates?.length??0)>0||a.shape!==void 0&&a.shape.type!=="unknown")&&!A(f.name,{})){let a=S.filter(m=>m.optional!==!0&&m.kinds!==void 0&&!m.kinds.includes("*")&&(m.candidates?.length??0)===0);if(a.length>0){let m=[...new Set(a.flatMap(p=>p.kinds??[]))].map(p=>F(_(n.schema.tryDefinition(p),p)));s.push({id:`schema:waits:${f.name}`,text:`"${f.title??f.name}" cannot begin until there is ${m.length===1?m[0]:`${m.slice(0,-1).join(", ")} and ${m[m.length-1]}`}.`,nodeIds:[]})}continue}y.push({id:`schema:add:${f.name}`,label:M(f),provider:"schema",mutation:f.name,args:{},open:S,score:q-S.length,why:`this makes ${(f.creates??[]).filter(a=>e.has(a)).map(a=>F(_(n.schema.tryDefinition(a),a))).join(", ")}`,nodeIds:[]})}return{affordances:y,observations:s}}if(t.length===0)return{};let c=new Set(t.map(e=>e.kind)),r=(e,s,f)=>{let S=[];for(let u of n.graph.allEdges()){if(!s.includes(u.kind))continue;let a=u.from===e?u.to:u.to===e?u.from:null;if(!a)continue;let m=n.graph.getNode(a);m&&(!f.includes("*")&&!f.includes(m.kind)||S.includes(a)||S.push(a))}return S};for(let e of n.allMutations()){let s=e.subject;if(!s||!(s.kinds==="*"?!0:[...c].every(g=>s.kinds.includes(g))))continue;let S=e.derived?.act;if((S==="archive"||S==="merge")&&t.some(g=>B(g))||S==="unarchive"&&!t.some(g=>B(g)))continue;let u=t.length===1?t[0].id:null,a=e.severs??[],m=e.connects??[];if(u&&a.length>0&&m.length===0&&r(u,a,["*"]).length===0)continue;let p=[];for(let g of R(e.input)){if(g.name===s.arg)continue;let d=g.kinds.includes("*")?n.graph.allNodes().map(b=>b.id):g.kinds.flatMap(b=>n.graph.nodesOfKind(b).map(O=>O.id));if(u&&m.length>0){let b=new Set(r(u,m,g.kinds));d=d.filter(O=>!b.has(O))}else u&&a.length>0&&(d=r(u,a,g.kinds));p.push({name:g.name,kinds:g.kinds,candidates:d.filter(b=>!i.includes(b)),shape:j(e.input,g.name),...g.optional?{optional:!0}:{}})}for(let g of T(e.input,s.arg))p.some(d=>d.name===g)||p.push({name:g,shape:j(e.input,g)});if(p.length===0&&u){let g=pn(e.input,s.arg);if(g.length>0&&!kn(n,e.name,{[s.arg]:u}))for(let d of g){let b=R(e.input).find(O=>O.name===d);p.push({name:d,optional:!0,...b?{kinds:b.kinds}:{},shape:j(e.input,d)})}}if(!p.every(g=>g.optional===!0?!0:g.kinds!==void 0?(g.candidates?.length??0)>0:(g.candidates?.length??0)>0||g.shape!==void 0&&g.shape.type!=="unknown")&&!A(e.name,u?{[s.arg]:u}:{}))continue;let I=t.map(g=>({[s.arg]:g.id}));p.length===0&&!I.some(g=>n.wouldChange({name:e.name,args:g}))||y.push({id:`schema:${e.name}`,label:t.length>1?`${M(e)} (${t.length})`:M(e),provider:"schema",mutation:e.name,args:I[0]??{},open:p,...e.destructive?{destructive:!0}:{},...e.derived?.act==="archive"||e.derived?.act==="merge"?{setsAside:!0}:{},...a.length>0||m.length>0?{ties:!0}:{},...t.length>1?{batch:I}:{},score:q-p.length,why:t.length>1?`all ${t.length} selected nodes are ${[...c].map(g=>Y(n.schema,g).toLowerCase()).join(" or ")}`:`this is ${F(_(n.schema.tryDefinition(t[0].kind),t[0].kind))}`,nodeIds:t.map(g=>g.id)})}if(t.length===1){let e=t[0];for(let s of n.allMutations()){let f=s.subject,S=s.severs??[],u=s.connects??[];if(!f||S.length===0&&u.length===0)continue;let a=f.kinds==="*"?"*":f.kinds;if(a==="*"||a.includes(e.kind))continue;let m=R(s.input),p=m.find(k=>k.name!==f.arg&&(k.kinds.includes("*")||k.kinds.includes(e.kind)));if(!p)continue;let $=a,I=$.includes("*")?n.graph.allNodes().map(k=>k.id):$.flatMap(k=>n.graph.nodesOfKind(k).map(P=>P.id)),g=new Set(r(e.id,u.length>0?u:S,$)),d=u.length>0?I.filter(k=>!g.has(k)):I.filter(k=>g.has(k));if(d.length===0)continue;let b=[{name:f.arg,kinds:$,candidates:d,shape:j(s.input,f.arg)}];for(let k of m){if(k.name===p.name||k.name===f.arg)continue;let P=k.kinds.includes("*")?n.graph.allNodes().map(N=>N.id):k.kinds.flatMap(N=>n.graph.nodesOfKind(N).map(E=>E.id));b.push({name:k.name,kinds:k.kinds,candidates:P,shape:j(s.input,k.name),...k.optional?{optional:!0}:{}})}for(let k of T(s.input,p.name))k===f.arg||b.some(P=>P.name===k)||b.push({name:k,shape:j(s.input,k)});b.every(k=>k.optional===!0?!0:k.kinds!==void 0?(k.candidates?.length??0)>0:(k.candidates?.length??0)>0||k.shape!==void 0&&k.shape.type!=="unknown")&&y.push({id:`schema:tie:${s.name}:${e.id}`,label:s.fromTheOtherEnd??M(s),provider:"schema",mutation:s.name,args:{[p.name]:e.id},open:b,ties:!0,...s.destructive?{destructive:!0}:{},score:q-b.length+2,why:`${S.length>0?"this one is on":"this one could join"} ${b[0].candidates.length===1?"it":"one of these"}`,nodeIds:[e.id]})}}return{affordances:y}}}}function pn(n,i){let t=n.shape;return t?Object.entries(t).filter(([h,v])=>h!==i&&v.safeParse(void 0).success).map(([h])=>h):[]}function kn(n,i,t){try{return n.preview({name:i,args:t}),!0}catch{return!1}}function T(n,i){let t=n.shape;return t?Object.entries(t).filter(([h,v])=>h!==i&&!v.safeParse(void 0).success).map(([h])=>h):[]}var yn=70,vn=80,bn=new Set(["id","kind"]);function un(){return{name:"structure",derive({store:n,nodes:i}){let t=c=>L(n.schema.tryDefinition(c.kind),c);if(i.length<2)return{};let h=[],v=[],l=i.map(c=>c.id);for(let c of n.schema.edgeKinds){let r=Sn(i.map(s=>new Set([...n.graph.out(s.id,c).map(f=>f.id),...n.graph.in(s.id,c).map(f=>f.id)])));for(let s of r){let f=n.graph.getNode(s);f&&h.push({id:`shared:${c}:${s}`,text:`all ${i.length} share "${t(f)}" (${z(c).toLowerCase()})`,nodeIds:[...l,s]})}let e=new Map;for(let s of i)for(let f of[...n.graph.out(s.id,c),...n.graph.in(s.id,c)])e.set(f.id,(e.get(f.id)??0)+1);for(let[s,f]of e){if(f!==i.length-1||i.length<3)continue;let S=n.graph.getNode(s);if(!S)continue;let u=i.find(a=>![...n.graph.out(a.id,c),...n.graph.in(a.id,c)].some(m=>m.id===s));if(u){h.push({id:`near-shared:${c}:${s}`,text:`all but "${t(u)}" share "${t(S)}" (${z(c).toLowerCase()})`,nodeIds:[...l,s]});for(let a of n.allMutations()){let m=a.subject;if(!m||m.kinds!=="*"&&!m.kinds.includes(u.kind))continue;let p=wn(a.input,S.kind);p&&v.push({id:`structure:join:${a.name}:${u.id}:${s}`,label:`${M(a)}: bring "${t(u)}" in line with the others`,provider:"structure",mutation:a.name,args:{[m.arg]:u.id,[p]:s},open:[],score:yn,why:`every other selected node is connected to "${t(S)}"`,nodeIds:[u.id,s]})}}}}let A=new Set;for(let c of i)for(let r of Object.keys(c))bn.has(r)||A.add(r);let y=c=>n.schema.definitions.find(r=>r.kind===c);for(let c of[...A].sort()){let r=y(i[0].kind),e=nn(r,c).toLowerCase(),s=r?.display?.format?.[c],f=d=>{if(!s)return d;try{return String(s(JSON.parse(d)))}catch{return d}},S=i.map(d=>d[c]),u=new Map;if(S.forEach((d,b)=>{let O=JSON.stringify(d??null),k=u.get(O);k?k.push(i[b]):u.set(O,[i[b]])}),u.size===1){let d=[...u.keys()][0];if(d==="null")continue;h.push({id:`agree:${c}`,text:`all ${i.length} share the ${e} ${f(d)}`,nodeIds:l});continue}if(i.length<3||u.size!==2)continue;let a=[...u.entries()].sort((d,b)=>b[1].length-d[1].length),[m,p]=a[0],[,$]=a[1];if($.length!==1||m==="null")continue;let I=$[0],g=JSON.parse(m);h.push({id:`odd-one-out:${c}`,text:`${p.length} share the ${e} ${f(m)}; "${t(I)}" does not`,nodeIds:l});for(let d of n.allMutations()){let b=d.subject;if(!b||b.kinds!=="*"&&!b.kinds.includes(I.kind))continue;let O=fn(d.input);if(!O||!(c in O))continue;let k={[b.arg]:I.id,[c]:g},P=!0;for(let[N,E]of Object.entries(O)){if(N in k||E.safeParse(void 0).success)continue;let K=I[N];if(K===void 0){P=!1;break}k[N]=K}P&&v.push({id:`structure:align:${d.name}:${c}:${I.id}`,label:`Align the ${e} of "${t(I)}" with the other ${p.length}`,provider:"structure",mutation:d.name,args:k,open:[],score:vn,why:`${p.length} of ${i.length} share the ${e} ${f(m)}`,nodeIds:l})}}return{affordances:v,observations:h}}}}function Sn(n){if(n.length===0)return[];let[i,...t]=n;return[...i].filter(h=>t.every(v=>v.has(h))).sort()}function fn(n){return n.shape??null}function wn(n,i){let t=fn(n);if(!t)return null;for(let[h]of Object.entries(t)){let v=en(t[h]);if(v&&(v.includes("*")||v.includes(i)))return h}return null}function An(){return[dn(),un(),cn(),on()]}function Hn(n,i,t={}){let h=ln(),v=t.providers??An(),l=i.map(o=>n.graph.getNode(o)).filter(o=>o!==void 0),A={store:n,selection:i,nodes:l,kindSelection:t.kindSelection??[],edgeSelection:t.edgeSelection??[],violations:n.violations(t.context),context:t.context??{},principal:t.principal??{kind:"human"}},y=[],c=[];for(let o of v){let w=o.derive(A);y.push(...w.affordances??[]),c.push(...w.observations??[])}let r=new Set(n.allMutations().filter(o=>o.pinned).map(o=>o.name)),e=new Set(t.pins?.pinned??[]),s=new Set(t.pins?.unpinned??[]),f=o=>e.has(o.mutation)?"user":r.has(o.mutation)&&!s.has(o.mutation)?"declared":void 0,S=o=>{let w=f(o);return w?{...o,pinned:w}:o},u=new Map;for(let[o,w]of rn(n.log.all()))u.set(o,an(w));let a=o=>o.pinned==="user"?0:o.pinned==="declared"?1:2,m=o=>o.score+(u.get(o.mutation)??0),p=new Map(n.allMutations().map(o=>[o.name,o])),$=new Map,I=o=>{let w=p.get(o.mutation);if(!w)return[];let x=$.get(o.mutation);x||(x=R(w.input).map(D=>D.name),$.set(o.mutation,x));let C=[];for(let D of o.batch??[o.args])for(let Q of x){let U=D[Q]??o.args[Q];typeof U=="string"&&C.push(U)}return C},g=t.focus,d=4,b=o=>o.open.length>0?1:0,O=o=>{if(g===void 0)return d;let w=I(o);return w.length>0?w.includes(g)?k(o,0):d:o.nodeIds.includes(g)||o.subjectId===g?k(o,1):d},k=(o,w)=>o.provider==="invariant"?w:2+b(o),P=o=>o.setsAside?1:0,N=$n(y).map(S),E=new Map(N.map((o,w)=>[o,w])),K=N.sort((o,w)=>{let x=Number(o.destructive??!1)-Number(w.destructive??!1);if(x!==0)return x;let C=P(o)-P(w);if(C!==0)return C;let D=O(o)-O(w);return D!==0?D:O(o)<2?E.get(o)-E.get(w):+(w.provider==="invariant")-+(o.provider==="invariant")||a(o)-a(w)||m(w)-m(o)||o.id.localeCompare(w.id)}),H=t.principal??{kind:"human"},W=[],Z=[];for(let o of K){let w=n.permits({name:o.mutation,args:{...o.args,...o.batch?.[0]??{}}},H);if(w.ok)W.push(o);else{let x=In(n,o,H);if(x==="done")continue;x?W.push(x):Z.push({...o,refusal:w.refusal})}}let V=W.map((o,w)=>({...o,rank:w})),hn=Z.map((o,w)=>({...o,rank:W.length+w}));return{affordances:t.limit===void 0?V:V.slice(0,t.limit),withheld:hn,observations:On(c),ms:ln()-h}}function $n(n){let i=new Map;for(let t of n){let h=[t.mutation,JSON.stringify(t.args),JSON.stringify(t.batch??null)].join("|"),v=i.get(h);(!v||t.score>v.score)&&i.set(h,t)}return[...i.values()]}function On(n){let i=new Map;for(let t of n)i.set(t.text,t);return[...i.values()]}function ln(){return typeof performance<"u"?performance.now():Date.now()}function Zn(n,i,t={},h={}){let v=(i.batch??[i.args]).map(A=>({name:i.mutation,args:{...i.args,...A,...t}})),l=n.allMutations().find(A=>A.name===i.mutation);return n.applyAll(v,{...l?.describe?{}:{intent:i.label},...h.author?{author:h.author}:{}})}function Vn(n,i,t={}){return n.preview({name:i.mutation,args:{...i.args,...t}})}function In(n,i,t){let h=n.allMutations().find(r=>r.name===i.mutation)?.subject,v=h!==void 0&&i.args[h.arg]===void 0,l=v?i.open.find(r=>r.name===h.arg):i.open.find(r=>r.name!==h?.arg&&r.candidates);if(!l?.candidates)return;let A=r=>n.permits({name:i.mutation,args:{...i.args,...i.batch?.[0]??{},[l.name]:r}},t).ok,y=l.candidates.filter(A),c=t.id===void 0?void 0:n.graph.getNode(t.id);if(y.length===0){let r=v?h.kinds:"*";return c!==void 0&&(r==="*"||r.includes(c.kind))&&A(c.id)?"done":void 0}return y.length===1&&y[0]===t.id?{...i,args:{...i.args,[l.name]:t.id},open:i.open.filter(r=>r!==l)}:{...i,open:i.open.map(r=>r===l?{...r,candidates:y}:r)}}export{Hn as a,Zn as b,Vn as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{e as B}from"./chunk.OQDETV4X.js";import{e as M}from"./chunk.ZS4DJ76C.js";import{F as v,M as K,U as g,W as _,c as N,fa as j,x as W}from"./chunk.Z56B2JR2.js";import{B as A,Cb as P,Db as D,Jb as T,eb as C,ib as F}from"./chunk.HLLWKSZB.js";import{b as y}from"./chunk.AJZBJBMO.js";function V(n,e){let t=n.graph.getNode(e);if(!t)return[];let i=t.kind,a=n.schema.tryDefinition(i);if(!a)return[];let d=n.seenFor,u=d?T.keptFrom?.(n,d)?.(t):void 0,o=new Map;for(let r of n.allMutations()){let s=r.subject;if(!s||!(s.kinds==="*"||s.kinds.includes(i)))continue;let l=r.input.shape??{};for(let c of F(r,a)){if(u?.(c))continue;let x=c in l,E=[];for(let m of Object.keys(l)){if(m===s.arg||m===c||I(l[m]))continue;let b=C(r.input).find(w=>w.name===m);E.push({name:m,...b?{kinds:b.kinds}:{},...b?{candidates:b.kinds.includes("*")?n.graph.allNodes().map(w=>w.id):b.kinds.flatMap(w=>n.graph.nodesOfKind(w).map(q=>q.id))}:{},shape:M(r.input,m)})}let U={field:c,mutation:r.name,title:r.title??r.name,shape:x?M(r.input,c):{type:"unknown"},takesValue:x,alternatives:[],open:E,call:m=>({name:r.name,args:x?{[s.arg]:e,[c]:m}:{[s.arg]:e}})};o.set(c,[...o.get(c)??[],U])}}return[...o.values()].map(r=>{let s=[...r.filter(c=>c.takesValue),...r.filter(c=>!c.takesValue)],[f,...l]=s;return{...f,alternatives:l}})}function I(n){let e=A(n)?.type;return e==="optional"||e==="default"||e==="nullable"}var R=y(v(),1);function fe(n){let{store:e,principal:t}=g(),i=_(),a=(0,R.useMemo)(()=>n===null?[]:V(e,n),[e,n,i]),d=(0,R.useCallback)((u,o,r={})=>{let s=u.call(o);e.apply({name:s.name,args:{...s.args,...r}},{author:t})},[e,t]);return{fields:a,commit:d}}var $=y(v(),1);function xe(){let{brand:n}=g(),e=n?.kit;return(0,$.useMemo)(()=>P(e),[e])}function be(n,e){let t=D(n,e),i={...t.color!==void 0?{color:t.color}:{},...t.pattern!==void 0?{pattern:t.pattern}:{},...t.width!==void 0?{width:t.width}:{},...t.cap!==void 0?{cap:t.cap}:{},...t.opacity!==void 0?{opacity:t.opacity}:{}};return{connector:t,style:B(e,{[e]:i})}}var H=y(v(),1);var h=y(K(),1);function Q(n){let e=n?.hint;return typeof e=="string"&&e.length>0?e:void 0}function J(n){if(n instanceof Error&&n.message)return n.message;let e=String(n);return e==="[object Object]"?"The view threw without a message.":e}var z=class extends H.Component{static contextType=j;state={};static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error(`[graview] the ${this.props.view??"view"} of ${this.props.kind} threw while rendering`,e,t.componentStack),this.context?.(e,{module:"@graview/react"})}render(){let{error:e}=this.state;if(!e)return this.props.children;let t=Q(e);return(0,h.jsxs)("div",{role:"alert","data-graview-view-error":this.props.kind,style:{display:"flex",flexDirection:"column",gap:"0.375rem",padding:"var(--graview-pad, 12px)",height:"100%",overflow:"auto",boxSizing:"border-box",borderRadius:"var(--graview-radius-sm, 6px)",background:"var(--graview-panel-warning, #fdf3ec)",color:"var(--graview-ink, #1a1a1a)",font:"var(--graview-font-body, 13px/1.45 system-ui)",fontSize:"0.875rem",lineHeight:1.45},children:[(0,h.jsx)("strong",{style:{color:"var(--graview-warn, #b4462a)"},children:this.props.view?`${this.props.view} could not draw`:"This view could not draw"}),(0,h.jsx)("span",{style:{color:"var(--graview-ink-muted, #555)"},children:this.props.kind}),(0,h.jsx)("span",{children:J(e)}),t?(0,h.jsx)("span",{style:{color:"var(--graview-ink-muted, #555)"},children:t}):null]})}};var L=y(v(),1);function Re(){return g().activity}function Se(n){let{noteAttention:e,noteSeat:t}=g();(0,L.useEffect)(()=>n.onCall(i=>{let a=n.author??{kind:"agent"},d=i.args?.said;i.phase==="ok"&&typeof d=="string"&&d.length>0&&t({type:"said",author:a,say:d}),!(i.phase!=="ok"||!i.reads||i.reads.length===0)&&e({reads:i.reads,author:a,intent:`read ${i.name}`})}),[n,e,t])}var S=(n,e)=>n.length*e*.58;var X=156,Y=2,k=X-18,Z=7.1,ee=16;function ne(n,e){let t=0,i=k;for(let a of n.split(" ")){let d=e(a),u=i+e(" ")+d;if(u<=k)i=u;else{let o=Math.ceil(d/k)||1;t+=o,i=d-(o-1)*k}}return t}var te=16.25,G=27,re=(n,e)=>{let t=Math.ceil(n.length*Z/k);return e?Math.max(G,Math.ceil(Math.max(t,ne(n,e))*te)+6):Math.max(G,t*ee+6)};function Ae(n,e,t){return n.length===0?0:10+n.reduce((i,a)=>i+re(a,t),0)+(n.length-1)*Y}var oe=27,ie=8,Ce=4,ae=64,Fe=n=>Math.max(1,Math.min(ie,n)),Pe=n=>n*oe+ae;var p=y(v(),1);function We(n,{units:e,target:t=0,legibleAt:i=260}){let[a,d]=(0,p.useState)(e);(0,p.useEffect)(()=>{let o=n.current;if(o===null||typeof ResizeObserver>"u")return;let r=new ResizeObserver(([s])=>{let f=s?.contentRect.width??0;f>0&&d(f)});return r.observe(o),()=>r.disconnect()},[n]);let u=a/e;return{scale:u,width:a,touchable:u*t>=24,legible:a>=i}}function Ke(n="--graview-font-body",e="sans-serif"){let t=(0,p.useRef)(void 0),i=(0,p.useMemo)(()=>{if(typeof getComputedStyle!="function"||typeof document>"u")return e;let a=getComputedStyle(document.documentElement).getPropertyValue(n).trim();return a.length>0?a:e},[n,e]);return(0,p.useMemo)(()=>{t.current===void 0&&(t.current=typeof document>"u"?null:document.createElement("canvas").getContext("2d")??null);let a=t.current;return a===null?S:(d,u)=>{a.font=`${u}px ${i}`;let o=a.measureText(d).width;return o>0?o:S(d,u)}},[i])}var _e=(0,p.createContext)(void 0);var O=3;function se(n){let e=N(n),t=e.focusId;if(!t)return null;if(e.within?.view){let[a]=W(t);if(a)return{at:`screen:${a}`,audience:!0}}return{at:t,audience:!1}}function Ve(n,e,t){let i=[],a=new Map,d=new Map,u=0;for(let o of n){let r=se(o.stop),s=r?e(r.at):null;if(!r||!s){o.name&&i.push({kind:"edge",presence:o,point:{x:t-8,y:40+u++*28}});continue}if(!o.name){let E=d.get(r.at);d.set(r.at,{n:(E?.n??0)+1,box:s});continue}let f=a.get(r.at)??[];if(f.push(o),a.set(r.at,f),f.length>O)continue;let l=s,c=f.length-1,x=r.audience?{x:l.x+l.width*.5+(c-1)*26,y:l.y+Math.min(l.height,24)}:{x:l.x+l.width*.5-26-c*22,y:l.y+l.height-4};i.push({kind:"person",presence:o,point:x,at:r.at,index:c,of:f.length,audience:r.audience})}for(let[o,r]of a){if(r.length<=O)continue;let s=e(o);s&&i.push({kind:"count",at:o,point:{x:s.x+s.width*.5+2*26+18,y:s.y+s.height-4},n:r.length-O})}for(let[o,{n:r,box:s}]of d)i.push({kind:"count",at:o,point:{x:s.x+s.width*.5+40,y:s.y+s.height-4},n:r});for(let o of n)if(o.name){if(o.robot?.at&&o.robot.mode!=="docked"){let r=e(o.robot.at);r&&i.push({kind:"robot",presence:o,point:{x:r.x+r.width/2+22,y:r.y+r.height-4},mode:o.robot.mode})}if(o.over){let r=e(o.over);r&&i.push({kind:"over",presence:o,box:r})}}return i}export{Re as a,Se as b,S as c,X as d,Y as e,G as f,Ae as g,oe as h,Ce as i,ae as j,Fe as k,Pe as l,We as m,Ke as n,fe as o,xe as p,be as q,Ve as r,z as s};
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import{a as kt,b as Ct,c as Ot,d as En}from"./chunk.GDA3G4U2.js";import{b as $n,c as yt,d as Rn,e as wt,f as vt,g as bt}from"./chunk.WKXNBHTL.js";import{a as xt,b as An,c as St}from"./chunk.3JM2TNDD.js";import{b as $t,f as Rt,g as At}from"./chunk.BKPGDEES.js";import{m as ht}from"./chunk.KZ2376BD.js";import{a as pt,b as ft}from"./chunk.IZW7DBK4.js";import{c as ut,e as mt}from"./chunk.RKRSRKF3.js";import{e as gt}from"./chunk.KC6UZHBM.js";import{b as X,c as pe,d as Ee}from"./chunk.2CLPRG3I.js";import{m as ct,n as On}from"./chunk.OYJSFO3A.js";import{e as dt}from"./chunk.DAA6XWLF.js";import{f as Ve}from"./chunk.GS4T26WW.js";import{F as Ne,M as Y,N as ot,U as Q,W as st,ha as lt,ia as Ye,l as Ke}from"./chunk.Z56B2JR2.js";import{$ as Zn,Gb as ke,N as Qn,O as Jn,Oa as kn,P as xn,Q as Xn,R as Ue,Rb as Cn,V as Be,W as fe,Z as We,_ as nn,aa as Sn,ba as et,ca as tn,jb as it,oa as nt,ob as de,sa as tt,ta as rt,ua as at}from"./chunk.HLLWKSZB.js";import{b as j}from"./chunk.AJZBJBMO.js";var Mn=j(Y(),1);function Me(e,t,n){let r=e.nodes?.length??0;if(e.total===void 0||e.total<=r)return n;let a=e.nodes?.[0]?.kind,o=a?nn(t,a).toLowerCase():"more";return(0,Mn.jsxs)("div",{style:{display:"grid",gridTemplateRows:"minmax(0, 1fr) auto",height:"100%",minHeight:0},children:[n,(0,Mn.jsxs)("p",{"data-testid":"lens-more",style:{margin:"4px 0 0",fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:["+",e.total-r," more ",o]})]})}var Et=j(Y(),1),vr=(e,t)=>{if(e===!1||t===!1)return!1;let n=e===void 0||e===!0?{}:e,r=t===void 0||t===!0?{}:t;return{sort:n.sort!==!1&&r.sort!==!1,filter:n.filter!==!1&&r.filter!==!1,group:n.group!==!1&&r.group!==!1}},br=["sort","filter","group","q","archived"];function Ie(e,t={}){let{store:n}=Q(),{view:r,go:a}=Ye(),c=br.some(C=>r.within?.[C]!==void 0)?pt(r):t.arrangedBy??{},p=e.nodes??[],u=t.kind??p[0]?.kind??e.node?.kind,y=c.archived!==void 0&&c.archived!==!1&&u!==void 0&&!t.subject?n.graph.nodesOfKind(u,{archived:c.archived}):p,l=t.subject??(t.only?y.filter(t.only):y),m=t.subject?[]:t.only?y.filter(C=>!t.only(C)):[],w=t.kind??l[0]?.kind,s=vr(t.allow,t.lensAllows),g=w?gt(n.schema,String(w)):void 0,v=g?ut(c,g).arrangement:{},i=mt(l,s===!1?{}:v,{schema:n.schema,graph:n.graph,flagged:new Set(e.flagged??[])}),O=w&&s!==!1&&e.fidelity==="full"&&e.budget===void 0&&l.length>1?(0,Et.jsx)(ht,{schema:n.schema,graph:n.graph,kind:String(w),arrangement:v,allow:s,query:t.query!==!1,onChange:C=>a(ft(r,C)),kept:{shown:i.nodes.length,of:l.length}}):null;return{nodes:[...m,...i.nodes],arranged:i,arrangement:v,bar:O}}function Qe(e,t,n){let r=new Set((n??[]).map(o=>o.kind)),a=new Set((n??[]).map(o=>o.id));return e.allNodes().filter(o=>r.has(o.kind)?a.has(o.id):Be(t.tryDefinition(o.kind),o))}var Le=j(Ne(),1);var L=j(Y(),1),xr=["slots","x","y","fill"],rn=class extends Error{constructor(n,r){super(`${n}
|
|
2
|
-
${r}`);this.hint=r;this.name="BoardBindingError"}},Mt=e=>Math.max(0,Math.min(1,e));function Ln(e,t,n,r){let a=g=>g,o=g=>r?fe(r.tryDefinition(g.kind),g):String(a(g).label??g.id);if(r&&r.tryDefinition(n.slots)===void 0)throw new rn(`No kind is declared for "${n.slots}".`,'Check the lens bindings: { slots: "<kind>", x: "<field>", y: "<field>", fill: "<edge kind>" }');let c=e.filter(g=>g.kind===n.slots);if(!r&&c.length===0)throw new rn(`Nothing to arrange: no "${n.slots}" nodes.`,'Check the lens bindings: { slots: "<kind>", x: "<field>", y: "<field>", fill: "<edge kind>" }');let p=t.filter(g=>g.kind===n.fill),u=new Map(e.map(g=>[g.id,g])),y=new Map(e.map((g,v)=>[g.id,v])),l=c.map(g=>{let v=a(g),i=n.fillFrom==="occupant",O=p.filter(C=>(i?C.to:C.from)===g.id).map(C=>u.get(i?C.from:C.to)).filter(C=>C!==void 0).sort((C,R)=>(y.get(C.id)??0)-(y.get(R.id)??0)).map(C=>({id:C.id,label:o(C)}));return{id:g.id,code:String(v[n.slotCode??""]??"").trim()||o(g),label:o(g),x:Mt(Number(v[n.x]??.5)),y:Mt(Number(v[n.y]??.5)),occupants:O}}).sort((g,v)=>g.y-v.y||g.x-v.x),m=new Set(l.flatMap(g=>g.occupants.map(v=>v.id))),w=new Set([...m].map(g=>u.get(g)?.kind).filter(g=>g!==void 0)),s=e.filter(g=>w.has(g.kind)&&!m.has(g.id)).map(g=>({id:g.id,label:o(g)})).sort((g,v)=>g.label<v.label?-1:g.label>v.label?1:0);return{slots:l,empty:l.filter(g=>g.occupants.length===0).map(g=>g.id),spare:s}}function Sr({nodes:e,occupants:t,label:n,fidelity:r,mode:a,options:o,schema:c,implicated:p=[],flagged:u=[]}){let{store:y}=Q(),l=Qe(y.graph,y.schema,e),m=t?[...l.filter(f=>f.kind===o.slots),...t.map(f=>y.graph.getNode(f)).filter(f=>f!==void 0)]:l,w=Ln(m,y.graph.allEdges(),o,c),s=new Set(p),g=new Set(u),v=lt(),i=new Map;for(let f of v)for(let H of f.nodeIds)i.set(H,[...i.get(H)??[],f.message]);let O=f=>f?i.get(f)??[]:[];if(r==="glyph")return(0,L.jsx)(pe,{label:`${n??"Board"} \xB7 ${w.slots.length-w.empty.length}/${w.slots.length}`,hue:de("board")});if(r==="summary"){let f=w.slots.filter(H=>w.empty.includes(H.id));return(0,L.jsx)(X,{title:n??"Board",meta:`${w.slots.length-w.empty.length}/${w.slots.length}`,tone:f.length>0?"warning":"muted",fit:!0,children:f.length>0?(0,L.jsx)(Ee,{pick:!0,max:5,items:f.map(H=>({id:H.id,label:H.code}))}):(0,L.jsx)("span",{style:{fontSize:"0.8125rem",color:"var(--graview-ink-faint)"},children:"Every slot filled."})})}let C=o.aspect??.68,R=(0,Le.useRef)(null),[P,S]=(0,Le.useState)(!1),[d,k]=(0,Le.useState)(null),h=160,[M,F]=(0,Le.useState)(!1);(0,Le.useEffect)(()=>{let f=R.current;if(!f||typeof ResizeObserver>"u")return;let H=new ResizeObserver(z=>{let G=z[0]?.contentRect;if(!G)return;let b=G.height<h;F(b),S(!b&&C<1&&G.width/G.height>1.3),k(b?null:G.height)});return H.observe(f),()=>H.disconnect()},[C]);let E=(f,H)=>P?{x:1-H,y:f}:{x:f,y:H},N=(()=>{let f=new Map,H=(z,G,b)=>{let $=f.get(b)??{ids:[],codes:[]};$.ids.includes(z)||($.ids.push(z),$.codes.includes(G)||$.codes.push(G)),f.set(b,$)};for(let z of w.slots){for(let G of O(z.id))H(z.id,z.code,G);for(let G of z.occupants)for(let b of O(G.id))H(G.id,G.label,b)}return[...f.entries()].map(([z,G])=>({id:G.ids[0],code:G.codes.join(", "),text:z}))})(),D=a==="fullscreen",B=N.length===0?null:(0,L.jsxs)("ul",{"data-graview-primitive":"board-key",style:{margin:"2px 0 0",padding:0,listStyle:"none",display:"grid",gap:3,flex:"0 0 auto"},children:[N.slice(0,D?6:2).map(f=>(0,L.jsxs)("li",{"data-graview-pick":f.id,"data-graview-emphasis":s.size===0?"plain":s.has(f.id)?"lit":"dimmed",title:f.text,style:{display:D?"grid":"flex",gap:D?1:7,alignItems:D?"start":"baseline",fontSize:"0.8125rem",lineHeight:1.45,color:"var(--graview-ink-muted)",minHeight:24,width:"fit-content",maxWidth:"100%",padding:D?"2px 0":"3px 6px",marginLeft:D?0:-6,borderRadius:7,cursor:"pointer"},children:[(0,L.jsxs)("span",{style:{flex:"0 0 auto",fontWeight:600,color:"var(--graview-warn)",letterSpacing:"0.02em"},children:["\u26A0 ",f.code]}),(0,L.jsx)("span",{style:{minWidth:0,...D?{}:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},children:f.text})]},f.id)),N.length>(D?6:2)?(0,L.jsxs)("li",{style:{fontSize:"0.8125rem",color:"var(--graview-ink-faint)"},children:["+",N.length-(D?6:2)," more"]}):null]}),ee=o.arrange==="shelf",ue=w.slots.every(f=>f.code.length<=3&&!/\s/.test(f.code)),ie=(f,H)=>{let z=f.occupants.length===0,G=s.size>0&&!s.has(f.id)&&!f.occupants.some(_=>s.has(_.id)),b=g.has(f.id),$=f.occupants.some(_=>g.has(_.id)),W=b,ne=[...O(f.id),...f.occupants.flatMap(_=>O(_.id))],oe=f.occupants.length===1?f.occupants[0]:null,Z=o.pickTarget==="slot"?f.id:oe?oe.id:f.id,se=_=>oe?{}:{"data-graview-pick":_.id,"data-graview-emphasis":s.size===0?"plain":G?"dimmed":"lit"},ye=_=>g.has(_.id)?"var(--graview-warn)":"var(--graview-ink-muted)",Fe=o.emptyLabel??"empty";return(0,L.jsxs)("div",{"data-graview-pick":Z,"data-graview-slot":f.id,"data-graview-mark":ue?"disc":"token","data-graview-flagged":b&&$?"both":b?"slot":$?"occupant":void 0,"data-graview-emphasis":s.size===0?"plain":G?"dimmed":"lit",title:[z?`${f.label} \u2014 nobody in it`:`${f.occupants.map(_=>_.label).join(", ")} at ${f.label}`,...ne].join(`
|
|
3
|
-
`),style:{...H,display:"grid",justifyItems:ue?"center":"start",gap:3,opacity:G?.5:1,transition:"opacity 160ms ease"},children:[ue?(0,L.jsxs)("span",{style:{position:"relative",width:34,height:34,borderRadius:999,display:"grid",placeItems:"center",fontSize:"0.75rem",letterSpacing:"0.02em",border:z?"1.5px dashed var(--graview-warn)":`1px solid ${W?"var(--graview-warn)":"var(--graview-edge-bright)"}`,background:z?"transparent":W?"var(--graview-panel-warning)":"var(--graview-panel)",color:z||W?"var(--graview-warn)":"var(--graview-ink)",boxShadow:z?void 0:"var(--graview-lift-low)"},children:[f.code,b&&!z?(0,L.jsx)("span",{"aria-hidden":"true",style:{position:"absolute",top:-3,right:-3,fontSize:"0.6875rem",lineHeight:1,color:"var(--graview-warn)"},children:"\u26A0"}):null]}):(0,L.jsxs)("span",{style:{display:"grid",gap:1,minWidth:0,maxWidth:180,padding:"5px 10px 6px",borderRadius:8,border:z?"1.5px dashed var(--graview-warn)":`1px solid ${W?"var(--graview-warn)":"var(--graview-edge-bright)"}`,background:z?"transparent":W?"var(--graview-panel-warning)":"var(--graview-panel)",boxShadow:z?void 0:"var(--graview-lift-low)"},children:[(0,L.jsxs)("span",{style:{fontSize:"0.8125rem",fontWeight:550,lineHeight:1.25,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",color:z||W?"var(--graview-warn)":"var(--graview-ink)"},children:[f.code,b&&!z?" \u26A0":null]}),z?(0,L.jsx)("span",{style:{fontSize:"0.75rem",lineHeight:1.3,color:"var(--graview-warn)"},children:Fe}):(0,L.jsx)("span",{style:{display:"flex",flexWrap:"wrap",gap:"0 8px",fontSize:"0.75rem",lineHeight:1.3},children:f.occupants.map(_=>(0,L.jsxs)("span",{...se(_),style:{whiteSpace:"nowrap",color:ye(_)},children:[_.label,g.has(_.id)?" \u26A0":""]},_.id))})]}),ue?z?(0,L.jsx)("span",{style:{fontSize:"0.75rem",whiteSpace:"nowrap",color:"var(--graview-warn)"},children:Fe}):f.occupants.map(_=>(0,L.jsxs)("span",{...se(_),style:{fontSize:"0.75rem",whiteSpace:"nowrap",color:ye(_)},children:[_.label,g.has(_.id)?" \u26A0":""]},_.id)):null]},f.id)},ve=o.zones??[],Oe=ve.map((f,H)=>({label:f.label,slots:w.slots.filter(z=>z.y>=f.from&&(z.y<f.to||H===ve.length-1&&z.y<=f.to))})),x=new Set(Oe.flatMap(f=>f.slots.map(H=>H.id))),T=w.slots.filter(f=>!x.has(f.id));(T.length>0||Oe.length===0)&&Oe.push({label:"",slots:T});let re={boxSizing:"border-box",borderRadius:12,border:"1px solid var(--graview-edge)",background:"linear-gradient(var(--graview-panel-muted), var(--graview-panel-muted)), var(--graview-panel)",overflow:"hidden"};return(0,L.jsxs)(X,{title:n??"Board",meta:w.slots.length===0?void 0:w.empty.length===0?`all ${w.slots.length} filled`:`${w.empty.length} unfilled`,...D?{style:{flex:"1 1 auto",minHeight:0,height:"100%"}}:{},children:[(0,L.jsxs)("div",{ref:R,style:{display:"flex",gap:28,alignItems:"stretch",justifyContent:"center",flex:"1 1 auto",minHeight:0},children:[D&&B?(0,L.jsxs)("div",{style:{width:260,flex:"0 0 auto",alignSelf:"center",display:"grid",gap:8},children:[(0,L.jsx)("span",{style:{fontSize:"0.75rem",letterSpacing:"0.14em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},children:"What is marked"}),B]}):null,ee?(0,L.jsx)("div",{"data-graview-primitive":"board","data-graview-arrange":"shelf",style:{...re,overflow:"auto",flex:"1 1 auto",minWidth:0,alignSelf:"stretch",display:"grid",alignContent:"start"},children:Oe.map((f,H)=>(0,L.jsxs)("section",{"data-graview-zone":f.label||void 0,style:{display:"grid",gap:8,padding:"10px 14px 14px",...H>0?{borderTop:"1px dashed var(--graview-edge)"}:{}},children:[f.label?(0,L.jsx)("span",{style:{fontSize:"0.6875rem",letterSpacing:"0.14em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},children:f.label}):null,f.slots.length>0?(0,L.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:"10px 12px",alignItems:"flex-start"},children:f.slots.map(z=>ie(z,{}))}):(0,L.jsx)("span",{style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:"nothing here"})]},f.label||`band-${H}`))}):(0,L.jsxs)("div",{style:{display:"flex",gap:5,alignItems:"stretch",minWidth:0,...M?{flex:"1 1 auto",alignSelf:"flex-start"}:{}},children:[!P&&ve.length>0?(0,L.jsx)("div",{"aria-hidden":"true",style:{position:"relative",width:15,flex:"0 0 auto",alignSelf:"stretch"},children:ve.map(f=>(0,L.jsx)("span",{title:f.label,style:{position:"absolute",top:`${f.from*100}%`,height:`${(f.to-f.from)*100}%`,right:0,writingMode:"vertical-rl",transform:"rotate(180deg)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"0.6875rem",letterSpacing:"0.14em",textTransform:"uppercase",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",color:"var(--graview-ink-faint)"},children:f.label},f.label))}):null,(0,L.jsxs)("div",{"data-graview-primitive":"board","data-graview-arrange":"exact",style:{...re,position:"relative",aspectRatio:`${P?1/C:C}`,...M?{width:"100%",height:"auto",flex:"1 1 auto",minWidth:0,alignSelf:"flex-start"}:{height:"100%",flex:"0 1 auto",...d!==null?{width:Math.round(d*(P?1/C:C))}:{}},maxWidth:"100%"},children:[ve.map(f=>(0,L.jsx)("div",{"aria-hidden":"true",style:{position:"absolute",...P?{top:0,bottom:0,left:`${(1-f.to)*100}%`,width:`${(f.to-f.from)*100}%`,borderLeft:"1px dashed var(--graview-edge)"}:{left:0,right:0,top:`${f.from*100}%`,height:`${(f.to-f.from)*100}%`,borderBottom:"1px dashed var(--graview-edge)"}}},f.label)),P?ve.map(f=>(0,L.jsx)("span",{"aria-hidden":"true",title:f.label,style:{position:"absolute",bottom:3,left:`${(1-f.to)*100}%`,width:`${(f.to-f.from)*100}%`,textAlign:"center",fontSize:"0.6875rem",letterSpacing:"0.14em",textTransform:"uppercase",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",color:"var(--graview-ink-faint)"},children:f.label},`label-${f.label}`)):null,w.slots.map(f=>ie(f,{position:"absolute",left:`${E(f.x,f.y).x*100}%`,top:`${E(f.x,f.y).y*100}%`,transform:"translate(-50%, -50%)",width:"max-content",maxWidth:"100%"}))]})]}),w.spare.length>0?(0,L.jsxs)("div",{style:{display:"grid",gap:6,alignContent:"start",minWidth:0},children:[(0,L.jsx)("span",{style:{fontSize:"0.75rem",letterSpacing:"0.14em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},children:"Not in"}),(0,L.jsx)(Ee,{pick:!0,max:10,items:w.spare.map(f=>({...f,emphasis:s.size===0?"plain":s.has(f.id)?"lit":"dimmed"}))})]}):null]}),D?null:B]})}function Lt(e){function t(n){let{store:r}=Q(),a=Ln(Qe(r.graph,r.schema,n.nodes),r.graph.allEdges(),e,r.schema),c=[...a.slots.flatMap(l=>l.occupants.map(m=>m.id)),...a.spare.map(l=>l.id)].map(l=>r.graph.getNode(l)).filter(l=>l!==void 0),{arranged:p,bar:u}=Ie(n,{...e.arranging!==void 0?{allow:e.arranging}:{},lensAllows:{group:!1},...e.arrangedBy?{arrangedBy:e.arrangedBy}:{},subject:c}),y=(0,L.jsx)(Sr,{schema:r.schema,...n,options:e,...e.arranging===!1?{}:{occupants:p.nodes.map(l=>l.id)}});return Me(n,r.schema,u?(0,L.jsxs)("div",{style:{display:"grid",gap:6,height:"100%",minHeight:0,gridTemplateRows:"auto 1fr"},children:[u,y]}):y)}return{name:"board",requiredRoles:[...xr],options:e,View:t,build(n,r,a){return Ln(n,r,e,a)}}}var un=j(Ne(),1);var Pt=864e5;function Pn(e){if(typeof e!="string")return null;let t=/^(\d{4}-\d{2}-\d{2})/.exec(e);return t?t[1]:null}function on(e){if(typeof e!="string")return null;let t=/^\d{4}-\d{2}-\d{2}[T ](\d{2}):(\d{2})/.exec(e);return t?Number(t[1])*60+Number(t[2]):null}var an=e=>Date.UTC(Number(e.slice(0,4)),Number(e.slice(5,7))-1,Number(e.slice(8,10))),sn=e=>new Date(e).toISOString().slice(0,10);function he(e,t){return sn(an(e)+t*Pt)}function De(e,t){let n=Number(e.slice(0,4)),r=Number(e.slice(5,7))-1+t,a=Number(e.slice(8,10)),o=new Date(Date.UTC(n,r+1,0)).getUTCDate();return sn(Date.UTC(n,r,Math.min(a,o)))}var Tn=e=>new Date(an(e)).getUTCDay();function He(e,t=1){let n=(Tn(e)-t+7)%7;return he(e,-n)}var Nn=e=>`${e.slice(0,7)}-01`;function ae(e,t){return Math.round((an(t)-an(e))/Pt)}function Ge(e,t){return Array.from({length:t},(n,r)=>he(e,r))}var Tt=e=>Xn(e,"short"),Ce=e=>Qn(e,{weekday:"short"}),Dn=e=>Ue(e);function ze(e,t){let n=t?.fieldRoles?.when;return e&&!e.start&&n?{...e,start:n}:e}function Nt(e,t){return t===void 0?!1:typeof t=="string"?e[t]===!0:t.is.includes(e[t.field])}var ln=["start"],kr=["day","week","month","quarter","year","agenda"];function dn(e){return e.horizon?["day","week","month","quarter","year","years","agenda"]:kr}function Dt(e,t){return e==="years"?t?.title??"Years":`The ${e}`}function zt(){let e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`}var zn=class extends Error{constructor(n,r){super(`The calendar lens has no binding for ${r.map(a=>`"${a}"`).join(", ")} on "${n}". Bind them in the lens declaration: bindings: { ${n}: { start: "<field>" } }.`);this.kind=n;this.missing=r;this.name="CalendarBindingError"}};function Bn(e,t,n){let r=ze(t[e.kind],n?.tryDefinition(e.kind));if(!r)return null;let a=e,o=n?.tryDefinition(e.kind)?.fields.shape,c=ln.filter(m=>{let w=r[m];return w?o?!(w in o):!(w in a):!0});if(c.length>0)throw new zn(e.kind,c);let p=Pn(a[r.start]);if(p===null)return null;let u=(r.end?Pn(a[r.end]):null)??p,y=on(a[r.start]),l=r.label?a[r.label]:void 0;return{id:e.id,kind:e.kind,label:typeof l=="string"&&l.length>0?l:fe(n?.tryDefinition(e.kind),e),from:p,to:ae(p,u)<0?p:u,at:r.allDay&&a[r.allDay]===!0?null:y,allDay:r.allDay&&a[r.allDay]===!0||y===null,done:Nt(a,r.done)}}function Bt(e,t,n,r){let a=Bn(e,t,n);if(!a)return[];let o=ze(t[e.kind],n?.tryDefinition(e.kind)).start,c=e,p=c[o],u=c[nt(o)];if(typeof p!="string"||!tt(u))return[a];let y=ae(a.from,a.to);return("next"in r?[at(p,u,r.next)]:rt(p,u,{from:he(r.from,-y),to:r.to,limit:400})).map(m=>({...a,from:m.slice(0,10),to:he(m.slice(0,10),y),repeats:!0}))}function cn(e,t){return e.filter(n=>ae(n.from,t)>=0&&ae(t,n.to)>=0).sort((n,r)=>n.allDay!==r.allDay?n.allDay?-1:1:n.at!==r.at?(n.at??0)-(r.at??0):n.label.localeCompare(r.label))}function Wt(e,t,n){let r=it(e.schema,e.allMutations()).get(t)?.get(n)??[],a=new Map(e.allMutations().map(c=>[c.name,c]));for(let c of r){let p=a.get(c),u=p?.subject;if(!p||!u)continue;let y=p.input?.shape??{};if(n in y)return{name:p.name,arg:u.arg}}let o=e.allMutations().find(c=>c.derived?.act==="edit"&&c.derived.kind===t);return o?.subject?{name:o.name,arg:o.subject.arg}:null}var Vt=(e,t)=>({from:Nn(e),to:It(e),label:xn(e,{short:!0,year:t})});function It(e){return sn(Date.UTC(Number(e.slice(0,4)),Number(e.slice(5,7)),0))}function Cr(e){let t=Math.floor((Number(e.slice(5,7))-1)/3);return`${e.slice(0,4)}-${String(t*3+1).padStart(2,"0")}-01`}function Ht(e,t,n={}){let r=n.weekStartsOn??1,a=(u,y)=>({from:u,to:u,label:String(Number(u.slice(8,10))),...y?{outside:!0}:{}});if(e==="day")return{title:Ce(t),grain:"day",columns:1,cells:[a(t)]};if(e==="week"){let u=He(t,r);return{title:`${Ce(u)} \u2013 ${Ce(he(u,6))}`,grain:"day",columns:7,cells:Ge(u,7).map(y=>a(y))}}if(e==="agenda")return{title:`From ${Ce(t)}`,grain:"day",columns:1,cells:Ge(t,42).map(u=>a(u))};if(e==="quarter"){let u=Cr(t),y=It(De(u,2)),l=[];for(let m=He(u,r);ae(m,y)>=0;m=he(m,7))l.push({from:m,to:he(m,6),label:Jn(m),...ae(m,u)>0&&ae(he(m,6),u)>0?{outside:!0}:{}});return{title:`Q${Math.floor((Number(t.slice(5,7))-1)/3)+1} ${t.slice(0,4)}`,grain:"week",columns:4,cells:l}}if(e==="year"){let u=t.slice(0,4);return{title:u,grain:"month",columns:4,cells:Array.from({length:12},(y,l)=>Vt(`${u}-${String(l+1).padStart(2,"0")}-01`,!1))}}if(e==="years"){let u=Math.max(1,n.horizon?.years??1),y=Number(t.slice(0,4)),l=Array.from({length:u},(m,w)=>String(y+w));return u>Or?{title:`${n.horizon?.title??"Years"} \xB7 ${l[0]}\u2013${l[l.length-1]}`,grain:"year",columns:5,years:l,cells:l.map(m=>({from:`${m}-01-01`,to:`${m}-12-31`,label:m}))}:{title:`${n.horizon?.title??"Years"} \xB7 ${l[0]}\u2013${l[l.length-1]}`,grain:"month",columns:4,years:l,cells:l.flatMap(m=>Array.from({length:12},(w,s)=>Vt(`${m}-${String(s+1).padStart(2,"0")}-01`,!0)))}}let o=Nn(t),c=He(o,r),p=t.slice(0,7);return{title:xn(t),grain:"day",columns:7,cells:Ge(c,42).map(u=>a(u,u.slice(0,7)!==p))}}function Gt(e,t,n){return e.filter(r=>ae(r.from,n)>=0&&ae(t,r.to)>=0).sort((r,a)=>r.allDay!==a.allDay?r.allDay?-1:1:r.from!==a.from?r.from.localeCompare(a.from):r.at!==a.at?(r.at??0)-(a.at??0):r.label.localeCompare(a.label))}var Or=10;function jt(e){return e==="year"?"year":e==="month"?"month":e==="week"?"week":"day"}var _t=j(Ne(),1);var K=j(Y(),1);function Wn({label:e,glyph:t,onPress:n}){return(0,K.jsx)("button",{type:"button","aria-label":e,title:e,onClick:n,style:je,children:t})}var je={minHeight:24,minWidth:24,padding:"2px 9px",borderRadius:6,fontSize:"0.8125rem",borderWidth:1,borderStyle:"solid",borderColor:"transparent",color:"var(--graview-ink-muted)",background:"transparent"},qt={day:12,week:4,month:3,year:5};function Ft({span:e,weekStartsOn:t,entries:n,today:r,perCell:a,emphasisOf:o,broken:c,hue:p,onOpen:u,onMove:y}){let l=(0,_t.useRef)(null),m=Ve(l),w=m===null?e.columns:Math.max(1,Math.floor(m/44)),s=w<e.columns,g=s?w:e.columns,v=!s&&e.grain==="day"&&e.columns===7?Ge(He(e.cells[0]?.from??r,t),7):e.grain==="day"&&e.columns===1?e.cells.map(i=>i.from):null;return s&&e.grain==="day"&&e.columns>1?(0,K.jsx)("div",{ref:l,"data-calendar-shape":"agenda",style:{display:"grid",minHeight:0,flex:1},children:(0,K.jsx)(gn,{days:e.cells.map(i=>i.from),entries:n,today:r,emphasisOf:o,broken:c,hue:p,onMove:(i,O)=>y(i,{from:O,to:O,label:O},"day")})}):(0,K.jsxs)("div",{ref:l,"data-calendar-shape":s?"wrapped":"grid",style:{display:"grid",gap:4,gridTemplateRows:v?"auto 1fr":"1fr",minHeight:0,flex:1},children:[v?(0,K.jsx)("div",{style:{display:"grid",gridTemplateColumns:`repeat(${g}, minmax(0, 1fr))`,gap:4},children:v.map(i=>(0,K.jsx)("span",{style:{fontSize:"0.75rem",letterSpacing:"0.16em",textTransform:"uppercase",color:"var(--graview-ink-muted)",textAlign:"center"},children:e.columns===7?Tt(Tn(i)):Ce(i)},i))}):null,(0,K.jsx)("div",{tabIndex:0,"aria-label":`The days of ${e.title}`,style:{display:"grid",gridTemplateColumns:`repeat(${g}, minmax(0, 1fr))`,gridAutoRows:"max-content",gap:4,minHeight:0,overflow:"auto"},children:e.cells.map((i,O)=>{let C=Gt(n,i.from,i.to),R=C.slice(0,a),P=C.slice(a),S=P.filter(k=>c.has(k.id)).length,d=ae(i.from,r)>=0&&ae(r,i.to)>=0;return(0,K.jsxs)("div",{"data-calendar-day":e.grain==="day"?i.from:void 0,"data-calendar-cell":i.from,"data-calendar-grain":e.grain,"data-calendar-count":C.length,"data-calendar-outside":i.outside||void 0,onDragOver:k=>{k.dataTransfer.types.includes("text/graview-node")&&(k.preventDefault(),k.dataTransfer.dropEffect="move")},onDrop:k=>{let h=k.dataTransfer.getData("text/graview-node");h&&(k.preventDefault(),k.stopPropagation(),y(h,i,e.grain))},style:{minHeight:62,display:"flex",flexDirection:"column",gap:2,padding:4,borderRadius:7,border:"1px solid var(--graview-edge)",background:d?"var(--graview-panel)":"transparent",opacity:i.outside?.45:1},children:[(0,K.jsxs)("span",{style:{display:"flex",alignItems:"baseline",gap:4},children:[(0,K.jsx)("span",{style:{fontSize:"0.75rem",fontVariantNumeric:"tabular-nums",color:d?"var(--graview-accent)":"var(--graview-ink-faint)"},children:i.label}),e.grain!=="day"&&C.length>0?(0,K.jsx)("span",{style:{fontSize:"0.75rem",color:"var(--graview-ink-faint)",marginLeft:"auto"},children:C.length}):null]}),R.map(k=>(0,K.jsx)(Ut,{entry:k,cell:i,rowStart:O%g===0,emphasis:o(k.id),flagged:c.has(k.id),hue:p(k)},`${k.id}:${k.from}:${i.from}`)),P.length>0?(0,K.jsxs)("button",{type:"button","data-testid":`calendar-more-${i.from}`,onClick:()=>u(i),title:`Open ${i.label}`,style:{minHeight:24,padding:"1px 5px",fontSize:"0.75rem",borderRadius:5,border:"1px dashed var(--graview-edge)",background:"transparent",color:S>0?"var(--graview-warn)":"var(--graview-ink-muted)",textAlign:"left"},children:["+",P.length," more",S>0?` \xB7 ${S} flagged`:""]}):null]},i.from)})})]})}function gn({days:e,entries:t,today:n,emphasisOf:r,broken:a,hue:o,onMove:c}){let p=e.map(u=>({day:u,here:cn(t,u)})).filter(({here:u})=>u.length>0);return p.length===0?(0,K.jsx)("p",{"data-testid":"calendar-empty",style:{margin:0,fontSize:"0.875rem",color:"var(--graview-ink-muted)"},children:"Nothing is scheduled in the next six weeks."}):(0,K.jsx)("ol",{tabIndex:0,"aria-label":"What is scheduled",style:{margin:0,padding:0,listStyle:"none",display:"grid",alignContent:"start",gap:10,overflow:"auto",minHeight:0},children:p.map(({day:u,here:y})=>(0,K.jsxs)("li",{"data-calendar-day":u,onDragOver:l=>{l.dataTransfer.types.includes("text/graview-node")&&(l.preventDefault(),l.dataTransfer.dropEffect="move")},onDrop:l=>{let m=l.dataTransfer.getData("text/graview-node");m&&(l.preventDefault(),l.stopPropagation(),c(m,u))},style:{display:"grid",gap:4},children:[(0,K.jsxs)("span",{style:{fontSize:"0.75rem",letterSpacing:"0.16em",textTransform:"uppercase",color:u===n?"var(--graview-accent)":"var(--graview-ink-muted)"},children:[Ce(u),u===n?" \xB7 today":""]}),y.map(l=>(0,K.jsx)(Ut,{entry:l,cell:{from:u,to:u,label:u},emphasis:r(l.id),flagged:a.has(l.id),hue:o(l)},`${l.id}:${l.from}:${u}`))]},u))})}function Ut({entry:e,cell:t,emphasis:n,flagged:r,hue:a,rowStart:o=!1}){let c=ae(t.from,e.from)>=0,p=ae(e.to,t.to)>=0,u=!(c&&p),y=e.at!==null&&c&&e.from===t.from?`${Dn(e.at)} ${e.label}`:e.label;return(0,K.jsx)("span",{"data-graview-pick":e.id,"data-calendar-entry":e.id,"data-calendar-repeat":e.repeats?e.from:void 0,draggable:!e.repeats,onDragStart:l=>{l.dataTransfer.setData("text/graview-node",e.id),l.dataTransfer.effectAllowed="move"},"data-graview-emphasis":n,"data-calendar-part":u?c?"opens":p?"closes":"through":void 0,"data-calendar-in":t.from,title:u?`${e.label} \xB7 ${e.from} \u2013 ${e.to}`:`${e.label}${e.at===null?" \xB7 all day":` \xB7 ${Dn(e.at)}`}${e.repeats?" \xB7 repeats":""}`,style:{display:"block",minHeight:24,boxSizing:"border-box",padding:"3px 6px",fontSize:"0.75rem",lineHeight:1.35,borderRadius:u?c?"5px 0 0 5px":p?"0 5px 5px 0":0:5,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",textDecoration:e.done?"line-through":"none",opacity:n==="dimmed"?.35:e.done?.6:1,background:`color-mix(in oklab, hsl(${Math.round(a)} 70% 55%) ${n==="lit"?38:20}%, transparent)`,color:"var(--graview-ink)",...n==="lit"?{outline:"1px solid var(--graview-accent)"}:{},...r?{borderLeft:"3px solid var(--graview-warn)",paddingLeft:4}:{}},children:c||o?e.repeats?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)("span",{"aria-hidden":"true",children:"\u21BB "}),y]}):y:" "})}var q=j(Y(),1);function Kt(e){let t=n=>function(a){let{store:o}=Q(),{view:c}=Ye(),p=n?{...e,range:n}:e,u=c.within?.range??p.range??"month",y=Object.keys(e.bindings),{nodes:l,arranged:m,arrangement:w,bar:s}=Ie(a,{...e.arranging!==void 0?{allow:e.arranging}:{},lensAllows:{sort:!1,group:u==="agenda"},...e.arrangedBy?{arrangedBy:e.arrangedBy}:{},...y[0]?{kind:(a.nodes??[]).find(C=>y.includes(String(C.kind)))?.kind??y[0]}:{}}),g=u==="agenda"&&m.grouped&&w.group?m.groups.map(C=>({label:C.label,ids:new Set(C.nodes.map(R=>R.id))})):void 0,v=new Set((a.nodes??[]).map(C=>String(C.kind))),i=y.filter(C=>!v.has(C)&&o.schema.tryDefinition(C)!==void 0).flatMap(C=>{let R=o.schema.tryDefinition(C);return o.graph.nodesOfKind(C).filter(P=>c.past===!0||Be(R,P))}),O=i.length===0?l:[...l,...a.budget!==void 0?i.slice(0,a.budget):i];return Me(a,o.schema,(0,q.jsx)($r,{schema:o.schema,...a,nodes:O,options:{...p,today:p.today??o.today()??zt()},...s?{bar:s}:{},...g?{groups:g}:{}}))};return{name:"calendar",requiredRoles:[...ln],bindings:e.bindings,options:e,View:t(),at:n=>t(n),ranges:()=>dn(e).map(n=>({range:n,title:Dt(n,e.horizon)})),place:(n,r)=>n.map(a=>Bn(a,e.bindings,r)).filter(a=>a!==null)}}function $r({nodes:e,label:t,fidelity:n,mode:r,options:a,schema:o,selectedIds:c=[],implicated:p=[],flagged:u=[],bar:y,groups:l}){let{view:m,go:w}=Ye(),{store:s,principal:g}=Q(),v=m.within?.at??a.today,i=m.within?.range??a.range??"month",O=a.weekStartsOn??1,C=new Set([...p,...c]),R=x=>C.size===0?"plain":C.has(x)?"lit":"dimmed",P=new Set(u),S=Ht(i,v,{weekStartsOn:O,...a.horizon?{horizon:a.horizon}:{}}),k=n==="glyph"||n==="summary"?{next:a.today}:{from:S.cells[0]?.from??v,to:S.cells[S.cells.length-1]?.to??v},h=(e??[]).flatMap(x=>Bt(x,a.bindings,o,k)),M=a.hueOf??(x=>de(x.kind));if(n==="glyph")return(0,q.jsx)(pe,{label:`${t??"Calendar"} \xB7 ${h.length}`,hue:de("calendar")});if(n==="summary"){let x=cn(h,a.today);return(0,q.jsx)(X,{title:t??"Calendar",meta:`${h.length} dated`,tone:"muted",children:(0,q.jsx)(Ee,{max:6,items:x.length>0?x.map(T=>({id:T.id,label:T.label,hue:M(T)})):h.filter(T=>ae(a.today,T.from)>=0).sort((T,re)=>T.from.localeCompare(re.from)).slice(0,6).map(T=>({id:T.id,label:`${T.from.slice(5)} ${T.label}`,hue:M(T)}))})})}let F=r==="fullscreen",[E,N]=(0,un.useState)(null),D=(x,T,re)=>{let f=s.graph.getNode(x);if(!f)return;let H=ze(a.bindings[f.kind],s.schema.tryDefinition(f.kind));if(!H)return;let z=Wt(s,f.kind,H.start);if(!z){N({text:`Nothing declared writes the ${Sn(s.schema.definitions.find(Z=>Z.kind===f.kind),H.start).toLowerCase()}, so this cannot be moved from here.`,tone:"refused"});return}let G=T.from,b=f[H.start],W=on(b)===null?G:`${G}${String(b).slice(10)}`,ne={name:z.name,args:{[z.arg]:x,[H.start]:W}},oe=s.permits(ne,g);if(!oe.ok){N({text:oe.refusal.message,tone:"refused"});return}try{s.apply(ne,{author:g}),N(re==="day"?null:{text:`Moved to ${Ce(G)} \u2014 a ${re} is coarser than the ${Sn(s.schema.definitions.find(Z=>Z.kind===f.kind),H.start).toLowerCase()} holds, so it takes the first day of the cell. Undo puts it back.`,tone:"rounded"})}catch(Z){N({text:Z instanceof Error?Z.message:String(Z),tone:"refused"})}},B=x=>{let T=i==="years"?De(v,x*12*Math.max(1,a.horizon?.years??1)):i==="year"?De(v,x*12):i==="quarter"?De(v,x*3):i==="month"?De(v,x):i==="week"?he(v,x*7):he(v,x);w(Ke(m,"at",T))},ee=(x,T)=>{let re=Ke(m,"range",x);T!==void 0&&(re=Ke(re,"at",T)),w(re)},ue=(0,un.useRef)(null),ie=Ve(ue),ve=ie!==null&&ie<420,Oe=x=>x==="years"?a.horizon?.title??"years":x.charAt(0).toUpperCase()+x.slice(1);return(0,q.jsx)(X,{title:t??"Calendar",meta:S.title,style:{gap:10,...F?{flex:"1 1 auto",minHeight:0,height:"100%"}:{}},children:(0,q.jsxs)("div",{ref:ue,"data-testid":"calendar","data-calendar-range":i,"data-calendar-at":v,style:{display:"flex",flexDirection:"column",height:"100%",minHeight:0,gap:8},children:[(0,q.jsxs)("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:6},children:[(0,q.jsxs)("nav",{"aria-label":"When",style:{display:"flex",gap:4},children:[(0,q.jsx)(Wn,{label:"Previous",glyph:"\u2039",onPress:()=>B(-1)}),(0,q.jsx)("button",{type:"button","data-testid":"calendar-today",onClick:()=>w(Ke(m,"at",a.today)),style:je,children:"Today"}),(0,q.jsx)(Wn,{label:"Next",glyph:"\u203A",onPress:()=>B(1)})]}),ve?(0,q.jsx)("select",{"aria-label":"Range","data-testid":"calendar-ranges",value:i,onChange:x=>ee(x.target.value),style:{...je,borderRadius:999,borderColor:"var(--graview-edge)",background:void 0,backgroundColor:"transparent",marginLeft:"auto",maxWidth:"50%",paddingRight:24,appearance:"none",WebkitAppearance:"none",backgroundImage:"linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%)",backgroundPosition:"calc(100% - 13px) 55%, calc(100% - 9px) 55%",backgroundSize:"4px 4px, 4px 4px",backgroundRepeat:"no-repeat"},children:dn(a).map(x=>(0,q.jsx)("option",{value:x,children:Oe(x)},x))}):(0,q.jsx)("div",{role:"group","aria-label":"Range","data-testid":"calendar-ranges",style:{display:"flex",flexWrap:"wrap",gap:4,marginLeft:"auto"},children:dn(a).map(x=>(0,q.jsx)("button",{type:"button","aria-pressed":x===i,"data-testid":`calendar-range-${x}`,onClick:()=>ee(x),style:{...je,borderRadius:999,borderColor:"var(--graview-edge)",...x==="years"?{}:{textTransform:"capitalize"},...x===i?{borderColor:"var(--graview-accent)",color:"var(--graview-accent)",background:"var(--graview-panel)"}:{}},children:x==="years"?a.horizon?.title??"years":x},x))})]}),E?(0,q.jsx)("p",{"data-testid":E.tone==="refused"?"calendar-refused":"calendar-rounded",role:"status",style:{margin:0,fontSize:"0.8125rem",color:E.tone==="refused"?"var(--graview-warn)":"var(--graview-ink-muted)"},children:E.text}):null,S.years?(0,q.jsx)("nav",{"aria-label":"Years","data-testid":"calendar-years",style:{display:"flex",flexWrap:"wrap",gap:4},children:S.years.map(x=>(0,q.jsx)("button",{type:"button","data-testid":`calendar-year-${x}`,onClick:()=>ee("year",`${x}-01-01`),style:je,children:x},x))}):null,y,i==="agenda"&&l?(0,q.jsx)("div",{"data-testid":"calendar-groups",style:{display:"grid",gap:10,minHeight:0,overflow:"auto"},children:l.map(x=>(0,q.jsxs)("section",{"data-testid":"calendar-group",style:{display:"grid",gap:4},children:[(0,q.jsxs)("h3",{style:{margin:0,fontSize:"0.8125rem",letterSpacing:"0.08em",textTransform:"uppercase",color:"var(--graview-ink-muted)"},children:[x.label," ",(0,q.jsx)("span",{style:{fontWeight:400},children:x.ids.size})]}),(0,q.jsx)(gn,{days:S.cells.map(T=>T.from),entries:h.filter(T=>x.ids.has(T.id)),today:a.today,emphasisOf:R,broken:P,hue:M,onMove:(T,re)=>D(T,{from:re,to:re,label:re},"day")})]},x.label))}):i==="agenda"?(0,q.jsx)(gn,{days:S.cells.map(x=>x.from),entries:h,today:a.today,emphasisOf:R,broken:P,hue:M,onMove:(x,T)=>D(x,{from:T,to:T,label:T},"day")}):(0,q.jsx)(Ft,{span:S,weekStartsOn:O,entries:h,today:a.today,perCell:a.perCell??qt[S.grain],emphasisOf:R,broken:P,hue:M,onOpen:x=>ee(jt(S.grain),x.from),onMove:D})]})})}var ce=j(Ne(),1);var V=j(Y(),1),Rr=`
|
|
4
|
-
.graview-columns { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-start; }
|
|
5
|
-
.graview-columns-column { flex: 1 1 13rem; min-width: 0; display: flex; flex-direction: column; gap: 8px; padding: 8px; border-radius: 10px; border: 1px solid var(--graview-edge); background: color-mix(in srgb, var(--graview-panel) 60%, transparent); }
|
|
6
|
-
.graview-columns-column[data-droppable="true"] { border-color: var(--graview-accent); }
|
|
7
|
-
.graview-columns-column[data-over="true"] { background: color-mix(in srgb, var(--graview-accent) 10%, transparent); }
|
|
8
|
-
.graview-columns-heading { margin: 0; display: flex; align-items: baseline; justify-content: space-between; gap: 8px; font-size: 0.875rem; font-weight: 600; color: var(--graview-ink); }
|
|
9
|
-
.graview-columns-count { font-weight: 400; color: var(--graview-ink-muted); font-variant-numeric: tabular-nums; }
|
|
10
|
-
.graview-columns-cards { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
|
|
11
|
-
.graview-columns-empty { margin: 0; font-size: 0.8125rem; color: var(--graview-ink-muted); }
|
|
12
|
-
.graview-columns-card[draggable="true"] { cursor: grab; }
|
|
13
|
-
.graview-columns-move { position: relative; z-index: ${ke.raised}; display: flex; justify-content: flex-end; margin-top: 4px; }
|
|
14
|
-
.graview-columns-move[data-open="true"] { z-index: ${ke.over}; }
|
|
15
|
-
.graview-columns-move > button, .graview-columns-menu button, .graview-columns-said button { font: inherit; font-size: 0.8125rem; min-height: 28px; padding: 2px 10px; border-radius: 7px; border: 1px solid var(--graview-edge); background: var(--graview-panel); color: var(--graview-ink); cursor: pointer; }
|
|
16
|
-
.graview-columns-move > button:focus-visible, .graview-columns-menu button:focus-visible, .graview-columns-said button:focus-visible { outline: 2px solid var(--graview-accent); outline-offset: 2px; }
|
|
17
|
-
.graview-columns-menu { position: absolute; right: 0; top: calc(100% + 4px); z-index: ${ke.over}; display: flex; flex-direction: column; gap: 4px; padding: 6px; min-width: 10rem; border-radius: 9px; border: 1px solid var(--graview-edge); background: var(--graview-panel); box-shadow: 0 6px 18px rgb(0 0 0 / 0.18); }
|
|
18
|
-
.graview-columns-menu button { text-align: left; }
|
|
19
|
-
.graview-columns-said { margin: 0 0 8px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 0.8125rem; color: var(--graview-ink); }
|
|
20
|
-
.graview-columns-said[data-tone="refused"] { color: var(--graview-warn); }
|
|
21
|
-
.graview-columns-card[data-graview-choose] { position: relative; }
|
|
22
|
-
.graview-columns-card .graview-choose-at { position: absolute; top: 6px; right: 6px; z-index: ${ke.raised}; display: flex; }
|
|
23
|
-
[data-graview-choosable] { outline: none; }
|
|
24
|
-
@media (pointer: coarse) { [data-graview-choosable]:not([data-graview-choosing]) .graview-columns-card .graview-choose-at { display: none; } }
|
|
25
|
-
`;function Yt(e){function t(n){let{store:r}=Q();st();let a=Object.keys(e.bindings).filter(g=>r.schema.tryDefinition(g)!==void 0),o=n.nodes??[],c=new Set(o.map(g=>String(g.kind))),p=g=>r.graph.nodesOfKind(g).filter(v=>Be(r.schema.tryDefinition(g),v)),u=n.total!==void 0&&n.total>o.length,y=a.map(g=>{let v=e.bindings[g].column,i=xt(r.schema,g,v),O=c.has(g)?o.filter(R=>R.kind===g):p(g).slice(0,n.budget??1/0),C=c.has(g)&&!u?O:p(g);return{kind:g,field:v,columns:i.map(R=>({column:R,cards:O.filter(P=>An(P,v,i)===R.value),count:C.filter(P=>An(P,v,i)===R.value).length})).filter(R=>R.column.value!==null||R.count>0)}}),l=y.reduce((g,v)=>g+v.columns.reduce((i,O)=>i+O.count,0),0),m=n.label??"Board",w=a[0];if(n.fidelity==="glyph")return(0,V.jsx)(pe,{label:`${m} \xB7 ${l}`,hue:de("columns")});if(n.fidelity==="summary")return(0,V.jsx)(X,{title:m,meta:w?We(r.schema,w,l):String(l),tone:"muted",children:(0,V.jsx)("p",{style:{margin:0,fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},"data-testid":"columns-summary",children:y.flatMap(g=>g.columns.map(v=>`${v.column.label} ${v.count}`)).join(" \xB7 ")})});let s=(0,V.jsx)(Ar,{boards:y,title:m});return Me(n,r.schema,n.mode==="fullscreen"?(0,V.jsx)("div",{style:{padding:"14px 16px"},children:s}):(0,V.jsx)(X,{title:m,meta:w?We(r.schema,w,l):void 0,children:s}))}return{name:"columns",requiredRoles:["column"],bindings:e.bindings,View:t}}function Ar({boards:e,title:t}){let{store:n,principal:r}=Q(),a=(0,ce.useRef)(null),[o,c]=(0,ce.useState)(null),[p,u]=(0,ce.useState)(null),[y,l]=(0,ce.useState)(null),[m,w]=(0,ce.useState)(null);(0,ce.useLayoutEffect)(()=>{if(!m)return;a.current?.querySelector(m)?.focus(),w(null)});let s=S=>{let d=n.graph.getNode(S);return d?fe(n.schema.tryDefinition(d.kind),d):S},g=(0,ce.useMemo)(()=>e.flatMap(S=>S.columns.flatMap(d=>d.cards.map(k=>k.id))),[e]),v=kt(g),i=(0,ce.useMemo)(()=>n.permittedMutations(r).some(S=>{let d=S.subject?.kinds;return d!==void 0&&(d==="*"||e.some(k=>d.includes(k.kind)))}),[n,r,e]),O=S=>{v.choose(S),requestAnimationFrame(()=>{((S[0]===void 0?null:a.current?.querySelector(`[data-graview-choose-box="${Vn(S[0])}"]`))??a.current)?.focus({preventScroll:!0})})},C=(S,d)=>St(n,r,S,d.field,d.columns.map(k=>k.column)),R=(S,d,k,h)=>{try{let M=n.apply(d.call,{author:r});c({text:`Moved \u201C${s(S)}\u201D to ${k}.`,tone:"moved",batch:M.batch,id:S}),h==="keyboard"&&w(`[data-columns-move="${Vn(S)}"] > button`)}catch(M){c({text:M instanceof Error?M.message:String(M),tone:"refused"})}},P=()=>{if(o?.batch)try{n.undo(o.batch,{author:r}),c({text:`\u201C${s(o.id??"")}\u201D is back where it was.`,tone:"moved"}),o.id&&w(`[data-columns-move="${Vn(o.id)}"] > button`)}catch(S){c({text:S instanceof Error?S.message:String(S),tone:"refused"})}};return(0,V.jsxs)("div",{"data-testid":"columns-lens",...i?{...v.listProps,tabIndex:-1,role:"group","aria-label":v.chosen.length>0?`${t}, ${v.chosen.length} chosen`:t,"data-graview-choosable":""}:{},ref:S=>{a.current=S,v.list.current=S},children:[(0,V.jsx)("style",{children:Rr}),i?(0,V.jsx)("style",{children:Ct}):null,(0,V.jsxs)("p",{className:"graview-columns-said",role:"status","data-tone":o?.tone,"data-testid":"columns-said",style:o?void 0:{position:"absolute",width:1,height:1,overflow:"hidden",clipPath:"inset(50%)"},children:[o?(0,V.jsx)("span",{children:o.text}):null,o?.batch?(0,V.jsx)("button",{type:"button","data-testid":"columns-undo",onClick:P,children:"Undo"}):null]}),e.map(S=>(0,V.jsx)("section",{"data-columns-kind":S.kind,"aria-label":`${Zn(n.schema,S.kind)} by ${S.field}`,children:(0,V.jsx)("div",{className:"graview-columns",children:S.columns.map(({column:d,cards:k,count:h})=>{let M=d.value??"",F=p!==null&&d.value!==null&&p.to.includes(d.value);return(0,V.jsxs)("section",{className:"graview-columns-column","data-graview-column":M,"data-droppable":F||void 0,"data-over":F&&y===M||void 0,"aria-label":`${t} \xB7 ${d.label}, ${h}`,"data-graview-named-by-lens":"",onDragOver:E=>{F&&(E.preventDefault(),E.dataTransfer.dropEffect="move",l(M))},onDragLeave:()=>l(E=>E===M?null:E),onDrop:E=>{let N=E.dataTransfer.getData("text/graview-node"),D=n.graph.getNode(N);if(l(null),u(null),!D||d.value===null)return;let B=C(D,S).find(ee=>ee.to===d.value);B&&(E.preventDefault(),E.stopPropagation(),R(N,B,d.label,"drag"))},children:[(0,V.jsxs)("h3",{className:"graview-columns-heading",children:[(0,V.jsx)("span",{children:d.label}),(0,V.jsx)("span",{className:"graview-columns-count","data-testid":"columns-count",children:h})]}),k.length===0?(0,V.jsx)("p",{className:"graview-columns-empty",children:"Nothing here."}):(0,V.jsx)("ul",{className:"graview-columns-cards",children:(0,V.jsx)($t.Provider,{value:d.value===null?null:{field:S.field,values:[d.value,d.label]},children:k.map(E=>{let N=C(E,S);return(0,V.jsx)(Er,{card:E,moves:N,...i?{choosing:v}:{},labelOf:D=>S.columns.find(B=>B.column.value===D)?.column.label??D,onMove:(D,B)=>R(E.id,D,B,"keyboard"),onDrag:D=>u(D?{id:E.id,to:N.map(B=>B.to)}:null)},E.id)})})})]},M)})})},S.kind)),i?(0,V.jsx)(Ot,{store:n,chosen:v.chosen,principal:r,anchor:()=>a.current?.closest('[data-testid="kind-stop"], [data-embed-content]')??null,of:g.length,onChooseAll:()=>v.choose(g),onClear:v.clear,onActed:O}):null]})}var Vn=e=>typeof globalThis.CSS?.escape=="function"?globalThis.CSS.escape(e):e.replace(/["\\]/g,"\\$&");function Er({card:e,moves:t,labelOf:n,onMove:r,onDrag:a,choosing:o}){let{store:c,views:p}=Q(),[u,y]=(0,ce.useState)(!1),l=(0,ce.useRef)(null),m=(0,ce.useRef)(null),w=fe(c.schema.tryDefinition(e.kind),e),s=p.lookup(e.kind,{cardinality:"one",fidelity:"summary"});(0,ce.useLayoutEffect)(()=>{u&&l.current?.querySelector("button")?.focus()},[u]);let g=()=>{y(!1),m.current?.focus()},v=i=>{let O=[...l.current?.querySelectorAll("button")??[]],C=O.indexOf(document.activeElement);i.key==="Escape"?(i.preventDefault(),i.stopPropagation(),g()):(i.key==="ArrowDown"||i.key==="ArrowUp")&&(i.preventDefault(),i.stopPropagation(),O[(C+(i.key==="ArrowDown"?1:O.length-1))%O.length]?.focus())};return(0,V.jsxs)("li",{className:"graview-spec-item graview-columns-card","data-graview-listed":e.id,"data-as":"card",...o?{"data-graview-choose":e.id}:{},draggable:t.length>0||void 0,onDragStart:i=>{t.length!==0&&(i.dataTransfer.setData("text/graview-node",e.id),i.dataTransfer.effectAllowed="move",a(!0))},onDragEnd:()=>a(!1),children:[s?(0,V.jsx)(ot,{mode:"scene",children:(0,V.jsx)(s,{node:e,cardinality:"one",fidelity:"summary",mode:"scene",selected:!1})}):(0,V.jsx)("span",{className:"graview-spec-item-name",children:w}),(0,V.jsx)(Rt,{node:e,label:w}),o?(0,V.jsx)("span",{className:"graview-choose-at",children:(0,V.jsx)("input",{...o.boxProps(e.id,w),onPointerEnter:En,onFocus:En})}):null,t.length>0?(0,V.jsxs)("div",{className:"graview-columns-move","data-columns-move":e.id,"data-open":u||void 0,onBlur:i=>{i.currentTarget.contains(i.relatedTarget)||y(!1)},children:[(0,V.jsx)("button",{ref:m,type:"button","aria-haspopup":"menu","aria-expanded":u,"aria-label":`Move \u201C${w}\u201D to another column`,"data-testid":"columns-move",onClick:()=>y(i=>!i),children:"Move\u2026"}),u?(0,V.jsx)("div",{ref:l,role:"menu","aria-label":`Move \u201C${w}\u201D to`,className:"graview-columns-menu",onKeyDown:v,onMouseDown:i=>i.preventDefault(),children:t.map(i=>(0,V.jsx)("button",{type:"button",role:"menuitem","data-columns-to":i.to,title:i.title,onClick:()=>{y(!1),r(i,n(i.to))},children:n(i.to)},i.to))}):null]}):null]})}var we=j(Ne(),1);var I=j(Y(),1),Mr=["rows","columns","link"],Je=class extends Error{constructor(n,r){super(`${n}
|
|
26
|
-
${r}`);this.hint=r;this.name="CoverageBindingError"}},In=(e,t)=>t&&e[t]!==void 0?String(e[t]):"",Lr=40,Pr=24;function Tr(e,t={}){let n=t.rows??Lr,r=t.columns??Pr;if(e.rows.length<=n&&e.columns.length<=r)return e;let a=new Map;for(let l of e.cells)a.set(l.rowId,(a.get(l.rowId)??0)+1),a.set(`col:${l.columnId}`,(a.get(`col:${l.columnId}`)??0)+1);let o=(l,m,w)=>{if(l.length<=m)return l;let s=new Set(l.map((g,v)=>({item:g,index:v,count:a.get(w(g))??0})).sort((g,v)=>v.count-g.count||g.index-v.index).slice(0,m).map(g=>g.item.id));return l.filter(g=>s.has(g.id))},c=o(e.rows,n,l=>l.id),p=o(e.columns,r,l=>`col:${l.id}`),u=new Set(c.map(l=>l.id)),y=new Set(p.map(l=>l.id));return{...e,rows:c,columns:p,cells:e.cells.filter(l=>u.has(l.rowId)&&y.has(l.columnId)),of:{rows:e.rows.length,columns:e.columns.length}}}function er(e,t,n,r){let a=d=>d,o=d=>r?fe(r.tryDefinition(d.kind),d):String(a(d).label??d.id),c=r?[n.rows,n.columns].filter(d=>r.tryDefinition(d)===void 0):[];if(c.length>0)throw new Je(`No kind is declared for ${c.map(d=>`"${d}"`).join(" or ")}.`,'Check the lens bindings: { rows: "<kind>", columns: "<kind>", link: "<edge kind>" }');if(r&&typeof n.link!="string"){let d=Cn(r,n.columns,n.link.path);if(!d.ok||!d.reached.has(n.rows)){let k=Cn(r,n.columns,[...n.link.path].reverse());throw new Je(k.ok&&k.reached.has(n.rows)?`The path runs from the ${n.rows} to the ${n.columns}; it is walked from the columns.`:`The path [${n.link.path.join(", ")}] cannot get from a ${n.columns} to a ${n.rows}.`,`Name it column end first: link: { path: [${[...n.link.path].reverse().map(h=>JSON.stringify(h)).join(", ")}] }`)}}let p=e.filter(d=>d.kind===n.rows),u=e.filter(d=>d.kind===n.columns);if(!r&&p.length===0&&u.length===0)throw new Je(`Nothing to lay out: no "${n.rows}" and no "${n.columns}" nodes.`,'Check the lens bindings: { rows: "<kind>", columns: "<kind>", link: "<edge kind>" }');let y=n.groupOrder??[],l=d=>{let k=y.indexOf(d);return k===-1?y.length:k},m=n.badge?t.filter(d=>d.kind===n.badge.edge):[],w=new Set(p.map(d=>d.id)),s=new Set(u.map(d=>d.id)),g=[];if(typeof n.link=="string"){let d=n.link,k=t.filter(N=>N.kind===d),h=N=>r?.tryDefinition?.(N)?.edges?.[d]?.to,M=(h(n.columns)??[]).some(N=>N===n.rows||N==="*"),F=(h(n.rows)??[]).some(N=>N===n.columns||N==="*"),E=M||!F;for(let N of k){let D=E?N.to:N.from,B=E?N.from:N.to;w.has(D)&&s.has(B)&&g.push({rowId:D,columnId:B})}}else{let d=new Map;for(let h of new Set(n.link.path))d.set(h,new Map);for(let h of t){let M=d.get(h.kind);if(!M)continue;let F=M.get(h.from);F?F.push(h.to):M.set(h.from,[h.to]);let E=M.get(h.to);E?E.push(h.from):M.set(h.to,[h.from])}let k=new Set;for(let h of u){let M=[{id:h.id,via:[]}];for(let F of n.link.path){let E=[],N=new Set,D=d.get(F);for(let B of M)for(let ee of D.get(B.id)??[])N.has(`${B.id}|${ee}`)||(N.add(`${B.id}|${ee}`),E.push({id:ee,via:[...B.via,B.id]}));M=E}for(let F of M){if(!w.has(F.id))continue;let E=`${F.id}|${h.id}`;k.has(E)||(k.add(E),g.push({rowId:F.id,columnId:h.id,via:F.via.slice(1)}))}}}let v=new Set(n.requiredGroups??[]),i=n.requiredVia?new Set(t.filter(d=>d.kind===n.requiredVia.edge).map(d=>d.to)):null,O=new Set(g.map(d=>d.rowId)),C=new Set(g.map(d=>d.columnId)),R=new Set(m.map(d=>d.to)),P=p.map(d=>{let k=a(d),h=In(k,n.rowGroup);return{id:d.id,ref:In(k,n.rowRef),label:String(k.label??o(d)),group:h,required:i?i.has(d.id):v.size===0||v.has(h),covered:O.has(d.id),badged:R.has(d.id)}}).sort((d,k)=>l(d.group)-l(k.group)||(d.ref<k.ref?-1:d.ref>k.ref?1:0)),S=u.map(d=>({id:d.id,label:o(d),used:C.has(d.id),group:In(a(d),n.columnGroup)})).sort((d,k)=>d.group<k.group?-1:d.group>k.group?1:d.id<k.id?-1:d.id>k.id?1:0).map(({group:d,...k})=>k);return{rows:P,columns:S,cells:g,gaps:P.filter(d=>d.required&&!d.covered).map(d=>d.id),unasked:S.filter(d=>!d.used).map(d=>d.id)}}var Qt=316,Hn=58,Gn=176,Nr=Math.sin(Hn*Math.PI/180),Dr=Math.cos(Hn*Math.PI/180),zr=e=>{let t=e.reduce((r,a)=>Math.max(r,a.length),0),n=Math.min(Gn,Math.max(46,t*5.4+12));return Math.ceil(n*Nr)+8},Jt=Math.ceil(Gn*Dr),Xt=(e,t)=>nn(e,t).toLowerCase(),nr=(e,t)=>tn(e.tryDefinition(t),t);function Br(e,t,n){return t.rows===t.columns?`${e} with none across`:`${We(n,t.rows,e)} with no ${nr(n,t.columns)}`}function Wr(e,t,n){return t.rows===t.columns?`${e} with none down`:`${We(n,t.columns,e)} on no ${nr(n,t.rows)}`}function Vr({nodes:e,label:t,fidelity:n,mode:r,options:a,schema:o,implicated:c=[],flagged:p=[],budget:u}){let{store:y}=Q(),l=qr(),m=(0,we.useRef)(null),w=Ve(m),[s,g]=(0,we.useState)(null),v=er(Qe(y.graph,y.schema,e).filter(h=>h.kind===a.rows||h.kind===a.columns),y.graph.allEdges(),a,o),i=n==="full"?Tr(v,u!==void 0?{rows:u,columns:u}:{}):v;if(n==="glyph")return(0,I.jsx)(pe,{label:`${t??"Coverage"} \xB7 ${i.gaps.length===0?"complete":`${i.gaps.length} missing`}`,hue:de("coverage")});if(n==="summary"){let h=i.rows.filter(M=>i.gaps.includes(M.id));return(0,I.jsxs)(X,{title:t??"Coverage",meta:`${i.rows.length-i.gaps.length}/${i.rows.length}`,tone:i.gaps.length>0?"warning":"muted",fit:!0,children:[(0,I.jsx)(_r,{grid:i}),h.length>0?(0,I.jsx)(Ee,{pick:!0,max:4,items:h.map(M=>({id:M.id,label:M.ref||M.label}))}):null]})}let O=new Set(c),C=new Set(p),R=s!==null&&s.every(h=>O.has(h))?s:null,P=r==="fullscreen",S=zr(i.columns.map(h=>h.label)),d=w===null?Qt:Math.max(96,Math.min(Qt,Math.round(w*.36))),k=w!==null&&(w<420||d+i.columns.length*28+Jt>w);return(0,I.jsx)(X,{title:t??"Coverage",...P?{style:{flex:"1 1 auto",minHeight:0,height:"100%"}}:{},meta:i.rows.length===0||i.columns.length===0?void 0:i.gaps.length===0&&i.unasked.length===0?"complete":[i.gaps.length>0?Br(i.gaps.length,a,y.schema):"",i.unasked.length>0?Wr(i.unasked.length,a,y.schema):""].filter(Boolean).join(" \xB7 "),selected:!1,fit:!0,children:(0,I.jsxs)("div",{ref:m,"data-coverage-shape":k?"stacked":"matrix",onClick:h=>g(Zt(h.target)),onKeyDown:h=>{(h.key==="Enter"||h.key===" ")&&g(Zt(h.target))},style:{position:"relative",display:"flex",flexDirection:"column",flex:"1 1 auto",minHeight:0,paddingRight:k?0:Jt},children:[k?null:(0,I.jsxs)("div",{style:{display:"flex",alignItems:"flex-end",flex:"0 0 auto",position:"sticky",top:0,zIndex:ke.over,background:"var(--graview-panel)",paddingTop:6},children:[(0,I.jsx)("div",{ref:l.corner,style:{width:d,flex:"0 0 auto",alignSelf:"stretch",position:"sticky",left:0,zIndex:ke.raised,background:"var(--graview-panel)"}}),(0,I.jsx)("div",{ref:l.heads,style:{display:"flex",flex:1,minWidth:0,height:S},children:i.columns.map(h=>(0,I.jsx)("div",{"data-graview-pick":h.id,"data-graview-emphasis":O.size===0?"plain":O.has(h.id)?"lit":"dimmed",title:h.label,"data-graview-column":h.id,style:{flex:1,minWidth:28,boxSizing:"border-box",borderLeft:"1px solid transparent",pointerEvents:"none",position:"relative",display:"flex",alignItems:"flex-end",justifyContent:"center"},children:(0,I.jsxs)("span",{style:{position:"absolute",bottom:3,padding:"3px 0",pointerEvents:"auto",cursor:"pointer",left:"50%",visibility:l.hidden.has(h.id)?"hidden":"visible",transformOrigin:"left bottom",transform:`rotate(-${Hn}deg)`,whiteSpace:"nowrap",maxWidth:Gn,overflow:"hidden",textOverflow:"ellipsis",fontSize:"0.75rem",letterSpacing:"0.005em",color:h.used?O.size>0&&!O.has(h.id)?"var(--graview-ink-faint)":"var(--graview-ink)":"var(--graview-warn)"},children:[h.used?"":"\u26A0 ",h.label]})},h.id))})]}),i.of?(0,I.jsxs)("p",{"data-testid":"coverage-more",style:{margin:"4px 0 6px",fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:[[i.of.rows>i.rows.length?`the ${i.rows.length} most connected of ${i.of.rows} ${Xt(y.schema,a.rows)}`:null,i.of.columns>i.columns.length?`${i.columns.length} of ${i.of.columns} ${Xt(y.schema,a.columns)} across`:null].filter(Boolean).join(" \xB7 ").replace(/^./,h=>h.toUpperCase())," ","\u2014 what is missing is still counted over all of them."]}):null,(0,I.jsx)("div",{children:i.rows.map((h,M)=>{let F=i.rows[M-1],E=F===void 0||F.group!==h.group,N=h.required&&!h.covered,D=O.size>0&&!O.has(h.id);return(0,I.jsxs)("div",{children:[E&&h.group?(0,I.jsx)("div",{style:{fontSize:"0.6875rem",letterSpacing:"0.16em",textTransform:"uppercase",color:"var(--graview-ink-faint)",padding:"9px 0 3px"},children:(0,I.jsx)("span",{style:{position:"sticky",left:0,display:"inline-block",paddingRight:8,background:"var(--graview-panel)"},children:h.group})}):null,(0,I.jsxs)("div",{style:{display:"flex",flexDirection:k?"column":"row",alignItems:"stretch",borderTop:"1px solid var(--graview-edge)",opacity:D?.72:1},children:[(0,I.jsxs)("div",{"data-graview-pick":h.id,"data-graview-emphasis":O.size===0?"plain":D?"dimmed":"lit",title:h.label,style:{width:k?"auto":d,flex:"0 0 auto",position:k?"static":"sticky",left:0,zIndex:ke.raised,background:"var(--graview-panel)",display:"flex",alignItems:"center",gap:7,padding:"6px 10px 6px 0",boxSizing:"border-box",fontSize:"0.8125rem",minWidth:0,color:N||C.has(h.id)?"var(--graview-warn)":"var(--graview-ink)"},children:[h.ref?(0,I.jsx)("span",{style:{flex:"0 0 auto",fontVariantNumeric:"tabular-nums",color:"var(--graview-ink-faint)"},children:h.ref}):null,(0,I.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:h.label}),a.badge?(0,I.jsx)("span",{title:h.badged?a.badge.title:a.badge.missingTitle,style:{marginLeft:"auto",flex:"0 0 auto",fontSize:"0.75rem",color:h.badged?"var(--graview-ink-faint)":"var(--graview-warn)"},children:h.badged?a.badge.symbol:"\u25CB"}):null]}),(0,I.jsx)("div",{style:{display:"flex",flex:1,minWidth:0,...k?{flexWrap:"wrap",gap:6,padding:"0 0 8px"}:{}},children:i.columns.map(B=>{let ee=i.cells.find(ie=>ie.rowId===h.id&&ie.columnId===B.id),ue=ee!==void 0;return(0,I.jsxs)("div",{"data-graview-mark":"",...ue?{"data-graview-pick":B.id,"data-graview-emphasis":O.size===0?"plain":O.has(B.id)&&O.has(h.id)?"lit":"dimmed","data-graview-joins":JSON.stringify(Ir(ee))}:{},title:ue?`${B.label} answers ${h.ref||h.label}`:`${B.label} does not answer ${h.ref||h.label}`,style:k?{flex:"0 0 auto",minHeight:24,boxSizing:"border-box",display:"inline-flex",alignItems:"center",gap:6,padding:"2px 9px 2px 7px",borderRadius:6,border:"1px solid var(--graview-edge)",fontSize:"0.75rem",color:ue?"var(--graview-ink)":"var(--graview-ink-faint)"}:{flex:1,minWidth:28,boxSizing:"border-box",display:"flex",alignItems:"center",justifyContent:"center",borderLeft:"1px solid var(--graview-edge)"},children:[(0,I.jsx)("span",{style:jr(ue,N,O.has(B.id)&&O.has(h.id),O.size>0)}),k?(0,I.jsx)("span",{children:B.label}):null]},B.id)})})]})]},h.id)})}),R?(0,I.jsx)(Gr,{box:m,joins:R,shape:`${k?"stacked":"matrix"} ${w??""}`}):null]})})}var Ir=e=>[e.rowId,e.columnId,...e.via??[]];function Zt(e){let t=e?.closest?.("[data-graview-joins]")?.getAttribute("data-graview-joins");if(!t)return null;try{let n=JSON.parse(t);return Array.isArray(n)&&n.every(r=>typeof r=="string")?n:null}catch{return null}}var mn=(e,t,n)=>Math.min(n,Math.max(t,e));function Hr(e){let t=e.getBoundingClientRect(),n=typeof document.createRange=="function"?document.createRange():null;n?.selectNodeContents(e);let r=typeof n?.getBoundingClientRect=="function"?n.getBoundingClientRect():null;return r&&r.width>0&&r.height>0?r:t}function Gr({box:e,joins:t,shape:n}){let[r,a]=(0,we.useState)([]),o=JSON.stringify(t);return(0,we.useLayoutEffect)(()=>{let c=e.current;if(!c||typeof window>"u")return;let p=()=>{let l=c.getBoundingClientRect(),m=c.offsetWidth>0&&l.width>0?l.width/c.offsetWidth:1,w=[...c.querySelectorAll("[data-graview-joins]")].find(v=>v.getAttribute("data-graview-joins")===o);if(!w){a([]);return}let s=w.getBoundingClientRect(),g=[];for(let v of JSON.parse(o)){let i=[...c.querySelectorAll("[data-graview-pick]")].find(d=>d.getAttribute("data-graview-pick")===v&&!d.closest("[data-graview-mark]"));if(!i)continue;let O=Hr(i),C=mn(s.left+s.width/2,O.left,O.right),R=mn(s.top+s.height/2,O.top,O.bottom),P=mn(C,s.left,s.right),S=mn(R,s.top,s.bottom);g.push({id:v,x1:(P-l.left)/m,y1:(S-l.top)/m,x2:(C-l.left)/m,y2:(R-l.top)/m})}a(g)};p();let u=0,y=()=>{u===0&&(u=requestAnimationFrame(()=>{u=0,p()}))};return document.addEventListener("scroll",y,{capture:!0,passive:!0}),window.addEventListener("resize",y,{passive:!0}),()=>{document.removeEventListener("scroll",y,{capture:!0}),window.removeEventListener("resize",y),u!==0&&cancelAnimationFrame(u)}},[e,o,n]),(0,I.jsx)("svg",{"aria-hidden":"true","data-coverage-join":o,style:{position:"absolute",left:0,top:0,width:"100%",height:"100%",overflow:"visible",pointerEvents:"none",zIndex:ke.over},children:r.map(c=>(0,I.jsxs)("g",{"data-coverage-join-to":c.id,children:[(0,I.jsx)("line",{x1:c.x1,y1:c.y1,x2:c.x2,y2:c.y2,stroke:"var(--graview-accent)",strokeWidth:1.6,strokeLinecap:"round"}),(0,I.jsx)("circle",{cx:c.x2,cy:c.y2,r:2.6,fill:"var(--graview-accent)"})]},c.id))})}function jr(e,t,n,r){return e?{width:13,height:13,borderRadius:4,background:n||!r?"var(--graview-accent)":"var(--graview-accent-dim)",boxShadow:n&&r?"0 0 12px -2px var(--graview-accent)":void 0}:{width:5,height:5,borderRadius:1,background:t?"var(--graview-warn)":"var(--graview-edge)",opacity:t?.5:1}}function _r({grid:e}){let t=e.rows.filter(a=>a.required),n=t.filter(a=>a.covered).length,r=t.length===0?1:n/t.length;return(0,I.jsx)("div",{role:"img","aria-label":`${n} of ${t.length} covered`,style:{height:6,borderRadius:999,overflow:"hidden",background:"var(--graview-edge)"},children:(0,I.jsx)("div",{style:{width:`${Math.round(r*100)}%`,height:"100%",background:r===1?"var(--graview-accent)":"var(--graview-warn)"}})})}function tr(e){function t(n){let{store:r}=Q();return(0,I.jsx)(Vr,{schema:r.schema,...n,options:e})}return{name:"coverage",requiredRoles:[...Mr],options:e,View:t,build(n,r,a){return er(n,r,e,a)}}}function qr(){let e=(0,we.useRef)(null),t=(0,we.useRef)(null),[n,r]=(0,we.useState)(new Set);return(0,we.useEffect)(()=>{let a=t.current;if(!a||typeof window>"u")return;let o=a.parentElement;for(;o&&!/(auto|scroll)/.test(getComputedStyle(o).overflowX);)o=o.parentElement;if(!o)return;let c=0,p=()=>{c=0;let y=e.current?.getBoundingClientRect().right??0,l=new Set;for(let m of a.querySelectorAll("[data-graview-column]")){let w=m.getBoundingClientRect();w.left+w.width/2<y&&l.add(m.dataset.graviewColumn)}r(m=>m.size===l.size&&[...l].every(w=>m.has(w))?m:l)},u=()=>{c===0&&(c=requestAnimationFrame(p))};return p(),o.addEventListener("scroll",u,{passive:!0}),()=>{o.removeEventListener("scroll",u),c!==0&&cancelAnimationFrame(c)}},[]),{corner:e,heads:t,hidden:n}}var ar=["regions","outline"],_e=class extends Error{constructor(n,r){super(`${n}
|
|
27
|
-
${r}`);this.hint=r;this.name="PlanBindingError"}},pn='Check the lens bindings: { regions: "<kind>", outline: "<field>", markers?: "<kind>", at?: "<field>", within?: "<edge>" }',rr=e=>typeof e=="object"&&e!==null&&typeof e.x=="number"&&typeof e.y=="number";function fn(e,t,n,r){let a=i=>i,o=i=>r?fe(r.tryDefinition(i.kind),i):String(a(i).label??i.id);if(r&&r.tryDefinition(n.regions)===void 0)throw new _e(`No kind is declared for "${n.regions}".`,pn);if(n.markers&&r&&r.tryDefinition(n.markers)===void 0)throw new _e(`No kind is declared for "${n.markers}".`,pn);let c=e.filter(i=>i.kind===n.regions);if(!r&&c.length===0)throw new _e(`Nothing to draw: no "${n.regions}" nodes.`,pn);let u=r?.tryDefinition(n.regions)?.fields?.shape;if(u!==void 0&&!(n.outline in u))throw new _e(`"${n.regions}" has no field called "${n.outline}".`,pn);let y=(()=>{let i=new Map;if(n.nests)for(let O of t)O.kind===n.nests&&i.set(O.from,O.to);return O=>{let C=0,R=i.get(O),P=new Set([O]);for(;R!==void 0&&!P.has(R)&&C<c.length;)P.add(R),C+=1,R=i.get(R);return C}})(),l=n.markers?e.filter(i=>i.kind===n.markers):[],m=new Map;if(n.within)for(let i of t)i.kind===n.within&&m.set(i.from,i.to);let w=[],s=new Map;for(let i of l){let O=n.at===void 0?void 0:a(i)[n.at],C=m.get(i.id);if(!rr(O)||C===void 0){w.push({id:i.id,label:o(i)});continue}let R=n.markerKind===void 0?void 0:a(i)[n.markerKind],P=s.get(C)??[];P.push({id:i.id,label:o(i),at:O,...typeof R=="string"?{what:R}:{}}),s.set(C,P)}let g=[],v=[];for(let i of c){let O=a(i)[n.outline];if(!Array.isArray(O)||O.length<3||!O.every(rr)){g.push({id:i.id,label:o(i)});continue}let C=n.regionKind===void 0?void 0:a(i)[n.regionKind];v.push({id:i.id,label:o(i),outline:O,center:wt(O),depth:y(i.id),markers:s.get(i.id)??[],...typeof C=="string"?{what:C}:{}})}return v.sort((i,O)=>i.depth-O.depth),{regions:v,undrawn:g,strays:w}}var Pe=j(Ne(),1);var A=j(Y(),1);function ir({map:e,options:t,implicated:n,flagged:r}){return(0,A.jsxs)("ul",{style:{margin:0,padding:0,listStyle:"none",display:"grid",gap:".25rem"},children:[e.regions.map(a=>{let o=hn(a.id,n,r);return(0,A.jsxs)("li",{"data-graview-pick":a.id,...o?{"data-graview-emphasis":o}:{},style:{display:"flex",flexWrap:"wrap",gap:".5rem",justifyContent:"space-between",minWidth:0,padding:".25rem .4rem",borderRadius:".35rem",background:o==="flagged"?_n(a.what,o,t.hues):void 0},children:[(0,A.jsx)("span",{style:{minWidth:0,overflowWrap:"anywhere"},children:a.label}),(0,A.jsxs)("span",{style:{opacity:.7,whiteSpace:"nowrap"},children:[a.what?`${a.what} \xB7 `:"",a.markers.length]})]},a.id)}),e.undrawn.map(a=>(0,A.jsxs)("li",{"data-graview-pick":a.id,style:{display:"flex",gap:".5rem",opacity:.7,padding:".25rem .4rem"},children:[(0,A.jsx)("span",{style:{minWidth:0,overflowWrap:"anywhere"},children:a.label}),(0,A.jsx)("span",{style:{whiteSpace:"nowrap"},children:t.undrawnLabel??"not drawn"})]},a.id))]})}var jn=1e3,or=.022,Xe={minHeight:"1.9rem",padding:".25rem .65rem",borderRadius:".35rem",border:"1px solid var(--graview-edge)",background:"var(--graview-panel)",color:"var(--graview-ink)",font:"inherit",fontSize:"0.9375rem",cursor:"pointer"},hn=(e,t,n)=>{if(n?.includes(e))return"flagged";if(t?.includes(e))return"implicated"},yn=(e,t)=>(e===void 0?void 0:t?.[e])??de(e??"region"),_n=(e,t,n)=>t==="flagged"?"color-mix(in oklab, var(--graview-warn) 26%, var(--graview-panel))":`color-mix(in oklab, hsl(${yn(e,n)} 52% 48%) 24%, var(--graview-panel))`,sr=(e,t,n)=>t==="flagged"?"var(--graview-warn)":`color-mix(in oklab, hsl(${yn(e,n)} 48% 42%) 78%, var(--graview-ink))`;function Fr(e){let t=e.currentTarget.getBoundingClientRect(),n=r=>Math.round(Math.max(0,Math.min(1,r))*1e3)/1e3;return{x:n(t.width===0?0:(e.clientX-t.left)/t.width),y:n(t.height===0?0:(e.clientY-t.top)/t.height)}}function lr({schema:e,options:t,nodes:n,label:r,fidelity:a,selected:o,implicated:c,flagged:p}){let{store:u}=Q(),y=u.graph.allEdges(),l=u.graph.allNodes(),m=n===void 0?void 0:new Set(n.map(b=>b.id)),w=m===void 0?l:l.filter(b=>b.kind!==t.regions||m.has(b.id)),s=fn(w,y,t,e),g=s.regions.length,v=s.regions.reduce((b,$)=>b+$.markers.length,0);if(a==="glyph")return(0,A.jsx)(pe,{label:`${r??"Ground"} \xB7 ${g}`,...s.undrawn.length>0?{meta:`+${s.undrawn.length} undrawn`}:{},selected:o});if(a==="summary")return(0,A.jsx)(X,{title:r??"The plan",subtitle:`${g} drawn \xB7 ${v} standing in them`,children:(0,A.jsx)(ir,{map:s,options:t,...c?{implicated:c}:{},...p?{flagged:p}:{}})});let i=(0,Pe.useMemo)(()=>{let b=1/0,$=1/0,W=-1/0,ne=-1/0,oe=se=>{se.x<b&&(b=se.x),se.x>W&&(W=se.x),se.y<$&&($=se.y),se.y>ne&&(ne=se.y)};for(let se of s.regions){for(let ye of se.outline)oe(ye);for(let ye of se.markers)oe(ye.at)}if(!Number.isFinite(b)||W-b<=0||ne-$<=0)return{x0:0,y0:0,x1:1,y1:1};let Z=Math.max(W-b,ne-$)*.04;return{x0:b-Z,y0:$-Z,x1:W+Z,y1:ne+Z}},[s.regions]),O=(i.x1-i.x0)/(i.y1-i.y0),C=t.aspect??Math.min(3.2,Math.max(.55,O)),R=Math.round(jn/(i.x1-i.x0)),P=Math.round(R*(i.x1-i.x0)),S=Math.round(P/C),d={x:i.x0*R,y:i.y0*R-(S-R*(i.y1-i.y0))/2,w:P,h:S},k=R,h=d.w,M=(c?.length??0)>0||(p?.length??0)>0,F=(0,Pe.useRef)(null),{touchable:E,legible:N}=ct(F,{units:d.w,target:h*or*2}),D=On("--graview-font-display","serif"),B=On("--graview-font-body","sans-serif"),{named:ee,placed:ue,tagged:ie}=(0,Pe.useMemo)(()=>{let b=[],$=h*.012,W=jn*.004,ne=(le,U)=>!b.some(me=>me!==U&&bt({x0:le.x0-W,y0:le.y0-W,x1:le.x1+W,y1:le.y1+W},me)),oe=[...s.regions].sort((le,U)=>Rn(U.outline)-Rn(le.outline)),Z=new Map,se=new Map;for(let le of oe){let U=yt(le.outline),me=Math.max(0,(U.bottom-U.top)*k*.55),$e=null;for(let Se of[.12,.26,.42,.6,.78]){let be=U.top+Se*(U.bottom-U.top),Re=$n(le.outline,be),wn=Math.max(0,(Re.x1-Re.x0)*R-$*2),ge=vt(le.label,{room:wn,height:me,size:h*.023,floor:h*.015,measure:D});if(ge===null)continue;let Te=Math.max(...ge.lines.map(wr=>D(wr,ge.fontSize))),Ae=ge.lines.length*ge.fontSize*1.15,Un=U.top*k+$+Ae/2,Kn=U.bottom*k-$-Ae/2,en=Kn<Un?(U.top+U.bottom)*k/2:Math.min(Math.max(be*k,Un),Kn),vn=$n(le.outline,en/k),bn=vn.x0*R+$;if(Te>(vn.x1-vn.x0)*R-$*2)continue;let Yn={x0:bn,y0:en-Ae/2,x1:bn+Te,y1:en+Ae/2};if(ne(Yn)){b.push(Yn),$e={fitted:ge,x:bn,y:en};break}}Z.set(le.id,$e?.fitted??null),$e!==null&&se.set(le.id,{x:$e.x,y:$e.y})}let ye=h*.018,Fe=new Map,_=h*.011+h*.004,Fn=new Map;for(let le of s.regions)for(let U of le.markers){let me={x0:U.at.x*R-_,y0:U.at.y*k-_,x1:U.at.x*R+_,y1:U.at.y*k+_};Fn.set(U.id,me),b.push(me)}for(let le of E?s.regions:[])for(let U of le.markers){let me=h*.018,$e=B(U.label,ye),Se=U.at.x*R,be=U.at.y*k,Re=ye*1.15,wn=[{x:Se+me,y:be,anchor:"start"},{x:Se-me,y:be,anchor:"end"},{x:Se+me*.7,y:be-Re,anchor:"start"},{x:Se-me*.7,y:be-Re,anchor:"end"},{x:Se+me*.7,y:be+Re,anchor:"start"},{x:Se-me*.7,y:be+Re,anchor:"end"},{x:Se,y:be-Re*1.1,anchor:"start"},{x:Se,y:be+Re*1.1,anchor:"start"}];for(let ge of wn){let Te=ge.anchor==="start"?ge.x:ge.x-$e,Ae={x0:Te,y0:ge.y-ye*.62,x1:Te+$e,y1:ge.y+ye*.62};if(!(Te<d.x+4||Te+$e>d.x+d.w-4)&&!(Ae.y0<d.y+2||Ae.y1>d.y+d.h-2)&&ne(Ae,Fn.get(U.id))){b.push(Ae),Fe.set(U.id,{at:{x:ge.x,y:ge.y},anchor:ge.anchor,size:ye});break}}}return{named:Z,placed:se,tagged:Fe}},[s.regions,jn,k,E,D,B]),ve=(0,Pe.useMemo)(()=>{let b=[];for(let $ of s.regions)(ee.get($.id)?.whole??!1)===!1&&b.push({id:$.id,label:$.label,what:$.what,round:!1});for(let $ of s.regions)for(let W of $.markers)(!E||!ie.has(W.id))&&b.push({id:W.id,label:W.label,what:W.what,round:!0});return b},[s.regions,ee,ie,E]),{principal:Oe}=Q(),[x,T]=(0,Pe.useState)(null),re=t.draw!==void 0,f=t.place!==void 0,H=b=>{if(x===null)return;b.stopPropagation();let $=Fr(b);if(x.kind==="marker"){u.apply({name:t.place.act,args:{[t.place.id]:x.id,[t.place.at]:$}},{author:Oe,intent:`Placed ${x.label} on the map`}),T(null);return}T({...x,corners:[...x.corners,$]})},z=()=>{x===null||x.kind!=="region"||x.corners.length<3||(u.apply({name:t.draw.act,args:{[t.draw.id]:x.id,[t.draw.outline]:x.corners}},{author:Oe,intent:`Drew ${x.label} on the map \u2014 ${x.corners.length} corners`}),T(null))},G=x===null?s.regions.length===0?"Nothing drawn yet. Choose an area below, then click its corners here.":null:x.kind==="marker"?`Click where ${x.label} stands.`:x.corners.length<3?`Click the corners of ${x.label} \u2014 ${3-x.corners.length} more to make an area.`:`${x.corners.length} corners. Keep clicking, or press Done.`;return N?(0,A.jsxs)(X,{title:r??"The plan",subtitle:`${g} drawn \xB7 ${v} standing in them`,...s.undrawn.length>0?{meta:`${s.undrawn.length} ${t.undrawnLabel??"not drawn yet"}`}:{},selected:o,fit:!0,children:[(0,A.jsx)("div",{style:{position:"relative",width:"100%",aspectRatio:`${d.w} / ${d.h}`,overflow:"hidden"},children:(0,A.jsxs)("svg",{ref:F,viewBox:`${d.x} ${d.y} ${d.w} ${d.h}`,width:"100%",height:"100%",preserveAspectRatio:"xMidYMid meet",role:x!==null?"application":E?"group":"img","aria-label":x===null?`${r??"The plan"}: ${g} drawn, ${v} standing in them`:G??"Drawing",onClick:H,"data-testid":"plan-canvas",style:{display:"block",position:"absolute",inset:0,cursor:x===null?void 0:"crosshair",border:"1px dashed color-mix(in oklab, var(--graview-edge) 80%, transparent)",borderRadius:".4rem",backgroundImage:"linear-gradient(color-mix(in oklab, var(--graview-edge) 35%, transparent) 1px, transparent 1px),linear-gradient(90deg, color-mix(in oklab, var(--graview-edge) 35%, transparent) 1px, transparent 1px)",backgroundSize:"10% 10%"},children:[(0,A.jsx)("text",{x:d.x+d.w-h*.028,y:d.y+h*.034,fontSize:h*.022,textAnchor:"middle",fill:"var(--graview-ink)",opacity:.55,children:"N"}),G!==null&&s.regions.length===0?(0,A.jsx)("text",{x:d.x+d.w/2,y:d.y+d.h/2,textAnchor:"middle",dominantBaseline:"middle",fontSize:h*.026,fill:"var(--graview-ink)",opacity:.7,style:{pointerEvents:"none",fontFamily:"var(--graview-font-body)"},children:G}):null,x!==null&&x.kind==="region"&&x.corners.length>0?(0,A.jsxs)("g",{style:{pointerEvents:"none"},children:[(0,A.jsx)("polyline",{points:x.corners.map(b=>`${b.x*R},${b.y*k}`).join(" "),fill:x.corners.length>=3?"color-mix(in oklab, var(--graview-accent) 22%, transparent)":"none",stroke:"var(--graview-accent)",strokeWidth:3,strokeDasharray:"8 6"}),x.corners.map((b,$)=>(0,A.jsx)("circle",{cx:b.x*R,cy:b.y*k,r:h*.008,fill:"var(--graview-accent)"},$))]}):null,s.regions.map(b=>{let $=hn(b.id,c,p),W=M&&$===void 0?.34:1,ne=b.outline.map(oe=>`${oe.x*R},${oe.y*k}`).join(" ");return(0,A.jsx)("g",{"data-graview-pick":b.id,...$?{"data-graview-emphasis":$}:{},role:"button","aria-label":`${b.label}${b.what?`, ${b.what}`:""}, ${b.markers.length} standing in it`,style:{opacity:W,cursor:"pointer"},children:(0,A.jsx)("polygon",{points:ne,fill:_n(b.what,$,t.hues),stroke:sr(b.what,$,t.hues),strokeWidth:$==="flagged"?5:2.5,strokeLinejoin:"round"})},b.id)}),s.regions.flatMap(b=>b.markers.map($=>{let W=hn($.id,c,p),ne=M&&W===void 0?.34:1;return(0,A.jsxs)("g",{...E?{"data-graview-pick":$.id,role:"button","aria-label":`${$.label}${$.what?`, ${$.what}`:""}, in ${b.label}`}:{"aria-hidden":!0},...W?{"data-graview-emphasis":W}:{},style:{opacity:ne,cursor:E?"pointer":"default"},children:[E?(0,A.jsx)("circle",{cx:$.at.x*R,cy:$.at.y*k,r:h*or,fill:"transparent"}):null,(0,A.jsx)("circle",{cx:$.at.x*R,cy:$.at.y*k,r:h*.011,fill:W==="flagged"?"var(--graview-warn)":`hsl(${yn($.what,t.hues)} 55% 45%)`,stroke:"var(--graview-panel)",strokeWidth:h*.004}),ie.has($.id)?(0,A.jsx)("text",{x:ie.get($.id).at.x,y:ie.get($.id).at.y,textAnchor:ie.get($.id).anchor,dominantBaseline:"middle",fontSize:ie.get($.id).size,fill:"var(--graview-ink)",stroke:"var(--graview-panel)",strokeWidth:Math.max(2,ie.get($.id).size*.3),paintOrder:"stroke","data-testid":`marker-label-${$.id}`,style:{pointerEvents:"none",fontFamily:"var(--graview-font-body)"},children:$.label}):null]},$.id)})),s.regions.map(b=>{let $=ee.get(b.id),W=ue.get(b.id);if(!$||W===void 0)return null;let ne=hn(b.id,c,p);return(0,A.jsx)("text",{x:W.x,y:W.y-($.lines.length-1)*$.fontSize*1.15/2,textAnchor:"start",dominantBaseline:"middle",fontSize:$.fontSize,fill:"var(--graview-ink)",opacity:M&&ne===void 0?.34:1,stroke:"var(--graview-panel)",strokeWidth:Math.max(2,$.fontSize*.26),paintOrder:"stroke","data-testid":`region-label-${b.id}`,style:{pointerEvents:"none",fontFamily:"var(--graview-font-display)"},children:$.lines.map((oe,Z)=>(0,A.jsx)("tspan",{x:W.x,dy:Z===0?0:$.fontSize*1.15,children:oe},oe+String(Z)))},`label-${b.id}`)})]})}),ve.length>0?(0,A.jsx)("ul",{"data-testid":"map-key",style:{margin:".5rem 0 0",padding:0,listStyle:"none",display:"flex",flexWrap:"wrap",gap:".2rem .75rem",fontSize:"0.875rem"},children:ve.map(b=>(0,A.jsxs)("li",{"data-graview-pick":b.id,style:{display:"flex",alignItems:"center",gap:".35rem",minWidth:0,minHeight:"max(1.5rem, 24px)",padding:"0 .15rem",cursor:"pointer"},children:[(0,A.jsx)("span",{"aria-hidden":"true",style:{width:b.round?".55rem":".7rem",height:b.round?".55rem":".7rem",flex:"0 0 auto",borderRadius:b.round?"50%":".15rem",background:b.round?`hsl(${yn(b.what,t.hues)} 55% 45%)`:_n(b.what,void 0,t.hues),border:b.round?void 0:`1px solid ${sr(b.what,void 0,t.hues)}`}}),(0,A.jsx)("span",{style:{minWidth:0,overflowWrap:"anywhere"},children:b.label})]},b.id))}):null,x!==null?(0,A.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:".5rem",marginTop:".5rem",alignItems:"center"},children:[s.regions.length>0&&G!==null?(0,A.jsx)("span",{style:{fontSize:"0.9375rem",opacity:.8,flexBasis:"100%"},"aria-live":"polite",children:G}):null,x.kind==="region"?(0,A.jsxs)("button",{type:"button",onClick:z,disabled:x.corners.length<3,"data-testid":"draw-done",style:{...Xe,background:"var(--graview-accent)",color:"var(--graview-accent-ink)",borderColor:"transparent"},children:["Done \u2014 keep ",x.label]}):null,x.kind==="region"&&x.corners.length>0?(0,A.jsx)("button",{type:"button",onClick:()=>T({...x,corners:x.corners.slice(0,-1)}),style:Xe,children:"Undo a corner"}):null,(0,A.jsx)("button",{type:"button",onClick:()=>T(null),style:Xe,"data-testid":"draw-cancel",children:"Stop"})]}):(0,A.jsxs)(A.Fragment,{children:[re&&s.undrawn.length>0?(0,A.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:".4rem",marginTop:".5rem",alignItems:"center"},children:[(0,A.jsxs)("span",{style:{fontSize:"0.875rem",opacity:.75},children:[t.undrawnLabel??"Not drawn yet",":"]}),s.undrawn.map(b=>(0,A.jsxs)("button",{type:"button",style:Xe,onClick:()=>T({kind:"region",id:b.id,label:b.label,corners:[]}),"data-testid":`draw-${b.id}`,children:["Draw ",b.label]},b.id))]}):null,f&&s.strays.length>0?(0,A.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:".4rem",marginTop:".5rem",alignItems:"center"},children:[(0,A.jsxs)("span",{style:{fontSize:"0.875rem",opacity:.75},children:[t.strayLabel??"Not placed",":"]}),s.strays.map(b=>(0,A.jsxs)("button",{type:"button",style:Xe,onClick:()=>T({kind:"marker",id:b.id,label:b.label}),"data-testid":`place-${b.id}`,children:["Place ",b.label]},b.id))]}):null,t.help!==void 0&&(s.undrawn.length>0||s.strays.length>0)?(0,A.jsx)("p",{style:{margin:".5rem 0 0",fontSize:"0.875rem"},children:(0,A.jsx)("a",{href:t.help.href,"data-testid":"map-help",children:t.help.label})}):null,!re&&(s.undrawn.length>0||s.strays.length>0)?(0,A.jsxs)("p",{style:{margin:".5rem 0 0",fontSize:"0.875rem",opacity:.75},children:[s.undrawn.map(b=>b.label).join(", "),s.undrawn.length>0?` \u2014 ${t.undrawnLabel??"not drawn yet"}. `:"",s.strays.map(b=>b.label).join(", "),s.strays.length>0?` \u2014 ${t.strayLabel??"not placed"}.`:""]}):null]})]}):(0,A.jsx)(X,{title:r??"The plan",subtitle:`${g} drawn \xB7 ${v} standing in them`,selected:o,children:(0,A.jsx)(ir,{map:s,options:t,...c?{implicated:c}:{},...p?{flagged:p}:{}})})}var cr=j(Y(),1);function dr(e){function t(n){let{store:r}=Q();return(0,cr.jsx)(lr,{schema:r.schema,...n,options:e})}return{name:"plan",requiredRoles:[...ar],options:e,View:t,build(n,r,a){return fn(n,r,e,a)}}}var te=j(Y(),1);function Ur(e,t,n){let r=t.flatMap(o=>(o.subject&&o.subject.kinds!=="*"?o.subject.kinds:[null]).map(p=>({name:o.name,title:o.title??o.name,kind:p}))),a=[];for(let o of n){let c={kind:"human",id:"themselves",roles:[o]};for(let p of r){let u=p.kind??void 0,y=kn(e,c,p.name,u).ok,l=!y&&kn(e,c,p.name,u,void 0,"themselves").ok;a.push({role:o,act:p.name,kind:p.kind,may:y?"yes":l?"self":"no"})}}return{roles:n,acts:r,cells:a}}function Kr({label:e,fidelity:t,mode:n}){let{store:r}=Q(),a=r.policy,o=a?.roles??[],c=r.allMutations().filter(m=>!m.derived).map(m=>({name:m.name,...m.title?{title:m.title}:{},...m.subject?{subject:m.subject}:{}})),p=Ur(a,c,o),u=e??"Who may do what";if(!a||o.length===0)return(0,te.jsxs)("div",{"data-testid":"reach-lens",style:{padding:14,color:"var(--graview-ink-muted)",fontSize:"0.875rem"},children:[u,": this installation has no policy, so everyone may do everything."]});if(t==="glyph")return(0,te.jsx)(pe,{label:`${u} \xB7 ${o.length} ${o.length===1?"role":"roles"}`,hue:de("role")});let y=n==="fullscreen",l=m=>m==="yes"?"\u25CF":m==="self"?"\u25D0":"\xB7";return(0,te.jsxs)("div",{"data-testid":"reach-lens",style:{display:"grid",gap:10,padding:y?0:14,borderRadius:"var(--graview-radius, 12px)",background:y?"transparent":"var(--graview-panel)",border:y?"none":"1px solid var(--graview-edge)",color:"var(--graview-ink)",minWidth:0},children:[(0,te.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:10},children:[(0,te.jsx)("span",{style:{fontFamily:"var(--graview-font-display)",fontSize:"1.125rem",fontWeight:600},children:u}),(0,te.jsx)("span",{style:{marginLeft:"auto",fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:"\u25CF may \xB7 \u25D0 on their own record \xB7 read from the policy"})]}),(0,te.jsx)("div",{"data-scroller":!0,style:{overflowX:"auto"},children:(0,te.jsxs)("table",{style:{borderCollapse:"collapse",fontSize:"0.875rem",minWidth:"100%"},children:[(0,te.jsx)("thead",{children:(0,te.jsxs)("tr",{children:[(0,te.jsx)("th",{scope:"col",style:{textAlign:"left",padding:"4px 10px 6px 0",fontWeight:500,color:"var(--graview-ink-faint)",fontSize:"0.75rem",letterSpacing:"0.12em",textTransform:"uppercase"},children:"Role"}),p.acts.map(m=>(0,te.jsxs)("th",{scope:"col",title:m.kind?`${m.title}, on ${et(tn(r.schema.tryDefinition(m.kind),m.kind))}`:m.title,style:{textAlign:"left",padding:"4px 10px 6px",fontWeight:500,whiteSpace:"nowrap",color:"var(--graview-ink-muted)",fontSize:"0.8125rem"},children:[m.title,m.kind?(0,te.jsxs)("span",{style:{color:"var(--graview-ink-faint)"},children:[" \xB7 ",m.kind]}):null]},`${m.name}|${m.kind??""}`))]})}),(0,te.jsx)("tbody",{children:p.roles.map(m=>(0,te.jsxs)("tr",{children:[(0,te.jsx)("th",{scope:"row",style:{textAlign:"left",padding:"6px 10px 6px 0",fontWeight:600,whiteSpace:"nowrap",borderTop:"1px solid var(--graview-edge)"},children:m}),p.acts.map(w=>{let s=p.cells.find(g=>g.role===m&&g.act===w.name&&g.kind===w.kind);return(0,te.jsx)("td",{"data-graview-reach":s.may,title:`${m} ${s.may==="yes"?"may":s.may==="self"?"may, on their own record,":"may not"} ${w.title.toLowerCase()}`,style:{padding:"6px 10px",textAlign:"center",borderTop:"1px solid var(--graview-edge)",color:s.may==="no"?"var(--graview-ink-faint)":"var(--graview-accent)",fontSize:s.may==="no"?"0.875rem":"0.8125rem"},children:l(s.may)},`${w.name}|${w.kind??""}`)})]},m))})]})})]})}var gr={name:"reach",requiredRoles:[],View:Kr};var xe=j(Ne(),1);var J=j(Y(),1),mr=["start","end"];function Yr(e,t,{pad:n=45,minimum:r=480}={}){if(e.length===0)return{start:0,end:t};let a=Math.min(...e.map(y=>y.start)),o=Math.max(...e.map(y=>y.end)),c=Math.max(0,a-n),p=Math.min(t,o+n),u=r-(p-c);return u>0&&(c=Math.max(0,c-u/2),p=Math.min(t,c+r)),{start:Math.floor(c),end:Math.ceil(p)}}function Qr(e){let t=[...e].sort((o,c)=>o.start-c.start||o.end-c.end||o.id.localeCompare(c.id)),n=[],r=t.map(o=>{let c=n.findIndex(p=>p<=o.start);return c===-1?(c=n.length,n.push(o.end)):n[c]=o.end,{...o,lane:c,lanes:1}}),a=Math.max(1,n.length);return r.map(o=>({...o,lanes:a}))}var qn=class extends Error{constructor(t,n){super(`The timeline lens needs ${n.join(" and ")} for "${t}". Add them to the lens bindings: { ${t}: { ${n.map(r=>`${r}: "<field name>"`).join(", ")} } }.`),this.name="TimelineBindingError"}};function pr(e,t,n){let r=ze(t[e.kind],n?.tryDefinition(e.kind));if(!r)return null;let a=e,o=n?.tryDefinition(e.kind)?.fields.shape,c=mr.filter(l=>{let m=r[l];return m?o?!(m in o):!(m in a):!0});if(c.length>0)throw new qn(e.kind,c);let p=Number(a[r.start]??Number.NaN),u=Number(a[r.end]??p);if(!Number.isFinite(p))return null;let y=[];if(r.columns){let l=a[r.columns];Array.isArray(l)&&y.push(...l.map(String))}if(r.column){let l=a[r.column];l!=null&&y.push(String(l))}return{id:e.id,kind:e.kind,label:fe(n?.tryDefinition(e.kind),e),columnIds:y,start:p,end:Number.isFinite(u)?Math.max(u,p):p}}function Jr(e,t){let n=Math.round(t),r=a=>`linear-gradient(hsl(${n} 55% var(--graview-tint-lightness) / ${a}), hsl(${n} 55% var(--graview-tint-lightness) / ${a})), var(--graview-panel)`;return e==="lit"?{border:"1px solid var(--graview-accent)",background:r("calc(var(--graview-tint-alpha) * 1.15)"),color:"var(--graview-ink)",boxShadow:"0 0 16px -4px var(--graview-accent)"}:e==="dimmed"?{border:"1px solid var(--graview-edge)",background:r("calc(var(--graview-tint-alpha) * 0.25)"),color:"var(--graview-ink-muted)"}:{border:`1px solid hsl(${n} 50% var(--graview-tint-lightness) / 0.42)`,background:r("var(--graview-tint-alpha)"),color:"var(--graview-ink)"}}var Xr=.045,Ze=52,fr=4,Zr=44,ea=240;function na({nodes:e,label:t,fidelity:n,mode:r,options:a,schema:o,selectedIds:c=[],implicated:p=[],flagged:u=[]}){let y=new Set([...p,...c]),l=S=>y.size===0?"plain":y.has(S)?"lit":"dimmed",m=new Set(u),w=(e??[]).map(S=>pr(S,a.bindings,o)).filter(S=>S!==null),s=a.hueOf??(S=>de(S.kind));if(n==="glyph")return(0,J.jsx)(pe,{label:`${t??"Timeline"} \xB7 ${w.length}`,hue:de("timeline")});if(n==="summary")return(0,J.jsx)(X,{title:t??"Timeline",meta:`${w.length} items`,tone:"muted",children:(0,J.jsx)(Ee,{max:a.columns.length,items:a.columns.map(S=>({id:S.id,label:`${S.label} ${w.filter(d=>d.columnIds.includes(S.id)).length}`,hue:de(S.id)}))})});let g=a.format??String,v=Yr(w,a.extent,{...a.minWindow===void 0?{}:{minimum:a.minWindow}}),i=v.end-v.start,O=S=>(S-v.start)/i*100,C=a.tick??Math.max(60,Math.round(i/8/60)*60),R=[];for(let S=Math.ceil(v.start/C)*C;S<=v.end;S+=C)R.push(S);let P=r==="fullscreen";return(0,J.jsx)(X,{title:t??"Timeline",meta:`${g(v.start)} \u2013 ${g(v.end)}`,style:{gap:12,...P?{flex:"1 1 auto",minHeight:0,height:"100%"}:{}},children:(0,J.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",minHeight:0},children:[(0,J.jsx)(aa,{columns:a.columns}),(0,J.jsxs)("div",{"data-graview-timeline-grid":"",style:{position:"relative",flex:1,minHeight:Math.max(ea,Math.ceil(i/C)*Zr)},children:[R.map((S,d)=>(0,J.jsx)("div",{style:{position:"absolute",left:Ze-8,right:0,top:d===R.length-1?"calc(100% - 1px)":`${O(S)}%`,height:1,background:"var(--graview-edge)"},children:(0,J.jsx)("span",{style:{position:"absolute",left:-(Ze-8),...d===R.length-1?{bottom:2}:{top:-7},width:Ze-16,textAlign:"right",fontSize:"0.75rem",letterSpacing:"0.06em",color:"var(--graview-ink-faint)"},children:g(S)})},S)),(0,J.jsx)("div",{style:{position:"absolute",inset:0,left:Ze,display:"flex",gap:fr},children:a.columns.map(S=>(0,J.jsx)(ia,{spans:w.filter(d=>d.columnIds.includes(S.id)),window:v,format:g,hue:s,emphasisOf:l,brokenIds:m},S.id))})]})]})})}function ta(){let e=(0,xe.useRef)(null),[t,n]=(0,xe.useState)(new Set);return(0,xe.useLayoutEffect)(()=>{let r=e.current;if(!r)return;let a=[...r.querySelectorAll("[data-graview-span-name]")].filter(o=>o.scrollWidth>o.clientWidth+.5).map(o=>o.getAttribute("data-graview-span-name")).filter(o=>!t.has(o));a.length>0&&n(new Set([...t,...a]))}),(0,xe.useLayoutEffect)(()=>{let r=e.current;if(!r||typeof ResizeObserver>"u")return;let a=Math.round(r.clientWidth),o=new ResizeObserver(()=>{let c=Math.round(r.clientWidth);c!==a&&(a=c,n(new Set))});return o.observe(r),()=>o.disconnect()},[]),{column:e,oneLine:t}}var ra=(e,t)=>t===0?e:e.slice(0,t),ur=[0,3,1];function aa({columns:e}){let t=(0,xe.useRef)(null),[n,r]=(0,xe.useState)(0);(0,xe.useLayoutEffect)(()=>{let o=t.current;if(!o)return;[...o.children].some(p=>p.scrollWidth>p.clientWidth+.5)&&n<ur.length-1&&r(n+1)}),(0,xe.useLayoutEffect)(()=>{let o=t.current;if(!o||typeof ResizeObserver>"u")return;let c=o.clientWidth,p=new ResizeObserver(()=>{o.clientWidth!==c&&(c=o.clientWidth,r(0))});return p.observe(o),()=>p.disconnect()},[]);let a=ur[n];return(0,J.jsx)("div",{ref:t,style:{display:"flex",gap:fr,paddingLeft:Ze,paddingBottom:10},children:e.map(o=>{let c=ra(o.label,a);return(0,J.jsx)("div",{"data-graview-day-head":o.id,title:c===o.label?void 0:o.label,...c===o.label?{}:{"aria-label":o.label},style:{flex:1,minWidth:0,overflow:"hidden",whiteSpace:"nowrap",fontSize:"0.75rem",letterSpacing:a===1?0:"0.18em",textTransform:"uppercase",textAlign:"center",color:"var(--graview-ink-muted)"},children:c},o.id)})})}function ia({spans:e,window:t,format:n,hue:r,emphasisOf:a,brokenIds:o}){let c=t.end-t.start,p=s=>(s-t.start)/c*100,u=s=>(s.end-s.start)/c<Xr,y=Qr(e.filter(s=>!u(s))),l=[...e.filter(u)].sort((s,g)=>s.start-g.start),m=Math.max(1,...y.map(s=>s.lanes)),w=ta();return(0,J.jsxs)("div",{ref:w.column,"data-graview-day-column":"",style:{position:"relative",flex:1,minWidth:0},children:[y.map(s=>{let g=100/m,v=Math.max(1.6,p(s.end)-p(s.start));return(0,J.jsx)("div",{"data-graview-span":s.id,"data-graview-pick":s.id,"data-graview-emphasis":a(s.id),"data-graview-flagged":o.has(s.id)?"":void 0,title:`${s.label} \xB7 ${n(s.start)}\u2013${n(s.end)}`,style:{position:"absolute",top:`${p(s.start)}%`,height:`${v}%`,left:`${s.lane*g}%`,width:`${g}%`,padding:"0 2px 2px 0",boxSizing:"border-box"},children:(0,J.jsx)("div",{"data-graview-span-name":s.id,style:{height:"100%",minHeight:15,borderRadius:6,padding:"3px 6px",fontSize:"0.75rem",lineHeight:1.25,overflow:"hidden",overflowWrap:"normal",wordBreak:"normal",...w.oneLine.has(s.id)?{display:"block",whiteSpace:"nowrap",textOverflow:"ellipsis"}:{display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical"},...Jr(a(s.id),r(s)),...o.has(s.id)?{borderLeft:"3px solid var(--graview-warn)",paddingLeft:4}:{}},children:v>=3.4?s.label:null})},s.id)}),l.map(s=>{let g=a(s.id);return(0,J.jsxs)("div",{"data-graview-span":s.id,"data-graview-pick":s.id,"data-graview-emphasis":g,"data-graview-moment":"",title:`${s.label} \xB7 ${n(s.start)}`,style:{position:"absolute",top:`${p(s.start)}%`,right:0,maxWidth:"100%",boxSizing:"border-box",transform:"translateY(-50%)",display:"flex",alignItems:"center",justifyContent:"flex-end",gap:5,minHeight:24,padding:"0 4px 0 8px",borderRadius:999,background:"linear-gradient(90deg, transparent, var(--graview-ground) 35%)"},children:[(0,J.jsx)("span",{style:{fontSize:"0.6875rem",letterSpacing:"0.04em",whiteSpace:"nowrap",color:g==="lit"?"var(--graview-accent)":"var(--graview-ink-faint)"},children:n(s.start)}),(0,J.jsx)("span",{style:{fontSize:"0.75rem",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:g==="dimmed"?"var(--graview-ink-faint)":"var(--graview-ink)"},children:s.label}),(0,J.jsx)("span",{style:{width:7,height:7,borderRadius:999,flex:"0 0 auto",background:o.has(s.id)?"var(--graview-warn)":g==="dimmed"?"var(--graview-edge)":`hsl(${Math.round(r(s))} 60% var(--graview-tint-lightness))`,boxShadow:o.has(s.id)?"0 0 0 3px var(--graview-warn)":g==="lit"?"0 0 0 3px var(--graview-accent-dim)":g==="dimmed"?void 0:`0 0 8px hsl(${Math.round(r(s))} 60% var(--graview-tint-lightness) / 0.45)`}})]},s.id)})]})}function hr(e){function t(n){let{store:r}=Q(),a=Object.keys(e.bindings),{nodes:o,bar:c}=Ie(n,{...e.arranging!==void 0?{allow:e.arranging}:{},lensAllows:{group:!1},...e.arrangedBy?{arrangedBy:e.arrangedBy}:{},...a[0]?{kind:(n.nodes??[]).find(u=>a.includes(String(u.kind)))?.kind??a[0]}:{}}),p=(0,J.jsx)(na,{schema:r.schema,...n,nodes:o,options:e});return Me(n,r.schema,c?(0,J.jsxs)("div",{style:{display:"grid",gap:6,height:"100%",minHeight:0,gridTemplateRows:"auto 1fr"},children:[c,p]}):p)}return{name:"timeline",requiredRoles:[...mr],bindings:e.bindings,options:e,View:t,place(n,r){return n.map(a=>pr(a,e.bindings,r)).filter(a=>a!==null)}}}var qe=j(Y(),1),yr=new WeakMap;function oa(e){return e===1440?t=>Ue(Math.floor(t/60)*60+Math.round(t%60)):e===24?t=>Ue(Math.floor(t)*60):t=>String(t)}function sa(e){let t=e.options;switch(e.lens){case"timeline":{let n=typeof t.extent=="number"?t.extent:1440;return hr({...t,extent:n,format:oa(n)}).View}case"calendar":return Kt({...t,...typeof t.today=="string"?{today:t.today}:{}}).View;case"coverage":return tr(t).View;case"board":return Lt(t).View;case"plan":return dr(t).View;case"reach":return gr.View;case"columns":return Yt(t).View;case"blocks":return la(dt(Array.isArray(t.blocks)?t.blocks:[]),e.as)}}function la(e,t){return n=>{let r=(0,qe.jsx)(At,{blocks:e,slot:"place",view:t,heading:n.mode==="fullscreen"?2:3});return n.fidelity==="glyph"?(0,qe.jsx)("span",{className:"graview-spec-title",children:n.label}):n.mode==="fullscreen"?(0,qe.jsx)("div",{style:{padding:"14px 16px"},children:r}):(0,qe.jsx)(X,{title:n.label??"",children:r})}}function ao(e){let t=yr.get(e);if(!t){let n=sa(e),r=a=>(0,qe.jsx)(n,{...a,label:e.title});yr.set(e,t=r)}return t}export{oa as a,ao as b};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as f}from"./chunk.64P76WK4.js";import"./chunk.WLRTPFAC.js";import"./chunk.XXHNV24G.js";import"./chunk.RWGLKDWH.js";import"./chunk.GZH6PTXN.js";import{a as x,b as S,c as D}from"./chunk.XAXJHEMD.js";import{b as h}from"./chunk.P62SKNJS.js";import"./chunk.GDA3G4U2.js";import"./chunk.WKXNBHTL.js";import"./chunk.OWE6OJ4P.js";import"./chunk.3JM2TNDD.js";import"./chunk.BKPGDEES.js";import"./chunk.JNGUSAWX.js";import"./chunk.CK7QWLMX.js";import"./chunk.QNHECGMH.js";import"./chunk.KZ2376BD.js";import"./chunk.IZW7DBK4.js";import"./chunk.RKRSRKF3.js";import"./chunk.KC6UZHBM.js";import"./chunk.HJCQ6I3S.js";import"./chunk.ZBXOX3W3.js";import"./chunk.5AT4O4BN.js";import"./chunk.YRQZZH5V.js";import"./chunk.HONUT6OG.js";import"./chunk.X53HI436.js";import"./chunk.COTG2IG5.js";import"./chunk.YCA7P5MK.js";import"./chunk.VPPUTA74.js";import"./chunk.UT6642FC.js";import"./chunk.3G5MQFZK.js";import"./chunk.2CLPRG3I.js";import"./chunk.O42YET3W.js";import"./chunk.Z5V23DQN.js";import"./chunk.OHE5AMHH.js";import{s as k}from"./chunk.OYJSFO3A.js";import"./chunk.HV6I74DF.js";import"./chunk.WVUJXDXZ.js";import"./chunk.DAA6XWLF.js";import"./chunk.7DNFXJH3.js";import"./chunk.7PRFYYVM.js";import"./chunk.2NCTM5K2.js";import"./chunk.JU2ZVKMT.js";import"./chunk.HGAMNIST.js";import"./chunk.OQDETV4X.js";import"./chunk.ZS4DJ76C.js";import"./chunk.5R66YTET.js";import"./chunk.G4WQGTZR.js";import"./chunk.HFKMHLJ3.js";import"./chunk.GS4T26WW.js";import{F as V,I as v,M as y,U as w,W as b}from"./chunk.Z56B2JR2.js";import{Hb as u,V as g}from"./chunk.HLLWKSZB.js";import{b as p}from"./chunk.AJZBJBMO.js";var i=p(V(),1);var e=p(y(),1);function q({page:a=!1,go:C,onPick:m,onDiscard:G}){let{store:o,seatTalk:s}=w(),d=v(s),K=D(),c=C??K,{keep:N}=x(c),[T,l]=(0,i.useState)(!1);b();let t=d.draft;if((0,i.useEffect)(()=>l(!1),[t]),(0,i.useEffect)(()=>{a||S(!1)},[a]),!t)return null;let L=h(t.drawn),B=o.schema.tryDefinition(t.kind),I=o.graph.nodesOfKind(t.kind).filter(n=>g(B,n)),P=()=>{s.setDraft(null),G?.()};return(0,e.jsxs)("section",{"data-testid":"draft-frame","aria-label":`Draft: ${t.title}`,style:a?{display:"grid",gap:12,minWidth:0}:{position:"absolute",inset:0,zIndex:u("rail"),display:"grid",gridTemplateRows:"auto auto minmax(0, 1fr)",background:"var(--graview-ground, var(--graview-panel))",minHeight:0},children:[(0,e.jsxs)("p",{"data-testid":"draft-line",style:{...z,...a?{}:{padding:"10px 16px"}},children:[a?(0,e.jsx)("span",{children:"Draft"}):(0,e.jsxs)("span",{children:["Draft \u2014 ",(0,e.jsx)("span",{"data-testid":"draft-title",style:{color:"var(--graview-ink)",fontWeight:600},children:t.title})]}),(0,e.jsx)("span",{"aria-hidden":"true",children:"\xB7"}),(0,e.jsx)("button",{type:"button","data-testid":"draft-keep",disabled:T,title:`Keep \u201C${t.title}\u201D as a lens: a place of its own`,onClick:()=>{l(!0),N(t).finally(()=>l(!1))},style:f,children:"Keep as a lens"}),(0,e.jsx)("span",{"aria-hidden":"true",children:"\xB7"}),(0,e.jsx)("button",{type:"button","data-testid":"draft-discard",onClick:P,style:f,children:"Discard"})]}),d.draftNote?(0,e.jsx)("p",{"data-testid":"draft-note",role:"status",style:{margin:0,padding:a?0:"0 16px 8px",fontSize:"0.8125rem",color:"var(--graview-warn)"},children:d.draftNote}):(0,e.jsx)("span",{}),(0,e.jsx)("div",{"data-testid":"draft-lens","data-graview-draft":t.lens.name,style:a?{height:"min(72vh, 760px)",display:"grid",gridTemplateRows:"minmax(0, 1fr)",overflow:"auto",scrollbarGutter:"stable",border:"1px solid var(--graview-edge)",borderRadius:12,background:"var(--graview-panel)"}:{minHeight:0,overflow:"auto",scrollbarGutter:"stable",display:"grid",gridTemplateRows:"minmax(0, 1fr)"},onClick:n=>{let r=n.target?.closest("[data-graview-pick]")?.getAttribute("data-graview-pick");if(!r||!o.graph.getNode(r))return;n.preventDefault();let R=o.graph.getNode(r);m?(s.setDraft(null),m(r)):c({to:"record",id:r,kind:R.kind,label:r,address:"",said:""})},children:(0,e.jsx)(k,{kind:t.kind,view:t.title,children:(0,e.jsx)(L,{nodes:I,label:t.title,fidelity:"full",cardinality:"many",mode:"fullscreen",selected:!1})})})]})}var z={margin:0,display:"flex",flexWrap:"wrap",alignItems:"baseline",gap:"4px 8px",fontSize:"0.875rem",color:"var(--graview-ink-muted)",borderBottom:"1px solid var(--graview-edge)",paddingBottom:8};export{q as DraftFrame};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import{a as Y}from"./chunk.VNBO2RXD.js";import{a as E,c as H,e as V,f as _}from"./chunk.N4FBDA2W.js";import"./chunk.VPPUTA74.js";import"./chunk.UT6642FC.js";import"./chunk.3G5MQFZK.js";import"./chunk.2CLPRG3I.js";import"./chunk.HGAMNIST.js";import"./chunk.OQDETV4X.js";import"./chunk.ZS4DJ76C.js";import"./chunk.5R66YTET.js";import"./chunk.G4WQGTZR.js";import"./chunk.HFKMHLJ3.js";import"./chunk.GS4T26WW.js";import{F as U,M as k,U as w,c as M,la as G,oa as B,x as W}from"./chunk.Z56B2JR2.js";import{$ as T,W as L,Y as O}from"./chunk.HLLWKSZB.js";import{b as y}from"./chunk.AJZBJBMO.js";function A(t){return{minHeight:24,padding:"3px 10px",borderRadius:6,fontSize:"0.875rem",borderWidth:1,borderStyle:"solid",borderColor:t?"transparent":"var(--graview-edge)",color:t?"var(--graview-ink)":"var(--graview-ink-muted)",fontWeight:t?600:400,background:t?"color-mix(in srgb, var(--graview-accent) 16%, transparent)":"transparent"}}var P=y(k(),1);function j(){let{seats:t,principal:r,takeSeat:i}=w();return t.length<2?null:(0,P.jsxs)("div",{role:"group","aria-label":"Seat","data-testid":"seats",style:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:6,rowGap:4},children:[(0,P.jsx)("span",{style:{fontSize:"0.75rem",letterSpacing:"0.12em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},children:"As"}),t.map(a=>{let l=q(r,a.principal);return(0,P.jsx)("button",{type:"button","aria-pressed":l,"data-testid":`seat-${a.principal.id??a.label}`,title:`Sit down as ${a.label}: the acts, the kinds and the pages narrow to what this seat may do`,onClick:()=>i(a.principal),style:{...A(l),whiteSpace:"nowrap"},children:a.label},a.principal.id??a.label)})]})}function q(t,r){return t.kind===r.kind&&t.id===r.id}var z=y(U(),1),o=y(k(),1),J=`
|
|
2
|
-
.graview-here{display:flex;flex:none}
|
|
3
|
-
.graview-here>button{display:inline-flex;align-items:center;gap:4px;height:30px;margin:0;padding:0 4px;border:1px solid transparent;border-radius:8px;background:none;box-shadow:none;font:inherit;font-size:.75rem;color:var(--graview-ink-muted);cursor:pointer}
|
|
4
|
-
.graview-here-mark{display:inline-flex;align-items:center;justify-content:center;flex:none;box-sizing:border-box;width:24px;height:24px;border-radius:50%;border:1.5px solid hsl(var(--graview-hue) 50% 48%);background:var(--graview-panel-muted);color:var(--graview-ink);font-size:.75rem;font-weight:600;box-shadow:0 0 0 2px var(--graview-bar)}
|
|
5
|
-
.graview-here-mark+.graview-here-mark{margin-left:-10px}
|
|
6
|
-
.graview-here-mark[data-agent]{border-radius:5px}
|
|
7
|
-
.graview-here-mark[data-counted]{--graview-hue:0;border-color:var(--graview-edge)}
|
|
8
|
-
.graview-here small{display:block;font-size:.75rem;color:var(--graview-ink-muted)}
|
|
9
|
-
.graview-bar[data-finding] .graview-here{display:none}`,Q={position:"absolute",width:1,height:1,overflow:"hidden",clip:"rect(0 0 0 0)"};function X(t,r){let i=r.id===void 0?null:`${r.kind}:${r.id}`,a=new Map;for(let l of t.values()){let d=l.participant.slice(0,l.participant.lastIndexOf(":"));if(d===i)continue;let s=d.endsWith(":")?l.participant:d,h=a.get(s);(!h||h.at<l.at)&&a.set(s,l)}return[...a.values()]}var D=t=>t.name&&t.onBehalfOfName?`${t.name}, for ${t.onBehalfOfName}`:t.name??"",K=t=>t===1?"1 viewer":`${t} viewers`;function Z(t){let r=t.map(D).filter(Boolean),i=r.length<t.length?[...r,K(t.length-r.length)]:r,a=i.pop();return`${i.length>0?`${i.join(", ")} and ${a}`:a} ${t.length===1?"is":"are"} here`}function ee(t,r){let{store:i,hidden:a,pictures:l}=r,d=M(t),s=i.kindsKeptFrom(r.principal),h=p=>!a.has(p)&&!s.has(p)&&!i.modules.disabledKinds.has(p),u=l.find(p=>p.as===d.within?.view&&h(p.kind));if(u)return u.title;if(!d.focusId)return d.overview?"the whole thing":null;let g=W(d.focusId);if(g.length>0)return g.every(h)?g.map(p=>T(i.schema,p)).join(" and "):null;let m=i.graph.getNode(d.focusId);return m&&h(m.kind)?L(i.schema.tryDefinition(m.kind),m):null}function te({scene:t,compact:r}){let{who:i,principal:a,store:l,views:d,hiddenKinds:s,follow:h}=w(),u=B("here"),g=X(i,a),m=g.length===0?"":Z(g),[p,N]=(0,z.useState)("");if((0,z.useEffect)(()=>N(m),[m]),g.length===0)return null;let S=g.filter(c=>c.name),f=S.slice(0,r?2:3),v=g.length-f.length,b=g.length-S.length,n=d.places();return(0,o.jsxs)("div",{className:"graview-here","data-testid":"here",children:[(0,o.jsx)("style",{children:J}),(0,o.jsx)("span",{role:"status","aria-live":"polite",style:Q,children:p}),(0,o.jsxs)("button",{type:"button","data-testid":"here-open",...u.trigger,onClick:u.toggle,"aria-label":`${m} \u2014 who and where`,title:m,children:[f.length>0?(0,o.jsx)("span",{style:{display:"flex"},children:f.map(c=>(0,o.jsx)(R,{one:c},c.participant))}):(0,o.jsx)(R,{count:v}),f.length>0&&v>0?(0,o.jsxs)("span",{"aria-hidden":"true",children:["+",v]}):null]}),(0,o.jsxs)("ul",{...u.pane,"aria-label":"Who is here","data-testid":"here-list",hidden:!u.open,className:"graview-bar-list",style:G,children:[S.map(c=>{let x=ee(c.stop,{store:l,principal:a,hidden:s,pictures:n}),I=D(c);return(0,o.jsx)("li",{children:(0,o.jsxs)(t?"button":"span",{className:"graview-bar-item","data-testid":"here-one",...t?{type:"button",title:`Go where ${I} is`,onClick:()=>{u.setOpen(!1),h(c.participant)}}:{style:{cursor:"default"}},children:[(0,o.jsx)(R,{one:c}),(0,o.jsxs)("span",{children:[I,x?(0,o.jsxs)("small",{children:["On ",x]}):null]})]})},c.participant)}),b>0?(0,o.jsx)("li",{children:(0,o.jsxs)("span",{className:"graview-bar-item","data-testid":"here-viewers",style:{cursor:"default"},children:[(0,o.jsx)(R,{count:b}),(0,o.jsxs)("span",{children:[K(b),(0,o.jsx)("small",{children:"Not signed in"})]})]})}):null]})]})}function R({one:t,count:r}){return(0,o.jsx)("span",{className:"graview-here-mark","aria-hidden":"true",...t?{style:{"--graview-hue":Math.round(t.hue)}}:{"data-counted":""},...t?.kind==="agent"?{"data-agent":""}:{},children:t?(t.name??"").trim().charAt(0).toUpperCase():r})}var e=y(k(),1);function we({violations:t,pick:r}){let{store:i,brand:a,setMenuAt:l}=w(),d=E(i,t);return(0,e.jsx)(e.Fragment,{children:d.map((s,h)=>{let u=_(s),g=s.repairs.length>0?`${s.repairs.length} ${s.repairs.length===1?"way":"ways"} to fix`:"";return(0,e.jsx)("li",{style:{borderTop:h===0?"none":"1px solid var(--graview-edge)"},children:(0,e.jsxs)("button",{type:"button",onClick:m=>{let p=m.currentTarget.closest("ol").getBoundingClientRect();r(s),l({x:p.left,y:p.top,on:s.subjectId})},...H(s)!==void 0?{title:H(s)}:{},style:{width:"100%",textAlign:"left",fontSize:"0.8125rem",lineHeight:1.4,padding:"7px 8px",border:"1px solid transparent",background:"none",boxShadow:"none",borderRadius:7},children:[s.line?(0,e.jsx)(V,{line:s.line,schema:i.schema,...a?{brand:a}:{},stacked:!0,style:{display:"block",color:"var(--graview-ink)"}}):(0,e.jsx)("span",{style:{display:"block",color:"var(--graview-ink)"},children:s.message}),u||g?(0,e.jsx)("span",{style:{color:"var(--graview-ink-faint)",fontSize:"0.75rem"},children:[u,g].filter(Boolean).join(" \xB7 ")}):null]})},`${s.invariant}:${h}`)})})}function ve({name:t,me:r,scheme:i,onScheme:a,profileHref:l,hostActions:d,close:s,part:h,signature:u=!1}){let{principal:g,seats:m,settings:p,settingValues:N,chooseSetting:S,sharing:f}=w(),v=g.roles??[],b={setOpen:n=>s()};return(0,e.jsx)(e.Fragment,{children:h==="top"?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{style:{display:"grid",gap:3},children:[(0,e.jsx)("span",{style:C,children:"Signed in as"}),(0,e.jsx)("strong",{style:{fontSize:"1rem",fontWeight:550},children:t}),(0,e.jsx)("span",{style:{fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:v.length>0?v.map(n=>O(n)).join(", "):r===void 0?"This app has no sign-in; everything here is yours.":"No role in particular"}),r!==void 0&&l!==void 0?(0,e.jsx)("a",{href:l(r.id),"data-testid":"profile-record",style:{display:"inline-flex",alignItems:"center",minHeight:24,justifySelf:"start",fontSize:"0.875rem",color:"var(--graview-accent)"},children:"Your record \u2197"}):null,f?(0,e.jsxs)("span",{"data-testid":"profile-seen-as",style:{fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:["Seen by others as ",f.name]}):null]}),d.length>0?(0,e.jsx)("ul",{role:"list","aria-label":"From the host","data-testid":"host-actions",style:{...$,margin:0,paddingLeft:0,listStyle:"none",display:"grid",gap:2},children:d.map(n=>(0,e.jsx)("li",{children:n.href!==void 0?(0,e.jsx)("a",{href:n.href,"data-testid":"host-action",className:"graview-host-action",...n.target?{target:n.target,rel:"noopener"}:{},onClick:()=>{n.onSelect?.(),b.setOpen(!1)},style:F,children:n.label}):(0,e.jsx)("button",{type:"button","data-testid":"host-action",className:"graview-host-action",onClick:()=>{b.setOpen(!1),n.onSelect?.()},style:{...F,width:"100%",textAlign:"left",border:"none",background:"none",boxShadow:"none",font:"inherit",cursor:"pointer"},children:n.label})},n.label))}):null]}):(0,e.jsxs)(e.Fragment,{children:[m.length>1?(0,e.jsxs)("div",{style:{display:"grid",gap:6,...$},children:[(0,e.jsx)("span",{style:C,children:"Sit as somebody else"}),(0,e.jsx)(j,{})]}):null,p.length>0?(0,e.jsx)("div",{style:{display:"grid",gap:10,...$},children:p.map(n=>(0,e.jsxs)("fieldset",{"data-testid":`setting-${n.name}`,style:{border:0,margin:0,padding:0,display:"grid",gap:5},children:[(0,e.jsx)("legend",{style:{...C,padding:0},children:n.title}),n.description?(0,e.jsx)("span",{style:{fontSize:"0.8125rem",color:"var(--graview-ink-muted)"},children:n.description}):null,(0,e.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:n.options.map(c=>{let x=(N[n.name]??n.initial)===c.value;return(0,e.jsx)("button",{type:"button","aria-pressed":x,"data-testid":`setting-${n.name}-${c.value}`,onClick:()=>S(n.name,c.value),style:A(x),children:c.label},c.value)})})]},n.name))}):null,i!==void 0&&a!==void 0?(0,e.jsxs)("div",{style:{display:"grid",gap:5,...$},children:[(0,e.jsx)("span",{style:C,children:"Scheme"}),(0,e.jsx)("div",{style:{display:"flex",gap:4},children:["light","dark"].map(n=>(0,e.jsx)("button",{type:"button","aria-pressed":i===n,"data-testid":`profile-scheme-${n}`,onClick:()=>a(n),style:A(i===n),children:n==="light"?"\u2600 Light":"\u263E Dark"},n))})]}):null,u?(0,e.jsxs)("p",{"data-testid":"graview-signature",style:{...$,margin:0,display:"flex",alignItems:"center",gap:6,fontSize:"0.75rem",color:"var(--graview-ink-faint)"},children:["Built with",(0,e.jsxs)("a",{href:"https://graview.dev",target:"_blank",rel:"noopener",style:{display:"inline-flex",alignItems:"center",gap:4,minHeight:24,color:"var(--graview-ink-muted)",fontWeight:600,textDecoration:"none"},children:[(0,e.jsx)("span",{"data-testid":"graview-mark",style:{display:"inline-flex",lineHeight:0},dangerouslySetInnerHTML:{__html:ne}}),"Graview"]})]}):null]})})}var ne='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="14" height="14" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="2.4" stroke-linejoin="round"><path d="M13 11 L3 8 L14 3 H29 L21 9"/><path d="M10 18 L3 23 L16.5 28 L29 21 L22 19"/><path d="M16.5 18.5 V23.5" stroke-linecap="round"/></g><circle cx="16.5" cy="13.5" r="2" fill="var(--graview-mark-point, currentColor)"/></svg>',F={display:"flex",alignItems:"center",minHeight:28,padding:"2px 8px",borderRadius:7,fontSize:"0.875rem",color:"var(--graview-ink)",textDecoration:"none"},C={fontSize:"0.75rem",letterSpacing:"0.14em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},$={paddingTop:10,borderTop:"1px solid var(--graview-edge)"};export{Y as ActivityRail,te as Here,we as ProblemRows,ve as ProfilePane};
|