graview 0.1.51 → 0.1.52
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.2EB7COX5.js +1 -0
- package/dist/preview/{chunk.K7ECYKZL.js → chunk.2K3YQJW3.js} +1 -1
- package/dist/preview/{chunk.PPZ2TOB5.js → chunk.2X3UZJWI.js} +1 -1
- package/dist/preview/{chunk.KRODTMGR.js → chunk.337JMOTL.js} +1 -1
- package/dist/preview/{chunk.5ZAK57JA.js → chunk.3FKP32RG.js} +2 -2
- package/dist/preview/{chunk.ACB4TD4W.js → chunk.3TME4BG3.js} +1 -1
- package/dist/preview/chunk.3ZQAPPJ5.js +18 -0
- package/dist/preview/{chunk.EA2NMVRE.js → chunk.4LI73QOY.js} +1 -1
- package/dist/preview/{chunk.UIWI4GKW.js → chunk.4VI3EYDL.js} +1 -1
- package/dist/preview/{chunk.OHDJYGH7.js → chunk.4ZLCMATU.js} +1 -1
- package/dist/preview/{chunk.GJQF7I22.js → chunk.52J42KR5.js} +1 -1
- package/dist/preview/{chunk.4EZFOZBA.js → chunk.5DDHFNZM.js} +1 -1
- package/dist/preview/chunk.5LWPNOJA.js +1 -0
- package/dist/preview/{chunk.FKJ3HIA5.js → chunk.5WU2UTP7.js} +1 -1
- package/dist/preview/{chunk.OPCBZNKF.js → chunk.63SRVTG2.js} +2 -2
- package/dist/preview/{chunk.CV55N3Y6.js → chunk.6BA6RUK7.js} +1 -1
- package/dist/preview/{chunk.WFHFWJ6E.js → chunk.6CY3EA6U.js} +1 -1
- package/dist/preview/{chunk.IBJBCZKG.js → chunk.6JERQFZI.js} +1 -1
- package/dist/preview/{chunk.IFL2MYTQ.js → chunk.6NIE3ILA.js} +1 -1
- package/dist/preview/{chunk.JMDKAP23.js → chunk.6QNBUBGD.js} +1 -1
- package/dist/preview/chunk.6YGRRXJB.js +2 -0
- package/dist/preview/{chunk.JX2C3HVD.js → chunk.7354O67H.js} +1 -1
- package/dist/preview/{chunk.MY5OXSS7.js → chunk.73EKJ4JN.js} +1 -1
- package/dist/preview/{chunk.CQPNDJAC.js → chunk.7EA7THSM.js} +1 -1
- package/dist/preview/{chunk.IUIDDNN3.js → chunk.7FMS57QO.js} +1 -1
- package/dist/preview/{chunk.3TVAE7LE.js → chunk.7FZY5E2U.js} +1 -1
- package/dist/preview/{chunk.R5R7CLOU.js → chunk.7IOC6U3C.js} +1 -1
- package/dist/preview/{chunk.JI2UVZUU.js → chunk.7KZ44FEU.js} +1 -1
- package/dist/preview/chunk.7OAXW7QF.js +1 -0
- package/dist/preview/chunk.7SNIX56B.js +1 -0
- package/dist/preview/{chunk.OJ64WTLW.js → chunk.7UJZP3YK.js} +2 -2
- package/dist/preview/{chunk.353CGK6C.js → chunk.7UXDIEPK.js} +1 -1
- package/dist/preview/{chunk.NQ26KMSQ.js → chunk.7XJ3XQZD.js} +1 -1
- package/dist/preview/chunk.AI2HBKVP.js +359 -0
- package/dist/preview/{chunk.KOBCLWPC.js → chunk.BDQ4FUKO.js} +1 -1
- package/dist/preview/{chunk.ESSENNHM.js → chunk.BHPZK4WJ.js} +2 -2
- package/dist/preview/{chunk.W2DKFQ6R.js → chunk.BJL6EL6B.js} +1 -1
- package/dist/preview/{chunk.UK5F3S2N.js → chunk.C4EPMV7O.js} +1 -1
- package/dist/preview/{chunk.DQNN5FE5.js → chunk.C4UNAJWC.js} +1 -1
- package/dist/preview/{chunk.Z7N3MJ36.js → chunk.C7EEYSAM.js} +1 -1
- package/dist/preview/{chunk.7RIFDWDF.js → chunk.CBGKWYGI.js} +1 -1
- package/dist/preview/chunk.CC7E6NUQ.js +1 -0
- package/dist/preview/chunk.CHMUL36A.js +1 -0
- package/dist/preview/{chunk.VICCAWAN.js → chunk.CV4QA4ZF.js} +1 -1
- package/dist/preview/{chunk.5ON3JSAK.js → chunk.D2T563AA.js} +1 -1
- package/dist/preview/{chunk.B7LBG4UP.js → chunk.D62V3TBW.js} +1 -1
- package/dist/preview/{chunk.2W45NM7Q.js → chunk.DC7M56NM.js} +2 -2
- package/dist/preview/{chunk.6KYWJXZR.js → chunk.DGWNVDZB.js} +1 -1
- package/dist/preview/{chunk.TBSPEO2L.js → chunk.DIS7JS7X.js} +1 -1
- package/dist/preview/{chunk.FYDDFOSD.js → chunk.DVLWSCIC.js} +1 -1
- package/dist/preview/{chunk.FU4YSVWX.js → chunk.DXZ5VYCQ.js} +1 -1
- package/dist/preview/{chunk.PMV6XVVZ.js → chunk.EHOEMVQP.js} +1 -1
- package/dist/preview/{chunk.B4PUI3GO.js → chunk.EIWTZC4A.js} +1 -1
- package/dist/preview/chunk.EME5HQ3H.js +1 -0
- package/dist/preview/{chunk.HVX7LFWR.js → chunk.FEBCIEI3.js} +1 -1
- package/dist/preview/{chunk.IE4ZJQV3.js → chunk.FJC6PMOG.js} +1 -1
- package/dist/preview/{chunk.2W2YVB6X.js → chunk.FJEXINFF.js} +1 -1
- package/dist/preview/{chunk.APFRPN5S.js → chunk.FLNYLE6S.js} +1 -1
- package/dist/preview/{chunk.2VJ52LGS.js → chunk.G7XKQNOL.js} +1 -1
- package/dist/preview/{chunk.SSAY4ITS.js → chunk.GL3YVGAP.js} +2 -2
- package/dist/preview/{chunk.K7RKWB2K.js → chunk.GZHEGKPF.js} +1 -1
- package/dist/preview/{chunk.KK46XLGU.js → chunk.HSGUXMAO.js} +1 -1
- package/dist/preview/{chunk.AZOW57MT.js → chunk.HST7BYFW.js} +1 -1
- package/dist/preview/{chunk.T3RTFTOZ.js → chunk.I2W7HSBU.js} +1 -1
- package/dist/preview/{chunk.XCQ7ZPR5.js → chunk.I43ONAEL.js} +1 -1
- package/dist/preview/{chunk.NVRK6A7T.js → chunk.INL4OZI7.js} +1 -1
- package/dist/preview/{chunk.ALCH5H7U.js → chunk.IVI3HRSF.js} +1 -1
- package/dist/preview/{chunk.XCCBUWMC.js → chunk.J263VQF5.js} +1 -1
- package/dist/preview/{chunk.TNL2BVCH.js → chunk.J2R55TM7.js} +1 -1
- package/dist/preview/{chunk.U7SNDY3F.js → chunk.J6IB2HUZ.js} +1 -1
- package/dist/preview/{chunk.Y5AMZBHA.js → chunk.JOWJNIWH.js} +2 -2
- package/dist/preview/{chunk.7GAC7U34.js → chunk.JQBP6QWQ.js} +1 -1
- package/dist/preview/chunk.JV7FLVUV.js +1 -0
- package/dist/preview/{chunk.SJKHVIHA.js → chunk.KFTZLNHY.js} +2 -2
- package/dist/preview/{chunk.NZDHXREL.js → chunk.KPUX27ZT.js} +1 -1
- package/dist/preview/chunk.KSJ3J5UN.js +1 -0
- package/dist/preview/chunk.LESRQN3Y.js +32 -0
- package/dist/preview/{chunk.CTOBNZLM.js → chunk.LSL25VXW.js} +1 -1
- package/dist/preview/{chunk.SRFZKDQ6.js → chunk.LTJYKQJG.js} +1 -1
- package/dist/preview/{chunk.32BOL7OL.js → chunk.LXJW2Z2M.js} +1 -1
- package/dist/preview/{chunk.WQLAIEWJ.js → chunk.M33LUF3Q.js} +1 -1
- package/dist/preview/{chunk.B6LKLV32.js → chunk.MBNZ2HK7.js} +1 -1
- package/dist/preview/{chunk.SJYQ72EC.js → chunk.MYKRJ4SV.js} +1 -1
- package/dist/preview/{chunk.UWFEXEY3.js → chunk.N7D5LKBI.js} +1 -1
- package/dist/preview/{chunk.AL7LFNOS.js → chunk.NAPTE3S6.js} +1 -1
- package/dist/preview/{chunk.MX3Y3LPH.js → chunk.NB6WN4DO.js} +1 -1
- package/dist/preview/{chunk.MN6WHE4B.js → chunk.NHIPVAGR.js} +1 -1
- package/dist/preview/chunk.NICCIJV4.js +1 -0
- package/dist/preview/{chunk.MRXQBEPQ.js → chunk.NQPNK6I5.js} +1 -1
- package/dist/preview/{chunk.MG3DMURZ.js → chunk.NVNQSZ43.js} +1 -1
- package/dist/preview/{chunk.CI4DEKPX.js → chunk.NWK4E7TJ.js} +1 -1
- package/dist/preview/{chunk.HASVT7IC.js → chunk.NZB5S5UO.js} +1 -1
- package/dist/preview/{chunk.WESWDXRW.js → chunk.OS3WZV6C.js} +1 -1
- package/dist/preview/{chunk.OU5TRY4N.js → chunk.OYRZ2DEI.js} +1 -1
- package/dist/preview/{chunk.4T67XS2D.js → chunk.P5PXWOHI.js} +1 -1
- package/dist/preview/{chunk.KYKHZZT7.js → chunk.PRCWGE7A.js} +1 -1
- package/dist/preview/{chunk.DUY27OJV.js → chunk.PXHBPLTQ.js} +1 -1
- package/dist/preview/chunk.PXVJBL2C.js +1 -0
- package/dist/preview/{chunk.V4GAOZAW.js → chunk.Q3XKNZQW.js} +1 -1
- package/dist/preview/chunk.Q5IAXTF5.js +25 -0
- package/dist/preview/{chunk.2534FLZZ.js → chunk.QPP3OJVR.js} +1 -1
- package/dist/preview/{chunk.GLTWLQ6L.js → chunk.QRCTTDDQ.js} +1 -1
- package/dist/preview/{chunk.CMEETACI.js → chunk.QWQBPJ4U.js} +1 -1
- package/dist/preview/chunk.QXCYAFRT.js +1 -0
- package/dist/preview/{chunk.ESK3UZRC.js → chunk.R6FHEEJ7.js} +1 -1
- package/dist/preview/{chunk.GMAXA5GV.js → chunk.R77TACXU.js} +1 -1
- package/dist/preview/{chunk.HFKGND5Q.js → chunk.R7CRV2FE.js} +1 -1
- package/dist/preview/{chunk.XWXYC3BJ.js → chunk.R7ZZJOJW.js} +1 -1
- package/dist/preview/{chunk.S32AGJ3W.js → chunk.RBWYXVUW.js} +1 -1
- package/dist/preview/{chunk.N5XONWU2.js → chunk.RMRO5JZX.js} +1 -1
- package/dist/preview/{chunk.FFCUZPTC.js → chunk.RWCWRJJC.js} +1 -1
- package/dist/preview/{chunk.CXC5FOIO.js → chunk.S4ZWBCYC.js} +1 -1
- package/dist/preview/{chunk.UVAWWCFW.js → chunk.SELLAVIQ.js} +1 -1
- package/dist/preview/{chunk.7NQROWHU.js → chunk.SM6HTPYF.js} +1 -1
- package/dist/preview/chunk.SZCZD2GM.js +1 -0
- package/dist/preview/{chunk.SPU3BVAO.js → chunk.T2Q3AAQI.js} +1 -1
- package/dist/preview/{chunk.BV6HKTHK.js → chunk.T6KKNWZT.js} +1 -1
- package/dist/preview/{chunk.76QSPWSJ.js → chunk.U6PCKJ26.js} +1 -1
- package/dist/preview/{chunk.FEIJ7ETK.js → chunk.UEPVA6IS.js} +1 -1
- package/dist/preview/{chunk.PYRJDTVS.js → chunk.ULAMIQ52.js} +1 -1
- package/dist/preview/chunk.UMS7XRPO.js +1 -0
- package/dist/preview/{chunk.RNOBACJ6.js → chunk.VGIWQNJB.js} +1 -1
- package/dist/preview/{chunk.3H7YIKKC.js → chunk.VGTEEANA.js} +1 -1
- package/dist/preview/{chunk.ZZODDJYK.js → chunk.VKOCD5CL.js} +1 -1
- package/dist/preview/{chunk.P4CLT32V.js → chunk.VOHRQXCF.js} +5 -5
- package/dist/preview/chunk.W5UJLKIT.js +1 -0
- package/dist/preview/{chunk.E2R6VFZX.js → chunk.WUEU3QBL.js} +1 -1
- package/dist/preview/{chunk.34HGT7HQ.js → chunk.WWUMSCYC.js} +1 -1
- package/dist/preview/{chunk.3MU37W5D.js → chunk.XLM4ONUB.js} +1 -1
- package/dist/preview/{chunk.TVWN5I4M.js → chunk.XPR3QFF4.js} +1 -1
- package/dist/preview/{chunk.BYY7YXBI.js → chunk.XZLKTOJE.js} +1 -1
- package/dist/preview/{chunk.LYIHPVDZ.js → chunk.Y37DXEHG.js} +1 -1
- package/dist/preview/{chunk.OW72XZF4.js → chunk.YKACMLLU.js} +1 -1
- package/dist/preview/{chunk.DEH6O3K4.js → chunk.YKXUDACI.js} +1 -1
- package/dist/preview/{chunk.7G4M2PX3.js → chunk.YUEOUV7G.js} +2 -2
- package/dist/preview/chunk.YYWLYVAW.js +1 -0
- package/dist/preview/chunk.Z2JMTRF4.js +1 -0
- package/dist/preview/{chunk.SKG4IHT5.js → chunk.Z2UFPOAN.js} +1 -1
- package/dist/preview/chunk.ZEKKIMKI.js +1 -0
- package/dist/preview/{chunk.RMMJQYJJ.js → chunk.ZK42LPF5.js} +1 -1
- package/dist/preview/{chunk.GRYS6VSF.js → chunk.ZZGXVYW2.js} +1 -1
- package/dist/preview/index.html +50 -50
- package/dist/preview/page.js +2 -2
- package/package.json +6 -6
- package/dist/preview/chunk.3SBTQ66X.js +0 -1
- package/dist/preview/chunk.4N5R4K6O.js +0 -1
- package/dist/preview/chunk.AJAMTRZ3.js +0 -1
- package/dist/preview/chunk.AL45OI4A.js +0 -1
- package/dist/preview/chunk.CUB4IAUJ.js +0 -1
- package/dist/preview/chunk.CUN4VN42.js +0 -1
- package/dist/preview/chunk.ET3XJDPX.js +0 -1
- package/dist/preview/chunk.FG5ZFYYL.js +0 -1
- package/dist/preview/chunk.FTBH7CPZ.js +0 -1
- package/dist/preview/chunk.GYTVL6GR.js +0 -359
- package/dist/preview/chunk.JBR66TUP.js +0 -1
- package/dist/preview/chunk.JG2FGZF2.js +0 -18
- package/dist/preview/chunk.MMVCZOEX.js +0 -32
- package/dist/preview/chunk.NNUUD26E.js +0 -1
- package/dist/preview/chunk.QEQQXWYU.js +0 -1
- package/dist/preview/chunk.QPAJCRFB.js +0 -1
- package/dist/preview/chunk.S4CKKT3C.js +0 -1
- package/dist/preview/chunk.TMYGLXR6.js +0 -25
- package/dist/preview/chunk.UCUWEYKM.js +0 -1
- package/dist/preview/chunk.XZVPVAIS.js +0 -1
- package/dist/preview/chunk.Y2ZBVWII.js +0 -1
- package/dist/preview/chunk.Y3LTHEN7.js +0 -1
|
@@ -1,359 +0,0 @@
|
|
|
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{Fa as M,G as B,La as $r,Ma as Or,Na as Nr,Qa as Z,T as S,Ua as J,a as $e,aa as fe,ba as X,e as Oe,ka as Tr,l as Sr,m as Pr,s as Lr,sa as Ar,v as ae,z as Er}from"./chunk.TMYGLXR6.js";import{a as R}from"./chunk.SDO3U72B.js";import{Ac as lr,Ad as yr,Bd as hr,Cc as dr,Cd as br,Dc as cr,Dd as xr,Ed as Ae,Id as kr,Jc as pr,Lc as ur,Oc as gr,Pc as fr,Ya as rr,da as Ze,ia as Je,ja as er,ld as ge,mb as tr,md as ne,od as Te,qd as mr,rc as nr,rd as wr,sd as Q,tc as ar,uc as ue,vc as Ee,wc as ir,xc as or,yc as U,zc as sr,zd as vr}from"./chunk.P4CLT32V.js";import{a as Xe,b as h}from"./chunk.AJZBJBMO.js";var Vr=Xe(L=>{"use strict";var Ft=B();function Fr(r){var e="https://react.dev/errors/"+r;if(1<arguments.length){e+="?args[]="+encodeURIComponent(arguments[1]);for(var t=2;t<arguments.length;t++)e+="&args[]="+encodeURIComponent(arguments[t])}return"Minified React error #"+r+"; visit "+e+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function W(){}var P={d:{f:W,r:function(){throw Error(Fr(522))},D:W,C:W,L:W,m:W,X:W,S:W,M:W},p:0,findDOMNode:null},Vt=Symbol.for("react.portal");function It(r,e,t){var n=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:Vt,key:n==null?null:""+n,children:r,containerInfo:e,implementation:t}}var ie=Ft.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function we(r,e){if(r==="font")return"";if(typeof e=="string")return e==="use-credentials"?e:""}L.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=P;L.createPortal=function(r,e){var t=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)throw Error(Fr(299));return It(r,e,null,t)};L.flushSync=function(r){var e=ie.T,t=P.p;try{if(ie.T=null,P.p=2,r)return r()}finally{ie.T=e,P.p=t,P.d.f()}};L.preconnect=function(r,e){typeof r=="string"&&(e?(e=e.crossOrigin,e=typeof e=="string"?e==="use-credentials"?e:"":void 0):e=null,P.d.C(r,e))};L.prefetchDNS=function(r){typeof r=="string"&&P.d.D(r)};L.preinit=function(r,e){if(typeof r=="string"&&e&&typeof e.as=="string"){var t=e.as,n=we(t,e.crossOrigin),i=typeof e.integrity=="string"?e.integrity:void 0,a=typeof e.fetchPriority=="string"?e.fetchPriority:void 0;t==="style"?P.d.S(r,typeof e.precedence=="string"?e.precedence:void 0,{crossOrigin:n,integrity:i,fetchPriority:a}):t==="script"&&P.d.X(r,{crossOrigin:n,integrity:i,fetchPriority:a,nonce:typeof e.nonce=="string"?e.nonce:void 0})}};L.preinitModule=function(r,e){if(typeof r=="string")if(typeof e=="object"&&e!==null){if(e.as==null||e.as==="script"){var t=we(e.as,e.crossOrigin);P.d.M(r,{crossOrigin:t,integrity:typeof e.integrity=="string"?e.integrity:void 0,nonce:typeof e.nonce=="string"?e.nonce:void 0})}}else e==null&&P.d.M(r)};L.preload=function(r,e){if(typeof r=="string"&&typeof e=="object"&&e!==null&&typeof e.as=="string"){var t=e.as,n=we(t,e.crossOrigin);P.d.L(r,t,{crossOrigin:n,integrity:typeof e.integrity=="string"?e.integrity:void 0,nonce:typeof e.nonce=="string"?e.nonce:void 0,type:typeof e.type=="string"?e.type:void 0,fetchPriority:typeof e.fetchPriority=="string"?e.fetchPriority:void 0,referrerPolicy:typeof e.referrerPolicy=="string"?e.referrerPolicy:void 0,imageSrcSet:typeof e.imageSrcSet=="string"?e.imageSrcSet:void 0,imageSizes:typeof e.imageSizes=="string"?e.imageSizes:void 0,media:typeof e.media=="string"?e.media:void 0})}};L.preloadModule=function(r,e){if(typeof r=="string")if(e){var t=we(e.as,e.crossOrigin);P.d.m(r,{as:typeof e.as=="string"&&e.as!=="script"?e.as:void 0,crossOrigin:t,integrity:typeof e.integrity=="string"?e.integrity:void 0})}else P.d.m(r)};L.requestFormReset=function(r){P.d.r(r)};L.unstable_batchedUpdates=function(r,e){return r(e)};L.useFormState=function(r,e,t){return ie.H.useFormState(r,e,t)};L.useFormStatus=function(){return ie.H.useHostTransitionStatus()};L.version="19.2.8"});var Kr=Xe((oa,Wr)=>{"use strict";function Ir(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Ir)}catch(r){console.error(r)}}Ir(),Wr.exports=Vr()});var Cr={name:"Graview",typography:{body:Ee.body,mono:Ee.mono},schemes:ue},Hr={ground:"--graview-ground",groundDeep:"--graview-ground-deep",wash:"--graview-wash",panel:"--graview-panel",panelMuted:"--graview-panel-muted",panelWarning:"--graview-panel-warning",edge:"--graview-edge",edgeBright:"--graview-edge-bright",ink:"--graview-ink",inkMuted:"--graview-ink-muted",inkFaint:"--graview-ink-faint",accent:"--graview-accent",accentDim:"--graview-accent-dim",accentInk:"--graview-accent-ink",warn:"--graview-warn",good:"--graview-good",bad:"--graview-bad",glow:"--graview-glow",bar:"--graview-bar",float:"--graview-float",liftLow:"--graview-lift-low",liftHigh:"--graview-lift-high",tintAlpha:"--graview-tint-alpha",tintLightness:"--graview-tint-lightness",gridAlpha:"--graview-grid-alpha"};function Rr(r){return Object.keys(Hr).map(e=>` ${Hr[e]}: ${r[e]};`).join(`
|
|
2
|
-
`)}function Br(r,e){let t=r===e?r:`${r} ${e}`;return` ${t} [data-graview-view] { transition: none; }
|
|
3
|
-
${t} [data-graview-touched] > * { animation: none; }
|
|
4
|
-
${t} [data-graview-view][data-graview-wrote] > *,
|
|
5
|
-
${t} [data-graview-view][data-graview-read] > * {
|
|
6
|
-
animation: none;
|
|
7
|
-
box-shadow: 0 0 0 2px var(--graview-activity);
|
|
8
|
-
}
|
|
9
|
-
${t} [data-graview-view][data-graview-read] > * { box-shadow: 0 0 0 1px var(--graview-activity); }
|
|
10
|
-
${t} [data-graview-connector][data-graview-activity] { animation: none; stroke-opacity: 1; }`}function Nt(r="dark",e=Cr,t={}){let n=Rt(r,e,t);return t.scope===void 0?n:Ht(n,t.scope)}function Ht(r,e){let t=`:where(${e}) `,n=o=>o===e||o.startsWith(`${e} `)||o.startsWith(`${e}:`)||o.startsWith(`${e}[`)||o.startsWith(":root")&&o.includes(` ${e} `),i=o=>{let l=o.match(/^\s*/)[0],p=Ct(o.trim()).map(s=>n(s)?s:`${t}${s}`);return`${l}${p.join(", ")} `},a=o=>{let l="",p=0;for(;p<o.length;){let s=o.indexOf("{",p);if(s===-1)return l+o.slice(p);let u=Bt(o,s),c=o.slice(p,s),g=o.slice(s+1,u),w=c.trim().startsWith("@")?c.trim().split(/[\s(]/)[0]:null;w===null?l+=`${i(c)}{${g}}`:w==="@media"||w==="@supports"||w==="@container"||w==="@layer"?l+=`${c}{${a(g)}}`:l+=`${c}{${g}}`,p=u+1}return l};return a(r)}function Bt(r,e){let t=0,n=null;for(let i=e;i<r.length;i++){let a=r[i];if(n)a==="\\"?i++:a===n&&(n=null);else if(a==='"'||a==="'")n=a;else if(a==="/"&&r[i+1]==="*")i=r.indexOf("*/",i+2)+1||r.length;else if(a==="{")t++;else if(a==="}"&&--t===0)return i}return r.length}function Ct(r){let e=[],t=0,n=null,i="";for(let a of r){if(n)a===n&&(n=null);else if(a==='"'||a==="'")n=a;else if(a==="("||a==="[")t++;else if(a===")"||a==="]")t--;else if(a===","&&t===0){e.push(i.trim()),i="";continue}i+=a}return i.trim()&&e.push(i.trim()),e}function Rt(r,e,t){let n=e.schemes[r],i=t.scope??":root",a=t.scope??"html, body",o=t.scope??"body",l=":root",p=ir(e),s=or(e),u=pr(e.kit);return`${i} {
|
|
11
|
-
${Rr(n)}
|
|
12
|
-
${ur(u)}
|
|
13
|
-
|
|
14
|
-
${fr()}
|
|
15
|
-
--graview-font-body: ${s.body};
|
|
16
|
-
--graview-font-display: ${s.display};
|
|
17
|
-
--graview-font-mono: ${s.mono};
|
|
18
|
-
|
|
19
|
-
--graview-weight-display: ${s.weights.display};
|
|
20
|
-
--graview-weight-body: ${s.weights.body};
|
|
21
|
-
--graview-weight-label: ${s.weights.label};
|
|
22
|
-
|
|
23
|
-
--graview-text-small: .833rem;
|
|
24
|
-
--graview-text-body: 1rem;
|
|
25
|
-
--graview-text-heading: 1.2rem;
|
|
26
|
-
--graview-text-title: 1.728rem;
|
|
27
|
-
|
|
28
|
-
--graview-space-1: 4px;
|
|
29
|
-
--graview-space-2: 8px;
|
|
30
|
-
--graview-space-3: 12px;
|
|
31
|
-
--graview-space-4: 16px;
|
|
32
|
-
--graview-space-5: 24px;
|
|
33
|
-
--graview-space-6: 32px;
|
|
34
|
-
--graview-space-7: 48px;
|
|
35
|
-
|
|
36
|
-
--graview-radius: ${p.radius}px;
|
|
37
|
-
--graview-radius-sm: ${p.radiusSmall}px;
|
|
38
|
-
--graview-pad: ${p.pad}px;
|
|
39
|
-
--graview-pad-sm: ${p.padSmall}px;
|
|
40
|
-
--graview-gap: ${p.gap}px;
|
|
41
|
-
color-scheme: ${r};
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
@media (max-width: 480px) { ${i} { --graview-text-title: 1.44rem; } }
|
|
45
|
-
|
|
46
|
-
${a} {
|
|
47
|
-
margin: 0;
|
|
48
|
-
background: var(--graview-ground-deep);
|
|
49
|
-
color: var(--graview-ink);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
${o} {
|
|
54
|
-
font: 0.875rem/1.55 var(--graview-font-body);
|
|
55
|
-
font-weight: var(--graview-weight-body);
|
|
56
|
-
font-variant-numeric: tabular-nums;
|
|
57
|
-
-webkit-font-smoothing: antialiased;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
h1, h2, h3, h4 { font-family: var(--graview-font-display); font-weight: var(--graview-weight-display); }
|
|
62
|
-
h1, h2 { letter-spacing: ${ar}; }
|
|
63
|
-
|
|
64
|
-
.graview-logo > svg, .graview-logo-face > svg { display: block; height: 100%; width: auto; }
|
|
65
|
-
.graview-logo-face { display: inline-flex; height: 100%; width: auto; }
|
|
66
|
-
|
|
67
|
-
${i} [data-graview-scheme-only="${r==="dark"?"light":"dark"}"] { display: none; }
|
|
68
|
-
${r==="dark"?`${i} [data-graview-logo-fallback="invert"] { filter: invert(1) hue-rotate(180deg); mix-blend-mode: screen; }`:""}
|
|
69
|
-
code, kbd, samp { font-family: var(--graview-font-mono); }
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
[data-graview-figure] > svg {
|
|
73
|
-
width: 100%;
|
|
74
|
-
height: 100%;
|
|
75
|
-
display: block;
|
|
76
|
-
overflow: visible;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
@property --graview-altitude {
|
|
81
|
-
syntax: "<number>";
|
|
82
|
-
inherits: true;
|
|
83
|
-
initial-value: 0;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
.graview-ground {
|
|
88
|
-
position: relative;
|
|
89
|
-
|
|
90
|
-
isolation: isolate;
|
|
91
|
-
z-index: ${gr("scene")};
|
|
92
|
-
background: var(--graview-wash), var(--graview-ground);
|
|
93
|
-
--graview-altitude: 0;
|
|
94
|
-
transition: --graview-altitude 640ms cubic-bezier(0.33, 0, 0.2, 1);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
.graview-ground::before {
|
|
100
|
-
content: "";
|
|
101
|
-
position: absolute;
|
|
102
|
-
inset: 0;
|
|
103
|
-
pointer-events: none;
|
|
104
|
-
background-image:
|
|
105
|
-
linear-gradient(var(--graview-edge) 1px, transparent 1px),
|
|
106
|
-
linear-gradient(90deg, var(--graview-edge) 1px, transparent 1px);
|
|
107
|
-
background-size: var(--graview-kit-grid-size, 64px) var(--graview-kit-grid-size, 64px);
|
|
108
|
-
opacity: calc(var(--graview-kit-grid, 1) * var(--graview-grid-alpha) * (1 - var(--graview-altitude)));
|
|
109
|
-
mask-image: radial-gradient(120% 90% at 50% 40%, #000 30%, transparent 78%);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
.graview-scroll {
|
|
114
|
-
overflow: auto;
|
|
115
|
-
min-height: 0;
|
|
116
|
-
--graview-scroll-shade: ${r==="light"?"rgba(20,30,32,0.22)":"rgba(0,0,0,0.55)"};
|
|
117
|
-
}
|
|
118
|
-
.graview-scroll[data-graview-more-below] {
|
|
119
|
-
box-shadow: inset 0 -12px 10px -10px var(--graview-scroll-shade);
|
|
120
|
-
}
|
|
121
|
-
.graview-scroll[data-graview-more-above] {
|
|
122
|
-
box-shadow: inset 0 12px 10px -10px var(--graview-scroll-shade);
|
|
123
|
-
}
|
|
124
|
-
.graview-scroll[data-graview-more-above][data-graview-more-below] {
|
|
125
|
-
box-shadow: inset 0 12px 10px -10px var(--graview-scroll-shade), inset 0 -12px 10px -10px var(--graview-scroll-shade);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
.graview-ground::after {
|
|
132
|
-
content: "";
|
|
133
|
-
position: absolute;
|
|
134
|
-
inset: 0;
|
|
135
|
-
pointer-events: none;
|
|
136
|
-
--graview-lattice-tile: var(--graview-lattice-cell, calc(var(--graview-kit-lattice-size, 46px) * 2.2361));
|
|
137
|
-
--graview-lattice-line: var(--graview-edge);
|
|
138
|
-
background-image:
|
|
139
|
-
linear-gradient(to top right, transparent calc(50% - 0.5px), var(--graview-lattice-line) calc(50% - 0.5px), var(--graview-lattice-line) calc(50% + 0.5px), transparent calc(50% + 0.5px)),
|
|
140
|
-
linear-gradient(to top left, transparent calc(50% - 0.5px), var(--graview-lattice-line) calc(50% - 0.5px), var(--graview-lattice-line) calc(50% + 0.5px), transparent calc(50% + 0.5px)),
|
|
141
|
-
linear-gradient(to top right, transparent calc(50% - 0.5px), var(--graview-lattice-line) calc(50% - 0.5px), var(--graview-lattice-line) calc(50% + 0.5px), transparent calc(50% + 0.5px)),
|
|
142
|
-
linear-gradient(to top left, transparent calc(50% - 0.5px), var(--graview-lattice-line) calc(50% - 0.5px), var(--graview-lattice-line) calc(50% + 0.5px), transparent calc(50% + 0.5px));
|
|
143
|
-
|
|
144
|
-
--graview-lattice-rise: calc(var(--graview-lattice-tile) * var(--graview-lattice-tilt, 0.5));
|
|
145
|
-
background-size:
|
|
146
|
-
var(--graview-lattice-tile) var(--graview-lattice-rise),
|
|
147
|
-
var(--graview-lattice-tile) var(--graview-lattice-rise),
|
|
148
|
-
calc(var(--graview-lattice-tile) / 2) calc(var(--graview-lattice-rise) / 2),
|
|
149
|
-
calc(var(--graview-lattice-tile) / 2) calc(var(--graview-lattice-rise) / 2);
|
|
150
|
-
|
|
151
|
-
background-position: var(--graview-lattice-x, 0px) var(--graview-lattice-y, 0px);
|
|
152
|
-
|
|
153
|
-
opacity: calc(var(--graview-kit-lattice, 1) * var(--graview-grid-alpha) * 2 * var(--graview-altitude));
|
|
154
|
-
mask-image: linear-gradient(to top, #000 42%, rgba(0,0,0,0.35) 70%, transparent 92%);
|
|
155
|
-
-webkit-mask-image: linear-gradient(to top, #000 42%, rgba(0,0,0,0.35) 70%, transparent 92%);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
.graview-profile-keeping { display: grid; gap: 6px; }
|
|
160
|
-
.graview-profile-keeping:not(:has(button, a)) { display: none; }
|
|
161
|
-
.graview-profile-keeping > * { justify-self: start; }
|
|
162
|
-
|
|
163
|
-
.graview-host-action:hover,
|
|
164
|
-
.graview-host-action:focus-visible {
|
|
165
|
-
background: var(--graview-wash);
|
|
166
|
-
color: var(--graview-accent);
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
@keyframes graview-settle {
|
|
172
|
-
from { opacity: 0; transform: translateY(7px); }
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
[data-graview-pick] {
|
|
177
|
-
cursor: pointer;
|
|
178
|
-
transition: filter 140ms ease, box-shadow 140ms ease;
|
|
179
|
-
}
|
|
180
|
-
[data-graview-pick]:hover {
|
|
181
|
-
filter: brightness(${r==="light"?.96:1.18});
|
|
182
|
-
}
|
|
183
|
-
[data-graview-pick]:focus-visible {
|
|
184
|
-
outline: 2px solid var(--graview-accent);
|
|
185
|
-
outline-offset: 2px;
|
|
186
|
-
border-radius: 7px;
|
|
187
|
-
}
|
|
188
|
-
.graview-activity-record:hover > [data-graview-primitive="chip"] {
|
|
189
|
-
filter: brightness(${r==="light"?.96:1.18});
|
|
190
|
-
}
|
|
191
|
-
.graview-activity-record:focus-visible {
|
|
192
|
-
outline: 2px solid var(--graview-accent);
|
|
193
|
-
outline-offset: 2px;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
[data-graview-slot]:focus-visible {
|
|
197
|
-
outline: none;
|
|
198
|
-
}
|
|
199
|
-
[data-graview-slot]:focus-visible > span:first-of-type {
|
|
200
|
-
box-shadow: 0 0 0 2px var(--graview-ground), 0 0 0 4px var(--graview-accent);
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
[data-graview-view] { cursor: pointer; }
|
|
205
|
-
[data-graview-view]:hover { filter: brightness(${r==="light"?.985:1.12}); }
|
|
206
|
-
[data-graview-view]:focus-visible {
|
|
207
|
-
outline: 2px solid var(--graview-accent);
|
|
208
|
-
outline-offset: 3px;
|
|
209
|
-
border-radius: var(--graview-radius);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
button {
|
|
213
|
-
font: inherit;
|
|
214
|
-
font-weight: var(--graview-weight-label);
|
|
215
|
-
color: var(--graview-ink);
|
|
216
|
-
padding: 7px 13px;
|
|
217
|
-
border: 1px solid var(--graview-edge);
|
|
218
|
-
border-radius: var(--graview-radius-sm, 8px);
|
|
219
|
-
background: var(--graview-panel);
|
|
220
|
-
box-shadow: ${r==="light"?"0 1px 2px rgba(24,33,58,0.05)":"none"};
|
|
221
|
-
cursor: pointer;
|
|
222
|
-
transition: border-color 160ms ease, box-shadow 160ms ease, background 160ms ease;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
button:hover:not(:disabled) {
|
|
226
|
-
border-color: var(--graview-edge-bright);
|
|
227
|
-
box-shadow: ${r==="light"?"0 1px 2px rgba(24,33,58,0.06), 0 6px 16px -8px rgba(24,33,58,0.2)":"0 0 0 1px var(--graview-accent-dim)"};
|
|
228
|
-
}
|
|
229
|
-
button:focus-visible {
|
|
230
|
-
outline: 2px solid var(--graview-accent);
|
|
231
|
-
outline-offset: 2px;
|
|
232
|
-
}
|
|
233
|
-
button:disabled { opacity: 0.45; cursor: default; }
|
|
234
|
-
|
|
235
|
-
code { color: var(--graview-ink-muted); font-size: 0.8125rem; letter-spacing: 0.02em; }
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
[data-graview-view] {
|
|
239
|
-
transition: filter 260ms cubic-bezier(0.22, 1, 0.36, 1);
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
[data-graview-stage="dom"] [data-graview-view],
|
|
244
|
-
[data-graview-stage="dom"] [data-graview-view] > [data-graview-natural] {
|
|
245
|
-
pointer-events: none;
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
@keyframes graview-touched {
|
|
251
|
-
0% { box-shadow: 0 0 0 0 var(--graview-accent-dim); }
|
|
252
|
-
35% { box-shadow: 0 0 26px 3px var(--graview-accent-dim); }
|
|
253
|
-
100% { box-shadow: 0 0 0 0 transparent; }
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
@keyframes graview-landed {
|
|
257
|
-
0% { box-shadow: 0 0 0 0 var(--graview-activity); opacity: 0.55; }
|
|
258
|
-
30% { box-shadow: 0 0 30px 4px var(--graview-activity); opacity: 1; }
|
|
259
|
-
100% { box-shadow: 0 0 0 0 transparent; opacity: 1; }
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
@keyframes graview-considered {
|
|
264
|
-
0% { outline-color: transparent; }
|
|
265
|
-
25% { outline-color: var(--graview-activity); }
|
|
266
|
-
100% { outline-color: transparent; }
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
@keyframes graview-relation {
|
|
271
|
-
0% { stroke-opacity: 0.28; stroke-width: 1.4; }
|
|
272
|
-
30% { stroke-opacity: 1; stroke-width: 3; }
|
|
273
|
-
100% { stroke-opacity: 0.28; stroke-width: 1.4; }
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
@media (prefers-reduced-motion: reduce) {
|
|
278
|
-
${Br(`${l}:not([data-graview-motion='full'])`,o)}
|
|
279
|
-
}
|
|
280
|
-
${Br(`${l}[data-graview-motion='reduce']`,o)}`}var Ne=h(B(),1),Mr=new WeakMap,me=r=>{let e=Mr.get(r);return e||Mr.set(r,e={open:null,drawn:0,listeners:new Set}),e},Mt=r=>{for(let e of[...r.listeners])e()},_t=0;function ta(r,e){let t=me(r);t.open=e?{...e,at:++_t}:null,Mt(t)}var _r=r=>e=>{let t=me(r);return t.listeners.add(e),()=>void t.listeners.delete(e)};function Dr(r){let e=()=>r?me(r).drawn>0:!1;return(0,Ne.useSyncExternalStore)(r?_r(r):Dt,e,e)}var Dt=()=>()=>{};function na(r){let e=()=>me(r).open;return(0,Ne.useSyncExternalStore)(_r(r),e,e)}var D=h(B(),1),Gr=h(Kr(),1);function Wt(r){let[e,t]=(0,D.useState)(null),[n,i]=(0,D.useState)(null);return(0,D.useLayoutEffect)(()=>{r.current!==n&&i(r.current)}),(0,D.useLayoutEffect)(()=>{if(!n||typeof ResizeObserver>"u")return;let a=()=>Math.round(n.getBoundingClientRect().width),o=a();t(o);let l=new ResizeObserver(()=>{let p=a();p!==o&&(o=p,(0,Gr.flushSync)(()=>t(p)))});return l.observe(n),()=>l.disconnect()},[n]),e}function Kt(r=!0){let[e,t]=(0,D.useState)();return(0,D.useEffect)(()=>{if(!r)return t(void 0);let n=0,i=()=>t(innerHeight),a=()=>{i(),clearTimeout(n),n=window.setTimeout(i,300)},o=l=>{for(let[p,s]of[[window,"resize"],[window,"orientationchange"],[window.visualViewport,"resize"]])p?.[l](s,a)};return o("addEventListener"),i(),()=>{clearTimeout(n),o("removeEventListener")}},[r]),e}var ve={position:"absolute",width:1,height:1,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(50%)",whiteSpace:"nowrap"};var E=h(B(),1);var O=h(S(),1),zr=6e3;function Gt(){let r=[],e=0,t=new Set,n=new Map,i,a=()=>{for(let s of[...t])s()},o=s=>{if(clearTimeout(n.get(s.id)),n.delete(s.id),s.kind!=="toast")return;let u=(s.actions?.length??0)+(s.action?1:0),c=s.timeout??(u>0?!1:zr);c!==!1&&n.set(s.id,setTimeout(()=>i?.()?o(s):l(s.id),c))},l=s=>{clearTimeout(n.get(s)),n.delete(s),r.some(u=>u.id===s)&&(r=r.filter(u=>u.id!==s),a())},p=s=>{r=r.some(u=>u.id===s.id)?r.map(u=>u.id===s.id?s:u):[...r,s],o(s),a()};return{notify(s){let u=s.id??`notice-${++e}`;return p({...s,id:u,said:++e}),{id:u,dismiss:()=>l(u),update:c=>{let g=r.find(w=>w.id===u);g&&p({...g,...c,id:u,kind:g.kind,said:c.sentence!==void 0&&c.sentence!==g.sentence?++e:g.said})}}},dismiss:l,hold(s){i=s},list:()=>r,subscribe(s){return t.add(s),()=>t.delete(s)}}}function zt({notices:r}){let e=r.reduce((l,p)=>!l||p.said>l.said?p:l,void 0),[t,n]=(0,E.useState)(""),[i,a]=(0,E.useState)(""),o=(0,E.useRef)(0);return(0,E.useEffect)(()=>{if(!e||e.said===o.current)return;o.current=e.said;let l=e.tone==="bad";(l?a:n)("");let p=setTimeout(()=>(l?a:n)(e.sentence),50);return()=>clearTimeout(p)},[e]),(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)("div",{role:"status","aria-live":"polite","data-testid":"notices-said",style:ve,children:t}),(0,O.jsx)("div",{role:"alert","data-testid":"notices-alarm",style:ve,children:i})]})}var qt=(0,E.createContext)(null);function jt({board:r,anchor:e}){let t=(0,E.useSyncExternalStore)(r.subscribe,r.list,r.list);return(0,E.useEffect)(()=>Qt(He.prefetch),[]),(0,O.jsxs)(O.Fragment,{children:[t.length>0?(0,O.jsx)(E.Suspense,{fallback:null,children:(0,O.jsx)(Ut,{notices:t,anchor:e,board:r})}):null,(0,O.jsx)(zt,{notices:t})]})}var He=M(R(()=>(__graviewPreload(import.meta.url,["./chunk.MB7LKKUD.js","./chunk.GYTVL6GR.js","./chunk.TMYGLXR6.js","./chunk.SDO3U72B.js","./chunk.P4CLT32V.js","./chunk.SLBWPVIY.js","./chunk.AJZBJBMO.js"]),import("./chunk.BV6HKTHK.js")))),Yt=()=>He.load().then(()=>{},()=>{}),Ut=He.part((r,e)=>(0,O.jsx)(r.NoticeStacks,{...e}),{quiet:!0});function Qt(r){let e=()=>{(typeof navigator>"u"||navigator.onLine!==!1)&&r()},t=globalThis;if(t.requestIdleCallback){let i=t.requestIdleCallback(e,{timeout:5e3});return()=>t.cancelIdleCallback?.(i)}let n=setTimeout(e,2500);return()=>clearTimeout(n)}var C=M(R(()=>(__graviewPreload(import.meta.url,["./chunk.CTOBNZLM.js","./chunk.FEIJ7ETK.js","./chunk.34HGT7HQ.js","./chunk.LYIHPVDZ.js","./chunk.FU4YSVWX.js","./chunk.TNL2BVCH.js","./chunk.NZDHXREL.js","./chunk.TBSPEO2L.js","./chunk.3SBTQ66X.js","./chunk.JX2C3HVD.js","./chunk.TI4OSTQV.js","./chunk.GZHZLJBF.js","./chunk.OW72XZF4.js","./chunk.OJGHDWI6.js","./chunk.KRODTMGR.js","./chunk.VICCAWAN.js","./chunk.OU5TRY4N.js","./chunk.CQPNDJAC.js","./chunk.GYTVL6GR.js","./chunk.TMYGLXR6.js","./chunk.SDO3U72B.js","./chunk.P4CLT32V.js","./chunk.SLBWPVIY.js","./chunk.AJZBJBMO.js"]),import("./chunk.2W45NM7Q.js"))));var v=h(B(),1);var Yr=h(B(),1);var qr=h(B(),1);function Be(r){return(0,qr.useMemo)(()=>r===void 0||r===""?void 0:{__html:r},[r])}var K=h(S(),1);function Ce({brand:r,size:e=22}){let t=dr(r),n=jr(t?.light),i=n?jr(t?.dark):void 0,a=Be(n!==void 0&&U(n)?n:void 0),o=Be(i!==void 0&&U(i)?i:void 0),l={display:"inline-flex",flex:"0 0 auto",height:e,color:"var(--graview-accent)"},p=cr(r);if(p)return(0,K.jsx)("span",{className:"graview-logo graview-emoji-mark","data-testid":"app-mark","aria-hidden":!0,style:{...l,alignItems:"center",fontSize:`${e*.86/16}rem`,lineHeight:1},children:p});if(!n)return null;let s=r?.logoAlt??r?.name??"",u=s!==""&&s!==r?.name,c=u?{role:"img","aria-label":s}:{"aria-hidden":!0};if(i){let w=(y,b,N)=>U(y)?(0,K.jsx)("span",{className:"graview-logo-face","data-graview-scheme-only":N,dangerouslySetInnerHTML:b}):(0,K.jsx)("img",{className:"graview-logo-face","data-graview-scheme-only":N,src:y,alt:""});return(0,K.jsxs)("span",{className:"graview-logo","data-testid":"app-mark",style:l,...c,children:[w(n,a,"light"),w(i,o,"dark")]})}let g=t?.darkFallback==="invert"?{"data-graview-logo-fallback":"invert"}:{};return U(n)?(0,K.jsx)("span",{className:"graview-logo","data-testid":"app-mark",style:l,...g,...c,dangerouslySetInnerHTML:a}):(0,K.jsx)("img",{className:"graview-logo","data-testid":"app-mark",src:n,alt:u?s:"",...g,style:{...l,width:"auto"}})}function jr(r){if(!(!r||!lr(r)))return U(r)&&sr(r)!==null?void 0:r}function Xt(r){(0,Yr.useEffect)(()=>{if(!r||typeof document>"u")return;let e=[...document.querySelectorAll('link[rel~="icon"]')],t=e.map(i=>i.getAttribute("href")),n;e.length===0&&(n=document.createElement("link"),n.rel="icon",n.setAttribute("data-graview-favicon",""),document.head.appendChild(n),e.push(n));for(let i of e)i.href=r;return()=>{n&&n.remove(),e.forEach((i,a)=>{i!==n&&t[a]!==null&&t[a]!==void 0&&i.setAttribute("href",t[a])})}},[r])}var d=h(S(),1),Zt=C.part((r,e)=>(0,d.jsx)(r.TidyFoot,{...e}),{quiet:!0}),Jt=C.part((r,e)=>(0,d.jsx)(r.Here,{...e}),{quiet:!0});function en(){let r=X(),[e,t]=(0,v.useState)("");return(0,v.useEffect)(()=>r?.store.subscribe((n,i)=>{i.some(a=>a.author.id!==r.principal.id)&&C.load().then(a=>a.sayTheirChange(i,r,t),String)}),[r]),(0,d.jsx)("span",{role:"status",className:"graview-bar-said",children:e})}var Ur="home",Qr="/",j="scene:whole";function rn(r){let{store:e,principal:t,views:n}=r,i=e.kindsKeptFrom(t),a=e.schema.kinds.filter(f=>!e.modules.disabledKinds.has(f)&&!i.has(f)),o=n?.arrangement?.(),l=n?.places()??[],p=br(o,e.schema,l),s=hr(e.schema,o,[...e.modules.administered.values()].flatMap(f=>f.kinds??[])),u=(f,x)=>(!e.graph.size.nodes||e.graph.count(f)>0)&&(p?x?p.places.has(`${f}|${x}`):p.kinds.has(f):!s.has(f)),c=[{key:Ur,label:"Home",path:Qr,group:"home",primary:!0}],g=l.filter(f=>a.includes(f.kind)&&f.as!==xr&&!f.hidden),w=new Set(ne(g).map(f=>Q(f,l,e.schema).toLowerCase())),y=f=>mr(f.as,wr(f,l)?Te(e.schema,f.kind).slice(1):void 0),b=new Set(o?.hide??[]),N=kr(a,o?.order,g);for(let{kind:f,view:x}of N){if(x){c.push({key:`place:${x.kind}:${x.as}`,label:Q(x,l,e.schema),path:y(x),group:"lists",kind:f,primary:p?p.places.has(`${f}|${x.as}`):!0});continue}let Y=Je(e.schema,f),A=w.has(Y.toLowerCase());c.push({key:`kind:${f}`,label:A?er(e.schema,f):Y,path:Te(e.schema,f),group:"lists",kind:f,primary:A||b.has(f)?!1:u(f),...b.has(f)?{hidden:!0}:{}})}for(let f of ne(g)){if(N.some(A=>A.view&&ge(A.view,f)))continue;let x=y(f),Y=[f.kind,...f.over??[]].some(A=>a.includes(A)&&u(A,f.as));c.some(A=>A.path===x)||c.push({key:`place:${f.kind}:${f.as}`,label:Q(f,l,e.schema),path:x,group:"pictures",kind:f.kind,primary:Y})}return a.some(f=>Object.keys(e.schema.tryDefinition(f)?.edges??{}).length>0)&&c.push({key:"connections",label:"Connections",path:"/map",group:"pictures",primary:!1}),c}function tn(r,e){let[t="/",n=""]=e.split("?"),i=r.find(o=>o.path===(n?`${t}?${n}`:t))??r.find(o=>o.path===t);if(i)return i.key;let a=`/${t.split("/").filter(Boolean)[0]??""}`;return r.find(o=>o.group==="lists"&&o.path===a)?.key??null}var Xr=(0,v.createContext)(null),nn=()=>(0,v.useContext)(Xr),ee=30,Zr=48,oe=640,_e=4,Re=2;function Jr(r){let{widths:e,current:t,room:n,more:i,gap:a=_e,primary:o,most:l=yr}=r;if(e.length===0||!(n>0)||!(i>0)||e.some(c=>!(c>0)))return null;let p=(c,g)=>c.reduce((w,y)=>w+e[y],0)+a*Math.max(0,c.length-1)+(g?a+i:0),s=(c,g)=>t<0||!c.includes(t)||c.slice(0,g).includes(t)?c.slice(0,g):[...c.filter(w=>w!==t).slice(0,g-1),t].sort((w,y)=>w-y),u=s(e.map((c,g)=>g).filter(c=>o?.[c]!==!1||c===t),l);if(p(u,u.length<e.length)<=n)return u.length>=Re?u:null;for(let c=u.length-1;c>=Re;c--){let g=s(u,c);if(p(g,!0)<=n)return g}return null}var an=`
|
|
281
|
-
.graview-bar{display:block;margin:0;padding:0;container:graview-bar/inline-size;flex:0 0 auto;position:relative;background:var(--graview-bar);border-bottom:1px solid var(--graview-edge);color:var(--graview-ink);font-family:var(--graview-font-body,system-ui)}
|
|
282
|
-
.graview-bar-row{display:flex;flex-wrap:nowrap;align-items:center;gap:16px;height:${Zr-1}px;margin:0;padding:0 16px}
|
|
283
|
-
.graview-bar-home,.graview-bar-face,.graview-bar-place,.graview-bar-item,.graview-bar-at{display:inline-flex;align-items:center;box-sizing:border-box;min-width:0;margin:0;border:0;background:none;box-shadow:none;font:inherit;letter-spacing:normal;text-transform:none;text-decoration:none;color:var(--graview-ink);cursor:pointer;text-align:left}
|
|
284
|
-
.graview-bar-app{display:flex;flex:0 1 auto;max-width:50%}
|
|
285
|
-
.graview-bar-app::after{content:"";flex:0 100000 auto;width:2px;min-width:0}
|
|
286
|
-
.graview-bar-name{margin:0;display:flex;font-family:var(--graview-font-display,var(--graview-font-body,system-ui));font-size:.9375rem;font-weight:600;line-height:1.25}
|
|
287
|
-
.graview-bar-home{gap:8px;min-width:auto;min-height:30px;padding:0;letter-spacing:-.005em}
|
|
288
|
-
.graview-bar-app-name{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal;word-break:normal}
|
|
289
|
-
.graview-bar-faces{display:inline-flex;flex:0 0 auto;box-sizing:border-box;height:30px;margin:0;padding:2px;gap:2px;border:1px solid var(--graview-edge);border-radius:8px}
|
|
290
|
-
.graview-bar-face{gap:6px;padding:0 10px;border-radius:6px;font-size:.8125rem;white-space:nowrap;color:var(--graview-ink-muted)}
|
|
291
|
-
.graview-bar-face span{min-width:0;max-width:11em;overflow:hidden;text-overflow:ellipsis}
|
|
292
|
-
.graview-bar-face[aria-pressed=true]{color:var(--graview-ink);font-weight:600;background:color-mix(in srgb,var(--graview-accent) 16%,transparent)}
|
|
293
|
-
[data-switch-drawn=icons] .graview-bar-face{padding:0 8px}
|
|
294
|
-
.graview-bar-said,[data-switch-drawn=icons] .graview-bar-face span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
|
|
295
|
-
.graview-bar-mid{display:flex;flex:1 100 0;min-width:0}
|
|
296
|
-
.graview-bar-mid[data-place]{min-width:9em;flex-basis:auto}
|
|
297
|
-
.graview-bar-place-at{position:relative;display:inline-flex;min-width:0;max-width:100%}
|
|
298
|
-
.graview-bar-place{gap:6px;height:30px;max-width:100%;padding:0 8px;border:1px solid transparent;border-radius:8px;font-size:.875rem;font-weight:600}
|
|
299
|
-
.graview-bar-face:hover,.graview-bar-place:hover{border-color:var(--graview-edge);color:var(--graview-ink)}
|
|
300
|
-
.graview-bar-place-words{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
301
|
-
.graview-bar-mid[data-places=standing]{flex:0 0 auto}
|
|
302
|
-
.graview-bar-places{display:flex;align-items:center;gap:${_e}px;min-width:0;margin:0;padding:0}
|
|
303
|
-
.graview-bar-at{gap:6px;flex:0 0 auto;height:30px;padding:0 8px;border-block:2px solid transparent;border-radius:0;font-size:.875rem;font-weight:500;white-space:nowrap;color:var(--graview-ink-muted)}
|
|
304
|
-
.graview-bar-at:is(:hover,[aria-current],[aria-expanded=true]){color:var(--graview-ink)}
|
|
305
|
-
.graview-bar-at[aria-current]{font-weight:600;border-bottom-color:var(--graview-accent)}
|
|
306
|
-
.graview-bar-ruler{position:absolute;left:0;top:0;display:flex;width:0;height:0;overflow:hidden;visibility:hidden;pointer-events:none}
|
|
307
|
-
.graview-bar-ruler .graview-bar-at{font-weight:600}
|
|
308
|
-
.graview-bar-ruler>.graview-bar-name{flex:none;white-space:nowrap;letter-spacing:-.005em}
|
|
309
|
-
.graview-bar-list{display:grid;align-content:start;width:min(320px,calc(100vw - 24px));height:auto;max-height:min(70vh,560px);overflow:auto;margin:0;padding:6px;border-radius:10px;border:1px solid var(--graview-edge);background:var(--graview-float);box-shadow:var(--graview-lift-high);color:var(--graview-ink)}
|
|
310
|
-
.graview-bar-list[hidden]{display:none}
|
|
311
|
-
.graview-bar-list p{margin:8px 8px 2px;font-size:.6875rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--graview-ink-muted)}
|
|
312
|
-
.graview-bar-list ul,.graview-bar-list li{display:grid;margin:0;padding:0;list-style:none}
|
|
313
|
-
.graview-bar-item{align-items:flex-start;gap:10px;width:100%;padding:7px 8px;border-radius:7px;font-size:.875rem;line-height:1.3;overflow-wrap:anywhere}
|
|
314
|
-
.graview-bar-item:hover{background:color-mix(in srgb,var(--graview-ink) 7%,transparent)}
|
|
315
|
-
.graview-bar-item[aria-current]{font-weight:600;background:color-mix(in srgb,var(--graview-accent) 14%,transparent)}
|
|
316
|
-
.graview-bar-mark{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:14px;height:1.3em;color:var(--graview-ink-muted)}
|
|
317
|
-
.graview-bar :focus-visible{outline:2px solid var(--graview-accent);outline-offset:1px}
|
|
318
|
-
.graview-bar-tools{display:contents}
|
|
319
|
-
.graview-bar-tools>*{margin-left:-8px}
|
|
320
|
-
.graview-bar-tools>:is(.graview-bar-find,.graview-bar-find-open){margin-left:auto}
|
|
321
|
-
.graview-bar-own{display:flex;align-items:center;flex:0 0 auto}
|
|
322
|
-
.graview-bar-own:empty{display:none}
|
|
323
|
-
.graview-bar-find{position:relative;display:flex;min-width:7.5rem;flex:0 600 9rem;--graview-bar-find-end:3.25em}
|
|
324
|
-
.graview-bar-find-slot{display:flex;flex:1;min-width:0}
|
|
325
|
-
.graview-bar-find-keys{position:absolute;right:10px;line-height:30px;pointer-events:none;font-size:.75rem;color:var(--graview-ink-faint)}
|
|
326
|
-
.graview-bar-find:is(:focus-within,:has(input:not(:placeholder-shown))){flex-basis:16rem;--graview-bar-find-end:10px}
|
|
327
|
-
:is(:focus-within,:has(input:not(:placeholder-shown)))>.graview-bar-find-keys,.graview-bar-find-open{display:none}
|
|
328
|
-
.graview-bar-line{display:flex;flex:0 0 auto;padding:6px 8px;background:var(--graview-ground);border-bottom:1px solid var(--graview-edge);font-family:var(--graview-font-body,system-ui)}
|
|
329
|
-
.graview-bar-line .graview-bar-place{height:auto;min-height:32px}
|
|
330
|
-
.graview-bar-line .graview-bar-place-words{white-space:normal}
|
|
331
|
-
@media (pointer:coarse){.graview-bar-find-keys{display:none}}
|
|
332
|
-
@container graview-bar (max-width: ${oe-1}px){
|
|
333
|
-
.graview-bar-row{gap:10px;padding:0 12px}
|
|
334
|
-
.graview-bar-app,.graview-bar-home{max-width:none;flex:1 1 auto;min-width:28px}
|
|
335
|
-
.graview-bar-name,.graview-bar-app-name{min-width:0}
|
|
336
|
-
.graview-bar-mid,.graview-bar-find{display:none}
|
|
337
|
-
.graview-bar-find-open{display:inline-flex}
|
|
338
|
-
.graview-bar-own{--graview-activity-mark:inline}
|
|
339
|
-
.graview-bar-own .graview-activity-word{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
|
|
340
|
-
.graview-bar[data-finding] :is(.graview-bar-app,.graview-bar-faces,.graview-bar-find-open){display:none}
|
|
341
|
-
.graview-bar[data-finding] .graview-bar-find{display:flex;flex:1 1 auto;min-width:0}
|
|
342
|
-
}
|
|
343
|
-
@container graview-bar (max-width: 300px){
|
|
344
|
-
.graview-bar-row{gap:4px;padding:0 10px}
|
|
345
|
-
}`,re={display:"inline-flex",alignItems:"center",justifyContent:"center",gap:6,minWidth:ee,height:ee,padding:0,borderRadius:8,border:"1px solid transparent",background:"none",boxShadow:"none",color:"var(--graview-ink-muted)",font:"inherit",fontSize:"0.875rem",cursor:"pointer",flex:"0 0 auto"};function on({brand:r,name:e,heading:t=1,home:n,faces:i,places:a,current:o,reach:l,tools:p,find:s=!0,description:u,findBox:c,onFind:g,switch:w="words",scenePlaces:y,skips:b,named:N=!0}){let V=(0,v.useRef)(null),f=X()?.who.size,[x,Y]=(0,v.useState)(null),[A,mt]=(0,v.useState)(null),[$,wt]=(0,v.useState)(!1),[vt,Ke]=(0,v.useState)(!1),[yt,ht]=(0,v.useState)(!0),[Ge,bt]=(0,v.useState)(null),le=i?i.pages.current:!y,xt=(0,v.useMemo)(()=>a.some(m=>m.hidden&&m.key!==o)?a.filter(m=>!m.hidden||m.key===o):a,[a,o]),Se=le?{places:xt,current:o,reach:l}:y,k=Se&&Se.places.length>0?Se:null,ze=k?k.places.findIndex(m=>m.key===k.current):-1,qe=!!i&&w==="words",je=k?k.places.map(m=>m.primary===!1?"0":"1").join(""):"",I=(0,v.useCallback)(()=>{let m=V.current;if(!m)return;let H=yn(m,ze,qe,je);H!==void 0&&bt(H);let q=H?!0:ln(m);q!==null&&ht(q)},[ze,qe,je]);(0,v.useLayoutEffect)(()=>{let m=V.current;if(!m)return;let H=()=>{let pe=m.getBoundingClientRect().width;wt(pe<oe),m.style.setProperty("--graview-bar-width",`${Math.round(pe)}px`),I()};H();let q=typeof document>"u"?void 0:document.fonts;if(q?.ready.then(I),q?.addEventListener?.("loadingdone",I),typeof ResizeObserver>"u")return()=>q?.removeEventListener?.("loadingdone",I);let Le=new ResizeObserver(H);Le.observe(m);for(let pe of m.querySelectorAll(".graview-bar-tools > *"))Le.observe(pe);return()=>{Le.disconnect(),q?.removeEventListener?.("loadingdone",I)}},[I]);let Pe=(0,v.useRef)(g);Pe.current=g,(0,v.useLayoutEffect)(()=>{Pe.current?.(s&&x?{slot:x,compact:$,own:A}:null)},[s,x,$,A]),(0,v.useLayoutEffect)(()=>()=>Pe.current?.(null),[]);let kt=(0,v.useCallback)(()=>{Ke(!0),requestAnimationFrame(()=>x?.querySelector("input")?.focus())},[x]),Ye=(0,v.useRef)(null),de=(0,v.useRef)(!1),Ue=(0,v.useCallback)(()=>{Ke(!1),de.current&&(de.current=!1,requestAnimationFrame(()=>Ye.current?.focus()))},[]),St=t===!1?"span":`h${t}`,Pt=n.href!==void 0?"a":"button",Lt=m=>H=>{!m||!rt(H)||(H.preventDefault(),m())},Et=!le,Qe=k&&!$&&Ge!==null?Ge.split(",").map(Number).filter(m=>m<k.places.length):null,ce=k?(0,d.jsx)(wn,{places:k.places,current:k.current,reach:k.reach,scene:Et,stands:Qe}):null,Tt=k?k.places.map(m=>m.label).join(`
|
|
346
|
-
`):"";(0,v.useLayoutEffect)(I,[I,e,r,Tt,k?.current,le,$,w,s]);let At=w==="icons"||!yt||$?"icons":"words";return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("header",{ref:V,className:"graview-bar","data-testid":"app-bar","data-graview-app-bar":"",...vt&&$?{"data-finding":""}:{},children:[(0,d.jsx)("style",{children:an}),b,(0,d.jsxs)("div",{className:"graview-bar-row",children:[N?(0,d.jsx)("div",{className:"graview-bar-app",children:(0,d.jsx)(St,{className:"graview-bar-name",children:(0,d.jsxs)(Pt,{...n.href!==void 0?{href:n.href,onClick:Lt(n.go)}:{type:"button",onClick:n.go},"data-testid":"app-home",...n.current?{"aria-current":"page"}:{},title:u?`${e} \u2014 ${u}`:`${e} \u2014 home`,className:"graview-bar-home",children:[(0,d.jsx)(Ce,{brand:r,size:20}),(0,d.jsx)("span",{className:"graview-bar-app-name","data-testid":"app-name",children:e})]})})}):null,i?(0,d.jsx)(sn,{faces:i,form:w,drawn:At}):null,(0,d.jsx)("div",{className:"graview-bar-mid",...Qe?{"data-places":"standing"}:!$&&ce?{"data-place":""}:{},children:$?null:ce}),!$&&k&&k.places.length>1?(0,d.jsxs)("span",{className:"graview-bar-ruler","aria-hidden":"true","data-graview-bar-ruler":"",children:[k.places.map(m=>(0,d.jsx)("span",{className:"graview-bar-at",children:m.label},m.key)),(0,d.jsxs)("span",{className:"graview-bar-at",children:[Me,(0,d.jsx)(nt,{})]})]}):null,N?(0,d.jsx)("span",{className:"graview-bar-ruler","aria-hidden":"true",children:(0,d.jsx)("span",{className:"graview-bar-name",children:e})}):null,(0,d.jsxs)("div",{className:"graview-bar-tools",children:[s?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("button",{type:"button",className:"graview-bar-find-open",ref:Ye,"data-testid":"app-find-open","aria-label":"Find",title:"Find",onClick:kt,style:{...re,display:void 0},children:(0,d.jsx)(un,{})}),(0,d.jsxs)("div",{className:"graview-bar-find","data-testid":"app-find",onBlur:m=>{let H=m.relatedTarget;H instanceof Node&&m.currentTarget.contains(H)||m.currentTarget.querySelector("input")?.value||Ue()},onKeyDownCapture:m=>{m.key==="Escape"&&$&&(de.current=!0)},onKeyDown:m=>{m.key!=="Escape"||!$||(!m.defaultPrevented||!m.currentTarget.querySelector("input")?.value?Ue():de.current=!1)},children:[(0,d.jsx)("div",{ref:Y,className:"graview-bar-find-slot",children:c}),(0,d.jsx)(cn,{})]})]}):null,(0,d.jsx)("div",{ref:mt,className:"graview-bar-own","data-graview-bar-own":""}),f?(0,d.jsx)(v.Suspense,{fallback:null,children:(0,d.jsx)(Jt,{scene:!le,compact:$})}):null,(0,d.jsx)(en,{}),p]})]})]}),$&&ce?(0,d.jsx)("div",{className:"graview-bar-line","data-graview-place-line":"","data-testid":"app-place-line",children:ce}):null]})}function sn({faces:r,form:e,drawn:t}){let n=i=>{let a=r[i];return(0,d.jsxs)("button",{type:"button",className:"graview-bar-face","data-testid":`app-face-${i}`,"aria-pressed":a.current,title:a.label,...a.reach&&!a.current?{onPointerEnter:a.reach,onPointerDown:a.reach,onFocus:a.reach}:{},onClick:()=>{a.current||a.go()},children:[i==="scene"?(0,d.jsx)(tt,{}):(0,d.jsx)(pn,{}),(0,d.jsx)("span",{children:a.label})]})};return(0,d.jsxs)("div",{className:"graview-bar-faces",role:"group","aria-label":`${r.scene.label} or ${r.pages.label}`,"data-testid":"app-faces","data-switch":e,"data-switch-drawn":t,children:[n("scene"),n("pages")]})}function ln(r){let e=r.querySelector(".graview-bar-faces"),t=r.querySelector(".graview-bar-mid"),n=r.querySelector(".graview-bar-find");if(!e||!t||n?.matches(":focus-within")||r.getBoundingClientRect().width<oe)return null;let a=it(e),o=t.querySelector(".graview-bar-place-words"),l=o?parseFloat(getComputedStyle(o).fontSize)||14:0,p=o?Math.min(o.scrollWidth+34,14*l):0,s=et(r);if(s===null)return!1;let u=t.getBoundingClientRect().width-p-s;if(n&&n.getBoundingClientRect().width>0){let c=parseFloat(getComputedStyle(n).flexBasis);isFinite(c)&&(u-=Math.max(0,c-n.getBoundingClientRect().width))}return e.getAttribute("data-switch-drawn")==="icons"?u>=a+2:u>=-1}function et(r){let e=r.querySelector(".graview-bar-app"),t=r.querySelector(".graview-bar-ruler>.graview-bar-name");if(!e||!t)return 0;let n=o=>o?.getBoundingClientRect().width??0,i=n(e.firstElementChild)-n(r.querySelector(".graview-bar-app-name"))+n(t)+2,a=parseFloat(getComputedStyle(e).maxWidth)/100*(e.parentElement.clientWidth-2*e.offsetLeft)||1/0;return i>a+.5?null:Math.max(0,i-n(e))}var rt=r=>r.button===0&&!(r.metaKey||r.ctrlKey||r.shiftKey||r.altKey);function dn(){let r=globalThis.navigator?.platform??"";return/Mac|iPhone|iPad|iPod/.test(r)?"\u2318K":"Ctrl K"}function cn(){let r=Dr(X()?.aiDesk);return(0,d.jsx)("span",{className:"graview-bar-find-keys","data-testid":"app-find-keys","aria-hidden":"true",children:r?"/":dn()})}function se({size:r,box:e=r,children:t}){return(0,d.jsx)("svg",{width:r,height:r,viewBox:`0 0 ${e} ${e}`,"aria-hidden":"true",focusable:"false",style:{flex:"0 0 auto"},children:t})}function tt(){return(0,d.jsxs)(se,{size:14,children:[(0,d.jsx)("path",{d:"M7 1.5 L12.5 4.5 L7 7.5 L1.5 4.5 Z",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinejoin:"round"}),(0,d.jsx)("path",{d:"M1.5 7.5 L7 10.5 L12.5 7.5",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinejoin:"round",strokeLinecap:"round"})]})}function pn(){return(0,d.jsxs)(se,{size:14,children:[(0,d.jsx)("rect",{x:"2.25",y:"1.75",width:"9.5",height:"10.5",rx:"1.5",fill:"none",stroke:"currentColor",strokeWidth:"1.3"}),(0,d.jsx)("path",{d:"M4.5 5 H9.5 M4.5 7.25 H9.5 M4.5 9.5 H7.5",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round"})]})}function nt(){return(0,d.jsx)(se,{size:10,children:(0,d.jsx)("path",{d:"M2 3.5 L5 6.5 L8 3.5",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})})}function un(){return(0,d.jsxs)(se,{size:16,children:[(0,d.jsx)("circle",{cx:"7",cy:"7",r:"4.75",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),(0,d.jsx)("path",{d:"M10.5 10.5 L14 14",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}function gn({place:r}){if(r.key===j)return(0,d.jsx)(tt,{});if(r.group==="home")return(0,d.jsx)(se,{size:13,box:14,children:(0,d.jsx)("path",{d:"M2 6.5 L7 2 L12 6.5 V12 H2 Z",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinejoin:"round"})});let e=r.kind?`hsl(${Math.round(nr(r.kind))} 55% 52%`:"rgb(128 128 128";return(0,d.jsx)("span",{"aria-hidden":"true",style:{display:"inline-block",width:12,height:8,clipPath:"polygon(50% 0, 100% 50%, 50% 100%, 0 50%)",background:r.group==="lists"?`${e})`:`linear-gradient(${e}), ${e})) center / 6px 4px no-repeat, ${e} / 0.35)`}})}var fn=[{group:"home"},{group:"lists",heading:"Lists"},{group:"pictures",heading:"Pictures"}],Me="More";function at({place:r,current:e,reach:t,standing:n,done:i}){let a=r.key===e,o=t.href?.(r.path);return(0,d.jsxs)(o!==void 0?"a":"button",{className:n?"graview-bar-at":"graview-bar-item","data-testid":`app-place-${r.key}`,"data-place-path":r.path,...a?{"aria-current":"page"}:{},...o!==void 0?{href:o}:{type:"button"},onClick:p=>{i(),t.go&&(o!==void 0&&!rt(p)||(p.preventDefault(),t.go(r)))},children:[n?null:(0,d.jsx)("span",{className:"graview-bar-mark",children:(0,d.jsx)(gn,{place:r})}),n&&a?(0,d.jsx)("span",{"data-testid":"app-place-current",children:r.label}):(0,d.jsx)("span",{children:r.label})]})}function mn({places:r,current:e,reach:t,id:n,done:i}){return(0,d.jsx)(d.Fragment,{children:fn.map(({group:a,heading:o})=>{let l=r.filter(s=>s.group===a);if(l.length===0)return null;let p=`${n}-${a}`;return(0,d.jsxs)("div",{role:"group",...o?{"aria-labelledby":p}:{"aria-label":l[0].label},"data-place-group":a,children:[o?(0,d.jsx)("p",{id:p,children:o}):null,(0,d.jsx)("ul",{children:l.map(s=>(0,d.jsx)("li",{children:(0,d.jsx)(at,{place:s,current:e,reach:t,standing:!1,done:i})},s.key))})]},a)})})}function wn({places:r,current:e,reach:t,scene:n,stands:i}){let a=J("places"),o=(0,v.useRef)(i);a.open||(o.current=i);let l=o.current,s=r.find(b=>b.key===e)?.label??"Places",u=l?r.filter((b,N)=>!l.includes(N)):r,c=vn(r,e,n),g=X(),w=g?.keptViews?.current(),y=!!(w&&(w.removed.length>0||g.views.places().some(b=>b.hidden)||w.may.lenses&&(g.views.arrangement?.()?.hide?.length??0)>0));return(0,d.jsxs)("nav",{className:l?"graview-bar-places":"graview-bar-place-at","aria-label":n?"What the scene shows":"The app\u2019s places",...l?{"data-testid":"app-places-standing"}:{},...c,children:[l?.map(b=>(0,d.jsx)(at,{place:r[b],current:e,reach:t,standing:!0,done:()=>{}},r[b].key)),u.length>0||y?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("button",{type:"button",className:l?"graview-bar-at":"graview-bar-place","data-testid":"app-places-open",...a.trigger,onClick:a.toggle,"aria-label":l?`${Me} \u2014 ${u.length} more ${n?"pictures":"places"}`:`${s} \u2014 ${n?"everything the scene shows":"every place"}`,title:l?u.map(b=>b.label).join(", "):s,children:[l?Me:(0,d.jsx)("span",{className:"graview-bar-place-words","data-testid":"app-place-current",children:s}),(0,d.jsx)(nt,{})]}),(0,d.jsxs)("div",{...a.pane,"data-testid":"app-places",hidden:!a.open,className:"graview-bar-list",style:Z,children:[(0,d.jsx)(mn,{places:u,current:e,reach:t,id:a.pane.id,done:()=>a.setOpen(!1)}),y&&a.open?(0,d.jsx)(v.Suspense,{fallback:null,children:(0,d.jsx)(Zt,{id:a.pane.id,scene:n,reach:t,done:()=>a.setOpen(!1)})}):null]})]}):null]})}function vn(r,e,t){let n=X()?.setMenuAt,i=a=>{let o=a.target.closest?.("[data-place-path],[data-testid=app-places-open]");if(!o||!n)return;let l={at:0};a.type==="pointerdown"?document.addEventListener("pointerup",()=>l.at||=Date.now(),{once:!0}):a.preventDefault();let p=a.nativeEvent;C.load().then(s=>s.placeGesture(p,o,r,e,t,n,l),String)};return{onContextMenu:a=>a.shiftKey||i(a),onKeyDown:a=>(a.key==="ContextMenu"||a.key==="F10"&&a.shiftKey)&&i(a),onPointerDown:a=>a.pointerType!=="mouse"&&a.isPrimary&&i(a)}}function yn(r,e,t,n){let i=r.querySelector("[data-graview-bar-ruler]"),a=r.querySelector(".graview-bar-mid");if(!i||!a)return null;let o=r.querySelector(".graview-bar-find");if(o?.matches(":focus-within"))return;if(r.getBoundingClientRect().width<oe)return null;let l=et(r);if(l===null)return null;let p=[...i.children].map(V=>V.getBoundingClientRect().width),s=p.pop()??0,u=r.querySelector(".graview-bar-faces"),c=u&&t?it(u):0,g=u?.getAttribute("data-switch-drawn")==="words"?c:0,w=a.getBoundingClientRect().left+l,y=o?.getBoundingClientRect(),b=y&&y.width>0?y.right-w-(parseFloat(getComputedStyle(o).minWidth)||0)-16:a.getBoundingClientRect().width-l,N=[...n].map(V=>V!=="0");return Jr({widths:p,current:e,room:Math.floor(b+g-c),more:s,primary:N})?.join(",")??null}function it(r){return[...r.querySelectorAll(".graview-bar-face span")].reduce((e,t)=>e+t.scrollWidth+10,0)}var hn=r=>`graview:lenses:${r}`,bn=(r,e)=>r?.name??e.kinds.join(",");function De(r){try{let e=JSON.parse(localStorage.getItem(hn(r))??"[]");return Array.isArray(e)?e.filter(t=>typeof t?.title=="string"&&typeof t.lens=="string"):[]}catch{return[]}}var G=h(B(),1);var T=h(S(),1);function xn({scheme:r,onScheme:e,profileHref:t,keeping:n,hostActions:i=kn,signature:a=!1}){let{store:o,principal:l,seats:p,people:s}=fe(),u=J("profile"),c=u.open,[g,w]=(0,G.useState)(!1);(0,G.useEffect)(()=>Ln(ye),[]),c&&!g&&w(!0),(0,G.useEffect)(()=>{c&&ye()},[c]);let y=l.id===void 0?void 0:o.graph.getNode(l.id),b=y===void 0?l.id===void 0?"Nobody in particular":rr(l,{graph:o.graph,schema:o.schema,seats:p,people:s}):Ze(o.schema.tryDefinition(y.kind),y);return(0,T.jsxs)("div",{style:{position:"relative"},children:[(0,T.jsx)("button",{type:"button","data-testid":"profile-button",...u.trigger,onClick:u.toggle,onPointerEnter:ye,onFocus:ye,"aria-label":`${b} \u2014 you, your seat and your settings`,title:`${b} \u2014 you, your seat and your settings`,style:{...re,borderRadius:999},children:(0,T.jsx)("span",{"aria-hidden":"true","data-testid":"profile-mark",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:ee-4,height:ee-4,borderRadius:999,fontSize:"0.8125rem",fontWeight:600,background:"var(--graview-panel-muted)",color:"var(--graview-ink)",border:"1px solid var(--graview-edge)"},children:En(b)})}),(0,T.jsxs)("section",{...u.pane,"aria-label":"Profile","data-testid":"profile","data-graview-offstage":"",hidden:!c,style:{...Z,width:280,maxWidth:"calc(100vw - 32px)",maxHeight:"min(62cqh, 520px)",overflowY:"auto",overflowX:"hidden",display:c?"grid":"none",gap:12,padding:12,borderRadius:10,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)"},children:[g?(0,T.jsx)(G.Suspense,{fallback:null,children:(0,T.jsx)(Sn,{part:"top",name:b,me:y,profileHref:t,hostActions:i,close:()=>u.setOpen(!1)})}):null,(0,T.jsxs)("div",{className:"graview-profile-keeping","data-testid":"profile-keeping",style:An,children:[(0,T.jsx)("span",{style:Tn,children:"Keeping this app"}),n]}),g?(0,T.jsx)(G.Suspense,{fallback:null,children:(0,T.jsx)(Pn,{part:"rest",name:b,me:y,scheme:r,onScheme:e,hostActions:i,signature:a,close:()=>u.setOpen(!1)})}):null]})]})}var kn=[],ye=()=>C.prefetch(),Sn=C.part((r,e)=>(0,T.jsx)(r.ProfilePane,{...e}),{what:"The rest of your menu"}),Pn=C.part((r,e)=>(0,T.jsx)(r.ProfilePane,{...e}),{quiet:!0});function Ln(r){let e=()=>{(typeof navigator>"u"||navigator.onLine!==!1)&&r()},t=globalThis;if(t.requestIdleCallback){let i=t.requestIdleCallback(e,{timeout:5e3});return()=>t.cancelIdleCallback?.(i)}let n=setTimeout(e,2500);return()=>clearTimeout(n)}function En(r){return(r.trim()[0]??"?").toUpperCase()}var Tn={fontSize:"0.75rem",letterSpacing:"0.14em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},An={paddingTop:10,borderTop:"1px solid var(--graview-edge)"};function $n(r){return!(r==="hidden"||r===!1)}var Fe=h(B(),1);var ot="The whole thing",he=r=>`scene:${r.kind}:${r.as}`;function st(r){let{view:e}=r,t=r.places.filter(c=>!r.hidden.has(c.kind)),n=ne(t),i=(c,g)=>{if(c===j)return Sr(Pr(g,!0),"view",null);let w=n.find(y=>he(y)===c);return w?Er(g,w.over?.find(y=>g.focusId===ae(y))??w.kind,w.as):null},a=e.within?.view,o=c=>e.focusId===ae(c.kind)&&(a===void 0?t.filter(g=>g.kind===c.kind).at(-1)===c:a===c.as),l=t.find(c=>o(c)&&(a!==void 0||!e.overview)),p=l?n.find(c=>ge(c,l)):void 0,s=n.filter(c=>!c.hidden||c===p);return{places:[{key:j,label:ot,path:`${Ae}${Oe(i(j,$e))}`,group:"home"},...s.map(c=>({key:he(c),label:Q(c,t,r.schema),path:`${Ae}${Oe(i(he(c),$e))}`,group:"pictures",kind:c.kind}))],current:p?he(p):j,to:i}}function On(){let{store:r,views:e,hiddenKinds:t}=fe(),{view:n,go:i}=Nr(),a=e.places(),o=(0,Fe.useMemo)(()=>st({places:a,hidden:t,view:n,schema:r.schema}),[a,t,n,r.schema]),l=(0,Fe.useMemo)(()=>({go:p=>{let s=o.to(p.key,n);s&&i(s)}}),[o,n,i]);return{places:o.places,current:o.current,reach:l}}var te=h(B(),1);var _=h(S(),1),Nn=C.part((r,e)=>(0,_.jsx)(r.ProblemRows,{...e}),{what:"The problems",as:"li"}),Ve=()=>C.prefetch();function Hn({clean:r="All rules hold"}){let e=Or(),{set:t}=$r(),n=e.length,[i,a]=(0,te.useState)(!1),o=J("problems",{open:i&&n>0,onOpenChange:a}),l=o.open,p=dt(e,r);return(0,te.useEffect)(()=>{if(n===0)return;let s=setTimeout(Ve,1500);return()=>clearTimeout(s)},[n>0]),(0,_.jsxs)("div",{style:{position:"relative",display:"inline-flex"},children:[(0,_.jsxs)("button",{type:"button","data-testid":"standing",...o.trigger,"aria-disabled":n===0?!0:void 0,"aria-label":p,onClick:n===0?void 0:o.toggle,onPointerEnter:n===0?void 0:Ve,onFocus:n===0?void 0:Ve,title:p,style:{...re,padding:n===0?0:"0 8px",cursor:n===0?"default":"pointer",color:n===0?"var(--graview-ink-muted)":lt(e),fontVariantNumeric:"tabular-nums",fontWeight:600},children:[(0,_.jsx)(ct,{tone:n===0?"var(--graview-good)":lt(e)}),n>0?(0,_.jsx)("span",{"aria-hidden":"true",children:n}):null]}),l?(0,_.jsx)("ol",{...o.pane,"data-testid":"problems",style:{...Z,width:300,maxHeight:"min(48cqh, 420px)",overflow:"auto",margin:0,padding:4,listStyle:"none",display:"grid",borderRadius:10,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)"},children:(0,_.jsx)(te.Suspense,{fallback:null,children:(0,_.jsx)(Nn,{violations:e,pick:s=>{t(s.nodeIds),o.setOpen(!1)}})})}):null]})}function dt(r,e){return r.length===0?e:`${tr(r)} \u2014 open what is broken, and what would fix it`}var lt=r=>r.some(e=>e.status==="could-not-judge"||e.status==="over-budget")?"var(--graview-bad)":"var(--graview-warn)";function ct({tone:r}){return(0,_.jsx)("span",{"aria-hidden":"true",style:{width:8,height:8,borderRadius:999,flex:"0 0 auto",background:r}})}function Bn(r,e,t=[]){if(r.focusId)return r.focusId;let i=(r.selection??[]).map(Lr).find(a=>a!==null)??t.find(a=>e.includes(a))??e[0]??null;return i===null?null:ae(i)}var xe=h(S(),1),be=M(R(()=>(__graviewPreload(import.meta.url,["./chunk.IBJBCZKG.js","./chunk.NQ26KMSQ.js","./chunk.GJQF7I22.js","./chunk.SPU3BVAO.js","./chunk.UK5F3S2N.js","./chunk.2VJ52LGS.js","./chunk.JI2UVZUU.js","./chunk.NZDHXREL.js","./chunk.TBSPEO2L.js","./chunk.5ON3JSAK.js","./chunk.3SBTQ66X.js","./chunk.SSAY4ITS.js","./chunk.WVUJXDXZ.js","./chunk.GLTWLQ6L.js","./chunk.ACB4TD4W.js","./chunk.XCQ7ZPR5.js","./chunk.MY5OXSS7.js","./chunk.NVRK6A7T.js","./chunk.FKJ3HIA5.js","./chunk.GZHZLJBF.js","./chunk.OW72XZF4.js","./chunk.OJGHDWI6.js","./chunk.KRODTMGR.js","./chunk.VICCAWAN.js","./chunk.OU5TRY4N.js","./chunk.CQPNDJAC.js","./chunk.GYTVL6GR.js","./chunk.TMYGLXR6.js","./chunk.SDO3U72B.js","./chunk.P4CLT32V.js","./chunk.SLBWPVIY.js","./chunk.AJZBJBMO.js"]),import("./chunk.CUB4IAUJ.js"))));function Cn(){return be.load().then(()=>{})}var Rn=[{cardinality:"one",fidelity:"full",slot:"page"},{cardinality:"one",fidelity:"summary",slot:"card"},{cardinality:"one",fidelity:"glyph",slot:"row"},{cardinality:"many",fidelity:"full"},{cardinality:"many",fidelity:"summary"},{cardinality:"many",fidelity:"glyph"}];function Mn({schema:r,specs:e,kind:t,view:n}){let i=be.current.frameworkViews(r,e).lookup(t,{cardinality:n.cardinality,fidelity:n.fidelity});return i?(0,xe.jsx)(i,{...n}):null}var _n=be.part((r,e)=>(0,xe.jsx)(Mn,{...e}),{what:"This view"});function pt(r,e,t){for(let n of e.kinds){let i=t?.[n];for(let a of Rn){let o=p=>(0,xe.jsx)(_n,{schema:e,specs:t,kind:n,view:p}),l=a.slot!==void 0&&i?.[a.slot]!==void 0;l&&(o.says=(p,s)=>be.current?.frameworkViews(e,t).lookup(n,{cardinality:a.cardinality,fidelity:a.fidelity})?.says?.(p,s)),r.register(n,{cardinality:a.cardinality,fidelity:a.fidelity},l?o:Tr(o))}}return r}function Dn(r,e){return pt(Ar(r),r,e)}var Ie=h(B(),1);var F=h(S(),1),ut=M(R(()=>(__graviewPreload(import.meta.url,["./chunk.MMVCZOEX.js","./chunk.OJ64WTLW.js","./chunk.GMAXA5GV.js","./chunk.Y5AMZBHA.js","./chunk.IBJBCZKG.js","./chunk.NQ26KMSQ.js","./chunk.GJQF7I22.js","./chunk.SPU3BVAO.js","./chunk.OPCBZNKF.js","./chunk.UK5F3S2N.js","./chunk.2VJ52LGS.js","./chunk.JI2UVZUU.js","./chunk.HJCQ6I3S.js","./chunk.7GAC7U34.js","./chunk.T3RTFTOZ.js","./chunk.W2DKFQ6R.js","./chunk.NZDHXREL.js","./chunk.TBSPEO2L.js","./chunk.5ON3JSAK.js","./chunk.3SBTQ66X.js","./chunk.SSAY4ITS.js","./chunk.3H7YIKKC.js","./chunk.ET3XJDPX.js","./chunk.3TVAE7LE.js","./chunk.JX2C3HVD.js","./chunk.Z7N3MJ36.js","./chunk.HVX7LFWR.js","./chunk.WVUJXDXZ.js","./chunk.GLTWLQ6L.js","./chunk.ACB4TD4W.js","./chunk.XCQ7ZPR5.js","./chunk.MY5OXSS7.js","./chunk.NVRK6A7T.js","./chunk.FKJ3HIA5.js","./chunk.GZHZLJBF.js","./chunk.OW72XZF4.js","./chunk.OJGHDWI6.js","./chunk.KRODTMGR.js","./chunk.VICCAWAN.js","./chunk.OU5TRY4N.js","./chunk.CQPNDJAC.js","./chunk.GYTVL6GR.js","./chunk.TMYGLXR6.js","./chunk.SDO3U72B.js","./chunk.P4CLT32V.js","./chunk.SLBWPVIY.js","./chunk.AJZBJBMO.js"]),import("./chunk.AL45OI4A.js"))));function Fn({lens:r,view:e}){let t=ut.current.declaredLensView(r);return(0,F.jsx)(t,{...e})}var Vn=ut.part((r,e)=>(0,F.jsx)(Fn,{...e}),{what:"This picture"});function In(r){let e=n=>(0,F.jsx)(Ie.Suspense,{fallback:null,children:(0,F.jsx)(Vn,{lens:r,view:n})});r.lens==="blocks"&&(e.flows=!0);let t=r.lens==="blocks"?r.options.blocks?.[0]:void 0;return typeof t?.headline=="string"&&(e.lede=t),r.create===!1&&(e.creates=!1),e}var gt=M(R(()=>(__graviewPreload(import.meta.url,["./chunk.IBJBCZKG.js","./chunk.NQ26KMSQ.js","./chunk.GJQF7I22.js","./chunk.SPU3BVAO.js","./chunk.UK5F3S2N.js","./chunk.2VJ52LGS.js","./chunk.JI2UVZUU.js","./chunk.NZDHXREL.js","./chunk.TBSPEO2L.js","./chunk.5ON3JSAK.js","./chunk.3SBTQ66X.js","./chunk.SSAY4ITS.js","./chunk.WVUJXDXZ.js","./chunk.GLTWLQ6L.js","./chunk.ACB4TD4W.js","./chunk.XCQ7ZPR5.js","./chunk.MY5OXSS7.js","./chunk.NVRK6A7T.js","./chunk.FKJ3HIA5.js","./chunk.GZHZLJBF.js","./chunk.OW72XZF4.js","./chunk.OJGHDWI6.js","./chunk.KRODTMGR.js","./chunk.VICCAWAN.js","./chunk.OU5TRY4N.js","./chunk.CQPNDJAC.js","./chunk.GYTVL6GR.js","./chunk.TMYGLXR6.js","./chunk.SDO3U72B.js","./chunk.P4CLT32V.js","./chunk.SLBWPVIY.js","./chunk.AJZBJBMO.js"]),import("./chunk.Y3LTHEN7.js"))));function Wn({blocks:r,view:e}){let t=gt.current.homeView(r);return(0,F.jsx)(t,{...e})}var Kn=gt.part((r,e)=>(0,F.jsx)(Wn,{...e}),{what:"The home"});function Gn(r){let e=t=>(0,F.jsx)(Ie.Suspense,{fallback:null,children:(0,F.jsx)(Kn,{blocks:r,view:t})});return Object.defineProperty(e,Symbol.for("graview.home-blocks"),{value:!0}),e}function zn(r,e){return e.home&&e.home.length>0&&r.home?.(Gn(e.home)),ft(r,e),r.arrange?.(e.pages),r}function ft(r,e,t){for(let n of vr(e).drawn){if(t&&r.places().some(o=>o.title===n.title))continue;let i=In(n),a={title:n.title,lens:n.lens,...n.across?{across:n.across}:{},...t?{beside:t}:{},...n.hidden?{hidden:!0}:{},over:n.kinds,...t?{}:{declared:!0}};for(let o of n.kinds)r.register(o,{cardinality:"many",fidelity:"full"},i,a),r.register(o,{cardinality:"many",fidelity:"summary"},i,a)}}function qn(r,e,t){t.length>0&&ft(r,{schema:e,lenses:t.map(({lens:n,...i})=>({...i,name:n}))},!0)}function jn(r,e,t){qn(r,e,De(t))}var z=h(B(),1),ke=h(S(),1);var We=r=>`graview:first-look:${r}`;function Yn(r,e){if(r.seen!==void 0)try{return typeof r.seen=="function"?r.seen():r.seen}catch{return!0}try{return window.localStorage.getItem(We(e))!==null}catch{return!1}}function Un(r,e){if(r.seen===void 0)try{window.localStorage.setItem(We(e),"seen")}catch{}}var Qn=M(R(()=>(__graviewPreload(import.meta.url,["./chunk.TMYGLXR6.js","./chunk.SDO3U72B.js","./chunk.P4CLT32V.js","./chunk.SLBWPVIY.js","./chunk.AJZBJBMO.js"]),import("./chunk.RMMJQYJJ.js")))),Xn=Qn.part((r,e)=>{let t=r.FirstLookHints;return(0,ke.jsx)(t,{...e})},{quiet:!0});function Zn({firstLook:r,root:e,app:t}){let n=(0,z.useRef)(null);n.current=r===!0?{}:r||null;let[i,a]=(0,z.useState)(()=>n.current!==null&&typeof window<"u"&&!Yn(n.current,t)),o=(0,z.useCallback)(l=>{if(a(!1),l===null)return;let p=n.current??{};Un(p,t),p.onDone?.(l)},[t]);return!i||n.current===null?null:(0,ke.jsx)(z.Suspense,{fallback:null,children:(0,ke.jsx)(Xn,{root:e,steps:n.current.steps??[],onEnd:o})})}export{Nt as a,Ht as b,me as c,Mt as d,ta as e,Dr as f,na as g,Be as h,Xt as i,Kr as j,Wt as k,Kt as l,ve as m,Gt as n,qt as o,jt as p,Yt as q,C as r,rn as s,tn as t,Xr as u,nn as v,re as w,on as x,xn as y,$n as z,On as A,hn as B,bn as C,De as D,Hn as E,dt as F,ct as G,Bn as H,zn as I,qn as J,jn as K,Cn as L,Dn as M,Zn as N};
|
|
347
|
-
/*! Bundled license information:
|
|
348
|
-
|
|
349
|
-
react-dom/cjs/react-dom.production.js:
|
|
350
|
-
(**
|
|
351
|
-
* @license React
|
|
352
|
-
* react-dom.production.js
|
|
353
|
-
*
|
|
354
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
355
|
-
*
|
|
356
|
-
* This source code is licensed under the MIT license found in the
|
|
357
|
-
* LICENSE file in the root directory of this source tree.
|
|
358
|
-
*)
|
|
359
|
-
*/
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as ve,b as qe,c as Ie,d as pe,e as R,f as fe,h as Ve}from"./chunk.76QSPWSJ.js";import{h as Le,i as Ue,j as We}from"./chunk.XCQ7ZPR5.js";import{a as se,b as ie,c as H,d as Be,e as J,g as ne,h as Ze}from"./chunk.NVRK6A7T.js";import{c as _e,h as y,i as Ne,j as le}from"./chunk.FKJ3HIA5.js";import{A as Re,Aa as Fe,Ha as De,Ia as ee,Ja as ce,Rb as Ke,Sb as de,Tb as Me,Ub as Pe,Vb as Te,b as W,c as L,e as xe,f as Ee,g as q,h as O,k as C,kc as Ge,l as X,lc as Ce,m as _,n as Ae,o as U,p as K,r as $,s as Q,t as x,u as E,v as I,w as P,x as n,y as M,z as Z}from"./chunk.P4CLT32V.js";var ue=e=>Object.entries(e).map(([s,r])=>[s,Object.keys(ee(r?.edges))]),me=(e,s)=>Me(e,ue(s));function Ye(e){return[...Object.keys(e.acts??{}),...Object.keys(e.kinds).flatMap(s=>Ke(s)),...Pe(ue(e.kinds))]}var V=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function He(e){if(!V(e)||!V(e.kinds))return e;let s;try{let f=Object.fromEntries(Object.entries(e.kinds).map(([z,i])=>[z,V(i)&&V(i.edges)?{edges:i.edges}:{}]));s=Ye({acts:V(e.acts)?e.acts:{},kinds:f})}catch{return e}let r=new Set(s),t=!1,a=f=>{if(typeof f!="string"||r.has(f))return f;let z=Ge(f,s);return z===void 0?f:(t=!0,z)},d=V(e.policy)&&Array.isArray(e.policy.grants)?{...e.policy,grants:e.policy.grants.map(f=>V(f)&&Array.isArray(f.mutations)?{...f,mutations:f.mutations.map(a)}:f)}:void 0,u=V(e.rules)?Object.fromEntries(Object.entries(e.rules).map(([f,z])=>[f,V(z)&&Array.isArray(z.repairs)?{...z,repairs:z.repairs.map(i=>V(i)?{...i,act:a(i.act)}:i)}:z])):void 0;return t?{...e,...d?{policy:d}:{},...u?{rules:u}:{}}:e}function ge(e,s){let r=Ce(e,Ye(s));return r&&r!==e?`did you mean "${r}"?`:void 0}var he="graview-document",be=1,ke=256*1024,te=64*1024,ze=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/,ye=/^[a-z][A-Za-z0-9]*$/,zn=new Set(["id","kind"]),yn=/^(?:[a-z][a-z0-9]*(?:-[a-z0-9]+)*|[a-z][A-Za-z0-9]*)$/,hn=["string","text","number","integer","boolean","date","datetime","enum","list","url","email","image","video","file","app-link","phone","place","duration"];function bn(){let e=k=>k in Object.prototype,s=Z(k=>!e(k),"every object already has this name \u2014 choose another"),r=(k,N)=>[...k===void 0?[]:[Ee(k)],...N===void 0?[]:[xe(N)]],t=(k,N)=>O().check(...r(k,N)),a=(k,N,gn)=>K(k).check(...r(N,gn)),d=k=>O().check(q(ze,`${k} names are kebab-case, lower-case words joined by hyphens like "tool-note" (field and relation names are camelCase, like "supersededBy")`)),u=O().check(q(yn,'relation names are one camelCase word, like "supersededBy" (kind names are kebab-case, like "tool-note")'),s),f=O().check(q(ye,'field names are one word or camelCase, like "dueDate", so rules say them bare (kind names are kebab-case, like "tool-note")'),Z(k=>!zn.has(k),'a field cannot be called "id" or "kind" \u2014 the framework keeps those; try "type" or "category"'),s),z=t(1,500),i=t(1,2e3),o=t(1,300),p=$({type:I(hn),required:n(_()),description:n(z),label:n(t(1,60)),options:n(a(t(1,80),1,100)),of:n(I(["string","number","date","image","video","file"])),default:n(U()),unit:n(t(void 0,12)),format:n(I(["money","percent","duration","markdown"])),min:n(C()),max:n(C()),step:n(C()),renamedFrom:n(O().check(q(ye))),repeats:n(_()),collaborative:n(_())}).check(Re((k,N)=>{k.type==="enum"&&!k.options&&N.addIssue({code:"custom",message:'an enum field lists its "options"',path:["options"]}),k.type!=="enum"&&k.options&&N.addIssue({code:"custom",message:'"options" belongs only on an enum field',path:["options"]}),k.type!=="list"&&k.of&&N.addIssue({code:"custom",message:'"of" belongs only on a list field',path:["of"]}),k.repeats&&k.type!=="date"&&k.type!=="datetime"&&N.addIssue({code:"custom",message:'"repeats" belongs only on a date or datetime field',path:["repeats"]})})),w=O().check(q(new RegExp(`${ze.source}|${Fe.source}`),'a relation goes to a kind of this document, like "house", or of another app, like "@nick/house/house"')),m=$({to:x([a(w,1),P("*")]),cardinality:n(I(["one","many"])),description:n(z),inverse:n(t(1,80)),appendOnly:n(_()),renamedFrom:n(O()),tidying:n(P("never"))}),l=x([i,$({expr:i,label:n(t(1,60)),description:n(z)})]),c=$({noun:n(t(1,40)),plural:n(t(1,40)),description:n(z),fields:E(f,p).check(Z(k=>Object.keys(k).length>0,"a kind has at least one field")),label:n(o),describe:n(o),lifecycle:n($({field:f,retired:a(x([O(),C(),_()]),1)})),figure:n(t(void 0,2e4)),glance:n(a(f,1,20)),page:n($({fields:n(a(f,1,40)),groups:n(a($({title:t(1,60),fields:a(f,1,40)}),1,12))})),edges:n(E(u,m)),computed:n(E(O(),l).check(Z(k=>Object.keys(k).length<=20,"a kind works out at most 20 computed fields"))),fieldRoles:n(E(O(),O())),renamedFrom:n(O().check(q(ze))),people:n(_()),archives:n(P(!1)),tidying:n(I(["never","no-links"]))}),j=x([O(),C(),_(),Ae(),K(U()),$({expr:i})]),h=O().check(q(/^\$[A-Za-z][A-Za-z0-9]*$/,'a reference is "$" and a name, like "$subject" or "$new"')),S=x([$({create:d("kind"),as:n(O().check(q(ye))),set:n(E(f,j))}),$({set:E(f,j),target:n(h)}),$({connect:u,from:h,to:h}),$({sever:u,from:h,to:h}),$({remove:h})]),A=$({title:n(t(1,80)),description:n(z),fromTheOtherEnd:n(t(1,80)),on:n(x([d("kind"),a(d("kind"),1)])),creates:n(d("kind")),sets:n(E(f,j)),writes:n(a(f,1)),connects:n(u),severs:n(u),setsOther:n(E(f,j)),replaces:n(x([P(!0),a(u,1,10)])),removes:n(P(!0)),args:n(E(f,p)),effects:n(a(S,1,20)),allowedWhen:n(i),refusal:n(o),destructive:n(_())}),b=$({act:d("act"),label:n(t(1,80)),args:n(E(O(),j))}),G=$({title:n(t(1,120)),description:n(z),over:x([P("graph"),d("kind")]),when:n(i),require:i,says:n(o),repairs:n(a(b,void 0,10))}),F=$({roles:x([a(d("role"),1),P("*")]),mutations:x([a(d("act"),1),P("*")]),kinds:n(x([K(d("kind")),P("*")])),describe:n(z),self:n(_()),ownEnd:n(_())}),g=n(a(d("field"),1)),v=$({roles:x([a(d("role"),1),P("*")]),kinds:a(d("kind"),1),own:n(_()),via:n(u),fields:g,hide:g}),D=$({grants:K(F),sees:n(K(v))}),oe=$({accent:n(O().check(q(/^#[0-9a-fA-F]{6}$/,'an accent is a color like "#c2577a"'))),name:n(t(1,60)),currency:n(O().check(q(/^[A-Z]{3}$/,'a currency is its three-letter code, like "USD" or "EUR"'))),locale:n(t(2,35)),timeZone:n(t(1,64)),logo:n(x([t(1,te),$({src:t(1,te),alt:n(t(1,120))}),$({light:t(1,te),dark:n(t(1,te)),alt:n(t(1,120)),darkFallback:n(P("invert"))})])),favicon:n(x([t(1,te),$({emoji:O()})])),typography:n($({display:n(t(1,200)),body:n(t(1,200)),mono:n(t(1,200))})),shape:n($({radius:n(C().check(L(0),W(32))),density:n(C().check(L(.75),W(1.5)))})),accents:n(E(O(),C().check(L(0),W(360)))),scheme:n(I(["light","dark","auto"])),subtitle:n(P(!1))}),B=E(O(),U()),Y=x([t(1,120),$({by:t(1,120),direction:n(I(["asc","desc"]))})]),je=C().check(X(),L(1),W(9999)),dn=Q({create:n(_()),options:n(Q({sort:n(Y),columnSort:n(Y),search:n(a(t(1,120),void 0,40)),filters:n(a(t(1,120),void 0,40)),horizon:n(x([C().check(X(),L(1),W(200)),Q({years:C().check(X(),L(1),W(200)),title:t(1,80),from:n(je),to:n(je)})]))}))}),ln=$({card:n(K(U())),row:n(K(U())),page:n(K(U()))}),pn=()=>{let k=n(I(["asc","desc"]));return x([t(1,120),$({by:t(1,120),direction:k,then:n(x([t(1,120),$({by:t(1,120),direction:k})]))})])},fn=()=>x([t(1,120),$({by:t(1,120),order:n(a(t(1,80),void 0,40)),closed:n(a(t(1,80),void 0,40))})]),Oe=Q({order:n(K(O())),hide:n(K(O())),first:n(O()),primary:n(a(t(1,80),void 0,40)),scene:n(t(1,40)),pages:n(t(1,40)),lists:n(E(O(),$({filters:n(a(t(1,120),void 0,40)),sort:n(pn()),group:n(fn())})))}),un=$({act:d("act"),title:n(t(1,80)),intro:n(z),fields:n(a(f,1,40)),say:n(z),submit:n(t(1,80)),role:n(d("role"))}),mn=$({$schema:n(O()),format:P(he),formatVersion:P(be),name:t(1,80),description:n(z),version:n(C().check(X(),L(1))),kinds:E(d("kind"),c).check(Z(k=>Object.keys(k).length>0,"a document declares at least one kind"),Z(k=>Object.keys(k).length<=40,"a document declares at most 40 kinds")),computed:n(E(O(),l)),acts:n(E(d("act"),A)),rules:n(E(d("rule"),G)),roles:n(K(d("role"))),policy:n(D),modules:n(B),lenses:n(K(dn)),pages:n(Oe),views:n(E(O(),x([ln,K(U())]))),brand:n(oe),settings:n(K(B)),migrations:n(K(B)),connections:n(E(d("connection"),B)),forms:n(E(d("form"),un)),publishing:n($({mode:I(["live","on-publish"]),working:a(d("role"),void 0,40),publishers:n(a(d("role"),1,40))}))});return{FieldSpec:p,EdgeSpec:m,ComputedSpec:l,KindSpec:c,ValueSpec:j,EffectSpec:S,ActSpec:A,RepairSpec:b,RuleSpec:G,GrantSpec:F,SightSpec:v,PolicySpec:D,BrandSpec:oe,PagesSpec:Oe,DocumentSpec:mn}}var kn,T=()=>kn??=bn(),_n=M(()=>T().FieldSpec),Nn=M(()=>T().EdgeSpec),qn=M(()=>T().ComputedSpec),In=M(()=>T().KindSpec),Vn=M(()=>T().ValueSpec),Bn=M(()=>T().EffectSpec),Ln=M(()=>T().ActSpec),Un=M(()=>T().RepairSpec),Wn=M(()=>T().RuleSpec),Zn=M(()=>T().GrantSpec),Yn=M(()=>T().SightSpec),Hn=M(()=>T().PolicySpec),Jn=M(()=>T().BrandSpec),Xn=M(()=>T().PagesSpec),Je=M(()=>T().DocumentSpec);var $n={};function Xe(e,s=$n,r=be){let{document:t,respelled:a}=ve(e),d=a.length>0?{respelled:a}:{};if(!t||typeof t!="object"||Array.isArray(t))return{document:t};let u=t;if(u.format!==he||typeof u.formatVersion!="number"||u.formatVersion>=r)return{document:t,...d};let f=u.formatVersion,z=structuredClone(u);for(let i=f;i<r;i++){let o=s[i];if(!o)throw new Error(`there is no upgrade from format ${i} to ${i+1}`);z={...o(z),formatVersion:i+1}}return{document:z,from:f,...d}}function Qe(e,s,r){let t=Object.keys(e).filter(f=>e[f].edges?.[s]!==void 0);if(t.length===0)return;let a=t.map(f=>e[f].edges[s].to),d=a.some(f=>f==="*")?"*":[...new Set(a.flatMap(f=>f))];if(r.length===0||r.some(f=>t.includes(f)))return{reversed:!1,kinds:d};let u=t.filter(f=>{let z=e[f].edges[s].to;return z==="*"||r.every(i=>z.includes(i))});return u.length>0?{reversed:!0,kinds:u}:{reversed:!1,kinds:d}}var tn=(e,s)=>{let r=e?.fields[s];return r!==void 0&&(r.type==="duration"||(r.type==="number"||r.type==="integer")&&r.format==="duration")};function en(e,s,r,t){if(t==="out"){let a=e[s]?.edges?.[r]?.to;return a===void 0?[]:a==="*"?Object.keys(e):a}return Object.entries(e).filter(([,a])=>{let d=a.edges?.[r]?.to;return d!==void 0&&(d==="*"||d.includes(s))}).map(([a])=>a)}function $e(e,s,r){if(r.t==="ident")return e[s]?.edges?.[r.name]?en(e,s,r.name,"out"):void 0;if(r.t==="where")return $e(e,s,r.set);if(r.t==="call"&&(r.fn==="out"||r.fn==="in")&&r.args[0]?.t==="lit"&&typeof r.args[0].value=="string")return en(e,s,r.args[0].value,r.fn)}var nn=(e,s,r)=>{let t=s.filter(a=>e[a]?.fields[r]!==void 0);return t.length>0&&t.every(a=>tn(e[a],r))};function on(e,s,r){let t=e.kinds,a=t[s],d=new Map(r),u=new Map,f=(i,o)=>{if(o>8)return!1;switch(i.t){case"ident":return tn(a,i.name)||z(i.name,o+1);case"member":{let p=$e(t,s,i.object);return p!==void 0&&nn(t,p,i.name)}case"call":{if(i.fn!=="sum"&&i.fn!=="min"&&i.fn!=="max")return!1;let[p,w]=i.args,m=p&&$e(t,s,p);return m!==void 0&&w?.t==="ident"&&nn(t,m,w.name)}case"binary":return(i.op==="+"||i.op==="-")&&f(i.left,o)&&f(i.right,o);case"unary":return i.op==="-"&&f(i.operand,o);default:return!1}},z=(i,o)=>{if(a?.computed?.[i]===void 0)return!1;if(u.has(i))return u.get(i);u.set(i,!1);let p=d.get(i),w=p!==void 0&&f(p,o);return u.set(i,w),w};return r.map(([i])=>i).filter(i=>z(i,0))}function sn(e,s,r=`kinds.${e}.page`){let t=s.page;if(!t)return[];let a=[],d=[...Object.keys(s.fields),...Object.keys(s.computed??{})],u=new Set,f=(i,o)=>{d.includes(i)?u.has(i)&&a.push(y("page-field-twice",o,`"${i}" is on ${e}'s page twice; name each field once`)):a.push(y("page-field",o,`${e}'s page is to show "${i}", and ${e} has no field or computed field called that`,`use one of: ${d.join(", ")}`)),u.add(i)};(t.fields??[]).forEach((i,o)=>f(i,`${r}.fields.${o}`));let z=new Set;return(t.groups??[]).forEach((i,o)=>{let p=i.title.trim().toLowerCase();z.has(p)&&a.push(y("page-group-twice",`${r}.groups.${o}.title`,`${e}'s page has two groups called "${i.title}"; give each its own title`)),z.add(p),i.fields.forEach((w,m)=>f(w,`${r}.groups.${o}.fields.${m}`))}),a}function rn(e,s=[]){return Te({declared:Object.keys(e.fields),paged:[...e.page?.fields??[],...(e.page?.groups??[]).flatMap(r=>r.fields)],must:r=>!!e.fields[r].required&&e.fields[r].default===void 0,naming:s})}var wn=new Set(["subject","now","today","me"]);function Sn(e){if((typeof e=="string"?e:JSON.stringify(e??null)).length>ke)return{findings:[y("too-large","",`a document may be at most ${ke/1024} KB`)]};if(typeof e=="string")try{e=JSON.parse(e)}catch(t){return{findings:[y("not-json","",`this is not JSON: ${t.message}`)]}}try{e=Xe(e).document}catch(t){return{findings:[y("format","formatVersion",t.message)]}}e=He(e);let s=Je.safeParse(e);if(!s.success)return{findings:s.error.issues.map(t=>{let a=t.path.map(String).join(".");if(t.code==="unrecognized_keys")return y("unknown-key",a,`${t.keys.map(d=>`"${d}"`).join(", ")} ${t.keys.length===1?"is":"are"} not part of a Graview document here`,"check the spelling against docs/declaration-document.md");if(t.code==="invalid_union"&&/\.effects\.\d+$/.test(a))return y("effect-shape",a,"this effect is not one Graview knows",'an effect is one of {"create": kind, "as"?: name, "set"?: {field: value}}, {"set": {field: value, \u2026}, "target"?: "$ref"}, {"connect"|"sever": relation, "from": "$ref", "to": "$ref"}, {"remove": "$ref"}');if(t.code==="invalid_key"){let d=t.issues?.[0]?.message;return y("shape",a,`the name "${String(t.path.at(-1))}" is not allowed here${d?`: ${d}`:""}`)}return y("shape",a,t.message)})};let r=s.data;return{document:r,findings:jn(r)}}var ae=e=>[e??[]].flat();function an(e){let s=new Map;for(let[r,t]of Object.entries(e.kinds))for(let[a,d]of Object.entries(ee(t.edges))){let u=s.get(a);s.set(a,{name:a,from:[...u?.from??[],r],to:d.to==="*"||u?.to==="*"?"*":[...new Set([...u?.to??[],...d.to])],cardinality:d.cardinality??"many"})}return s}function Et(e){let s=new Map;for(let[t,a]of Object.entries(e.kinds)){let d=ne(a),u=ce(a.edges);s.set(t,{fields:new Set([...Object.keys(a.fields),...u.keys()]),edges:new Map(Object.entries(ee(a.edges)).map(([f,z])=>[f,z.cardinality??"many"])),...d?{computed:d}:{},...u.size>0?{linked:u}:{}})}let r=ne(e);return r&&s.set(_e,{computed:r}),s}function cn(e,s){let r=[],t=ae(e.on),a=(d,u)=>{let f=Qe(s.kinds,d,t)?.reversed===!0,[z,i]=f?["$to","$subject"]:["$subject","$to"];return u==="connect"?{connect:d,from:z,to:i}:{sever:d,from:z,to:i}};if(e.creates){let d=s.kinds[e.creates],u={};for(let f of Object.keys(d?.fields??{}))u[f]=`$${f}`;for(let f of e.effects??[])"set"in f&&!("create"in f)&&R(f.target)==="new"&&Object.assign(u,f.set);r.push({create:e.creates,as:"new",set:u})}return e.sets&&r.push({set:e.sets}),e.writes&&!(e.creates&&e.on===void 0)&&r.push({set:Object.fromEntries(e.writes.map(d=>[d,`$${d}`]))}),e.connects&&(e.replaces&&r.push({replace:e.replaces===!0?[e.connects]:[...e.replaces],keep:e.connects}),r.push(a(e.connects,"connect"))),e.severs&&r.push(a(e.severs,"sever")),e.setsOther&&(e.connects||e.severs)&&r.push({set:e.setsOther,target:"$to"}),e.removes&&r.push({remove:"$subject"}),e.effects&&r.push(...e.effects.filter(d=>!(e.creates&&"set"in d&&!("create"in d)&&R(d.target)==="new"))),r}function we(e,s,r){try{let t=H(e),a=se(t);for(let d of a.unknownFunctions)r.push(y("unknown-function",s,`"${d}" is not a function the rule language knows`,"see docs/declaration-document.md#expression-language"));return t}catch(t){if(t instanceof ie){r.push(y("expression",s,t.sentence+` (at character ${t.at+1})`));return}throw t}}function Se(e,s,r){try{return J(e)}catch(t){if(t instanceof Be||t instanceof ie){r.push(y("template",s,(t instanceof ie,t.sentence)));return}throw t}}function jn(e){let s=[],r=new Set(Object.keys(e.kinds)),t=an(e),a=e.acts??{},d=new Set(e.roles??[]),u=(i,o)=>ce(e.kinds[i]?.edges).has(o),f=i=>Object.keys(e.kinds).some(o=>u(o,i));for(let[i,o]of Object.entries(e.kinds)){let p=`kinds.${i}`;for(let[m,l]of Object.entries(o.edges??{})){if(!De(l)&&l.to!=="*")for(let c of l.to)r.has(c)||s.push(y("edge-target",`${p}.edges.${m}.to`,`"${c}" is not a kind this document declares`));o.fields[m]&&s.push(y("edge-field-clash",`${p}.edges.${m}`,`"${m}" is both a field and a relation of ${i}`,"rename one of them"))}o.lifecycle&&!o.fields[o.lifecycle.field]&&s.push(y("lifecycle-field",`${p}.lifecycle.field`,`${i} has no field "${o.lifecycle.field}"`));let w=m=>o.computed!==void 0&&Object.hasOwn(o.computed,m);for(let m of o.glance??[])!o.fields[m]&&!w(m)&&s.push(y("glance-field",`${p}.glance`,`a glance at ${i} is to say "${m}", and ${i} has no field or computed field called that`,`use one of: ${[...Object.keys(o.fields),...Object.keys(o.computed??{})].join(", ")}`));s.push(...sn(i,o));for(let m of["label","describe"]){let l=o[m];if(!l)continue;let c=Se(l,`${p}.${m}`,s);for(let j of c??[])if(j.expr){for(let h of se(j.expr).names)if(!o.fields[h]){if(w(h)){Ze(o,h)||s.push(y("template-field",`${p}.${m}`,`${i}'s ${h} is worked out from beyond the record, and a ${m} is said with no graph to read`,`show it in a view instead, or name a computed field worked out from ${i}'s own fields`));continue}s.push(y("template-field",`${p}.${m}`,`${i} has no field "${h}" for its ${m} to show`,m==="label"?"a label can only show the record's own fields and what they work out":void 0))}}}for(let[m,l]of Object.entries(o.fields)){l.default!==void 0&&l.type==="enum"&&!l.options?.includes(String(l.default))&&s.push(y("default-option",`${p}.fields.${m}.default`,`"${String(l.default)}" is not one of ${m}'s options`));let c=`${m}Repeat`;l.repeats&&(o.fields[c]||o.edges?.[c]||o.computed?.[c])&&s.push(y("repeat-clash",`${p}.fields.${m}.repeats`,`${i} already has "${c}", where how ${m} repeats is kept`))}}for(let[i,o]of Object.entries(a)){let p=`acts.${i}`;for(let c of ae(o.on))r.has(c)||s.push(y("act-kind",`${p}.on`,`"${c}" is not a kind this document declares`));let w=ae(o.on),m=cn(o,e);if(o.creates&&o.on===void 0&&o.writes&&r.has(o.creates)){for(let c of o.writes)if(!e.kinds[o.creates].fields[c])if(e.kinds[o.creates].computed?.[c]!==void 0)s.push(y("computed-written",`${p}.writes`,`${o.creates}'s ${c} is worked out, not written: no act can set it`,"write the stored fields it is worked out from"));else{if(u(o.creates,c))continue;s.push(y("act-field",`${p}.writes`,`${o.creates} has no field "${c}"`))}}m.length===0&&s.push(y("act-empty",p,`"${i}" does nothing`,"give it effects or a shorthand such as sets or creates"));let l=new Map;m.forEach((c,j)=>{let h=m.length-(o.effects?.length??0),S=o.effects&&j>=h?`${p}.effects.${j-h}`:p;if("create"in c){if(!r.has(c.create))s.push(y("act-kind",`${S}.create`,`"${c.create}" is not a kind this document declares`));else for(let b of Object.keys(c.set??{}))e.kinds[c.create].fields[b]||(e.kinds[c.create].computed?.[b]!==void 0?s.push(y("computed-written",`${S}.set.${b}`,`${c.create}'s ${b} is worked out, not written: no act can set it`,"set the stored fields it is worked out from")):s.push(y("act-field",`${S}.set.${b}`,`${c.create} has no field "${b}"`)));c.as&&l.set(c.as,c.create)}else if("connect"in c||"sever"in c){let b="connect"in c?c.connect:c.sever;!t.has(b)&&!f(b)&&s.push(y("act-edge",`${S}.${"connect"in c?"connect":"sever"}`,`"${b}" is not a relation any kind declares`)),R(c.from)==="subject"&&w.length===0&&s.push(y("act-subject",`${p}.on`,`"${i}" acts on "$subject" but does not say which kinds it is "on"`))}else if("set"in c){let b=R(c.target??"$subject"),G=b==="subject"?w:l.has(b??"")?[l.get(b)]:[];b==="subject"&&w.length===0&&s.push(y("act-subject",`${p}.on`,`"${i}" changes "$subject" but does not say which kinds it is "on"`));for(let F of Object.keys(c.set))for(let g of G)if(!(!r.has(g)||e.kinds[g].fields[F]))if(e.kinds[g].computed?.[F]!==void 0)s.push(y("computed-written",`${S}.set.${F}`,`${g}'s ${F} is worked out, not written: no act can set it`,"set the stored fields it is worked out from"));else{if(u(g,F))continue;s.push(y("act-field",`${S}.set.${F}`,`${g} has no field "${F}"`))}}else"remove"in c&&R(c.remove)==="subject"&&w.length===0&&s.push(y("act-subject",`${p}.on`,`"${i}" removes "$subject" but does not say which kinds it is "on"`));("set"in c&&c.set?Object.values(c.set):[]).forEach(b=>{b&&typeof b=="object"&&!Array.isArray(b)&&"expr"in b&&we(b.expr,`${S}.set`,s)})}),o.allowedWhen&&we(o.allowedWhen,`${p}.allowedWhen`,s),o.refusal&&Se(o.refusal,`${p}.refusal`,s)}for(let[i,o]of Object.entries(e.rules??{})){let p=`rules.${i}`;o.over!=="graph"&&!r.has(o.over)&&s.push(y("rule-kind",`${p}.over`,`"${o.over}" is not a kind this document declares`));let w=o.over==="graph"?void 0:e.kinds[o.over];for(let m of["when","require"]){let l=o[m];if(!l)continue;let c=we(l,`${p}.${m}`,s);if(!c)continue;let j=se(c);for(let h of j.names)if(o.over==="graph")s.push(y("rule-name",`${p}.${m}`,`"${h}" means nothing in a rule over the whole graph`,`name a kind in "over", or use all('kind')`));else if(w&&!w.fields[h]&&!w.edges?.[h]&&w.computed?.[h]===void 0){let S=Object.keys(w.edges??{}).find(A=>A.includes("-")&&A.split("-").includes(h));s.push(y("rule-name",`${p}.${m}`,`${o.over} has no field or relation called "${h}"`,S?`"${S}" reads as a subtraction in a rule; rename the relation to one camelCase word, like "${S.replace(/-([a-z0-9])/g,(A,b)=>b.toUpperCase())}"`:void 0))}for(let h of j.edges)!t.has(h)&&!f(h)&&s.push(y("rule-edge",`${p}.${m}`,`"${h}" is not a relation any kind declares`));for(let h of j.sweeps)r.has(h)?o.over!=="graph"&&s.push(Ne("rule-cost",`${p}.${m}`,`this rule looks at every ${h} for every ${o.over}, which grows slowly as the app grows`,"walk a relation with out()/in() instead of all() where you can")):s.push(y("rule-kind",`${p}.${m}`,`"${h}" is not a kind this document declares`))}o.says&&Se(o.says,`${p}.says`,s),(o.repairs??[]).forEach((m,l)=>{!a[m.act]&&!de(m.act)&&!me(m.act,e.kinds)&&s.push(y("repair-act",`${p}.repairs.${l}.act`,`"${m.act}" is not an act this document declares`,ge(m.act,e)))})}let z=e.policy;return z&&(z.grants.forEach((i,o)=>{if(i.roles!=="*"&&d.size>0)for(let p of i.roles)d.has(p)||s.push(y("grant-role",`policy.grants.${o}.roles`,`"${p}" is not one of the document's roles`));if(i.mutations!=="*")for(let p of i.mutations)!a[p]&&!de(p)&&!me(p,e.kinds)&&s.push(y("grant-act",`policy.grants.${o}.mutations`,`"${p}" is not an act this document declares`,ge(p,e)))}),(z.sees??[]).forEach((i,o)=>{for(let p of i.kinds)r.has(p)||s.push(y("sight-kind",`policy.sees.${o}.kinds`,`"${p}" is not a kind this document declares`));if(i.roles!=="*"&&d.size>0)for(let p of i.roles)d.has(p)||s.push(y("sight-role",`policy.sees.${o}.roles`,`"${p}" is not one of the document's roles`))})),s.push(...We(e)),s}function On(e){return e.label?[...e.label.matchAll(/\{\s*([A-Za-z_][A-Za-z0-9_]*)/g)].map(s=>s[1]):[fe(e)??[]].flat()}function vn(e,s,r,t){let a=new Map,d=ae(e.on),u=new Map,f=new Map;(d.length>0||s.some(l=>"remove"in l&&R(l.remove)==="subject"||"from"in l&&(R(l.from)==="subject"||R(l.to)==="subject")||"set"in l&&!("create"in l)&&R(l.target??"$subject")==="subject"))&&a.set(pe,{ref:d.length>0?d:"*",required:!0});let i=e.args??{},o=e.writes?.length===1,p=(l,c)=>c&&l.type===c.type&&l.min===void 0&&l.max===void 0&&l.step===void 0?{...l,...c.min===void 0?{}:{min:c.min},...c.max===void 0?{}:{max:c.max},...c.step===void 0?{}:{step:c.step}}:l,w=(l,c)=>c&&l.type===c.type&&l.format===void 0&&l.unit===void 0?{...p(l,c),...c.format?{format:c.format}:{},...c.unit?{unit:c.unit}:{}}:p(l,c),m=(l,c,j)=>{if(l===pe||wn.has(l)||u.has(l)||a.has(l))return;let h=i[l]?w(i[l],j):void 0;a.set(l,h?{field:h,optional:!h.required,required:!!h.required}:c())};for(let l of s)if("create"in l){let c=r.kinds[l.create],j=c?rn(c,On(c)):[],h=S=>j.includes(S)?j.indexOf(S):j.length;for(let[S,A]of Object.entries(l.set??{}).sort(([b],[G])=>h(b)-h(G))){let b=R(A),G=c?.fields[S];if(b&&G){let F=!!G.required&&G.default===void 0;m(b,()=>({field:G,optional:!F,required:F}),G)}}l.as&&u.set(l.as,l.create)}else if("connect"in l||"sever"in l){let c=t.get("connect"in l?l.connect:l.sever);for(let[j,h]of[["from",l.from],["to",l.to]]){let S=R(h);if(!S)continue;let A=j==="to"?c?.to??"*":c?.from??"*";A!=="*"&&!f.has(S)&&f.set(S,A),m(S,()=>({ref:A,required:!0}))}}else if("set"in l){let c=R(l.target??"$subject"),j=c==="subject"?d[0]:u.get(c??"")??f.get(c??"")?.[0];c&&c!=="subject"&&!u.has(c)&&m(c,()=>({ref:"*",required:!0}));for(let[h,S]of Object.entries(l.set)){let A=R(S);if(!A)continue;let b=j?r.kinds[j]?.fields[h]:void 0;m(A,()=>b?{field:b,optional:!o,required:o}:{any:!0,required:!1},b)}}else if("remove"in l){let c=R(l.remove);c&&m(c,()=>({ref:"*",required:!0}))}for(let[l,c]of Object.entries(i))a.has(l)||a.set(l,{field:c,optional:!c.required,required:!!c.required});return a}function At(e,s={}){let r=Sn(e);if(!r.document||le(r.findings))return{ok:!1,findings:r.findings};let t=r.document,a=[...r.findings];s.previous&&a.push(...En(t,s.previous));let d=xn(t,a);return le(d.findings)?{ok:!1,findings:d.findings}:Ve(d,s)}function re(e,s){return e.map(r=>{let t=!r.format&&r.expr?.t==="ident"?s?.[r.expr.name]?.format:void 0;return t==="money"||t==="percent"?{...r,format:t}:r})}function xn(e,s){let r=an(e),t={};for(let[i,o]of Object.entries(e.kinds)){let p=fe(o),w=o.label??(p?`{${p}}`:void 0),m=ne(o),l=m?on(e,i,[...m]):[];t[i]={...w?{label:re(J(w),o.fields)}:{},...o.describe?{describe:re(J(o.describe),o.fields)}:{},...m?{computed:[...m]}:{},...l.length>0?{durations:l}:{}}}let a={};for(let[i,o]of Object.entries(e.acts??{})){let p=cn(o,e),w=vn(o,p,e,r),m=o.destructive??p.some(g=>"remove"in g||"sever"in g||"replace"in g),l=[...new Set(p.flatMap(g=>"create"in g?[g.create]:[]))],c=[...new Set(p.flatMap(g=>"connect"in g?[g.connect]:[]))],j=[...new Set(p.flatMap(g=>"sever"in g?[g.sever]:"replace"in g?g.replace:[]))],h=[...new Set(p.flatMap(g=>"set"in g&&!("create"in g)&&R(g.target??"$subject")==="subject"?Object.keys(g.set):[]))],S=new Map;for(let g of p){if(!("connect"in g)&&!("sever"in g))continue;let v=r.get("connect"in g?g.connect:g.sever);for(let[D,oe]of[["from",g.from],["to",g.to]]){let B=R(oe),Y=D==="to"?v?.to:v?.from;B&&B!=="subject"&&Y&&Y!=="*"&&S.set(B,[...new Set([...S.get(B)??[],...Y])])}}let A={};for(let g of p){if(!("set"in g)||"create"in g)continue;let v=R(g.target??"$subject");for(let D of v&&v!=="subject"&&S.get(v)||[])A[D]=[...new Set([...A[D]??[],...Object.keys(g.set)])]}let b={};for(let g of p)if(!(!("set"in g)||"create"in g||R(g.target??"$subject")!=="subject"))for(let[v,D]of Object.entries(g.set??{}))typeof D=="string"&&R(D)===void 0||typeof D=="number"||typeof D=="boolean"?b[v]=typeof D=="string"&&D.startsWith("$$")?D.slice(1):D:delete b[v];let G=l.length===0&&p.every(g=>!("set"in g)||!g.set||Object.values(g.set).every(v=>!(v&&typeof v=="object"&&!Array.isArray(v)&&"expr"in v))),F=new Map;for(let g of p)if(!(!("set"in g)||!g.set))for(let v of Object.values(g.set))v&&typeof v=="object"&&!Array.isArray(v)&&"expr"in v&&F.set(v.expr,H(v.expr));a[i]={title:o.title??i.replace(/-/g," "),effects:p,args:[...w],...o.allowedWhen?{guard:H(o.allowedWhen)}:{},...o.refusal?{refusal:re(J(o.refusal),e.kinds[[o.on??[]].flat()[0]??""]?.fields)}:{},exprs:[...F],destructive:m,idempotent:G,creates:l,connects:c,severs:j,writes:h,writesOther:A,sets:b}}let d={};for(let[i,o]of Object.entries(e.rules??{}))d[i]={title:o.title??i.replace(/-/g," "),require:H(o.require),...o.when?{when:H(o.when)}:{},...o.says?{says:re(J(o.says),e.kinds[o.over]?.fields)}:{}};let u=qe(e,s),f=Le(e),z=Ue(e);return{format:Ie,document:e,findings:s,kinds:t,...e.computed?{facts:[...ne(e)??[]]}:{},edges:[...r].map(([i,{from:o,to:p,cardinality:w}])=>[i,{from:o,to:p,cardinality:w}]),acts:a,rules:d,brand:u,...Object.keys(f).length>0?{viewSpecs:f}:{},...z?{home:z}:{}}}function Rt(e,s,r){let t=/^defineNode\("([^"]+)"\)/.exec(s)?.[1],a=t?r.kinds[t]:void 0;if(!t||!a)return e;let d=Object.keys(a.fields).filter(u=>u!=="label").slice(0,3);return{...e,path:`kinds.${t}.glance`,fix:`Say which: "glance": [${d.map(u=>`"${u}"`).join(", ")}] on kinds.${t} \u2014 the facts a person compares one by, at a glance.`}}function En(e,s){let r=[],t=new Set(Object.values(s.kinds).flatMap(a=>Object.keys(a.edges??{})));for(let[a,d]of Object.entries(e.kinds)){let u=d.renamedFrom;u&&!s.kinds[u]&&r.push(y("renamed-from-nothing",`kinds.${a}.renamedFrom`,`${a} says it was ${u}, and the previous version has no kind called ${u}`,"name the kind it was, or drop renamedFrom"));let f=s.kinds[u??a];for(let[z,i]of Object.entries(d.fields)){let o=i.renamedFrom;o&&!f?.fields[o]&&r.push(y("renamed-from-nothing",`kinds.${a}.fields.${z}.renamedFrom`,`${z} says it was ${o}, and the previous ${u??a} has no field called ${o}`,"name the field it was, or drop renamedFrom"))}for(let[z,i]of Object.entries(d.edges??{})){let o=i.renamedFrom;o&&!t.has(o)&&r.push(y("renamed-from-nothing",`kinds.${a}.edges.${z}.renamedFrom`,`${z} says it was ${o}, and the previous version has no relation called ${o}`,"name the relation it was, or drop renamedFrom"))}}return r}export{Sn as a,Et as b,cn as c,At as d,Rt as e};
|