graview 0.1.30 → 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.XRJBLH4N.js → chunk.3AGY4QVS.js} +1 -1
- package/dist/preview/chunk.3HXN4BOY.js +1 -0
- package/dist/preview/{chunk.2CIBWZJG.js → chunk.3K6YSVHC.js} +1 -1
- package/dist/preview/{chunk.FWCOJDOD.js → chunk.3TVXGJTU.js} +1 -1
- package/dist/preview/{chunk.NDADLJE6.js → chunk.3TY5NFLY.js} +1 -1
- package/dist/preview/{chunk.UWGWXFWZ.js → chunk.47STJVRV.js} +1 -1
- package/dist/preview/{chunk.34ZMMURV.js → chunk.4HRAQNJO.js} +6 -6
- package/dist/preview/{chunk.QTMWHE5O.js → chunk.4HZ7QTXZ.js} +1 -1
- package/dist/preview/{chunk.3JGGBLRB.js → chunk.4MERAWS2.js} +1 -1
- 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.XS7YFNDU.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.PAVR5TK5.js → chunk.6UGEYZAC.js} +1 -1
- package/dist/preview/chunk.6YCBYL2Y.js +2 -0
- package/dist/preview/{chunk.ZYKAS4BT.js → chunk.7GKUVQVF.js} +1 -1
- package/dist/preview/{chunk.T3VPD7JQ.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.D3IECJ2S.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.YLQB3KBA.js → chunk.CDP2XL66.js} +1 -1
- 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.6XMEU2Q2.js → chunk.COQKECUH.js} +1 -1
- package/dist/preview/{chunk.QTA4ROAK.js → chunk.CWHRDBOF.js} +1 -1
- package/dist/preview/chunk.CX3KL2C5.js +1 -0
- package/dist/preview/{chunk.AK3IHFCF.js → chunk.D75KC3LL.js} +1 -1
- package/dist/preview/chunk.DAZ2VSRD.js +1 -0
- package/dist/preview/{chunk.RIEHYQLK.js → chunk.DHIUSUCL.js} +50 -24
- package/dist/preview/{chunk.3ADPAGPY.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.EF3XNU4O.js +1 -0
- 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.3URFMWXZ.js → chunk.F6ZK7RMB.js} +2 -2
- package/dist/preview/chunk.FSTCX2AI.js +1 -0
- package/dist/preview/{chunk.HHPGWJDO.js → chunk.FWTIUYXH.js} +1 -1
- package/dist/preview/{chunk.6T2Q6NLO.js → chunk.G5NZVPJU.js} +1 -1
- package/dist/preview/{chunk.VG56IUIQ.js → chunk.GO4XBWJO.js} +1 -1
- 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.26CZTUY4.js → chunk.HAIG6NVX.js} +1 -1
- package/dist/preview/{chunk.V7BDAGDE.js → chunk.HLTRQU4Y.js} +1 -1
- package/dist/preview/{chunk.VS7K3SCD.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.X37L5TN5.js → chunk.JFAOHHJJ.js} +1 -1
- package/dist/preview/chunk.JOOQUWLT.js +341 -0
- package/dist/preview/{chunk.4SJUTBDV.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.DT7LHWU2.js → chunk.LLLZEGRK.js} +1 -1
- package/dist/preview/chunk.LR3VDXPI.js +1 -0
- package/dist/preview/{chunk.WYTIOLPP.js → chunk.LXBOVRFI.js} +1 -1
- package/dist/preview/{chunk.42YX6NOY.js → chunk.MAF7C3VM.js} +1 -1
- package/dist/preview/chunk.MNP4JI33.js +5 -0
- package/dist/preview/{chunk.O2LK2AO7.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.DZRTOURR.js → chunk.OC6IWRQ3.js} +1 -1
- 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.JN7DIFR3.js → chunk.PIP6Z563.js} +1 -1
- package/dist/preview/chunk.QGTSHKJL.js +1 -0
- package/dist/preview/chunk.QVVJRSRM.js +1 -0
- package/dist/preview/{chunk.L6OMEYL6.js → chunk.QYZNAUIR.js} +1 -1
- package/dist/preview/chunk.R6K6GF5R.js +1 -0
- package/dist/preview/{chunk.JTNWD2CN.js → chunk.RCKTBOY2.js} +1 -1
- package/dist/preview/{chunk.QNGWEV47.js → chunk.RIJUCHP4.js} +1 -1
- package/dist/preview/chunk.SHTJZ6UX.js +1 -0
- package/dist/preview/{chunk.PKK6FRZR.js → chunk.SYAEBGDC.js} +1 -1
- package/dist/preview/chunk.T5VG5A6V.js +1 -0
- package/dist/preview/{chunk.ERXSYPYL.js → chunk.TAQ764IQ.js} +1 -1
- package/dist/preview/chunk.TCNBCTWO.js +1 -0
- package/dist/preview/{chunk.HHI65WFZ.js → chunk.UATVTXZY.js} +1 -1
- package/dist/preview/{chunk.XSTXV6FP.js → chunk.UBFNZMUX.js} +2 -2
- package/dist/preview/{chunk.WAFDCOOG.js → chunk.UGFJKSHU.js} +1 -1
- 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.BPWNWE7N.js → chunk.VG3O4LWB.js} +1 -1
- package/dist/preview/chunk.WAZ7OGBD.js +1 -0
- package/dist/preview/{chunk.3JNMSOFG.js → chunk.XANVHJQ4.js} +1 -1
- 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.J2ITFGN3.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.2EXGG6BB.js +0 -1
- package/dist/preview/chunk.2NBYNZRD.js +0 -1
- package/dist/preview/chunk.2XAONC66.js +0 -1
- package/dist/preview/chunk.3R4W2P5X.js +0 -1
- package/dist/preview/chunk.3SKKIHU3.js +0 -4
- package/dist/preview/chunk.3VL5WECB.js +0 -1
- package/dist/preview/chunk.4ALKPNXM.js +0 -1
- package/dist/preview/chunk.4HP7UWA2.js +0 -1
- package/dist/preview/chunk.5U5J3ISK.js +0 -1
- package/dist/preview/chunk.6V2RG5JG.js +0 -5
- package/dist/preview/chunk.7BWT5L2L.js +0 -1
- package/dist/preview/chunk.C5CYZNSJ.js +0 -1
- package/dist/preview/chunk.CM6LOIQE.js +0 -88
- package/dist/preview/chunk.FDELO7NY.js +0 -116
- package/dist/preview/chunk.FGVKJWNS.js +0 -6
- package/dist/preview/chunk.GFF2FB2J.js +0 -25
- package/dist/preview/chunk.GLBHQFJ2.js +0 -1
- package/dist/preview/chunk.HSCTWAUV.js +0 -1
- package/dist/preview/chunk.INZUEWC5.js +0 -1
- package/dist/preview/chunk.JH6MU6TX.js +0 -2
- package/dist/preview/chunk.JISMMIMX.js +0 -1
- package/dist/preview/chunk.JPHNKWTY.js +0 -1
- package/dist/preview/chunk.K75FUIZI.js +0 -1
- package/dist/preview/chunk.K776HO42.js +0 -2
- package/dist/preview/chunk.KN3ULTGF.js +0 -1
- package/dist/preview/chunk.KOB6N3SL.js +0 -1
- package/dist/preview/chunk.KQT7WAQE.js +0 -1
- package/dist/preview/chunk.L4DECHXR.js +0 -327
- package/dist/preview/chunk.LQ7V6KEE.js +0 -1
- package/dist/preview/chunk.MD74YVRN.js +0 -3
- package/dist/preview/chunk.MGNP4LAM.js +0 -1
- package/dist/preview/chunk.NCTOBUCT.js +0 -1
- package/dist/preview/chunk.NO52VON3.js +0 -1
- package/dist/preview/chunk.OAF7TUMI.js +0 -1
- package/dist/preview/chunk.OQ4KFN6W.js +0 -1
- package/dist/preview/chunk.OQDETV4X.js +0 -1
- package/dist/preview/chunk.OXQMNIRO.js +0 -1
- package/dist/preview/chunk.OZNW5W4Z.js +0 -1
- package/dist/preview/chunk.QIAKO27D.js +0 -1
- package/dist/preview/chunk.R26DREVU.js +0 -1
- package/dist/preview/chunk.RI3PYG5T.js +0 -19
- package/dist/preview/chunk.RRVIXV7W.js +0 -1
- package/dist/preview/chunk.RYT5U3QM.js +0 -1
- package/dist/preview/chunk.SE5SKFQH.js +0 -1
- package/dist/preview/chunk.SOBC3CTN.js +0 -47
- package/dist/preview/chunk.SOD3PBJM.js +0 -1
- package/dist/preview/chunk.UDSEJKCY.js +0 -1
- package/dist/preview/chunk.UZWWDAGM.js +0 -14
- package/dist/preview/chunk.V5ZYUVMH.js +0 -1
- package/dist/preview/chunk.VOAZBHCG.js +0 -1
- package/dist/preview/chunk.VSZQXB4Q.js +0 -3
- package/dist/preview/chunk.W3S6UXNA.js +0 -1
- package/dist/preview/chunk.Y4UXEL6Y.js +0 -1
- package/dist/preview/chunk.YJUB4OD7.js +0 -1
- package/dist/preview/chunk.YNQDVGZM.js +0 -1
- package/dist/preview/chunk.YV2LJFGS.js +0 -1
- package/dist/preview/chunk.Z2YUYZT4.js +0 -1
- /package/dist/preview/{chunk.EYZ7MHBZ.js → chunk.GZHZLJBF.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{C as Q,E as X,I as Y,K as Z,N as ee,a as T,i as K,l as z,o as D,p as W,t as _,u as j,w as U,z as J}from"./chunk.JOOQUWLT.js";import{F as se,Q as $,Y as G,_ as I,ka as V,ra as q}from"./chunk.6QWV5MVH.js";import{Lb as M,Ub as P,Wb as O,wc as N}from"./chunk.MNP4JI33.js";import{b as k}from"./chunk.AJZBJBMO.js";var o=k(se(),1);function ie(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()!==M.toLowerCase()&&(n.includes(r)||n.push(r))}return n}function ne(e){let t=ie(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 l=k($(),1);function be({rootRef:e,firstLook:t,app:n}){let a=(0,o.useCallback)(()=>e.current,[e]);return t?(0,l.jsx)(ee,{firstLook:t,root:a,app:n}):null}function ve(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 ce(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 te(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 de(e,t){let[n,a]=(0,o.useState)(()=>te(t));return(0,o.useEffect)(()=>{if(!e||typeof document>"u")return;let r=()=>a(te(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 A=e=>e?e.getBoundingClientRect().height:0;function Se(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 u=[...i.children],b=u.find(v=>v.hasAttribute("data-graview-app-bar")),y=u.find(v=>v.hasAttribute("data-embed-content")),h=y?.querySelector("[data-embed-measure]")??null,c=u.find(v=>v.hasAttribute("data-graview-place-line"));return{strip:b,line:c,content:y,measure:h}},s=-1,f=()=>{let{strip:u,line:b,content:y,measure:h}=d(),c=Math.ceil(A(u)+A(b)+A(h||y));c!==s&&(s=c,a.current?.(c))};if(f(),typeof ResizeObserver>"u")return;let m=new ResizeObserver(f),E=()=>{m.disconnect();let{strip:u,line:b,content:y,measure:h}=d();for(let c of[i,u,b,y,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 we=480,le=0;function Ee(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-${++le}`,[]),u=(0,o.useMemo)(()=>e.store??e.remote?.store??ce(t,n),[e.store,e.remote,t,n]),b=e.presence??e.remote?.presence,y=e.hostContext?.theme,h=de(a==="auto"&&y===void 0,r?.scheme),c=a==="auto"?y??h:a,v=(0,o.useMemo)(()=>T(c,r,{scope:`.${g}`}),[c,r,g]);K(e.favicon?P(r):void 0),(0,o.useEffect)(()=>{if(!i||typeof document>"u")return;let w=ne(r);if(!w||document.querySelector(`link[href="${w}"]`))return;let p=document.createElement("link");p.rel="stylesheet",p.href=w,document.head.appendChild(p)},[r,i]);let L=(0,o.useRef)(void 0);(0,o.useLayoutEffect)(()=>{let w=f.current,p=L.current;if(L.current=s,!w||!s)return;let ae=S=>{let R=S.getAttribute("aria-label")??"",x=p&&p!==s?R.startsWith(`${p} \xB7 `)?R.slice(p.length+3):R===p?"":R:R;x===s&&(S.getAttribute("role")==="region"||S.tagName==="SECTION"&&!S.hasAttribute("role"))&&S.setAttribute("role","group");let B=x.startsWith(`${s} \xB7 `)||x===s?x:x?`${s} \xB7 ${x}`:s;B!==R&&S.setAttribute("aria-label",B)},H=()=>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")||ae(S)});H();let C=new MutationObserver(H);return C.observe(w,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["aria-label"]}),()=>C.disconnect()},[s]);let oe=E?`${m}`.replace(/([\d.]+)[sdl]?vh\b/g,(w,p)=>`${+p*E/100}px`):m;return{rootRef:f,scope:g,css:v,scheme:c,store:u,presence:b,brand:r,auto:d==="auto",height:oe}}function Re({rootRef:e,board:t}){let n=(0,o.useCallback)(()=>e.current?.querySelector("[data-embed-content]")??e.current,[e]);return(0,l.jsx)(J,{board:t,anchor:n})}function xe(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,history:e.history,linkedRecords:e.linkedRecords,menuSections:e.menuSections,app:e.app}}function Ae({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:u,store:b,principal:y,views:h}=G();I();let c=r?.has("places")?[]:D({store:b,principal:y,views:h}),v=U();return(0,l.jsx)(_,{brand:u,name:e,description:u?.subtitle,heading:t,faces:n,home:i,places:c,current:a===null?null:W(c,a),reach:d,onFind:E,...g?{switch:g}:{},...n?{scenePlaces:v}:{},tools:(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(X,{clean:s}),(0,l.jsx)(j,{...f?{hostActions:f}:{},...m?{keeping:m}:{}})]})})}var ke=e=>e===!1?2:Math.min(e+1,6);function Fe(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 ue(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 F=()=>typeof performance<"u"?performance.now():Date.now();function Le(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?.(ue(a),{module:r.module,face:n.current.face}),[])}function He(e,t){let n=(0,o.useRef)(null);n.current===null&&(n.current=F());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,F()-(n.current??F())),face:i}))},[])}var re=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,l.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,l.jsx)("span",{children:this.props.content?"This part of the app could not draw.":"Could not draw."}),(0,l.jsx)("button",{type:"button",onClick:()=>this.setState({failed:!1}),style:{padding:"3px 11px",fontSize:"0.8125rem"},children:"Try again"})]}):this.props.children}};export{be as a,ve as b,ce as c,Se as d,we as e,Ee as f,Re as g,xe as h,Ae as i,ke as j,Fe as k,Le as l,He as m,re as n};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{s as P}from"./chunk.XMC7YDWT.js";import{F as A,N as M,Q as y,Y as m,Z as w,a as p,t as b,x as g,xa as S,y as T}from"./chunk.6QWV5MVH.js";import{b as d}from"./chunk.AJZBJBMO.js";var x=d(A(),1),h=d(y(),1),C=S(p(()=>(__graviewPreload(import.meta.url,["./chunk.JOOQUWLT.js","./chunk.6QWV5MVH.js","./chunk.MNP4JI33.js","./chunk.AJZBJBMO.js"]),import("./chunk.UNL2HIF2.js")))),O=C.part((e,n)=>(0,h.jsx)(e.Timeline,{...n}),{what:"The timeline"}),q=()=>C.prefetch();function H({face:e}){return M()?.open?(0,h.jsx)(x.Suspense,{fallback:null,children:(0,h.jsx)(O,{face:e})}):null}var i=d(A(),1),u=d(y(),1),v=new WeakMap,I=e=>{let n=v.get(e);return n||v.set(e,n={ask:null,doors:[],listeners:new Set}),n},k=e=>{for(let n of e.listeners)n()};function N(e,n){let o=I(e);o.ask=n,k(o)}var E=S(p(()=>(__graviewPreload(import.meta.url,["./chunk.E2YEOMPH.js","./chunk.D75KC3LL.js","./chunk.FWTIUYXH.js","./chunk.MAF7C3VM.js","./chunk.JOOQUWLT.js","./chunk.6QWV5MVH.js","./chunk.MNP4JI33.js","./chunk.AJZBJBMO.js"]),import("./chunk.H7EPE74C.js")))),B=E.part((e,n)=>{let o=e.NotifySheet;return(0,u.jsx)(o,{...n})},{what:"Notify me"}),W=E.part((e,n)=>{let o=e.NotifiedList;return(0,u.jsx)(o,{...n})},{quiet:!0}),D=e=>(e.onBehalfOf??e).id!==void 0;function L(e,n,o){let c=a=>o.tryDefinition(a)?.noun??a.replace(/[-_]+/g," "),t=e.on!==void 0?e.on:e.about.length===1?e.about[0]:void 0;if(e.act!==void 0){let a=t!==void 0&&n(t)!==void 0?t:void 0;return{label:"Notify me when someone does this\u2026",choices:[{on:"act",act:e.act,...a!==void 0?{record:a}:{}},...a!==void 0?[{on:"act",act:e.act}]:[]]}}if(t===void 0)return null;let r=n(t);if(r!==void 0)return{label:"Notify me when this changes\u2026",choices:[{on:"changed",record:t},{on:"act",record:t},{on:"reaches",kind:r,condition:"",record:t}]};let s=b(t)!==null?[b(t)]:g(t)?T(t):[];if(s.length!==1||!o.kinds.includes(s[0]))return null;let l=s[0],f=c(l);return{label:`Notify me when ${/^[aeiou]/i.test(f)?"an":"a"} ${f} is added\u2026`,choices:[{on:"created",kind:l},{on:"changed",kind:l},{on:"reaches",kind:l,condition:""}]}}function F(){let{store:e,principal:n,subscriptions:o}=m(),c=D(n);return(0,i.useMemo)(()=>c?t=>{let r=L(t,l=>e.graph.getNode(l)?.kind,e.schema);return r?{id:"notify",items:[{id:"notify-me",label:r.label,run:()=>N(o,{choices:r.choices,returnTo:t.element??null})}]}:null}:null,[c,e,o])}var z=[];function U({children:e}){let n=F(),o=(0,i.useMemo)(()=>n?[n]:z,[n]);return(0,u.jsx)(P,{sections:o,children:e})}function V(){let{subscriptions:e}=m(),n=(0,i.useId)(),o=I(e);(0,i.useEffect)(()=>(o.doors.push(n),k(o),()=>{o.doors.splice(o.doors.indexOf(n),1),k(o)}),[o,n]);let c=(0,i.useMemo)(()=>s=>(o.listeners.add(s),()=>void o.listeners.delete(s)),[o]),t=(0,i.useSyncExternalStore)(c,()=>o.ask,()=>null),r=(0,i.useSyncExternalStore)(c,()=>o.doors[0]===n,()=>!1);return!t||!r?null:(0,u.jsx)(i.Suspense,{fallback:null,children:(0,u.jsx)(B,{ask:t,close:()=>N(e,null)})})}function X({choices:e,label:n="Notify me",style:o,className:c,testId:t="notify-me"}){let{principal:r,subscriptions:s}=m();return D(r)?(0,u.jsx)("button",{type:"button","data-testid":t,className:c,onClick:l=>N(s,{choices:e,returnTo:l.currentTarget}),style:o,children:n}):null}function G(){let e=w(),n=e?.subscriptions,o=e?(e.principal.onBehalfOf??e.principal).id:void 0,[c,t]=(0,i.useState)(0);return(0,i.useEffect)(()=>{if(o===void 0||!n)return;let r=!0,s=()=>void Promise.resolve(n.list(o)).then(f=>r&&t(f.length),()=>r&&t(0));s();let l=n.onChange?.(s);return()=>{r=!1,l?.()}},[n,o]),c}function Y({style:e}){return G()===0?null:(0,u.jsx)(i.Suspense,{fallback:null,children:(0,u.jsx)(W,{...e?{style:e}:{}})})}export{q as a,H as b,F as c,U as d,V as e,X as f,G as g,Y as h};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./chunk.
|
|
1
|
+
import"./chunk.GZHZLJBF.js";import{n as P}from"./chunk.XMC7YDWT.js";import"./chunk.6UGEYZAC.js";import"./chunk.OJGHDWI6.js";import"./chunk.B2GLDIAS.js";import"./chunk.6YCBYL2Y.js";import"./chunk.UGFJKSHU.js";import"./chunk.JOOQUWLT.js";import{F as A,Q as S,Z as b}from"./chunk.6QWV5MVH.js";import{dc as x,fa as L,pa as w}from"./chunk.MNP4JI33.js";import{b as R}from"./chunk.AJZBJBMO.js";var u=R(A(),1);var n=R(S(),1),C={kind:"human"},p={color:"var(--graview-ink-muted)"};function I(e){if(e){if(/^https?:\/\//i.test(e))try{return new URL(e).href}catch{return}return L(e)?e:void 0}}function z(e){let o=b(),t=o?.linkedReads,[i,a]=(0,u.useState)(()=>t?t.answered(e)??"asking":null);return(0,u.useEffect)(()=>{if(!t){a(o?.linkedRecords?"asking":null);return}let d=t.answered(e);if(a(d===void 0?"asking":d),d!==void 0)return;let s=!0;return t.ask(e).then(l=>s&&a(l)),()=>{s=!1}},[t,o?.linkedRecords,e.address,e.kind,e.id]),i}function V({reference:e,as:o}){let t=b(),i=z(e),a={position:"relative",zIndex:x.raised,overflowWrap:"anywhere",minWidth:0,maxWidth:"100%"};if(i==="asking")return(0,n.jsx)("span",{"data-graview-linked":"","data-graview-linked-state":"asking","aria-busy":"true",style:{...p,...a},children:"Linked record"});if(i&&"denied"in i)return(0,n.jsx)("span",{"data-graview-linked":"","data-graview-linked-state":"denied",style:{...p,fontStyle:"italic",...a},children:"linked record (no access)"});if(!i)return(0,n.jsx)("span",{"data-graview-linked":"","data-graview-linked-state":"missing",style:{...p,fontStyle:"italic",...a},children:"linked record (not found)"});let d=I(i.href),s=t?.linkedRecords,l=t?.principal??C,g=s?.open?c=>{c.metaKey||c.ctrlKey||(c.preventDefault(),s.open(e,l))}:void 0,k=(0,n.jsx)("a",{"data-graview-linked-title":"",...d?{href:d}:{role:"link",tabIndex:0},...g?{onClick:g,onKeyDown:c=>!d&&(c.key==="Enter"||c.key===" ")?g(c):void 0}:{},style:{fontWeight:600,color:"inherit",textUnderlineOffset:3,cursor:d||g?"pointer":"default"},children:i.label});return o==="chip"?(0,n.jsx)("span",{"data-graview-linked":"","data-graview-linked-state":"found",title:i.describe,style:{display:"inline-flex",alignItems:"center",minHeight:24,...a},children:k}):(0,n.jsx)(D,{record:i,title:k,base:a})}function D({record:e,title:o,base:t}){return(0,n.jsxs)("span",{"data-graview-linked":"","data-graview-linked-state":"found",style:{display:"grid",gap:2,padding:"8px 10px",border:"1px solid var(--graview-line)",borderRadius:"var(--graview-radius-sm, 6px)",background:"var(--graview-surface)",...t},children:[(0,n.jsxs)("span",{style:{display:"flex",flexWrap:"wrap",alignItems:"baseline",gap:"2px 8px"},children:[o,e.app?(0,n.jsxs)("span",{"data-graview-linked-app":"",style:{...p,fontSize:"0.75rem"},children:["in ",e.app]}):null]}),e.describe?(0,n.jsx)("span",{"data-graview-linked-describe":"",style:{...p,fontSize:"0.8125rem"},children:e.describe}):null,e.card&&e.card.length>0?(0,n.jsx)("span",{"data-graview-linked-card":"",style:{display:"flex",flexWrap:"wrap",gap:"2px 12px",fontSize:"0.8125rem"},children:e.card.map(i=>(0,n.jsxs)("span",{children:[(0,n.jsx)("span",{style:p,children:i.label})," ",i.text]},i.label))}):null]})}function H({relation:e,refs:o,as:t="record",nodeId:i,field:a,style:d}){let s=(0,n.jsx)("span",{"data-graview-linked-list":"",style:{display:"grid",gap:6,minWidth:0,...d},children:o.map(l=>(0,n.jsx)(V,{reference:l,as:t},w(l)))});return i&&a?(0,n.jsx)(K,{nodeId:i,field:a,relation:e,refs:o,drawn:s}):s}function K({nodeId:e,field:o,relation:t,refs:i,drawn:a}){let{fields:d,commit:s}=P(e),l=d.find(f=>f.field===o),[g,k]=(0,u.useState)(!1);if(!l)return a;let c=t.cardinality==="one"?i[0]?w(i[0]):void 0:i.map(w);return(0,n.jsxs)("span",{style:{display:"grid",gap:6,minWidth:0},children:[a,g?(0,n.jsx)(N,{relation:t,value:c,label:"Link another record",onChange:f=>{s(l,f),k(!1)},onCancel:()=>k(!1)}):(0,n.jsx)("button",{type:"button","data-graview-linked-change":"",onClick:()=>k(!0),style:{justifySelf:"start",font:"inherit",fontSize:"0.8125rem",background:"none",border:0,padding:"4px 0",color:"var(--graview-accent)",cursor:"pointer",minHeight:24},children:"Change"})]})}function N({relation:e,value:o,onChange:t,onCancel:i,label:a}){let d=b(),s=d?.linkedRecords,l=d?.principal??C,g=(0,u.useId)(),[k,c]=(0,u.useState)(""),[f,m]=(0,u.useState)("asking");(0,u.useEffect)(()=>{if(!s)return;let r=!0;m("asking");let y=setTimeout(()=>{Promise.resolve().then(()=>s.find({address:e.address,kinds:e.kinds,query:k,limit:20},l)).then(h=>r&&m(Array.isArray(h)?h:"denied"),()=>r&&m([]))},150);return()=>{r=!1,clearTimeout(y)}},[s,e.address,e.kinds.join(","),k,l.kind,l.id]);let v=new Set([o].flat().filter(r=>typeof r=="string")),W=r=>{let y=w(r);if(e.cardinality==="one")return t(y);t(v.has(y)?[...v].filter(h=>h!==y):[...v,y])};return s?(0,n.jsxs)("span",{"data-graview-linked-picker":"",style:{display:"grid",gap:6,minWidth:0},children:[(0,n.jsx)("label",{htmlFor:g,style:{...p,fontSize:"0.8125rem"},children:a}),(0,n.jsx)("input",{id:g,type:"search",value:k,placeholder:`Find one in ${e.address}`,onChange:r=>c(r.target.value),style:{font:"inherit",minHeight:32,padding:"4px 8px",border:"1px solid var(--graview-line)",borderRadius:6,background:"var(--graview-surface)",color:"inherit",minWidth:0}}),f==="asking"?(0,n.jsx)("span",{"aria-busy":"true",style:p,children:"Looking\u2026"}):f==="denied"?(0,n.jsx)("span",{"data-graview-linked-state":"denied",style:{...p,fontStyle:"italic"},children:"linked record (no access)"}):f.length===0?(0,n.jsx)("span",{style:p,children:"Nothing there matches."}):(0,n.jsx)("ul",{role:"list",style:{listStyle:"none",margin:0,padding:0,display:"grid",gap:4},children:f.map(r=>{let y=v.has(w(r));return(0,n.jsx)("li",{children:(0,n.jsxs)("button",{type:"button","data-graview-linked-candidate":w(r),"aria-pressed":y,onClick:()=>W(r),style:{display:"grid",gap:2,width:"100%",textAlign:"start",font:"inherit",padding:"6px 8px",minHeight:32,border:"1px solid var(--graview-line)",borderRadius:6,background:y?"var(--graview-accent-soft, var(--graview-surface))":"var(--graview-surface)",color:"inherit",cursor:"pointer"},children:[(0,n.jsx)("span",{style:{fontWeight:600},children:r.label}),r.describe?(0,n.jsx)("span",{style:{...p,fontSize:"0.8125rem"},children:r.describe}):null]})},w(r))})}),i?(0,n.jsx)("button",{type:"button",onClick:i,style:{justifySelf:"start",font:"inherit",fontSize:"0.8125rem",background:"none",border:0,padding:"4px 0",color:"var(--graview-ink-muted)",cursor:"pointer",minHeight:24},children:"Keep it as it is"}):null]}):(0,n.jsxs)("span",{"data-graview-linked-picker":"","data-graview-linked-state":"no-host",style:p,children:["This page cannot read ",e.address,", so nothing there can be linked here."]})}var U=e=>(0,n.jsx)(H,{...e}),j=e=>(0,n.jsx)(N,{...e});export{N as LinkedPicker,H as LinkedRecordView,j as drawLinkedPicker,U as drawLinkedRecord};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{D as q,E as Z,G as T,J as _,Ja as Q,K as H,La as X,M as C,S as Y,T as j,ca as U,qa as B,qb as K,xb as v,ya as J}from"./chunk.6V2RG5JG.js";var dn=1e4,c=class{constructor(s){this.nodes=s}},en=Symbol.for("@graview/core:far-record"),ln=e=>typeof e=="object"&&e!==null&&e[en]===!0;function un(e){let s={...e.fields,id:`@${e.address}/${e.kind}:${e.id}`,kind:`@${e.address}/${e.kind}`,label:e.label};return Object.defineProperty(s,en,{value:!0}),s}function kn(e){let s=`the linked record in ${e.ref.address}`;return e.reason==="denied"?`${s} is not one this viewer may open`:`${s} has not been read`}var fn="",u=class extends Error{constructor(p,l){super(p);this.sentence=p;this.at=l}},P=class extends u{},R=e=>e!==null&&typeof e=="object"&&!Array.isArray(e)&&!(e instanceof c)&&typeof e.id=="string",nn=e=>{let s=new Set;return new c(e.filter(p=>!s.has(p.id)&&s.add(p.id)))},w=e=>e===null?"nothing":e instanceof c?"a set of records":Array.isArray(e)?"a list":R(e)?"a record":typeof e=="string"?"a word":typeof e;function rn(e,s){let p=s.budget??dn,l=(n,a)=>{if(p-=n,p<0)throw new P("this rule looks at too much of the graph to judge in one go",a)},h=s.today??T(),b=s.now??new Date().toISOString(),A=new Map,k=new Set,V=s.bindings,z=(n,a,r,o)=>{let d=`${n?.id}\0${a}`;if(A.has(d))return A.get(d);if(k.has(d))throw new u(`"${a}"${n?` of ${U(n.kind)}`:""} depends on itself`,o);k.add(d);let t=V;V=void 0;try{let i=$(r,n);return A.set(d,i),i}finally{V=t,k.delete(d)}},E=(n,a,r)=>{l(1,r);let o=s.kinds.get(n.kind),d=o?.computed?.get(a);if(d)return z(n,a,d,r);let t=o?.linked?.get(a);if(t){let y=B(Object.hasOwn(n,a)?n[a]:void 0,t);l(y.length,r);let m=s.linked??J(s.graph),g=y.flatMap(x=>{let D=m?m(x):{unread:!0};return"record"in D?[un(D.record)]:(s.onUnread?.({relation:a,ref:x,reason:"denied"in D?"denied":"unread"}),[])});return t.cardinality==="one"?g[0]??null:new c(g)}let i=Object.hasOwn(n,a);if(o?.fields.has(a)||i){let y=i?Q(n,a,h):void 0;return y===void 0?null:y}let f=o?.edges.get(a);if(f){let y=s.graph.out(n.id,a);return l(y.length,r),f==="one"?y[0]??null:new c(y)}if(a==="id")return n.id;if(ln(n))return null;throw new u(`${U(n.kind)} has no field or relation called "${a}"`,r)},N=(n,a,r)=>{if(n instanceof c)return n;if(n===null)return new c([]);if(R(n))return new c([n]);throw new u(`${r}(\u2026) needs a set of records, and was given ${w(n)}`,a)},G=(n,a,r)=>{if(n===null)return null;if(typeof n=="string")return n;if(typeof n=="number"||typeof n=="boolean")return String(n);throw new u(`${r}(\u2026) needs a word, and was given ${w(n)}`,a)},L=(n,a,r)=>{let o=G(n,a,r);if(o===null)return null;let d=Date.parse(o.length===10?`${o}T00:00:00Z`:o);if(Number.isNaN(d))throw new u(`${r}(\u2026) needs a date, and "${o}" is not one`,a);return d},M=(n,a)=>R(n)&&R(a)?n.id===a.id:R(n)&&typeof a=="string"?n.id===a:typeof n=="string"&&R(a)?n===a.id:Array.isArray(n)&&Array.isArray(a)?n.length===a.length&&n.every((r,o)=>M(r,a[o])):n===a,S=(n,a,r)=>{if(n===null)return!1;if(typeof n=="boolean")return n;throw new u(`${r} must be true or false, and was ${w(n)}`,a)},O=(n,a)=>$(a,n);function $(n,a){switch(l(1,n.at),n.t){case"lit":return n.value;case"list":return n.items.map(r=>$(r,a));case"ident":{let r=V&&Object.hasOwn(V,n.name)?V[n.name]:void 0;if(r!==void 0)return r;if(a)return E(a,n.name,n.at);throw new u(`"${n.name}" means nothing in a rule over the whole graph`,n.at)}case"member":{let r=$(n.object,a);if(r===null)return null;if(R(r))return E(r,n.name,n.at);throw new u(`".${n.name}" needs a record before it, and was given ${w(r)}`,n.at)}case"unary":{let r=$(n.operand,a);if(n.op==="!")return!S(r,n.at,"what follows not");if(r===null)return null;if(typeof r!="number")throw new u(`"-" needs a number, and was given ${w(r)}`,n.at);return-r}case"where":{let r=N($(n.set,a),n.at,"where");return l(r.nodes.length,n.at),new c(r.nodes.filter(o=>S(O(o,n.filter),n.at,"a where condition")))}case"binary":return an(n,a);case"call":return sn(n,a)}}function an(n,a){if(n.op==="&&")return S($(n.left,a),n.at,"each side of and")&&S($(n.right,a),n.at,"each side of and");if(n.op==="||")return S($(n.left,a),n.at,"each side of or")||S($(n.right,a),n.at,"each side of or");let r=$(n.left,a),o=$(n.right,a);if(n.op==="&"||n.op==="|"||n.op==="-"&&(r instanceof c||o instanceof c)){let d=N(r,n.at,n.op).nodes,t=N(o,n.at,n.op).nodes;l(d.length+t.length,n.at);let i=new Set(t.map(f=>f.id));return nn(n.op==="|"?[...d,...t]:d.filter(f=>i.has(f.id)===(n.op==="&")))}switch(n.op){case"==":return M(r,o);case"!=":return!M(r,o);case"in":{if(o===null)return!1;if(o instanceof c)return o.nodes.some(d=>M(r,d));if(Array.isArray(o))return o.some(d=>M(r,d));if(typeof o=="string"&&typeof r=="string")return o.includes(r);throw new u(`"in" needs a list or a set on its right, and was given ${w(o)}`,n.at)}case"<":case"<=":case">":case">=":{if(r===null||o===null)return!1;if(!(typeof r=="number"&&typeof o=="number"||typeof r=="string"&&typeof o=="string"))throw new u(`cannot compare ${w(r)} with ${w(o)}`,n.at);return n.op==="<"?r<o:n.op==="<="?r<=o:n.op===">"?r>o:r>=o}default:{if(r===null||o===null)return null;if(n.op==="+"&&(typeof r=="string"||typeof o=="string")){let d=`${G(r,n.at,"+")}${G(o,n.at,"+")}`;if(d.length>1e4)throw new u("that makes a word too long",n.at);return d}if(typeof r!="number"||typeof o!="number")throw new u(`"${n.op}" needs numbers, and was given ${w(r)} and ${w(o)}`,n.at);return(n.op==="/"||n.op==="%")&&o===0?null:n.op==="+"?r+o:n.op==="-"?r-o:n.op==="*"?r*o:n.op==="/"?r/o:r%o}}}function sn(n,a){let r=(t,i=t)=>{if(n.args.length<t||n.args.length>i)throw new u(`${n.fn}(\u2026) takes ${t===i?t:`${t} to ${i}`} argument${i===1?"":"s"}`,n.at)},o=t=>$(n.args[t],a),d=t=>{let i=o(t);if(typeof i!="string")throw new u(`${n.fn}(\u2026) needs a quoted name, like ${n.fn}('name')`,n.at);return i};switch(n.fn){case"out":case"in":{r(1,2);let t=(y,m)=>n.fn==="out"?s.graph.out(y,m):s.graph.in(y,m);if(n.args.length===2){let y=N(o(0),n.at,n.fn).nodes,m=d(1);return nn(y.flatMap(g=>{let x=t(g.id,m);return l(x.length+1,n.at),x}))}let i=d(0);if(!a)throw new u(`${n.fn}('${i}') needs a record to start from`,n.at);let f=t(a.id,i);return l(f.length,n.at),new c(f)}case"all":{r(1,2);let t=s.graph.nodesOfKind(d(0),{archived:n.args.length===2?o(1):!1});return l(t.length,n.at),new c(t)}case"archived":return r(0,1),X(n.args.length===1?o(0):a);case"count":return r(1),N(o(0),n.at,"count").nodes.length;case"exists":return r(1),N(o(0),n.at,"exists").nodes.length>0;case"every":case"some":{r(2);let t=N(o(0),n.at,n.fn);l(t.nodes.length,n.at);let i=f=>S(O(f,n.args[1]),n.at,`the condition in ${n.fn}(\u2026)`);return n.fn==="every"?t.nodes.every(i):t.nodes.some(i)}case"sum":case"min":case"max":{r(2);let t=N(o(0),n.at,n.fn);l(t.nodes.length,n.at);let i=n.args[1],f=i.t==="lit"&&typeof i.value=="string"?i.value:void 0,y=i.t==="ident"?`'${i.name}'`:f!==void 0?`'${f}'`:"\u2026",m=t.nodes.map(g=>i.t==="ident"?E(g,i.name,n.at):f!==void 0?E(g,f,n.at):O(g,i)).filter(g=>{if(g===null)return!1;if(typeof g!="number")throw new u(`${n.fn}(\u2026, ${y}) needs a number for each member, and found ${w(g)}`,n.at);return!0});return n.fn==="sum"?m.reduce((g,x)=>g+x,0):m.length===0?null:n.fn==="min"?Math.min(...m):Math.max(...m)}case"fact":{r(1);let t=d(0),i=s.kinds.get(fn)?.computed?.get(t);if(!i)throw new u(`no fact is called "${t}"`,n.at);return z(null,t,i,n.at)}case"first":return r(1),N(o(0),n.at,"first").nodes[0]??null;case"sort":{r(2,3);let t=N(o(0),n.at,"sort"),i=n.args.length===3?o(2):"asc";if(i!=="asc"&&i!=="desc")throw new u("sort(\u2026) goes 'asc' or 'desc'",n.at);let f=t.nodes.length;l(f+f*Math.ceil(Math.log2(f+1)),n.at);let y=t.nodes.map((g,x)=>({node:g,i:x,key:O(g,n.args[1])})),m=i==="desc"?-1:1;return y.sort((g,x)=>W(g.key,x.key,m,n.at)||g.i-x.i),new c(y.map(g=>g.node))}case"either":{if(n.args.length<1)throw new u("either(\u2026) takes at least one argument",n.at);for(let t=0;t<n.args.length;t++){let i=o(t);if(i!==null&&!(i instanceof c&&i.nodes.length===0))return i}return null}case"present":{r(1);let t=o(0);return t===null||t===""?!1:Array.isArray(t)?t.length>0:t instanceof c?t.nodes.length>0:!0}case"len":{r(1);let t=o(0);if(t===null)return 0;if(typeof t=="string"||Array.isArray(t))return t.length;if(t instanceof c)return t.nodes.length;throw new u(`len(\u2026) needs a word or a list, and was given ${w(t)}`,n.at)}case"contains":case"startsWith":{r(2);let t=o(0),i=o(1);if(t===null||i===null)return!1;if(n.fn==="contains"&&Array.isArray(t))return t.some(m=>M(m,i));let f=G(t,n.at,n.fn),y=G(i,n.at,n.fn);return n.fn==="contains"?f.toLowerCase().includes(y.toLowerCase()):f.startsWith(y)}case"lower":{r(1);let t=G(o(0),n.at,"lower");return t===null?null:t.toLowerCase()}case"today":return r(0),h;case"now":return r(0),b;case"date":{r(1);let t=L(o(0),n.at,"date");return t===null?null:new Date(t).toISOString().slice(0,10)}case"days":case"hours":{r(2);let t=L(o(0),n.at,n.fn),i=L(o(1),n.at,n.fn);if(t===null||i===null)return null;let f=(i-t)/(n.fn==="days"?864e5:36e5);return n.fn==="days"?Math.round(f):f}case"if":return r(3),S(o(0),n.at,"the condition in if(\u2026)")?o(1):o(2);default:throw new u(`"${n.fn}" is not a function the rule language knows`,n.at)}}function W(n,a,r,o){if(n===null||a===null)return n===a?0:n===null?1:-1;if(Array.isArray(n)&&Array.isArray(a)){for(let t=0;t<Math.max(n.length,a.length);t++){let i=W(n[t]??null,a[t]??null,r,o);if(i!==0)return i}return 0}let d=t=>typeof t=="number"||typeof t=="string"||typeof t=="boolean"?typeof t:w(t);if(d(n)!==d(a)||typeof n=="object"||typeof a=="object")throw new u(`sort(\u2026) cannot put ${w(n)} and ${w(a)} in order`,o);return typeof n=="string"?r*(n<a?-1:n>a?1:0):r*(Number(n)-Number(a))}return $(e,s.subject)}var xn=["out","in","all","count","exists","every","some","sum","min","max","present","len","contains","startsWith","lower","today","now","date","days","hours","if","first","sort","either","fact","archived"];var Sn=(e,s,p,l)=>({severity:"error",code:e,path:s,message:p,...l?{fix:l}:{}}),Rn=(e,s,p,l)=>({severity:"warning",code:e,path:s,message:p,...l?{fix:l}:{}}),Vn=e=>e.some(s=>s.severity==="error");function Gn(e){return e.map(s=>`${s.severity==="error"?"\u2717":s.severity==="warning"?"!":"\xB7"} ${s.path||"(document)"}: ${s.message}${s.fix?` \u2014 ${s.fix}`:""}`).join(`
|
|
1
|
+
import{E as q,F as Z,H as T,K as _,Ka as Q,L as H,Ma as X,N as C,T as Y,U as j,da as U,ra as B,rb as K,yb as v,za as J}from"./chunk.MNP4JI33.js";var dn=1e4,c=class{constructor(s){this.nodes=s}},en=Symbol.for("@graview/core:far-record"),ln=e=>typeof e=="object"&&e!==null&&e[en]===!0;function un(e){let s={...e.fields,id:`@${e.address}/${e.kind}:${e.id}`,kind:`@${e.address}/${e.kind}`,label:e.label};return Object.defineProperty(s,en,{value:!0}),s}function kn(e){let s=`the linked record in ${e.ref.address}`;return e.reason==="denied"?`${s} is not one this viewer may open`:`${s} has not been read`}var fn="",u=class extends Error{constructor(p,l){super(p);this.sentence=p;this.at=l}},P=class extends u{},R=e=>e!==null&&typeof e=="object"&&!Array.isArray(e)&&!(e instanceof c)&&typeof e.id=="string",nn=e=>{let s=new Set;return new c(e.filter(p=>!s.has(p.id)&&s.add(p.id)))},w=e=>e===null?"nothing":e instanceof c?"a set of records":Array.isArray(e)?"a list":R(e)?"a record":typeof e=="string"?"a word":typeof e;function rn(e,s){let p=s.budget??dn,l=(n,a)=>{if(p-=n,p<0)throw new P("this rule looks at too much of the graph to judge in one go",a)},h=s.today??T(),b=s.now??new Date().toISOString(),A=new Map,k=new Set,V=s.bindings,z=(n,a,r,o)=>{let d=`${n?.id}\0${a}`;if(A.has(d))return A.get(d);if(k.has(d))throw new u(`"${a}"${n?` of ${U(n.kind)}`:""} depends on itself`,o);k.add(d);let t=V;V=void 0;try{let i=$(r,n);return A.set(d,i),i}finally{V=t,k.delete(d)}},E=(n,a,r)=>{l(1,r);let o=s.kinds.get(n.kind),d=o?.computed?.get(a);if(d)return z(n,a,d,r);let t=o?.linked?.get(a);if(t){let y=B(Object.hasOwn(n,a)?n[a]:void 0,t);l(y.length,r);let m=s.linked??J(s.graph),g=y.flatMap(x=>{let D=m?m(x):{unread:!0};return"record"in D?[un(D.record)]:(s.onUnread?.({relation:a,ref:x,reason:"denied"in D?"denied":"unread"}),[])});return t.cardinality==="one"?g[0]??null:new c(g)}let i=Object.hasOwn(n,a);if(o?.fields.has(a)||i){let y=i?Q(n,a,h):void 0;return y===void 0?null:y}let f=o?.edges.get(a);if(f){let y=s.graph.out(n.id,a);return l(y.length,r),f==="one"?y[0]??null:new c(y)}if(a==="id")return n.id;if(ln(n))return null;throw new u(`${U(n.kind)} has no field or relation called "${a}"`,r)},N=(n,a,r)=>{if(n instanceof c)return n;if(n===null)return new c([]);if(R(n))return new c([n]);throw new u(`${r}(\u2026) needs a set of records, and was given ${w(n)}`,a)},G=(n,a,r)=>{if(n===null)return null;if(typeof n=="string")return n;if(typeof n=="number"||typeof n=="boolean")return String(n);throw new u(`${r}(\u2026) needs a word, and was given ${w(n)}`,a)},L=(n,a,r)=>{let o=G(n,a,r);if(o===null)return null;let d=Date.parse(o.length===10?`${o}T00:00:00Z`:o);if(Number.isNaN(d))throw new u(`${r}(\u2026) needs a date, and "${o}" is not one`,a);return d},M=(n,a)=>R(n)&&R(a)?n.id===a.id:R(n)&&typeof a=="string"?n.id===a:typeof n=="string"&&R(a)?n===a.id:Array.isArray(n)&&Array.isArray(a)?n.length===a.length&&n.every((r,o)=>M(r,a[o])):n===a,S=(n,a,r)=>{if(n===null)return!1;if(typeof n=="boolean")return n;throw new u(`${r} must be true or false, and was ${w(n)}`,a)},O=(n,a)=>$(a,n);function $(n,a){switch(l(1,n.at),n.t){case"lit":return n.value;case"list":return n.items.map(r=>$(r,a));case"ident":{let r=V&&Object.hasOwn(V,n.name)?V[n.name]:void 0;if(r!==void 0)return r;if(a)return E(a,n.name,n.at);throw new u(`"${n.name}" means nothing in a rule over the whole graph`,n.at)}case"member":{let r=$(n.object,a);if(r===null)return null;if(R(r))return E(r,n.name,n.at);throw new u(`".${n.name}" needs a record before it, and was given ${w(r)}`,n.at)}case"unary":{let r=$(n.operand,a);if(n.op==="!")return!S(r,n.at,"what follows not");if(r===null)return null;if(typeof r!="number")throw new u(`"-" needs a number, and was given ${w(r)}`,n.at);return-r}case"where":{let r=N($(n.set,a),n.at,"where");return l(r.nodes.length,n.at),new c(r.nodes.filter(o=>S(O(o,n.filter),n.at,"a where condition")))}case"binary":return an(n,a);case"call":return sn(n,a)}}function an(n,a){if(n.op==="&&")return S($(n.left,a),n.at,"each side of and")&&S($(n.right,a),n.at,"each side of and");if(n.op==="||")return S($(n.left,a),n.at,"each side of or")||S($(n.right,a),n.at,"each side of or");let r=$(n.left,a),o=$(n.right,a);if(n.op==="&"||n.op==="|"||n.op==="-"&&(r instanceof c||o instanceof c)){let d=N(r,n.at,n.op).nodes,t=N(o,n.at,n.op).nodes;l(d.length+t.length,n.at);let i=new Set(t.map(f=>f.id));return nn(n.op==="|"?[...d,...t]:d.filter(f=>i.has(f.id)===(n.op==="&")))}switch(n.op){case"==":return M(r,o);case"!=":return!M(r,o);case"in":{if(o===null)return!1;if(o instanceof c)return o.nodes.some(d=>M(r,d));if(Array.isArray(o))return o.some(d=>M(r,d));if(typeof o=="string"&&typeof r=="string")return o.includes(r);throw new u(`"in" needs a list or a set on its right, and was given ${w(o)}`,n.at)}case"<":case"<=":case">":case">=":{if(r===null||o===null)return!1;if(!(typeof r=="number"&&typeof o=="number"||typeof r=="string"&&typeof o=="string"))throw new u(`cannot compare ${w(r)} with ${w(o)}`,n.at);return n.op==="<"?r<o:n.op==="<="?r<=o:n.op===">"?r>o:r>=o}default:{if(r===null||o===null)return null;if(n.op==="+"&&(typeof r=="string"||typeof o=="string")){let d=`${G(r,n.at,"+")}${G(o,n.at,"+")}`;if(d.length>1e4)throw new u("that makes a word too long",n.at);return d}if(typeof r!="number"||typeof o!="number")throw new u(`"${n.op}" needs numbers, and was given ${w(r)} and ${w(o)}`,n.at);return(n.op==="/"||n.op==="%")&&o===0?null:n.op==="+"?r+o:n.op==="-"?r-o:n.op==="*"?r*o:n.op==="/"?r/o:r%o}}}function sn(n,a){let r=(t,i=t)=>{if(n.args.length<t||n.args.length>i)throw new u(`${n.fn}(\u2026) takes ${t===i?t:`${t} to ${i}`} argument${i===1?"":"s"}`,n.at)},o=t=>$(n.args[t],a),d=t=>{let i=o(t);if(typeof i!="string")throw new u(`${n.fn}(\u2026) needs a quoted name, like ${n.fn}('name')`,n.at);return i};switch(n.fn){case"out":case"in":{r(1,2);let t=(y,m)=>n.fn==="out"?s.graph.out(y,m):s.graph.in(y,m);if(n.args.length===2){let y=N(o(0),n.at,n.fn).nodes,m=d(1);return nn(y.flatMap(g=>{let x=t(g.id,m);return l(x.length+1,n.at),x}))}let i=d(0);if(!a)throw new u(`${n.fn}('${i}') needs a record to start from`,n.at);let f=t(a.id,i);return l(f.length,n.at),new c(f)}case"all":{r(1,2);let t=s.graph.nodesOfKind(d(0),{archived:n.args.length===2?o(1):!1});return l(t.length,n.at),new c(t)}case"archived":return r(0,1),X(n.args.length===1?o(0):a);case"count":return r(1),N(o(0),n.at,"count").nodes.length;case"exists":return r(1),N(o(0),n.at,"exists").nodes.length>0;case"every":case"some":{r(2);let t=N(o(0),n.at,n.fn);l(t.nodes.length,n.at);let i=f=>S(O(f,n.args[1]),n.at,`the condition in ${n.fn}(\u2026)`);return n.fn==="every"?t.nodes.every(i):t.nodes.some(i)}case"sum":case"min":case"max":{r(2);let t=N(o(0),n.at,n.fn);l(t.nodes.length,n.at);let i=n.args[1],f=i.t==="lit"&&typeof i.value=="string"?i.value:void 0,y=i.t==="ident"?`'${i.name}'`:f!==void 0?`'${f}'`:"\u2026",m=t.nodes.map(g=>i.t==="ident"?E(g,i.name,n.at):f!==void 0?E(g,f,n.at):O(g,i)).filter(g=>{if(g===null)return!1;if(typeof g!="number")throw new u(`${n.fn}(\u2026, ${y}) needs a number for each member, and found ${w(g)}`,n.at);return!0});return n.fn==="sum"?m.reduce((g,x)=>g+x,0):m.length===0?null:n.fn==="min"?Math.min(...m):Math.max(...m)}case"fact":{r(1);let t=d(0),i=s.kinds.get(fn)?.computed?.get(t);if(!i)throw new u(`no fact is called "${t}"`,n.at);return z(null,t,i,n.at)}case"first":return r(1),N(o(0),n.at,"first").nodes[0]??null;case"sort":{r(2,3);let t=N(o(0),n.at,"sort"),i=n.args.length===3?o(2):"asc";if(i!=="asc"&&i!=="desc")throw new u("sort(\u2026) goes 'asc' or 'desc'",n.at);let f=t.nodes.length;l(f+f*Math.ceil(Math.log2(f+1)),n.at);let y=t.nodes.map((g,x)=>({node:g,i:x,key:O(g,n.args[1])})),m=i==="desc"?-1:1;return y.sort((g,x)=>W(g.key,x.key,m,n.at)||g.i-x.i),new c(y.map(g=>g.node))}case"either":{if(n.args.length<1)throw new u("either(\u2026) takes at least one argument",n.at);for(let t=0;t<n.args.length;t++){let i=o(t);if(i!==null&&!(i instanceof c&&i.nodes.length===0))return i}return null}case"present":{r(1);let t=o(0);return t===null||t===""?!1:Array.isArray(t)?t.length>0:t instanceof c?t.nodes.length>0:!0}case"len":{r(1);let t=o(0);if(t===null)return 0;if(typeof t=="string"||Array.isArray(t))return t.length;if(t instanceof c)return t.nodes.length;throw new u(`len(\u2026) needs a word or a list, and was given ${w(t)}`,n.at)}case"contains":case"startsWith":{r(2);let t=o(0),i=o(1);if(t===null||i===null)return!1;if(n.fn==="contains"&&Array.isArray(t))return t.some(m=>M(m,i));let f=G(t,n.at,n.fn),y=G(i,n.at,n.fn);return n.fn==="contains"?f.toLowerCase().includes(y.toLowerCase()):f.startsWith(y)}case"lower":{r(1);let t=G(o(0),n.at,"lower");return t===null?null:t.toLowerCase()}case"today":return r(0),h;case"now":return r(0),b;case"date":{r(1);let t=L(o(0),n.at,"date");return t===null?null:new Date(t).toISOString().slice(0,10)}case"days":case"hours":{r(2);let t=L(o(0),n.at,n.fn),i=L(o(1),n.at,n.fn);if(t===null||i===null)return null;let f=(i-t)/(n.fn==="days"?864e5:36e5);return n.fn==="days"?Math.round(f):f}case"if":return r(3),S(o(0),n.at,"the condition in if(\u2026)")?o(1):o(2);default:throw new u(`"${n.fn}" is not a function the rule language knows`,n.at)}}function W(n,a,r,o){if(n===null||a===null)return n===a?0:n===null?1:-1;if(Array.isArray(n)&&Array.isArray(a)){for(let t=0;t<Math.max(n.length,a.length);t++){let i=W(n[t]??null,a[t]??null,r,o);if(i!==0)return i}return 0}let d=t=>typeof t=="number"||typeof t=="string"||typeof t=="boolean"?typeof t:w(t);if(d(n)!==d(a)||typeof n=="object"||typeof a=="object")throw new u(`sort(\u2026) cannot put ${w(n)} and ${w(a)} in order`,o);return typeof n=="string"?r*(n<a?-1:n>a?1:0):r*(Number(n)-Number(a))}return $(e,s.subject)}var xn=["out","in","all","count","exists","every","some","sum","min","max","present","len","contains","startsWith","lower","today","now","date","days","hours","if","first","sort","either","fact","archived"];var Sn=(e,s,p,l)=>({severity:"error",code:e,path:s,message:p,...l?{fix:l}:{}}),Rn=(e,s,p,l)=>({severity:"warning",code:e,path:s,message:p,...l?{fix:l}:{}}),Vn=e=>e.some(s=>s.severity==="error");function Gn(e){return e.map(s=>`${s.severity==="error"?"\u2717":s.severity==="warning"?"!":"\xB7"} ${s.path||"(document)"}: ${s.message}${s.fix?` \u2014 ${s.fix}`:""}`).join(`
|
|
2
2
|
`)}var Dn=["money","percent","date","relative","upper","lower","count","words","and","plural","excerpt"],cn={getNode:()=>{},allNodes:()=>[],allEdges:()=>[],nodesOfKind:()=>[],edgesOfKind:()=>[],out:()=>[],in:()=>[],neighbors:()=>[],has:()=>!1};function _n(e,s,p,l=[],h,b=F){return I(e,s,p,l,h,b)}var pn=(e,s)=>e.capital?Y(s):s;function yn(e){return e?s=>{let p=e.tryDefinition(s.kind)?.label;return p?p(s):F(s)}:F}var tn=["zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"],on=["","","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"];function gn(e,s){return!Number.isInteger(e)||e<0||e>99?C(e,s):e<20?tn[e]:e%10===0?on[e/10]:`${on[Math.floor(e/10)]}-${tn[e%10]}`}function hn(e){return/[^aeiou]y$/i.test(e)?`${e.slice(0,-1)}ies`:/(s|x|z|ch|sh)$/i.test(e)?`${e}es`:`${e}s`}var F=e=>String(e.name??e.title??e.label??e.id);function I(e,s,p,l=[],h,b=F){if(s==="plural"){let A=e instanceof c?e.nodes.length:Array.isArray(e)?e.length:typeof e=="number"?e:null;return A===null||l[0]===void 0?"\u2014":A===1?l[0]:l[1]??hn(l[0])}if(e===null)return"\u2014";if(e instanceof c)return s==="count"?String(e.nodes.length):s==="and"?j(e.nodes.map(b)):e.nodes.map(b).join(", ");if(Array.isArray(e)){if(s==="count")return String(e.length);let A=e.map(k=>I(k,void 0,p,[],h,b));return s==="and"?j(A):A.join(", ")}if(typeof e=="object")return b(e);switch(s){case"words":return typeof e=="number"?gn(e,h?.locale):String(e);case"money":return typeof e=="number"?K(e,h):String(e);case"percent":return typeof e=="number"?C(e,h?.locale,{style:"percent",maximumFractionDigits:0}):String(e);case"upper":return String(e).toUpperCase();case"lower":return String(e).toLowerCase();case"excerpt":return v(String(e),Number(l[0])||void 0);case"date":return _(String(e).slice(0,10),h?.locale);case"relative":{let A=Date.parse(String(e).length===10?`${e}T00:00:00Z`:String(e));if(Number.isNaN(A))return String(e);let k=Math.round((A-Date.parse(`${p}T00:00:00Z`))/864e5);return k===0?"today":k===1?"tomorrow":k===-1?"yesterday":k>0?`in ${k} days`:`${-k} days ago`}default:return typeof e=="string"&&q.test(e)?_(e,h?.locale):typeof e=="string"&&Z.test(e)?H(e,h?.locale):String(e)}}function Cn(e,s){let p=s.today??T(),l=s.name??yn(s.graph?.schema);return e.map(h=>{if(h.text!==void 0)return h.text;try{let b=rn(h.expr,{graph:s.graph??cn,subject:s.node,kinds:s.kinds,today:p,budget:s.budget??500,...s.bindings?{bindings:s.bindings}:{}});return pn(h,I(b,h.format,p,h.formatArgs,s.money,l))}catch(b){if(b instanceof u)return"\u2014";throw b}}).join("")}export{c as a,kn as b,fn as c,u as d,P as e,rn as f,xn as g,Sn as h,Rn as i,Vn as j,Gn as k,Dn as l,cn as m,_n as n,pn as o,yn as p,Cn as q};
|