graview 0.1.54 → 0.1.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/preview/{chunk.XTT6ERI3.js → chunk.22MIRLL6.js} +1 -1
- package/dist/preview/chunk.2BLRCT3E.js +1 -0
- package/dist/preview/chunk.2DETYEJM.js +1 -0
- package/dist/preview/{chunk.AN5QCSVK.js → chunk.2E6EWVWR.js} +1 -1
- package/dist/preview/{chunk.RBYRT2I2.js → chunk.2HZGUVB2.js} +1 -1
- package/dist/preview/{chunk.ZBHFCSKO.js → chunk.2OX4YI46.js} +1 -1
- package/dist/preview/{chunk.E5JX5LWY.js → chunk.2YNZVNCA.js} +1 -1
- package/dist/preview/chunk.3V2WH6F7.js +1 -0
- package/dist/preview/chunk.3X3GLNWQ.js +1 -0
- package/dist/preview/chunk.45VIF2SX.js +5 -0
- package/dist/preview/{chunk.VGOWGOGD.js → chunk.4EUH6TLG.js} +2 -2
- package/dist/preview/chunk.4EY6WPSM.js +2 -0
- package/dist/preview/{chunk.Y2DFDMT6.js → chunk.4KMY24YC.js} +1 -1
- package/dist/preview/chunk.4YI6656P.js +1 -0
- package/dist/preview/{chunk.D2PJG5N7.js → chunk.5B4HNQGR.js} +1 -1
- package/dist/preview/chunk.5MS2TQFX.js +1 -0
- package/dist/preview/chunk.5MSWUTDB.js +1 -0
- package/dist/preview/{chunk.BOMYLOCX.js → chunk.64IKLRUS.js} +1 -1
- package/dist/preview/{chunk.VYKEIKY5.js → chunk.65Q5MKDW.js} +1 -1
- package/dist/preview/{chunk.3IEJQAK7.js → chunk.6HLKAUWF.js} +1 -1
- package/dist/preview/chunk.6Q6BW4QT.js +2 -0
- package/dist/preview/chunk.7ECBGIUK.js +1 -0
- package/dist/preview/{chunk.J2Z6WLCH.js → chunk.7NP2I2UP.js} +1 -1
- package/dist/preview/{chunk.5C43AM3X.js → chunk.7O6Z3BFR.js} +1 -1
- package/dist/preview/chunk.7RJGEU3Y.js +1 -0
- package/dist/preview/{chunk.TUNHUTQ5.js → chunk.7U2JO7ET.js} +1 -1
- package/dist/preview/chunk.7Z2PRPYE.js +1 -0
- package/dist/preview/{chunk.3JMZHCB4.js → chunk.7Z4USR3Y.js} +1 -1
- package/dist/preview/chunk.AGTFYPXY.js +1 -0
- package/dist/preview/{chunk.XZJ6XX5I.js → chunk.AIK3Z25Y.js} +1 -1
- package/dist/preview/{chunk.ZDDWXRPK.js → chunk.AKVBU5K5.js} +1 -1
- package/dist/preview/chunk.AKW6NR3X.js +1 -0
- package/dist/preview/{chunk.2DFWOLL2.js → chunk.AM2YRNOQ.js} +1 -1
- package/dist/preview/{chunk.2WSRJGW2.js → chunk.APXYWI3L.js} +1 -1
- package/dist/preview/{chunk.7SCENHVG.js → chunk.AQCU6TPV.js} +1 -1
- package/dist/preview/{chunk.B2X6DA2Q.js → chunk.AZUTYY2S.js} +1 -1
- package/dist/preview/chunk.BJUUSIQY.js +1 -0
- package/dist/preview/{chunk.FRZQSSGE.js → chunk.BNEOLRQG.js} +1 -1
- package/dist/preview/chunk.BT7RLFPO.js +1 -0
- package/dist/preview/{chunk.4GHXAWIE.js → chunk.C2VFDBSG.js} +1 -1
- package/dist/preview/{chunk.C3AHDHX7.js → chunk.CGM7OER2.js} +1 -1
- package/dist/preview/{chunk.4F5M5XZG.js → chunk.CKV2QCH5.js} +1 -1
- package/dist/preview/{chunk.4KTHJY5N.js → chunk.CU2NQ5WF.js} +1 -1
- package/dist/preview/{chunk.ARRLAAG6.js → chunk.D4LN33J2.js} +1 -1
- package/dist/preview/{chunk.W6NCLU5Y.js → chunk.D6BMAGPR.js} +1 -1
- package/dist/preview/{chunk.RCFAHV5N.js → chunk.D6KF72MZ.js} +1 -1
- package/dist/preview/{chunk.L7MFTL5S.js → chunk.DH7M57SE.js} +1 -1
- package/dist/preview/chunk.DPPT6WAJ.js +2 -0
- package/dist/preview/{chunk.45HTFSWD.js → chunk.DTSTUC2W.js} +1 -1
- package/dist/preview/{chunk.VTO6UWUP.js → chunk.DWMAFMYZ.js} +1 -1
- package/dist/preview/chunk.DZYLH5IM.js +1 -0
- package/dist/preview/{chunk.PZ4G5QA5.js → chunk.E33EJU3Q.js} +1 -1
- package/dist/preview/{chunk.33YC5RCB.js → chunk.E4EN4X5F.js} +1 -1
- package/dist/preview/{chunk.DF7IPT7V.js → chunk.E4HSSGF7.js} +1 -1
- package/dist/preview/{chunk.PZWJUQAO.js → chunk.E5XNQTEU.js} +1 -1
- package/dist/preview/{chunk.FWKNR7XF.js → chunk.EC5IWN74.js} +2 -2
- package/dist/preview/chunk.FBR4HJ2Q.js +1 -0
- package/dist/preview/{chunk.AKLVSZ5A.js → chunk.FCUDBMGC.js} +1 -1
- package/dist/preview/chunk.FOQENWF5.js +1 -0
- package/dist/preview/{chunk.SLBWPVIY.js → chunk.FQLNBIQ5.js} +1 -1
- package/dist/preview/{chunk.562IVJHX.js → chunk.G3ORIU7C.js} +1 -1
- package/dist/preview/chunk.GNQW4JOG.js +18 -0
- package/dist/preview/chunk.GUP7LC5O.js +21 -0
- package/dist/preview/{chunk.FWZF7X6A.js → chunk.HFVMGTNL.js} +2 -2
- package/dist/preview/chunk.HVN2DVP3.js +1 -0
- package/dist/preview/{chunk.4WH4N4V7.js → chunk.I2C5LPB5.js} +1 -1
- package/dist/preview/{chunk.BPWSQVEN.js → chunk.IF4FCQPG.js} +1 -1
- package/dist/preview/{chunk.U7GN6UPR.js → chunk.ILSK2E3R.js} +1 -1
- package/dist/preview/{chunk.2LMB5E6N.js → chunk.IRMO4FUC.js} +1 -1
- package/dist/preview/chunk.IT763BYH.js +1 -0
- package/dist/preview/chunk.IUQOSPQX.js +1 -0
- package/dist/preview/{chunk.Y36WSKL5.js → chunk.J3YBEZKE.js} +1 -1
- package/dist/preview/{chunk.4V64RBCK.js → chunk.JHFHIG4P.js} +1 -1
- package/dist/preview/chunk.JL4DGITZ.js +1 -0
- package/dist/preview/{chunk.463PGKOL.js → chunk.JQY2UKU6.js} +1 -1
- package/dist/preview/{chunk.IDYPQ45A.js → chunk.JZDKHWRL.js} +1 -1
- package/dist/preview/{chunk.6BBB7SJL.js → chunk.K2JE3PD7.js} +1 -1
- package/dist/preview/chunk.K4MO22RM.js +1 -0
- package/dist/preview/{chunk.NEJSKMJV.js → chunk.K5YLQAFW.js} +1 -1
- package/dist/preview/{chunk.IMHUKSPM.js → chunk.KBL4Y4UN.js} +1 -1
- package/dist/preview/chunk.KMEKMCKG.js +3 -0
- package/dist/preview/{chunk.3ZONBC6L.js → chunk.LKK7VQBA.js} +1 -1
- package/dist/preview/chunk.LLOZKUCA.js +1 -0
- package/dist/preview/{chunk.YXRKZMS5.js → chunk.LP3SHWJG.js} +1 -1
- package/dist/preview/chunk.LVOVPU64.js +1 -0
- package/dist/preview/chunk.MEJUAV3Y.js +1 -0
- package/dist/preview/{chunk.7JCUSYS5.js → chunk.MFDSWA2W.js} +1 -1
- package/dist/preview/{chunk.JTOAZ2IR.js → chunk.MJMVGW6Z.js} +1 -1
- package/dist/preview/{chunk.SDO3DD77.js → chunk.MLRPCZVS.js} +1 -1
- package/dist/preview/{chunk.OCV46AFN.js → chunk.MORMTKVR.js} +1 -1
- package/dist/preview/{chunk.FMP6NDRZ.js → chunk.N3Q5CPVA.js} +1 -1
- package/dist/preview/{chunk.VW6X53E7.js → chunk.N7EEPFYV.js} +1 -1
- package/dist/preview/{chunk.NGWHV4G6.js → chunk.NBLMANHT.js} +1 -1
- package/dist/preview/{chunk.5RH6FO3K.js → chunk.NFU4UM6F.js} +1 -1
- package/dist/preview/chunk.NPAWTPLQ.js +25 -0
- package/dist/preview/{chunk.B6PKKEY3.js → chunk.NQ4VGKEC.js} +1 -1
- package/dist/preview/{chunk.MNW2ZBQ6.js → chunk.NUE5VG4G.js} +1 -1
- package/dist/preview/{chunk.XBDFXFWM.js → chunk.O6LDZWLR.js} +1 -1
- package/dist/preview/chunk.OBUKZQCZ.js +1 -0
- package/dist/preview/{chunk.GKLDSHHH.js → chunk.ONGZ3YQF.js} +1 -1
- package/dist/preview/chunk.OYGPNO7A.js +1 -0
- package/dist/preview/chunk.PJCVFYFU.js +1 -0
- package/dist/preview/{chunk.IYYP6QUH.js → chunk.PMPDLE56.js} +1 -1
- package/dist/preview/{chunk.PR2TSHE7.js → chunk.PRV3KYT6.js} +2 -2
- package/dist/preview/chunk.Q7X2IVLH.js +1 -0
- package/dist/preview/chunk.QAIYYIZQ.js +1 -0
- package/dist/preview/chunk.QNNRSPIJ.js +2 -0
- package/dist/preview/{chunk.KI6M3EWZ.js → chunk.QSO5BP2H.js} +1 -1
- package/dist/preview/{chunk.WICMCZ27.js → chunk.QW3QLE53.js} +1 -1
- package/dist/preview/{chunk.WHGEDJB2.js → chunk.QYFZ7AZS.js} +2 -2
- package/dist/preview/{chunk.Q6RUTFU3.js → chunk.RDL6652E.js} +1 -1
- package/dist/preview/{chunk.MDWCX3YU.js → chunk.RR2IFETZ.js} +1 -1
- package/dist/preview/{chunk.R7RDUW37.js → chunk.RXYE2DAJ.js} +1 -1
- package/dist/preview/chunk.SDLUWRGI.js +1 -0
- package/dist/preview/chunk.SOTB6C5A.js +1 -0
- package/dist/preview/{chunk.3SOJJAMY.js → chunk.SRC37GNP.js} +1 -1
- package/dist/preview/{chunk.CB7IUKY7.js → chunk.SVAQGVS4.js} +1 -1
- package/dist/preview/chunk.T2RME6XF.js +1 -0
- package/dist/preview/{chunk.COWJTVZV.js → chunk.T6HG2XIP.js} +1 -1
- package/dist/preview/{chunk.6TILXTP6.js → chunk.TAIYNHSW.js} +1 -1
- package/dist/preview/chunk.TAJ2R44N.js +1 -0
- package/dist/preview/{chunk.BUDEUNBN.js → chunk.TQCRFZ53.js} +1 -1
- package/dist/preview/{chunk.ZYW7Q5EN.js → chunk.TXWCTHMI.js} +1 -1
- package/dist/preview/chunk.UE5YS3GN.js +1 -0
- package/dist/preview/{chunk.C6HBYRGJ.js → chunk.UQQAGT3R.js} +1 -1
- package/dist/preview/chunk.USB6B6L3.js +104 -0
- package/dist/preview/{chunk.KRVEAIKW.js → chunk.USQNSNIA.js} +1 -1
- package/dist/preview/{chunk.AZGXBTOQ.js → chunk.V3NPUAPB.js} +1 -1
- package/dist/preview/{chunk.NDI5OWIB.js → chunk.VDD3RHLB.js} +1 -1
- package/dist/preview/{chunk.ULSN3ASK.js → chunk.VEOS25PQ.js} +1 -1
- package/dist/preview/chunk.VIQ6EF2O.js +1 -0
- package/dist/preview/{chunk.OZ4EJ5M6.js → chunk.VLBY66PB.js} +2 -2
- package/dist/preview/chunk.VSM72NVF.js +1 -0
- package/dist/preview/{chunk.GVUJCOKD.js → chunk.VYW7DSUW.js} +2 -2
- package/dist/preview/{chunk.DTJ4FIHM.js → chunk.WMB2NNBD.js} +1 -1
- package/dist/preview/{chunk.KJGNLWU3.js → chunk.WPJVMVAL.js} +1 -1
- package/dist/preview/{chunk.CB5DGKR5.js → chunk.XGCOWCA2.js} +1 -1
- package/dist/preview/chunk.XJFAUOJS.js +1 -0
- package/dist/preview/{chunk.7TMWMW4W.js → chunk.XY5EVI22.js} +1 -1
- package/dist/preview/chunk.YEJ4LNUP.js +5 -0
- package/dist/preview/{chunk.FCZ7UFJI.js → chunk.YL5ZCRHQ.js} +1 -1
- package/dist/preview/{chunk.MAWP27FD.js → chunk.YLMOGGEP.js} +1 -1
- package/dist/preview/{chunk.WVWXNW74.js → chunk.ZFXHZZHW.js} +1 -1
- package/dist/preview/index.html +52 -51
- package/dist/preview/page.js +2 -2
- package/package.json +6 -6
- package/dist/preview/chunk.25P5SDNR.js +0 -1
- package/dist/preview/chunk.27O4LIDU.js +0 -1
- package/dist/preview/chunk.3G5DEGFA.js +0 -1
- package/dist/preview/chunk.3MZIWKNG.js +0 -5
- package/dist/preview/chunk.3V2WXZU3.js +0 -1
- package/dist/preview/chunk.4BX3KLAA.js +0 -1
- package/dist/preview/chunk.4TGQ6Z6E.js +0 -1
- package/dist/preview/chunk.57VTD3CU.js +0 -1
- package/dist/preview/chunk.5M62CMLA.js +0 -1
- package/dist/preview/chunk.5VF2RT4H.js +0 -1
- package/dist/preview/chunk.5XAIP3BS.js +0 -1
- package/dist/preview/chunk.5ZWE72VJ.js +0 -1
- package/dist/preview/chunk.6SPORDJC.js +0 -1
- package/dist/preview/chunk.7UD2JR6J.js +0 -1
- package/dist/preview/chunk.AG7CUSSV.js +0 -1
- package/dist/preview/chunk.C6HI3LRB.js +0 -1
- package/dist/preview/chunk.D6ACCKYJ.js +0 -1
- package/dist/preview/chunk.EC7I33WI.js +0 -1
- package/dist/preview/chunk.GHPCSNM6.js +0 -21
- package/dist/preview/chunk.HLDMTKUP.js +0 -1
- package/dist/preview/chunk.J3OX474P.js +0 -1
- package/dist/preview/chunk.JCFYZEMY.js +0 -1
- package/dist/preview/chunk.JLB4QP6Q.js +0 -1
- package/dist/preview/chunk.JXGDVJ4N.js +0 -1
- package/dist/preview/chunk.K2J26XMB.js +0 -104
- package/dist/preview/chunk.KLJDBYAZ.js +0 -1
- package/dist/preview/chunk.LNOWO3IY.js +0 -2
- package/dist/preview/chunk.LOUICR7K.js +0 -1
- package/dist/preview/chunk.LU3B3SZH.js +0 -1
- package/dist/preview/chunk.LVOL2LEC.js +0 -1
- package/dist/preview/chunk.LYFEGG6E.js +0 -1
- package/dist/preview/chunk.MPMROUZA.js +0 -1
- package/dist/preview/chunk.MVRNEC3Y.js +0 -2
- package/dist/preview/chunk.OLKFEHWB.js +0 -1
- package/dist/preview/chunk.PCNEM3WE.js +0 -1
- package/dist/preview/chunk.QB7RYJ67.js +0 -5
- package/dist/preview/chunk.RLO3RDYH.js +0 -2
- package/dist/preview/chunk.RYMSHMLM.js +0 -1
- package/dist/preview/chunk.SF4BYBH6.js +0 -25
- package/dist/preview/chunk.SG7YVKH4.js +0 -1
- package/dist/preview/chunk.T42H5RXN.js +0 -1
- package/dist/preview/chunk.TI4OSTQV.js +0 -1
- package/dist/preview/chunk.VFMC45E7.js +0 -1
- package/dist/preview/chunk.VWQ57LTT.js +0 -18
- package/dist/preview/chunk.Y36MLVMT.js +0 -1
- package/dist/preview/chunk.Z6O7RUSR.js +0 -1
- package/dist/preview/chunk.ZAGP3OKY.js +0 -1
- package/dist/preview/chunk.ZUBC3UFG.js +0 -2
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{a as sr,b as ue,c as Fe,d as zn,f as $e,g as ar,h as Le,i as Nn}from"./chunk.SLBWPVIY.js";var cr="en-US",sn=/^\d{4}-\d{2}-\d{2}$/,ft=/^\d{4}(-\d\d){2}[T ]\d\d:\d\d(:[\d.]+)?(Z|[+-][\d:]+)?$/,Xp=n=>!Number.isNaN(Date.parse(n)),ee=(n,e=Date.now())=>{let t=pt(n);return t?ur(e,t).day:new Date(e).toISOString().slice(0,10)},pt=n=>on(n)??rn,In,Tn,jn,rn;function bc(n){In=Dn(n.reader),Tn=Dn(n.app),jn=on(n.readerTimeZone),rn=on(n.appTimeZone)}function vc(n,e){let t=[In,Tn,jn,rn];n.reader!==void 0&&(In=Dn(n.reader)),n.app!==void 0&&(Tn=Dn(n.app)),n.readerTimeZone!==void 0&&(jn=on(n.readerTimeZone)),n.appTimeZone!==void 0&&(rn=on(n.appTimeZone));try{return e()}finally{[In,Tn,jn,rn]=t}}var di=n=>In??Dn(n)??Tn??cr,ht=n=>jn??on(n)??rn,xc=n=>ht(n)??Intl.DateTimeFormat().resolvedOptions().timeZone??"UTC",wc=/^\s*([+\-−]|\d)/;var dr=new Map;function on(n){if(n&&!dr.has(n)){let e=!1;try{new Intl.DateTimeFormat(cr,{timeZone:n}),e=!wc.test(n)}catch{}dr.set(n,e)}return n&&dr.get(n)?n:void 0}var Ze=new Map;function Dn(n){if(n&&!Ze.has(n)){let e=!1;try{e=Intl.DateTimeFormat.supportedLocalesOf(n).length>0}catch{}Ze.set(n,e)}return n&&Ze.get(n)?n:void 0}function Re(n,e,t,r){let o=`${t=di(t)}${r?"#":"@"}${JSON.stringify(e)}`,i=Ze.get(o);return i||Ze.set(o,i=r?new Intl.NumberFormat(t,e):new Intl.DateTimeFormat(t,e)),i.format(n).replace(/ /g," ")}var Ce="UTC",gt=n=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10));function Ae(n,e){return sn.test(n)?Re(gt(n),{year:"numeric",month:"short",day:"numeric",timeZone:Ce},e):n}function ur(n,e){let t=`wall@${e??""}`,r=Ze.get(t);r||Ze.set(t,r=new Intl.DateTimeFormat("en-US",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hourCycle:"h23",...e?{timeZone:e}:{}}));let o=Object.fromEntries(r.formatToParts(n).map(i=>[i.type,i.value]));return{day:`${o.year}-${o.month}-${o.day}`,minutes:Number(o.hour)%24*60+Number(o.minute)}}function ci(n,e,t){let r=Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10),0,e),o=i=>{let s=ur(i,t);return kc(s.day,s.minutes)-Math.floor(i/6e4)*6e4};return r-o(r-o(r))}var kc=(n,e)=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10),0,e),ui=n=>/[Z+-][\d:]*$/.test(n.slice(16));function li(n,e,t,r,o=!1){if(!ft.test(n))return n;let i=ui(n),s=Date.parse(n.replace(" ","T")+(i?"":"Z"));if(Number.isNaN(s))return n;let a=i?ht(r):Ce;return Re(s,{...e,hour:"numeric",minute:"2-digit",...i&&o?{timeZoneName:"short"}:{},...a?{timeZone:a}:{}},t)}var lr=(n,e,t)=>li(n,{year:"numeric",month:"short",day:"numeric"},e,t,!0),Sc=(n,e,t)=>li(n,{},e,t);function $c(n,e){if(sn.test(n))return n;if(!ft.test(n))return;if(!ui(n))return n.slice(0,10);let t=Date.parse(n.replace(" ","T"));return Number.isNaN(t)?void 0:ur(t,ht(e)).day}function me(n,e,t={maximumFractionDigits:2}){return Number.isFinite(n)?Re(n,t,e,!0):String(n)}function Rc(n,e={},t){return sn.test(n)?Re(gt(n),{weekday:e.weekday??"long",month:"short",day:"numeric",...e.year?{year:"numeric"}:{},timeZone:Ce},t):n}function Ac(n,e){return sn.test(n)?Re(gt(n),{month:"short",day:"numeric",timeZone:Ce},e):n}function _c(n,e={},t){if(!/^\d{4}-\d{2}/.test(n))return n;let r=e.year??!e.short;return Re(gt(`${n.slice(0,7)}-01`),{month:e.short?"short":"long",...r?{year:e.short?"2-digit":"numeric"}:{},timeZone:Ce},t)}var Oc=(n,e="short",t)=>Re(Date.UTC(1970,0,4+n),{weekday:e,timeZone:Ce},t),Pc=(n,e)=>Re(Date.UTC(1970,0,1,0,Math.round(n)),{hour:"numeric",minute:"2-digit",timeZone:Ce},e),Ec=/(?<![\w-])(\d{4}-\d{2}-\d{2})(?![\w-]|:)/g;function fr(n,e){return n.includes("-")?n.replace(Ec,t=>Ae(t,e)):n}var Fn=n=>n.charAt(0).toUpperCase()+n.slice(1),fi=n=>/^.\p{Lu}/u.test(n)?n:n.charAt(0).toLowerCase()+n.slice(1),pi=(n,e="and")=>n.length>1?`${n.slice(0,-1).join(", ")} ${e} ${n.at(-1)}`:n[0]??"";function Mc(n,e){return{...e,kind:n,edges:e.edges??{}}}function pr(n,e,t){let r=n?.lifecycle;if(!r)return!0;let o=e[r.field];return r.retired==="date"?typeof o!="string"||o.length===0?!0:o>=(t??ee()):!r.retired.includes(o)}function C(n,e){if(n?.label)return n.label(e);let t=e.label;return typeof t=="string"&&t.length>0?t:e.id}function zc(n){return n.title??V(n.name)}function V(n){let e=n.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").trim().toLowerCase();return Fn(e.replace(/\b[a-z]+\b/g,t=>hi.has(t)?t.toUpperCase():t.endsWith("s")&&hi.has(t.slice(0,-1))?`${t.slice(0,-1).toUpperCase()}s`:t))}var hi=new Set("id url uri api ip ioc cve cvss cwe cpe sku vat iban isbn pdf csv json html css sla kpi roi faq ssn ein vin gps sms crm erp seo utm ui ux ai dns ssl tls http https sql uuid mfa sso cto ceo cfo coo rsvp eta".split(" "));function Nc(n,e,t){let r=n.tryDefinition(e);return`${me(t)} ${t===1?H(r,e):se(n,e).toLowerCase()}`}function se(n,e){return n.tryDefinition(e)?.plural??`${V(e).toLowerCase()}s`}function Ic(n,e){return Fn(se(n,e))}function Tc(n,e){let t=se(n,e);return`All ${/^[A-Z][a-z]/.test(t)?t.charAt(0).toLowerCase()+t.slice(1):t}`}function mt(n,e){let t=n?.computed&&Object.hasOwn(n.computed,e)?n.computed[e]:void 0;return n?.display?.labels?.[e]??(typeof t=="object"?t.label:void 0)??(e==="label"?"Name":V(e))}var jc=/^(u[nt]i|use|usu|uti|ubiq|eu|ewe|one|once)/,Dc=/^(hour|honest|hono[ur]r?|heir)/;function gi(n){let e=V(n).toLowerCase();return Dc.test(e)?"an":jc.test(e)?"a":/^[aeiou]/.test(e)?"an":"a"}function an(n){return`${gi(n)} ${V(n).toLowerCase()}`}function H(n,e){return n?.noun??V(e).toLowerCase()}function mr(n){let e=Object.values(n).filter(r=>typeof r=="number");return Object.entries(n).filter(([r,o])=>e.indexOf(+r)===-1).map(([r,o])=>o)}function yr(n,e="|"){return n.map(t=>kr(t)).join(e)}function yi(n,e){return typeof e=="bigint"?e.toString():e}var gr=class{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;return e!==void 0&&(this._value=e(),this._getter=void 0),this._value}};function bi(n){return new gr(n)}function vi(n){return n==null}function br(n){let e=n.startsWith("^")?1:0,t=n.endsWith("$")?n.length-1:n.length;return n.slice(e,t)}function xi(n,e){let t=n/e,r=Math.round(t),o=4*Number.EPSILON*Math.max(Math.abs(t),1);return Math.abs(t-r)<o?0:t-r}var mi=Symbol("evaluating");function wi(n,e,t){let r;Object.defineProperty(n,e,{get(){if(r!==mi)return r===void 0&&(r=mi,r=t()),r},set(o){Object.defineProperty(n,e,{value:o})},configurable:!0})}function bt(n,e,t){Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0})}function ki(n){let e=Object.getOwnPropertyDescriptor(n,"shape");return e?.get?e.get.raw:e?.value}function vr(n){return ki(n._zod.def)??n._zod.def.shape}function Si(n,e,t){Object.defineProperty(n,e,{get(){let r=t();return bt(this,e,r),r},enumerable:!0,configurable:!0})}function $i(n,e,t){e in n?bt(n,e,t):n[e]=t}function Fc(n,e,t,r){let o=vr(e);for(let i of t){let s=Object.getOwnPropertyDescriptor(o,i);s.enumerable&&(s.get?Si(n,i,()=>{let a=e._zod.def.shape[i];return r?r(a,i):a}):$i(n,i,r?r(s.value,i):s.value))}}function Lc(n,e){for(let t of Reflect.ownKeys(e)){let r=Object.getOwnPropertyDescriptor(e,t);r.enumerable&&(r.get?Si(n,t,()=>e[t]):$i(n,t,r.value))}}function Ri(...n){let e={};for(let t of n){let r=Object.getOwnPropertyDescriptors(t);Object.assign(e,r)}return Object.defineProperties({},e)}var xr="captureStackTrace"in Error?Error.captureStackTrace:(...n)=>{};function yt(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function wr(n){if(yt(n)===!1)return!1;let e=n.constructor;if(e===void 0||typeof e!="function")return!0;let t=e.prototype;return!(yt(t)===!1||Object.prototype.hasOwnProperty.call(t,"isPrototypeOf")===!1)}var Ai=new Set(["string","number","symbol"]);function Zn(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function dn(n,e,t){let r=new n._zod.constr(e??n._zod.def);return(!e||t?.parent)&&(r._zod.parent=n),r}function N(n){let e=n;if(!e)return{};if(typeof e=="string")return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");e.error=e.message}return delete e.message,typeof e.error=="string"?{...e,error:()=>e.error}:e}function kr(n){return typeof n=="bigint"?n.toString()+"n":typeof n=="string"?`"${n}"`:`${n}`}function _i(n){return Object.keys(n).filter(e=>n[e]._zod.optin!==void 0&&n[e]._zod.optout==="optional")}var Oi={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function Pi(n,e){if(!wr(e))throw new Error("Invalid input to extend: expected a plain object");let t=n._zod.def.checks;if(t&&t.length>0){let o=vr(n);for(let i of Reflect.ownKeys(e))if(Object.getOwnPropertyDescriptor(o,i)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return dn(n,Ri(n._zod.def,{shape:Zc(n,e)}))}function Zc(n,e){let t={};return Fc(t,n,Reflect.ownKeys(vr(n))),Lc(t,e),t}function ye(n,e=0){if(n.aborted===!0)return!0;for(let t=e;t<n.issues.length;t++)if(n.issues[t]?.continue!==!0)return!0;return!1}function Ei(n,e=0){if(n.aborted===!0)return!0;for(let t=e;t<n.issues.length;t++)if(n.issues[t]?.continue===!1)return!0;return!1}function Oe(n,e){return e.map(t=>{var r;return(r=t).path??(r.path=[]),t.path.unshift(n),t})}function Ln(n){return typeof n=="string"?n:n?.message}function Sr(n,e,t){var r;for(let o=e;o<n.length;o++)(r=n[o]).schema??(r.schema=t)}function be(n,e,t){var r;let o=n.inst?._zod?.traits;o?.has("$ZodType")&&(o.has("$ZodCheck")?(r=n).schema??(r.schema=n.inst):n.schema=n.inst);let i=n.schema!==n.inst?n.schema?._zod.def?.error:void 0,s=n.message?n.message:Ln(n.inst?._zod.def?.error?.(n))??Ln(i?.(n))??Ln(e?.error?.(n))??Ln(t.customError?.(n))??Ln(t.localeError?.(n))??"Invalid input",a={};for(let d of Object.keys(n))d==="inst"||d==="schema"||d==="continue"||d==="input"||d==="__proto__"||(a[d]=n[d]);return a.path??(a.path=[]),a.message=s,e?.reportInput&&(a.input=n.input),a}var Cc=/[\uD800-\uDBFF]/;function $r(n){let e=n.length;if(!Cc.test(n))return e;let t=e;for(let r=0;r<e-1;r++)(n.charCodeAt(r)&64512)===55296&&(n.charCodeAt(r+1)&64512)===56320&&(t--,r++);return t}function Rr(n){return Array.isArray(n)?"array":typeof n=="string"?"string":"unknown"}function Mi(n){let e=typeof n;switch(e){case"number":return Number.isNaN(n)?"nan":"number";case"object":{if(n===null)return"null";if(Array.isArray(n))return"array";let t=n;if(t&&Object.getPrototypeOf(t)!==Object.prototype&&"constructor"in t&&t.constructor)return t.constructor.name}}return e}function Cn(...n){let[e,t,r]=n;return typeof e=="string"?{message:e,code:"custom",input:t,inst:r}:{...e}}function zi(n,e){for(let t in e){let r=Object.getOwnPropertyDescriptor(e,t);r.get?Object.defineProperty(n,t,{...r,enumerable:!1}):Gc(n,t,r.value)}}function Ge(n,e,t,r=!0){return Object.defineProperty(n,e,{configurable:!0,writable:!0,enumerable:r,value:t}),t}function Ar(n,e,t){return Ge(n,e,t,!1)}function Gc(n,e,t){Object.defineProperty(n,e,{configurable:!0,get(){return this==null?t:Ge(this,e,t.bind(this))},set(r){Ge(this,e,r)}})}function Kc(n,e){let t=Object.getPrototypeOf(n);return e in t?void 0:t}var hr,_e=!1,Vc={configurable:!0,get(){_e=!0}};function Y(n,e,t){let r=Object.getPrototypeOf(n._zod);if(e in r&&hr!==n._zod){hr=void 0;return}hr=n._zod,Object.defineProperty(r,e,{configurable:!0,get(){Object.defineProperty(this,e,Vc);let o=_e;_e=!1;try{let i=t(this);return _e?delete this[e]:Object.defineProperty(this,e,{configurable:!0,writable:!0,value:i}),_e=_e||o,i}catch(i){throw delete this[e],_e=_e||o,i}},set(o){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:o})}})}function Ni(n,e,t,r){let o=Kc(n,e);o&&Object.defineProperty(o,e,{configurable:!0,get(){let i={configurable:!0,writable:!0,enumerable:r,value:void 0};return Object.defineProperty(this,e,i),i.value=t(this),Object.defineProperty(this,e,i),i.value},set(i){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:r,value:i})}})}var Ii;var _r={value:void 0,enumerable:!1},Ti="captureStackTrace"in Error?Error:null;function Bc(n){let e=Ti;if(e){let t=e.stackTraceLimit;if(typeof t=="number"){try{e.stackTraceLimit=0}catch{return Ti=null,new n}try{return new n}finally{e.stackTraceLimit=t}}}return new n}function O(n,e,t,r){let o={};function i(u){this.def=u,this.constr=p,this.traits=new Set}i.prototype=o;let s=t,a=s&&new WeakSet;function d(u,f){if(u._zod){if(u._zod.traits.has(n))return}else{_r.value=new i(f);try{Object.defineProperty(u,"_zod",_r)}finally{_r.value=void 0}}if(u._zod.traits.add(n),e(u,f),a){let g=Object.getPrototypeOf(u),x=u._zod.constr.prototype,m=g;for(;m&&m!==x;)m=Object.getPrototypeOf(m);let k=m??g;a.has(k)||(a.add(k),zi(k,s))}let h=p.prototype;for(let g in h)Object.prototype.hasOwnProperty.call(h,g)&&(g in u||(u[g]=h[g].bind(u)))}let l=r?.Parent??Object;class c extends l{}Object.defineProperty(c,"name",{value:n});function p(u){let f=r?.Parent?Bc(c):this;d(f,u);let h=f._zod.deferred;if(h){for(let x of h)x();f._zod.deferred=void 0}let g=globalThis.__zod_globalConfig?.postProcessor;return g&&g(f),f}return Object.defineProperty(p,"init",{value:d}),Object.defineProperty(p,Symbol.hasInstance,{value:u=>r?.Parent&&u instanceof r.Parent?!0:u?._zod?.traits?.has(n)}),Object.defineProperty(p,"name",{value:n}),p}var xe=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};(Ii=globalThis).__zod_globalConfig??(Ii.__zod_globalConfig={});var cn=globalThis.__zod_globalConfig;function ne(n){return n&&Object.assign(cn,n),cn}function Uc(){let n=this._zod;return n.message??(n.message=JSON.stringify(n.def,yi,2)),n.message}function Wc(n){this._zod.message=n}var qc={get:Uc,set:Wc,enumerable:!0,configurable:!0},Pr={value:void 0,enumerable:!1},ji=new WeakSet([Object.prototype,Error.prototype]),Di=(n,e)=>{n.name="$ZodError",Pr.value=e,Object.defineProperty(n,"issues",Pr),Pr.value=void 0,Object.defineProperty(n,"message",qc);let t=Object.getPrototypeOf(n);ji.has(t)||(ji.add(t),Object.defineProperty(t,"toString",{configurable:!0,enumerable:!1,get(){let r=()=>this.message;return Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0}),r},set(r){Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0})}}))},sh=O("$ZodError",Di),Gn=O("$ZodError",Di,void 0,{Parent:Error});var Yc=n=>{let e=(t,r,o,i)=>{let s=o?{...o,async:!1}:{async:!1},a=t._zod.run({value:r,issues:[]},s);if(a instanceof Promise)throw new xe;if(a.issues.length){let d=new(i?.Err??n)(a.issues.map(l=>be(l,s,ne())));throw xr(d,i?.callee??e),d}return a.value};return e},Er=Yc(Gn),Jc=n=>{let e=async(t,r,o,i)=>{let s=o?{...o,async:!0}:{async:!0},a=t._zod.run({value:r,issues:[]},s);if(a instanceof Promise&&(a=await a),a.issues.length){let d=new(i?.Err??n)(a.issues.map(l=>be(l,s,ne())));throw xr(d,i?.callee??e),d}return a.value};return e},Mr=Jc(Gn),Xc=n=>(e,t,r)=>{let o=r?{...r,async:!1}:{async:!1},i=e._zod.run({value:t,issues:[]},o);if(i instanceof Promise)throw new xe;return i.issues.length?Fi(n,i.issues,o):{success:!0,data:i.value}},zr=Xc(Gn);function Fi(n,e,t){let r;return{success:!1,get error(){return r||(r=new n(e.map(o=>be(o,t,ne()))),e=void 0,t=void 0),r},set error(o){r=o,e=void 0,t=void 0}}}var Qc=n=>async(e,t,r)=>{let o=r?{...r,async:!0}:{async:!0},i=e._zod.run({value:t,issues:[]},o);return i instanceof Promise&&(i=await i),i.issues.length?Fi(n,i.issues,o):{success:!0,data:i.value}},Nr=Qc(Gn);var Li=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var Zi=/^https?$/;var Ci=/^[\s\S]{0,}$/;var Ir=/^-?\d+(?:\.\d+)?$/,Gi=/^(?:true|false)$/i,Ki=/^null$/i;var te=O("$ZodCheck",(n,e)=>{var t;n._zod??(n._zod={}),n._zod.def=e,(t=n._zod).onattach??(t.onattach=[])});var Vi=n=>{let e=n.value;return!vi(e)&&e.length!==void 0},vt={number:"number",bigint:"bigint",object:"date"},Bi=O("$ZodCheckLessThan",(n,e)=>{te.init(n,e);let t=vt[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value<=e.value:r.value<e.value)||r.issues.push({origin:vt[typeof r.value]??t,code:"too_big",maximum:typeof e.value=="object"?e.value.getTime():e.value,input:r.value,inclusive:e.inclusive,inst:n,continue:!e.abort})}}),Ui=O("$ZodCheckGreaterThan",(n,e)=>{te.init(n,e);let t=vt[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value>=e.value:r.value>e.value)||r.issues.push({origin:vt[typeof r.value]??t,code:"too_small",minimum:typeof e.value=="object"?e.value.getTime():e.value,input:r.value,inclusive:e.inclusive,inst:n,continue:!e.abort})}}),Wi=O("$ZodCheckMultipleOf",(n,e)=>{te.init(n,e),n._zod.check=t=>{if(typeof t.value!=typeof e.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof t.value=="bigint"?e.value!==BigInt(0)&&t.value%e.value===BigInt(0):xi(t.value,e.value)===0)||t.issues.push({origin:typeof t.value,code:"not_multiple_of",divisor:e.value,input:t.value,inst:n,continue:!e.abort})}}),qi=O("$ZodCheckNumberFormat",(n,e)=>{te.init(n,e),e.format=e.format||"float64";let t=e.format?.includes("int"),r=t?"int":"number",[o,i]=Oi[e.format];n._zod.check=s=>{let a=s.value;if(t){if(!Number.isInteger(a)){s.issues.push({expected:r,format:e.format,code:"invalid_type",continue:!1,input:a,inst:n});return}if(!Number.isSafeInteger(a)){a>0?s.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:r,inclusive:!0,continue:!e.abort}):s.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:r,inclusive:!0,continue:!e.abort});return}}a<o&&s.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:n,continue:!e.abort}),a>i&&s.issues.push({origin:"number",input:a,code:"too_big",maximum:i,inclusive:!0,inst:n,continue:!e.abort})}});var Hi=O("$ZodCheckMaxLength",(n,e)=>{var t;te.init(n,e),(t=n._zod.def).when??(t.when=Vi),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>e.maximum?$r(o):i)<=e.maximum)return;let a=Rr(o);r.issues.push({origin:a,code:"too_big",maximum:e.maximum,inclusive:!0,input:o,inst:n,continue:!e.abort})}}),Yi=O("$ZodCheckMinLength",(n,e)=>{var t;te.init(n,e),(t=n._zod.def).when??(t.when=Vi),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>=e.minimum&&i<e.minimum*2?$r(o):i)>=e.minimum)return;let a=Rr(o);r.issues.push({origin:a,code:"too_small",minimum:e.minimum,inclusive:!0,input:o,inst:n,continue:!e.abort})}});var jr=O("$ZodCheckStringFormat",(n,e)=>{var t,r;te.init(n,e),e.pattern?(t=n._zod).check??(t.check=o=>{e.pattern.lastIndex=0,!e.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:e.format,input:o.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:n,continue:!e.abort})}):(r=n._zod).check??(r.check=()=>{})}),Ji=O("$ZodCheckRegex",(n,e)=>{jr.init(n,e),n._zod.check=t=>{e.pattern.lastIndex=0,!e.pattern.test(t.value)&&t.issues.push({origin:"string",code:"invalid_format",format:"regex",input:t.value,pattern:e.pattern.toString(),inst:n,continue:!e.abort})}});var Qi={major:4,minor:6,patch:5};var B=O("$ZodType",(n,e)=>{var t;n??(n={}),n._zod.def=e,n._zod.bag=n._zod.bag||{},n._zod.version=Qi;let r=n._zod.def.checks,o=n._zod.traits.has("$ZodCheck")?[n,...r??[]]:r?.length?[...r]:[];for(let i of o)for(let s of i._zod.onattach)s(n);if(o.length===0)(t=n._zod).deferred??(t.deferred=[]),n._zod.deferred?.push(()=>{n._zod.run=n._zod.parse});else{let i=(a,d,l)=>{if(a.memo)return a;let c=ye(a),p;for(let u of d){if(u._zod.def.when){if(Ei(a)||!u._zod.def.when(a))continue}else if(c)continue;let f=a.issues.length,h=u._zod.check(a);if(h instanceof Promise&&l?.async===!1)throw new xe;if(p||h instanceof Promise)p=(p??Promise.resolve()).then(async()=>{await h,a.issues.length!==f&&(Sr(a.issues,f,n),c||(c=ye(a,f)))});else{if(a.issues.length===f)continue;Sr(a.issues,f,n),c||(c=ye(a,f))}}return p?p.then(()=>a):a},s=(a,d,l)=>{if(ye(a))return a.aborted=!0,a;let c=i(d,o,l);if(c instanceof Promise){if(l.async===!1)throw new xe;return c.then(p=>n._zod.parse(p,l))}return n._zod.parse(c,l)};n._zod.run=(a,d)=>{if(d.skipChecks)return n._zod.parse(a,d);if(d.direction==="backward"){let c=n._zod.parse({value:a.value,issues:[]},{...d,skipChecks:!0});return c instanceof Promise?c.then(p=>s(p,a,d)):s(c,a,d)}let l=n._zod.parse(a,d);if(l instanceof Promise){if(d.async===!1)throw new xe;return l.then(c=>i(c,o,d))}return i(l,o,d)}}},{get"~standard"(){return Ar(this,"~standard",nu(this))},set"~standard"(n){Ge(this,"~standard",n)}}),is=(n,e)=>n.issues.length?{issues:n.issues.map(t=>be(t,e,ne()))}:{value:n.value};async function eu(n,e){let t={async:!0};return is(await n._zod.run({value:e,issues:[]},t),t)}function nu(n){return{validate:e=>{let t={async:!1};try{let r=n._zod.run({value:e,issues:[]},t);if(!(r instanceof Promise))return is(r,t)}catch{}return eu(n,e)},vendor:"zod",version:1}}var Dr=O("$ZodString",(n,e)=>{B.init(n,e),n._zod.pattern=e.pattern??Ci,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=String(t.value)}catch{}return typeof t.value=="string"||t.issues.push({expected:"string",code:"invalid_type",input:t.value,inst:n}),t}}),kt=O("$ZodStringFormat",(n,e)=>{jr.init(n,e),Dr.init(n,e)});var ss=O("$ZodEmail",(n,e)=>{e.pattern??(e.pattern=Li),kt.init(n,e)}),as=1,xt=2;function tu(n){try{return typeof URL<"u"&&typeof URL.canParse=="function"?URL.canParse(n):(new URL(n),!0)}catch{return!1}}function ru(n,e){return!("normalize"in e)&&!("hostname"in e)&&!("protocol"in e)?tu(n)||xt:ou(n,e)}function ou(n,e){if(!e.normalize&&e.protocol?.source===Zi.source&&!/^https?:\/\//i.test(n))return as;try{if(typeof URL<"u"){let t=URL;if(typeof t.parse=="function")return t.parse(n)??xt}return new URL(n)}catch{return xt}}var iu=/[\t\n\r]/g;function es(n){return n.replace(iu,"")}function su(n,e){return e.lastIndex=0,e.test(n.hostname)}function au(n,e){return e.lastIndex=0,e.test(n.protocol.endsWith(":")?n.protocol.slice(0,-1):n.protocol)}var ds=O("$ZodURL",(n,e)=>{kt.init(n,e),n._zod.check=t=>{try{let r=t.value.trim(),o=ru(r,e);if(o===as){t.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:t.value,inst:n,continue:!e.abort});return}if(o===xt){t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort});return}if(o===!0){t.value=es(r);return}e.hostname&&!su(o,e.hostname)&&t.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:e.hostname.source,input:t.value,inst:n,continue:!e.abort}),e.protocol&&!au(o,e.protocol)&&t.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:e.protocol.source,input:t.value,inst:n,continue:!e.abort}),t.value=e.normalize?o.href:es(r);return}catch{t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort})}}});var Fr=O("$ZodNumber",(n,e)=>{B.init(n,e),n._zod.pattern=Ir,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=Number(t.value)}catch{}let o=t.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return t;let i=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:String(o):void 0;return t.issues.push({expected:"number",code:"invalid_type",input:o,inst:n,...i?{received:i}:{}}),t}}),cs=O("$ZodNumberFormat",(n,e)=>{qi.init(n,e),Fr.init(n,e)}),us=O("$ZodBoolean",(n,e)=>{B.init(n,e),n._zod.pattern=Gi,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=!!t.value}catch{}let o=t.value;return typeof o=="boolean"||t.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:n}),t}});var ls=O("$ZodNull",(n,e)=>{B.init(n,e),n._zod.pattern=Ki,n._zod.values=new Set([null]),n._zod.parse=(t,r)=>{let o=t.value;return o===null||t.issues.push({expected:"null",code:"invalid_type",input:o,inst:n}),t}});var fs=O("$ZodUnknown",(n,e)=>{B.init(n,e),n._zod.parse=t=>t}),ps=O("$ZodNever",(n,e)=>{B.init(n,e),n._zod.parse=(t,r)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:n}),t)});function ns(n,e,t){n.issues.length&&e.issues.push(...Oe(t,n.issues)),e.value[t]=n.value}var hs=O("$ZodArray",(n,e)=>{B.init(n,e);let t=cn.memoizer;t?.attach(n),n._zod.parse=(r,o)=>{let i=r.value;if(!Array.isArray(i))return r.issues.push({expected:"array",code:"invalid_type",input:i,inst:n}),r;r.value=t?t.alloc(n,r,Array(i.length),o):Array(i.length);let s=[],a=o?.abortEarly;for(let d=0;d<i.length;d++){let l=i[d],c=e.element._zod.run({value:l,issues:[]},o);if(c instanceof Promise)s.push(c.then(p=>ns(p,r,d)));else if(ns(c,r,d),a&&c.issues.length!==0&&ye(c))break}return s.length?Promise.all(s).then(()=>r):r}});function wt(n,e,t,r,o,i){let s=t in r,a=i==="optional";if(!(!s&&a&&o==="optional")){if(n.issues.length){if(o!==void 0&&a&&!s)return;e.issues.push(...Oe(t,n.issues))}if(!s&&o===void 0){n.issues.length||e.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[t]});return}n.value===void 0?(s||o==="defaulted"&&!a)&&(e.value[t]=void 0):e.value[t]=n.value}}var du=[];function cu(n){let e=Object.keys(n.shape),t=Object.getOwnPropertySymbols(n.shape),r=t.length?t:du,o=r.length?[...e,...r]:e;for(let s of o)if(!n.shape?.[s]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${String(s)}": expected a Zod schema`);let i=_i(n.shape);return{...n,allKeys:o,symbolKeys:r,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(i)}}function uu(n,e,t,r,o,i,s){let a=[],d=o.keySet,l=o.catchall._zod,c=l.def.type,p=l.optin,u=l.optout,f=0;for(let h in e){if(s&&t.issues.length!==f){if(ye(t,f))break;f=t.issues.length}if(d.has(h))continue;if(h==="__proto__"){c==="never"&&a.push(h);continue}if(c==="never"){a.push(h);continue}let g=l.run({value:e[h],issues:[]},r);g instanceof Promise?n.push(g.then(x=>wt(x,t,h,e,p,u))):wt(g,t,h,e,p,u)}return a.length&&t.issues.push({code:"unrecognized_keys",keys:a,input:e,inst:i,continue:!0}),n.length?Promise.all(n).then(()=>t):t}var gs=O("$ZodObject",(n,e)=>{B.init(n,e);let t=Object.getOwnPropertyDescriptor(e,"shape"),r=t?.get?t.get.raw:e.shape??{};if(r){let l=()=>{let c={...r};return Object.defineProperty(e,"shape",{value:c}),l.raw=c,c};l.raw=r,Object.defineProperty(e,"shape",{get:l})}let o=bi(()=>cu(e));Y(n,"propValues",l=>{let c=l.def.shape,p={};for(let u in c){let f=c[u]._zod;if(f.values){Object.prototype.hasOwnProperty.call(p,u)||bt(p,u,new Set);for(let h of f.values)p[u].add(h);f.optin!==void 0&&p[u].add(void 0)}}return p});let i=yt,s=e.catchall,a,d=cn.memoizer;d?.attach(n),n._zod.parse=(l,c)=>{a??(a=o.value);let p=l.value;if(!i(p))return l.issues.push({expected:"object",code:"invalid_type",input:p,inst:n}),l;l.value=d?d.alloc(n,l,{},c):{};let u=[],f=a.shape,h=c?.abortEarly,g=l.issues.length;for(let x of a.allKeys){if(h&&l.issues.length!==g){if(ye(l,g))break;g=l.issues.length}if(x==="__proto__")continue;let m=f[x],k=m._zod.optin,A=m._zod.optout,S=m._zod.run({value:p[x],issues:[]},c);S instanceof Promise?u.push(S.then(_=>wt(_,l,x,p,k,A))):wt(S,l,x,p,k,A)}return s?uu(u,p,l,c,o.value,n,h===!0):u.length?Promise.all(u).then(()=>l):l}});function ts(n,e,t,r){for(let i of n)if(i.issues.length===0)return e.value=i.value,e;let o=n.filter(i=>!ye(i));return o.length===1?(e.value=o[0].value,o[0]):(e.issues.push({code:"invalid_union",input:e.value,inst:t,errors:n.map(i=>i.issues.map(s=>be(s,r,ne())))}),e)}var ms=O("$ZodUnion",(n,e)=>{B.init(n,e),Y(n,"optin",r=>r.def.options.some(o=>o._zod.optin==="defaulted")?"defaulted":r.def.options.some(o=>o._zod.optin!==void 0)?"optional":void 0),Y(n,"optout",r=>r.def.options.some(o=>o._zod.optout==="optional")?"optional":void 0),Y(n,"values",r=>{if(r.def.options.every(o=>o._zod.values))return new Set(r.def.options.flatMap(o=>Array.from(o._zod.values)))}),Y(n,"pattern",r=>{if(r.def.options.every(o=>o._zod.pattern)){let o=r.def.options.map(i=>i._zod.pattern);return new RegExp(`^(${o.map(i=>br(i.source)).join("|")})$`)}});let t=e.options.length===1?e.options[0]._zod.run:null;n._zod.parse=(r,o)=>{if(t)return t(r,o);let i=!1,s=[];for(let a of e.options){let d=a._zod.run({value:r.value,issues:[]},o);if(d instanceof Promise)s.push(d),i=!0;else{if(d.issues.length===0)return d;s.push(d)}}return i?Promise.all(s).then(a=>ts(a,r,n,o)):ts(s,r,n,o)}});var ys=O("$ZodRecord",(n,e)=>{B.init(n,e);let t=cn.memoizer;t?.attach(n),n._zod.parse=(r,o)=>{let i=r.value;if(!wr(i))return r.issues.push({expected:"record",code:"invalid_type",input:i,inst:n}),r;let s=[],a=e.keyType._zod.values;if(a&&!e.partial){r.value=t?t.alloc(n,r,{},o):{};let d=new Set;for(let c of a)if(typeof c=="string"||typeof c=="number"||typeof c=="symbol"){if(d.add(typeof c=="number"?c.toString():c),c==="__proto__")continue;let p=e.keyType._zod.run({value:c,issues:[]},o);if(p instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(p.issues.length){r.issues.push({code:"invalid_key",origin:"record",issues:p.issues.map(h=>be(h,o,ne())),input:c,path:[c],inst:n});continue}let u=p.value;if(u==="__proto__")continue;let f=e.valueType._zod.run({value:i[c],issues:[]},o);f instanceof Promise?s.push(f.then(h=>{h.issues.length&&r.issues.push(...Oe(c,h.issues)),r.value[u]=h.value})):(f.issues.length&&r.issues.push(...Oe(c,f.issues)),r.value[u]=f.value)}let l;for(let c in i)if(!d.has(c))if(e.mode==="loose"){if(c==="__proto__")continue;r.value[c]=i[c]}else l=l??[],l.push(c);l&&l.length>0&&r.issues.push({code:"unrecognized_keys",input:i,inst:n,keys:l,continue:!0})}else{r.value=t?t.alloc(n,r,{},o):{};let d;for(let l of Reflect.ownKeys(i)){if(l==="__proto__"||!Object.prototype.propertyIsEnumerable.call(i,l))continue;let c=e.keyType._zod.run({value:l,issues:[]},o);if(c instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof l=="string"&&Ir.test(l)&&c.issues.length){let h=e.keyType._zod.run({value:Number(l),issues:[]},o);if(h instanceof Promise)throw new Error("Async schemas not supported in object keys currently");h.issues.length===0&&(c=h)}if(c.issues.length){e.mode==="loose"?r.value[l]=i[l]:a?(d=d??[],d.push(l)):r.issues.push({code:"invalid_key",origin:"record",issues:c.issues.map(h=>be(h,o,ne())),input:l,path:[l],inst:n});continue}let u=c.value;if(u==="__proto__")continue;let f=e.valueType._zod.run({value:i[l],issues:[]},o);f instanceof Promise?s.push(f.then(h=>{h.issues.length&&r.issues.push(...Oe(l,h.issues)),r.value[u]=h.value})):(f.issues.length&&r.issues.push(...Oe(l,f.issues)),r.value[u]=f.value)}d&&d.length>0&&r.issues.push({code:"unrecognized_keys",input:i,inst:n,keys:d,continue:!0})}return s.length?Promise.all(s).then(()=>r):r}});var bs=O("$ZodEnum",(n,e)=>{B.init(n,e);let t=mr(e.entries),r=new Set(t);n._zod.values=r,Y(n,"pattern",o=>{let i=mr(o.def.entries).filter(s=>Ai.has(typeof s));return new RegExp(i.length?`^(${i.map(s=>Zn(s.toString())).join("|")})$`:"^[^\\s\\S]$")}),n._zod.parse=(o,i)=>{let s=o.value;return r.has(s)||o.issues.push({code:"invalid_value",values:t,input:s,inst:n}),o}}),vs=O("$ZodLiteral",(n,e)=>{B.init(n,e);let t=new Set(e.values);n._zod.values=t,Y(n,"pattern",r=>{let o=r.def.values;return new RegExp(o.length?`^(${o.map(i=>typeof i=="string"?Zn(i):i?Zn(i.toString()):String(i)).join("|")})$`:"^[^\\s\\S]$")}),n._zod.parse=(r,o)=>{let i=r.value;return t.has(i)||r.issues.push({code:"invalid_value",values:e.values,input:i,inst:n}),r}});function rs(n,e){return n.value=e.issues.length?void 0:e.value,n}var xs=O("$ZodOptional",(n,e)=>{B.init(n,e),Y(n,"optin",t=>t.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),n._zod.optout="optional",Y(n,"values",t=>{let r=t.def.innerType._zod.values;return r?new Set([...r,void 0]):void 0}),Y(n,"pattern",t=>{let r=t.def.innerType._zod.pattern;return r?new RegExp(`^(${br(r.source)})?$`):void 0}),n._zod.parse=(t,r)=>{if(t.value===void 0){if(e.innerType._zod.optin!=="defaulted")return t;let o=e.innerType._zod.run({value:t.value,issues:[]},r);return o instanceof Promise?o.then(i=>rs(t,i)):rs(t,o)}return e.innerType._zod.run(t,r)}});var ws=O("$ZodLazy",(n,e)=>{B.init(n,e),wi(n._zod,"innerType",()=>{let t=e;return t._cachedInner||(t._cachedInner=e.getter()),t._cachedInner}),Y(n,"pattern",t=>t.innerType?._zod?.pattern),Y(n,"propValues",t=>t.innerType?._zod?.propValues),Y(n,"optin",t=>t.innerType?._zod?.optin??void 0),Y(n,"optout",t=>t.innerType?._zod?.optout??void 0),n._zod.parse=(t,r)=>n._zod.innerType._zod.run(t,r)}),ks=O("$ZodCustom",(n,e)=>{te.init(n,e),B.init(n,e),n._zod.parse=(t,r)=>t,n._zod.check=t=>{let r=t.value,o=e.fn(r);if(o instanceof Promise)return o.then(i=>os(i,t,r,n));os(o,t,r,n)}});function os(n,e,t,r){if(!n){let o={code:"custom",input:t,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(o.params=r._zod.def.params),e.issues.push(Cn(o))}}var lu=()=>{let n={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function e(i){return n[i]??null}let t={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",currency_code:"currency code",credit_card:"credit card number",iban:"IBAN",jwt:"JWT",template_literal:"input"},r={nan:"NaN"};function o(i,s){return i==="number"&&typeof s=="number"&&!Number.isFinite(s)?String(s):r[i]??i}return i=>{switch(i.code){case"invalid_type":{let s=o(i.expected),a=Mi(i.input),d=o(a,i.input);return`Invalid input: expected ${s}, received ${d}`}case"invalid_value":return i.values.length===1?`Invalid input: expected ${kr(i.values[0])}`:`Invalid option: expected one of ${yr(i.values,"|")}`;case"too_big":{let s=i.exact?"exactly ":i.inclusive?"<=":"<",a=e(i.origin);return a?`Too big: expected ${i.origin??"value"} to have ${s}${i.maximum.toString()} ${a.unit??"elements"}`:`Too big: expected ${i.origin??"value"} to be ${s}${i.maximum.toString()}`}case"too_small":{let s=i.exact?"exactly ":i.inclusive?">=":">",a=e(i.origin);return a?`Too small: expected ${i.origin} to have ${s}${i.minimum.toString()} ${a.unit}`:`Too small: expected ${i.origin} to be ${s}${i.minimum.toString()}`}case"invalid_format":{let s=i;return s.format==="starts_with"?`Invalid string: must start with "${s.prefix}"`:s.format==="ends_with"?`Invalid string: must end with "${s.suffix}"`:s.format==="includes"?`Invalid string: must include "${s.includes}"`:s.format==="regex"?`Invalid string: must match pattern ${s.pattern}`:`Invalid ${t[s.format]??i.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${i.divisor}`;case"unrecognized_keys":return`Unrecognized key${i.keys.length>1?"s":""}: ${yr(i.keys,", ")}`;case"invalid_key":return`Invalid key in ${i.origin}`;case"invalid_union":return i.options&&Array.isArray(i.options)&&i.options.length>0?`Invalid discriminator value. Expected ${i.options.map(a=>`'${a}'`).join(" | ")}`:i.inclusive===!1?"Invalid input: more than one option matched":"Invalid input";case"invalid_element":return`Invalid value in ${i.origin}`;default:return"Invalid input"}}};function Ss(){return{localeError:lu()}}var $s;var Lr=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let r=t[0];return this._map.set(e,r),r&&typeof r=="object"&&"id"in r&&this._idmap.set(r.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t=="object"&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let r={...this.get(t)??{}};delete r.id;let o={...r,...this._map.get(e)};return Object.keys(o).length?o:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function Rs(){return new Lr}($s=globalThis).__zod_globalRegistry??($s.__zod_globalRegistry=Rs());var un=globalThis.__zod_globalRegistry;function As(n){return n.checks&&(n.checks=[...n.checks]),n}function _s(n,e){return new n(As({type:"string",...N(e)}))}function Os(n,e){return new n({type:"string",format:"email",check:"string_format",abort:!1,...N(e)})}function Ps(n,e){return new n({type:"string",format:"url",check:"string_format",abort:!1,...N(e)})}function Es(n,e){return new n(As({type:"number",checks:[],...N(e)}))}function Ms(n,e){return new n({type:"number",check:"number_format",abort:!1,format:"safeint",...N(e)})}function zs(n,e){return new n({type:"boolean",...N(e)})}function Ns(n,e){return new n({type:"null",...N(e)})}function Is(n){return new n({type:"unknown"})}function Ts(n,e){return new n({type:"never",...N(e)})}function js(n,e){return new Bi({check:"less_than",...N(e),value:n,inclusive:!0})}function Ds(n,e){return new Ui({check:"greater_than",...N(e),value:n,inclusive:!0})}function gu(n,e){return new Wi({check:"multiple_of",...N(e),value:n})}function Zr(n,e){return new Hi({check:"max_length",...N(e),maximum:n})}function Kn(n,e){return new Yi({check:"min_length",...N(e),minimum:n})}function Vn(n,e){return new Ji({check:"string_format",format:"regex",...N(e),pattern:n})}function Fs(n,e,t){return new n({type:"custom",check:"custom",fn:e,...N(t)})}function Ls(n,e){let t=mu(r=>(r.addIssue=o=>{if(typeof o=="string")r.issues.push(Cn(o,r.value,t._zod.def));else{let i=o;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),"input"in i||(i.input=r.value),i.inst??(i.inst=t),i.continue??(i.continue=!t._zod.def.abort),r.issues.push(Cn(i))}},n(r.value,r)),e);return t}function mu(n,e){let t=new te({check:"custom",...N(e)});return t._zod.check=n,t}function Zs(n){let e=new te({check:"describe"});return e._zod.onattach=[t=>{let r=un.get(t)??{};un.add(t,{...r,description:n})}],e._zod.check=()=>{},e}var J=O("ZodMiniType",(n,e)=>{if(!n._zod)throw new Error("Uninitialized schema in ZodMiniType.");B.init(n,e),n.def=e,n.type=e.type},{get with(){return this.check},set with(n){Ge(this,"with",n)},parse(n,e){return Er(this,n,e,{callee:this.parse})},parseAsync(n,e){return Mr(this,n,e,{callee:this.parseAsync})},safeParse(n,e){return zr(this,n,e)},safeParseAsync(n,e){return Nr(this,n,e)},check(...n){let e=this.def;return this.clone({...e,checks:[...e.checks??[],...n.map(t=>typeof t=="function"?{_zod:{check:t,def:{check:"custom"},onattach:[]}}:t)]},{parent:!0})},clone(n,e){return dn(this,n,e)},brand(){return this},register(n,e){return n.add(this,e),this},apply(n,...e){return e.length===0?n(this):n(this,...e)}}),Gs=O("ZodMiniString",(n,e)=>{Dr.init(n,e),J.init(n,e)});function L(n){return _s(Gs,n)}var Ks=O("ZodMiniStringFormat",(n,e)=>{kt.init(n,e),Gs.init(n,e)}),vu=O("ZodMiniEmail",(n,e)=>{ss.init(n,e),Ks.init(n,e)});function dy(n){return Os(vu,n)}var xu=O("ZodMiniURL",(n,e)=>{ds.init(n,e),Ks.init(n,e)});function cy(n){return Ps(xu,n)}var Vs=O("ZodMiniNumber",(n,e)=>{Fr.init(n,e),J.init(n,e)});function Ke(n){return Es(Vs,n)}var wu=O("ZodMiniNumberFormat",(n,e)=>{cs.init(n,e),Vs.init(n,e)});function uy(n){return Ms(wu,n)}var ku=O("ZodMiniBoolean",(n,e)=>{us.init(n,e),J.init(n,e)});function ly(n){return zs(ku,n)}var Su=O("ZodMiniNull",(n,e)=>{ls.init(n,e),J.init(n,e)});function fy(n){return Ns(Su,n)}var $u=O("ZodMiniUnknown",(n,e)=>{fs.init(n,e),J.init(n,e)});function Cr(){return Is($u)}var Ru=O("ZodMiniNever",(n,e)=>{ps.init(n,e),J.init(n,e)});function Au(n){return Ts(Ru,n)}var _u=O("ZodMiniArray",(n,e)=>{hs.init(n,e),J.init(n,e)});function py(n,e){return new _u({type:"array",element:n,...N(e)})}var Gr=O("ZodMiniObject",(n,e)=>{gs.init(n,e),J.init(n,e),Ni(n,"shape",t=>t._zod.def.shape,!1)});function Pe(n,e){let t={type:"object",shape:n??{},...N(e)};return new Gr(t)}function ln(n,e){return new Gr({type:"object",shape:n,catchall:Au(),...N(e)})}function hy(n,e){return new Gr({type:"object",shape:n,catchall:Cr(),...N(e)})}function Bs(n,e){return Pi(n,e)}var Ou=O("ZodMiniUnion",(n,e)=>{ms.init(n,e),J.init(n,e)});function gy(n,e){return new Ou({type:"union",options:n,...N(e)})}var Cs=O("ZodMiniRecord",(n,e)=>{ys.init(n,e),J.init(n,e)});function my(n,e,t){return!e||!e._zod?new Cs({type:"record",keyType:L(),valueType:n,...N(e)}):new Cs({type:"record",keyType:n,valueType:e,...N(t)})}var Pu=O("ZodMiniEnum",(n,e)=>{bs.init(n,e),J.init(n,e),n.options=[...n._zod.values]});function Us(n,e){let t=Array.isArray(n)?Object.fromEntries(n.map(r=>[r,r])):n;return new Pu({type:"enum",entries:t,...N(e)})}var Eu=O("ZodMiniLiteral",(n,e)=>{vs.init(n,e),J.init(n,e)});function Ws(n,e){return new Eu({type:"literal",values:Array.isArray(n)?n:[n],...N(e)})}var Mu=O("ZodMiniOptional",(n,e)=>{xs.init(n,e),J.init(n,e)});function X(n){return new Mu({type:"optional",innerType:n})}var zu=O("ZodMiniLazy",(n,e)=>{ws.init(n,e),J.init(n,e)});function yy(n){return new zu({type:"lazy",getter:n})}var Nu=O("ZodMiniCustom",(n,e)=>{ks.init(n,e),J.init(n,e)});function St(n,e={}){return Fs(Nu,n,e)}function by(n,e){return Ls(n,e)}var vy=Zs;ne().localeError||ne(Ss());var j=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,Iu=n=>{if(typeof n!="object"||n===null||!("_zod"in n))return;let e=un.get(n)?.description;return typeof e=="string"?e:void 0};var Tu=(n,e)=>n?.src?.(e)??e,$t=n=>typeof n=="string"&&n.length<2049&&/^(?![^/?#]*:|\/\/)(?!(?:.*\/)?\.\.?(?:[/?#]|$))(?!.*%2e)[^\\\s]+$/i.test(n),Kr=(n,e=1)=>e>0&&n===void 0||Number.isInteger(n)&&n>=e;function Vr(n){let e=n??{};return $t(e.href)&&typeof e.name=="string"&&/^.{1,255}$/s.test(e.name)&&/^[\w.+-]{1,60}\/[\w.+-]{1,60}$/.test(e.type)&&Kr(e.bytes,0)&&Kr(e.width)&&Kr(e.height)&&(e.caption===void 0||typeof e.caption=="string"&&e.caption.length<501)&&(e.poster===void 0||$t(e.poster))&&(e.captions===void 0||$t(e.captions))&&(e.duration===void 0||typeof e.duration=="number"&&Number.isFinite(e.duration)&&e.duration>0)&&(e.at===void 0||qs(e.at)!==void 0)}function qs(n){return typeof n=="string"&&n.length<41&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?(Z|[+-]\d{2}:?\d{2})$/.test(n)&&Number.isFinite(Date.parse(n))?n:void 0}var Hs=n=>n.type.startsWith("image/"),Ys=n=>n.type.startsWith("video/");function ju(n){let e=n.duration===void 0?0:Math.round(n.duration);if(e<1)return"a video";if(e<60)return`a ${e}-second video`;let t=Math.round(e/60);return t<60?`a ${t}-minute video`:`a ${Math.floor(t/60)}-hour${t%60>0?` ${t%60}-minute`:""} video`}var Du=(n,e)=>e==="image"?Hs(n):e==="video"?Ys(n):!0,Fu=n=>`${n==="image"?"an image":n==="video"?"a video":"a file"} the host stored, at a path on this host`,Bn=n=>(Array.isArray(n)?n:[n]).filter(Vr),Js=Symbol.for("@graview/core:file"),Lu=(n,e)=>(Object.defineProperty(j(n),Js,{value:e,enumerable:!0}),n);function Xs(n){let e=j(n);return e?.[Js]??(e?.innerType?Xs(e.innerType):void 0)}var Zu=()=>({href:L(),name:L(),type:L(),bytes:Ke(),width:X(Ke()),height:X(Ke()),caption:X(L()),poster:X(L()),duration:X(Ke()),captions:X(L()),at:X(L())});function xb(n){return Lu(Pe(Zu()).check(St(e=>Vr(e)&&Du(e,n),Fu(n))),n)}var Rt=/^(?:https?:\/\/[^\s<>"'`\\]+|@?[A-Za-z0-9][\w.~-]*(?:\/[\w.~-]+)*)$/,At=n=>typeof n=="string"&&n.length<501&&Rt.test(n);var Qs=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,Cu=/^@(?:https?:\/\/[^\s<>"'`\\#?]+|[A-Za-z0-9][\w.~-]*(?:\/[\w.~-]+)*)\/[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;function ea(n){if(typeof n!="string"||!n.startsWith("@")||!Cu.test(n))return;let e=n.lastIndexOf("/"),t=n.slice(0,e),r=n.slice(e+1),o=/^@https?:\/\//.test(t)||!t.includes("/")?t.slice(1):t;return At(o)?{address:o,kind:r}:void 0}var Gu=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*:\S[^\n]{0,199}$/,Ku=n=>`${n.kind}:${n.id}`;function na(n,e){if(typeof n!="string"||!Gu.test(n))return;let t=n.indexOf(":"),r=n.slice(0,t);return e.kinds.includes(r)?{address:e.address,kind:r,id:n.slice(t+1)}:void 0}function Vu(n,e){return(Array.isArray(n)?n:n==null?[]:[n]).flatMap(r=>{let o=na(r,e);return o?[o]:[]})}var ta=Symbol.for("@graview/core:linked"),$b=(n,e)=>(Object.defineProperty(Qs(n),ta,{value:e,enumerable:!0}),n);function Un(n){let e=Qs(n);return e?e[ta]??Un(e.innerType):void 0}function Bu(n){let e=n?.fields?.shape??{},t=new Map;for(let[r,o]of Object.entries(e)){let i=Un(o);i&&t.set(r,i)}return t}function Uu(n){if(n.to==="*"||n.to.length===0)return;let e=n.to.map(ea);if(e.some(r=>!r))return;let t=e[0].address;if(!e.some(r=>r.address!==t))return{address:t,kinds:[...new Set(e.map(r=>r.kind))],cardinality:n.cardinality??"many",...n.description?{description:n.description}:{}}}var Wu=n=>n.to!=="*"&&n.to.some(e=>typeof e=="string"&&e.startsWith("@"));function Rb(n){return Object.fromEntries(Object.entries(n??{}).filter(([,e])=>!Wu(e)))}function Ab(n){let e=new Map;for(let[t,r]of Object.entries(n??{})){let o=Uu(r);o&&e.set(t,o)}return e}var Br=new WeakMap;function qu(n,e){e?Br.set(n,e):Br.delete(n)}var ra=n=>Br.get(n);var _t=["sun","mon","tue","wed","thu","fri","sat"],Hu=["day","week","month","year"],pn=n=>`${n}Repeat`,qn=n=>n.endsWith("Repeat")&&n.length>6?n.slice(0,-6):void 0,sa=/^\d{4}-\d{2}-\d{2}$/,aa=Symbol.for("@graview/core:repeat");function Ot(n){let e=j(n);return!!e&&(e[aa]===1||Ot(e.innerType))}var Yu=n=>(Object.defineProperty(j(n),aa,{value:1,enumerable:!0}),n),Ur=(n,e,t)=>n===void 0||Number.isInteger(n)&&n>=e&&n<=t,oa=(n,e)=>n===void 0||Array.isArray(n)&&n.length<=e&&n.every(t=>typeof t=="string"&&sa.test(t)),Ju=["every","interval","on","until","count","except","continues"],da=n=>hn(n)&&Object.keys(n).every(e=>Ju.includes(e))&&Ur(n.interval,1,99)&&Ur(n.count,1,1e3)&&oa(n.until===void 0?void 0:[n.until],1)&&oa(n.except,500)&&(n.continues===void 0||typeof n.continues=="string"&&n.continues.length<=200)&&(n.on===void 0||Array.isArray(n.on)&&n.on.length>0&&n.on.length<=31&&n.on.every(e=>n.every==="week"?_t.includes(e):n.every==="month"&&e!==0&&Ur(e,-1,31))),Pb=()=>Yu(Cr().check(St(n=>n===null||da(n),"how a date repeats, or null"))),Wn=n=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10)),ca=n=>new Date(n).toISOString().slice(0,10),Wr=(n,e)=>ca(Wn(n)+e*864e5),ia=(n,e,t)=>{let r=new Date(Date.UTC(n,e+1,0)).getUTCDate();return ca(Date.UTC(n,e,t<0||t>r?r:t))},hn=n=>typeof n=="object"&&n!==null&&Hu.includes(n.every);function fn(n,e,t={}){let r=n.slice(0,10),o=n.slice(10),i=[];if(!sa.test(r))return i;let s=Math.max(1,e.interval??1),a=e.every,d=t.from&&t.from>r?t.from.slice(0,10):r,l=[e.until,t.to?.slice(0,10)].filter(Boolean).sort()[0],c=t.limit??1e3,p=new Set(e.except??[]),u=+r.slice(0,4),f=+r.slice(5,7)-1,h=+r.slice(8,10),g=Wr(r,-new Date(Wn(r)).getUTCDay()),x=(e.on?.length?e.on:[a==="week"?_t[new Date(Wn(r)).getUTCDay()]:h]).map(_=>typeof _=="string"?_t.indexOf(_):_),m=a==="day"?1:a==="week"?7:0,k=(+d.slice(0,4)-u)*12+(+d.slice(5,7)-1-f),A=e.count?0:Math.max(0,Math.floor((m?(Wn(d)-Wn(m===7?g:r))/864e5/m:a==="month"?k:k/12)/s)-1),S=0;for(let _=0;_<5e4&&i.length<c;_++,A++){let y=A*s,b=a==="day"?[Wr(r,y)]:a==="week"?x.map(w=>Wr(g,y*7+w)):a==="month"?x.map(w=>ia(u,f+y,w)):[ia(u+y,f,h)];for(let w of[...new Set(b)].sort())if(!(w<r)&&(l&&w>l||e.count&&S>=e.count||(S++,w>=d&&!p.has(w)&&i.push(w+o),i.length>=c)))return i}return i}function ua(n,e,t){if(!hn(e)||typeof n!="string")return n;let r=fn(n,e,{from:t,limit:1})[0];if(r)return r;let o=e.until||e.count?fn(n,e):[];return o[o.length-1]??n}function Xu(n,e,t){let r=n[e],o=n[pn(e)];return typeof r=="string"&&hn(o)?ua(r,o,t):r}var Pt=["human","visitor","agent","rule","system"],Qu=new Set(Pt);function qr(n){return Qu.has(n?.kind)?n.kind:"system"}function Hn(n,e){if(n.onBehalfOf){let{onBehalfOf:s,...a}=n;return`${Hn(a,e)}, for ${Hn(s,e)}`}let t=qr(n);if(n.id===void 0)return n.name??(t==="agent"?"an agent":t==="visitor"?"a visitor":t);let r=e.graph.getNode(n.id);if(r)return C(e.schema.tryDefinition(r.kind),r);let o=e.seats?.find(s=>s.principal.id===n.id);if(o)return o.label;let i=e.people?.find(s=>s.id===n.id&&(s.kind===void 0||s.kind===n.kind));return i?i.name:n.name?n.name:/(^|:)migration$/.test(n.id)?"the upgrade":n.id.startsWith("form:")?"a visitor via a form":/[:_/]/.test(n.id)?{human:"somebody",visitor:"a visitor",agent:"an agent",rule:"a rule",system:"the system"}[t]:n.id}var gn="$archived",Ve=n=>n?.[gn]===!0,Tb=(n,e=!1)=>e==="all"||Ve(n)===e,Hr=n=>n===!0||n==="true"?!0:n==="all"?"all":!1,Yn="$leftAlone",Et=new Set([gn,Yn]);var de=class extends Error{constructor(t,r){super(r?`${t}
|
|
2
|
-
\u2192 ${r}`:t);this.hint=r;this.name="SchemaError"}};function el(n,e){let t=n,r=new Map;for(let a of t){if(r.has(a.kind))throw new de(`Duplicate node kind "${a.kind}"`,"Each kind may be declared once; merge the two defineNode calls.");r.set(a.kind,a)}let o=new Map;for(let a of t)for(let[d,l]of Object.entries(a.edges)){if(l.to!=="*"){for(let p of l.to)if(!r.has(p))throw new de(`Edge "${d}" on "${a.kind}" points at undeclared kind "${p}"`,`Declared kinds: ${[...r.keys()].join(", ")}`)}let c=o.get(d);c?c.from.push(a.kind):o.set(d,{from:[a.kind],decl:l})}let i=new Map;for(let[a,{from:d,decl:l}]of o){let c=d.map(p=>r.get(p).edges[a].to);i.set(a,{kind:a,from:d,to:c.includes("*")?"*":[...new Set(c.flat())],cardinality:l.cardinality??"many",...l.description===void 0?{}:{description:l.description}})}let s=new Map;for(let a of t)s.set(a.kind,Bs(a.fields,{id:L().check(Kn(1)),kind:Ws(a.kind)}));return{definitions:t,computed:e,kinds:t.map(a=>a.kind),edgeKinds:[...i.keys()],definition(a){let d=r.get(a);if(!d)throw new de(`Unknown node kind "${String(a)}"`,`Declared kinds: ${[...r.keys()].join(", ")}`);return d},tryDefinition(a){return r.get(a)},edge(a){return i.get(a)},edgeAllowed(a,d,l){let c=r.get(d)?.edges[a];return c?c.to==="*"||c.to.includes(l):!1},parseNode(a){let d=a?.kind;if(typeof d!="string")throw new de("Node is missing a `kind`");let l=s.get(d);if(!l)throw new de(`Unknown node kind "${d}"`,`Declared kinds: ${[...r.keys()].join(", ")}`);let c={},p={};for(let[f,h]of Object.entries(a))Et.has(f)?h===!0&&(p[f]=!0):c[f]=h;let u=l.parse(c);return Object.keys(p).length>0?{...u,...p}:u},__node:void 0}}var Yr="0.1.54";var mn={snapshot:1,op:3},yn=class extends Error{constructor(t,r,o,i,s){super(s!==void 0?`This ${t} holds a ${s} that @graview ${Yr} does not know: upgrade the framework to read it.`:`This ${t} is in a newer format (${r}${i?`, written by @graview ${i}`:""}) than @graview ${Yr} reads (${o}). `+(t==="snapshot"?"Refold it from the log, or upgrade the framework.":"Upgrade the framework to read it."));this.what=t;this.found=r;this.supported=o;this.writtenBy=i;this.unknown=s;this.name="NewerFormatError"}},Jr=["add-node","remove-node","patch-node","add-edge","remove-edge","splice-text"],nl=new Set(Jr);function Xr(n){throw new yn("op",mn.op+1,mn.op,void 0,`primitive "${n?.op}"`)}var Qr=new Set;function eo(n){for(let e in n){let t=n[e]?.$type;if(t!==void 0&&!Qr.has(t))throw new yn("op",mn.op+1,mn.op,void 0,`value type "${t}" in "${e}"`)}}function la(n){for(let e of n.primitives)nl.has(e?.op)||Xr(e)}function z(n){return`${n.kind}\0${n.from}\0${n.to}`}var Jn={addedNodes:[],removedNodes:[],changedNodes:[],addedEdges:[],removedEdges:[],touched:[]};function fa(n){return n.addedNodes.length===0&&n.removedNodes.length===0&&n.changedNodes.length===0&&n.addedEdges.length===0&&n.removedEdges.length===0}function tl(n,e){let t=new Set([...Object.keys(n),...Object.keys(e)]),r=[];for(let o of t){let i=n[o],s=e[o];JSON.stringify(i)!==JSON.stringify(s)&&r.push(o)}return r.sort()}function Ee(n,e){let t=new Map(n.nodes.map(u=>[u.id,u])),r=new Map(e.nodes.map(u=>[u.id,u])),o=e.nodes.filter(u=>!t.has(u.id)),i=n.nodes.filter(u=>!r.has(u.id)),s=[];for(let u of n.nodes){let f=r.get(u.id);if(!f||f===u)continue;let h=tl(u,f);h.length>0&&s.push({before:u,after:f,fields:h})}let a=new Map(n.edges.map(u=>[z(u),u])),d=new Map(e.edges.map(u=>[z(u),u])),l=e.edges.filter(u=>!a.has(z(u))),c=n.edges.filter(u=>!d.has(z(u))),p=new Set;for(let u of o)p.add(u.id);for(let u of i)p.add(u.id);for(let u of s)p.add(u.after.id);for(let u of[...l,...c])p.add(u.from),p.add(u.to);return{addedNodes:o,removedNodes:i,changedNodes:s,addedEdges:l,removedEdges:c,touched:[...p].sort()}}function Me(n,e,t){let r=new Set(t.flatMap(i=>i.op==="patch-node"||i.op==="splice-text"?[i.id]:"node"in i?[i.node.id]:[i.edge.from,i.edge.to]));if(r.size===0)return Jn;let o=i=>({nodes:i.nodes.filter(s=>r.has(s.id)),edges:i.edges.filter(s=>r.has(s.from)||r.has(s.to))});return Ee(o(n),o(e))}var Mt={idLength:200,dataLength:4096,sameKindPerPair:1};function pa({id:n,data:e}){if(n!==void 0&&!(typeof n=="string"&&n.length<=Mt.idLength&&/^[^\s\p{Cc}]+$/u.test(n)))return`A link's id is 1\u2013${Mt.idLength} characters with no space`;if(e!==void 0&&!(e&&typeof e=="object"&&!Array.isArray(e)&&JSON.stringify(e).length<=Mt.dataLength))return`A link's data is a JSON object of at most ${Mt.dataLength} characters`}function rl(n){let e=n?.issues;return!Array.isArray(e)||e.length===0?n instanceof Error?n.message:String(n):e.map(t=>{let r=t.path?.length?V(String(t.path.at(-1))):null,o=t.message??"is not what the declaration allows";return r?`${r}: ${o}`:o}).join("; ")}var M=class extends Error{constructor(t,r){super(r?`${t}
|
|
3
|
-
${r}`:t);this.hint=r;this.name="GraphError"}},U=class extends M{constructor(t,r){super(r);this.id=t;this.name="MissingRecordError"}};function zt(n,e){try{n.parseNode(e);return}catch(t){if(t instanceof de)throw t;let r=t.issues??[];return{fields:new Set(r.flatMap(i=>i.code==="unrecognized_keys"&&i.keys?[...i.keys]:typeof i.path?.[0]=="string"?[i.path[0]]:[""])),error:t}}}var no="n\0",to="e\0",Q=class n{constructor(e,t={}){this.schema=e;this.validate=t.validate??!0}nodes=new Map;edges=new Map;linkIds=new Map;outIndex=new Map;inIndex=new Map;rank=0;ranks=new Map;lapsed=new Map;reordered=!1;counts=new Map;archived=new Set;listeners=new Set;validate;static from(e,t,r={}){let o=new n(e,r);return o.load(t),o}load(e){let t=this.snapshot();this.restore(e);let r=Ee(t,this.snapshot());return this.emit(r),r}getNode(e){return this.nodes.get(e)}has(e){return this.nodes.has(e)}allNodes(e){return this.reach([...this.nodes.values()],e,this.held)}count(e,t){return t||this.archived.size?this.nodesOfKind(e,t).length:this.counts.get(e)??0}allEdges(e){return this.reach([...this.edges.values()],e,t=>this.archived.has(t.from)||this.archived.has(t.to))}nodesOfKind(e,t){return this.allNodes(t).filter(r=>r.kind===e)}edgesOfKind(e,t){return this.allEdges(t).filter(r=>r.kind===e)}out(e,t,r){return this.reach(this.resolve(this.outIndex.get(e),t,"to"),r,this.held)}in(e,t,r){return this.reach(this.resolve(this.inIndex.get(e),t,"from"),r,this.held)}neighbors(e,t){let r=new Map;for(let o of[...this.out(e,void 0,t),...this.in(e,void 0,t)])r.set(o.id,o);return[...r.values()]}isArchived(e){return this.archived.has(e)}outEdges(e,t){return this.edgesFrom(this.outIndex.get(e),t)}inEdges(e,t){return this.edgesFrom(this.inIndex.get(e),t)}linkById(e){return this.edges.get(this.linkIds.get(e))}snapshot(){return{nodes:[...this.nodes.values()],edges:[...this.edges.values()]}}get size(){return{nodes:this.nodes.size,edges:this.edges.size}}applyPrimitives(e,t={}){let r=this.snapshot();try{for(let i of e)this.applyOne(i,t.restoring===!0,t.inPlace===!0);this.settleOrder()}catch(i){throw this.restore(r),i}let o=Me(r,this.snapshot(),e);return this.emit(o),o}preview(e,t={}){return n.from(this.schema,this.snapshot(),{validate:this.validate}).applyPrimitives(e,t)}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}restore(e){let t=new Map([...this.lapsed,...this.ranks]);for(let o of[this.nodes,this.edges,this.linkIds,this.outIndex,this.inIndex,this.ranks,this.lapsed,this.counts,this.archived])o.clear();this.reordered=!1;for(let o of e.nodes)this.insertNode(o,!0);for(let o of e.edges)this.insertEdge(o,!0);let r=[...this.ranks.keys()];if(r.every((o,i)=>t.get(o)>(o[0]===r[i-1]?.[0]?t.get(r[i-1]):0))){for(let[o,i]of t)(this.ranks.has(o)?this.ranks:this.lapsed).set(o,i);for(;this.lapsed.size>4096;)this.lapsed.delete(this.lapsed.keys().next().value)}}tally(e,t){this.counts.set(e,(this.counts.get(e)??0)+t)}place(e,t){let r=t?this.lapsed.get(e):void 0;if(r===void 0){this.ranks.set(e,++this.rank);return}this.ranks.set(e,r),this.lapsed.delete(e),this.reordered=!0}lapse(e){let t=this.ranks.get(e);t!==void 0&&(this.ranks.delete(e),this.lapsed.set(e,t),this.lapsed.size>4096&&this.lapsed.delete(this.lapsed.keys().next().value))}settleOrder(){if(!this.reordered)return;this.reordered=!1;let e=o=>(i,s)=>this.ranks.get(o+i[0])-this.ranks.get(o+s[0]),t=[...this.nodes.entries()].sort(e(no));this.nodes.clear();for(let[o,i]of t)this.nodes.set(o,i);let r=[...this.edges.entries()].sort(e(to));this.edges.clear();for(let[o,i]of r)this.edges.set(o,i)}emit(e){if(!(e.addedNodes.length===0&&e.removedNodes.length===0&&e.changedNodes.length===0&&e.addedEdges.length===0&&e.removedEdges.length===0))for(let t of this.listeners)t(e)}applyOne(e,t,r){switch(e.op){case"add-node":eo(e.node),this.insertNode(e.node,t,r);return;case"remove-node":{let o=e.node.id,i=this.nodes.get(o);if(!i)throw new U(o,`Cannot remove missing node "${o}"`);for(let s of[...this.outEdges(o),...this.inEdges(o)])this.deleteEdge(s);this.tally(i.kind,-1),this.archived.delete(o),this.nodes.delete(o),this.lapse(no+o),this.outIndex.delete(o),this.inIndex.delete(o);return}case"patch-node":{let o=this.nodes.get(e.id);if(!o)throw new U(e.id,`Cannot patch missing node "${e.id}"`);eo(e.after);let i={...o};for(let[a,d]of Object.entries(e.after))Fe(d)?delete i[a]:i[a]=d;let s=t?i:this.checkPatch(o,i,Object.keys(e.after));this.nodes.set(e.id,s),this.archived[Ve(s)?"add":"delete"](e.id),s.kind!==o.kind&&(this.tally(o.kind,-1),this.tally(s.kind,1));return}case"splice-text":{let o=this.nodes.get(e.id);if(!o)throw new U(e.id,`Cannot splice the text of missing node "${e.id}"`);let i=o[e.field],s;try{typeof i=="string"&&e.field!=="id"&&e.field!=="kind"&&(s=sr(i,e))}catch{}if(s===void 0)throw new M(`Cannot splice ${e.id}.${e.field}: it does not hold ${JSON.stringify(e.removed)} at ${e.at}`,"A corrupt op: the text it was made against is not the text the log folds to.");let a={...o,[e.field]:s};this.nodes.set(e.id,t?a:this.checkPatch(o,a,[e.field]));return}case"add-edge":this.insertEdge(e.edge,t,r);return;case"remove-edge":{let o=e.edge.id===void 0?e.edge:this.linkById(e.edge.id);if(!o||!this.edges.has(z(o)))throw new U(e.edge.id??z(e.edge),`Cannot remove missing edge ${e.edge.id??z(e.edge)}`);this.deleteEdge(o);return}default:Xr(e)}}check(e){if(!this.validate)return e;try{return this.schema.parseNode(e)}catch(t){throw this.refusal(e,t)}}checkPatch(e,t,r){if(!this.validate)return t;let o=this.schema.tryDefinition(String(t.kind))?.fields?.shape;if(!o)return this.check(t);for(let a of r){if(a==="id"||a==="kind"||Et.has(a))continue;let d=o[a];if(!d){delete t[a];continue}let l=d.safeParse(t[a]);l.success&&(l.data===void 0?delete t[a]:t[a]=l.data)}let i=zt(this.schema,t);if(i===void 0)return t;let s=zt(this.schema,e)?.fields??new Set;if([...i.fields].some(a=>r.includes(a)||!s.has(a)))throw this.refusal(t,i.error);return t}refusal(e,t){if(t instanceof de)return t;{let r=e?.id??"?",o=e?.kind??"?",i=this.schema.tryDefinition(o),s=i&&e&&typeof e=="object"?C(i,e):r;return new M(`${s} does not match what ${o} declares`,rl(t))}}insertNode(e,t,r=!1){if(this.nodes.has(e.id))throw new M(`Duplicate node id "${e.id}"`);this.nodes.set(e.id,t?e:this.check(e)),Ve(e)&&this.archived.add(e.id),this.tally(e.kind,1),this.place(no+e.id,r)}insertEdge(e,t,r=!1){let o=this.nodes.get(e.from),i=this.nodes.get(e.to);if(!o||!i){let a=o?e.to:e.from;throw new U(a,`Edge "${e.kind}" references missing node "${a}"`)}if(this.validate&&!t&&!this.schema.edgeAllowed(e.kind,o.kind,i.kind)){let a=this.schema.edge(e.kind);throw new M(`Edge "${e.kind}" is not declared from ${o.kind} to ${i.kind}`,a?`Declared: ${a.from.join("|")} -> ${a.to==="*"?"*":a.to.join("|")}`:`No edge kind "${e.kind}" is declared in this schema`)}let s=z(e);if(!t&&(e.id!==void 0||e.data!==void 0)){let a=this.edges.get(s),d=pa(e)??(a&&e.id!==void 0&&a.id!==e.id?`A second "${e.kind}" link between two records is not allowed yet`:(this.linkIds.get(e.id)??s)!==s?`Link id "${e.id}" is already taken`:void 0);if(d)throw new M(d)}this.edges.has(s)||(this.edges.set(s,e),e.id!==void 0&&this.linkIds.set(e.id,s),this.place(to+s,r),this.index(this.outIndex,e.from,s),this.index(this.inIndex,e.to,s))}deleteEdge(e){let t=z(e),r=this.edges.get(t)?.id;r!==void 0&&this.linkIds.delete(r),this.edges.delete(t),this.lapse(to+t),this.outIndex.get(e.from)?.delete(t),this.inIndex.get(e.to)?.delete(t)}index(e,t,r){(e.get(t)??e.set(t,new Set).get(t)).add(r)}edgesFrom(e,t){if(!e)return[];let r=[];for(let o of e){let i=this.edges.get(o);i&&(t===void 0||i.kind===t)&&r.push(i)}return r}resolve(e,t,r){let o=[];for(let i of this.edgesFrom(e,t)){let s=this.nodes.get(i[r]);s&&o.push(s)}return o}held=e=>this.archived.has(e.id);reach(e,t,r){let o=t?.archived??!1;return o==="all"||!o&&!this.archived.size?e:e.filter(i=>r(i)===o)}};var Nt=class extends Error{constructor(t,r){super(`No invariant registered under "${t}" (required by node "${r}")`);this.invariant=t;this.nodeId=r;this.name="UnregisteredInvariantError"}};function ol(n,e){return{...e,name:n}}var It=class extends Error{constructor(e){super(e),this.name="RuleBudgetError"}};function ha(n,e,t){try{return e().map(r=>r.status?r:{...r,status:"violated"})}catch(r){let o=r instanceof It,i=r instanceof Error?r.message:String(r),s=n.label??n.name.replace(/-/g," ");return[{invariant:n.name,status:o?"over-budget":"could-not-judge",...t!==void 0?{subjectId:t}:{},label:s,message:`${s} could not be judged: ${i}`,nodeIds:t!==void 0?[t]:[],repairs:[]}]}}function bn(n,e,t={}){let r=t.context??{},o=t.today===void 0?{}:{today:t.today},i=t.onUnregistered??"skip",s=new Set(e.map(u=>u.name)),a=[];for(let u of e)u.scope==="graph"&&a.push(...ha(u,()=>u.evaluate({graph:n,subject:void 0,context:r,...o}),void 0));let d=e.filter(u=>u.scope!=="graph"),l=new Map;for(let u of d){let f=u.scope.kind,h=l.get(f);h?h.push(u):l.set(f,[u])}for(let u of n.allNodes()){let f=n.schema.tryDefinition(u.kind),h=f?.requiresInvariant?.(u)??null;if(t.subjectFilter&&!t.subjectFilter(u,r))continue;if(h!==null&&!s.has(h)){if(i==="throw")throw new Nt(h,u.id);continue}let g=!pr(f,u,t.today);for(let x of l.get(u.kind)??[]){if(g&&x.judgesPast!==!0)continue;let m=x.scope.match;m&&!m(u)||a.push(...ha(x,()=>x.evaluate({graph:n,subject:u,context:r,...o}),u.id))}}let c=new Set,p=a.filter(u=>{let f=`${u.message}|${[...u.nodeIds].sort().join(",")}`;return c.has(f)?!1:(c.add(f),!0)}).map(u=>{let f=fr(u.message);return f===u.message?u:{...u,message:f}});return ro?ro(n,e,p,t.today):p}var ro;function ov(n){ro=n}function il(n,e){let t=new Set(e);return n.filter(r=>r.nodeIds.some(o=>t.has(o))||r.subjectId!==void 0&&t.has(r.subjectId))}function sl(n){let e=new Set(n.map(r=>r.invariant)).size;if(e===0)return"All rules hold";let t=`${e} ${e===1?"rule":"rules"} broken`;return n.length>e?`${t} in ${n.length} places`:t}var Tt="type-text",re={};var jt=(n,e)=>n==="*"||n.includes(e);function D(n){let e=n.onBehalfOf;if(!e)return n;let t=e.roles??[],r=n.roles===void 0?t:n.roles.filter(o=>t.includes(o));return{...n,...e.id!==void 0?{id:e.id}:{},roles:r}}var W=n=>n.kind==="system"&&n.onBehalfOf===void 0,ze=(n,e)=>n.roles==="*"||(e.roles??[]).some(t=>n.roles.includes(t));function ga(n){return pi(n.map(e=>an(V(e).toLowerCase())),"or")}function Ne(n,e,t,r,o,i,s={},a,d,l){if(!n)return{ok:!0};if(W(e))return{ok:!0};if(e=D(e),o!==void 0){if(Ne(n,e,t,r,void 0,i).ok)return{ok:!0};let f=!1;if(o.some(m=>Ne(n,e,m,r,void 0,i).ok)){if(!d||i===void 0||e.id!==void 0&&d()===e.id||!l&&n.grants.some(m=>m.roles!=="*"&&ze(m,e)&&o.some(k=>jt(m.mutations,k))))return{ok:!0};f=!0}let h=f?[t]:[t,...o],g=[...new Set(h.flatMap(m=>oo(n,m,r)))].sort(),x=(f?"only on what you made; ":"")+(g.length===0?o.length===0?"no declared act creates or changes it, so no role can":"no role can":`${ga(g)} can`);return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:g,message:ma(n,h,r,x,s)}}}let c=!1;for(let f of n.grants){if(!ze(f,e)||!jt(f.mutations,t)||f.kinds!==void 0&&f.kinds!=="*"&&(r===void 0||!f.kinds.includes(r))||f.self&&(i===void 0||e.id===void 0||i!==e.id))continue;let h=f.ownEnd?a?.()??[]:[e.id];if(!h.length||h.some(g=>g!==e.id)){c=!0;continue}return{ok:!0}}let p=oo(n,t,r),u=c?"only on your own end of the link":p.length===0?"no role can":`${ga(p)} can`;return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:p,message:ma(n,[t],r,u,s)}}}function ma(n,e,t,r,o){let i=[...new Set(e.flatMap(a=>ya(n,a,t)))],s=o.act?.(e[0]);return`Not permitted: ${s?`\u201C${s}\u201D`:e[0]}${t?` on ${an(o.noun?.(t)??t)}`:""} \u2014 ${r}.`+(i.length>0?` ${i.join(" ")}`:"")}function ya(n,e,t){return[...new Set(ba(n,e,t).flatMap(r=>r.describe||[]))]}var ba=(n,e,t)=>n.grants.filter(r=>jt(r.mutations,e)&&(t===void 0||jt(r.kinds??"*",t)));function oo(n,e,t){let r=ba(n,e,t);return r.some(o=>o.roles==="*")?[]:[...new Set(r.flatMap(o=>o.roles))].sort()}function io(n,e,t){return n?t.filter(r=>{let o=D(e).id;return so(r).some(i=>Ne(n,e,r.name,i,void 0,o,void 0,()=>[o??[]].flat()).ok)}):t}var so=n=>n.subject&&n.subject.kinds!=="*"?n.subject.kinds:[void 0];var oe=class extends Error{constructor(t,r="refused"){super(t);this.sentence=t;this.reason=r;this.name="ActRefusal"}};var Xn=class{constructor(e,t,r){this.present=e;this.timeline=t;this.unversioned=r}nodes=new Map;edges=new Map;touching=new Map;seq=Number.MAX_SAFE_INTEGER;wrote=new Map;begin(e){this.seq=e,this.wrote.clear()}writerOf(e){return t=>{let r=`${e}\0${t}`;return this.wrote.has(r)?this.wrote.get(r):this.timeline?.writers?.writerAt(e,t,this.seq)}}note(e,t){let r=e.op==="add-node"?e.node.id:e.op==="patch-node"||e.op==="splice-text"?e.id:"";if(r===""||this.unversioned?.has(r))return;let o=e.op==="add-node"?Object.keys(e.node):e.op==="splice-text"?[e.field]:Object.keys(e.after);for(let i of o)i!=="id"&&i!=="kind"&&this.wrote.set(`${r}\0${i}`,t(r,i))}node(e){return this.nodes.has(e)?this.nodes.get(e)??void 0:this.present.getNode(e)}setNode(e,t){this.nodes.set(e,t)}setEdge(e,t){let r=z(e);this.edges.set(r,t?e:null);for(let o of[e.from,e.to]){let i=this.touching.get(o);i||this.touching.set(o,i=new Set),i.add(r)}}incident(e){let t=new Map;for(let r of[...this.present.outEdges(e),...this.present.inEdges(e)]){let o=z(r);this.edges.has(o)||t.set(o,r)}for(let r of this.touching.get(e)??[]){let o=this.edges.get(r);o&&t.set(r,o)}return[...t.values()]}undo(e){switch(e.op){case"add-node":this.setNode(e.node.id,null);return;case"remove-node":this.setNode(e.node.id,e.node);return;case"patch-node":{if(this.unversioned?.has(e.id))return;let t=this.node(e.id);if(!t)return;this.setNode(e.id,va(t,e.before));return}case"splice-text":{let t=this.unversioned?.has(e.id)?void 0:this.node(e.id);t&&this.setNode(e.id,ar(t,e,!0));return}case"add-edge":this.setEdge(e.edge,!1);return;case"remove-edge":this.setEdge(e.edge,!0);return}}apply(e){switch(e.op){case"add-node":this.setNode(e.node.id,e.node);return;case"remove-node":for(let t of this.incident(e.node.id))this.setEdge(t,!1);this.setNode(e.node.id,null);return;case"patch-node":{if(this.unversioned?.has(e.id))return;let t=this.node(e.id);if(!t)return;this.setNode(e.id,va(t,e.after));return}case"splice-text":{let t=this.unversioned?.has(e.id)?void 0:this.node(e.id);t&&this.setNode(e.id,ar(t,e));return}case"add-edge":this.setEdge(e.edge,!0);return;case"remove-edge":this.setEdge(e.edge,!1);return}}};function va(n,e){let t={...n};for(let[r,o]of Object.entries(e))Fe(o)?delete t[r]:t[r]=o;return t}var al=n=>n.op==="add-node"||n.op==="remove-node"?n.node.id:n.op==="patch-node"||n.op==="splice-text"?n.id:void 0;function ao(n,e,t,r){let o=c=>{let p=e.node(c);return p?t.served(p,e.writerOf(c))!==void 0:t.sees?.(c)??!1},i=al(n);if(i===void 0){let c=n.edge,p=t.edgeClean(c)&&o(c.from)&&o(c.to);return e.apply(n),{primitives:p?[n]:[],faithful:!0}}let s=e.node(i),a=s?t.served(s,e.writerOf(i)):void 0;e.apply(n),e.note(n,r);let d=e.node(i),l=d?t.served(d,e.writerOf(i)):void 0;if(!a&&!l)return{primitives:[],faithful:!1};if(!a&&l){let c=e.incident(i).filter(u=>t.edgeClean(u)&&o(u.from===i?u.to:u.from)).map(u=>({op:"add-edge",edge:u})),p=n.op==="add-node"&&l===n.node&&c.length===0;return{primitives:p?[n]:[{op:"add-node",node:l},...c],faithful:p}}if(a&&!l){let c=n.op==="remove-node"&&a===s;return{primitives:c?[n]:[{op:"remove-node",node:a}],faithful:c}}if(n.op==="patch-node"){let c=(u,f)=>h=>h in u==(f!==void 0&&h in f);if(Object.keys(n.after).every(u=>c(a,s)(u)&&c(l,d)(u)))return{primitives:[n],faithful:!0};let p=u=>Object.fromEntries(Object.keys(n.after).map(f=>[f,f in u?u[f]:ue]));return{primitives:[{op:"patch-node",id:i,before:p(a),after:p(l)}],faithful:!1}}if(n.op==="splice-text"){let c=n.field;if(a[c]===s[c]&&l[c]===d[c])return{primitives:[n],faithful:!0};let p=u=>({[c]:c in u?u[c]:ue});return{primitives:[{op:"patch-node",id:i,before:p(a),after:p(l)}],faithful:!1}}return{primitives:[{op:"remove-node",node:a},{op:"add-node",node:l}],faithful:!1}}function xa(n,e,t){if(n.length===0)return[];let r=e.log.all(),o=r[0]?.seq??0,i=n.every(u=>r[u.seq-o]?.id===u.id),s=new Xn(e.present,e);if(!i)return s.begin(e.log.length??o+r.length),n.map(u=>{let f=D(u.author).id,h=u.primitives.map(g=>ao(g,s,t,()=>f));return{op:u,primitives:h.flatMap(g=>g.primitives),faithful:h.every(g=>g.faithful)}});let a=new Set(n.map(u=>u.seq)),d=Number.POSITIVE_INFINITY,l=Number.NEGATIVE_INFINITY;for(let u of a)u<d&&(d=u),u>l&&(l=u);d-=o,l-=o;let c=dl(r,d,e.present,t),p=c?new Xn(e.present,e,c.unversioned):s;for(let u=r.length-1;u>=d;u--){let f=r[u].primitives;for(let h=f.length-1;h>=0;h--)p.undo(f[h])}return cl(n,r,d,l,a,p,c?.judge??t,e)}function dl(n,e,t,r){let{sees:o,names:i}=r;if(!o||!i)return;let s=new Set,a=new Set,d=new Set,l=(p,u)=>{s.has(p)||a.has(p)||(o(p)?i(u)?(a.add(p),d.delete(p)):d.add(p):(s.add(p),d.delete(p)))};for(let p=e;p<n.length;p++)for(let u of n[p].primitives)u.op==="add-node"||u.op==="remove-node"?l(u.node.id,u.node):u.op==="patch-node"?(l(u.id,u.before),l(u.id,u.after)):u.op==="splice-text"&&(l(u.id,{}),s.has(u.id)||(a.add(u.id),d.delete(u.id)));for(let p of d){let u=t.getNode(p);u&&i(u)&&(d.delete(p),a.add(p))}return{unversioned:new Set([...d,...s]),judge:{...r,served:(p,u)=>d.has(p.id)?p:s.has(p.id)?void 0:r.served(p,u)}}}function cl(n,e,t,r,o,i,s,a){let d=new Map;for(let l=t;l<=r;l++){let c=e[l];if(i.begin(c.seq),!o.has(c.seq)){for(let f of c.primitives)i.apply(f);continue}let p=(f,h)=>a.writers?.writerAt(f,h,c.seq+1),u=c.primitives.map(f=>ao(f,i,s,p));d.set(c.seq,{op:c,primitives:u.flatMap(f=>f.primitives),faithful:u.every(f=>f.faithful)})}return n.map(l=>d.get(l.seq))}function gv(n,e,t,r){let o=new Xn(e.present,e);return o.begin(e.log.length??e.log.all().length),n.flatMap(i=>ao(i,o,t,()=>r).primitives)}var ka="A change you cannot see",Sa={kind:"system",id:"withheld",name:"Someone"};function vn(n){return n.withheld===!0}var Qn=$e,$a=(n,e)=>Object.entries(n).some(([t,r])=>t!=="id"&&t!=="kind"&&I(r,e));function Ra(n){if(typeof n!="function")return n;let e=n,t=r=>e(r.id)&&!$a(r,e)?r:void 0;return{sees:e,shows:e,served:t,servedWith:t,optional:()=>!1,kindOf:()=>{}}}function I(n,e){if(typeof n=="string")return!e(n);if(n===null||typeof n!="object")return!1;if(Array.isArray(n)){for(let t=0;t<n.length;t++)if(I(n[t],e))return!0;return!1}for(let t in n)if(Object.hasOwn(n,t)&&(!e(t)||I(n[t],e)))return!0;return!1}function Aa(n,e){let t=r=>!e(r);return n.primitives.some(r=>Qn(r).some(t))||[...n.writes,...n.reads].some(t)||n.mutation!==null&&I(n.mutation.args,e)}function ul(n,e){if(Qn(n).every(e.shows))switch(n.op){case"add-node":{let t=e.served(n.node);return t?t===n.node?n:{op:"add-node",node:t}:void 0}case"remove-node":{let t=n.node;return $a(t,e.sees)?{op:"remove-node",node:Object.fromEntries(Object.entries(t).filter(([r,o])=>r==="id"||r==="kind"||!I(o,e.sees)))}:n}case"patch-node":{let t=e.kindOf(n.id),r={};for(let[i,s]of Object.entries(n.after))if(!I(s,e.sees))r[i]=s;else if(t!==void 0&&e.optional(t,i))r[i]=ue;else return;let o=Object.fromEntries(Object.entries(n.before).filter(([,i])=>!I(i,e.sees)));return{op:"patch-node",id:n.id,before:o,after:r}}case"add-edge":case"remove-edge":return I(n.edge,e.sees)?void 0:n;case"splice-text":return I(n.removed,e.sees)||I(n.inserted,e.sees)?void 0:n}}function co(n,e,t){let r=Ra(e),o=i=>r.shows(i)&&_a(r,i);return{id:n.id,seq:n.seq,batch:n.batch,author:Sa,intent:ka,mutation:null,primitives:t??n.primitives.flatMap(i=>{let s=ul(i,r);return s?[s]:[]}),reads:n.reads.filter(o),writes:n.writes.filter(o),at:n.at,...n.undoes!==void 0?{undoes:n.undoes}:{},withheld:!0}}function xn(n,e){let t=Ra(e);if(t.hides?.()===!1)return[...n];let r=t.pin?.()??t;if(r.redact)return r.redact(n);if(r.timeline){let o={served:(i,s)=>r.servedWith(i,s),edgeClean:i=>!I(i,r.sees),sees:r.sees,names:i=>I(i,r.sees)};return xa(n,r.timeline,o).map(({op:i,primitives:s,faithful:a})=>(!i.withheld&&a?wa(i,r,s):void 0)??co(i,r,s))}return n.map(o=>(!o.withheld&&!Aa(o,r.shows)?wa(o,r):void 0)??co(o,r))}function wa(n,e,t){let r=n.inverse??n.primitives;if(t&&t.length<n.primitives.length){if(!t.length)return;r=r.filter(g=>Qn(g).every(e.shows));let{inverse:f,...h}=n;n={...h,primitives:t}}let o=f=>e.sees(f)&&_a(e,f),i=n.reads.filter(o),s=new Set(n.primitives.flatMap(Qn)),a=n.writes.filter(f=>o(f)||e.sees(f)&&s.has(f)),d=i.length===n.reads.length&&a.length===n.writes.length?n:{...n,reads:i,writes:a},l=e.actor!==void 0&&D(n.author).id===e.actor;if(!l&&n.described?.some(f=>!e.sees(f)))return;if(!I(n,e.sees))return d;let c=new Set,p=f=>{if(typeof f=="string")c.add(f);else if(Array.isArray(f))for(let h of f)p(h);else if(f!==null&&typeof f=="object")for(let[h,g]of Object.entries(f))c.add(h),p(g)};t&&p(t);let u=f=>e.sees(f)||c.has(f);if(!I(r,u))return l&&n.mutation&&p(n.mutation.args),I({...d,primitives:[],inverse:[]},l?u:e.sees)?void 0:d}function _a(n,e){return n.timeline===void 0||n.kindOf(e)!==void 0}var Be=class extends M{constructor(t){super(t.message);this.check=t;this.name="UndoBlockedError"}get blockedBy(){return this.check.blockedBy}};function et(n,e){let t=new Set(e),r=n.undoneIds(),o=n.all().filter(h=>t.has(h.batch)&&!r.has(h.id)),i=[...n.epochs()].reverse().find(h=>h.horizon);if(i){let h=new Set(n.all().map(x=>x.batch)),g=e.filter(x=>!h.has(x));if(g.length>0)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"missing",message:`Cannot undo ${g.map(x=>`batch ${x}`).join(", ")}: it is not after the undo horizon at op ${i.seq}${i.at?` (${i.at})`:""}. What was done before the horizon is archived, and undo does not reach behind it.`}}if(o.length===0)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"missing",message:e.length===0?"No batch given to undo":`Nothing live to undo in ${e.join(", ")} \u2014 already undone, or never applied`};if(o.some(vn))return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"forbidden",message:o.every(vn)?"Cannot undo a change you cannot see: only somebody who can see it can take it back.":"Cannot undo this here: part of it is a change you cannot see, and only somebody who can see it can take it back."};if(o.some(h=>h.enabledModules!==void 0))return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:"Cannot undo turning a module off or on: it is changed by turning the module the other way."};let s=new Set;for(let h of o)for(let g of h.writes)s.add(g);let a=Math.min(...o.map(h=>h.seq)),d=n.epochs().find(h=>h.change!==void 0&&h.seq>a);if(d){let h=o.find(g=>g.seq<d.seq);return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:`Cannot undo "${h.intent}": ${h.intent===d.change?"it changed the declaration":`it was done before the declaration changed (${d.change})`}, and undo does not reach back across that change.`}}let l=new Map(n.all().map(h=>[h.id,h.seq])),c=o.flatMap(h=>h.primitives),p=[];for(let h of n.all()){if(h.seq<=a||t.has(h.batch)||r.has(h.id)||h.undoes!==void 0&&(l.get(h.undoes)??-1)>a)continue;let g=re.aside?.(c,h);if(g===!0)continue;let x=[...new Set([...h.reads.filter(m=>s.has(m)),...g??[]])];x.length>0&&p.push({op:h,overlap:x})}if(p.length===0)return{ok:!0,ops:o};let u=p.filter(h=>!vn(h.op)).map(h=>`"${h.op.intent}" (op ${h.op.id}, read ${h.overlap.join(", ")})`).join("; ");if(p.some(h=>vn(h.op)))return{ok:!1,ops:o,blockedBy:p,includeBatches:[],message:`Cannot undo on its own \u2014 ${u?`a later operation depends on it: ${u}; and `:""}a later change you cannot see depends on it, which only somebody who can see it can take back.`};let f=[...new Set(p.map(h=>h.op.batch))];return{ok:!1,ops:o,blockedBy:p,includeBatches:f,message:`Cannot undo on its own \u2014 a later operation depends on it: ${u}. Include ${f.map(h=>`batch ${h}`).join(", ")} to undo them together.`}}function Oa(n,e){return e?uo(e,n).flatMap(t=>[...t.primitives]):[...n].sort((t,r)=>r.seq-t.seq).flatMap(t=>Le(t))}function uo(n,e){return re.undone?re.undone(n,e):[...e].sort((t,r)=>r.seq-t.seq).map(t=>({op:t,primitives:Le(t)}))}var Ue=class extends Error{refusal;constructor(e){super(e.message),this.name="PermissionDeniedError",this.refusal=e}};function ll(n){let e=n instanceof Error?n.message:String(n);if(n instanceof Ue){let t=n.refusal.wouldNeed;return{reason:"forbidden",sentence:e,...t.length>0?{wouldNeed:[...t]}:{}}}return n instanceof U?{reason:"missing",sentence:e}:n instanceof oe?{reason:n.reason,sentence:n.sentence}:n instanceof Be?{reason:n.check.reason??"invalid",sentence:e}:{reason:"invalid",sentence:e}}var fe=class extends M{constructor(t,r){super(`Invalid arguments for mutation "${t}"`,r.map(o=>`${o.path.map(String).join(".")||"(root)"}: ${o.message}`).join("; "));this.mutation=t;this.issues=r;this.name="InvalidArguments"}};var fl=["edit","remove","archive","unarchive","merge","leave-alone","allow-tidying"];var Iv=n=>fl.map(e=>`${e}-${n}`);function Ea(n){let e=/^(edit|remove|archive|unarchive|merge|leave-alone|allow-tidying|skip|detach|split)-(.+)$/.exec(n);return e?{act:e[1],kind:e[2]}:void 0}var lo=["connect","disconnect"],Ma=n=>n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`),fo=(n,e,t)=>`${n}-${e}-${Ma(t)}`;function Tv(n,e){let t=/^(connect|disconnect)-(.+)$/.exec(n);if(t){for(let[r,o]of e)if(t[2].startsWith(`${r}-`)){for(let i of o)if(t[2]===`${r}-${Ma(i)}`)return{act:t[1],kind:r,relation:i}}}}var jv=n=>[...n].flatMap(([e,t])=>[...t].flatMap(r=>lo.map(o=>fo(o,e,r)))),Pa=n=>`${/^[aeiou]/i.test(n)?"an":"a"} ${n}`;function za(n,e){let t=e.also?` (${e.also})`:"";return{title:`${e.one?`${n==="connect"?"Set":"Clear"} the ${e.to}`:`${n==="connect"?"Link":"Unlink"} ${Pa(e.to)}`}${t}`,fromTheOtherEnd:`${n==="connect"?"Link":"Unlink"} ${Pa(e.from)}${t}`}}function Na(n,e,t,r){if(t.cardinality!=="one"||t.to==="*"||t.to.length!==1||t.to[0]!==n)return;let o=t.description?.trim().replace(/\.$/,"");return o&&/^the\s+\S/i.test(o)&&!/[.;:!?,()]/.test(o)&&o.split(/\s+/).length<=8?{to:o.replace(/^the\s+/i,"")}:{also:r(e)}}var We=n=>n.trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[_\s]+/g,"-").replace(/-+/g,"-").toLowerCase();function Dt(n,e){let t=We(n),r=[...e];if(r.includes(n))return n;let o=r.filter(i=>We(i)===t);return o.length===1?o[0]:void 0}function pl(n,e){let t=Array.from({length:e.length+1},(r,o)=>o);for(let r=1;r<=n.length;r+=1){let o=[r];for(let i=1;i<=e.length;i+=1)o[i]=Math.min(t[i]+1,o[i-1]+1,t[i-1]+(n[r-1]===e[i-1]?0:1));t=o}return t[e.length]}function po(n,e){let t=[...e],r=Dt(n,t);if(r)return r;let o=We(n);if(o==="")return;let i,s=!1;for(let a of t){let d=pl(o,We(a));d>Math.max(2,Math.floor(Math.max(o.length,a.length)/3))||(!i||d<i.far?(i={act:a,far:d},s=!1):d===i.far&&(s=!0))}return i&&!s?i.act:void 0}var hl=n=>`Op "${n.id}" has seq ${n.seq}, so the log begins at seq ${n.seq}: a log that begins past 0 begins at its undo horizon, and none was given (a checkpoint epoch, or { horizon })`,wn=class n{ops=[];marks=[];start=0;get length(){return this.start+this.ops.length}get horizon(){return this.start}all(){return this.ops}opsFrom(e){return this.ops.slice(Math.max(0,e-this.start))}append(e){if(e.seq!==this.length)throw new Error(this.length===0&&e.seq>0?hl(e):`Op "${e.id}" has seq ${e.seq} but the log is ${this.length} long`);la(e),this.ops.push(Nn(e))}static from(e,t=[],r={}){let o=new n,i=[...t].reverse().find(d=>d.horizon),s=r.horizon??i?.seq??0;if(!Number.isInteger(s)||s<0)throw new Error(`A log cannot begin at seq ${s}`);if(i&&r.horizon!==void 0&&i.seq!==r.horizon)throw new Error(`A log said to begin at seq ${r.horizon} has its checkpoint at seq ${i.seq}`);let a=e[0];if(a&&s>0&&a.seq!==s)throw new Error(`A log compacted at seq ${s} begins with op "${a.id}" at seq ${a.seq}`);o.start=s;for(let d of e)o.append(d);for(let d of t)o.markEpoch(d);return o}replace(e,t=[],r={}){let o=n.from(e,t,r);this.ops=o.ops,this.marks=o.marks,this.start=o.start}epochs(){return this.marks}lastEpoch(){return this.marks.at(-1)}markEpoch(e){if(!Number.isInteger(e.seq)||e.seq<0||e.seq>this.length)throw new Error(`An epoch at seq ${e.seq} starts past the end of a log ${this.length} long`);if(e.seq<this.start)throw new Error(`An epoch at seq ${e.seq} is behind the horizon at seq ${this.start}: it went to the archive with the ops before it`);let t=this.lastEpoch();if(t&&e.seq<t.seq)throw new Error(`An epoch at seq ${e.seq} comes before the last one, at seq ${t.seq}`);this.marks.push(e)}truncate(e){if(!Number.isInteger(e)||e<this.start||e>this.length)throw new Error(`Cannot cut a log ${this.length} long back to ${e}`);let t=this.lastEpoch();if(t&&t.seq>e)throw new Error(`Cannot cut the log back to ${e}: an epoch begins at seq ${t.seq}`);return this.ops.splice(e-this.start)}checkpointAt(e,t,r={}){if(!Number.isInteger(t)||t<this.start||t>this.length)throw new Error(`No checkpoint at seq ${t}: this log holds seqs ${this.start} to ${this.length}`);let o=[...this.marks].reverse().find(a=>a.seq<=t);if(o?.seq===t)return{...o,horizon:!0};let i=this.fold(e,{...r,...o?{from:o}:{},to:t}).snapshot(),s=this.ops[t-1-this.start]?.at??o?.at;return{seq:t,base:i,...o?.version!==void 0?{version:o.version}:{},...s!==void 0?{at:s}:{},horizon:!0}}compact(e){if(!Number.isInteger(e.seq)||e.seq<this.start||e.seq>this.length)throw new Error(`Cannot compact at seq ${e.seq}: this log holds seqs ${this.start} to ${this.length}`);let t=this.ops.slice(0,e.seq-this.start),r=this.marks.filter(o=>o.seq<e.seq);return this.ops=this.ops.slice(e.seq-this.start),this.marks=[{...e,horizon:!0},...this.marks.filter(o=>o.seq>e.seq)],this.start=e.seq,{ops:t,epochs:r}}get(e){return this.ops.find(t=>t.id===e)}live(){let e=this.undoneIds();return this.ops.filter(t=>!e.has(t.id))}undoneIds(){return qe(this.ops)}opsInBatch(e){return this.ops.filter(t=>t.batch===e)}batches(){return ho(this.ops,this.undoneIds())}fold(e,t={}){let r=t.from?.seq??0;if(r<this.start)throw new Error(t.from?`An epoch at seq ${r} is behind the horizon at seq ${this.start}: fold from the checkpoint`:`A log compacted at seq ${this.start} does not fold from empty: fold from its checkpoint`);let o=t.from?.base??{nodes:[],edges:[]},i=Q.from(e,o,t.validate!==void 0?{validate:t.validate}:{}),s=t.to??this.length;for(let a of this.ops.slice(r-this.start,Math.max(0,s-this.start)))gl(i,a);return i}toJSON(){return[...this.ops]}};function gl(n,e){if(e.undoes!==void 0){n.applyPrimitives(e.primitives,{restoring:!0});return}try{n.applyPrimitives(e.primitives)}catch{n.applyPrimitives(e.primitives,{restoring:!0})}}function qe(n){let e=new Map;for(let r of n){if(!r.undoes)continue;let o=e.get(r.undoes);o?o.push(r.id):e.set(r.undoes,[r.id])}let t=new Map;for(let r=n.length-1;r>=0;r--){let o=n[r],i=e.get(o.id)??[];t.set(o.id,!i.some(s=>t.get(s)===!0))}return new Set(n.filter(r=>t.get(r.id)===!1).map(r=>r.id))}function ho(n,e){let t=[],r=new Map;for(let o of n){let i=r.get(o.batch);i?i.push(o):(r.set(o.batch,[o]),t.push(o.batch))}return t.map(o=>{let i=r.get(o)??[],s=i[0];return{id:o,author:s.author,intent:s.batchIntent??s.intent,at:s.at,...s.lineage?{lineage:s.lineage}:{},ops:i,undone:i.every(a=>e.has(a.id))}})}function go(n){return n?.automated===!0&&n.kind!=="human"&&n.kind!=="rule"}var Ta=n=>n?.[Yn]===!0,ml=(n,e)=>Ta(("graph"in n?n.graph:n).getNode(e));function Ia(n,e,t){let r=n.tryDefinition(e);return t===void 0?r?.tidying:r?.edges?.[t]?.tidying}var yl=n=>JSON.stringify(n,(e,t)=>t&&typeof t=="object"&&!Array.isArray(t)?Object.fromEntries(Object.entries(t).sort()):t);var bl=/^(archive|unarchive|remove|leave-alone|allow-tidying)$/;function vl(n,e){let t=We(n.name),r=e?.act(n.name),o=n.args??{},i=r?r.derived:Ea(t),{id:s}=o;if(i&&typeof s=="string"){if(bl.test(i.act))return[i.act,s];if(i.act==="merge")return["merge",...[s,o.into].sort()];if(i.relation)return[i.act,i.relation,s,o.to]}let a=r?.subject?.arg??"id",[d,l]=Object.keys(o).filter(c=>c!==a);return r?.connects?.length===1&&d&&!l&&e.has(o[a])&&e.has(o[d])?["connect",r.connects[0],o[a],o[d]]:[t,r?.creates?.length&&typeof s=="string"&&!e.has(s)?{...o,id:0}:o]}var ja=(n,e)=>`\u2248${yl(n.map(t=>vl(t,e)))}`;function Da(n,e,t){let r=xl(n,t);return[e,...e.map(o=>[o])].map(o=>r.get(ja(o,t))).find(Boolean)}function xl(n,e){let t=qe(n),r=new Map(n.map(i=>[i.id,i])),o=new Map;for(let i of n){let s=i.undoes!==void 0&&!t.has(i.id)&&!i.withheld?r.get(i.undoes):void 0,a=s?.suggests??(s?.mutation&&(s.lineage||i.undoneLineage)?[s.mutation]:[]);if(a.length>0)for(let d of[a,...a.map(l=>[l])])o.set(ja(d,e),i)}return o}function Fa(n,e,t,r,o={}){let i=o.declaration!==!1,s=(a,d)=>`${r} may not ${a}: ${d}.`;for(let a of t){let d="edge"in a?a.edge:void 0,l=(d?[d.from,d.to]:["id"in a?a.id:a.node.id]).map(c=>e.getNode(c)??("node"in a?a.node:void 0));for(let c of l){if(!c)continue;if(Ta(c))return s(`change \u201C${C(n.tryDefinition(c.kind),c)}\u201D`,"a person said to leave it alone");if(!i)continue;let p=Ia(n,c.kind);if(p==="never")return s(`change ${se(n,c.kind)} on its own`,"the app says they are never tidied");if(d&&p==="no-links")return s(`link or unlink ${se(n,c.kind)} on its own`,"the app says they are never linked automatically")}if(d&&i&&l[0]&&Ia(n,l[0].kind,d.kind)==="never")return s(`${a.op==="add-edge"?"make":"break"} a \u201C${d.kind}\u201D link on its own`,"the app says that relation is never tidied")}}function wl(n,e){if(!e||n.length===0)return null;let t=e.roles,r=o=>t?o.wouldNeed.some(i=>t.includes(i)):o.wouldNeed.length>0;return n.every(({refusal:o})=>r(o))?e:null}var Ft={scene:0,overview:10,rail:20,popover:30,dialog:40,toast:50},kl={plots:0,stage:1,tag:2,ties:2,lines:3,tieLabels:4,occupants:6,seatMarks:7,zoom:8,card:10,opened:11},Sl={under:0,raised:1,over:2},mo=n=>`--graview-layer-${n}`,$l=n=>`var(${mo(n)}, ${Ft[n]})`;function Rl(){return Object.keys(Ft).map(n=>` ${mo(n)}: ${Ft[n]};`).join(`
|
|
4
|
-
`)}function Al(n){let e=n.onBehalfOf??n;return{kind:e.kind,...e.id!==void 0?{id:e.id}:{},...e.name!==void 0?{name:e.name}:{},...e.roles!==void 0?{roles:e.roles}:{}}}function La(){return`sub_${(globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`).replace(/-/g,"").slice(0,20)}`}function Za(n){return{...n,id:n.id??La(),at:n.at??new Date().toISOString()}}function _l(n=[]){let e=[...n],t=new Set,r=()=>{for(let o of t)o()};return{list:o=>o===void 0?e:e.filter(i=>i.who.id===o),add(o){let i=Za(o);return e=[...e.filter(s=>s.id!==i.id),i],r(),i},remove(o){let i=e.length;e=e.filter(a=>a.id!==o);let s=e.length<i;return s&&r(),s},onChange(o){return t.add(o),()=>t.delete(o)}}}var yo=(n,e)=>`${n}\0${e}`,Ca=new WeakMap;function Ol(n,e){let t=new Map;for(let[o,i]of Object.entries(e??{}))for(let[s,a]of Object.entries(i))t.set(yo(o,s),[{seq:n-1,by:a}]);return{base:n,end:n,read:[],fields:t,written:[],seqOf:new Map,writers:{writerAt:(o,i,s)=>{let a=t.get(yo(o,i));if(!a)return;let d=0,l=a.length;for(;d<l;){let c=d+l>>1;a[c].seq<s?d=c+1:l=c}return d===0?void 0:a[d-1].by}}}}function Pl(n){if(n.op==="add-node")return[n.node.id,Object.keys(n.node).filter(e=>e!=="id"&&e!=="kind")];if(n.op==="patch-node")return[n.id,Object.keys(n.after).filter(e=>!Fe(n.after[e]))];if(n.op==="splice-text")return[n.id,[n.field]]}function El(n,e){let t=n.end,r=D(e.author).id,o=e.undoes!==void 0?n.seqOf.get(e.undoes):void 0,i=[];for(let s of e.primitives){let a=Pl(s);if(!a)continue;let[d,l]=a;for(let c of l){let p=e.undoes===void 0?r:o!==void 0?n.writers.writerAt(d,c,o):void 0,u=yo(d,c),f=n.fields.get(u);f||n.fields.set(u,f=[]),f.push({seq:t,by:p}),i.push(u)}}n.written.push({seq:t,keys:i}),n.seqOf.set(e.id,t),n.read.push(e),n.end++}function Ml(n,e){for(;n.written.length>0&&n.written.at(-1).seq>=e;){let{keys:t}=n.written.pop();for(let r of t)n.fields.get(r)?.pop()}for(let t of n.read.slice(e-n.base))n.seqOf.delete(t.id);n.read.length=e-n.base,n.end=e}function nt(n){let e=n.all(),t=typeof n.length=="number"?n.length:e.length,r=t-e.length,o=Ca.get(n);if(o&&o.base<=r&&r<=o.end){let i=Math.min(o.end,t);for(;i>r&&e[i-1-r]!==o.read[i-1-o.base];)i--;i===r&&r>o.base&&i<o.end?o=void 0:(i<o.end&&Ml(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||Ca.set(n,o=Ol(r,r>0?[...n.epochs?.()??[]].reverse().find(i=>i.horizon)?.writers:void 0));for(let i=o.end;i<t;i++)El(o,e[i-r]);return o.writers}function Ga(n,e,t,r){let o=nt(n),i={};for(let s of t)for(let a in s){if(!Object.hasOwn(s,a)||a==="id"||a==="kind"||!r(s[a]))continue;let d=o.writerAt(s.id,a,e);d!==void 0&&((i[s.id]??={})[a]=d)}return i}var He={served:new WeakSet},tt=n=>n.fields!==void 0||(n.hide?.length??0)>0,Ie=n=>He.on===!0||He.served.has(n);var bo=new WeakMap;function zl(n,e){let t=new Map(Object.entries(e?.removed??{})),r=new Map(Object.entries(e?.creators??{})),o=n===0||e?.removed!==void 0;return{base:n,end:n,read:[],kinds:t,creators:r,entries:[],records:{kindOf:i=>t.get(i),creatorOf:i=>r.get(i),knowsAll:o}}}function Nl(n,e){let t=n.end;for(let r of e.primitives){if(r.op!=="add-node"&&r.op!=="remove-node")continue;let{id:o,kind:i}=r.node;if(n.kinds.has(o)||(n.kinds.set(o,i),n.entries.push({seq:t,id:o,creator:!1})),r.op!=="add-node"||n.creators.has(o)||e.undoes!==void 0)continue;let s=D(e.author).id;s!==void 0&&(n.creators.set(o,s),n.entries.push({seq:t,id:o,creator:!0}))}n.read.push(e),n.end++}function Il(n,e){for(;n.entries.length>0&&n.entries.at(-1).seq>=e;){let t=n.entries.pop();(t.creator?n.creators:n.kinds).delete(t.id)}n.read.length=e-n.base,n.end=e}function pe(n){let e=n.all(),t=typeof n.length=="number"?n.length:e.length,r=t-e.length,o=bo.get(n);if(o&&o.base<=r&&r<=o.end){let i=Math.min(o.end,t);for(;i>r&&e[i-1-r]!==o.read[i-1-o.base];)i--;i===r&&r>o.base&&i<o.end?o=void 0:(i<o.end&&Il(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||bo.set(n,o=zl(r,r>0?Tl(n,r):void 0));for(let i=o.end;i<t;i++)Nl(o,e[i-r]);return o.records}function Tl(n,e){let t=[...n.epochs?.()??[]].reverse().find(r=>r.horizon);return t?.seq===e?t:void 0}function Ka(n,e,t){pe(n);let r=bo.get(n),o=[new Set,new Set];for(let a=r.entries.length-1;a>=0&&r.entries[a].seq>=e;a--)o[+r.entries[a].creator].add(r.entries[a].id);let i={},s={};for(let[a,d]of r.creators)o[1].has(a)||(i[a]=d);for(let[a,d]of r.kinds)!o[0].has(a)&&!t(a)&&(s[a]=d);return r.records.knowsAll?{creators:i,removed:s}:{creators:i}}function kn(n,e,t,r,o,i=He.on===!0){if(!n?.sees?.length||W(e))return!0;let s=n.sees.filter(a=>a.kinds.includes(t.kind)&&(i||!tt(a)));return s.length===0?!1:(e=D(e),s.some(a=>{if(!ze(a,e))return!1;if(!a.own&&!a.via)return!0;let d=e.id;if(d===void 0)return!1;let l=c=>c.id===d;return a.via?r.out(t.id,a.via).some(l)||r.in(t.id,a.via).some(l):t.id===d||r.out(t.id).some(l)||r.in(t.id).some(l)||o?.creatorOf(t.id)===d}))}var Lt="publish",vo=n=>n?.mode==="on-publish",xo=(n,e,t)=>vo(n)&&!W(e)&&(t==="published"||!(D(e).roles??[]).some(r=>n.working.includes(r))),ae=globalThis[Symbol.for("@graview/core:publishing")]??={};ae.input=()=>Pe({through:X(Ke())});var ko=new Set;function Zt(n,e){return W(e)?ko:n.modules?.disabledKinds??ko}function Ye(n,e){return W(e)?!1:(n.policy?.sees?.length??0)>0||Zt(n,e).size>0}function Wa(n,e){if(!Ye(n,e))return()=>!0;let t=n.modules?.disabledKinds??ko,r=n.policy?.sees??[],o=D(e),i=Ie(n),s=d=>!t.has(d)&&(r.length===0||r.some(l=>l.kinds.includes(d)&&ze(l,o)&&!l.own&&!l.via&&(i||!tt(l)))),a=n.schema.kinds.every(s);return d=>a||d!==void 0&&s(d)}function Sn(n,e){return t=>{let r=Zt(n,e);if(!n.policy?.sees?.length&&r.size===0)return!0;let o=pe(n.log),i=n.graph.getNode(t);if(i)return!r.has(i.kind)&&kn(n.policy,e,i,n.graph,o,Ie(n));let s=o.kindOf(t)??qa(n,o,t);return s===void 0?!0:!r.has(s)&&kn(n.policy,e,{id:t,kind:s},{out:()=>[],in:()=>[]},o,Ie(n))}}var jl={out:()=>[],in:()=>[]};function qa(n,e,t){if(e.knowsAll||He.served.has(n))return;let r=t.indexOf(":");if(r<=0)return;let o=t.slice(0,r);return n.schema?.tryDefinition(o)?o:void 0}function Dl(n,e,t=new Map,r){let o=Zt(n,e);if(!n.policy?.sees?.length&&o.size===0)return()=>!0;let i=pe(n.log);return s=>{let a=t.get(s);if(a!==void 0)return a;let d,l=n.graph.getNode(s);if(l)d=!o.has(l.kind)&&kn(n.policy,e,l,n.graph,i,Ie(n));else{let c=i.kindOf(s)??qa(n,i,s);if(c===void 0)return r?.add(s),!0;d=!o.has(c)&&kn(n.policy,e,{id:s,kind:c},jl,i,Ie(n))}return t.set(s,d),d}}function Fl(n){let e=new Map;return(t,r)=>{let o=`${t}\0${r}`,i=e.get(o);if(i===void 0){let s=n?.tryDefinition(t)?.fields?.shape,a=s?.[r];i=s!==void 0&&(a===void 0||a.safeParse?.(void 0).success===!0),e.set(o,i)}return i}}function Ct(n,e){return Ha(n,e).lens}var So=()=>({judged:new Map,shown:new Map});function Ha(n,e){let t=Fl(n.schema),r=W(e)?void 0:D(e).id,o=()=>n.log.length??n.log.all().length,i=new WeakMap,s=n.graph,a=(c,p,u,f,h)=>{let g=(w,R)=>{if(!c(w.id))return;let v;for(let T in w)if(!(!Object.hasOwn(w,T)||T==="id"||T==="kind"||!I(w[T],c))&&!(r!==void 0&&R(T)===r)){if(!t(w.kind,T))return;(v??=[]).push(T)}if(!v)return w;let $=v.join("\0"),P=i.get(w);if(P?.without===$)return P.node;let E=Object.fromEntries(Object.entries(w).filter(([T])=>!v.includes(T)));return i.set(w,{without:$,node:E}),E},x=w=>{let R=u();return g(w,v=>p().writerAt(w.id,v,R))},m=new WeakMap,k=h?w=>{let R=m.get(w);return R||m.set(w,R={node:x(w)}),R.node}:x,A=w=>{if(!c(w))return!1;let R=s.getNode(w);return R===void 0||k(R)!==void 0},S=h?.shown??new Map,_=h?w=>{let R=S.get(w);return R===void 0&&S.set(w,R=A(w)),R}:A,y=s.outEdges&&s.inEdges?{present:{getNode:w=>s.getNode(w),outEdges:w=>s.outEdges(w),inEdges:w=>s.inEdges(w)},log:n.log,get writers(){return p()}}:void 0,b={sees:c,shows:_,served:k,servedWith:g,optional:t,kindOf:f,...r!==void 0?{actor:r}:{},...y?{timeline:y}:{},hides:()=>Ye(n,e),pin:h?()=>b:()=>d(So())};return He.lens?.(b,n,e)??b};function d(c){let p,u=o(),f=pe(n.log);return a(Dl(n,e,c.judged,c.unnamed),()=>p??=nt(n.log),()=>u,h=>s.getNode(h)?.kind??f.kindOf(h),c)}return{lens:a(Sn(n,e),()=>nt(n.log),o,c=>s.getNode(c)?.kind??pe(n.log).kindOf(c)),pinWith:d}}var Va=new WeakMap,Ba=new WeakMap,Ll=n=>{let e=new Set;for(let t of n)for(let r of t.primitives)r.op==="add-node"||r.op==="remove-node"?e.add(r.node.id):r.op==="patch-node"||r.op==="splice-text"?e.add(r.id):(e.add(r.edge.from),e.add(r.edge.to));return e};function Ya(n,e){if(!Ye(n,e))return n.log.all();let t=n.log.all(),r=n.log.length??t.length,o=r-t.length,i=[...Zt(n,e)].sort().join("\0"),s=Ja(e),a=Va.get(n.log);a||Va.set(n.log,a=new Map);let d=a.get(s),{pinWith:l}=Ha(n,e),c=Ba.get(n.log);c||Ba.set(n.log,c=new Set);let p=d!==void 0&&d.horizon===o&&d.off===i&&d.length<=r&&(d.length===o||t[d.length-1-o]===d.last);if(d&&p){if(d.length===r)return d.ops;let h=t.slice(d.length-o),g=l(So()),x=!0,m=Ll(h);for(let k of m){let A=d.judgments.judged.get(k),S=d.judgments.shown.get(k);if(A!==void 0&&g.sees(k)!==A||S!==void 0&&g.shows(k)!==S){x=!1;break}}if(x){for(let k of m)if(c.has(k)){x=!1;break}}if(x){let k=[...d.ops,...xn(h,l(d.judgments))],A={horizon:o,off:i,length:r,last:t.at(-1),ops:k,judgments:d.judgments};return a.set(s,A),k}}let u={...So(),unnamed:c},f=xn(t,l(u));return a.set(s,{horizon:o,off:i,length:r,last:t.at(-1),ops:f,judgments:u}),f}function Zl(n,e,t){return(t.subjectId===void 0||!e(t.subjectId)||n.shows(t.subjectId))&&t.nodeIds.every(r=>!e(r)||n.shows(r))&&!I(t,n.sees)}function $o(n,e){return{all:()=>n,undoneIds:()=>qe(n),epochs:e}}var Ua=new WeakMap;function Ja(n){let e=W(n)?n:D(n);return`${n.kind}|${e.id??""}|${(e.roles??[]).join(",")}|${n.onBehalfOf?`for:${n.id??""}`:""}`}var Xa=(n,e)=>`${Ja(n)}@${e}`,wo=(n,e)=>{let t=Reflect.get(n,e,n);return typeof t=="function"?t.bind(n):t},Cl=Symbol.for("@graview/core:seat");function $n(n,e,t={}){if(xo(n.publishing,e,t.as)){if(ae.served)return ae.served(n,e);throw new Error("Load @graview/core/publishing to serve a reader of an app that publishes.")}return ed(n,e)}var Gl=()=>ae.served!==void 0;function Qa(n){let e=Ua.get(n);return e||Ua.set(n,e=new Map),e}function ed(n,e){if(!Ye(n,e))return n;let t=Xa(e,"head"),r=Qa(n),o=r.get(t);if(o)return o;let i=n.graph,s=Ct(n,e),a=S=>{let _=v=>v===void 0?void 0:S.served(v),y=v=>_(v)!==void 0,b=v=>y(i.getNode(v));return{served:_,seenNode:y,seenId:b,seenEdge:v=>b(v.from)&&b(v.to)&&!I(v,S.sees),servedAll:v=>v.flatMap($=>_($)??[])}},{served:d,seenId:l}=a(s),c=()=>a(s.pin?.()??s),p=(S,_)=>{let y=nt(n.log),b=s.pin?.()??s,w=S.nodes.flatMap(v=>b.servedWith(v,$=>y.writerAt(v.id,$,_))??[]),R=new Set(w.map(v=>v.id));return{nodes:w,edges:S.edges.filter(v=>R.has(v.from)&&R.has(v.to)&&!I(v,b.sees))}},u=S=>{let{removed:_,writers:y,...b}=S,w=p(S.base,S.seq);if(!S.creators)return{...b,base:w};let R=new Set(w.nodes.map($=>$.id)),v=Object.fromEntries(Object.entries(S.creators).filter(([$,P])=>R.has($)&&!I(P,s.sees)));return{...b,base:w,creators:v}},f=S=>S&&u(S),h=()=>Ya(n,e),g=()=>$o(h(),()=>n.log.epochs()),x=new Proxy(i,{get(S,_){switch(_){case"getNode":return y=>d(S.getNode(y));case"has":return l;case"allNodes":case"nodesOfKind":return(...y)=>c().servedAll(S[_](...y));case"count":return(...y)=>c().servedAll(S.nodesOfKind(...y)).length;case"allEdges":case"edgesOfKind":case"outEdges":case"inEdges":return(...y)=>S[_](...y).filter(c().seenEdge);case"out":case"in":case"neighbors":return(y,...b)=>{let w=c();return w.seenId(y)?w.servedAll(S[_](y,...b)):[]};case"snapshot":return()=>{let y=S.snapshot(),b=c();return{...y,nodes:b.servedAll(y.nodes),edges:y.edges.filter(b.seenEdge)}};case"size":{let y=c();return{nodes:y.servedAll(S.allNodes({archived:"all"})).length,edges:S.allEdges({archived:"all"}).filter(y.seenEdge).length}}default:return wo(S,_)}}}),m=()=>{let S=h();return ho(S,qe(S))},k=new Proxy(n.log,{get(S,_){switch(_){case"all":case"toJSON":return()=>[...h()];case"epochs":return()=>S.epochs().map(u);case"lastEpoch":return()=>f(S.lastEpoch());case"live":return()=>{let y=h(),b=qe(y);return y.filter(w=>!b.has(w.id))};case"get":return y=>h().find(b=>b.id===y);case"opsInBatch":return y=>h().filter(b=>b.batch===y);case"batches":return m;default:return wo(S,_)}}}),A=new Proxy(n,{get(S,_){switch(_){case Cl:return{store:S,principal:e};case"graph":return x;case"log":return k;case"snapshot":return x.snapshot;case"batches":return m;case"canUndo":return y=>et(g(),typeof y=="string"?[y]:y);case"violations":return y=>S.violations(y,x).filter(b=>Zl(s,w=>i.has(w),b));case"findings":return()=>S.findings().filter(y=>(y.id.includes("->")?y.id.split("->").map((w,R)=>R===0?w.slice(w.indexOf(":")+1):w):[y.id]).every(w=>!i.has(w)||l(w))&&!I(y,s.sees));case"wouldChange":return y=>S.wouldChange(y,e);case"preview":return(y,b,w)=>S.preview(y,b,{author:e,...w});case"seenBy":return(y,b)=>$n(S,y,b);case"seenFor":return e;case"servedSeq":return S.servedSeq;case"checkpoint":return y=>f(S.checkpoint(y));default:return wo(S,_)}}});return r.set(t,A),A}ae.kit={seatView:ed,viewsOf:Qa,viewKey:Xa,diff:Ee,reads:xo};var Ro=new Set;function Ao(n,e){if(!n||e===void 0)return{enabled:new Set(Object.keys(n??{})),disabledKinds:Ro,disabledMutations:Ro,disabledInvariants:Ro,administered:nd(n,new Set(Object.keys(n??{})))};let t=new Set,r=a=>{if(!(t.has(a)||!(a in n))){t.add(a);for(let d of n[a]?.requires??[])r(d)}};for(let a of e)r(a);for(let[a,d]of Object.entries(n))d.required&&r(a);let o=new Set,i=new Set,s=new Set;for(let[a,d]of Object.entries(n))if(!t.has(a)){for(let l of d.kinds??[])o.add(l);for(let l of d.mutations??[])i.add(l);for(let l of d.invariants??[])s.add(l)}for(let a of t){let d=n[a];for(let l of d?.kinds??[])o.delete(l);for(let l of d?.mutations??[])i.delete(l);for(let l of d?.invariants??[])s.delete(l)}return{enabled:t,disabledKinds:o,disabledMutations:i,disabledInvariants:s,administered:nd(n,t)}}function nd(n,e){let t=new Map;for(let[r,o]of Object.entries(n??{}))e.has(r)&&o.visibility==="admin"&&t.set(r,o);return t}function td(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().trim().replace(/\s+/g," ")}var Gt=class{constructor(e){this.graph=e;for(let t of e.allNodes({archived:"all"}))this.file(t);e.subscribe(t=>this.follow(t))}kinds=new Map;filed=new Map;labelOf(e){return this.filed.get(e)?.label}lookup(e,t){let r=td(t);if(r.length===0)return{exact:[],prefix:[]};let o=e.includes("*")?[...this.kinds.values()]:e.flatMap(a=>this.kinds.get(a)??[]),i=[],s=[];for(let a of o)for(let d=_o(a.sorted,r);d<a.sorted.length&&a.sorted[d].startsWith(r);d+=1){let l=[...a.ids.get(a.sorted[d])??[]];s.push(...l),a.sorted[d]===r&&i.push(...l)}return{exact:i,prefix:s}}follow(e){for(let t of e.removedNodes)this.unfile(t.id);for(let t of e.changedNodes)this.unfile(t.after.id),this.file(t.after);for(let t of e.addedNodes)this.file(t)}file(e){let t=C(this.graph.schema.tryDefinition(e.kind),e),r=td(t);this.filed.set(e.id,{kind:e.kind,key:r,label:t});let o=this.kinds.get(e.kind);o||this.kinds.set(e.kind,o={ids:new Map,sorted:[]});let i=o.ids.get(r);i?i.add(e.id):(o.ids.set(r,new Set([e.id])),o.sorted.splice(_o(o.sorted,r),0,r))}unfile(e){let t=this.filed.get(e);if(!t)return;this.filed.delete(e);let r=this.kinds.get(t.kind),o=r?.ids.get(t.key);if(!r||!o||(o.delete(e),o.size>0))return;r.ids.delete(t.key);let i=_o(r.sorted,t.key);r.sorted[i]===t.key&&r.sorted.splice(i,1)}};function _o(n,e){let t=0,r=n.length;for(;t<r;){let o=t+r>>>1;n[o]<e?t=o+1:r=o}return t}function Kl(n,e){return e.includes("*")?"record":e.map(t=>H(n.tryDefinition(t),t)).join(" or ")}function rd(n,e,t,r){let o=Kl(n,e.kinds);if(r.length===0)return{ok:!1,reason:"none",candidates:r,message:`There is no ${o} called "${t}".`};let i=r.slice(0,10).map(a=>`${a.label} (${a.id})`),s=r.length>i.length?`, and ${r.length-i.length} more`:"";return{ok:!1,reason:"ambiguous",candidates:r,message:`"${t}" names more than one ${o}: ${i.join(", ")}${s}. Pass the id of the one you mean as ${e.name}.`}}var id=Symbol.for("@graview/core:node-ref"),od=n=>typeof n=="object"&&n!==null?n[id]:void 0;function Te(n="*"){return Vl(L().check(Kn(1)),n)}function Vl(n,e){let t=Object.freeze(e==="*"?["*"]:[...e]),r=o=>{o&&Object.defineProperty(o,id,{value:t,enumerable:!0,configurable:!0})};return r(n),r(j(n)),n}function Oo(n){if(typeof n!="object"||n===null)return;let e=od(n);if(e)return e;let t=j(n),r=od(t);if(r)return r;let o=t?.innerType;return o?Oo(o):void 0}function rt(n){let e=n.shape;if(!e)return[];let t=[];for(let[r,o]of Object.entries(e)){let i=Oo(o);i&&t.push({name:r,kinds:i,optional:o.safeParse(void 0).success})}return t}function Po(n){if(n===null||typeof n!="object")return JSON.stringify(n)??"null";if(Array.isArray(n))return`[${n.map(r=>r===void 0?"null":Po(r)).join(",")}]`;let e=n;return`{${Object.keys(e).filter(r=>e[r]!==void 0).sort().map(r=>`${JSON.stringify(r)}:${Po(e[r])}`).join(",")}}`}var sd=(n,e)=>n.key<e.key?-1:n.key>e.key?1:0;function Bl(n){let e=n.nodes.map(r=>({key:r.id,value:r})).sort(sd),t=n.edges.map(r=>({key:z(r),value:{kind:r.kind,from:r.from,to:r.to,id:r.id,data:r.data}})).sort(sd);return Po({nodes:e.map(r=>r.value),edges:t.map(r=>r.value)})}function Rn(n){return`sha256:${dd(Bl(n))}`}function ad(n,e,t,r={}){let o=r.validate??!0,i=r.base??{nodes:[],edges:[]},s=Rn(t),a=Q.from(n,i,{validate:o});for(let[g,x]of e.entries())try{a.applyPrimitives(x.primitives)}catch(m){let k=e[g-1];return{ok:!1,expected:Rn(a.snapshot()),actual:s,...k?{divergedAfter:k.id}:{},reason:`The log does not fold: op "${x.id}" (${x.intent}) could not be applied. ${m instanceof Error?m.message:String(m)}`}}let d=Rn(a.snapshot());if(d===s)return{ok:!0,hash:s};let l=g=>{let x=Q.from(n,i,{validate:o});for(let m=0;m<=g;m++)x.applyPrimitives(e[m].primitives);return Rn(x.snapshot())},c=g=>{try{let x=Q.from(n,t,{validate:o});for(let m=e.length-1;m>g;m--)x.applyPrimitives(Le(e[m]));return Rn(x.snapshot())}catch{return}},p=g=>{let x=c(g);return x!==void 0&&x!==l(g)},u=-1,f=e.length-1;for(;u<f;){let g=Math.floor((u+f)/2);p(g)?f=g:u=g+1}let h=f>=0?e[f]:void 0;return{ok:!1,expected:d,actual:s,...h?{divergedAfter:h.id}:{},reason:h?`The graph and the fold of its log part after op "${h.id}" (${h.intent}).`:"The graph and the fold of its log disagree before any op: the base it folds from does not match."}}var Ul=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Wl=new TextEncoder,ql=new Uint32Array(64),Hl=new Uint32Array(8),Kt=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function dd(n){let e=Wl.encode(n),t=e.length*8,r=new Uint8Array(e.length+9+63>>6<<6);r.set(e),r[e.length]=128;let o=new DataView(r.buffer);o.setUint32(r.length-8,Math.floor(t/2**32)),o.setUint32(r.length-4,t>>>0);let i=Hl;i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225;let s=ql;for(let d=0;d<r.length;d+=64){for(let m=0;m<16;m++)s[m]=o.getUint32(d+m*4);for(let m=16;m<64;m++){let k=s[m-15],A=s[m-2],S=(k>>>7|k<<25)^(k>>>18|k<<14)^k>>>3,_=(A>>>17|A<<15)^(A>>>19|A<<13)^A>>>10;s[m]=s[m-16]+S+s[m-7]+_>>>0}let l=i[0],c=i[1],p=i[2],u=i[3],f=i[4],h=i[5],g=i[6],x=i[7];for(let m=0;m<64;m++){let k=(f>>>6|f<<26)^(f>>>11|f<<21)^(f>>>25|f<<7),A=f&h^~f&g,S=x+k+A+Ul[m]+s[m]>>>0,_=(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10),y=l&c^l&p^c&p,b=_+y>>>0;x=g,g=h,h=f,f=u+S>>>0,u=p,p=c,c=l,l=S+b>>>0}i[0]=i[0]+l>>>0,i[1]=i[1]+c>>>0,i[2]=i[2]+p>>>0,i[3]=i[3]+u>>>0,i[4]=i[4]+f>>>0,i[5]=i[5]+h>>>0,i[6]=i[6]+g>>>0,i[7]=i[7]+x>>>0}let a="";for(let d=0;d<8;d++){let l=i[d];a+=Kt[l>>>24]+Kt[l>>>16&255]+Kt[l>>>8&255]+Kt[l&255]}return a}var ot=class{constructor(e){this.inner=e}seen=new Set;reads(){return[...this.seen]}markAll(e){for(let t of e)this.seen.add(t.id);return e}markEdges(e){for(let t of e)this.seen.add(t.from),this.seen.add(t.to);return e}getNode(e){return this.seen.add(e),this.inner.getNode(e)}has(e){return this.seen.add(e),this.inner.has(e)}allNodes(e){return this.markAll(this.inner.allNodes(e))}allEdges(e){return this.markEdges(this.inner.allEdges(e))}nodesOfKind(e,t){return this.markAll(this.inner.nodesOfKind(e,t))}edgesOfKind(e,t){return this.markEdges(this.inner.edgesOfKind(e,t))}out(e,t,r){return this.seen.add(e),this.markAll(this.inner.out(e,t,r))}in(e,t,r){return this.seen.add(e),this.markAll(this.inner.in(e,t,r))}neighbors(e,t){return this.seen.add(e),this.markAll(this.inner.neighbors(e,t))}};function Yl(n,e){return{...e,name:n}}function Eo(n){if(!n.creates?.length)return!1;let e=n.input.shape;return e===void 0||!("id"in e)}function fd(n){let e=n.input,t=e._zod?.def;if(t?.type!=="object"||t.catchall!==void 0||!e.shape)return;let r=Object.keys(e.shape);return Eo(n)?[...r,"id"]:r}var cd=(n,e,t={})=>{let r=n.filter(s=>t[s]?.length),o=n.filter(s=>!t[s]?.length);return`${[...o.length>0?[`does not take ${o.map(s=>`"${s}"`).join(", ")}`]:[],...r.map(s=>`${s} is set by ${t[s].join(" or ")}`)].join("; ")}; it takes ${e.length>0?e.map(s=>`"${s}"`).join(", "):"nothing"}`};function Jl(n){let e=n?._zod?.def;for(let t=0;e?.innerType&&t<8;t++)e=e.innerType._zod?.def;return e}var Xl=/^-?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?$/;function pd(n,e){let t=n?.shape;if(!t||typeof e!="object"||e===null||Array.isArray(e))return e;let r;for(let[o,i]of Object.entries(e)){if(typeof i!="string"||!Xl.test(i)||Jl(t[o])?.type!=="number")continue;let s=Number(i);Number.isFinite(s)&&(r??={...e},r[o]=s)}return r??e}var hd=n=>typeof n=="string"&&n.length<=200&&/^[^\s\p{Cc}]+$/u.test(n);function Ql(n){if(typeof n!="object"||n===null)return;let e=n.id;if(e!==void 0){if(!hd(e))throw new M("An id is 1\u2013200 characters with no space",`Got ${JSON.stringify(e)}.`);return e}}function ef(n){let{id:e,...t}=n;return t}function ud(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"")||"item"}function Mo(n){let e=2166136261;for(let t=0;t<n.length;t++)e=Math.imul(e^n.charCodeAt(t),16777619);return(e>>>0).toString(36).padStart(7,"0")}function nf(n,e){if(e.limited&&e.me===void 0)return ld(n,e.held);let t=e.limited?`${n}.${Mo(e.me)}`:n,r=t;for(let o=2;e.seen(r);o++)r=`${t}-${o}`;return e.held(r)?ld(t,e.held):r}function ld(n,e){let t;do t=`${n}-${Math.floor(Math.random()*36**6).toString(36).padStart(6,"0")}`;while(e(t));return t}function An(n,e,t,r={}){let o=Eo(e)?Ql(t):void 0,i=pd(e.input,o===void 0?t:ef(t)),s=fd(e);if(s&&typeof i=="object"&&i!==null&&!Array.isArray(i)){let y=Object.keys(i).filter(b=>!s.includes(b)&&i[b]!==void 0);if(y.length>0)throw new fe(e.name,[{path:[],message:cd(y,s,e.writtenBy)}])}let a=e.input.safeParse(i);if(!a.success){let y=Object.keys(e.input.shape??{});throw new fe(e.name,a.error.issues.map(b=>b.code==="unrecognized_keys"&&y.length>0?{...b,message:cd(b.keys,y,e.writtenBy)}:b))}let d=a.data,l=new ot(r.seen??n),c=[],p=new Set,u=r.me===void 0?void 0:`.${Mo(r.me)}`,f=y=>!r.seesInFull||r.seesInFull()||u!==void 0&&new RegExp(`\\${u}(-[0-9a-z]+)?$`).test(y),h=y=>l.has(y)||n.has(y)||p.has(y),g,x=y=>{let b=new Set([...n.outEdges(y),...n.inEdges(y)]);for(let w of b)l.getNode(w.from),l.getNode(w.to),c.push({op:"remove-edge",edge:w});return b},m={graph:l,schema:n.schema,me:r.me,emit(y){c.push(y)},addNode(y){c.push({op:"add-node",node:y})},removeNode(y){let b=l.getNode(y)&&n.getNode(y);if(!b)throw new U(y,`Cannot remove missing node "${y}"`);x(y),c.push({op:"remove-node",node:b})},patchNode(y,b){let w=l.getNode(y)&&n.getNode(y);if(!w)throw new U(y,`Cannot patch missing node "${y}"`);let R={},v={};for(let[$,P]of Object.entries(b)){let E=w[$];JSON.stringify(E)===JSON.stringify(P)&&!r.keepUnchanged?.(P,$,w)||(R[$]=E,v[$]=P)}Object.keys(v).length!==0&&c.push({op:"patch-node",id:y,before:R,after:v})},archiveNode:y=>m.patchNode(y,{[gn]:!0}),unarchiveNode:y=>m.patchNode(y,{[gn]:void 0}),mergeNode(y,b){let w=l.getNode(b)&&n.getNode(b);if(!w)throw new U(b,`Cannot merge into missing node "${b}"`);if(y===b||Ve(w))throw new M(y===b?"Cannot merge a record into itself":"Cannot merge into an archived record");let R=new Set([...n.outEdges(b),...n.inEdges(b)].map(z));for(let v of x(y)){let $={...v,from:v.from===y?b:v.from,to:v.to===y?b:v.to};$.from!==$.to&&!R.has(z($))&&(R.add(z($)),c.push({op:"add-edge",edge:$}))}m.archiveNode(y),g=b},addEdge(y){c.push({op:"add-edge",edge:y})},removeEdge(y){c.push({op:"remove-edge",edge:y.id!==void 0&&n.linkById(y.id)||y})},setSingleSource(y,b,w){n.inEdges(b,y).some(R=>R.from===w)||c.push({op:"add-edge",edge:{kind:y,from:w,to:b}});for(let R of n.inEdges(b,y))l.getNode(R.from),R.from!==w&&c.push({op:"remove-edge",edge:R})},freshId(y,b){if(o!==void 0&&!p.has(o)){if(!f(o))throw new M(`"${e.name}" makes its own id here`,`Leave id out${u?`, or end it "${u}"`:""}.`);if(h(o))throw new M(`Id "${o}" is already taken`,`"${e.name}" was asked to make a node with that id, and the graph has one. Pick another, or leave id out and let the act mint one.`);return p.add(o),o}let w=r.hint;if(o===void 0&&!p.size&&hd(w)&&f(w)&&!h(w))return p.add(w),w;let R=b?`${b}:${ud(y)}`:ud(y),$=nf(R,{seen:P=>(r.seen?r.seen.has(P):n.has(P))||p.has(P),held:h,limited:r.seesInFull!==void 0&&!r.seesInFull(b),me:r.me});return p.add($),$}};if(e.apply(m,d),o!==void 0&&!p.has(o))throw new M(`"${e.name}" did not make a record with id "${o}": it names what it makes itself`);let k=r.check?.(c,e),A=new Set(c.flatMap($e)),S=new ot(r.seen??n),_=e.describe?.(d,S)??`${e.name}(${Object.entries(d).map(([y,b])=>`${y}=${JSON.stringify(b)}`).join(", ")})`;return{primitives:c,reads:[...new Set([...l.reads(),...S.reads()])],...e.describe?{described:[...S.reads(),...k??[]]}:{},writes:[...A],intent:_,...g!==void 0?{mergedInto:g}:{},...p.size>0?{firstMinted:p.values().next().value}:{}}}var gd=Symbol.for("@graview/core:amount"),zx=(n,e)=>(Object.defineProperty(j(n),gd,{value:e,enumerable:!0}),n);function zo(n,e=!0){let t=j(n);return t?.[gd]??(e&&t?.innerType?zo(t.innerType):void 0)}function md(n,e={}){let t=Number.isInteger(n),r={maximumFractionDigits:t?0:2,minimumFractionDigits:t?0:2};try{return me(n,e.locale,e.currency?{style:"currency",currency:e.currency,...r}:r)}catch{return me(n,e.locale,r)}}function yd(n,{format:e,unit:t,currency:r,locale:o}){let i=/^[A-Z]{3}$/.test(t??"");return e==="money"||!e&&i?md(n,{...o?{locale:o}:{},...(i?t:r)?{currency:i?t:r}:{}}):e==="percent"?me(n,o,{style:"percent",maximumFractionDigits:0}):me(n,o)+(t?` ${t}`:"")}var tf=Symbol.for("@graview/core:typed-field");function No(n){let e=j(n);return e?e[tf]??No(e.innerType):void 0}var rf=/^[("'“‘]*(?:(?:[a-z]{1,3}\.){2,}|(?:dr|mr|mrs|ms|mx|st|mt|vs|jr|sr|prof|no|fig|approx)\.)$/i;function of(n){for(let e of n.matchAll(/[.!?](?=\s|$)/g)){let t=n.slice(0,e.index+1),r=/\S+$/.exec(t)?.[0]??"";if(!(e[0]==="."&&rf.test(r))&&!(t.split(" ").length<3&&e.index+1<n.length))return t}}function bd(n,e=140){let t=n.replace(/^[#>\s]+|\*\*|`|\](\([^)\s]*\))?|\[/gm,"").replace(/\s+/g," ").trim(),r=of(t);return r&&r.length<=e?r:t.length<=e?t:`${(t.slice(0,e+1).replace(/\s+\S*$/,"")||t.slice(0,e)).replace(/[\s,;:.—-]+$/,"")}\u2026`}function sf(n){let e=n.fields.shape;return Object.keys(e).flatMap(t=>{let r=Ot(e[t])?qn(t):void 0;return r&&e[r]?[r]:[]})}var af=[["skip","Skip this one","Leave one day out of the series; the rest stay as they are.","Skip {} on "],["detach","Change just this one","Make one day of the series a record of its own, to change apart from the rest.","Change {} only on "],["split","Change from here","End the series the day before, and start it again from that day with what changes.","Change {} from "]];function vd(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=sf(o);if(i.length===0)continue;let s=o.kind,a=o.fields.shape,d=Object.keys(a).filter(c=>!(c in(o.fixed??{}))),l=c=>C(o,c);for(let[c,p,u,f]of af){let h=`${c}-${s}`;t.has(h)||r.push({name:h,derived:{kind:s,act:c},title:p,description:u,subject:{kinds:[s],arg:"id"},writes:i.map(pn),...c==="skip"?{}:{creates:[s]},input:ln({id:Te([s]),on:L().check(Vn(/^\d{4}-\d{2}-\d{2}$/,"a day, like 2026-10-21")),...i.length>1?{field:X(Us(i))}:{},...c==="skip"?{}:Object.fromEntries(d.map(g=>[g,X(a[g])]))}),describe:(g,x)=>f.replace("{}",l(x.getNode(String(g.id))??{id:g.id}))+Ae(String(g.on)),apply(g,x){let m=g.graph.getNode(String(x.id)),k=String(x.field??i[0]),A=m?.[k],S=m?.[pn(k)],_=String(x.on);if(typeof A!="string"||!hn(S))throw new oe(`${l(m??{id:x.id})} does not repeat`,"refused");let y=fn(A,S,{from:_,to:_})[0];if(!y)throw new oe(`${l(m)} does not fall on ${Ae(_)}`,"refused");let b=String(m.id),w=Object.fromEntries(d.filter(q=>x[q]!==void 0).map(q=>[q,x[q]])),R=pn(k),v=q=>{let Z=Object.fromEntries(Object.entries({...m,...q,...w}).filter(([F,Mn])=>Mn!=null&&F!=="id")),ce=g.freshId(l(Z));g.addNode({...Z,id:ce,kind:s});for(let F of Object.keys(o.edges??{}))for(let Mn of g.graph.out(b,F))g.addEdge({kind:F,from:ce,to:Mn.id})};if(c!=="split"){g.patchNode(b,{[R]:{...S,except:[...new Set([...S.except??[],_])].sort()}}),c==="detach"&&v({[k]:y,[R]:null});return}if(Object.keys(w).length===0)throw new oe(`Nothing to change: give ${l(m)} from ${Ae(_)} something new`,"invalid");if(_<=A.slice(0,10))return g.patchNode(b,w);let $=new Date(Date.parse(`${_}T00:00:00Z`)-864e5).toISOString().slice(0,10),P=S.count?fn(A,{...S,except:[]},{to:$}).length:0,{count:E,except:T,...K}=S,De=q=>T?.some(q)?{except:T.filter(q)}:{};g.patchNode(b,{[R]:{...K,until:$,...De(q=>q<_),...E?{count:P}:{}}}),v({[k]:y,[R]:{...K,...De(q=>q>=_),...E?{count:E-P}:{},continues:b}})}})}}return r}function xd(n,e){let t=new Set(e.map(d=>d.name)),r=e.filter(d=>!d.derived),o=new Set(r.flatMap(d=>d.connects??[])),i=new Set(r.flatMap(d=>d.severs??[])),s=[],a=(d,l)=>{let c=d.getNode(String(l));return c?C(n.tryDefinition(c.kind),c):String(l)};for(let d of n.definitions){let l=d.kind,c=Object.entries(d.edges??{}),p=u=>u.to==="*"?"record":u.to.map(f=>H(n.tryDefinition(f),f)).join(" or ");for(let[u,f]of c){let h=p(f),g=f.cardinality==="one",x=c.some(([_,y])=>_!==u&&p(y)===h),m=_=>V(_).toLowerCase(),k=Na(l,u,f,m),A={to:k&&"to"in k?k.to:h,from:H(d,l),one:g,also:k&&"also"in k?k.also:x&&!k?m(u):void 0},S=A.from;for(let _ of lo){let y=fo(_,l,u);if(t.has(y)||f.acts==="none"||(_==="connect"?o.has(u):i.has(u)||f.appendOnly))continue;let{title:b,fromTheOtherEnd:w}=za(_,A),R=f.description?`: ${f.description.replace(/\.$/,"")}`:"";s.push({name:y,derived:{kind:l,act:_,relation:u},title:b,fromTheOtherEnd:w,description:_==="connect"?`Link this ${S} to ${/^[aeiou]/i.test(h)?"an":"a"} ${h}${R}.${g?" It has one, so this replaces the one it has.":""}`:`Take away the link between this ${S} and ${/^[aeiou]/i.test(h)?"an":"a"} ${h}${R}. Undo puts it back.`,subject:{kinds:[l],arg:"id"},..._==="connect"?{connects:[u]}:{severs:[u],destructive:!0},idempotent:!0,input:ln({id:Te([l]),to:Te(f.to==="*"?"*":f.to)}),describe:(v,$)=>_==="disconnect"?`Unlink ${a($,v.id)} from ${a($,v.to)}`:g?`Set the ${h} of ${a($,v.id)} to ${a($,v.to)}`:`Link ${a($,v.id)} to ${a($,v.to)}`,apply(v,$){let P=String($.id),E=String($.to);for(let K of[P,E])if(!v.graph.getNode(K))throw new oe(`there is no record "${K}"`,"invalid");let T=v.graph.out(P,u).some(K=>K.id===E);if(_==="disconnect"){if(!T)throw new oe(`${a(v.graph,P)} is not linked to ${a(v.graph,E)}`,"invalid");v.removeEdge({kind:u,from:P,to:E});return}if(g)for(let K of v.graph.out(P,u))K.id!==E&&v.removeEdge({kind:u,from:P,to:K.id});T||v.addEdge({kind:u,from:P,to:E})}})}}}return s}function df(n){let e=new Set(n.declared),t=[...new Set([...(n.paged??[]).filter(o=>e.has(o)),...n.declared])],r=(n.naming??[]).filter(o=>e.has(o));return[...new Set([...r,...t.filter(n.must),...t])]}var Io=n=>`\xA7${n}\xA7`;function cf(n,e){if(n.label)try{let r={id:Io(e.length),kind:n.kind};e.forEach((s,a)=>r[s]=Io(a));let o=String(n.label(r)),i=e.map((s,a)=>[s,o.indexOf(Io(a))]).filter(([,s])=>s>=0);if(i.length>0)return i.sort((s,a)=>s[1]-a[1]).map(([s])=>s)}catch{}let t=["name","title","label"].find(r=>e.includes(r));return t?[t]:[]}var wd=new WeakMap;function Vt(n){let e=wd.get(n);if(e)return e;let t=n.fields.shape??{},r=Object.keys(t),o=n.display?.page,i=df({declared:r,paged:[...o?.fields??[],...(o?.groups??[]).flatMap(s=>s.fields)],must:s=>t[s]?.safeParse?.(void 0).success===!1&&!Object.hasOwn(n.defaults??{},s),naming:cf(n,r)});return wd.set(n,i),i}function uf(n,e){let t=e.subject?.kinds,r=e.creates?.[0]??e.derived?.kind??(t!==void 0&&t!=="*"&&t.length===1?t[0]:void 0);return r===void 0?void 0:n.tryDefinition(r)}function lf(n,e){let t=Object.keys(e.input?.shape??{}),r=n?uf(n,e):void 0;if(!r)return t;let o=Vt(r),i=d=>d!==e.subject?.arg&&o.includes(d),s=t.filter(i).sort((d,l)=>o.indexOf(d)-o.indexOf(l)),a=0;return t.map(d=>i(d)?s[a++]:d)}function To(n,e,t=r=>r.name){let r=o=>{let i=e.indexOf(t(o));return i<0?e.length:i};return[...n].sort((o,i)=>r(o)-r(i))}function jo(n){let e=n.fields.shape;return Object.keys(e).filter(t=>!(t in(n.fixed??{})))}function Do(n,e){let t=e.subject;return t?t.kinds==="*"?n.kinds:t.kinds:[]}function Fo(n,e){let t=n.subject;if(!t||!n.writes&&n.creates?.length)return[];let r=new Set(Object.keys(e.fields.shape));if(n.writes)return n.writes.filter(s=>r.has(s));let o=n.input.shape??{},i=new Set(rt(n.input).map(s=>s.name));return Object.keys(o).filter(s=>s!==t.arg&&r.has(s)&&!i.has(s))}function Lo(n,e){let t=new Map,r=(o,i,s)=>{let a=t.get(o)??new Map;a.get(i)?.includes(s)||(a.set(i,[...a.get(i)??[],s]),t.set(o,a))};for(let o of e){for(let i of Do(n,o)){let s=n.tryDefinition(i);if(s)for(let a of Fo(o,s))r(i,a,o.name)}for(let[i,s]of Object.entries(o.writesOther??{})){let a=n.tryDefinition(i)?.fields.shape;if(a)for(let d of s)d in a&&r(i,d,o.name)}}return t}function kd(n,e,t){let r=n.tryDefinition(t);if(!r)return[];let o=Lo(n,e).get(t);return jo(r).filter(i=>!o?.has(i))}var Sd=n=>`edit-${n}`;function $d(n,e,t){let r=n.tryDefinition(t);if(!r)return[];let o=new Set;for(let i of e)i.derived||((i.creates??[]).includes(t)&&o.add(i.name),Do(n,i).includes(t)&&Fo(i,r).length>0&&o.add(i.name));return[...o]}function Rd(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=o.kind,s=Sd(i);if(t.has(s))continue;let a=To(kd(n,e,i),Vt(o),f=>f);if(a.length===0)continue;let d=Lo(n,e).get(i),l=Object.fromEntries(jo(o).flatMap(f=>d?.get(f)?.length?[[f,d.get(f)]]:[])),c=o.fields.shape,p=H(o,i),u=a.map(f=>mt(o,f).toLowerCase());r.push({name:s,derived:{kind:i,act:"edit"},idempotent:!0,title:`Change the ${p}`,description:`Change what was set when this ${p} was made: ${u.join(", ")}.`,subject:{kinds:[i],arg:"id"},writes:a,...Object.keys(l).length>0?{writtenBy:l}:{},input:ln({id:Te([i]),...Object.fromEntries(a.map(f=>[f,X(hf(c[f]))]))}),describe:(f,h)=>ff(o,c,a,f,h),apply(f,h){let g={};for(let x of a){let m=h[x];m!==void 0&&(g[x]=m)}if(Object.keys(g).length===0)throw new oe(`Nothing to change \u2014 give at least one of ${u.join(", ")} a value.`,"invalid");f.patchNode(h.id,g)}})}return r}function ff(n,e,t,r,o){let i=o.getNode(r.id),s=i?C(n,i):"a record",a=t.filter(d=>r[d]!==void 0).map((d,l)=>{let c=r[d],p=qn(d),u=p!==void 0&&p in e,f=mt(n,u?p:d);return`the ${f===f.toUpperCase()?f:fi(f)}${l===0?` of ${s}`:""} to ${u?c?`repeat ${pf(c)}`:"stop repeating":Ad(n,e[d],d,c)}`});return a.length===0?`Changed nothing on ${s}`:`Changed ${a.length>1?`${a.slice(0,-1).join(", ")} and ${a.at(-1)}`:a[0]}`}var pf=n=>`every ${(n.interval??1)>1?`${n.interval} ${n.every}s`:n.every}`;function Ad(n,e,t,r){if(r===null||r===""||Array.isArray(r)&&r.length===0)return"nothing";let o=n.display?.format?.[t];try{if(o)return String(o(r))}catch{}if(Bn(r).length>0)return Bn(r).map(i=>i.name).join(", ");if(Un(e))return Array.isArray(r)&&r.length>1?`${r.length} linked records`:"a linked record";if(Array.isArray(r))return r.map(i=>Ad(n,e,t,i)).join(", ");if(typeof r=="boolean")return r?"yes":"no";if(typeof r=="number"){let i=zo(e);return i?yd(r,i):No(e)==="duration"?`${r>=60?`${Math.floor(r/60)} h `:""}${r%60||r<60?`${r%60} min`:""}`.trim():String(r)}if(typeof r!="string")return"a new value";if(sn.test(r))return Ae(r);if(ft.test(r))return lr(r);for(let i=j(e);i;i=j(i.innerType))if(i.type==="enum")return V(r);return`\u201C${bd(r,60)}\u201D`}function hf(n){let e=n;for(let t=0;t<4;t++){let r=e._zod?.def;if((r?.type==="default"||r?.type==="prefault")&&r.innerType)e=r.innerType;else break}return e}function _d(n,e){return n.filter(t=>!t.derived&&(t.creates??[]).includes(e)).map(t=>t.name)}function Bt(n,e,t){if(!t.derived)return;let r=t.derived.act;return r==="edit"||r==="skip"||r==="detach"||r==="split"||r==="connect"||r==="disconnect"?$d(n,e,t.derived.kind):_d(e,t.derived.kind)}function gf(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=o.kind,s=H(o,i),a=(l,c)=>{let p=l.getNode(String(c));return p?C(o,p):String(c)},d=Te([i]);for(let[l,c,p,u]of[["remove","Remove",`Remove the ${s}`,`Take this ${s} out of the graph, with every tie it has. Undo puts it back.`],["archive","Archive",`Archive the ${s}`,`Set this ${s} aside, with its ties and history kept.`],["unarchive","Bring back","Bring it back",`Bring this archived ${s} back.`],["merge","Merge",`Merge into another ${s}`,`The other takes this ${s}'s ties, and this one is archived.`],["leave-alone","Leave alone","Leave this one alone",`Nothing automated changes this ${s}: tidying passes it by until you allow it again.`],["allow-tidying","Allow tidying of","Allow tidying again",`Let tidying change this ${s} again.`]]){let f=`${l}-${i}`,h=l==="leave-alone"||l==="allow-tidying";t.has(f)||!h&&l!=="remove"&&o.archives===!1||h&&o.tidying==="never"||r.push({name:f,derived:{kind:i,act:l},title:p,description:u,subject:{kinds:[i],arg:"id"},...l==="remove"?{destructive:!0}:{},idempotent:!0,input:Pe(l==="merge"?{id:d,into:d}:{id:d}),describe:(g,x)=>{let m=l==="remove"&&x.getNode(String(g.id)),k=m?new Set(Object.values(m).flatMap(A=>Bn(A).map(S=>S.href))).size:0;return`${c} ${a(x,g.id)}${l==="merge"?` into ${a(x,g.into)}`:""}${k?` and its ${k} file${k>1?"s":""}`:""}`},apply:h?(g,x)=>g.patchNode(String(x.id),{[Yn]:l==="leave-alone"?!0:void 0}):(g,x)=>g[`${l}Node`](x.id,x.into)})}}return r}function Zo(n,e){return[...Rd(n,e),...gf(n,e),...vd(n,e),...xd(n,e)]}var mf=n=>({$made:n}),Ut=n=>typeof n=="object"&&n!==null&&Object.keys(n).join()==="$made"&&Number.isInteger(n.$made)&&n.$made>=0,yf=(n,e)=>Object.fromEntries(Object.entries(n.args??{}).map(([t,r])=>[t,Array.isArray(r)?r.map(e):e(r)])),Od=n=>Object.values(n.args??{}).some(e=>Ut(e)||Array.isArray(e)&&e.some(Ut)),Pd=(n,e,t)=>({...n,args:yf(n,r=>{if(!Ut(r))return r;let o=r.$made<t?e[r.$made]:void 0;if(o===void 0)throw new Error(`\u201C${n.name}\u201D names the record call ${r.$made+1} makes, and no call before it made that record.`);return o})});var bf=500,vf=120,xf=50,Ed=4e3,wf=["model","suggestion","interaction","actor","run"],Md=n=>typeof n=="string"&&n.length>0&&n.length<=vf,kf=n=>{let e=JSON.stringify(n);return e===void 0?void 0:JSON.parse(e)};function it(n){if(n===void 0)return;let e=n&&typeof n=="object"&&!Array.isArray(n)?n:{},t=typeof e.basis=="string"?e.basis.trim():"",r={basis:t},o=t!==""&&t.length<=bf;for(let i of Object.keys(e)){let s=e[i];i==="basis"||s===void 0||(i==="model"&&typeof s=="string"&&(s=s.trim()),i==="confidence"?o&&=typeof s=="number"&&s>=0&&s<=1:wf.includes(i)?o&&=Md(s):i==="evidence"?o&&=Array.isArray(s)&&s.length<=xf&&s.every(Md):o&&=i!=="__proto__"&&i!=="constructor"&&i!=="prototype"&&(s=kf(s))!==void 0,o&&(r[i]=s))}if(!o)throw new M("A lineage is { basis: 1 to 500 characters, confidence?: 0 to 1, model?, suggestion?, interaction?, actor?, run?: 1 to 120 characters, evidence?: up to 50 ids }");if(JSON.stringify(r).length>Ed)throw new M(`A lineage is at most ${Ed} characters written out.`);return r}var _n="keep-link";function zd(n){let e=(t,r)=>{let o=t.getNode(r);return o?C(n.tryDefinition(o.kind),o):r};return{name:_n,title:"Keep this link",input:Pe({kind:L(),from:L(),to:L()}),describe:(t,r)=>`Keep the link from ${e(r,t.from)} to ${e(r,t.to)}`,apply(t,r){let{kind:o,from:i,to:s}=r;if(!t.graph.getNode(i)||!t.graph.getNode(s)){let d=z({kind:o,from:i,to:s});throw new U(d,`Cannot remove missing edge ${d}`)}let a=t.graph.edgesOfKind(o,{archived:"all"}).find(d=>d.from===i&&d.to===s)??{kind:o,from:i,to:s};t.removeEdge(a),t.addEdge(a)}}}var Nd=(n,e)=>[...n].filter(t=>!t.derived&&t.name!==_n&&typeof e=="string"&&(t.connects?.includes(e)||t.severs?.includes(e))).map(t=>t.name);var Id=["kind-unknown","node-shape","edge-dangling","edge-disallowed","rule-error","rule-budget"];function Td(n,e){let t=zt(n,e);return t&&[...t.fields].filter(Boolean)}function Sf(n,e,t){return n.tryDefinition(e)?.fields?.shape?.[t]}function Wt(n,e){try{return C(n.tryDefinition(e.kind),e)}catch{return typeof e.label=="string"?e.label:"A record"}}var $f=n=>`${n.kind}:${n.from}->${n.to}`,qt=(n,e)=>n<e?-1:n>e?1:0;function jd(n,e,t={}){let{schema:r}=n,o=[],i=new Map;for(let u of e.nodes)i.has(u.id)||i.set(u.id,u);let s=u=>e.edges.filter(f=>f.from===u||f.to===u),a=u=>({action:"drop",primitives:[...s(u.id).filter(f=>i.has(f.from)&&i.has(f.to)).map(f=>({op:"remove-edge",edge:f})),{op:"remove-node",node:u}]}),d=new Set;for(let u of[...i.values()].sort((f,h)=>qt(f.id,h.id))){if(!r.tryDefinition(u.kind)){d.add(u.id),o.push({code:"kind-unknown",id:u.id,message:`${Wt(r,u)} is a kind of record this app no longer has`,repair:a(u)});continue}let f=Td(r,u);if(f===void 0)continue;let h=Wt(r,u),g=new Map,x=f.length>0;for(let m of f){if(m==="id"||m==="kind"){x=!1;continue}let k=Sf(r,u.kind,m),A=k?k.safeParse(void 0):{success:!0,data:void 0},S=r.tryDefinition(u.kind)?.defaults;!A.success&&k&&S&&Object.hasOwn(S,m)&&(A=k.safeParse(S[m])),A.success?A.data===void 0?g.set(m,{action:"clear",value:ue}):g.set(m,{action:"coerce",value:A.data}):x=!1}if(x){let m={...u};for(let[k,A]of g)A.value===ue?delete m[k]:m[k]=A.value;Td(r,m)!==void 0&&(x=!1)}if(f.length===0){o.push({code:"node-shape",id:u.id,message:`${h} does not fit what ${u.kind} declares`,repair:a(u)});continue}for(let m of f){let k=g.get(m),A=x&&k?{action:k.action,primitives:[{op:"patch-node",id:u.id,before:{[m]:u[m]===void 0?ue:u[m]},after:{[m]:k.value}}]}:a(u);o.push({code:"node-shape",id:u.id,detail:m,message:`${h}: ${V(m)} does not fit what ${u.kind} declares`,repair:A})}}let l=new Set,c=[];for(let u of[...e.edges].sort((f,h)=>qt(z(f),z(h)))){if(l.has(z(u)))continue;l.add(z(u));let f=$f(u),h=i.get(u.from),g=i.get(u.to);if(!h||!g){o.push({code:"edge-dangling",id:f,message:"A link points at a record that is not there",repair:{action:"drop",primitives:[{op:"remove-edge",edge:u}]}});continue}c.push(u),!(d.has(h.id)||d.has(g.id))&&(r.edgeAllowed(u.kind,h.kind,g.kind)||o.push({code:"edge-disallowed",id:f,message:`${Wt(r,h)} \u2192 ${Wt(r,g)}: this app does not allow that link between them`,repair:{action:"drop",primitives:[{op:"remove-edge",edge:u}]}}))}let p=n.invariants??[];if(p.length>0){let u=Q.from(r,{nodes:[...i.values()],edges:c},{validate:!1}),f=new Set,h;try{h=bn(u,p,t.invariantOptions??{})}catch{h=[{invariant:"rules",status:"could-not-judge",label:"The rules",message:"The rules could not be judged",nodeIds:[],repairs:[]}]}for(let g of h){let x=g.status==="could-not-judge"?"rule-error":g.status==="over-budget"?"rule-budget":void 0;if(!x)continue;let m=g.subjectId??g.invariant,k=`${x}|${m}|${g.invariant}`;f.has(k)||(f.add(k),o.push({code:x,id:m,detail:g.invariant,message:g.message}))}}return o.sort((u,f)=>Id.indexOf(u.code)-Id.indexOf(f.code)||qt(u.id,f.id)||qt(u.detail??"",f.detail??""))}var st=()=>globalThis.__graviewWatch;function Dd(n){st()?.store?.(n)}function Ht(n){n!==void 0&&st()?.learn?.({ids:[n],words:[]})}function Fd(n,e){st()?.refused?.({...n,...e===void 0?{}:{author:e}})}function Co(n,e){let t=st();if(!t?.refusedInput)return;let r=n.issues.map(o=>`${o.path.map(String).join(".")}: ${o.message}`).join("; ");t.refusedInput({mutation:n.mutation,message:r,...e===void 0?{}:{author:e}})}function Rf(n,e){n instanceof fe&&Co(n,e)}function Af(n,e,t){st()?.seat?.(n,e,t)}function Ko(n,e){if(typeof n=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(n))return n;let t=new Date(n).getTime();if(Number.isNaN(t))throw new Error(`Not a day: ${String(n)}`);return ee(e,t)}var Go=15*6e4;function Ld(n=Date.now(),e){let t=new Date(n).getTime(),r=pt(e),o=ee(r,t),i=new Date(Date.parse(`${o}T00:00:00Z`));if(i.setUTCDate(i.getUTCDate()+1),!r)return i.getTime()-t;let s=ci(i.toISOString().slice(0,10),0,r);for(;ee(r,s)===o;)s+=Go;for(;ee(r,s-Go)!==o;)s-=Go;return s-t}function _f(n,e){let t,r=()=>{t=setTimeout(()=>{let o=n.tick(new Date);r(),e?.(o)},Ld(Date.now(),n.timeZone)+1e3),t.unref?.()};return r(),()=>clearTimeout(t)}var Yt=class extends M{constructor(e){super(`This is the app as it stood${e.at?` at ${e.at}`:" at the start"}: the past is read, never changed`),this.name="PastError"}},Vo="preview",G=(n,e)=>e===void 0?{}:{[n]:e},Je={kind:"human"},Zd={kind:"system"},Kd={kind:"system",id:"modules",name:"Modules"},Cd=n=>n.mutation===null&&n.undoes===void 0;function Bo(n,e){return`${n.invariant}|${n.subjectId??""}|${n.line||e?.has(n.invariant)?n.label:n.message}`}var Of=new Set(["remove","archive","unarchive","merge"]),Pf={has:()=>!0},Vd=n=>new Set(n.filter(e=>e.shape).map(e=>e.name));function Bd(n,e,t){let r=Vd(n),o=p=>Bo(p,r),i=new Set(e.map(o)),s=new Set(t.map(o)),a=t.filter(p=>!i.has(o(p))),d=e.filter(p=>!s.has(o(p)));if(a.length===0||d.length===0)return{introduces:a,resolves:d};let l=p=>p.subjectId&&Bo(p,Pf),c=d.map(l);return{introduces:a.filter(p=>{let u=l(p)?c.indexOf(l(p)):-1;return u<0||(c[u]=null,!1)}),resolves:d.filter((p,u)=>c[u]!==null)}}var On=class extends Error{constructor(t,r){super(`Op "${t.id}" (${t.intent}) could not be applied: ${r instanceof Error?r.message:String(r)}`,{cause:r});this.op=t;this.name="ReceiveError"}},Jt=class extends M{constructor(t,r){let o=po(t,r);super(`Unknown mutation "${t}"${o?` \u2014 did you mean "${o}"?`:""}`,`Registered: ${r.join(", ")||"(none)"}`);this.mutation=t;this.name="UnknownMutationError",this.nearest=o}nearest},Gd=n=>new Map(n.map(e=>[e.id,e.batch]));function Ef(){let n=globalThis.crypto,e=new Uint8Array(6);if(n?.getRandomValues)n.getRandomValues(e);else for(let t=0;t<e.length;t++)e[t]=Math.floor(Math.random()*256);return[...e].map(t=>t.toString(36).padStart(2,"0")).join("")}var Uo=class n{schema;graph;log;mutations=new Map;keeper;typer;invariants;invariantOptions;policy;publishing;intelligence;may=new Map;by;declaredModules;startingModules;projected;nextId;now;validate;mintBatch;batchTag;counter=0;opCount=0;quiet=0;rehearsing=!1;suggesting=!1;ticked;timeZone;past;pastEvery;listeners=new Set;constructor(e){this.pastEvery=Math.max(1,e.pastEvery??64),this.past=e.past,this.schema=e.schema,this.invariants=e.invariants??[],this.invariantOptions=e.invariantOptions??{},this.timeZone=e.timeZone,this.timeZone&&(this.ticked={day:ee(this.timeZone),on:ee(this.timeZone)}),this.policy=e.policy,this.publishing=e.publishing,this.by=e.principal??Je,this.intelligence=e.intelligence??[];for(let i of e.intelligence??[])i.may&&this.may.set(i.name,new Set(i.may));this.declaredModules=e.modules,this.startingModules=e.enabledModules,this.nextId=e.ids??(()=>`op${++this.opCount}`),this.now=e.now??(()=>new Date().toISOString()),this.validate=e.validate??!0;let t=Ef();this.batchTag=e.batchIds?void 0:t,this.mintBatch=e.batchIds??(i=>`${i}:${t}:${++this.counter}`);for(let i of e.past?[]:e.mutations??[]){if(this.mutations.has(i.name))throw new M(`Duplicate mutation "${i.name}"`);this.mutations.set(i.name,i)}for(let i of e.past?[]:Zo(e.schema,e.mutations??[]))this.mutations.set(i.name,i);!e.past&&!this.mutations.has(_n)&&(this.keeper=zd(e.schema),this.mutations.set(_n,this.keeper));let r=G("horizon",e.horizon),o={validate:this.validate};if(e.log){this.log=wn.from(e.log,e.epochs,r);let i=this.log.lastEpoch();this.graph=e.snapshot?Q.from(e.schema,e.snapshot,o):this.log.fold(e.schema,{...o,...i?{from:i}:{}})}else this.log=wn.from([],e.epochs??(e.snapshot?[{seq:e.horizon??0,base:e.snapshot}]:[]),r),this.graph=Q.from(e.schema,e.snapshot??{nodes:[],edges:[]},o);e.past||(this.countPastTheLog(),Dd(this))}stillNow(){if(this.past)throw new Yt(this.past)}countPastTheLog(){this.countPast(this.log.all())}countPast(e){let t=r=>{let o=/(\d+)$/.exec(r);return o?Number(o[1]):0};for(let r of e)this.counter=Math.max(this.counter,t(r.batch)),this.opCount=Math.max(this.opCount,t(r.id));this.log.horizon>0&&(this.opCount=Math.max(this.opCount,this.log.length))}get servedSeq(){return this.log.length}get publishedSeq(){return ae.seq?.(this)}get publisher(){return ae.act?.(this,this.mutations)}get modules(){let e=this.log.all(),t=e.at(-1)?.id,r=this.projected;if(r&&r.length===e.length&&r.last===t)return r.projection;let o,i=0;r&&r.length<=e.length&&(r.length===0||e[r.length-1]?.id===r.last)&&(o=r.said,i=r.length);for(let a=e.length-1;a>=i;a--){let d=e[a].enabledModules;if(d!==void 0){o=d;break}}let s=r&&o===r.said?r.projection:Ao(this.declaredModules,o??this.startingModules);return this.projected={projection:s,length:e.length,last:t,said:o},s}setEnabledModules(e,t={}){this.stillNow();let r=this.modules.enabled,o=Ao(this.declaredModules,e).enabled,i=[...r].filter(c=>!o.has(c)),s=[...o].filter(c=>!r.has(c));if(i.length===0&&s.length===0)return;let a=c=>c.map(p=>{let u=this.declaredModules?.[p]?.kinds??[];return u.length>0?u.map(f=>se(this.schema,f)).join(", "):p}).join(", "),d=[i.length>0?`Turn off ${a(i)}`:"",s.length>0?`turn on ${a(s)}`:""].filter(Boolean).join("; "),l={id:this.nextId(),seq:this.log.length,batch:t.batch??this.mintBatch("batch"),author:Kd,intent:Fn(d),mutation:null,primitives:[],reads:[],writes:[],at:this.now(),...G("via",t.via),enabledModules:[...o].sort()};return this.log.append(l),this.notify(Jn,[l]),l}mutation(e){let t=this.mutations.get(this.spelled(e))??(e===Lt?this.publisher:void 0);if(!t)throw new Jt(e,[...this.mutations.keys()]);if(this.mutationDisabled(t))throw new M(`Mutation "${e}" belongs to a module this workspace has turned off`,`Enabled modules: ${[...this.modules.enabled].join(", ")||"(none)"}`);return t}spelled(e){return e===Tt&&!this.typer&&re.typeText&&!this.past&&!this.mutations.has(e)&&this.mutations.set(e,this.typer=re.typeText(this)),this.mutations.has(e)?e:Dt(e,this.mutations.keys())??e}spelledCall(e){let t=this.spelled(e.name);return t===e.name?e:{...e,name:t}}mutationDisabled(e){return this.modules.disabledMutations.has(e.name)?!0:e.derived!==void 0&&this.modules.disabledKinds.has(e.derived.kind)}allMutations(){return[...this.mutations.values(),...this.publisher?[this.publisher]:[]].filter(e=>e!==this.keeper&&e!==this.typer&&!this.mutationDisabled(e))}viaOf(e,t,r){if(e!==void 0&&e===this.keeper){let o=Nd(this.mutations.values(),t?.args.kind);if(o.length>0)return o;let i=[...this.mutations.values()];return[...new Set(i.filter(s=>s.derived?.relation===t?.args.kind).flatMap(s=>Bt(this.schema,i,s)??[]))]}if(e!==void 0&&e===this.typer)return re.via(this.schema,[...this.mutations.values()],this.subjectKindOf(t,r),t?.args.field);if(e?.derived)return Bt(this.schema,[...this.mutations.values()],e)}moved(e,t){return Bd(this.allInvariants(),e,t)}allInvariants(){return this.invariants.filter(e=>this.invariantEnabled(e))}invariantEnabled(e){if(this.modules.disabledInvariants.has(e.name))return!1;if(e.scope!=="graph"){let t=e.scope.kind;if(this.modules.disabledKinds.has(t))return!1}return!0}permits(e,t=Je){if(e=this.spelledCall(e),this.past)return{ok:!1,refusal:{mutation:e.name,wouldNeed:[],message:"Nothing changes while you look back."}};let r=this.refusesAgent(e,t)??this.namesTurnedOff(e,t);if(r)return{ok:!1,refusal:r};let o=this.mutations.get(e.name)??(e.name===Lt?this.publisher:void 0);if(o&&o===this.publisher)return ae.verdict(this,t);let i=o?.subject&&e.args[o.subject.arg];return Ne(this.policy,t,e.name,this.subjectKindOf(e,t),this.viaOf(o,e,t),typeof i=="string"?i:void 0,this.words,()=>{let s=D(t).id,a=this.namedIn(e,!1);try{for(let d of An(this.graph,o,e.args,this.sighted(t)).primitives)"edge"in d&&d.edge.from!==s&&d.edge.to!==s&&a.push(d.edge.to)}catch{}return a},o!==void 0&&(o.derived!==void 0||o===this.typer)?()=>pe(this.log).creatorOf(i):void 0,o?.derived!==void 0&&Of.has(o.derived.act))}namedIn(e,t=!0){let r=this.mutations.get(e.name);if(!r)return[];let o=r.subject?.arg;return[...t&&o?[e.args[o]]:[],...rt(r.input).flatMap(s=>s.name===o?[]:[e.args[s.name]])].flat().filter(s=>typeof s=="string")}refuse(e,t,r=!this.rehearsing){throw r&&Fd(e,t),new Ue(e)}get words(){return{act:e=>this.mutations.get(e)?.title,noun:e=>H(this.schema.tryDefinition(e),e)}}refusesAgent(e,t){if(t.kind!=="agent"||t.id===void 0)return;let r=this.may.get(t.id);if(!r||r.has(e.name))return;let o=s=>`\u201C${this.mutations.get(s)?.title??s}\u201D`,i=[...r].map(o);return{mutation:e.name,message:`${t.id} may not ${o(e.name)} here: it was declared able to ${i.length===0?"do nothing else":i.join(", ")}.`,wouldNeed:[]}}namesTurnedOff(e,t=Zd){let r=this.modules.disabledKinds;if(r.size===0||!W(t))return;let o=this.mutations.get(e.name);if(!(!o||!this.namedIn(e).some(i=>r.has(this.graph.getNode(i)?.kind))))return{mutation:e.name,message:`\u201C${o.title??e.name}\u201D names a record of a module this workspace has turned off.`,wouldNeed:[]}}sighted(e){let t={me:e&&D(e).id};if(e===void 0||!Ye(this,e))return t;let r=Sn(this,e);return{...t,seen:$n(this,e).graph,keepUnchanged:o=>I(o,r),seesInFull:Wa(this,e)}}collaborative(e,t){return re.collaborative?.(this.schema,this.graph.getNode(e)?.kind,t)??!1}asSplices(e,t){return re.asSplices?re.asSplices(this,e,t):e}missingFor(e,t=Je){e=this.spelledCall(e);let r=this.mutations.get(e.name),o=new Set(this.namedIn(e));if(!r||o.size===0)return;let i=$n(this,t).graph;for(let s of o)if(!i.has(s))return new U(s,`\u201C${r.title??e.name}\u201D names a record that is not there.`)}mayAdminister(e,t=Je){let r=this.modules.administered.get(e);return r?(r.mutations??[]).some(o=>{let i=this.mutations.get(o);return!!i&&so(i).some(s=>Ne(this.policy,t,o,s,this.viaOf(i)).ok)}):!1}seenBy(e,t){return $n(this,e,t)}sees(e,t){return this.graph.has(t)&&Sn(this,e)(t)}labels;resolveRef(e,t,r=Je){let o=(this.policy?.sees?.length??0)>0,i=u=>!o||this.sees(r,u),s=this.graph.getNode(t);if(this.labels??=new Gt(this.graph),s&&i(t))return{ok:!0,id:t,label:this.labels.labelOf(t)??t,by:"id"};let a=this.labels.lookup(e.kinds,t),d=u=>{let f=u.filter(h=>!this.graph.isArchived(h));return f.length?f:u},l=d(a.exact.filter(i)),c=l.length>0,p=(c?l:d(a.prefix.filter(i))).map(u=>({id:u,kind:this.graph.getNode(u).kind,label:this.labels.labelOf(u)??u})).sort((u,f)=>u.label<f.label?-1:u.label>f.label?1:u.id<f.id?-1:1);return p.length===1?{ok:!0,id:p[0].id,label:p[0].label,by:c?"label":"prefix"}:rd(this.schema,e,t,p)}kindsKeptFrom(e=Je){let t=new Set;for(let[o,i]of this.modules.administered)if(!this.mayAdminister(o,e))for(let s of i.kinds??[])t.add(s);let r=this.policy?.sees??[];if(r.length>0&&!W(e)){let o=new Set(this.permittedMutations(e).flatMap(s=>s.creates??[])),i=Ie(this);for(let s of this.schema.kinds)!r.some(d=>d.kinds.includes(s)&&ze(d,e)&&(!d.own&&!d.via||e.id!==void 0)&&(i||!tt(d)))&&!o.has(s)&&t.add(s)}return t}permittedMutations(e=Je){let t=this.allMutations(),r=io(this.policy,e,t.filter(s=>!s.derived&&s!==this.publisher)),o=this.publisher&&ae.verdict(this,e).ok?[this.publisher]:[],i=t.filter(s=>s.derived!==void 0&&Ne(this.policy,e,s.name,s.derived.kind,this.viaOf(s),D(e).id).ok);return[...r,...o,...i]}subjectKindOf(e,t=Zd){let o=this.mutations.get(e.name)?.subject;if(!o)return;let i=e.args[o.arg];if(typeof i!="string")return o.kinds!=="*"&&o.kinds.length===1?o.kinds[0]:void 0;if(!(!W(t)&&!Sn(this,t)(i)))return this.graph.getNode(i)?.kind}today(){return this.pinned()??(this.ticked&&this.ticked.on===ee(this.timeZone)?this.ticked.day:void 0)??(this.timeZone?ee(this.timeZone):void 0)}pinned(){let e=this.invariantOptions.context,t=this.invariantOptions.today??e?.today;return typeof t=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(t)?t:void 0}judging(e){let t=this.today(),r=ra(this.graph),o=e??this.invariantOptions.context,i=r&&!(o&&"linked"in o)?{...o,linked:r}:e,s=i??o,a=this.timeZone&&t!==void 0&&e===void 0&&!(s&&"today"in s)?{...s,today:t}:i;return{...this.invariantOptions,...a===void 0?{}:{context:a},...t===void 0?{}:{today:t}}}tick(e=new Date){let t=this.pinned();if(t!==void 0)return{day:t,was:t,appeared:[],cleared:[]};let r=Ko(e,this.timeZone),o=ee(this.timeZone);this.ticked&&(this.ticked={day:this.ticked.day,on:o});let i=this.today(),s=this.violations();this.ticked={day:r,on:o};let a=this.moved(s,this.violations());if(r!==i&&!this.rehearsing&&this.quiet===0)for(let d of this.listeners)d(Jn,[]);return{day:r,...i===void 0?{}:{was:i},appeared:a.introduces,cleared:a.resolves}}reread(){if(!(this.rehearsing||this.quiet>0))for(let e of this.listeners)e(Jn,[])}violations(e,t=this.graph){return bn(t,this.allInvariants(),this.judging(e)).map(r=>this.asking(r))}required=new Map;asking(e){if(!e.repairs.some(o=>o.missing===void 0))return e;let t=!1,r=e.repairs.map(o=>{if(o.missing!==void 0)return o;let i=this.requiredOf(o.mutation).filter(s=>o.args?.[s]===void 0);return i.length===0?o:(t=!0,{...o,missing:i})});return t?{...e,repairs:r}:e}requiredOf(e){let t=this.required.get(e);if(t)return t;let r=this.mutations.get(e)?.input?.shape??{},o=Object.entries(r).filter(([,i])=>typeof i?.safeParse=="function"&&!i.safeParse(void 0).success).map(([i])=>i);return this.required.set(e,o),o}wouldChange(e,t){try{return An(this.graph,this.mutation(e.name),e.args,this.sighted(t)).primitives.length>0}catch{return!0}}preview(e,t,r={}){e=this.spelledCall(e);let o=this.mutation(e.name),i=An(this.graph,o,e.args,this.sighted(r.author));return this.previewPrimitives(this.asSplices(i.primitives),{reads:i.reads,writes:i.writes,intent:i.intent,context:t})}previewAll(e,t={}){let{context:r,...o}=t;return{...this.rehearsal().applying(e,o,r),kept:!1}}rehearsal(){let e=Object.assign(Object.create(n.prototype),this),t=0;Object.assign(e,{graph:Q.from(this.schema,this.graph.snapshot(),{validate:this.validate}),log:wn.from(this.log.all(),this.log.epochs(),{horizon:this.log.horizon}),listeners:new Set,labels:void 0,nextId:()=>`${Vo}:${++t}`,mintBatch:()=>Vo,rehearsing:!0});let r=this.typer&&re.typeText(e);return Object.assign(e,{typer:r,mutations:r?new Map(this.mutations).set(Tt,r):new Map(this.mutations)}),e}previewPrimitives(e,t){let r=this.violations(t.context),o=Q.from(this.schema,this.graph.snapshot()),i=o.applyPrimitives(e,{restoring:t.restoring===!0}),s=bn(o,this.allInvariants(),this.judging(t.context));return{diff:i,primitives:e,reads:t.reads,writes:t.writes,intent:t.intent,...this.moved(r,s),violationsAfter:s}}apply(e,t={}){return this.applyAll([e],t)}applyAll(e,t={}){return this.applying(e,t)}applying(e,t,r){let o=e.map(v=>this.spelledCall(v));this.stillNow();let i=t.batch??this.mintBatch("batch"),s=t.author??this.by,a=it(t.lineage),d=[],l=[],c=new Set,p=new Set,u=[],f=this.violations(r),h=this.graph.snapshot(),g=this.log.length,x=v=>{let $=this.policy||this.publisher&&v.name===Lt?this.permits(v,s):void 0;$&&!$.ok&&this.refuse($.refusal,s.id)},m=v=>{let $=this.refusesAgent(v,s)??this.namesTurnedOff(v,s);$&&this.refuse($,s.id)},k=o.map(Od);o.forEach((v,$)=>k[$]||x(v)),o.forEach((v,$)=>k[$]||m(v));let A=go(s);A&&this.refuseDeclined(o,s),this.rehearsing||Ht(s.id);let S=[],_=[],y=new Map,b=v=>typeof v=="string"?y.get(v)??v:Array.isArray(v)?v.map(b):v;try{for(let[v,$]of o.entries()){let{mintedHint:P,...E}=$,T=y.size?{...E,args:Object.fromEntries(Object.entries(E.args).map(([F,Mn])=>[F,b(Mn)]))}:E,K=k[v]?Pd(T,S,v):T;k[v]&&(x(K),m(K));let De=this.mutation(K.name);if(De===this.publisher){let F=ae.op(this,{id:this.nextId(),at:this.now()},K,i,s,t);d.push(F),u.push(F.intent);continue}let q=this.missingFor(K,s);if(q)throw q;let Z;try{Z=An(this.graph,De,K.args,{...this.sighted(s),hint:P})}catch(F){throw F instanceof fe&&!this.rehearsing&&Co(F,s.id),F}if(P!==void 0&&Z.firstMinted!==void 0&&Z.firstMinted!==P&&y.set(P,Z.firstMinted),A){let F=Fa(this.schema,this.graph,Z.primitives,this.authorName(s),{declaration:!this.suggesting});F&&this.refuse({mutation:K.name,message:F,wouldNeed:[]},s.id)}if(Z.primitives.length===0)continue;_[v]=Z.firstMinted,S[v]=Z.primitives.find(F=>F.op==="add-node")?.node.id;let ce={id:this.nextId(),seq:this.log.length,batch:i,author:s,intent:De.describe!==void 0?Z.intent:t.intent??Z.intent,...G("batchIntent",t.intent),mutation:K,primitives:this.asSplices(Z.primitives,t.base).map(zn),reads:Z.reads,writes:Z.writes,...De.describe!==void 0&&Z.described&&Z.described.length>0?{described:Z.described}:{},...G("mergedInto",Z.mergedInto),at:this.now(),...G("via",t.via),...G("lineage",a)};this.graph.applyPrimitives(ce.primitives),this.log.append(ce),d.push(ce),l.push(...ce.primitives);for(let F of ce.reads)c.add(F);for(let F of ce.writes)p.add(F);u.push(ce.intent)}}catch(v){throw this.putBack(h,g),v}let w=Me(h,this.graph.snapshot(),l);this.admitted(t,d,l,w,h,g);let R=this.violations(r);return this.notify(w,d),{batch:i,ops:d,..._.length>0?{minted:_}:{},diff:w,primitives:l,reads:[...c],writes:[...p],intent:t.intent??u.join("; "),...this.moved(f,R),violationsAfter:R}}receive(e,t={}){this.stillNow();let r=new Set(this.log.all().map(d=>d.id)),o=e.filter(d=>!r.has(d.id));if(o.length===0)return[];let i=this.graph.snapshot(),s=[];if(!t.applied)for(let d of o)try{this.graph.applyPrimitives(d.primitives,{restoring:d.undoes!==void 0})}catch(l){throw this.graph.load(i),new On(d,l)}let a=this.log.length;for(let[d,l]of o.entries()){let c=Nn({...l,seq:a+d});this.log.append(c),s.push(c)}return this.countPast(s),this.notify(Me(i,this.graph.snapshot(),o.flatMap(d=>d.primitives)),s),s}append(e,t={}){if(this.stillNow(),e.length===0)return[];let r=new Set(this.log.all().map(a=>a.id)),o,i=e.map((a,d)=>{let l=a.primitives.map(zn),c={id:a.id??this.nextId(),seq:this.log.length+d,batch:a.batch??t.batch??(o??=this.mintBatch("batch")),author:a.author,intent:a.intent,...G("batchIntent",a.batchIntent),mutation:a.mutation??null,primitives:l,reads:a.reads??[],writes:a.writes??[...new Set(l.flatMap($e))],at:a.at??this.now(),...G("undoes",a.undoes),...G("via",a.via),...G("lineage",it(a.lineage))};if(r.has(c.id))throw new M(`Op "${c.id}" (${c.intent}) is already in the log`,"A host-made op needs an id of its own; leave `id` out and the store mints one.");return r.add(c.id),c}),s=this.graph.snapshot();for(let a of i)try{this.graph.applyPrimitives(a.primitives,{restoring:a.undoes!==void 0})}catch(d){throw this.graph.load(s),new On(a,d)}for(let a of i)this.log.append(a);this.countPast(i);for(let a of i)Ht(a.author.id);return this.notify(Me(s,this.graph.snapshot(),i.flatMap(a=>a.primitives)),i),i}applyPrimitives(e,t={}){this.stillNow();let r=t.batch??this.mintBatch("batch"),o=t.author??this.by,i=this.violations(),s=this.graph.snapshot(),a=t.intent??"Apply a change",d=it(t.lineage),l=this.asSplices(e,t.base).map(zn),c=[];if(l.length>0){let f={id:this.nextId(),seq:this.log.length,batch:r,author:o,intent:a,mutation:null,primitives:l,reads:[],writes:[...new Set(l.flatMap($e))],at:this.now(),...G("via",t.via),...G("lineage",d)};this.graph.applyPrimitives(f.primitives),this.log.append(f),c.push(f),Ht(o.id)}let p=this.violations(),u=Me(s,this.graph.snapshot(),l);return this.notify(u,c),{batch:r,ops:c,diff:u,primitives:l,reads:[],writes:c[0]?.writes??[],intent:a,...this.moved(i,p),violationsAfter:p}}findings(){return jd({schema:this.schema,invariants:this.allInvariants()},this.graph.snapshot(),{invariantOptions:this.invariantOptions})}batches(){return this.log.batches()}canUndo(e){return et(this.log,typeof e=="string"?[e]:e)}previewUndo(e,t){let r=this.canUndo(e);if(!r.ok)return{ok:!1,check:r};let o=Oa(r.ops,this.log.all()),i=new Set;for(let s of r.ops)for(let a of s.writes)i.add(a);return{ok:!0,check:r,...this.previewPrimitives(o,{reads:[...new Set(r.ops.flatMap(s=>[...s.reads]))],writes:[...i],intent:`Undo: ${r.ops.map(s=>s.intent).join("; ")}`,restoring:r.ops.every(Cd),...t===void 0?{}:{context:t}})}}undo(e,t={}){return this.undoing(e,t)}undoing(e,t){this.stillNow();let r=typeof e=="string"?[e]:e,o=t.author??this.by,i=(this.policy?.sees?.length??0)>0&&!W(o);if(i){let g=et($o(xn(this.log.all(),Ct(this,o)),()=>this.log.epochs()),r);if(!g.ok)throw new Be(g)}let s=this.canUndo(r);if(!s.ok)throw new Be(i?{ok:!1,ops:[],blockedBy:[],includeBatches:[],message:"Cannot undo on its own \u2014 a later change you cannot see depends on it, which only somebody who can see it can take back."}:s);let a=t.batch??this.mintBatch("undo"),d=it(t.lineage);if(this.policy||this.publisher)for(let g of s.ops){if(!g.mutation)continue;let x=D(g.author).id,m=A=>JSON.stringify(A).includes(JSON.stringify(x)),k=x!==void 0&&x!==D(o).id&&!W(o)&&!m(g.mutation.args)&&m(g.primitives)?{ok:!1,refusal:{mutation:g.mutation.name,wouldNeed:[],message:"it was done as somebody else."}}:this.permits(g.mutation,o);k.ok||this.refuse({...k.refusal,message:`Not permitted to undo "${g.intent}": ${k.refusal.message}`},o.id,!0)}let l=this.graph.snapshot(),c=this.violations(),p=[],u=this.log.length;for(let{op:g,primitives:x}of uo(this.log.all(),s.ops)){let m={id:this.nextId(),seq:this.log.length,batch:a,author:o,intent:`Undo: ${g.intent}`,...G("batchIntent",t.intent),mutation:null,primitives:x,reads:g.reads,writes:g.writes,at:this.now(),undoes:g.id,...G("via",t.via),...G("lineage",d),...G("undoneLineage",g.lineage)};this.graph.applyPrimitives(m.primitives,{restoring:Cd(g)}),this.log.append(m),p.push(m)}let f=Me(l,this.graph.snapshot(),p.flatMap(g=>[...g.primitives]));this.admitted(t,p,p.flatMap(g=>[...g.primitives]),f,l,u);let h=this.violations();return this.notify(f,p),{batch:a,ops:p,diff:f,primitives:p.flatMap(g=>[...g.primitives]),reads:[...new Set(p.flatMap(g=>[...g.reads]))],writes:[...new Set(p.flatMap(g=>[...g.writes]))],intent:t.intent??p.map(g=>g.intent).join("; "),...this.moved(c,h),violationsAfter:h}}authorName(e){return Hn(e,{graph:this.graph,schema:this.schema})}actMeanings(){return{act:e=>this.mutations.get(this.spelled(e)),has:e=>this.graph.has(e)}}refuseDeclined(e,t){let r=Da(this.log.all(),e,this.actMeanings());r&&this.refuse({mutation:e[0].name,message:`${this.authorName(t)} may not make this again: a person declined it on ${r.at.slice(0,10)}.`,wouldNeed:[]},t.id)}putBack(e,t){this.graph.load(e),this.log.length>t&&this.log.truncate(t)}admitted(e,t,r,o,i,s){if(!e.admit||t.length===0)return;let a=this.graph.size;try{e.admit({ops:t,primitives:r,added:{nodes:o.addedNodes.length,edges:o.addedEdges.length},removed:{nodes:o.removedNodes.length,edges:o.removedEdges.length},changed:{nodes:o.changedNodes.length},nodesAfter:a.nodes,edgesAfter:a.edges})}catch(d){throw this.putBack(i,s),d}}redo(e,t={}){return this.undo(e,t)}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(e,t){if(!(this.quiet>0)&&!(t.length===0&&fa(e)))for(let r of this.listeners)r(e,t)}rebase(e){this.stillNow();let t=new Set([...e.pending,...e.drop??[]]),r=this.log.all(),o=r.findIndex(g=>t.has(g.batch)),i=r.slice(o<0?r.length:o),s=this.log.horizon+(o<0?r.length:o),a=i.find(g=>!t.has(g.batch));if(a)throw new M(`Cannot rebase: op "${a.id}" (${a.intent}) comes after a pending batch and is neither pending nor dropped`,"While anything is pending, land the server's ops through rebase, so the log stays confirmed ops then pending ones.");let d=this.log.lastEpoch();if(d&&d.seq>s)throw new M(`Cannot rebase across an epoch: one begins at seq ${d.seq}, after pending op "${i[0].id}"`);let l=this.graph.snapshot(),c=[],p=[],u=[];this.quiet++;try{for(let k of[...i].reverse())this.graph.applyPrimitives(Le(k),{restoring:!0,inPlace:!0});this.log.truncate(s);let g=new Set(this.log.all().map(k=>k.id));for(let k of e.confirmed){if(g.has(k.id))continue;try{this.graph.applyPrimitives(k.primitives,{restoring:k.undoes!==void 0})}catch(S){throw new On(k,S)}let A=Nn({...k,seq:this.log.length});this.log.append(A),g.add(k.id),c.push(A)}this.countPast(c);let x=re.carried?.(i,c,e.pending),m=Gd(i);for(let k of e.pending){let A=i.filter(S=>S.batch===k);if(A.length!==0)try{p.push(...this.replay(k,A,x?.get(k),m))}catch(S){u.push({batch:k,error:S})}}}catch(g){this.log.truncate(s);for(let x of i)this.log.append(x);throw this.graph.load(l),g}finally{this.quiet--}let f=Ee(l,this.graph.snapshot()),h=[...c,...p];return this.notify(f,h),{diff:f,confirmed:c,pending:p,refused:u}}adopt(e){this.stillNow();let t=new Set(e.drop??[]),r=(e.pending??[]).filter(f=>!t.has(f)),o=this.log.all(),i=this.graph.snapshot(),s={ops:[...o],epochs:[...this.log.epochs()],horizon:this.log.horizon},a=new Set(o.map(f=>f.id)),d=new Map(r.map(f=>[f,o.filter(h=>h.batch===f)]));if(e.log.length>0)this.log.replace(e.log,e.epochs,G("horizon",e.horizon));else{let f=e.horizon??0;this.log.replace([],e.epochs??[{seq:f,base:e.snapshot}],{horizon:f})}let l=[],c=[];this.quiet++;try{this.graph.load(e.snapshot),this.projected=void 0,this.countPastTheLog();for(let f of r){let h=d.get(f)??[];if(h.length!==0)try{l.push(...this.replay(f,h,void 0,Gd(o)))}catch(g){c.push({batch:f,error:g})}}}catch(f){throw this.log.replace(s.ops,s.epochs,{horizon:s.horizon}),this.graph.load(i),this.projected=void 0,f}finally{this.quiet--}let p=this.log.all().filter(f=>!a.has(f.id)&&!l.includes(f)),u=Ee(i,this.graph.snapshot());return this.notify(u,[...p,...l]),{diff:u,adopted:p,pending:l,refused:c}}replay(e,t,r,o=new Map){let i=t[0],s={author:i.author,batch:e,...G("intent",i.batchIntent),...G("via",i.via),...G("lineage",i.lineage)};if(i.undoes!==void 0){let a=t.map(l=>this.log.get(l.undoes??"")?.batch??o.get(l.undoes??"")),d=t.find((l,c)=>a[c]===void 0||!this.log.all().some(p=>p.batch===a[c]));if(d)throw new M(`What "${d.intent}" took back is no longer in the log`);return this.undoing([...new Set(a)],s).ops}return r?this.applying(r,s).ops:t.every(a=>a.mutation!==null)?this.applying(t.map(a=>a.mutation),s).ops:this.append(t.map(({seq:a,...d})=>d))}snapshot(){return this.graph.snapshot()}verify(){let e=this.log.lastEpoch();return ad(this.schema,this.log.opsFrom(e?.seq??0),this.graph.snapshot(),{validate:this.validate,...e?{base:e.base}:{}})}checkpoint(e={}){let t=this.log.all(),r;if(e.seq!==void 0)r=e.seq;else{let m=this.log.length-(e.keepOps??1e3),A=Date.parse(e.now??this.now())-(e.keepDays??90)*864e5,S=t.find(y=>Date.parse(y.at)>A),_=S?S.seq:this.log.length;r=Math.min(m,_)}let o=vo(this.publishing)?[this.publishedSeq??0]:[],i=[...e.pins??[],...o].filter(m=>Number.isInteger(m));for(i.length>0&&(r=Math.min(r,...i)),r=Math.min(Math.max(r,this.log.horizon),this.log.length);r>this.log.horizon&&r<this.log.length&&t[r-this.log.horizon].batch===t[r-1-this.log.horizon].batch;)r--;if(r<=this.log.horizon)return;let s=this.verify();if(!s.ok)throw new M(`Cannot compact a store that does not verify: ${s.reason}`);let{creators:a,removed:d,writers:l,...c}=this.log.checkpointAt(this.schema,r,{validate:this.validate}),p=new Set(c.base.nodes.map(m=>m.id)),{creators:u,removed:f}=Ka(this.log,r,m=>p.has(m)),h=pe(this.log),g=Ga(this.log,r,c.base.nodes,m=>I(m,k=>!p.has(k)&&h.kindOf(k)===void 0)),x=m=>m&&Object.keys(m).length>0;return{...c,...x(u)&&{creators:u},...f&&{removed:f},...x(g)&&{writers:g}}}compact(e){return this.stillNow(),this.log.compact(e)}};var Mf=n=>`lens:${n}`,zf={hidden:[],removed:[],may:{views:!1,lenses:!1}};function Nf(n,e,t){return n.name!==void 0&&e.may.views?"view":n.declared&&e.may.lenses&&t.lens?"lens":null}var Ud=["full","summary","glyph"],at="view:",qo=(n,e)=>n.as===e.as&&(n.over??[n.kind]).includes(e.kind),If=n=>n.filter((e,t)=>!n.slice(0,t).some(r=>qo(r,e))),Tf=n=>n.filter(e=>!e.hidden);function we(n){return n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function dt(n,e){return`/${we(n.tryDefinition(e)?.plural??`${e}s`)}`}function jf(n,e,t){return`${dt(n,e)}/${encodeURIComponent(t)}`}function Df(n,e){return`/places/${encodeURIComponent(n)}${e?`?of=${encodeURIComponent(e)}`:""}`}function Wd(n,e){return e.some(t=>t.as===n.as&&!qo(n,t))}function Ff(n,e,t){return Wd(n,e)?`${n.title} \xB7 ${(t.tryDefinition(n.kind)?.plural??`${n.kind}s`).toLowerCase()}`:n.title}var Xe=(n,e,t="")=>`${n}|${e.cardinality}|${e.fidelity}|${t}`;function Wo(n){switch(n){case"full":return["full","summary","glyph"];case"summary":return["summary","full","glyph"];case"glyph":return["glyph","summary","full"]}}function Lf(n){let e=new Map,t=[],r=[],o,i=[],s={arrange(a){return a!==void 0&&(o=a),s},arrangement:()=>o,home(a,d){return a!==void 0&&i.push({view:a,...d?.name!==void 0?{name:d.name}:{}}),s},homeView:()=>i.at(-1)?.view,homes:()=>i,register(a,d,l,c){let p={...c?.over?.[1]?{over:c.over}:{},...c?.hidden?{hidden:!0}:{},...c?.name?{name:c.name}:{},...c?.declared?{declared:!0}:{}},u={kind:a,cardinality:d.cardinality,fidelity:d.fidelity,view:l,...c?.title?{title:c.title}:{},...c?.across?{across:c.across}:{},...c?.beside?{beside:!0}:{},...p};if(r.push(u),!c?.beside&&!p.hidden&&e.set(Xe(a,d),u),c?.title){let f=we(c.title);e.set(Xe(a,d,f),u),d.cardinality==="many"&&!t.some(h=>h.kind===a&&h.as===f)&&t.push({kind:a,title:c.title,as:f,...c.across?{across:c.across}:{},...p,...c.lens?{lens:c.lens}:{},...c.reads?.length?{reads:c.reads}:{}})}return s},places:()=>t,forget(a,d){for(let c of Ud)e.delete(Xe(a,{cardinality:"many",fidelity:c},d));let l=t.findIndex(c=>c.kind===a&&c.as===d);return l>=0&&t.splice(l,1),s},lookup(a,d){return e.get(Xe(a,d))?.view},resolve(a,d,l){if(l)for(let c of Wo(d.fidelity)){let p=e.get(Xe(a,{cardinality:d.cardinality,fidelity:c},l));if(p)return p}for(let c of Wo(d.fidelity)){let p=e.get(Xe(a,{cardinality:d.cardinality,fidelity:c}));if(p)return p}if(d.cardinality==="one")for(let c of Wo(d.fidelity)){let p=e.get(Xe(a,{cardinality:"many",fidelity:c}));if(p)return p}},registrations:()=>r,all(){return[...e.values()]},kindsWithViews(){return[...new Set([...e.values()].map(a=>a.kind))]}};return s}var Zf=["day","week","month","year","decade"];function qd(n){let e={};n.q&&n.q.trim().length>0&&(e.query=n.q);let t=Hr(n.archived);if(t&&(e.archived=t),n.sort){let[r,o]=n.sort.split(":");r&&(e.sort={by:r,direction:o==="desc"?"desc":"asc"})}if(n.filter){let r=[];for(let o of n.filter.split(",")){let i=o.indexOf(":");i<=0||r.push({key:o.slice(0,i),value:o.slice(i+1)})}r.length>0&&(e.filter=r)}if(n.group){let[r,o]=n.group.split(":");r&&(e.group={by:r,...Zf.includes(o)?{bucket:o}:{}})}return e}function Ho(n){if(typeof n=="string"&&n.length>0)return{by:n,direction:"asc"};if(typeof n!="object"||n===null)return;let{by:e,direction:t}=n;if(!(typeof e!="string"||e.length===0))return{by:e,direction:t==="desc"?"desc":"asc"}}function Xt(n,e,t){let r=Ho(n);if(!r)return'an order is a field, like "released", or { "by": "released", "direction": "asc" | "desc" }';let o=typeof n=="object"&&n!==null?n.direction:void 0;if(o!==void 0&&o!=="asc"&&o!=="desc")return`an order runs "asc" or "desc", not "${String(o)}"`;if(r.by!=="label"&&!e.includes(r.by))return`${t} has no field "${r.by}" to order by (it has ${e.length>0?e.map(i=>`"${i}"`).join(", "):"none"}, and "label", its name)`}function Cf(n,e,t){let r=Ho(e);if(!r)return n;let o=r.direction==="desc"?-1:1;return n.map((i,s)=>({item:i,at:s,value:t(i,r.by)})).sort((i,s)=>{let a=(i.value===void 0||i.value===null||i.value===""?1:0)-(s.value===void 0||s.value===null||s.value===""?1:0);if(a!==0)return a;if(i.value===s.value||i.value===void 0||i.value===null)return i.at-s.at;let d=typeof i.value=="number"&&typeof s.value=="number"?i.value-s.value:String(i.value).localeCompare(String(s.value),void 0,{numeric:!0});return d===0?i.at-s.at:d*o}).map(i=>i.item)}var ct={timeline:{binds:"fields",requiredRoles:["start","end"],options:["columns","extent","tick","minWindow","arranging"]},calendar:{binds:"fields",requiredRoles:["start"],options:["today","range","weekStartsOn","perCell","horizon","arranging","search","filters"]},coverage:{binds:"entities",requiredRoles:["rows","columns","link"],options:["rowRef","rowGroup","groupOrder","requiredGroups","requiredVia","badge","columnGroup","sort","columnSort","search","filters"]},board:{binds:"entities",requiredRoles:["slots","x","y","fill"],options:["fillFrom","slotCode","zones","aspect","emptyLabel","pickTarget","arranging","arrange"]},plan:{binds:"entities",requiredRoles:["regions","outline"],options:["hues","aspect","undrawnLabel","strayLabel","draw","place","help"]},reach:{binds:"nothing",requiredRoles:[],options:[]},blocks:{binds:"nothing",requiredRoles:[],options:["blocks"]},columns:{binds:"fields",requiredRoles:["column"],options:["sort","search","filters","move","collapsed","cap","hidden"]}},Gf=20,Yd=Object.keys(ct),Kf=(n,e,t,r=ct[n].options)=>({message:`The ${n} lens takes no option "${e}", so "${t}" ignores it.`,fix:r.length?`Use one of: ${r.join(", ")}.`:`The ${n} lens takes no options; drop it.`}),Jd=n=>Object.hasOwn(ct,n);function Yo(n,e,t){let r=n[e],o=Array.isArray(r)?r.filter(i=>typeof i=="string"&&t(i)):[];o.length>0?n[e]=o:delete n[e]}var Pn=n=>typeof n=="object"&&n!==null&&!Array.isArray(n);function Hd(n,e,t){let r=n.tryDefinition(e)?.fields.shape,o=j(r?.[t]);for(;o&&(o.type==="optional"||o.type==="default"||o.type==="nullable"||o.type==="prefault");)o=j(o.innerType);return o?.type!=="enum"?[]:(o.entries?Object.values(o.entries):o.values??[]).filter(s=>typeof s=="string")}function Vf(n){let e=[],t=[],r=[],o=new Set(n.schema.kinds),i=new Set;for(let d of o)for(let l of Object.keys(n.schema.tryDefinition(d)?.edges??{}))i.add(l);let s=d=>Object.keys(n.schema.tryDefinition(d)?.fields.shape??{}),a=new Map;return(n.lenses??[]).forEach((d,l)=>{let c=`lenses.${l}`,p=typeof d.title=="string"&&d.title.trim().length>0?d.title.trim():void 0,u=(b,w)=>{t.push({index:l,name:d.name,...p?{title:p}:{},why:b}),w&&r.push({severity:"warning",...w})};if(!Jd(d.name)){p?u(`"${d.name}" is not a lens this framework draws`,{code:"lens-not-shipped",path:`${c}.name`,message:`"${p}" names the lens "${d.name}", which the framework does not ship, so nothing draws it.`,fix:`Name one of ${Yd.join(", ")} \u2014 or register the view yourself and drop the title.`}):u("it is a lens this app wrote, drawn by the app's own views");return}if(!p)return u("it has no title, so it is bindings the checker holds and no place");let f=ct[d.name],h=Pn(d.options)?d.options:{};if(d.options!==void 0&&!Pn(d.options))return u("its options are not an object",{code:"lens-options-not-an-object",path:`${c}.options`,message:`"${p}" has options that are not an object.`,fix:'Write them as { "<option>": <value> }, or drop them.'});for(let b of Object.keys(h))f.options.includes(b)||r.push({severity:"warning",code:"lens-option-unknown",path:`${c}.options.${b}`,...Kf(d.name,b,p,f.options)});let g={};for(let b of f.options)h[b]!==void 0&&(g[b]=h[b]);d.arrangedBy&&(g.arrangedBy=qd(d.arrangedBy));let x=Pn(d.bindings)?d.bindings:{},m=[],k,A=(b,w,R)=>u(w,{code:"lens-cannot-draw",path:b,message:`"${p}" cannot draw: ${w}.`,fix:R});if(f.binds==="fields"){let b=Object.keys(x).filter(R=>Pn(x[R])),w=b.filter(R=>!o.has(R));if(b.length===0)return A(`${c}.bindings`,"it binds no kind",`Bind a kind's fields: "bindings": { "<kind>": { ${f.requiredRoles.map(R=>`"${R}": "<field>"`).join(", ")} } }.`);if(w.length>0)return;if(g.bindings=x,m=b,d.name==="timeline"){let R=h.columns;if(Array.isArray(R))g.columns=R.map(v=>typeof v=="string"?{id:v,label:v}:v);else{let v=b.flatMap(P=>{let E=x[P],T=typeof E.column=="string"?E.column:typeof E.columns=="string"?E.columns:void 0;return T?Hd(n.schema,P,T):[]}),$=[...new Set(v)];if($.length===0)return A(`${c}.options.columns`,"it has no columns \u2014 no option names them and no `column` role is bound to a field of set values",'Bind "column" to a field whose values are the columns, or say "columns": ["mon", "tue", \u2026].');g.columns=$.map(P=>({id:P,label:P.toUpperCase()}))}g.extent===void 0&&(g.extent=1440)}if(d.name==="columns"){if(g.sort!==void 0){let v=b.map($=>Xt(g.sort,s($),$)).find(Boolean);v&&(r.push({severity:"warning",code:"lens-sort",path:`${c}.options.sort`,message:`"${p}" cannot order its cards: ${v}.`,fix:'Write { "by": "<a field>", "direction": "asc" }, or drop it.'}),delete g.sort)}let R=new Set;for(let v of b){let $=x[v].column;if(typeof $!="string"||!s(v).includes($))return;let P=Hd(n.schema,v,$);if(P.length===0)return A(`${c}.bindings.${v}.column`,`its column field "${$}" is not a choice`,`Bind "column" to a choice field of ${v}, like a status.`);for(let E of P)R.add(E)}typeof g.move!="boolean"&&delete g.move,Number.isInteger(g.cap)&&g.cap>=1&&g.cap<=500||delete g.cap;for(let v of["collapsed","hidden"])Yo(g,v,$=>R.has($))}if(d.name==="calendar"&&g.today!==void 0&&!(typeof g.today=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(g.today)))return A(`${c}.options.today`,"its today is not a date",'Write it as "YYYY-MM-DD", or leave it out and the calendar opens on the day it is drawn.');if(d.name==="calendar"&&g.horizon!==void 0){let R=g.horizon,v=E=>E===void 0||Number.isInteger(E)&&E>=1&&E<=9999,$=typeof R=="number"?{years:R,title:"Years"}:R;Pn($)&&Number.isInteger($.years)&&$.years>=1&&$.years<=200&&typeof $.title=="string"&&$.title.trim().length>0&&v($.from)&&v($.to)&&Object.keys($).every(E=>["years","title","from","to"].includes(E))&&!(typeof $.from=="number"&&typeof $.to=="number"&&$.to<$.from)?g.horizon=$:(delete g.horizon,r.push({severity:"warning",code:"lens-horizon",path:`${c}.options.horizon`,message:`"${p}" has a horizon that is not a span of years, so it offers no span of years.`,fix:'Write { "years": 30, "title": "The career" } \u2014 "from" and "to" (years, like 1962 and 2023) only to pin its ends, which otherwise reach the first and last of its records.'}))}if(d.name==="calendar"&&g.range!==void 0&&!["day","week","month","quarter","year","years","agenda"].includes(g.range))return A(`${c}.options.range`,`its range "${String(g.range)}" is not one a calendar opens at`,"Use one of: day, week, month, quarter, year, agenda.")}else if(f.binds==="entities"){let b=v=>{let $=x[v];if(Pn($)){if(typeof $.kind=="string")return $.kind;if(typeof $.edge=="string")return $.edge;if(Array.isArray($.path))return{path:$.path};if(typeof $.field=="string")return $.field}};for(let v of f.requiredRoles)if(b(v)===void 0)return;let w=d.name==="coverage"?"rows":d.name==="board"?"slots":"regions",R=b(w);if(!o.has(R))return;if(d.name==="coverage"){let v=b("columns");if(!o.has(v))return;let $=b("link");if(typeof $=="string"&&!i.has($))return;Object.assign(g,{rows:R,columns:v,link:$}),v!==R&&(k=v);for(let[P,E]of[["sort",R],["columnSort",v]]){if(g[P]===void 0)continue;let T=Xt(g[P],s(E),E);T&&(r.push({severity:"warning",code:"lens-sort",path:`${c}.options.${P}`,message:`"${p}" cannot order its ${P==="sort"?"rows":"columns"}: ${T}.`,fix:`Write { "by": "<a field of ${E}>", "direction": "asc" }, or drop it.`}),delete g[P])}}else if(d.name==="board"){Object.assign(g,{slots:R,x:b("x"),y:b("y"),fill:b("fill")});for(let v of["x","y"])if(!s(R).includes(g[v]))return}else{Object.assign(g,{regions:R,outline:b("outline")});for(let v of["markers","at","within","nests","regionKind","markerKind"]){let $=b(v);typeof $=="string"&&(g[v]=$)}}m=[R]}else if(d.name==="blocks"){if(!d.on)return A(`${c}.on`,"it does not say which kind it stands on",'Say "on": "<the kind it is a place of>".');if(!Array.isArray(g.blocks)||g.blocks.length===0)return A(`${c}.options.blocks`,"it has no blocks to draw",`Say "options": { "blocks": [{ "headline": "\u2026" }, { "list": "all('<kind>')", "as": "card" }] }.`)}else{let b=["user","person","member"].find(w=>o.has(w));if(!d.on&&!b)return A(`${c}.on`,"it does not say which kind it stands on",'Say "on": "<the kind whose records are the people>".');m=b?[b]:[]}if(d.on!==void 0){if(typeof d.on!="string"||!o.has(d.on))return A(`${c}.on`,`it stands on "${String(d.on)}", which is not a kind`,`Use one of: ${[...o].join(", ")}.`);if(m=[d.on],d.name==="coverage"){let b=[g.rows,g.columns].find(w=>w!==d.on);k=typeof b=="string"?b:void 0}}let S=typeof g.rows=="string"?g.rows:m[0];if(S!==void 0){let b=["label",...s(S)],w=new Set(["is",...b,...Object.keys(n.schema.tryDefinition(S)?.edges??{})]);Yo(g,"search",R=>b.includes(R)),Yo(g,"filters",R=>w.has(R.split(".")[0]))}let _=we(p);if(_.length===0)return A(`${c}.title`,"its title has no letters or digits to make an address of","Give it a title a person would say.");for(let b of m){let w=`${b}|${_}`;if(a.has(w))return u(`another lens on ${b} is already called "${p}"`,{code:"lens-title-taken",path:`${c}.title`,message:`"${p}" is the title of lenses.${a.get(w)} too, on the same kind, so one address would name two pictures.`,fix:"Give each its own title."})}for(let b of m)a.set(`${b}|${_}`,l);let y=d.create;y!==void 0&&typeof y!="boolean"&&r.push({severity:"warning",code:"lens-create",path:`${c}.create`,message:`"${p}" says create ${JSON.stringify(y)}, which is neither true nor false, so its page keeps the forms that begin its kind.`,fix:'Say "create": false to leave them off, or drop it.'}),e.push({index:l,lens:d.name,title:p,as:_,kinds:m,...k?{across:k}:{},options:g,...d.hidden===!0?{hidden:!0}:{},...y===!1?{create:!1}:{}})}),{drawn:e,undrawn:t,findings:r}}var Bf=6;function Uf(n,e,t=[]){let r=n.kinds,o=s=>Object.values(n.tryDefinition(s)?.edges??{}).map(a=>(a.to==="*"?r:a.to).filter(d=>d!==s)),i=new Set(r.flatMap(s=>o(s).flat()));return new Set([...e?.hide??[],...t,...r.filter(s=>!i.has(s)&&o(s).length>0&&o(s).every(a=>a.length>=2))])}function Wf(n,e,t){if(!n?.primary)return;let r=new Set(n.primary.map(we));return{kinds:new Set(e.kinds.filter(o=>r.has(we(o))||r.has(dt(e,o).slice(1)))),places:new Set(t.filter(o=>r.has(o.as)||r.has(we(o.title))||o.name!==void 0&&n.primary.includes(at+o.name)).map(o=>`${o.kind}|${o.as}`))}}var Xd="overview",qf=`/places/${Xd}`;function Hf(n){let e=n?.scene?.trim();return e||"Scene"}function Yf(n){let e=n?.pages?.trim();return e||"Pages"}function Jf(n,e){if(!e||e.length===0)return n;let t=e.filter(r=>n.includes(r));return[...new Set(t),...n.filter(r=>!t.includes(r))]}function Qd(n){return n.startsWith(at)&&n.slice(at.length).trim()||void 0}function Xf(n,e,t){let r=[],o=new Set;for(let i of e??[]){let s=Qd(i),a=s===void 0?void 0:t.find(d=>d.name===s&&n.includes(d.kind));a?r.some(d=>d.view===a)||r.push({kind:a.kind,view:a}):s===void 0&&n.includes(i)&&!o.has(i)&&(o.add(i),r.push({kind:i}))}for(let i of n)o.has(i)||r.push({kind:i});return r}function Qf(n,e,t){if(n===void 0)return;let r=n.trim();if(r==="")return;if(r.toLowerCase()==="home"||r==="/")return{to:"home"};let o=we(r),i=t.find(d=>d.title===r||at+d.name===r)??t.find(d=>d.as===o);if(i)return{to:"place",place:i};let s=e.kinds,a=s.find(d=>d===r)??s.find(d=>dt(e,d).slice(1)===o);return a?{to:"kind",kind:a}:void 0}function Jo(n){let e=(n??"").replace(/\/+$/,"");return e===""?"":e.startsWith("/")?e:`/${e}`}function ep(n,e={}){let t=typeof n=="string"?n:n.address,r=Jo(e.basePath),o=t.startsWith("/")?t:`/${t}`;return r===""?o:o==="/"?r:o.startsWith("/?")||o.startsWith("/#")?`${r}${o.slice(1)}`:`${r}${o}`}function np(n,e){let t=Jo(e);if(t==="")return n.startsWith("/")?n:`/${n}`;if(!n.toLowerCase().startsWith(t.toLowerCase()))return null;let r=n.slice(t.length);return r===""||r==="/"?"/":r.startsWith("/")?r:null}var Qt=2500,tp=Qt*4;function rp(n){let e=n.name??"";return e&&n.onBehalfOfName?`${e}, for ${n.onBehalfOfName}`:e}function Xo(n,e,t=Qt){return n.held==="socket"?!0:n.until!==void 0?e<Date.parse(n.until):e-Date.parse(n.at)<t}var Mk=new Set(Pt);function op(n){return`${n.kind}:${n.id??""}:${n.session??""}`}function ip(n,e,t,r=Qt,o){let i=new Map;for(let[s,a]of n)Xo(a,t,r)&&i.set(s,a);for(let s of e){if(!Xo(s,t,r)){i.delete(s.participant);continue}let a=i.get(s.participant);(!a||Date.parse(a.at)<=Date.parse(s.at))&&i.set(s.participant,s)}return o!==void 0&&i.delete(o),i}function sp(n,e){return!n||!e?n===e:n.participant===e.participant&&n.kind===e.kind&&n.name===e.name&&n.onBehalfOf===e.onBehalfOf&&n.onBehalfOfName===e.onBehalfOfName&&n.until===e.until&&n.held===e.held&&n.hue===e.hue&&n.stop===e.stop&&(n.over??null)===(e.over??null)&&(n.robot?.at??null)===(e.robot?.at??null)&&(n.robot?.mode??null)===(e.robot?.mode??null)&&JSON.stringify(n.caret)===JSON.stringify(e.caret)}var ec=Symbol.for("@graview/core:app-link"),ap=n=>(Object.defineProperty(j(n),ec,{value:1,enumerable:!0}),n);function nc(n){let e=j(n);return!!e&&(e[ec]===1||nc(e.innerType))}var Tk=()=>ap(L().check(Zr(500),Vn(Rt,"another app's address")));var er=(n,e)=>`${e.kind}\0${e.id??""}\0${n.address}\0${n.kind}\0${n.id}`;function dp(n,e,t=()=>{}){let r=new Map,o=new Map,i=s=>{let a=er(s,e),d=r.get(a);return d||(d=Promise.resolve().then(()=>n.resolve(s,e)).then(l=>cp(l)?l:null,()=>null).then(l=>(r.get(a)===d&&(o.set(a,l),t(s)),l)),r.set(a,d)),d};return{read(s){let a=er(s,e);if(o.has(a)){let d=o.get(a);return d===null?{unread:!0}:"denied"in d?{denied:!0}:{record:d}}return i(s),{unread:!0}},ask:i,answered:s=>o.get(er(s,e)),forget(s){if(!s){r.clear(),o.clear();return}let a=er(s,e);r.delete(a),o.delete(a)}}}function cp(n){if(n===null)return!0;if(typeof n!="object"||n===void 0)return!1;if(n.denied===!0)return!0;let e=n;return typeof e.label=="string"&&typeof e.id=="string"&&typeof e.kind=="string"&&typeof e.fields=="object"&&e.fields!==null}var up=1;var nr=(n,e)=>`${n}\0${e}`;function ei(n){return n.op==="add-node"?Object.keys(n.node).filter(e=>e!=="id"&&e!=="kind").map(e=>[n.node.id,e]):n.op==="patch-node"?Object.keys(n.after).map(e=>[n.id,e]):n.op==="splice-text"?[[n.id,n.field]]:[]}var Qo=class n{revs=new Map;floor;constructor(e=0){this.floor=Math.max(0,Math.floor(e))-1}static of(e,t={}){let r=new n(t.horizon);return r.note(e),r}note(e){for(let t of e)for(let r of t.primitives)for(let[o,i]of ei(r)){let s=nr(o,i);(this.revs.get(s)??this.floor)<t.seq&&this.revs.set(s,t.seq)}}of(e,t){return this.revs.get(nr(e,t))??this.floor}baseFor(e,t=new Set,r){let o=new Set,i=new Map;for(let s of e)for(let a of s.primitives)if(a.op==="add-node"&&o.add(a.node.id),!(a.op!=="patch-node"||o.has(a.id)||t.has(a.id)))for(let d of Object.keys(a.after)){let l=nr(a.id,d);t.has(l)||i.has(l)||r?.(a.id,d)||i.set(l,{node:a.id,field:d,rev:this.of(a.id,d)})}return[...i.values()]}stale(e){return e.filter(t=>this.of(t.node,t.field)>t.rev)}};function lp(n){let e=new Set;for(let t of n)for(let r of t.primitives){r.op==="add-node"&&e.add(r.node.id);for(let[o,i]of ei(r))e.add(nr(o,i))}return e}var Kk=Symbol.for("@graview/core:collaborative"),Vk=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0;var fp=/^#([0-9a-f]{3,8})$/i,pp=/(rgba?|hsla?)\(([^)]+)\)/gi;function hp(n){let e=fp.exec(n.trim());if(!e)return null;let t=e[1];if((t.length===3||t.length===4)&&(t=[...t].map(i=>i+i).join("")),t.length!==6&&t.length!==8)return null;let r=Number.parseInt(t.slice(0,6),16),o=t.length===8?Number.parseInt(t.slice(6,8),16)/255:1;return{r:r>>16&255,g:r>>8&255,b:r&255,a:o}}function gp(n){let e=n.slice(0,n.indexOf("(")).toLowerCase(),r=n.slice(n.indexOf("(")+1,n.lastIndexOf(")")).split(/[,\s/]+/).filter(Boolean).map(d=>d.endsWith("%")?Number.parseFloat(d)/100:Number.parseFloat(d));if(r.some(Number.isNaN))return null;if(e.startsWith("rgb")){let[d,l,c,p]=r;return d===void 0||l===void 0||c===void 0?null:{r:d,g:l,b:c,a:p??1}}let[o,i,s,a]=r;return o===void 0||i===void 0||s===void 0?null:{...rc(o,i>1?i/100:i,s>1?s/100:s),a:a??1}}function Qe(n){let e=n.r/255,t=n.g/255,r=n.b/255,o=Math.max(e,t,r),i=Math.min(e,t,r),s=(o+i)/2;if(o===i)return{h:0,s:0,l:s};let a=o-i,d=a/(1-Math.abs(2*s-1));return{h:((o===e?60*((t-r)/a%6):o===t?60*((r-e)/a+2):60*((e-t)/a+4))+360)%360,s:d,l:s}}function ke(n,e,t){return{...rc(n,e,t),a:1}}function rc(n,e,t){let r=(1-Math.abs(2*t-1))*e,o=(n%360+360)%360/60,i=r*(1-Math.abs(o%2-1)),[s,a,d]=o<1?[r,i,0]:o<2?[i,r,0]:o<3?[0,r,i]:o<4?[0,i,r]:o<5?[i,0,r]:[r,0,i],l=t-r/2;return{r:Math.round((s+l)*255),g:Math.round((a+l)*255),b:Math.round((d+l)*255)}}function ie(n){let e=[];for(let t of n.matchAll(pp)){let r=gp(t[0]);r&&e.push(r)}for(let t of n.matchAll(/#[0-9a-fA-F]{3,8}\b/g)){let r=hp(t[0]);r&&e.push(r)}return e}function ut(n,e){let t=n.a+e.a*(1-n.a);if(t===0)return{r:0,g:0,b:0,a:0};let r=(o,i)=>(o*n.a+i*e.a*(1-n.a))/t;return{r:r(n.r,e.r),g:r(n.g,e.g),b:r(n.b,e.b),a:t}}function ni(n){let e=n/255;return e<=.03928?e/12.92:((e+.055)/1.055)**2.4}function tc(n){return .2126*ni(n.r)+.7152*ni(n.g)+.0722*ni(n.b)}function Se(n,e){let[t,r]=[tc(n),tc(e)].sort((o,i)=>i-o);return(t+.05)/(r+.05)}var tr=(n,e)=>`rgba(${Math.round(n.r)}, ${Math.round(n.g)}, ${Math.round(n.b)}, ${e})`,oc={r:0,g:0,b:0,a:1},rr={r:255,g:255,b:255,a:1};function or(n){let e=ie(n.accent)[0];if(!e)return{ok:!1,missing:["accent"],why:`"${n.accent}" is not a color this can read. Use a hex, rgb() or hsl() value.`};let t={},r=new Set,o=[],i=Qe(e);for(let s of["dark","light"]){let a=n.base[s],d=ie(a.ground)[0]??(s==="dark"?oc:rr),l=ut(ie(a.panel)[0]??rr,d),c=vp(i,[l,d],s,4.5);c?Math.abs(c.l-i.l)>bp&&(r.add(`accent (${s})`),o.push(`reaching 4.5:1 on the ${s} panel would move the accent's lightness by ${Math.round(Math.abs(c.l-i.l)*100)} points, which is far enough that it stops being the same color \u2014 supply one for ${s}`)):(r.add(`accent (${s})`),o.push(`no lightness of this hue clears 4.5:1 as text on the ${s} panel, so ${s} needs an accent of its own`));let p=c??i,u=ke(p.h,p.s,p.l),f=n.accentInk?.[s]??(Se(rr,u)>=Se(oc,u)?"#ffffff":"#000000"),h=Se(ie(f)[0]??rr,u);h+.005<4.5&&(r.add(`accentInk (${s})`),o.push(`neither black nor white clears 4.5:1 on the accent (best ${h.toFixed(2)}:1), so text on a filled button has to be given`)),t[s]={...a,accent:tr(u,1),accentDim:tr(u,s==="dark"?.35:.22),accentInk:f,glow:tr(u,s==="dark"?.28:.1),edgeBright:tr(u,mp(u,l,s==="dark"?.55:.42,3)),...n.warn?.[s]?{warn:n.warn[s]}:{}};let g=ie(t[s].warn)[0];g&&yp(Qe(g).h,p.h)<25&&(r.add(`warn (${s})`),o.push(`the warning color shares the accent's hue in ${s}, so "something is broken" looks like "this is selected"`))}return r.size>0?{ok:!1,missing:[...r].sort(),why:o.join("; ")}:{ok:!0,schemes:t}}function mp(n,e,t,r){for(let o=Math.round(t*100);o<=100;o++){let i=o/100;if(Se(ut({...n,a:i},e),e)>=r)return i}return 1}function yp(n,e){let t=Math.abs(n-e)%360;return t>180?360-t:t}var bp=.3;function vp(n,e,t,r){let o=t==="dark";for(let i=0;i<=100;i++){let s=o?n.l+i/100:n.l-i/100,a=o?n.l-i/100:n.l+i/100;for(let d of[s,a])if(!(d<0||d>1)&&e.every(l=>Se(ke(n.h,n.s,d),l)>=r))return{...n,l:d}}return null}function xp(n,e){let t=e?.[n];if(t!==void 0)return(t%360+360)%360;let r=2166136261;for(let o=0;o<n.length;o++)r^=n.charCodeAt(o),r=Math.imul(r,16777619);return(r>>>0)%360}var en=Object.freeze({navy:"#001769",turquoise:"#00e5b9",paper:"#f7f7f2",ink:"#18213a",muted:"#586174"}),ti="Montserrat",ri=Object.freeze({display:550,body:450,label:600}),oi=Object.freeze({display:600,body:400,label:600}),wp="-0.025em",kp=Object.freeze({minWidth:140,clearSpace:.5,microMax:24,regularMin:32,microBelow:28});var ic={ground:"#0a0f1f",groundDeep:"#060914",wash:"none",panel:"rgba(19, 27, 52, 0.96)",panelMuted:"rgba(14, 21, 42, 0.94)",panelWarning:"rgba(48, 33, 18, 0.95)",edge:"rgba(164, 178, 222, 0.18)",edgeBright:"rgba(154, 171, 255, 0.6)",ink:"#eef0f6",inkMuted:"#aab2c6",inkFaint:"#97a0b6",accent:"#9aabff",accentDim:"rgba(154, 171, 255, 0.32)",accentInk:en.navy,warn:"#f0a868",good:"#8fdcaa",bad:"#ffa3a3",glow:"rgba(154, 171, 255, 0.18)",bar:"rgba(10, 15, 31, 0.96)",float:"rgba(16, 23, 45, 0.98)",liftLow:"0 14px 36px -22px #000",liftHigh:"0 28px 64px -30px #000",tintAlpha:.2,tintLightness:52,gridAlpha:.35},sc={ground:en.paper,groundDeep:"#efefe8",wash:"none",panel:"#ffffff",panelMuted:"#fafaf6",panelWarning:"#fdf4ea",edge:"rgba(24, 33, 58, 0.12)",edgeBright:"rgba(0, 23, 105, 0.6)",ink:en.ink,inkMuted:en.muted,inkFaint:"#626b7d",accent:en.navy,accentDim:"rgba(0, 23, 105, 0.16)",accentInk:"#ffffff",warn:"#9a5312",good:"#1b6436",bad:"#a1232d",glow:"rgba(0, 23, 105, 0.08)",bar:"rgba(255, 255, 255, 0.96)",float:"#ffffff",liftLow:"0 1px 2px rgba(24,33,58,0.06), 0 8px 24px -12px rgba(24,33,58,0.16)",liftHigh:"0 2px 6px rgba(24,33,58,0.08), 0 24px 56px -24px rgba(24,33,58,0.26)",tintAlpha:.16,tintLightness:46,gridAlpha:.5},he={dark:ic,light:sc};var je=Object.freeze({radius:8,density:1,radiusSmall:.72,radiusSmallFloor:2,pad:15,padSmall:10,gap:7}),nn=Object.freeze({body:`"${ti}", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif`,mono:'ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace'});function Sp(n){let e=n?.shape?.radius??je.radius,t=n?.shape?.density??je.density;return Object.freeze({radius:e,radiusSmall:Math.max(je.radiusSmallFloor,Math.round(e*je.radiusSmall)),pad:Math.round(je.pad*t),padSmall:Math.round(je.padSmall*t),gap:Math.round(je.gap*t)})}function $p(n){let e=n?.typography?.body??nn.body,t=n?.typography?.display??e,o=e===nn.body&&t===nn.body?ri:oi,i=n?.typography?.weights;return Object.freeze({body:e,display:t,mono:n?.typography?.mono??nn.mono,weights:Object.freeze({display:i?.display??o.display,body:i?.body??o.body,label:i?.label??o.label})})}var eS=Object.freeze({light:Object.freeze({roof:Object.freeze({saturation:48,lightness:82}),right:Object.freeze({saturation:40,lightness:66}),left:Object.freeze({saturation:34,lightness:55}),roofEdge:"rgba(255,255,255,0.75)",plot:Object.freeze({saturation:45,lightness:58,alpha:.12}),plotEdge:Object.freeze({saturation:40,lightness:48,alpha:.55})}),dark:Object.freeze({roof:Object.freeze({saturation:42,lightness:32}),right:Object.freeze({saturation:40,lightness:21}),left:Object.freeze({saturation:38,lightness:13}),roofEdge:"rgba(255,255,255,0.14)",plot:Object.freeze({saturation:45,lightness:48,alpha:.2}),plotEdge:Object.freeze({saturation:40,lightness:62,alpha:.55})})});function dc(n){return/^\s*(<\?xml[^>]*>\s*)?(<!--[\s\S]*?-->\s*)*(<!DOCTYPE svg[^>]*>\s*)?<svg[\s>/]/i.test(n)}var cc="http://www.w3.org/2000/svg",Rp=["http://www.w3.org/1999/xhtml","http://www.w3.org/1998/Math/MathML",cc],Ap=new Set("svg g defs symbol use title desc path rect circle ellipse line polyline polygon text tspan textPath linearGradient radialGradient stop pattern clipPath mask marker image filter feBlend feColorMatrix feComponentTransfer feComposite feDropShadow feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feMerge feMergeNode feMorphology feOffset feTile feTurbulence".split(" ")),_p=new Set(["title","desc"]),lt="it embeds a page or media",Op={script:"it has a script in it",foreignobject:"it embeds HTML (foreignObject)",iframe:lt,embed:lt,object:lt,audio:lt,video:lt,style:"it has a style sheet in it; a mark is styled by its attributes",a:"it links to something (an <a> element)"},Pp={amp:"&",lt:"<",gt:">",quot:'"',apos:"'"};function Ep(n){let e=!1,t=n.replace(/&(#x[0-9a-f]+|#[0-9]+|[a-z][a-z0-9]*);?/gi,(r,o)=>{if(o[0]==="#"){let s=o[1]==="x"||o[1]==="X"?parseInt(o.slice(2),16):parseInt(o.slice(1),10);return s>0&&s<=1114111?String.fromCodePoint(s):"\uFFFD"}let i=Pp[o.toLowerCase()];return i===void 0&&(e=!0),i??""});return e?null:t}function Mp(n){if(/\\|@|expression\s*\(|(?:image-set|cross-fade|image|element|src)\s*\(/i.test(n))return!1;for(let[,e]of n.matchAll(/url\s*\(\s*["']?\s*([^)]*)/gi))if(!e.startsWith("#"))return!1;return!0}function zp(n,e,t){let r=Ep(t);if(r===null)return"it declares XML entities";let o=(e.includes(":")?e.slice(e.indexOf(":")+1):e).toLowerCase();if(o.startsWith("on"))return"it has an event handler (an on\u2026 attribute)";if(e==="xml:base")return"it loads or links to something outside itself";if(e==="xmlns")return r===cc?null:"it changes what its elements are (another xmlns)";if(e.startsWith("xmlns:"))return Rp.includes(r)?"it changes what its elements are (another xmlns)":null;if(o==="href"||o==="src"){let i=r.replace(/[\u0000- ]+/g,"");return i.startsWith("#")||n==="image"&&/^data:image\/(png|jpe?g|gif|webp|avif);/i.test(i)?null:"it loads or links to something outside itself"}return Mp(r)?null:o==="style"?"its style loads something outside itself":"it loads or links to something outside itself"}var ac=/^\s+([A-Za-z_][A-Za-z0-9_.:-]*)\s*=\s*(?:"([^"<]*)"|'([^'<]*)')/;function uc(n){if(/<!ENTITY/i.test(n))return"it declares XML entities";if(/<!\[CDATA\[/i.test(n))return"it has a CDATA section, which the page and the picture read differently";let e=[],t=!1,r=/^\s*(<\?xml\s[^?<>]*\?>)?/.exec(n)[0].length;for(;r<n.length;){let o=n.slice(r),i=/^[^<]+/.exec(o);if(i){if(e.length===0&&i[0].trim()!=="")return"it is not one SVG: there is text outside it";r+=i[0].length;continue}if(o.startsWith("<!--")){let f=o.indexOf("-->",4);if(f<0)return"it has a comment that never ends";let h=o.slice(4,f);if(/^-?>/.test(h)||h.includes("--")||h.includes("<!")||h.endsWith("-"))return"it has a comment the page and the picture read differently";r+=f+3;continue}if(/^<!DOCTYPE/i.test(o)){let f=/^<!DOCTYPE\s+svg\b[^<>[\]]*>/i.exec(o);if(!f||e.length>0||t)return"it declares XML entities";r+=f[0].length;continue}let s=/^<\/([A-Za-z][A-Za-z0-9_.:-]*)\s*>/.exec(o);if(s){if(e.pop()!==s[1])return`it is not one SVG: </${s[1]}> closes what is not open`;e.length===0&&(t=!0),r+=s[0].length;continue}let a=/^<([A-Za-z][A-Za-z0-9_.:-]*)/.exec(o);if(!a)return"it is not one SVG: it has markup a picture cannot hold";let d=a[1],l=Op[d.toLowerCase()];if(l)return l;if(t)return`it is not one SVG: <${d}> comes after it ends`;if(e.length===0&&d!=="svg")return"it is not one SVG";if(d.includes(":"))return`it has an element of another kind (<${d}>)`;if(!Ap.has(d))return`it has a <${d}> element, which a picture does not need`;let c=e[e.length-1];if(c&&_p.has(c))return`it has an element inside a <${c}>, which the page reads as HTML`;let p=a[0].length;for(let f=ac.exec(o.slice(p));f;f=ac.exec(o.slice(p))){let h=zp(d,f[1],f[2]??f[3]??"");if(h)return h;p+=f[0].length}let u=/^\s*(\/?)>/.exec(o.slice(p));if(!u)return/(?:^|[\s/"'])on[a-z]+\s*=/i.test(o.slice(p,p+400))?"it has an event handler (an on\u2026 attribute)":`it is not one SVG: <${d}>'s attributes are not each quoted and apart`;u[1]!=="/"?e.push(d):e.length===0&&(t=!0),r+=p+u[0].length}return e.length>0?`it is not one SVG: <${e[e.length-1]}> is never closed`:t?null:"it is not one SVG"}function lc(n){if(n){if(!dc(n)){if(/^\s*</.test(n))return;let e=/^\s*([a-z][a-z0-9+.-]*):/i.exec(n)?.[1]?.toLowerCase();return e===void 0||e==="http"||e==="https"||e==="data"&&/^\s*data:image\//i.test(n)?n:void 0}return uc(n)===null?`data:image/svg+xml,${encodeURIComponent(n.trim())}`:void 0}}var ir;function Np(){if(ir===void 0)try{ir=new RegExp("^\\p{RGI_Emoji}$","v")}catch{ir=null}return ir}function Ip(n){return/\p{Extended_Pictographic}|\p{Regional_Indicator}|⃣/u.test(n)}function ii(n){if(typeof n!="string"||n.trim()==="")return"it is empty; give one emoji, like \u{1F3E1}";let e=[...new Intl.Segmenter("en",{granularity:"grapheme"}).segment(n)].map(o=>o.segment),t=e.filter(Ip).length;if(t===0)return"it is not an emoji; give one emoji, like \u{1F3E1}";if(e.length>1)return t===e.length?`it is ${e.length} emoji, and a mark is one`:"it has other characters beside the emoji; give the emoji alone";let r=Np();return r&&!r.test(n)?"it is not one of the standard emoji every emoji set draws":null}function si(n){return typeof n=="object"&&n!==null&&typeof n.emoji=="string"?n.emoji:void 0}function fc(n){return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><text x="50" y="50" dy=".35em" font-size="88" text-anchor="middle">${n}</text></svg>`}function Tp(n){let e=n?.favicon;if(typeof e=="object"&&e!==null){let t=si(e);return t!==void 0&&ii(t)===null?`data:image/svg+xml,${encodeURIComponent(fc(t))}`:void 0}return lc(e)}function jp(n){let e=n?.logo;return typeof e=="string"?e===""?void 0:{light:e}:e&&typeof e.light=="string"&&e.light!==""?e:void 0}function Dp(n){if(n?.logo)return;let e=si(n?.favicon);return e!==void 0&&ii(e)===null?e:void 0}var pc={"system-sans":'ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif',"system-serif":'ui-serif, "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, Cambria, "Times New Roman", serif',"system-mono":nn.mono},Fp=["serif","sans-serif","monospace","cursive","fantasy","system-ui","math","emoji","-apple-system","BlinkMacSystemFont"],hc=["Georgia","Times New Roman","Times","Iowan Old Style","Palatino","Palatino Linotype","Charter","Cambria","Baskerville","Optima","Helvetica","Helvetica Neue","Arial","Verdana","Segoe UI","Roboto","Avenir","Avenir Next","Gill Sans","Menlo","Monaco","Consolas","SF Mono","SFMono-Regular","Courier New"];var Lp=n=>new Set(n.map(e=>e.toLowerCase()));function Zp(n){return Lp([...Fp,...hc]).has(n.toLowerCase())||n.toLowerCase().startsWith("ui-")}function Cp(n){return pc[n]??n}var gc=4.5,mc={r:255,g:255,b:255,a:1},Gp={r:0,g:0,b:0,a:1},En=n=>`#${[n.r,n.g,n.b].map(e=>Math.round(Math.max(0,Math.min(255,e))).toString(16).padStart(2,"0")).join("")}`,tn=(n,e)=>`rgba(${Math.round(n.r)}, ${Math.round(n.g)}, ${Math.round(n.b)}, ${e})`,ai=(n,e,t)=>({r:n.r+(e.r-n.r)*t,g:n.g+(e.g-n.g)*t,b:n.b+(e.b-n.b)*t,a:1});function Kp(n){return typeof n=="string"?{light:n}:{...n.light?{light:n.light}:{},...n.dark?{dark:n.dark}:{}}}function Vp(n){let e=ie(n)[0];if(!e)return;let{h:t,s:r}=Qe(e);return En(ke(t,Math.min(r,.45),.08))}function Bp(n,e,t){let{h:r,s:o}=Qe(t),i=ai(t,mc,.8);return{...n,ground:e,groundDeep:En(ai(t,Gp,.04)),panel:En(i),panelMuted:En(ai(t,mc,.55)),edge:tn(ke(r,Math.min(o,.5),.14),.14),bar:tn(i,.96),float:En(i)}}function Up(n,e,t){let{h:r,s:o,l:i}=Qe(t),s=a=>ke(r,o,Math.min(1,i+a));return{...n,ground:e,groundDeep:En(ke(r,o,i*.6)),panel:tn(s(.07),.96),panelMuted:tn(s(.035),.94),edge:tn(ke(r,Math.min(o,.45),.75),.18),bar:tn(t,.96),float:tn(s(.05),.98)}}function yc(n){if(n===void 0)return he;let e=Kp(n),t=e.dark??(e.light?Vp(e.light):void 0),r=e.light?ie(e.light)[0]:void 0,o=t?ie(t)[0]:void 0;return{light:r?Bp(he.light,e.light,r):he.light,dark:o?Up(he.dark,t,o):he.dark}}function aS(n,e){for(let t of["light","dark"]){let r=n[t],o=ie(r.ground)[0],i=ut(ie(r.panel)[0],o),s=[["ink",r.ink],["muted ink",r.inkMuted],["the accent",t==="light"&&e?e:r.accent]];for(let[a,d]of s){let l=ie(d)[0],c=Se(l,o),p=Se(l,i);if(c<gc)return{scheme:t,what:a,text:l,ground:o,ratio:c};if(p<gc)return{scheme:t,what:a,text:l,ground:o,card:i,ratio:p}}}return null}function fS(n,e){let t=yc(e),r=or({accent:n,base:t});return r.ok||!r.missing.every(o=>o.startsWith("warn"))?r:or({accent:n,base:t,warn:{light:he.light.bad,dark:he.dark.bad}})}function Wp(n,e,t){if(t.rows===0)return;let r=se(n,e.rows).toLowerCase(),o=se(n,e.columns).toLowerCase(),i=e.rows===e.columns,s=i?`link ${r} to each other`:`link ${r} to ${o}`;if(t.columns===0)return`No ${o} yet: ${s}.`;if(t.cells>0||typeof e.link=="object"&&e.link!==null)return;let a=H(n.tryDefinition(e.rows),e.rows);return i?`No ${a} is linked to another yet: ${s}.`:`No ${a} is linked to ${an(H(n.tryDefinition(e.columns),e.columns))} yet: ${s}.`}var ge={connectors:{all:{route:"curve",visible:!0},byEdge:{}},captions:{visible:!0},grid:{visible:!0,size:64},lattice:{visible:!0,size:46},tags:{visible:!0},emphasis:{rest:.34,dim:.12},marks:{flag:"\u26A0"}};function qp(n){return n?{connectors:{all:{...ge.connectors.all,...n.connectors?.all??{}},byEdge:{...ge.connectors.byEdge,...n.connectors?.byEdge??{}}},captions:{...ge.captions,...n.captions??{}},grid:{...ge.grid,...n.grid??{}},lattice:{...ge.lattice,...n.lattice??{}},tags:{...ge.tags,...n.tags??{}},emphasis:{...ge.emphasis,...n.emphasis??{}},marks:{...ge.marks,...n.marks??{}}}:ge}function Hp(n,e){return{...n.connectors.all,...n.connectors.byEdge[e]??{}}}function Yp(n){return[` --graview-kit-grid: ${n.grid.visible?1:0};`,` --graview-kit-grid-size: ${n.grid.size}px;`,` --graview-kit-lattice: ${n.lattice.visible?1:0};`,` --graview-kit-lattice-size: ${n.lattice.size}px;`,` --graview-kit-tags: ${n.tags.visible?"inline-flex":"none"};`,` --graview-kit-captions: ${n.captions.visible?"block":"none"};`,` --graview-kit-rest: ${n.emphasis.rest};`,` --graview-kit-dim: ${n.emphasis.dim};`,` --graview-kit-flag: "${n.marks.flag.replace(/"/g,"'")}";`].join(`
|
|
5
|
-
`)}function Jp(n,e,t){let r=new Set([e]);for(let[o,i]of t.entries()){let s=n.edge(i);if(!s)return{ok:!1,at:o};let a=s.from,d=s.to==="*"?n.kinds:s.to,l=new Set;for(let c of r){if(a.includes(c))for(let p of d)l.add(p);if(s.to==="*"||d.includes(c))for(let p of a)l.add(p)}if(l.size===0)return{ok:!1,at:o};r=l}return{ok:!0,reached:r}}export{un as a,js as b,Ds as c,gu as d,Zr as e,Kn as f,Vn as g,L as h,dy as i,cy as j,Ke as k,uy as l,ly as m,fy as n,Cr as o,py as p,Pe as q,ln as r,hy as s,gy as t,my as u,Us as v,Ws as w,X as x,yy as y,St as z,by as A,vy as B,j as C,Iu as D,cr as E,sn as F,ft as G,Xp as H,ee as I,bc as J,vc as K,di as L,ht as M,xc as N,Ae as O,ur as P,ci as Q,lr as R,Sc as S,$c as T,me as U,Rc as V,Ac as W,_c as X,Oc as Y,Pc as Z,Fn as _,fi as $,pi as aa,Mc as ba,pr as ca,C as da,zc as ea,V as fa,Nc as ga,se as ha,Ic as ia,Tc as ja,mt as ka,an as la,H as ma,Tu as na,$t as oa,Vr as pa,qs as qa,Hs as ra,Ys as sa,ju as ta,Bn as ua,Xs as va,xb as wa,At as xa,nc as ya,Tk as za,Cu as Aa,Ku as Ba,na as Ca,Vu as Da,$b as Ea,Un as Fa,Bu as Ga,Wu as Ha,Rb as Ia,Ab as Ja,qu as Ka,ra as La,dp as Ma,_t as Na,Hu as Oa,pn as Pa,qn as Qa,Ot as Ra,Pb as Sa,hn as Ta,fn as Ua,ua as Va,Xu as Wa,qr as Xa,Hn as Ya,Ve as Za,Tb as _a,Hr as $a,Et as ab,el as bb,mn as cb,z as db,Jn as eb,M as fb,U as gb,Q as hb,ol as ib,It as jb,ov as kb,il as lb,sl as mb,up as nb,Tt as ob,re as pb,D as qb,W as rb,ze as sb,Ne as tb,gv as ub,ka as vb,vn as wb,I as xb,xn as yb,Ue as zb,oe as Ab,ll as Bb,fe as Cb,Yl as Db,Eo as Eb,fd as Fb,An as Gb,zx as Hb,zo as Ib,md as Jb,yd as Kb,No as Lb,Te as Mb,Oo as Nb,rt as Ob,of as Pb,bd as Qb,Iv as Rb,Ea as Sb,Tv as Tb,jv as Ub,df as Vb,lf as Wb,To as Xb,Do as Yb,Fo as Zb,Lo as _b,Rd as $b,Bt as ac,mf as bc,Ut as cc,qe as dc,Qo as ec,lp as fc,it as gc,_n as hc,Kk as ic,Vk as jc,Dt as kc,po as lc,go as mc,Ta as nc,ml as oc,ja as pc,wl as qc,xp as rc,ti as sc,wp as tc,he as uc,nn as vc,Sp as wc,$p as xc,dc as yc,uc as zc,lc as Ac,Tp as Bc,jp as Cc,Dp as Dc,Zp as Ec,Cp as Fc,yc as Gc,aS as Hc,fS as Ic,Cf as Jc,Wp as Kc,qp as Lc,Hp as Mc,Yp as Nc,kl as Oc,Sl as Pc,$l as Qc,Rl as Rc,He as Sc,tt as Tc,pe as Uc,nt as Vc,Ye as Wc,Sn as Xc,Ct as Yc,$n as Zc,Gl as _c,Al as $c,_l as ad,Jp as bd,Rf as cd,Af as dd,dd as ed,_f as fd,Bd as gd,On as hd,Uo as id,Mf as jd,zf as kd,Nf as ld,Ud as md,qo as nd,If as od,Tf as pd,we as qd,dt as rd,jf as sd,Df as td,Wd as ud,Ff as vd,Lf as wd,qd as xd,ct as yd,Gf as zd,Yd as Ad,Jd as Bd,Vf as Cd,Bf as Dd,Uf as Ed,Wf as Fd,Xd as Gd,qf as Hd,Hf as Id,Yf as Jd,Jf as Kd,Xf as Ld,Qf as Md,Jo as Nd,ep as Od,np as Pd,tp as Qd,rp as Rd,op as Sd,ip as Td,sp as Ud};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as _}from"./chunk.7UD2JR6J.js";import{a as ie,b as de,c as se,d as le,e as V,f as L,g as ue}from"./chunk.BUDEUNBN.js";import{a as fe}from"./chunk.3IEJQAK7.js";import{c as T,e as ae}from"./chunk.AKLVSZ5A.js";import{a as j,b as ee,c as ne,d as re,f as E,m as te,n as b,o as oe,p as B,q as P}from"./chunk.ZUBC3UFG.js";import{b as x,d as ye,e as pe,g as me,h as ce,i as ge}from"./chunk.TUNHUTQ5.js";import{C as v,Da as Y,I as H,Ib as q,Jb as Q,Kb as C,R as K,U as F,_ as J,da as X,ka as N,ma as Z,ra as G,sa as A,ta as z,ua as O,va as M}from"./chunk.3MZIWKNG.js";var he=e=>e.caption?.trim()||e.name,I=e=>A(e)?`${he(e)}, ${z(e)}`:he(e);function nn(e){let n=Math.max(0,Math.round(e)),t=a=>String(a).padStart(2,"0"),r=Math.floor(n/3600),o=Math.floor(n%3600/60);return r>0?`${r}:${t(o)}:${t(n%60)}`:`${o}:${t(n%60)}`}function Be(e){let n=e?.fields?.shape??{};return Object.keys(n).filter(t=>{let r=v(n[t]);for(;r?.innerType;)r=v(r.innerType);return M(n[t])!==void 0||r?.type==="array"&&M(r.element)!==void 0})}function rn(e,n){for(let t of Be(n)){let r=O(e[t]).find(o=>G(o)||A(o));if(r)return r}}var k=e=>{try{return e()}catch{return null}},Oe=e=>typeof e=="string"&&ie.includes(e);function Pe(e){if(e!==void 0)return Oe(e)?e:e&&typeof e=="object"&&typeof e.expr=="string"?{expr:k(()=>T(e.expr))}:"neutral"}var ve=4;function Fe(e){let n=typeof e.list=="string"?k(()=>T(e.list)):null,t=e.sort,r=typeof t=="string"?t:t&&typeof t=="object"&&typeof t.by=="string"?t.by:void 0,o=t&&typeof t=="object"?t.direction:void 0,a=n,d;if(n&&r!==void 0)if(o==="choices")d=r;else{let y=k(()=>T(r));a=y?{t:"call",fn:"sort",args:[n,y,{t:"lit",value:o==="desc"?"desc":"asc",at:0}],at:0}:null}let l=typeof e.limit=="number"&&Number.isInteger(e.limit)&&e.limit>=1?Math.min(e.limit,V):void 0,i=e.group,s=typeof i=="string"?i:i&&typeof i=="object"&&typeof i.by=="string"?i.by:void 0,f=i&&typeof i=="object"&&i.headings&&typeof i.headings=="object"?i.headings:{};return{t:"list",source:a,...d?{choiceOrder:d}:{},...l?{limit:l}:{},...s?{group:{by:s,headings:Object.fromEntries(Object.entries(f).filter(y=>typeof y[1]=="string"))}}:{},...typeof e.empty=="string"?{empty:e.empty}:{},as:e.as==="card"?"card":"row"}}function be(e,n=1,t=""){if(!Array.isArray(e)||n>ve)return[];let r={};return e.flatMap(o=>{if(!o||typeof o!="object"||Array.isArray(o))return[];let a=o,d=p=>typeof p=="string"?k(()=>ae(p)):null,l=p=>typeof p=="string"?k(()=>T(p)):null,i=Pe(a.tone),s=typeof a.label=="string"?a.label:void 0,f=p=>Object.hasOwn(a,p),y=typeof a.currency=="string"&&/^[A-Z]{3}$/.test(a.currency)?a.currency:void 0,u=f("list")?"list":f("headline")?"headline":typeof a.figure=="string"?"number":Ne.find(f);if(!u)return[];let m=r[u]=(r[u]??0)+1,c=a.key,R=typeof c=="string"&&c?c:`${t}${u}.${m}`;return[{...(()=>{switch(u){case"list":return Fe(a);case"number":{let p=se.includes(a.as)?a.as:void 0,W=le.includes(a.emphasis)?a.emphasis:void 0;return{t:u,value:l(a.figure),...p?{as:p}:{},...y?{currency:y}:{},...s?{label:d(s)}:{},...W?{emphasis:W}:{}}}case"headline":case"title":return{t:u,parts:d(a[u])};case"text":case"badge":return{t:u,parts:d(a[u]),...i?{tone:i}:{}};case"field":{let p=de.includes(a.as)?a.as:void 0;return{t:u,field:String(a.field),...p?{as:p}:{},...y?{currency:y}:{},...s?{label:s}:{}}}case"image":return{t:u,field:String(a.image),as:a.as==="gallery"?"gallery":"thumb",...s?{label:s}:{}};case"progress":{let p=a.progress??{};return{t:u,value:l(p.value),max:l(p.max),...s?{label:d(s)}:{}}}case"group":return{t:u,blocks:be(a.group,n+1,`${R}.`),direction:a.direction==="row"?"row":"column"};case"when":return{t:u,when:l(a.when),show:be(a.show,n+1,`${R}.`)};default:return{t:u}}})(),key:R}]})}var Ne=["title","text","badge","field","image","progress","group","when","divider","figure"],g="\u2014",Me=500;function w(e,n){if(!e)return{ok:!1,problem:"an expression that does not parse"};try{return{ok:!0,value:E(e,{graph:n.graph??te,subject:n.node,kinds:n.kinds,today:n.today,budget:n.budget??Me})}}catch(t){return{ok:!1,problem:t instanceof Error?t.message:String(t)}}}var Ce=(e,n,t)=>!e.format&&e.expr?.t==="ident"&&typeof t=="string"&&n.fields[e.expr.name]?.format==="markdown";function S(e,n,t){if(!e)return{text:g,problem:"a template that does not parse"};let r,o;return{text:e.map(d=>{if(d.text!==void 0)return d.text;let l=w(d.expr??null,n);if(!l.ok)return r??=`{${d.source??""}}: ${l.problem}`,g;if(Ce(d,n,l.value))return n.glance?ye(l.value,{markdown:!0}):t&&e.length===1?(o=!0,l.value):pe(l.value);let i=!d.format&&d.expr?.t==="ident"&&typeof l.value=="number"?Te(n,d.expr.name):void 0;return oe(d,i?C(l.value,i):b(l.value,d.format,n.today,d.formatArgs,n.money,P(n.schema)))}).join(""),...r?{problem:r}:{},...o?{markdown:o}:{}}}var Ve=" \xB7 ";function Le(e,n){if(!e||!n.node)return;let t=[[]];for(let d of e){if(d.text===void 0){t[t.length-1].push(d);continue}d.text.split(Ve).forEach((i,s)=>{s>0&&t.push([]),i!==""&&t[t.length-1].push({text:i})})}if(t.length<2)return;let r=d=>{let[l]=d;if(!(d.length!==1||!l||l.format||l.expr?.t!=="ident"))return n.fields[l.expr.name]?.type==="enum"?l.expr.name:void 0},o=0,a=t.flatMap(d=>{let l=r(d);if(l){let s=Object.hasOwn(n.node,l)?n.node[l]:void 0;return s==null||s===""?[]:(o++,[{text:x(n.definition,l,s),field:l}])}let i=S(d,n).text.trim();return i===""||i===g?[]:[{text:i}]});return o>0?a:void 0}function we(e,n){if(e===void 0)return;if(typeof e=="string")return e;let t=w(e.expr,n);return t.ok&&Oe(t.value)?t.value:"neutral"}function _e(e){if(typeof e=="string")try{let n=new URL(e);return n.protocol==="http:"||n.protocol==="https:"?n.href:void 0}catch{return}}var je=(e,n)=>{let t=e.fields[n]?.type;return t==="phone"||t==="place"||t==="duration"?t:me(e.definition,n)},Te=(e,n)=>q(e.definition?.fields?.shape?.[n]);function Ie(e,n,t,r,o){if(n==null||n==="")return g;if(typeof n=="boolean")return n?"yes":"no";if(r)return b(n,r,t.today,[],o?{...t.money,currency:o}:t.money);let a=t.fields[e];if(t.definition?.display?.format?.[e])return x(t.definition,e,n);let d=ce(je(t,e),n,t.money?.locale);if(d!==void 0)return d;if(a?.type==="date")return b(n,"date",t.today,[],t.money);if(a?.type==="datetime"&&typeof n=="string")return K(n,t.money?.locale,t.money?.timeZone);if(a?.type==="enum"&&typeof n=="string")return x(t.definition,e,n);let l=typeof n=="number"?Te(t,e):void 0;if(l)return C(n,l);if(typeof n=="number")return F(n,t.money?.locale,{});let i=O(n);return i[0]?i.map(I).join(", "):Array.isArray(n)?n.map(s=>String(s)).join(", "):typeof n=="object"?g:String(n)}function De(e,n,t,r,o){return typeof e!="number"?String(e):n==="money"?Q(e,t?{...o,currency:t}:o):n==="percent"?b(e,n,r,[],o):F(e,o?.locale)}var h=(e,n)=>n?{...e,problem:n}:e;function Se(e){return e.firstHeading===void 0?e:{...e,firstHeading:void 0}}function $e(e,n,t){switch(e.t){case"title":{let r=S(e.parts,n);return h({t:"title",text:r.text},r.problem)}case"text":{let r=S(e.parts,n,!0),o=we(e.tone,n),a=n.glance&&!r.problem?Le(e.parts,n):void 0;return h({t:"text",text:r.text,...o?{tone:o}:{},...r.markdown?{markdown:r.markdown}:{},...a?{runs:a}:{}},r.problem)}case"badge":{let r=S(e.parts,n);return h({t:"badge",text:r.text,tone:we(e.tone,n)??"neutral"},r.problem)}case"field":{let r=e.label??N(n.definition,e.field);if(!n.node)return{t:"field",field:e.field,label:r,text:g,problem:`"${e.field}" names a field, and these blocks are about no one record`};let o=e.as===void 0?n.kinds.get(n.node.kind)?.linked?.get(e.field):void 0;if(o){let y=Y(Object.hasOwn(n.node,e.field)?n.node[e.field]:void 0,o);return{t:"field",field:e.field,label:r,text:y.length>0?"linked record":g,...y.length>0?{linked:{relation:o,refs:y}}:{}}}let a=n.kinds.get(n.node.kind)?.computed?.has(e.field),d,l;if(a){let y=w({t:"ident",name:e.field,at:0},n);y.ok?d=y.value!==null&&typeof y.value=="object"?b(y.value,void 0,n.today,[],n.money,P(n.schema)):y.value:l=y.problem}else d=Object.hasOwn(n.node,e.field)?n.node[e.field]:void 0;let i=e.as!==void 0?void 0:n.fields[e.field]?.type==="url"?_e(d):ge(je(n,e.field),d),s=k(()=>Ie(e.field,d,n,e.as,e.currency))??g,f=n.fields[e.field]?.type==="app-link"&&e.as===void 0&&typeof d=="string"?d:void 0;return h({t:"field",field:e.field,label:r,text:s,...i?{href:i}:{},...f?{app:f}:{}},l)}case"image":{let r=O(n.node&&Object.hasOwn(n.node,e.field)?n.node[e.field]:null),o=e.as==="gallery"?r:r.filter(a=>G(a)||A(a)).slice(0,1);return{t:"image",field:e.field,label:e.label??N(n.definition,e.field),as:e.as,files:o,text:o.map(I).join(", ")||g}}case"progress":{let r=w(e.value,n),o=w(e.max,n),a=e.label?S(e.label,n):{text:"Progress"},d=e.label?B(e.label,a.text):a.text,l=r.ok?o.ok?a.problem:o.problem:r.problem;return r.ok&&o.ok&&typeof r.value=="number"&&typeof o.value=="number"&&Number.isFinite(r.value)&&Number.isFinite(o.value)&&o.value>0?h({t:"progress",label:d,value:r.value,max:o.value,text:`${b(r.value,void 0,n.today)} of ${b(o.value,void 0,n.today)}`},l):h({t:"progress",label:d,text:g},l)}case"group":return{t:"group",direction:e.direction,blocks:Re(e.blocks,Se(n))};case"when":{let r=w(e.when,n),o=r.ok&&r.value===!0;return h({t:"when",shown:o,blocks:o?Re(e.show,Se(n)):[]},r.ok?void 0:r.problem)}case"divider":return{t:"divider"};case"figure":return{t:"figure"};case"headline":{let r=S(e.parts,n),o=Math.min(6,Math.max(1,(t?n.firstHeading:void 0)??n.heading??3));return h({t:"headline",level:o,text:e.parts?B(e.parts,r.text):r.text},r.problem)}case"number":{let r=w(e.value,n),o=!r.ok||r.value===null||typeof r.value=="object"?g:De(r.value,e.as,e.currency,n.today,n.money),a=e.label?S(e.label,n):void 0;return h({t:"number",text:o,...a&&e.label?{label:B(e.label,a.text)}:{},...e.emphasis?{emphasis:e.emphasis}:{}},r.ok?a?.problem:r.problem)}case"list":return We(e,n)}}function Re(e,n){let t=e.findIndex(r=>r.t==="headline");return e.map((r,o)=>({...$e(r,n,o===t),key:r.key}))}function ke(e,n){let t=n.trim().toLowerCase();return e.some(r=>{switch(r.t){case"title":case"headline":return r.text.trim()!=="";case"text":case"badge":return t!==""&&r.text.toLowerCase().includes(t);case"group":return ke(r.blocks,n);case"when":return r.shown&&ke(r.blocks,n);default:return!1}})}var Ue=new Set(["every","some","sum","min","max","sort"]);function An(e,n){let t=new Set,r=new Set,o=i=>{if(i)switch(i.t){case"ident":t.add(i.name);return;case"list":i.items.forEach(o);return;case"member":return o(i.object);case"unary":return o(i.operand);case"binary":return o(i.left),o(i.right);case"where":return o(i.set);case"call":i.args.forEach((s,f)=>{f===1&&Ue.has(i.fn)||o(s)});return;default:return}},a=i=>{for(let s of i??[])o(s.expr)},d=(i,s)=>{i.forEach((f,y)=>{let u=s[y];if(u)switch(f.t){case"field":case"image":t.add(f.field);return;case"title":case"text":case"badge":case"headline":a(f.parts);return;case"number":o(f.value),a(f.label);return;case"progress":o(f.value),o(f.max);return;case"group":u.t==="group"&&d(f.blocks,u.blocks);return;case"when":u.t==="when"&&u.shown&&d(f.show,u.blocks);return;case"list":if(u.t==="list")for(let m of u.members)r.add(m.id);return;default:return}})};d(e,n);let l=n[0];return{fields:t,records:r,...e[0]?.t==="title"&&l?.t==="title"?{title:l.text}:{}}}function We(e,n){let t=Math.min(6,(n.heading??3)+1),r=w(e.source,n);if(!r.ok)return{t:"list",as:e.as,failed:!0,members:[],headingLevel:t,more:0,problem:r.problem};let o=r.value,a=o instanceof j?o.nodes:o!==null&&typeof o=="object"&&!Array.isArray(o)?[o]:[];e.choiceOrder&&n.schema&&(a=He(a,e.choiceOrder,n.schema));let d=a.length,l=a.slice(0,e.limit??V),i=l.slice(0,L),s=l.slice(L),f=(e.limit===void 0?d:l.length)-i.length,y=c=>e.group&&n.schema&&c.length>0?Ke(c,e.group,n.schema,n.graph):void 0,u=y(i),m=s.length>0?y(l):void 0;return{t:"list",as:e.as,failed:!1,members:i,...s.length>0?{rest:s}:{},...u?{groups:u}:{},...m?{everyGroup:m}:{},headingLevel:t,...i.length===0&&e.empty?{empty:e.empty}:{},more:f,total:d}}function D(e,n,t){let r=e.tryDefinition(n)?.fields?.shape,o=r&&Object.hasOwn(r,t)?_(r[t]):void 0;return o?.type==="enum"?o.options??[]:[]}var $=(e,n)=>Object.hasOwn(e,n)?e[n]:void 0;function He(e,n,t){let r=o=>{let a=D(t,o.kind,n).indexOf(String($(o,n)));return a<0?Number.MAX_SAFE_INTEGER:a};return e.map((o,a)=>({node:o,i:a,rank:r(o)})).sort((o,a)=>o.rank-a.rank||o.i-a.i).map(o=>o.node)}function Ke(e,n,t,r){let o=e.some(i=>D(t,i.kind,n.by).length>0)?void 0:ue(n.by);if(o&&r)return Je(e,o,n.headings,t,r);let a=[];for(let i of e)for(let s of D(t,i.kind,n.by))a.includes(s)||a.push(s);let d=[];for(let i of a){let s=e.filter(y=>$(y,n.by)===i);if(s.length===0)continue;let f=t.tryDefinition(s[0].kind);d.push({value:i,heading:n.headings[i]??J(x(f,n.by,i)),members:s})}let l=e.filter(i=>!a.includes(String($(i,n.by))));return l.length>0&&d.push({value:null,members:l}),d}function Je(e,n,t,r,o){let a=u=>n.way??(Object.hasOwn(r.tryDefinition(u.kind)?.edges??{},n.edge)?"out":"in"),d=new Map,l=[],i=P(r),s;for(let u of e){let m=a(u)==="out"?o.out(u.id,n.edge):o.in(u.id,n.edge);m.length===0&&l.push(u);for(let c of m){s??=c.kind;let R=d.get(c.id)??{node:c,members:[]};R.members.push(u),d.set(c.id,R)}}let f=[...d.values()].map(({node:u,members:m})=>({value:u.id,heading:t[u.id]??i(u),members:m})).sort((u,m)=>u.heading.localeCompare(m.heading,void 0,{numeric:!0}));!s&&e[0]&&a(e[0])==="out"&&(s=(r.tryDefinition(e[0].kind)?.edges??{})[n.edge]?.to?.[0]);let y=s&&s!=="*"?Z(r.tryDefinition(s),s):void 0;return l.length>0&&f.push({value:null,...y?{heading:`No ${y}`}:{},members:l}),f}function Ae(e){return e.t==="list"||e.t==="headline"||e.t==="number"||e.t==="image"&&e.as==="gallery"?!0:e.t==="group"?e.blocks.some(Ae):e.t==="when"?e.show.some(Ae):!1}function xe(e,n){let t=e.tryDefinition(n)?.fields?.shape??{},r={};for(let[o,a]of Object.entries(t)){let d=_(a);d&&(r[o]=d)}return r}var Ge=new WeakMap;function U(e){let n=Ge.get(e);return n||Ge.set(e,n=fe(e)),n}function Xe(e,n,t,r={}){let o=U(e),a={},d={},l=i=>{if(i instanceof j)return i.nodes.map(s=>l(s));if(Array.isArray(i))return i.map(s=>l(s));if(i!==null&&typeof i=="object"){let s=i;return{id:s.id,kind:s.kind,label:X(e.tryDefinition(s.kind),s)}}return i};for(let[i,s]of o.get(t?t.kind:ne)?.computed??[])try{let f=[],y=E(s,{graph:n,subject:t,kinds:o,...r.today?{today:r.today}:{},...r.budget?{budget:r.budget}:{},...r.linked?{linked:r.linked}:{},onUnread:u=>f.push(u)});f.length>0&&(y===null||y instanceof j&&y.nodes.length===0)?d[i]=ee(f[0]):a[i]=l(y)}catch(f){if(!(f instanceof re))throw f;d[i]=f.sentence}return{values:a,refused:d}}function Gn(e,n,t){let{values:r}=Xe(e,n,t);if(Object.keys(r).length===0)return t;let o=a=>Array.isArray(a)?a.map(o):a!==null&&typeof a=="object"?a.label:a;return{...t,...Object.fromEntries(Object.entries(r).map(([a,d])=>[a,o(d)]))}}var Ze=500,ze=2e4,Ee=new WeakMap;function Ye(e,n){let t=Ee.get(e);t||Ee.set(e,t=new Map);let r=t.get(n);return r||t.set(n,r=xe(e,n)),r}function Fn(e,n,t,r={}){if(n&&typeof e.seenBy!="function")throw new TypeError("blockContextFor: a seat is read from a store (its `seenBy`); a bare { graph, schema } is read as it is handed, with no principal");let o=n?e.seenBy(n):e,a=n&&t?o.graph.getNode(t.id)??null:t,d=o.schema,l=a&&d.tryDefinition(a.kind),i=!a||(r.slot??"page")==="page",{money:s,firstHeading:f}=r;return{node:a,graph:o.graph,schema:d,kinds:U(d),fields:a?Ye(d,a.kind):{},definition:l||void 0,today:r.today??o.today?.()??H(s?.timeZone),money:s,heading:r.heading??(i?2:3),firstHeading:f,budget:r.budget??(i?ze:Ze),...i?{}:{glance:!0}}}export{he as a,nn as b,Be as c,rn as d,be as e,Re as f,ke as g,An as h,Ae as i,Xe as j,Gn as k,Fn as l};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a,b,c,d,e,f,g,h,i,j,k}from"./chunk.MVRNEC3Y.js";import"./chunk.45HTFSWD.js";import"./chunk.AG7CUSSV.js";import"./chunk.3V2WXZU3.js";import"./chunk.7UD2JR6J.js";import"./chunk.BUDEUNBN.js";import"./chunk.3IEJQAK7.js";import"./chunk.AKLVSZ5A.js";import"./chunk.ZUBC3UFG.js";import"./chunk.RLO3RDYH.js";import"./chunk.TUNHUTQ5.js";import"./chunk.3MZIWKNG.js";import"./chunk.SLBWPVIY.js";import"./chunk.AJZBJBMO.js";export{g as columnActs,d as columnChoices,c as columnMoves,b as columnOf,e as columnReach,f as columnSteps,j as describePlace,k as placeText,h as resolveFor,i as shadowedPageSlots,a as statusColumns};
|