graview 0.1.58 → 0.1.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/preview/{chunk.27CW6SCT.js → chunk.2FOIJ5ID.js} +1 -1
- package/dist/preview/{chunk.JB7TTJXQ.js → chunk.2FP4KEEG.js} +1 -1
- package/dist/preview/{chunk.PBCNOFQH.js → chunk.2MFXP3FB.js} +1 -1
- package/dist/preview/{chunk.XU34T2H4.js → chunk.2NJDT47T.js} +1 -1
- package/dist/preview/{chunk.EPPXZZPK.js → chunk.2QESVWUW.js} +1 -1
- package/dist/preview/{chunk.IDJPBWL2.js → chunk.2XTCDFWU.js} +1 -1
- package/dist/preview/{chunk.WXIEQZLY.js → chunk.3UTRR5YM.js} +1 -1
- package/dist/preview/{chunk.INZQ6WZM.js → chunk.3XIIJHQ6.js} +1 -1
- package/dist/preview/chunk.3XLOFZRM.js +1 -0
- package/dist/preview/{chunk.POBMGM3X.js → chunk.4OMOP77U.js} +1 -1
- package/dist/preview/{chunk.WNQFHMNR.js → chunk.4QWTSI7V.js} +1 -1
- package/dist/preview/{chunk.4HSH2UIK.js → chunk.4T5QIZKB.js} +2 -2
- package/dist/preview/chunk.6BLNFVB4.js +1 -0
- package/dist/preview/{chunk.ACYDJQRC.js → chunk.6E36I2GC.js} +1 -1
- package/dist/preview/{chunk.YD3TKV6P.js → chunk.6IUEGPCZ.js} +2 -2
- package/dist/preview/{chunk.M34CS7DI.js → chunk.6N7LNTB6.js} +1 -1
- package/dist/preview/chunk.6O3YPUW3.js +1 -0
- package/dist/preview/{chunk.GEB2DFBU.js → chunk.6VNKGTLF.js} +1 -1
- package/dist/preview/{chunk.JGKA5QBX.js → chunk.7AMBLGVB.js} +1 -1
- package/dist/preview/{chunk.NFX24NUI.js → chunk.7JOG6XFC.js} +1 -1
- package/dist/preview/chunk.7XSDXX5Z.js +1 -0
- package/dist/preview/{chunk.HZB5F476.js → chunk.ATSKKTUO.js} +1 -1
- package/dist/preview/{chunk.HXRV3WVJ.js → chunk.ATVPAYS6.js} +1 -1
- package/dist/preview/{chunk.KKNDX4JT.js → chunk.AXXYJCSW.js} +1 -1
- package/dist/preview/{chunk.O4CVKTPJ.js → chunk.B5HLA45D.js} +1 -1
- package/dist/preview/{chunk.LRUNFSHP.js → chunk.BDBLGGFJ.js} +1 -1
- package/dist/preview/{chunk.A6C4AGJJ.js → chunk.BFN6B4C4.js} +1 -1
- package/dist/preview/{chunk.TJ647W6J.js → chunk.BPC4XQFZ.js} +2 -2
- package/dist/preview/{chunk.7V23SXGJ.js → chunk.CIB65YO6.js} +1 -1
- package/dist/preview/chunk.CJUIJ6TL.js +1 -0
- package/dist/preview/{chunk.KJHPDL4N.js → chunk.CLR6KAA3.js} +1 -1
- package/dist/preview/{chunk.4KC35UNR.js → chunk.CUJX3IVA.js} +4 -2
- package/dist/preview/{chunk.ILRCNTGT.js → chunk.CYUMQPMH.js} +1 -1
- package/dist/preview/{chunk.7SQAKSJD.js → chunk.CZH27V2R.js} +1 -1
- package/dist/preview/chunk.D3AISGQH.js +1 -0
- package/dist/preview/{chunk.KJ264E6K.js → chunk.DGM3Y2FB.js} +1 -1
- package/dist/preview/{chunk.HMFJT4KO.js → chunk.DO45KXLM.js} +1 -1
- package/dist/preview/{chunk.IULQRCEE.js → chunk.DWHPZBPZ.js} +1 -1
- package/dist/preview/{chunk.NKC3JILT.js → chunk.E22DDEQI.js} +1 -1
- package/dist/preview/chunk.E2REVMAG.js +6 -0
- package/dist/preview/{chunk.E34OQVSR.js → chunk.E4SYOBGB.js} +1 -1
- package/dist/preview/{chunk.TJOXNEFU.js → chunk.EGJUFZD5.js} +1 -1
- package/dist/preview/chunk.EZ3CRUBU.js +21 -0
- package/dist/preview/{chunk.LMN4TSAP.js → chunk.F6P3WSMW.js} +1 -1
- package/dist/preview/{chunk.4Y2JTY6Q.js → chunk.FJTVY6AE.js} +1 -1
- package/dist/preview/chunk.G2TCFWYX.js +1 -0
- package/dist/preview/{chunk.TWKXSLYY.js → chunk.G7HIAUEA.js} +1 -1
- package/dist/preview/{chunk.64R3K2OE.js → chunk.GDUM2UOM.js} +1 -1
- package/dist/preview/chunk.GQHFLOTZ.js +5 -0
- package/dist/preview/{chunk.DBZHRYBK.js → chunk.GR2B7SKI.js} +1 -1
- package/dist/preview/{chunk.GCBZ3WE2.js → chunk.HF5SNUTK.js} +1 -1
- package/dist/preview/{chunk.VUPLFUUS.js → chunk.HJOVOA52.js} +1 -1
- package/dist/preview/{chunk.QGV7H7RQ.js → chunk.HKINU7VO.js} +1 -1
- package/dist/preview/{chunk.GZB6A6KF.js → chunk.HVUUJQRE.js} +1 -1
- package/dist/preview/{chunk.34TW32TB.js → chunk.IIESMHXY.js} +2 -2
- package/dist/preview/{chunk.GQBJVCSM.js → chunk.IPPZEGBX.js} +1 -1
- package/dist/preview/{chunk.WNSC3RWD.js → chunk.IZ2ZTNEV.js} +1 -1
- package/dist/preview/{chunk.OHQ3JH65.js → chunk.J4HTSXUA.js} +1 -1
- package/dist/preview/{chunk.B3WZHPM3.js → chunk.JPNBQFJ3.js} +1 -1
- package/dist/preview/{chunk.ELAMMS2V.js → chunk.KE6ZRUMP.js} +1 -1
- package/dist/preview/{chunk.ELERUERU.js → chunk.KHZA5F7A.js} +1 -1
- package/dist/preview/{chunk.TF5I4VHX.js → chunk.KKQXGN5U.js} +1 -1
- package/dist/preview/{chunk.U6O3MMQR.js → chunk.KOGUYWHG.js} +1 -1
- package/dist/preview/{chunk.YHTE34RN.js → chunk.KSVJHSRH.js} +1 -1
- package/dist/preview/{chunk.JES77WXG.js → chunk.L3K25NCS.js} +1 -1
- package/dist/preview/chunk.LDLTQNJ2.js +1 -0
- package/dist/preview/{chunk.LL2MLSPH.js → chunk.LDYOQCY7.js} +1 -1
- package/dist/preview/{chunk.F7SF6EP2.js → chunk.LHJWII6C.js} +1 -1
- package/dist/preview/{chunk.E5MSFXL6.js → chunk.LKE2FBXL.js} +1 -1
- package/dist/preview/{chunk.RRKYJYZJ.js → chunk.M3JIIF32.js} +1 -1
- package/dist/preview/{chunk.BB33TI4S.js → chunk.MHILFBK6.js} +1 -1
- package/dist/preview/chunk.MMWLLWFS.js +1 -0
- package/dist/preview/{chunk.2VYNNWW5.js → chunk.MOAUE3N2.js} +3 -3
- package/dist/preview/{chunk.LCPGZK7G.js → chunk.MRYN42EQ.js} +1 -1
- package/dist/preview/{chunk.JUNMJYH5.js → chunk.MZJ3KTEU.js} +1 -1
- package/dist/preview/{chunk.GKSUTAIX.js → chunk.N4LOI3YA.js} +1 -1
- package/dist/preview/{chunk.LY3YOWKV.js → chunk.NIFQDN6R.js} +1 -1
- package/dist/preview/chunk.NOLGJFA4.js +2 -0
- package/dist/preview/{chunk.3YZHZGTM.js → chunk.NSGQXCH6.js} +1 -1
- package/dist/preview/{chunk.HEWVPXRE.js → chunk.OLW44AP5.js} +1 -1
- package/dist/preview/{chunk.PZG3B7F4.js → chunk.OVSZXILB.js} +1 -1
- package/dist/preview/{chunk.ZOHMWSHD.js → chunk.P3CUCDHO.js} +1 -1
- package/dist/preview/{chunk.UAP5M3CD.js → chunk.P52UTBNO.js} +2 -2
- package/dist/preview/{chunk.XN2RVXOI.js → chunk.P6CHNBRR.js} +1 -1
- package/dist/preview/chunk.PCVPH5KM.js +1 -0
- package/dist/preview/{chunk.ETBFD76E.js → chunk.PS5SEND3.js} +1 -1
- package/dist/preview/chunk.Q355UPFG.js +1 -0
- package/dist/preview/{chunk.QPXXY2DL.js → chunk.Q3Y5EV5A.js} +3 -3
- package/dist/preview/{chunk.LDAYDCUO.js → chunk.Q6LLURRM.js} +1 -1
- package/dist/preview/{chunk.YS6GVLIP.js → chunk.QC4YXFF7.js} +1 -1
- package/dist/preview/chunk.QDZAITMN.js +1 -0
- package/dist/preview/chunk.QHU3KUZZ.js +1 -0
- package/dist/preview/{chunk.SDLUWRGI.js → chunk.QL555VQ2.js} +1 -1
- package/dist/preview/{chunk.CCWPF5PK.js → chunk.QLTHHWBA.js} +1 -1
- package/dist/preview/{chunk.4AFFPYOK.js → chunk.QT6UV7HN.js} +1 -1
- package/dist/preview/{chunk.4444RPWW.js → chunk.QXMQUIQZ.js} +1 -1
- package/dist/preview/{chunk.KWJWAIQJ.js → chunk.R4YDAJRL.js} +1 -1
- package/dist/preview/{chunk.5ICIMQE6.js → chunk.RKZ4J3H2.js} +1 -1
- package/dist/preview/{chunk.RE7DELSR.js → chunk.ROHSF4WM.js} +1 -1
- package/dist/preview/{chunk.S2H7B6RG.js → chunk.S6VON4LU.js} +1 -1
- package/dist/preview/{chunk.GDOTG7YA.js → chunk.S7ZLGODY.js} +1 -1
- package/dist/preview/{chunk.ZN5HTWSI.js → chunk.SU6WKQ73.js} +1 -1
- package/dist/preview/{chunk.EQTSV7BK.js → chunk.SZG6HJWH.js} +1 -1
- package/dist/preview/{chunk.SPXRLO5K.js → chunk.T227XQIO.js} +1 -1
- package/dist/preview/{chunk.D5KTGX7F.js → chunk.TCPTVTFU.js} +1 -1
- package/dist/preview/chunk.U37WZMUO.js +1 -0
- package/dist/preview/chunk.U5JFW2YM.js +1 -0
- package/dist/preview/{chunk.GP7F3PEF.js → chunk.U5PX2ECA.js} +1 -1
- package/dist/preview/{chunk.VHSWBFXB.js → chunk.U7G56KXT.js} +1 -1
- package/dist/preview/{chunk.H3BFHI3G.js → chunk.UFTAGUTU.js} +1 -1
- package/dist/preview/{chunk.LO3U3P55.js → chunk.UHUBQ4EX.js} +1 -1
- package/dist/preview/{chunk.KXPRILAO.js → chunk.UITZ74YJ.js} +1 -1
- package/dist/preview/{chunk.KFQSYCY3.js → chunk.UM5H2VVR.js} +1 -1
- package/dist/preview/chunk.V5MOMBZG.js +1 -0
- package/dist/preview/{chunk.B2GVJD6H.js → chunk.V6EEDYYW.js} +1 -1
- package/dist/preview/{chunk.TBW7CU4G.js → chunk.VDGMFX5C.js} +1 -1
- package/dist/preview/{chunk.EB4NVTJL.js → chunk.VFRURRNI.js} +1 -1
- package/dist/preview/{chunk.6W7O5YLL.js → chunk.VGHZQEHS.js} +1 -1
- package/dist/preview/{chunk.MQ5HBUBL.js → chunk.VNBEAF62.js} +1 -1
- package/dist/preview/chunk.VNJKGSGZ.js +25 -0
- package/dist/preview/{chunk.TUUVVO5U.js → chunk.VS25R6R2.js} +1 -1
- package/dist/preview/chunk.VUSJ7HPC.js +1 -0
- package/dist/preview/chunk.VXRECLX6.js +1 -0
- package/dist/preview/{chunk.7MSFDD7J.js → chunk.W2VOD6SD.js} +1 -1
- package/dist/preview/{chunk.WJFQIE3Y.js → chunk.W66VMALY.js} +1 -1
- package/dist/preview/{chunk.WQOI6BLM.js → chunk.WEGPDJTB.js} +1 -1
- package/dist/preview/{chunk.3OYGXYQY.js → chunk.WGTBQHHE.js} +1 -1
- package/dist/preview/chunk.WGVIJDV5.js +1 -0
- package/dist/preview/{chunk.SDVPJYVF.js → chunk.WTUB7W2D.js} +1 -1
- package/dist/preview/{chunk.VG7OWV2H.js → chunk.X2G4ZRB2.js} +1 -1
- package/dist/preview/chunk.X3MMJ3QC.js +5 -0
- package/dist/preview/chunk.X5YRNNHU.js +1 -0
- package/dist/preview/{chunk.BTVBZ6KE.js → chunk.XOTES3PI.js} +2 -2
- package/dist/preview/{chunk.YIA2EDVF.js → chunk.YGZCESXY.js} +1 -1
- package/dist/preview/chunk.YMC2T2HN.js +1 -0
- package/dist/preview/{chunk.HS3GHAUR.js → chunk.YMRVKG6W.js} +1 -1
- package/dist/preview/chunk.YN6BXZHO.js +1 -0
- package/dist/preview/{chunk.YP2F5UGY.js → chunk.Z4CJJ4QP.js} +1 -1
- package/dist/preview/{chunk.2EDC63RI.js → chunk.ZFH4SCCF.js} +1 -1
- package/dist/preview/{chunk.NOFWGDOT.js → chunk.ZLMI2NHC.js} +1 -1
- package/dist/preview/{chunk.YZZONE4M.js → chunk.ZT3NEAFI.js} +1 -1
- package/dist/preview/{chunk.I3WWCPQ2.js → chunk.ZUKYMU6C.js} +1 -1
- package/dist/preview/index.html +51 -51
- package/dist/preview/page.js +2 -2
- package/package.json +6 -6
- package/dist/preview/chunk.32FMOHZK.js +0 -1
- package/dist/preview/chunk.3FCOFEGW.js +0 -1
- package/dist/preview/chunk.43OKZU73.js +0 -1
- package/dist/preview/chunk.47JQPYXL.js +0 -2
- package/dist/preview/chunk.4GGPPCMM.js +0 -1
- package/dist/preview/chunk.6K7EN2YI.js +0 -1
- package/dist/preview/chunk.6VC6AGYV.js +0 -5
- package/dist/preview/chunk.7BBGRTXM.js +0 -5
- package/dist/preview/chunk.7ECBGIUK.js +0 -1
- package/dist/preview/chunk.ARWBIBSI.js +0 -6
- package/dist/preview/chunk.BKVBX2YB.js +0 -1
- package/dist/preview/chunk.DM767F2Q.js +0 -21
- package/dist/preview/chunk.GUEHKCWN.js +0 -1
- package/dist/preview/chunk.HT2BEOEV.js +0 -25
- package/dist/preview/chunk.JOAN54PN.js +0 -1
- package/dist/preview/chunk.L7V24JPO.js +0 -1
- package/dist/preview/chunk.LA4CPZ2N.js +0 -1
- package/dist/preview/chunk.MV3AJ7JH.js +0 -1
- package/dist/preview/chunk.MYNQWWCL.js +0 -1
- package/dist/preview/chunk.OASYYMG5.js +0 -1
- package/dist/preview/chunk.PM3SYXKB.js +0 -1
- package/dist/preview/chunk.QB25SMP6.js +0 -1
- package/dist/preview/chunk.R7LFO7KI.js +0 -1
- package/dist/preview/chunk.S5MGE2U5.js +0 -1
- package/dist/preview/chunk.TXGNPW76.js +0 -1
- package/dist/preview/chunk.UGFDSE37.js +0 -1
- package/dist/preview/chunk.UKMVJV6Q.js +0 -1
- package/dist/preview/chunk.UUG3BYVN.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as T,c as A,d as m}from"./chunk.
|
|
1
|
+
import{a as T,c as A,d as m}from"./chunk.T227XQIO.js";import{N as $,P as x}from"./chunk.X3MMJ3QC.js";var I=Symbol.for("@graview/core:file"),j=Symbol.for("@graview/core:node-ref"),y=e=>typeof e=="object"&&e!==null?e._zod?.def:void 0;function k(e){let t=y(e);return t?.[I]??(t?.innerType?k(t.innerType):void 0)}function F(e){let t=k(e);if(t)return{as:t,list:!1};let n=y(e);for(;n?.innerType;)n=y(n.innerType);let i=n?.type==="array"?k(n.element):void 0;return i?{as:i,list:!0}:void 0}function M(e){if(typeof e!="object"||e===null)return;let t=e[j];if(t)return t;let n=y(e);return n?.[j]??(n?.innerType?M(n.innerType):void 0)}function z(e){let t=e?.shape??{};return Object.entries(t).flatMap(([n,i])=>{let s=M(i);return s?[{name:n,kinds:s}]:[]})}var R=e=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&typeof e.href=="string"&&typeof e.name=="string"&&typeof e.type=="string"&&typeof e.bytes=="number",C=e=>(Array.isArray(e)?e:[e]).filter(R);function O(e,t,n){let s=e.schema.tryDefinition(t)?.fields?.shape?.[n];return s===void 0?void 0:F(s)}function D(e,t){if(e===void 0)return[];if(!Array.isArray(e))return[`The view's accepts is a list of { "kind": <a kind>, "field": <its image, video or file field> }.`];let n=[],i=new Set(t.schema.kinds);for(let s of e){let{kind:l,field:r}=s??{};typeof l!="string"||typeof r!="string"?n.push(`Each of the view's accepts is { "kind": <a kind>, "field": <its image, video or file field> }.`):i.has(l)?O(t,l,r)?t.allMutations().some(d=>(d.creates??[]).includes(l)&&Object.hasOwn(d.input?.shape??{},r))||n.push(`No act of this app makes a "${l}" with its "${r}", so a file dropped could become nothing.`):n.push(`The view accepts files into ${l}'s "${r}", which holds no picture, video or file.`):n.push(`The view accepts files for "${l}", which is no kind of this app.`)}return n}function N(e,t,n){if(e===void 0||e===!0)return[];let i=`The view's pictures is true; the kinds whose pictures it draws, ["circuit"]; or { "width": <the widest it draws a picture, in pixels> } with the fields it draws them from, by kind, { "circuit": "photo" }.`;if(typeof e!="object"||e===null)return[i];let s=new Set([...n.attach==="home"?[]:[n.attach],...n.reads?.kinds??[]]),l=new Set(t.schema.kinds),r=[],d=a=>{if(!l.has(a))return void r.push(`The view's pictures chooses "${a}", which is no kind of this app.`);s.has(a)||r.push(`The view's pictures chooses "${a}", whose records it is not handed: add "${a}" to its reads.kinds.`)};if(Array.isArray(e)){if(e.length===0||!e.every(a=>typeof a=="string"))return[i];for(let a of e)d(a);return r}for(let[a,c]of Object.entries(e)){if(a==="width"&&typeof c!="string"&&!Array.isArray(c)){Number.isInteger(c)&&c>=16&&c<=4096||r.push("The view's pictures width is a whole number of pixels from 16 to 4096.");continue}let p=typeof c=="string"?[c]:Array.isArray(c)&&c.length>0&&c.every(u=>typeof u=="string")?c:void 0;if(!p){r.push(`The view's pictures says "${a}": beside "width", it names a kind and the field it draws pictures from, "circuit": "photo", or its fields, "circuit": ["photo", "map"].`);continue}let g=r.length;if(d(a),!(r.length>g))for(let u of p){let f=O(t,a,u);f?f.as==="video"&&r.push(`The view's pictures chooses ${a}'s "${u}", which holds videos: the host plays a video where the view places it, and hands no picture of it.`):r.push(`The view's pictures chooses ${a}'s "${u}", which holds no picture.`)}}return r}function H(e){if(e===void 0)return[];if(typeof e!="object"||e===null||Array.isArray(e))return[`The view's scene is { "maxHeight": <the tallest its preview on the Scene is drawn, in pixels> }.`];let{maxHeight:t,...n}=e,i=[];return Object.keys(n).length>0&&i.push(`The view's scene says ${Object.keys(n).map(s=>`"${s}"`).join(", ")}: only "maxHeight" is read.`),t!==void 0&&!(Number.isInteger(t)&&t>=80&&t<=4e3)&&i.push("The view's scene maxHeight is a whole number of pixels from 80 to 4000."),i}function V(e){return(e.acts??[]).map(t=>typeof t=="string"?{act:t}:t)}function J(e,t){let n=[],i=new Set(t.schema.kinds),s=new Set(t.schema.edgeKinds),l=new Set(t.allMutations().map(d=>d.name));(typeof e.name!="string"||!/^[a-z0-9][a-z0-9-]{0,62}$/.test(e.name))&&n.push(`The view's name "${String(e.name)}" is not lower-case letters, digits and hyphens.`),e.title!==void 0&&(typeof e.title!="string"||e.title.trim()===""||e.title.length>80)&&n.push("The view's title is empty or longer than 80 characters."),e.attach!=="home"&&!i.has(e.attach)&&n.push(`The view attaches to "${e.attach}", which is no kind of this app.`),e.cardinality!=="one"&&e.cardinality!=="many"&&n.push(`The view's cardinality is "${String(e.cardinality)}", not one or many.`),e.attach==="home"&&e.cardinality!=="many"&&n.push("A view of the home draws many records: its cardinality is many."),e.replaces!==void 0&&e.replaces!=="page"?n.push(`The view's replaces is "${String(e.replaces)}": the one thing a view replaces is "page", or leave it out to draw the view above the record's own fields.`):e.replaces==="page"&&e.attach==="home"&&n.push(`The home's view is the home already: replaces "page" is for a view of a kind, of one record (its page) or of many (its list).`),e.gestures!==void 0&&typeof e.gestures!="boolean"&&n.push(`The view's gestures is "${String(e.gestures)}": it is true, or left out.`),e.bleed!==void 0&&typeof e.bleed!="boolean"&&n.push(`The view's bleed is "${String(e.bleed)}": it is true, or left out.`),e.heading!==void 0&&(e.heading!=="own"||e.attach==="home"||e.cardinality!=="many"||e.title===void 0)&&n.push(`The view's heading is "${String(e.heading)}": it is "own" on a view that is a place (a title, cardinality many), or left out.`),e.flows!==void 0&&typeof e.flows!="boolean"?n.push(`The view's flows is "${String(e.flows)}": it is false for a view that keeps its place's frame, or left out.`):e.flows===!1&&(e.attach==="home"||e.cardinality!=="many"||e.title===void 0)&&n.push("Only a view that is a place keeps a frame: flows false needs a title and cardinality many on a kind."),n.push(...H(e.scene)),e.scene!==void 0&&(e.attach==="home"||e.cardinality!=="many")&&n.push("Only a view of a kind's members is drawn on the Scene as a card: scene needs cardinality many on a kind."),n.push(...N(e.pictures,t,e)),n.push(...D(e.accepts,t));for(let d of e.reads?.kinds??[])i.has(d)||n.push(`The view reads "${d}", which is no kind of this app.`);for(let d of e.reads?.edges??[])s.has(d)||n.push(`The view reads the edge "${d}", which no kind of this app declares.`);let r=new Set;for(let d of V(e)){l.has(d.act)||n.push(`The view asks for the act "${d.act}", which this app does not declare.`);let a=d.as??d.act;r.has(a)&&n.push(`Two of the view's acts are called "${a}".`),r.add(a)}return n}function _(e,t,n){let i=[...new Set([...t.attach==="home"?[]:[t.attach],...t.reads?.kinds??[]])];if(i.length<2)return[];let s=new Set(t.reads?.edges??[]),l=r=>new RegExp(`(["'\`])${r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\1`).test(n);return e.schema.edgeKinds.filter(r=>{let d=e.schema.edge(r);return!s.has(r)&&d!==void 0&&d.from.some(a=>i.includes(a))&&(d.to==="*"||d.to.some(a=>i.includes(a)))&&l(r)})}function Q(e,t,n){let i=_(e,t,n);if(i.length===0)return;let s=(l,r)=>l.length<2?l[0]??"":`${l.slice(0,-1).join(", ")} ${r} ${l[l.length-1]}`;return`"${t.name}" names ${s(i,"and")} but does not read ${i.length>1?"them":"it"}, so the view is handed no such links: add ${s(i.map(l=>`"${l}"`),"and")} to its manifest's reads.edges.`}function U(e,t){return[...t.attach==="home"?[]:[t.attach],...t.reads?.kinds??[]].some(i=>Object.keys(e.schema.tryDefinition(i)?.computed??{}).length>0)}function X(e,t,n){let{manifest:i}=n,s=n.input??{},r=e.seenBy(t).graph,d=i.attach==="home"?void 0:i.attach,a=d&&i.cardinality==="one"&&s.node?r.getNode(s.node.id):void 0,c=a&&a.kind===d?[a]:[],p=d&&i.cardinality==="many"?s.nodes?s.nodes.flatMap(o=>{let h=r.getNode(o.id);return h&&h.kind===d?[h]:[]}):r.nodesOfKind(d):[],g=new Set([...c,...p].map(o=>o.id)),u=T(r,g,{kinds:(i.reads?.kinds??[]).filter(o=>o!==d||i.cardinality==="one"),edges:i.reads?.edges??[]}),f=new Map;for(let o of[...p,...u.nodes])c.some(h=>h.id===o.id)||f.set(o.id,o);let P=new Set([...c.map(o=>o.id),...f.keys()]),G=[...u.edges],K=new Set(V(i).map(o=>o.act)),W=e.permittedMutations(t).filter(o=>K.has(o.name)).map(o=>({name:o.name,title:o.title??o.name,...o.description!==void 0?{description:o.description}:{},...o.subject?{subject:{kinds:o.subject.kinds,arg:o.subject.arg}}:{}})),b=o=>o?.filter(h=>P.has(h)),S=n.computed,v=o=>S?{...m(e,o),...S(r,o)}:m(e,o);return{view:i.name,...c[0]?{node:v(c[0])}:{},nodes:[...f.values()].map(v),edges:G,...i.title!==void 0?{label:i.title}:s.label!==void 0?{label:s.label}:{},cardinality:i.cardinality,...s.fidelity!==void 0?{fidelity:s.fidelity}:{},...s.mode!==void 0?{mode:s.mode}:{},...s.selected!==void 0?{selected:s.selected}:{},...s.implicated?{implicated:b(s.implicated)}:{},...s.flagged?{flagged:b(s.flagged)}:{},acts:W,...n.theme?{theme:n.theme}:{},locale:$(),timeZone:x(),...A(e.schema,[...c,...f.values()]),...n.places?{places:n.places.filter((o,h,w)=>w.findIndex(E=>E.as===o.as)===h).map(({as:o,title:h,kind:w})=>({as:o,title:h,kind:w}))}:{}}}export{z as a,R as b,C as c,O as d,V as e,J as f,_ as g,Q as h,U as i,X as j};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Bd as k,
|
|
1
|
+
import{Ad as $,Bd as c,Dd as k,Ed as x,Md as f,Qd as b,Rd as S,Sd as P,Vd as A,Wd as L,ka as u,xd as w,yd as v}from"./chunk.X3MMJ3QC.js";function T(s){if(!(s.attach==="home"||s.cardinality==="one"||!s.title))return{kind:s.attach,title:s.title,as:$(s.title),name:s.name,lens:"view",...s.hidden?{hidden:!0}:{}}}function H(s,r=[]){let a=[];for(let n of f(s).drawn)for(let i of n.kinds)a.push({kind:i,title:n.title,as:n.as,...n.across?{across:n.across}:{},...n.kinds.length>1?{over:n.kinds}:{},...n.hidden?{hidden:!0}:{}});for(let n of[...s.views?.places?.()??[],...r.flatMap(i=>T(i)??[])])a.some(i=>i.kind===n.kind&&i.as===n.as)||a.push(n);return a}function U(s,r={}){return V(s.schema,H(s,r.views),{...s.pages?{pages:s.pages}:{},lenses:f(s).drawn,home:(s.home?.length??0)>0})}function V(s,r,a={}){let{pages:n}=a,i=s.kinds,d=r.filter(e=>i.includes(e.kind)),o=L(n?.first,s,d),N=new Set(n?.hide??[]),p=A(i,n?.order,d),m=p.flatMap(e=>e.view?[]:[e.kind]),O=p.flatMap(e=>e.view?[e.view]:[]),h=[{slug:"home",title:"Home",kind:null,cardinality:"many",address:"/",stop:"#",...o?.to==="home"||o===void 0&&a.home?{first:!0}:{}},{slug:b,title:P(n),kind:null,cardinality:"many",address:S,stop:"#"}],E=v([...d].sort((e,t)=>m.indexOf(e.kind)-m.indexOf(t.kind))),g=e=>{let t=a.lenses?.find(l=>l.as===e.as&&l.kinds.includes(e.kind)),y=x(e,d);return{slug:e.as,title:e.title,kind:e.kind,...e.over?{over:e.over.filter(l=>i.includes(l))}:{},cardinality:"many",address:k(e.as,y?c(s,e.kind).slice(1):void 0),stop:y?`#focus=aggregate:${e.kind}&in.view=${encodeURIComponent(e.as)}`:`#view=${encodeURIComponent(e.as)}`,...t?{lens:t.lens}:{},...e.name!==void 0?{view:e.name}:{},...e.hidden?{hidden:!0}:{},...o?.to==="place"&&o.place.as===e.as&&(o.place.kind===e.kind||e.over?.includes(o.place.kind))?{first:!0}:{}}};for(let e of E)O.some(t=>w(t,e))||h.push(g(e));for(let e of p){if(e.view){h.push(g(e.view));continue}let t=e.kind;h.push({slug:c(s,t).slice(1),title:u(s,t),kind:t,cardinality:"many",address:c(s,t),stop:`#focus=aggregate:${t}`,...N.has(t)?{hidden:!0}:{},...o?.to==="kind"&&o.kind===t?{first:!0}:{}})}return h}export{U as a,V as b};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{fa as V,ga as w}from"./chunk.
|
|
1
|
+
import{fa as V,ga as w}from"./chunk.VNJKGSGZ.js";import"./chunk.SDO3U72B.js";import{Ad as h,wd as u}from"./chunk.X3MMJ3QC.js";import"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";var c=i=>[i,...u.filter(o=>o!==i)];function p(i,o){if(o.hidden.length===0&&o.removed.length===0)return i;let a=new Set(o.removed.filter(e=>!e.lens).map(e=>e.name)),f=new Set(o.hidden),r=e=>e?.name!==void 0&&(a.has(e.name)||e.title!==void 0&&f.has(e.name)),m=()=>(i.homes?.()??[]).filter(e=>e.name===void 0||!a.has(e.name)),l=(e,t,d)=>[...i.registrations()].reverse().find(n=>n.kind===e&&n.cardinality===t&&n.fidelity===d&&!n.beside&&!n.hidden&&!r(n)),y=(e,t)=>{for(let d of c(t.fidelity)){let n=l(e,t.cardinality,d);if(n)return n}if(t.cardinality==="one")for(let d of c(t.fidelity)){let n=l(e,"many",d);if(n)return n}},s={...i,register(e,t,d,n){return i.register(e,t,d,n),s},...i.home?{home(e,t){return i.home(e,t),s}}:{},...i.homes?{homes:m,homeView:()=>m().at(-1)?.view}:{},lookup(e,t){return i.lookup(e,t)===void 0?void 0:l(e,t.cardinality,t.fidelity)?.view},places:()=>i.places().filter(e=>!(e.name!==void 0&&a.has(e.name))).map(e=>e.name!==void 0&&f.has(e.name)&&!e.hidden?{...e,hidden:!0}:e),resolve(e,t,d){let n=i.resolve(e,t,d);return!n||!r(n)||d!==void 0&&n.name!==void 0&&!a.has(n.name)&&n.title!==void 0&&h(n.title)===d?n:y(e,t)},all:()=>i.all().filter(e=>!(e.name!==void 0&&a.has(e.name))),homes:()=>(i.homes?.()??[]).filter(e=>!(e.name!==void 0&&a.has(e.name))),homeView:()=>i.homes?s.homes().at(-1)?.view:i.homeView?.()};return V(i)&&w(s),s}function R(i,o,a){let f,r=()=>{let m=o.current();f&&m.hidden===f.hidden&&m.removed===f.removed||(f=m,a(p(i,m)))};return r(),o.onChange?.(r)??(()=>{})}export{p as tidyViews,R as watchTidied};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as O}from"./chunk.
|
|
1
|
+
import{C as O}from"./chunk.X3MMJ3QC.js";var k=3,A=k+1,P=A+1,z=(o,r)=>o<r?-1:o>r?1:0;function L(o){return(o??0)>4?k:2}function N(o,r,a){let n=[];for(let d of Object.values(o.tryDefinition(r)?.edges??{}))if(d.to!=="*")for(let i of d.to)i!==r&&a.includes(i)&&!n.includes(i)&&n.push(i);return n}function W(o,r={}){let a=[...o.kinds],n=[...(r.order??[]).filter(e=>a.includes(e)),...a.filter(e=>!(r.order??[]).includes(e)).sort(z)].filter((e,t,s)=>s.indexOf(e)===t),d=e=>n.indexOf(e),i=new Map,g=[],h=(e,t,s)=>{i.set(e,{col:t,row:s,side:L(r.counts?.[e])}),g.push({col:t,row:s})};for(let e of n){let t=o.tryDefinition(e)?.plot??r.plots?.[e];t&&h(e,t.col,t.row)}let l=new Map(n.map(e=>[e,N(o,e,a)])),b=new Set(n.filter(e=>l.get(e).length>0||n.some(t=>l.get(t).includes(e)))),v=new Map,C=new Set,D=e=>{let t=v.get(e);if(t!==void 0)return t;if(C.has(e))return-1;C.add(e);let s=0;for(let c of l.get(e))s=Math.max(s,D(c)+1);return C.delete(e),v.set(e,s),s};for(let e of n)b.has(e)&&D(e);let f=[];for(let e of n)b.has(e)&&(f[v.get(e)]??=[]).push(e);let I=new Map,T=Math.max(1,Math.ceil(Math.sqrt(f.length))),H=Math.max(1,...f.map(e=>e?.length??0)),w=Math.max(P,Math.round(r.pitch??P)),R=(e,t)=>r.upright?{col:e%T*w,row:(Math.floor(e/T)*(H+1)+t)*w}:{col:t*w,row:e===0?0:-e*w},$=e=>!g.some(t=>V(t,e)),S=(e,t,s)=>{let c=s;for(;!$(R(t,c))&&c<s+64;)c++;return i.has(e)||h(e,R(t,c).col,R(t,c).row),c},x=0;f.forEach((e=[],t)=>{let s=u=>{let m=l.get(u).map(p=>I.get(p)).filter(p=>p!==void 0);return m.length>0?m.reduce((p,q)=>p+q,0)/m.length:1/0},c=[...e].sort((u,m)=>s(u)-s(m)||d(u)-d(m)),y=0;for(let u of c)i.has(u)||(y=S(u,t,y),I.set(u,y),x=Math.max(x,y+1),y++)});let j=n.filter(e=>!b.has(e)&&!i.has(e)),M=Math.max(r.upright?x:f.length,Math.ceil(Math.sqrt(j.length*2)),1),E=b.size>0?1:0;return j.forEach((e,t)=>{r.upright?S(e,f.length+E+Math.floor(t/M),t%M):S(e,t%M,x+E+Math.floor(t/M))}),i}function V(o,r){return Math.abs(o.col-r.col)<A&&Math.abs(o.row-r.row)<A}function X(o,r,a,n=.5){return{x:(o-r)*a/2,y:(o+r)*a*n/2}}var G=1,B=/^(done|completed?|closed|finished|shipped|sent|won|lost|passed|declined|dropped|answered|resolved|fixed|archived|cancell?ed|retired|released|published|delivered|paid|merged|rejected|written[-_ ]?up|out)$/i,F=/^(doing|in[-_ ]?progress|active|building|started|working|in[-_ ]?review|review(ing)?|fixing|ongoing|underway|testing|drafting|writing|running)$/i;function _(o,r,a){let n=O(o.tryDefinition(r)?.fields.shape?.[a]);for(;n&&n.innerType!==void 0&&n.type!=="enum";)n=O(n.innerType);if(n?.type!=="enum")return;let d=(n.entries?Object.values(n.entries):n.values??[]).filter(i=>typeof i=="string");return d.length>0?d:void 0}function J(o,r){let a=o.tryDefinition(r);if(!a)return;let n=a.lifecycle,d=Object.keys(a.fields.shape??{}),i=[n?.field,...d.filter(l=>/^(status|stage|state|phase)$/i.test(l))].find(l=>l!==void 0&&_(o,r,l)!==void 0);if(!i)return;let g=_(o,r,i),h=n?.field===i&&Array.isArray(n.retired)?n.retired:[];return{field:i,values:g,tiers:g.map(l=>h.includes(l)||B.test(l)?"done":F.test(l)?"active":"waiting")}}export{P as a,W as b,X as c,G as d,J as e};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{a as Ye}from"./chunk.SDO3U72B.js";import{Gd as ao,Ia as Xn,L as Zn,Ma as kt,Oa as Jn,Wc as to,Wd as so,_a as Qn,_d as lo,ae as Ue,be as Rt,fd as no,hd as oo,nd as ro,qd as io,uc as eo}from"./chunk.X3MMJ3QC.js";import{a as $e,b as H}from"./chunk.AJZBJBMO.js";var To=$e(w=>{"use strict";var _t=Symbol.for("react.transitional.element"),ti=Symbol.for("react.portal"),ni=Symbol.for("react.fragment"),oi=Symbol.for("react.strict_mode"),ri=Symbol.for("react.profiler"),ii=Symbol.for("react.consumer"),ai=Symbol.for("react.context"),si=Symbol.for("react.forward_ref"),li=Symbol.for("react.suspense"),di=Symbol.for("react.memo"),xo=Symbol.for("react.lazy"),ui=Symbol.for("react.activity"),So=Symbol.iterator;function ci(e){return e===null||typeof e!="object"?null:(e=So&&e[So]||e["@@iterator"],typeof e=="function"?e:null)}var Eo={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Po=Object.assign,Ao={};function he(e,t,n){this.props=e,this.context=t,this.refs=Ao,this.updater=n||Eo}he.prototype.isReactComponent={};he.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};he.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function ko(){}ko.prototype=he.prototype;function Ht(e,t,n){this.props=e,this.context=t,this.refs=Ao,this.updater=n||Eo}var Dt=Ht.prototype=new ko;Dt.constructor=Ht;Po(Dt,he.prototype);Dt.isPureReactComponent=!0;var wo=Array.isArray;function Lt(){}var C={H:null,A:null,T:null,S:null},Ro=Object.prototype.hasOwnProperty;function Nt(e,t,n){var o=n.ref;return{$$typeof:_t,type:e,key:t,ref:o!==void 0?o:null,props:n}}function fi(e,t){return Nt(e.type,t,e.props)}function jt(e){return typeof e=="object"&&e!==null&&e.$$typeof===_t}function pi(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(n){return t[n]})}var vo=/\/+/g;function It(e,t){return typeof e=="object"&&e!==null&&e.key!=null?pi(""+e.key):t.toString(36)}function yi(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(Lt,Lt):(e.status="pending",e.then(function(t){e.status==="pending"&&(e.status="fulfilled",e.value=t)},function(t){e.status==="pending"&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}function ge(e,t,n,o,r){var i=typeof e;(i==="undefined"||i==="boolean")&&(e=null);var a=!1;if(e===null)a=!0;else switch(i){case"bigint":case"string":case"number":a=!0;break;case"object":switch(e.$$typeof){case _t:case ti:a=!0;break;case xo:return a=e._init,ge(a(e._payload),t,n,o,r)}}if(a)return r=r(e),a=o===""?"."+It(e,0):o,wo(r)?(n="",a!=null&&(n=a.replace(vo,"$&/")+"/"),ge(r,t,n,"",function(u){return u})):r!=null&&(jt(r)&&(r=fi(r,n+(r.key==null||e&&e.key===r.key?"":(""+r.key).replace(vo,"$&/")+"/")+a)),t.push(r)),1;a=0;var s=o===""?".":o+":";if(wo(e))for(var l=0;l<e.length;l++)o=e[l],i=s+It(o,l),a+=ge(o,t,n,i,r);else if(l=ci(e),typeof l=="function")for(e=l.call(e),l=0;!(o=e.next()).done;)o=o.value,i=s+It(o,l++),a+=ge(o,t,n,i,r);else if(i==="object"){if(typeof e.then=="function")return ge(yi(e),t,n,o,r);throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return a}function ot(e,t,n){if(e==null)return e;var o=[],r=0;return ge(e,o,"","",function(i){return t.call(n,i,r++)}),o}function mi(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(n){(e._status===0||e._status===-1)&&(e._status=1,e._result=n)},function(n){(e._status===0||e._status===-1)&&(e._status=2,e._result=n)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var bo=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},gi={map:ot,forEach:function(e,t,n){ot(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return ot(e,function(){t++}),t},toArray:function(e){return ot(e,function(t){return t})||[]},only:function(e){if(!jt(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};w.Activity=ui;w.Children=gi;w.Component=he;w.Fragment=ni;w.Profiler=ri;w.PureComponent=Ht;w.StrictMode=oi;w.Suspense=li;w.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=C;w.__COMPILER_RUNTIME={__proto__:null,c:function(e){return C.H.useMemoCache(e)}};w.cache=function(e){return function(){return e.apply(null,arguments)}};w.cacheSignal=function(){return null};w.cloneElement=function(e,t,n){if(e==null)throw Error("The argument must be a React element, but you passed "+e+".");var o=Po({},e.props),r=e.key;if(t!=null)for(i in t.key!==void 0&&(r=""+t.key),t)!Ro.call(t,i)||i==="key"||i==="__self"||i==="__source"||i==="ref"&&t.ref===void 0||(o[i]=t[i]);var i=arguments.length-2;if(i===1)o.children=n;else if(1<i){for(var a=Array(i),s=0;s<i;s++)a[s]=arguments[s+2];o.children=a}return Nt(e.type,r,o)};w.createContext=function(e){return e={$$typeof:ai,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:ii,_context:e},e};w.createElement=function(e,t,n){var o,r={},i=null;if(t!=null)for(o in t.key!==void 0&&(i=""+t.key),t)Ro.call(t,o)&&o!=="key"&&o!=="__self"&&o!=="__source"&&(r[o]=t[o]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var s=Array(a),l=0;l<a;l++)s[l]=arguments[l+2];r.children=s}if(e&&e.defaultProps)for(o in a=e.defaultProps,a)r[o]===void 0&&(r[o]=a[o]);return Nt(e,i,r)};w.createRef=function(){return{current:null}};w.forwardRef=function(e){return{$$typeof:si,render:e}};w.isValidElement=jt;w.lazy=function(e){return{$$typeof:xo,_payload:{_status:-1,_result:e},_init:mi}};w.memo=function(e,t){return{$$typeof:di,type:e,compare:t===void 0?null:t}};w.startTransition=function(e){var t=C.T,n={};C.T=n;try{var o=e(),r=C.S;r!==null&&r(n,o),typeof o=="object"&&o!==null&&typeof o.then=="function"&&o.then(Lt,bo)}catch(i){bo(i)}finally{t!==null&&n.types!==null&&(t.types=n.types),C.T=t}};w.unstable_useCacheRefresh=function(){return C.H.useCacheRefresh()};w.use=function(e){return C.H.use(e)};w.useActionState=function(e,t,n){return C.H.useActionState(e,t,n)};w.useCallback=function(e,t){return C.H.useCallback(e,t)};w.useContext=function(e){return C.H.useContext(e)};w.useDebugValue=function(){};w.useDeferredValue=function(e,t){return C.H.useDeferredValue(e,t)};w.useEffect=function(e,t){return C.H.useEffect(e,t)};w.useEffectEvent=function(e){return C.H.useEffectEvent(e)};w.useId=function(){return C.H.useId()};w.useImperativeHandle=function(e,t,n){return C.H.useImperativeHandle(e,t,n)};w.useInsertionEffect=function(e,t){return C.H.useInsertionEffect(e,t)};w.useLayoutEffect=function(e,t){return C.H.useLayoutEffect(e,t)};w.useMemo=function(e,t){return C.H.useMemo(e,t)};w.useOptimistic=function(e,t){return C.H.useOptimistic(e,t)};w.useReducer=function(e,t,n){return C.H.useReducer(e,t,n)};w.useRef=function(e){return C.H.useRef(e)};w.useState=function(e){return C.H.useState(e)};w.useSyncExternalStore=function(e,t,n){return C.H.useSyncExternalStore(e,t,n)};w.useTransition=function(){return C.H.useTransition()};w.version="19.2.8"});var W=$e((es,Mo)=>{"use strict";Mo.exports=To()});var Wo=$e(at=>{"use strict";var ki=Symbol.for("react.transitional.element"),Ri=Symbol.for("react.fragment");function jo(e,t,n){var o=null;if(n!==void 0&&(o=""+n),t.key!==void 0&&(o=""+t.key),"key"in t){n={};for(var r in t)r!=="key"&&(n[r]=t[r])}else n=t;return t=n.ref,{$$typeof:ki,type:e,key:o,ref:t!==void 0?t:null,props:n}}at.Fragment=Ri;at.jsx=jo;at.jsxs=jo});var De=$e((us,Go)=>{"use strict";Go.exports=Wo()});var pe={focusId:null,relation:null,expanded:[],pins:{}},Ze=e=>{let t=Number(e);return Number.isFinite(t)?t:null};function Q(e){let t=new URLSearchParams;e.focusId&&t.set("focus",e.focusId),e.relation&&t.set("relation",e.relation),e.overview&&t.set("overview","1"),e.zoom&&t.set("zoom","1"),e.past&&t.set("past","1"),e.shown&&e.shown.length>0&&t.set("show",[...e.shown].sort().join(",")),e.selection!==void 0&&e.selection.length>0&&t.set("sel",[...e.selection].sort().join(",")),e.expanded.length>0&&t.set("expand",[...e.expanded].sort().join(","));for(let o of Object.keys(e.pins).sort()){let r=e.pins[o];t.set(`pin.${o}`,`${Xe(r.x)},${Xe(r.y)}`)}e.pan&&(e.pan.x!==0||e.pan.y!==0)&&t.set("pan",`${Xe(e.pan.x)},${Xe(e.pan.y)}`);for(let o of Object.keys(e.within??{}).sort()){let r=e.within[o];r.length>0&&t.set(`in.${o}`,r)}e.q&&e.q.trim().length>0&&t.set("q",e.q);let n=t.toString();return n?`#${n}`:"#"}function Yr(e){return e&&e.startsWith("agg:")?`aggregate:${e.slice(4)}`:e}function Je(e){let t=e.includes("#")?e.slice(e.indexOf("#")+1):e,n=new URLSearchParams(t),o=Object.create(null);for(let[m,y]of n){if(!m.startsWith("pin."))continue;let[g,b]=y.split(","),k=g===void 0?null:Ze(g),p=b===void 0?null:Ze(b);k===null||p===null||(o[m.slice(4)]={x:k,y:p})}let r=Object.create(null);for(let[m,y]of n)!m.startsWith("in.")||y.length===0||(r[m.slice(3)]=y);let i=n.get("view");i&&i.length>0&&r.view===void 0&&(r.view=i);let a=n.get("pan")?.split(",")??[],s=a[0]===void 0?null:Ze(a[0]),l=a[1]===void 0?null:Ze(a[1]),u=(n.get("sel")??"").split(",").filter(m=>m.length>0).sort(),c=n.get("overview")==="1";return{...u.length>0?{selection:u}:{},...c?{overview:!0}:{},...n.get("zoom")==="1"?{zoom:!0}:{},...n.get("past")==="1"?{past:!0}:{},...n.get("show")?{shown:[...new Set(n.get("show").split(",").filter(Boolean))].sort()}:{},...s!==null&&l!==null?{pan:{x:s,y:l}}:{},...Object.keys(r).length>0?{within:r}:{},...n.get("q")?.trim()?{q:n.get("q")}:{},focusId:Yr(n.get("focus")),relation:n.get("relation"),expanded:(n.get("expand")??"").split(",").filter(m=>m.length>0&&(c||!m.startsWith("kind:"))).sort(),pins:o}}function Da(e){let t=Je(e);return Q(t)==="#"?{...t,overview:!0}:t}function Na(e){let t=Q(e);return t==="#overview=1"?"":t}function Xe(e){return Math.round(e*100)/100}function co(e,t){return Q(e)===Q(t)}var uo="edge:";function fo(e){if(!e.startsWith(uo))return null;let t=e.slice(uo.length).split(":");if(t.length!==3)return null;let[n,o,r]=t;if(!n||!o||!r)return null;try{return{kind:decodeURIComponent(n),from:decodeURIComponent(o),to:decodeURIComponent(r)}}catch{return null}}function Tt(e){let{pan:t,...n}=e;return{...n,pins:{}}}function z(e,t){if(t===e.focusId)return{...e,focusId:t};let n=Tt(e);return{...n.within?.q!==void 0?le(n,"q",null):n,focusId:t}}function po(e,t){return{...e,relation:t}}function le(e,t,n){let o={...e.within??{}};if(n===null?delete o[t]:o[t]=n,Object.keys(o).length===0){let{within:r,...i}=e;return i}return{...e,within:o}}function ye(e,t){if(t!==e.overview&&(e=Tt(e)),!t){let n=e.expanded.filter(o=>!o.startsWith("kind:"));return{...e,overview:!1,expanded:n}}return{...e,overview:t}}function Qe(e,t){if(t.length===0){let{selection:n,...o}=e;return o}return{...e,selection:[...t]}}function _e(e,t){if(t!==(e.zoom===!0)&&(e=Tt(e)),!t){let{zoom:n,...o}=e;return o}return{...e,zoom:!0}}function et(e,t){let n=new Set(e.expanded);return n.has(t)?n.delete(t):n.add(t),{...e,expanded:[...n].sort()}}var nt="aggregate:",tt="kind:";function Mt(e){return`${tt}${e}`}function me(e){return e.startsWith(tt)?e.slice(tt.length):null}var Ga="kinds:beyond";function Zr(e){let t=me(e);return t?[t]:de(e)}function ee(...e){return`${nt}${[...e].sort().join("+")}`}function yo(e){return e.startsWith(nt)}function de(e){return!yo(e)||e.includes("|")?[]:e.slice(nt.length).split("+").filter(Boolean)}function mo(e,t,n={}){let o=me(t);if(o!==null&&e.overview&&n.ownPicture!==!0)return et(e,t);let r=o!==null?ee(o):t;if(e.zoom&&e.focusId===r&&!(o!==null&&n.carry))return _e(e,!1);if(o!==null&&n.carry){let i=ye({...z(e,r),relation:null},!1);return le(_e(i,!0),"q",n.carry)}return _e({...z(e,r),relation:null},!0)}function Xr(e,t,n){return le(ye(z(e,ee(t)),!1),"view",n)}function Fa(e,t){return e.id<t.id?-1:e.id>t.id?1:0}var go="aggregate:";function Ot(e){return e.startsWith(go)&&e.includes("|")}var Ct=e=>e?.off===!0,Jr=e=>e!==void 0&&!Ct(e)&&(e.fast!==void 0||e.thinking!==void 0||e.answer!==void 0||e.decide!==void 0||e.complete!==void 0||e.turn!==void 0),ho=e=>e!==void 0&&!Ct(e)&&(e.fast!==void 0||e.decide!==void 0),Qr=e=>e?.suggestOnOpen!==!1&&ho(e),ei=e=>e?.hoverChips===!0&&ho(e);var Vt={};var Oo=H(W(),1),hi={turns:[],outcomes:new Map,busy:!1,pending:null,draft:null,draftNote:null},Co=e=>`graview:seat:${e}`;function Si(e){if(!e)return{};try{let t=sessionStorage.getItem(e);if(!t)return{};let n=JSON.parse(t);return{...Array.isArray(n.turns)?{turns:n.turns}:{},...Array.isArray(n.outcomes)?{outcomes:new Map(n.outcomes)}:{},...n.draft?.drawn?{draft:n.draft}:{}}}catch{return{}}}function wi(e,t){if(e)try{sessionStorage.setItem(e,JSON.stringify({turns:t.turns.slice(-40),outcomes:[...t.outcomes],draft:t.draft}))}catch{}}function Wt(e){let t=e===null?null:Co(e),n={...hi,...Si(t)},o=new Set,r=(i,a=!0)=>{n=i,a&&wi(t,n);for(let s of[...o])s()};return{get:()=>n,subscribe(i){return o.add(i),()=>void o.delete(i)},setTurns:i=>r({...n,turns:i(n.turns)}),settle:(i,a)=>r({...n,outcomes:new Map(n.outcomes).set(i,a)}),setBusy:i=>r({...n,busy:i},!1),ask:i=>r({...n,pending:i.trim()||null}),takePending(){let i=n.pending;return i!==null&&r({...n,pending:null},!1),i},setDraft:(i,a=null)=>r({...n,draft:i,draftNote:a})}}function vi(e){return(0,Oo.useSyncExternalStore)(e.subscribe,e.get,e.get)}var Io=H(W(),1),bi={entries:[],ghost:null,loaded:!1};function Vo(e,t){let n=new Map(e.map(o=>[o.id,o]));for(let o of t)n.set(o.id,{...n.get(o.id),...o});return[...n.values()].sort((o,r)=>o.at<r.at?1:o.at>r.at?-1:0)}function Gt(e){let t=bi,n=new Set,o=r=>{t=r;for(let i of[...n])i()};return{get:()=>t,subscribe:r=>(n.add(r),()=>n.delete(r)),record:r=>{o({...t,entries:Vo(t.entries,[r])}),Promise.resolve(e()?.keep?.(r)).catch(i=>{console.warn("The host did not keep an AI interaction:",i)})},setGhost:r=>o({...t,ghost:r}),load:()=>{if(t.loaded)return;o({...t,loaded:!0});let r=e()?.load;r&&Promise.resolve(r()).then(i=>o({...t,entries:Vo(t.entries,i)})).catch(i=>{console.warn("The host's AI interactions could not be read:",i)})}}}function xi(e){return(0,Io.useSyncExternalStore)(e.subscribe,e.get,e.get)}function Lo(e){return e?.closest?.("[data-graview-pick]")?.getAttribute("data-graview-pick")??null}var rt=H(W(),1),it=(0,rt.createContext)(void 0),Ei=()=>(0,rt.useContext)(it);var P=H(W(),1),He=(0,P.createContext)(null);function Ho(){return(0,P.useContext)(He)}function Pi(e,t){let n=Ho(),o=(0,P.useMemo)(()=>n?n.live.seenBy(t):e,[n,e,t]),r=(0,P.useRef)(0),i=(0,P.useCallback)(a=>o.subscribe(()=>{r.current+=1,a()}),[o]);return(0,P.useSyncExternalStore)(i,()=>r.current,()=>0),o}var Do=Ye(()=>(__graviewPreload(import.meta.url,["./chunk.LDLTQNJ2.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.QL555VQ2.js")));function Ft(e){let[,t]=(0,P.useReducer)(o=>o+1,0),n=e.publishing?.mode==="on-publish"&&!no();return(0,P.useEffect)(()=>{n&&Do().then(t,()=>{})},[n]),!n}var _o,Ai=400;function Kt(e,t,n){let o=(0,P.useContext)(He),r=o!==null&&o.owns(e,t),[i,a]=(0,P.useState)(null),[s,l]=(0,P.useState)(_o);(0,P.useEffect)(()=>{if(s||r||i===null)return;let E=!0;return Do().then(I=>{_o=I,E&&l(I)},()=>{}),()=>{E=!1}},[s,r,i]);let[u,c]=(0,P.useState)(0),[m,y]=(0,P.useMemo)(()=>r||i===null||!s?[]:[i>=e.log.length?void 0:s.askArchived(e,i,n)??s.askDeclaration(n,i),s.keptOf(e,n)],[r,e,i,n,s,u]),g=m&&"waiting"in m?m.waiting:void 0,b=m&&"seq"in m?m:null,[k,p]=(0,P.useState)(void 0);(0,P.useEffect)(()=>{if(!g)return;let E=!0,I=setTimeout(()=>E&&p(g),Ai);return g.then(()=>E&&c(_=>_+1)),()=>{E=!1,clearTimeout(I)}},[g]);let S=g!==void 0&&k!==g||b!==null,v=(0,P.useMemo)(()=>{if(r||i===null||i>=e.log.length||!s||S)return null;try{let E=s.pastAt(e,i,n);return{seq:i,at:E.past?.at,store:E}}catch{return null}},[r,e,i,n,s,S,u]),A=(0,P.useRef)(null),x=S?A.current:v;(0,P.useEffect)(()=>{A.current=x},[x]);let F=(0,P.useCallback)(E=>a(E===null?null:E>=e.log.length?Number.POSITIVE_INFINITY:E),[e]),D=(0,P.useCallback)((E,I)=>[e,x?.store].some(_=>_!==void 0&&(_===E||_.seenBy(I)===E)),[e,x]),N=i!==null,V=(0,P.useMemo)(()=>({past:x,open:N,show:F,live:e,host:n,owns:D,archive:b,kept:y}),[x,N,F,e,n,D,b,y]);return r?o:V}var No=H(W(),1),Bt=(0,No.createContext)(null);var Fo=e=>`graview:setting:${e}`;function Ko(){return localStorage}function Bo(e,t){try{let n=(t??Ko()).getItem(Fo(e.name));if(n!==null&&e.options.some(o=>o.value===n))return n}catch{}return e.initial}function qo(e,t,n){try{(n??Ko()).setItem(Fo(e.name),t)}catch{}}function zo(e,t){if(typeof document>"u")return;let n=document.documentElement;if(e.honored==="root-font-size"){n.style.fontSize=t===e.initial?"":t;return}let o=`graview${e.name.replace(/-([a-z0-9])/g,(r,i)=>i.toUpperCase()).replace(/^[a-z]/,r=>r.toUpperCase())}`;t===e.initial?delete n.dataset[o]:n.dataset[o]=t}var L=H(W(),1);function qt(e){return Ue(e)}var Ti=12,Mi=4;function Oi(e,t,n){let o=qt(t);return e.get(o)??{participant:o,who:t.id??t.kind,at:null,mode:"docked",since:n,trail:[]}}var st=(e,t)=>t===null||e[e.length-1]===t?e:[...e,t].slice(-Ti);function $o(e,t){let n=e.filter(r=>r.length>0);if(n.length===0)return null;if(n.length<=Mi)return n[0];let o=new Set(n.map(r=>t(r)).filter(r=>r!==void 0));return o.size===1?Mt([...o][0]):n[0]}function zt(e,t,n){let o=new Map(e);if(t.type==="rest"){for(let[a,s]of e)s.mode!=="asking"&&s.mode!=="docked"&&t.at-s.since>=t.holdMs&&o.set(a,{...s,mode:"docked",at:null,trail:[],say:void 0,confidence:void 0});return o}if(t.author.kind!=="agent")return o;let r=Oi(e,t.author,t.at),i=a=>o.set(r.participant,{...r,...a,since:t.at});switch(t.type){case"read":{let a=$o(t.ids,n);return i({at:a,mode:"reading",trail:st(r.trail,a)}),o}case"about-to-write":case"write":{let a=$o(t.ids,n);return i({at:a,mode:"writing",trail:st(r.trail,a),say:void 0,confidence:void 0}),o}case"refused":return i({at:t.where,mode:"refused",say:t.say,confidence:void 0,trail:st(r.trail,t.where)}),o;case"asking":return i({at:t.where??r.at,mode:"asking",say:t.say,...t.confidence!==void 0?{confidence:t.confidence}:{confidence:void 0},trail:st(r.trail,t.where)}),o;case"said":return i({say:t.say,...t.confidence!==void 0?{confidence:t.confidence}:{confidence:void 0},...t.caption?{caption:t.caption}:{}}),o;case"over":return i({over:t.over}),o;case"home":return i({at:null,mode:"docked",trail:[],say:void 0,confidence:void 0,over:null}),o;default:return o}}var Uo="graview:session";function Yo(e){let t=()=>typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID().slice(0,8):Math.random().toString(36).slice(2,10);try{let n=e??sessionStorage,o=n.getItem(Uo);if(o)return o;let r=t();return n.setItem(Uo,r),r}catch{return t()}}var $t={name:"share-where",title:"Where you are",description:"Whether the others here see which stop you are on.",honored:"root-attribute",options:[{value:"shared",label:"Shown"},{value:"private",label:"Hidden"}],initial:"shared"},Ut={name:"share-over",title:"What you point at",description:"Whether the others see the thing under your pointer, outlined in your color.",honored:"root-attribute",options:[{value:"private",label:"Kept to yourself"},{value:"shared",label:"Outlined for others"}],initial:"private"},Zo=[$t,Ut],Ci=800;function Xo(e){let{channel:t,store:n,view:o,principal:r,session:i,robots:a,seatWho:s,settingValues:l,setView:u,ttlMs:c=lo,people:m,seats:y}=e,[g,b]=(0,L.useState)(()=>new Map),[k,p]=(0,L.useState)(null),[S,v]=(0,L.useState)(null),[A,x]=(0,L.useState)(null),F=typeof r.id=="string"&&r.id.length>0,D=F&&(l[$t.name]??$t.initial)==="shared",N=D&&(l[Ut.name]??Ut.initial)==="shared",V=qt({kind:r.kind,...r.id?{id:r.id}:{},session:i}),E=F?Qn(r,{graph:n.graph,schema:n.schema,...y?{seats:y}:{},...m?{people:m}:{}}):"",I=s?a.get(`agent:${s}:${i}`):void 0,_=(0,L.useMemo)(()=>!t||!D?null:{participant:V,kind:r.kind,name:E,...r.onBehalfOf?.id?{onBehalfOf:r.onBehalfOf.id,...r.onBehalfOf.name?{onBehalfOfName:r.onBehalfOf.name}:{}}:{},hue:eo(r.id??"nobody"),stop:A??Q(o),...N?{over:k}:{},...I?{robot:{at:I.at,mode:I.mode}}:{},at:new Date().toISOString()},[t,D,N,V,E,r.id,r.kind,r.onBehalfOf?.id,r.onBehalfOf?.name,o,A,k,I?.at,I?.mode]),We=(0,L.useRef)(null),Pe=R=>R&&t?.here({...R,caret:We.current??void 0,at:new Date().toISOString()}),Ae=(0,L.useCallback)(R=>{We.current=R,Pe(_)},[t,_]);(0,L.useEffect)(()=>{if(!_)return;Pe(_);let R=setInterval(()=>Pe(_),Ci);return()=>clearInterval(R)},[t,_]),(0,L.useEffect)(()=>t?t.onWho(B=>b(Rt(new Map,B,Date.now(),c))):void 0,[t,c]);let ke=g.size>0;(0,L.useEffect)(()=>{if(!ke)return;let R=setInterval(()=>{b(B=>{let X=Rt(B,[],Date.now(),c);return X.size===B.size?B:X})},Math.max(250,Math.min(1e3,c/4)));return()=>clearInterval(R)},[ke,c]),(0,L.useEffect)(()=>{if(!t||typeof window>"u")return;let R=()=>t.leave();return window.addEventListener("pagehide",R),()=>window.removeEventListener("pagehide",R)},[t]),(0,L.useEffect)(()=>{if(!N||typeof document>"u")return;let R=null,B=X=>{let ie=Lo(X.target);ie!==R&&(R=ie,p(ie))};return document.addEventListener("pointermove",B,{passive:!0}),()=>document.removeEventListener("pointermove",B)},[N]);let ue=(0,L.useRef)(null),K=S?g.get(S)??null:null,oe=(0,L.useCallback)(R=>{ue.current=null,v(R)},[]);(0,L.useEffect)(()=>{if(S){if(!K){v(null);return}K.stop!==ue.current?.stop&&(ue.current={stop:K.stop,at:Date.now()},u(Je(K.stop)))}},[S,K,u]),(0,L.useEffect)(()=>{let R=ue.current;!S||R===null||Date.now()-R.at<400||co(o,Je(R.stop))||v(null)},[o,S]),(0,L.useEffect)(()=>{if(!S||typeof document>"u")return;let R=B=>{B.key==="Escape"&&v(null)};return document.addEventListener("keydown",R),()=>document.removeEventListener("keydown",R)},[S]);let Re=_!==null,re=(0,L.useMemo)(()=>Re?{participant:V,name:E}:null,[Re,V,E]);return(0,L.useMemo)(()=>({who:g,sharing:re,following:K,follow:oe,sayWhere:x,sayCaret:Ae}),[g,re,K,oe,Ae])}var U=H(W(),1);function Jo(e){return Ue(e.author)}function Vi(e,t){return e.length>1?"co-edited":t==="rule"?"rule":t==="agent"?"autonomous":"directed"}function Qo(e,t,n,o,r){let i=new Map;for(let[l,u]of e)o-u.at<r&&i.set(l,u);let a=new Set(n.flatMap(l=>l.nodeIds)),s=(l,u,c)=>{let m=i.get(l),y=m?.participants.includes(Jo(u))?m.participants:[...m?.participants??[],Jo(u)];i.set(l,{at:o,manner:Vi(y,u.author.kind),intent:u.intent,wrote:(m?.wrote??!1)||(c.wrote??!1),read:(m?.read??!1)||(c.read??!1),broke:(m?.broke??!1)||a.has(l),participants:y})};for(let l of t){for(let u of l.writes)s(u,l,{wrote:!0});for(let u of l.reads)l.writes.includes(u)||s(u,l,{read:!0})}for(let l of n)for(let u of l.nodeIds){let c=i.get(u);i.set(u,{at:o,manner:c?.manner??"rule",intent:c?.intent??l.message,wrote:c?.wrote??!1,read:c?.read??!1,broke:!0,participants:c?.participants??["rule::"]})}return i}var Ii=2600;function er(e,t=Ii){let[n,o]=(0,U.useState)(()=>new Map),r=(0,U.useRef)(n);r.current=n;let i=(0,U.useRef)(null),a=(0,U.useCallback)(l=>{r.current=l,o(l),i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{r.current=new Map,o(new Map)},t)},[t]);(0,U.useEffect)(()=>{let l=e.violations(),u=e.subscribe((c,m)=>{let y=e.violations(),g=io(e.allInvariants(),l,y).introduces;l=y,a(Qo(r.current,m,g.map(b=>({nodeIds:b.nodeIds,message:b.message})),Date.now(),t))});return()=>{u(),i.current&&clearTimeout(i.current)}},[e,t,a]);let s=(0,U.useCallback)(l=>{l.reads.length!==0&&a(Qo(r.current,[Li(l)],[],Date.now(),t))},[t,a]);return{activity:n,noteAttention:s}}function Li(e){return{id:`attention:${e.intent}`,seq:-1,batch:"attention",author:e.author,intent:e.intent,mutation:null,primitives:[],reads:e.reads,writes:[],at:new Date().toISOString()}}var d=H(W(),1);function tr(){let e=null,t=new Set,n=new Set,o=r=>{for(let i of n)i(r)};return{subscribe(r){return t.add(r),t.size===1&&o(!0),()=>{t.delete(r),t.size===0&&(e=null,o(!1))}},snapshot:()=>e,set(r){if(!(e===r||e&&r&&e.x===r.x&&e.y===r.y)){e=r;for(let i of t)i()}},get listeners(){return t.size},onActive(r){return n.add(r),()=>void n.delete(r)}}}var lt=H(W(),1),_i=e=>e.definitions.some(t=>Xn(t).size>0);function nr(e,t,n){let[o,r]=(0,lt.useState)(void 0),i=(n.roles??[]).join("\0"),a=n.onBehalfOf?JSON.stringify(n.onBehalfOf):"";return(0,lt.useEffect)(()=>{if(!t||!_i(e.schema)){r(void 0);return}let s=!0,l=!1,u=e.graph,c=()=>{l||(l=!0,queueMicrotask(()=>{l=!1,s&&e.reread()}))},m=Jn(t,{kind:n.kind,...n.id===void 0?{}:{id:n.id},...n.roles?{roles:n.roles}:{},...n.onBehalfOf?{onBehalfOf:n.onBehalfOf}:{}},c);return kt(u,m.read),r(m),e.reread(),()=>{s=!1,kt(u,void 0)}},[e,t,n.kind,n.id,i,a]),o}function or(){let e=!1,t=new Set;return{moving:()=>e,set(n){if(n!==e){e=n;for(let o of t)o()}},subscribe(n){return t.add(n),()=>t.delete(n)}}}var te=H(De(),1),Hi="graview:place-menu",Ne=(0,d.createContext)(null),sr=(0,d.createContext)("scene");function Di({mode:e,children:t}){return(0,te.jsx)(sr.Provider,{value:e,children:t})}function Ni(){return(0,d.useContext)(sr)}var lr={kind:"human"},ji=[],Wi=[],Gi=[],Yt=[];function dr(e,t){let n=(0,d.useId)();(0,d.useEffect)(()=>{if(!globalThis.__graviewWatch)return;let o=t??lr,r=()=>ro(e,o,n);r();let i,a=e.subscribe(()=>{clearTimeout(i),i=setTimeout(r,250)});return()=>{clearTimeout(i),a(),globalThis.__graviewWatch?.unseen?.({words:[],from:n,gone:!0})}},[e,t,n])}var Fi=()=>{try{return typeof location<"u"&&new URLSearchParams(location.search).get("as")==="published"?"published":void 0}catch{return}},Ki={off:!0};function Bi({store:e,views:t,initialView:n,scheme:o="dark",initialSelection:r,principal:i,as:a,seats:s=ji,onSeat:l,people:u=Wi,memory:c,presenceTtlMs:m,app:y,settings:g=y?.settings??Gi,presence:b,typing:k,brand:p,locale:S,timeZone:v,onKeepLens:A,providers:x,ai:F,files:D,resolveApp:N,history:V,linkedRecords:E,menuSections:I,keptViews:_,onExport:We,subscriptions:Pe,dismissals:Ae,whileAway:ke,signIn:ue,view:K,onViewChange:oe,children:Re}){let re=(0,d.useContext)(Ne),R=I??re?.menuSections,B=ue??re?.signIn,X=_??re?.keptViews,ie=We??re?.onExport,[_r,Hr]=(0,d.useState)(null),ce=_r??i??s[0]?.principal??lr,Ge=Kt(e,ce,V),pn=Ge.past&&Ge.live===e?Ge.past.store:e,wt=a??Fi(),vt=!Ft(e),j=(0,d.useMemo)(()=>vt?e:pn.seenBy(ce,wt?{as:wt}:void 0),[vt,e,pn,ce,wt]);dr(e,ce);let[ae]=(0,d.useState)(()=>Yo(c)),[yn,Dr]=(0,d.useState)(!1),mn=(0,d.useCallback)(()=>Dr(!0),[]),se=(0,d.useMemo)(()=>b?[...g,...Zo]:g,[g,b]),[bt]=(0,d.useState)(()=>n??Qt(t,e.schema)),[Nr,gn]=(0,d.useState)(()=>Qe(bt??pe,r??bt?.selection??[])),Te=(0,d.useRef)(bt??pe).current,[hn,jr]=(0,d.useState)(null),[Sn,Wr]=(0,d.useState)(null),Z=(0,d.useContext)(Ne),[wn]=(0,d.useState)(()=>Z?.seatTalk??Wt(p?.name??e.schema.kinds.join(","))),xt=F??Z?.ai??Vt,Fe=(0,d.useMemo)(()=>xt.off?Ki:xt,[xt]),vn=(0,d.useRef)(Fe.interactions);vn.current=Fe.interactions;let[bn]=(0,d.useState)(()=>Z?.aiDesk??Gt(()=>vn.current)),[Gr]=(0,d.useState)(()=>Z?.subscriptions??oo()),xn=Pe??Z?.subscriptions??Gr,Et=A??Z?.onKeepLens,Ke=y??Z?.app,Be=S??Z?.locale,Fr=p?.locale??Ke?.brand?.locale,qe=v??Z?.timeZone;Zn({reader:Be,app:Fr,readerTimeZone:qe,appTimeZone:p?.timeZone??Ke?.brand?.timeZone});let En=(0,d.useRef)(null),Pn=(0,d.useCallback)(f=>{En.current=f},[]),An=(0,d.useCallback)(f=>En.current?.whereIs(f)??null,[]),[kn]=(0,d.useState)(()=>tr()),[Rn]=(0,d.useState)(()=>or()),[Pt,Kr]=(0,d.useState)(null),[Me,Tn]=(0,d.useState)(()=>new Map),Oe=(0,d.useRef)(Me);Oe.current=Me;let Ce=(0,d.useRef)(null),At=(0,d.useCallback)(f=>j.graph.getNode(f)?.kind,[j]),J=(0,d.useCallback)(f=>{let h=zt(Oe.current,f,At);Oe.current=h,Tn(h),Ce.current&&clearTimeout(Ce.current),[...h.values()].some(O=>O.mode!=="docked"&&O.mode!=="asking")&&(Ce.current=setTimeout(()=>{let O=zt(Oe.current,{type:"rest",at:Date.now(),holdMs:Jt},At);Oe.current=O,Tn(O)},Jt+20))},[At]),Mn=(0,d.useCallback)(f=>J({...f,at:f.at??Date.now()}),[J]),On=(0,d.useCallback)(f=>{Kr(f),f&&J({type:"home",author:{kind:"agent",id:f,session:ae},at:Date.now()})},[J,ae]);(0,d.useEffect)(()=>j.subscribe((f,h)=>{for(let T of h)T.author.kind==="agent"&&J({type:"write",author:T.author,ids:T.writes,at:Date.now()})}),[j,J]),(0,d.useEffect)(()=>()=>{Ce.current&&clearTimeout(Ce.current)},[]);let $=(0,d.useMemo)(()=>({...ce,session:ae}),[ce,ae]),Cn=nr(j,E,$),Vn=(0,d.useCallback)(f=>{Hr(f),l?.(f)},[l]),[Ve,Br]=(0,d.useState)(()=>Object.fromEntries(se.map(f=>[f.name,Bo(f,c)])));(0,d.useEffect)(()=>{for(let f of se)zo(f,Ve[f.name]??f.initial)},[se,Ve]);let In=(0,d.useCallback)((f,h)=>{let T=se.find(O=>O.name===f);!T||!T.options.some(O=>O.value===h)||(qo(T,h,c),Br(O=>({...O,[f]:h})))},[se,c]),[Ln,qr]=(0,d.useState)(null),{activity:_n,noteAttention:Hn}=er(j),Dn=(0,d.useCallback)(f=>{Hn(f),J({type:"read",author:f.author,ids:f.reads,at:Date.now()})},[Hn,J]),fe=(0,d.useCallback)(f=>{if(me(f)!==null||de(f).length>0||Ot(f))return!0;let h=fo(f);return h?j.graph.allEdges().some(T=>T.kind===h.kind&&T.from===h.from&&T.to===h.to):j.graph.getNode(f)!==void 0},[j]),Nn=(0,d.useCallback)(f=>{let h=f.selection??Yt,T=h.filter(fe),O=T.length===h.length?f:Qe(f,T);return O.focusId!==null&&!fe(O.focusId)&&(O=z(O,null)),O},[fe]),Ie=(0,d.useCallback)(f=>{let h=Nn(f),T=ar(j,$,h.shown);if(h.focusId!==null&&T.size>0){let O=de(h.focusId),Yn=j.graph.getNode(h.focusId);(O.length>0?O.every(Ur=>T.has(Ur)):Yn?T.has(Yn.kind):!1)&&(h={...h,focusId:null})}if(!h.overview&&h.focusId===null){let O=Te.focusId!==null&&!fe(Te.focusId)?Qt(t,e.schema)??{...pe,overview:!0}:Te;O.focusId!==null&&fe(O.focusId)?h={...h,focusId:O.focusId}:O.overview===!0&&(h={...h,overview:!0})}return h},[Nn,fe,j,Te,$,t,e.schema]),q=Ie(K??Nr),jn=(0,d.useMemo)(()=>ar(j,$,q.shown),[j,$,q.shown]),Wn=(0,d.useMemo)(()=>[...j.modules.administered.entries()].map(([f,h])=>{let T=j.mayAdminister(f,$);return{name:f,...h.description?{description:h.description}:{},kinds:h.kinds??[],canShow:T,shown:T&&(q.shown??[]).includes(f)}}),[j,$,q.shown]),Le=(0,d.useCallback)(f=>{let h=T=>Ie(typeof f=="function"?f(T):f);if(K!==void 0){oe?.(h(K));return}oe&&oe(h(q)),gn(T=>h(T))},[q,oe,K,Ie]);(0,d.useEffect)(()=>{K===void 0&&gn(f=>{let h=Ie(f);return h===f?f:h})},[q,K,Ie]);let Gn=q.selection??Yt,Fn=(0,d.useCallback)(f=>{Le(h=>Qe(h,typeof f=="function"?f(h.selection??Yt):f))},[Le]),{who:ze,following:Kn,follow:Bn,sayWhere:zr,sayCaret:qn,sharing:zn}=Xo({channel:b,store:j,view:q,principal:$,session:ae,robots:Me,seatWho:Pt,settingValues:Ve,setView:Le,seats:s,people:u,...m!==void 0?{ttlMs:m}:{}}),$r=(0,d.useMemo)(()=>({store:j,scheme:o,views:t,view:q,setView:Le,homeView:Te,selection:Gn,setSelection:Fn,menuAt:hn,setMenuAt:jr,whereIs:An,pointer:kn,motion:Rn,registerScene:Pn,robots:Me,noteSeat:Mn,seatWho:Pt,registerSeatWho:On,actsDoor:Sn,registerActsDoor:Wr,seatTalk:wn,aiDesk:bn,...c?{memory:c}:{},who:ze,following:Kn,follow:Bn,sayWhere:zr,sharing:zn,session:ae,ai:Fe,resolveApp:N,linkedRecords:E,menuSections:R,...X?{keptViews:X}:{},...ie?{onExport:ie}:{},subscriptions:xn,dismissals:Ae,whileAway:ke,signIn:B,linkedReads:Cn,movedByHand:yn,noteMoved:mn,emphasis:Ln,setEmphasis:qr,activity:_n,noteAttention:Dn,principal:$,seats:s,people:u,takeSeat:Vn,settings:se,settingValues:Ve,chooseSetting:In,hiddenKinds:jn,administered:Wn,...x?{providers:x}:{},...p?{brand:p}:{},...Et?{onKeepLens:Et}:{},app:Ke,...Be?{locale:Be}:{},...qe?{timeZone:qe}:{}}),[j,o,t,q,Le,Gn,Fn,hn,An,kn,Rn,Pn,Me,Mn,Pt,On,Sn,wn,bn,c,ze,Kn,Bn,zn,ae,Fe,N,E,R,X,ie,xn,Ae,ke,B,Cn,yn,mn,Ln,_n,Dn,$,s,u,Vn,se,Ve,In,jn,Wn,x,p,Et,Ke,Be,qe]),$n=(0,d.useMemo)(()=>k?{typing:k,sayCaret:qn,who:ze}:null,[k,qn,ze]),Un=D?(0,te.jsx)(it.Provider,{value:D,children:Re}):Re;return(0,te.jsx)(Ne.Provider,{value:$r,children:(0,te.jsx)(He.Provider,{value:Ge,children:(0,te.jsx)(Yi,{children:vt?null:$n?(0,te.jsx)(Bt.Provider,{value:$n,children:Un}):Un})})})}var ur=(0,d.createContext)(null),Zt,Xt=new Set,qi=e=>(Xt.add(e),()=>void Xt.delete(e)),rr=()=>Zt;function zi(e){if(!Zt){Zt=e;for(let t of[...Xt])t()}}var $i=300;function Ui(e){let t=0;return async(n,o)=>{let r=++t;return await new Promise(i=>setTimeout(i,$i)),r===t?e(n,o):[]}}function Yi({children:e}){let{store:t,view:n,views:o,principal:r,hiddenKinds:i,selection:a,ai:s}=ne(),l=dt(),u=n.q,c=n.focusId,m=!!(u&&u.trim().length>0),y=(0,d.useSyncExternalStore)(qi,rr,rr),g=(0,d.useMemo)(()=>m&&y?{flagged:new Set(t.violations().flatMap(A=>A.nodeIds)),touched:y.touchWeights(t.log.all())}:null,[t,l,m,y]),b=c?t.graph.getNode(c)?.kind??me(c)??(de(c).length===1?de(c)[0]:void 0):void 0,k=(0,d.useMemo)(()=>s.near&&Ui(s.near),[s.near]),p=(0,d.useMemo)(()=>!u||!g||!y?null:y.search(t,u,{...b?{inKind:b}:{},principal:r,places:o.places(),kinds:t.schema.kinds.filter(A=>!i.has(A)),from:[...a,...c&&t.graph.has(c)?[c]:[]],flagged:g.flagged,touched:g.touched,limit:200,rank:k}),[t,u,r,o,i,a,c,b,g,k]),[S,v]=(0,d.useState)();return(0,d.useEffect)(()=>void p?.later?.then(A=>v([p,A])),[p]),(0,te.jsx)(ur.Provider,{value:S?.[0]===p?S[1]:p,children:e})}var ir=new WeakMap;function Gs(e){let t=ir.get(e);return t||ir.set(e,t=new Set(e.matched)),t}function Zi(){return(0,d.useContext)(ur)}function ne(){let e=(0,d.useContext)(Ne);if(!e)throw new Error("useGraview must be used inside a <GraviewProvider>.");return e}function en(){return(0,d.useContext)(Ne)??null}function dt(){let{store:e}=ne(),t=(0,d.useRef)(null),n=(0,d.useRef)(null),o=(0,d.useCallback)(()=>(n.current!==e&&(n.current=e,t.current=null),t.current??=e.graph.allNodes(),t.current),[e]),r=(0,d.useCallback)(i=>e.subscribe(()=>{t.current=null,i()}),[e]);return(0,d.useSyncExternalStore)(r,o,o)}function Xi(e){let{store:t}=ne(),n=(0,d.useCallback)(r=>t.subscribe(r),[t]),o=(0,d.useCallback)(()=>e===null?void 0:t.graph.getNode(e),[t,e]);return(0,d.useSyncExternalStore)(n,o,o)}function ar(e,t,n){let o=new Set(e.modules.disabledKinds);for(let r of e.kindsKeptFrom(t))o.add(r);for(let[r,i]of e.modules.administered)if(!(e.mayAdminister(r,t)&&(n??[]).includes(r)))for(let a of i.kinds??[])o.add(a);return o}var Jt=2600;var cr=new WeakSet,Ji=e=>cr.has(e),Qi=e=>void cr.add(e);function Qt(e,t){let n=so(e.arrangement?.()?.first,t,e.places());if(!(!n||n.to==="home"))return n.to==="place"?{...pe,focusId:ee(n.place.kind),within:{view:n.place.as}}:{...pe,focusId:ee(n.kind)}}var fr=H(W(),1),ea=(0,fr.createContext)(!1);var ut=Symbol.for("graview.default-view");function pr(e){return Object.defineProperty(e,ut,{value:!0,enumerable:!1}),e}function yr(e){return typeof e=="function"&&e[ut]===!0}var ct=Symbol.for("graview.replaces-page");function mr(e){return Object.defineProperty(e,ct,{value:!0,enumerable:!1}),e}function gr(e){return typeof e=="function"&&e[ct]===!0}var ft=Symbol.for("graview.bleeds");function hr(e){return Object.defineProperty(e,ft,{value:!0,enumerable:!1}),e}function Sr(e){return typeof e=="function"&&e[ft]===!0}var pt=Symbol.for("graview.previews");function wr(e,t={}){return Object.defineProperty(e,pt,{value:t,enumerable:!1}),e}function vr(e){return typeof e=="function"?e[pt]:void 0}function ta(e){return ao(e)}function na(e,t){if(t===e)return e;for(let r of t.registrations())e.register(r.kind,r,r.view,r);let n=t.arrangement?.();n&&e.arrange?.(n);let o=t.homes?.()??[];if(o.length>0)for(let r of o)e.home?.(r.view,r.name!==void 0?{name:r.name}:void 0);else{let r=t.homeView?.();r&&e.home?.(r)}return e}var M=H(W(),1),Y=H(De(),1),tn=new Set,yt=0;function nn(e){return()=>{yt+=1;let t=e();return t.then(()=>void(yt-=1),()=>void(yt-=1)),t}}var oa=()=>yt,gt=(0,M.createContext)(null);function ra(){return{waiting:new Map,at:0}}function ia(e){for(let[t,n]of e.waiting)n<e.at&&e.waiting.delete(t);e.at+=1}var aa=e=>e?.waiting.size??0;function Er(e,t){e?.waiting.set(t,e.at)}function Pr(e){let t=(0,M.useContext)(gt);(0,M.useLayoutEffect)(()=>{t?.waiting.delete(e)},[t,e])}function sa(e){let t={},n=!1,o=new Set,r=(0,M.lazy)(nn(()=>e().then(a=>{n=!0;let s=a.default;function l(u){return Pr(t),(0,M.createElement)(s,u)}return{default:l}},a=>{for(let s of o)s.waiting.delete(t);throw a})));function i(a){let s=(0,M.useContext)(gt);return!n&&s&&(o.add(s),Er(s,t)),(0,M.createElement)(r,a)}return i}var Ar=!1,kr=!1,mt=new Set;function la(){Ar=!0}function da(){kr=!0;for(let e of[...mt])e();mt.clear()}var Rr=()=>kr||!Ar;function ua(e){return Rr()?(e(),()=>{}):(mt.add(e),()=>void mt.delete(e))}var br=!1;function on(){for(let e of[...tn])e()}function ca(){br||typeof window>"u"||(br=!0,window.addEventListener("online",on))}function rn(e){let t,n=!1,o=!1,r,i=0,a=new Set,s=()=>{i+=1;for(let y of[...a])y()},l=y=>(a.add(y),()=>void a.delete(y)),u=()=>i,c=()=>void m().catch(()=>{});function m(){if(n)return Promise.resolve(t);if(r)return r;let y=e().then(g=>(t=g,n=!0,o=!1,r=void 0,tn.delete(c),s(),g),g=>{throw r=void 0,o=!0,tn.add(c),ca(),s(),g});return y.catch(()=>{}),r=y,y}return{load:m,prefetch:c,get current(){return t},get failed(){return o},part(y,g={}){let b=g.what??"This part",k={};function p(A){(0,M.useSyncExternalStore)(l,u,u),Pr(k);let x=(0,M.useRef)(null),F=(0,M.useRef)(null),D=(0,M.useRef)(!1);return(0,M.useEffect)(()=>{o&&r===void 0&&c()},[]),n&&typeof document<"u"&&x.current!==null&&document.activeElement===x.current&&(D.current=!0),(0,M.useLayoutEffect)(()=>{if(!(!n||!D.current)){D.current=!1;for(let N=F.current?.nextElementSibling??null;N!==null;N=N.nextElementSibling){let V=N.matches(xr)?N:N.querySelector(xr);if(V instanceof HTMLElement){V.focus();return}}}}),n?(0,Y.jsxs)(Y.Fragment,{children:[D.current?(0,Y.jsx)("span",{ref:F,hidden:!0}):null,y(t,A)]}):g.quiet?null:(0,Y.jsx)(fa,{what:b,button:x,...g.as?{as:g.as}:{}})}let S=(0,M.lazy)(nn(()=>m().then(()=>({default:p}),()=>({default:p}))));function v(A){let x=(0,M.useContext)(gt),[F]=(0,M.useState)(()=>n||o);return!n&&!o&&Er(x,k),(0,M.createElement)(F?p:S,A)}return v}}}var xr="button,a[href],input,select,textarea,[tabindex]:not([tabindex='-1'])";function fa({what:e,button:t,as:n="p"}){let r=typeof navigator<"u"&&navigator.onLine===!1?`${e} will load when you're back online.`:`${e} didn't load.`;return(0,Y.jsxs)(n,{"data-testid":"lazy-part-missing",style:{margin:0,fontSize:"0.875rem",color:"var(--graview-ink-muted)"},children:[(0,Y.jsx)("span",{role:"status",children:r})," ",(0,Y.jsx)("button",{ref:t,type:"button","data-testid":"lazy-part-retry",onClick:on,style:{font:"inherit",fontWeight:600,color:"var(--graview-ink)",background:"none",border:"1px solid var(--graview-edge)",borderRadius:6,padding:"2px 10px"},children:"Try again"})]})}var we=H(W(),1);function pa(){let{selection:e,setSelection:t}=ne();return(0,we.useMemo)(()=>({selection:e,set:n=>t(n),clear:()=>t([]),toggle:n=>t(o=>o.includes(n)?o.filter(r=>r!==n):[...o,n]),isSelected:n=>e.includes(n)}),[e,t])}function ya(){let{store:e}=ne(),t=dt();return(0,we.useMemo)(()=>ma(e),[e,t])}var Tr=new WeakMap;function ma(e){let t=Tr.get(e);if(!t){let n={violations:null};e.subscribe(()=>{n.violations=null}),Tr.set(e,n),t=n}return t.violations??=e.violations(),t.violations}function ga(){let{view:e,setView:t}=ne();return(0,we.useMemo)(()=>({view:e,url:Q(e),focus:n=>t(o=>z(o,n)),show:n=>t(o=>po(o,n)),toggle:n=>t(o=>et(o,n)),go:n=>t(n)}),[e,t])}var Se={at:0,depth:0,listeners:new Set,tell(){for(let e of this.listeners)e()}};typeof window<"u"&&window.addEventListener("popstate",e=>{let t=e.state;Se.at=typeof t?.graview=="number"?t.graview:0,Se.at>Se.depth&&(Se.depth=Se.at),Se.tell()});var G=H(W(),1),sn={profile:{trigger:"profile-button",pane:"profile",opens:"press",focus:"into",drawn:["shell","embed"]},problems:{trigger:"standing",pane:"problems",opens:"press",focus:"into",drawn:["shell","embed"]},places:{trigger:"app-places-open",pane:"app-places",opens:"press",focus:"into",drawn:["embed"]},here:{trigger:"here-open",pane:"here-list",opens:"press",focus:"into",drawn:["shell","embed","pages"]},suggested:{trigger:"suggested-button",pane:"suggested",opens:"press",focus:"into",drawn:["shell","embed","pages"]},activity:{trigger:"activity-button",pane:"activity",opens:"press",focus:"into",drawn:["shell","embed","pages"]},find:{trigger:"find-box",pane:"find-strip",opens:"typing",focus:"stays",drawn:["shell"]},districts:{trigger:"beyond-more",pane:"beyond-list",opens:"press",focus:"into",drawn:["shell","embed"]},acts:{trigger:null,pane:"context-menu",opens:"context-menu",focus:"into",drawn:["shell","embed","pages"]},arrange:{trigger:"arrange-add",pane:"arrange-list",opens:"press",focus:"into",drawn:["pages"]},"studio-ask":{trigger:"studio-agent",pane:"studio-agent-panel",opens:"press",focus:"into",drawn:["studio"]}},ha={position:"fixed",inset:"auto",margin:0,zIndex:to("popover"),boxSizing:"border-box"},ht=6,ve=8,Sa=e=>typeof e.showPopover=="function";function St(e){try{return e.matches(":popover-open")}catch{return!1}}function wa(e){if(typeof e=="function"){let o=e();return o?{left:o.x,right:o.x,top:o.y,bottom:o.y}:null}let t=e.current;if(!t||!t.isConnected)return null;let n=t.getBoundingClientRect();return{left:n.left,right:n.right,top:n.top,bottom:n.bottom}}function ln(e,t,n={}){let o=wa(t);if(!o)return;let r={width:document.documentElement.clientWidth||innerWidth,height:innerHeight},i=e.dataset.graviewDesignedHeight??=e.style.maxHeight;e.style.maxHeight=i;let a=e.getBoundingClientRect(),s=r.height-o.bottom-ht-ve,l=o.top-ht-ve,u=a.height<=s||s>=l,c=Math.max(96,Math.floor(u?s:l)),m=Math.min(a.height,c);a.height>c&&(e.style.maxHeight=i?`min(${i}, ${c}px)`:`${c}px`);let y=a.width,g=n.align==="start"?o.left:o.right-y,b=typeof t=="function"?null:t.current?.closest("[data-graview-embed]")?.getBoundingClientRect();b&&y<=b.right-b.left&&(g<b.left?g=o.left+y<=b.right?o.left:b.left:g+y>b.right&&(g=o.right-y>=b.left?o.right-y:b.right-y));let k=y>=r.width-2*ve?Math.max(0,(r.width-y)/2):Math.max(ve,Math.min(g,r.width-ve-y)),p=u?o.bottom+ht:Math.max(ve,o.top-ht-m);e.style.left=`${Math.round(k)}px`,e.style.top=`${Math.round(p)}px`}function Mr(e,t,n,o={}){let r=o.align??"end";(0,G.useLayoutEffect)(()=>{let i=e.current;if(!t||!i)return;if(Sa(i)&&!St(i))try{i.showPopover(),ba()}catch{}let a=0,s=u=>{u?.target instanceof Node&&i.contains(u.target)||(cancelAnimationFrame(a),a=requestAnimationFrame(()=>ln(i,n,{align:r})))};ln(i,n,{align:r}),addEventListener("resize",s),addEventListener("scroll",s,!0);let l=typeof ResizeObserver>"u"?null:new ResizeObserver(()=>s());return l?.observe(i),()=>{if(cancelAnimationFrame(a),removeEventListener("resize",s),removeEventListener("scroll",s,!0),l?.disconnect(),i.isConnected&&St(i))try{i.hidePopover()}catch{}}},[t,e,r])}var dn=new Set;function va(e){return dn.add(e),()=>dn.delete(e)}function ba(){for(let e of dn)if(!(!e.isConnected||!St(e)))try{e.hidePopover(),e.showPopover()}catch{}}var be=null,xa='button:not([disabled]), [href], input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), summary, [tabindex]:not([tabindex="-1"])';function Ea(e){for(let t of e.querySelectorAll(xa))if(t.closest("[hidden]")===null&&getComputedStyle(t).visibility!=="hidden")return t;return e}var an=()=>{let e=document.activeElement;return e===null||e===document.body};function Pa(e,t={}){let{at:n,returnTo:o,onOpenChange:r}=t,i=t.popover!==!1,[a,s]=(0,G.useState)(!1),l=t.open??a,u=(0,G.useRef)(null),c=(0,G.useRef)(null),m=(0,G.useCallback)(v=>{u.current=v},[]),y=(0,G.useCallback)(v=>{c.current=v},[]),g=`graview-popover-${(0,G.useId)().replace(/:/g,"")}`,b=(0,G.useRef)({onOpenChange:r,returnTo:o,controlled:t.open!==void 0});b.current={onOpenChange:r,returnTo:o,controlled:t.open!==void 0};let k=(0,G.useCallback)(v=>{b.current.controlled||s(v),b.current.onOpenChange?.(v)},[]),p=(0,G.useCallback)(()=>{(document.querySelector(`[aria-controls="${g}"]`)??u.current??b.current.returnTo?.()??null)?.focus({preventScroll:!0})},[g]),S=(0,G.useCallback)(v=>{let A=c.current,x=typeof document>"u"?null:document.activeElement,F=x===null||x===document.body||A!==null&&A.contains(x);k(!1),!(!v||!F)&&(p(),requestAnimationFrame(()=>{an()&&p()}))},[k,p]);return Mr(c,i&&l,n??u,t.align?{align:t.align}:{}),(0,G.useEffect)(()=>{if(!i||!l)return;let v={name:e,close:()=>S(!1)};if(be&&be.close!==v.close&&be.close(),be=v,sn[e].focus==="into"){let V=c.current;V&&!V.contains(document.activeElement)&&Ea(V).focus({preventScroll:!0})}let A=V=>{V.key==="Escape"&&S(!0)},x=V=>{let E=V.target;if(!(E instanceof Node))return;let I=c.current;if(I?.contains(E)||u.current?.contains(E))return;let _=E instanceof Element?E.closest('[role="dialog"], [role="alertdialog"]'):null;_&&!(I&&_.contains(I))||(S(!1),sn[e].focus==="into"&&requestAnimationFrame(()=>{(an()||I!==null&&I.contains(document.activeElement))&&p()}))},F=null,D=null,N=V=>{let E=V.target;if(!(E instanceof Element))return;let I=c.current,_=E.closest('[role="dialog"], [role="alertdialog"]');!_||I&&(I.contains(_)||_.contains(I))||(F=_,S(!1))};return document.addEventListener("keydown",A),document.addEventListener("pointerdown",x,!0),document.addEventListener("focusin",N),()=>{document.removeEventListener("keydown",A),document.removeEventListener("pointerdown",x,!0),document.removeEventListener("focusin",N);let V=F;V&&typeof MutationObserver<"u"&&(D?.disconnect(),D=new MutationObserver(()=>{V.isConnected||(D?.disconnect(),requestAnimationFrame(()=>{(an()||document.activeElement.closest("[hidden]")!==null)&&p()}))}),D.observe(document.body,{childList:!0,subtree:!0}),setTimeout(()=>D?.disconnect(),10*6e4)),be?.close===v.close&&(be=null)}},[i,l,e,S,p]),{open:l,setOpen:v=>v?k(!0):S(!0),toggle:()=>l?S(!0):k(!0),trigger:{ref:m,"aria-expanded":l,"aria-controls":g,"data-graview-popover-trigger":e},pane:{ref:y,id:g,popover:"manual",tabIndex:-1,"data-graview-popover":e,"data-graview-overlay":""}}}var xe=H(W(),1);var Or=(0,xe.createContext)(null);function Aa(){let e=(0,xe.useContext)(Or),t=en(),n=(o,r,i)=>t?.setView(a=>le(le(ye(z(a,ee(o)),!1),"view",r),"filter",i?.filter??null));return(0,xe.useMemo)(()=>e??{record:o=>{t&&(t.setView(r=>z(ye(r,!1),o)),t.setSelection([o]))},place:(o,r)=>{let i=t?.views.places().find(a=>a.as===o);i&&n(i.kind,i.as,r)},list:(o,r)=>n(o,null,r)},[e,t])}var Ee=H(W(),1);var ka=rn(Ye(()=>(__graviewPreload(import.meta.url,["./chunk.VNJKGSGZ.js","./chunk.SDO3U72B.js","./chunk.X3MMJ3QC.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.VGHZQEHS.js"))));function Ra(e,t,n){let o,r=!1,i=()=>{let{hidden:s,removed:l}=t.current();o||r||s.length+l.length===0||(o=()=>{},ka.load().then(u=>{r||(o=u.watchTidied(e,t,n))},String))};i();let a=t.onChange?.(i);return()=>{r=!0,a?.(),o?.()}}function Ta(e,t){let[n,o]=(0,Ee.useState)();return(0,Ee.useEffect)(()=>t?Ra(e,t,r=>o([e,r])):void 0,[e,t]),n?.[0]===e?n[1]:e}var Cr=H(W(),1),Ma=(0,Cr.createContext)(!1);var un=H(W(),1),Oa=(0,un.createContext)(null),Ca=(0,un.createContext)(null);var Vr=H(W(),1),Va=(0,Vr.createContext)(null);var Ir=H(W(),1),cn='button:not([disabled]), a[href], input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), summary, [tabindex]:not([tabindex="-1"])',fn=e=>e instanceof HTMLElement&&(e.matches(cn)||e.hasAttribute("tabindex")),je=e=>typeof e.checkVisibility=="function"?e.checkVisibility():e.getClientRects().length>0;function Ia(e,t){let n=l=>l.replace(/["\\]/g,"\\$&"),o=t.getAttribute("data-testid"),r=t.getAttribute("data-graview-pick"),i=t.getAttribute("aria-label"),a=o?`[data-testid="${n(o)}"]`:r?`[data-graview-pick="${n(r)}"]`:i?`${t.tagName.toLowerCase()}[aria-label="${n(i)}"]`:null;if(!a)return null;let s=e.querySelector(a);return s&&fn(s)&&je(s)?s:null}var La=e=>e.isConnected&&fn(e)&&!e.matches(":disabled")&&e instanceof HTMLElement&&je(e);function Lr(e,t){let n=t?Ia(e,t):null;if(n)return n;let o=e.querySelector("[data-graview-view][tabindex]");if(o&&je(o))return o;for(let r of e.querySelectorAll(cn))if(je(r))return r;return fn(e)&&je(e)?e:null}function _a(e){(0,Ir.useEffect)(()=>{let t=e.current;if(!t||typeof MutationObserver>"u")return;let n=[],o=p=>{let S=p.target;if(S instanceof Element){n=[];for(let v=S;v&&v!==t.parentElement;v=v.parentElement)n.push(v)}},r=!1,i=!1,a=t.ownerDocument,s=()=>!i&&a.defaultView!==null,l=(p,S)=>void setTimeout(()=>s()&&S(),p),u=p=>void requestAnimationFrame(()=>s()&&p()),c=p=>{if(r=!1,i)return;let S=a.activeElement;if(!(!(S===null||S===a.body||S===a.documentElement)||n.length===0)){if(La(n[0])){p&&n[0]instanceof HTMLElement&&n[0].focus({preventScroll:!0});return}for(let A of n.slice(1)){if(!A.isConnected)continue;let x=Lr(A,n[0]);if(x){x.focus({preventScroll:!0}),n=[];return}}}},m=(p,S=Date.now()+2500)=>{l(100,()=>{c(p);let v=a.activeElement;(v===null||v===a.body||v===a.documentElement)&&n.length>0&&Date.now()<S&&m(p,S)})},y=()=>{r||n.length===0||(r=!0,l(60,()=>u(()=>{c(!1),m(!1)})))},g=p=>{if(!(p instanceof KeyboardEvent&&!["Enter"," ","Escape"].includes(p.key))){if(!(p instanceof KeyboardEvent)){let S=p.target instanceof Element?p.target.closest(cn):null,v=a.activeElement,A=v===null||v===a.body||v===a.documentElement;if(S&&A&&t.contains(S)){n=[];for(let x=S;x&&x!==t.parentElement;x=x.parentElement)n.push(x);l(150,()=>u(()=>{c(!1),m(!1)}));return}}!(p instanceof KeyboardEvent)&&!(p.target instanceof Node&&n[0]?.contains(p.target))||l(150,()=>u(()=>{c(!0),m(!0)}))}},b=new MutationObserver(()=>{n.length>0&&!n[0].isConnected&&y()}),k=p=>{p.relatedTarget===null&&y()};return t.addEventListener("focusin",o),t.addEventListener("focusout",k),t.addEventListener("click",g),t.addEventListener("keydown",g),b.observe(t,{childList:!0,subtree:!0}),()=>{i=!0,t.removeEventListener("focusin",o),t.removeEventListener("focusout",k),t.removeEventListener("click",g),t.removeEventListener("keydown",g),b.disconnect()}},[e])}export{pe as a,Q as b,Je as c,Da as d,Na as e,co as f,uo as g,fo as h,Tt as i,z as j,po as k,le as l,ye as m,Qe as n,_e as o,et as p,nt as q,Mt as r,me as s,Ga as t,Zr as u,ee as v,yo as w,de as x,mo as y,Xr as z,Fa as A,go as B,Ot as C,Jr as D,Qr as E,ei as F,W as G,Wt as H,vi as I,xi as J,Lo as K,it as L,Ei as M,He as N,Ho as O,Pi as P,Ft as Q,Kt as R,Bt as S,De as T,Hi as U,Ne as V,Di as W,Ni as X,dr as Y,Bi as Z,zi as _,Gs as $,Zi as aa,ne as ba,en as ca,dt as da,Xi as ea,Ji as fa,Qi as ga,Qt as ha,Or as ia,Aa as ja,ea as ka,pr as la,yr as ma,mr as na,gr as oa,hr as pa,Sr as qa,wr as ra,vr as sa,ta,na as ua,nn as va,oa as wa,gt as xa,ra as ya,ia as za,aa as Aa,sa as Ba,la as Ca,da as Da,Rr as Ea,ua as Fa,rn as Ga,Ta as Ha,Ma as Ia,Oa as Ja,Ca as Ka,Va as La,pa as Ma,ya as Na,ga as Oa,Se as Pa,_a as Qa,ha as Ra,St as Sa,Mr as Ta,va as Ua,Pa as Va};
|
|
2
|
+
/*! Bundled license information:
|
|
3
|
+
|
|
4
|
+
react/cjs/react.production.js:
|
|
5
|
+
(**
|
|
6
|
+
* @license React
|
|
7
|
+
* react.production.js
|
|
8
|
+
*
|
|
9
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
10
|
+
*
|
|
11
|
+
* This source code is licensed under the MIT license found in the
|
|
12
|
+
* LICENSE file in the root directory of this source tree.
|
|
13
|
+
*)
|
|
14
|
+
|
|
15
|
+
react/cjs/react-jsx-runtime.production.js:
|
|
16
|
+
(**
|
|
17
|
+
* @license React
|
|
18
|
+
* react-jsx-runtime.production.js
|
|
19
|
+
*
|
|
20
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
21
|
+
*
|
|
22
|
+
* This source code is licensed under the MIT license found in the
|
|
23
|
+
* LICENSE file in the root directory of this source tree.
|
|
24
|
+
*)
|
|
25
|
+
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{h as z,i as D,j as H}from"./chunk.
|
|
1
|
+
import{h as z,i as D,j as H}from"./chunk.GQHFLOTZ.js";import"./chunk.2XTCDFWU.js";import{a as P,b as A,c as p,d as W}from"./chunk.Q355UPFG.js";import"./chunk.XOTES3PI.js";import"./chunk.WGTBQHHE.js";import"./chunk.HF5SNUTK.js";import"./chunk.S7ZLGODY.js";import"./chunk.2QESVWUW.js";import"./chunk.UM5H2VVR.js";import"./chunk.WEGPDJTB.js";import"./chunk.MRYN42EQ.js";import"./chunk.E22DDEQI.js";import"./chunk.OLW44AP5.js";import"./chunk.F6P3WSMW.js";import"./chunk.YMRVKG6W.js";import"./chunk.BDBLGGFJ.js";import"./chunk.D3AISGQH.js";import"./chunk.IZ2ZTNEV.js";import"./chunk.6E36I2GC.js";import"./chunk.CJUIJ6TL.js";import"./chunk.IIESMHXY.js";import{a as C,b as O}from"./chunk.MB7LKKUD.js";import"./chunk.WVUJXDXZ.js";import"./chunk.Q6LLURRM.js";import"./chunk.AXXYJCSW.js";import"./chunk.N4LOI3YA.js";import"./chunk.RKZ4J3H2.js";import"./chunk.HKINU7VO.js";import"./chunk.YGZCESXY.js";import"./chunk.GZHZLJBF.js";import"./chunk.KHZA5F7A.js";import"./chunk.OJGHDWI6.js";import"./chunk.KSVJHSRH.js";import"./chunk.NSGQXCH6.js";import"./chunk.SZG6HJWH.js";import"./chunk.2FOIJ5ID.js";import"./chunk.6IUEGPCZ.js";import"./chunk.CUJX3IVA.js";import{G as B,Sa as k,T as L}from"./chunk.VNJKGSGZ.js";import"./chunk.SDO3U72B.js";import{Wc as R}from"./chunk.X3MMJ3QC.js";import"./chunk.FQLNBIQ5.js";import{b as E}from"./chunk.AJZBJBMO.js";var r=E(B(),1);var s=E(L(),1);function M(c){let e=document.activeElement;if(e!==null&&e!==document.body&&e!==document.documentElement&&e.isConnected)return;let n=c??document,o=n.querySelector("main")??n.querySelector("[data-graview-page]")??null,t=n.querySelector("[data-graview-page-title]")??o?.querySelector("h1, h2")??o;t instanceof HTMLElement&&(t.hasAttribute("tabindex")||t.setAttribute("tabindex","-1"),t.focus({preventScroll:!0}))}var I=1500;function N(c,e,n){let{store:o,principal:t}=c,l=z(o),g=(0,r.useMemo)(()=>P(o,t),[o,t,l]),w=(0,r.useRef)(n),[b,d]=(0,r.useState)(),[y,u]=(0,r.useState)("");(0,r.useEffect)(()=>{let a=A(o,t,w.current);w.current=o.batches().length,a&&(d({batch:a.batch,at:e,when:Date.now()}),u(""))},[o,t,l]),(0,r.useEffect)(()=>{d(a=>!a||a.at===e?a:Date.now()-a.when<I?{...a,at:e}:void 0)},[e]);let[x,i]=(0,r.useState)(null),v=(0,r.useCallback)(()=>{d(void 0),i(null)},[]),f=(0,r.useCallback)(()=>{i(null);try{let a=W(o,t);a&&u(`Took back \u201C${a.intent}\u201D`)}catch(a){i(a instanceof Error?a.message:String(a))}},[o,t]),S=g&&b?.batch===g.batch&&b.at===e?g:void 0;return{change:g,offered:S,close:v,takeBack:f,refused:x,said:y}}function ee({context:c,docked:e,at:n,since:o,compact:t=!1,className:l,size:g}){let{change:w,offered:b,close:d,takeBack:y,refused:u,said:x}=N(c,n,o),i=e?b:w,v=(0,r.useRef)(null),f=e&&(i!==void 0||u!==null);j(v,f),(0,r.useEffect)(()=>{if(!f)return;let m,h=()=>m=setTimeout(()=>v.current?.matches(":hover, :focus-within")?h():d(),1e4);return h(),()=>clearTimeout(m)},[f,i?.batch,u,d]);let S=x||(e&&i?p(i):""),a=e?{position:"fixed",inset:"auto",margin:0,padding:0,border:"none",background:"none",overflow:"visible",zIndex:R("toast"),width:"max-content",height:"auto",bottom:"calc(16px + env(safe-area-inset-bottom, 0px))",left:16,justifyItems:"start",color:"var(--graview-ink)",...f?{}:{display:"none"}}:{},T=i?(0,s.jsxs)("button",{type:"button","data-testid":"page-undo",title:`${p(i)} \u2014 \u2318Z or Ctrl+Z`,"aria-keyshortcuts":"Meta+Z Control+Z",onClick:m=>{let h=m.currentTarget.closest("[data-graview-face]");y(),requestAnimationFrame(()=>M(h))},...e?{style:U}:{className:H("graview-undo",l),...D(g),...t?{"data-compact":"","aria-label":p(i)}:{}},children:[(0,s.jsx)("span",{"aria-hidden":"true",children:"\u21B6"}),e?(0,s.jsx)("span",{style:K,children:p(i)}):(0,s.jsx)("span",{className:"graview-undo-words",children:t?"Undo":p(i)})]}):null;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("span",{role:"status","aria-live":"polite",style:V,children:S}),(0,s.jsxs)("div",{ref:v,...e?{popover:"manual","data-graview-foot":"","data-graview-offstage":""}:{},"data-testid":e?"face-undo-dock":"page-undo-place",...e?{style:{...F,...a}}:{className:"graview-undo-place"},children:[e?null:(0,s.jsx)("style",{children:q}),e&&i?(0,s.jsxs)("div",{"data-testid":"page-undo-notice",style:Z,children:[T,(0,s.jsx)("button",{type:"button","data-testid":"page-undo-dismiss","aria-label":`Dismiss: ${p(i)}`,title:"Dismiss",onClick:m=>{let h=m.currentTarget.closest("[data-graview-face]");d(),requestAnimationFrame(()=>M(h))},style:$,children:"\xD7"})]}):T,u?(0,s.jsx)("span",{"data-testid":"page-undo-refused",role:"alert",className:"graview-undo-refused",...e?{style:{fontSize:"0.8125rem",lineHeight:1.4,color:"var(--graview-warn)",borderRadius:6,background:"var(--graview-float)",padding:"4px 8px"}}:{},children:u}):null]})]})}function j(c,e){(0,r.useLayoutEffect)(()=>{let n=c.current;if(!n||!e)return;if(typeof n.showPopover=="function"&&!k(n))try{n.showPopover()}catch{}let o=()=>n.parentElement?.closest("[data-embed-content]")??null,t=()=>{O(n,o()),dispatchEvent(new Event(C))};t(),addEventListener("resize",t),addEventListener("scroll",t,!0);let l=typeof ResizeObserver=="function"?new ResizeObserver(t):null;return l?.observe(n),()=>{if(l?.disconnect(),removeEventListener("resize",t),removeEventListener("scroll",t,!0),n.isConnected&&k(n))try{n.hidePopover()}catch{}dispatchEvent(new Event(C))}},[c,e])}var q=`:where(.graview-undo-place){display:grid;justify-items:end;gap:4px;max-width:100%;min-width:0}
|
|
2
2
|
:where(.graview-undo){box-sizing:border-box;display:inline-flex;align-items:center;gap:6px;min-height:var(--graview-control-height,36px);max-width:min(100%,var(--graview-undo-widest,18rem));min-width:0;padding:0 14px;border-radius:999px;border:1px solid var(--graview-edge);background:var(--graview-float);color:var(--graview-ink);font:inherit;font-size:.875rem;cursor:pointer}
|
|
3
3
|
:where(.graview-undo[data-size=sm]){--graview-control-height:30px}
|
|
4
4
|
:where(.graview-undo[data-compact]){padding:0 10px}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a,b,c,d,e,f,g,h,i,j,k}from"./chunk.CZH27V2R.js";import"./chunk.VFRURRNI.js";import"./chunk.MHILFBK6.js";import"./chunk.Q6LLURRM.js";import"./chunk.AXXYJCSW.js";import"./chunk.N4LOI3YA.js";import"./chunk.RKZ4J3H2.js";import"./chunk.HKINU7VO.js";import"./chunk.YGZCESXY.js";import"./chunk.SZG6HJWH.js";import"./chunk.2FOIJ5ID.js";import"./chunk.X3MMJ3QC.js";import"./chunk.FQLNBIQ5.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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a,b}from"./chunk.ZUKYMU6C.js";import"./chunk.XOTES3PI.js";import"./chunk.WGTBQHHE.js";import"./chunk.P52UTBNO.js";import"./chunk.HF5SNUTK.js";import"./chunk.S7ZLGODY.js";import"./chunk.2QESVWUW.js";import"./chunk.UM5H2VVR.js";import"./chunk.WEGPDJTB.js";import"./chunk.MRYN42EQ.js";import"./chunk.E22DDEQI.js";import"./chunk.OLW44AP5.js";import"./chunk.HJCQ6I3S.js";import"./chunk.ATVPAYS6.js";import"./chunk.VNBEAF62.js";import"./chunk.CZH27V2R.js";import"./chunk.D3AISGQH.js";import"./chunk.IZ2ZTNEV.js";import"./chunk.6E36I2GC.js";import"./chunk.CJUIJ6TL.js";import"./chunk.IIESMHXY.js";import"./chunk.LDYOQCY7.js";import"./chunk.VFRURRNI.js";import"./chunk.X2G4ZRB2.js";import"./chunk.UITZ74YJ.js";import"./chunk.MHILFBK6.js";import"./chunk.ZFH4SCCF.js";import"./chunk.WVUJXDXZ.js";import"./chunk.Q6LLURRM.js";import"./chunk.AXXYJCSW.js";import"./chunk.N4LOI3YA.js";import"./chunk.RKZ4J3H2.js";import"./chunk.HKINU7VO.js";import"./chunk.YGZCESXY.js";import"./chunk.GZHZLJBF.js";import"./chunk.KHZA5F7A.js";import"./chunk.OJGHDWI6.js";import"./chunk.KSVJHSRH.js";import"./chunk.NSGQXCH6.js";import"./chunk.SZG6HJWH.js";import"./chunk.2FOIJ5ID.js";import"./chunk.6IUEGPCZ.js";import"./chunk.CUJX3IVA.js";import"./chunk.VNJKGSGZ.js";import"./chunk.SDO3U72B.js";import"./chunk.X3MMJ3QC.js";import"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";export{b as declaredLensView,a as formatFor};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as C,e as L,n as H,o as R,p as k}from"./chunk.
|
|
1
|
+
import{a as C,e as L,n as H,o as R,p as k}from"./chunk.NOLGJFA4.js";import"./chunk.BJUUSIQY.js";import"./chunk.X2G4ZRB2.js";import"./chunk.UITZ74YJ.js";import"./chunk.2NJDT47T.js";import"./chunk.XOZU4OFA.js";import"./chunk.MHILFBK6.js";import{a as S}from"./chunk.QLTHHWBA.js";import"./chunk.AXXYJCSW.js";import"./chunk.NSGQXCH6.js";import"./chunk.SZG6HJWH.js";import"./chunk.2FOIJ5ID.js";import"./chunk.6IUEGPCZ.js";import"./chunk.CUJX3IVA.js";import{G as T,Sa as E,T as b}from"./chunk.VNJKGSGZ.js";import"./chunk.SDO3U72B.js";import{Wc as x}from"./chunk.X3MMJ3QC.js";import"./chunk.FQLNBIQ5.js";import{b as g}from"./chunk.AJZBJBMO.js";var t=g(T(),1);var c=g(b(),1);function N(n){if(!n||n.interaction.outcome==="failed")return null;let s=n.offers[0],o=s?n.interaction.offered.find(i=>i.id===s.id)?.confidence:void 0;return s&&o!==void 0&&o>=.6?{offer:s,confidence:o}:null}function V({rest:n,hold:s,leave:o}){let i=S(),u=(0,t.useMemo)(()=>C(n.target,e=>i.store.graph.has(e)),[n.target,i.store]),l=u.on==="record"&&L(i.ai)!==void 0,m=l?H(i,u):void 0,p=JSON.stringify(u),[y,I]=(0,t.useState)(null);(0,t.useEffect)(()=>{if(!l||m!==void 0)return;let e=!0;return R(i,u).then(r=>{e&&I({key:p,result:r})}),()=>{e=!1}},[p,l]);let w=m??(y?.key===p?y.result:void 0),f=l?N(w):null,v=f?.offer.id??null,h=(0,t.useRef)(null);if((0,t.useEffect)(()=>{if(v===null)return;let e=r=>{r.target instanceof Node&&h.current?.contains(r.target)||o(!0)};return document.addEventListener("pointerdown",e,{capture:!0,passive:!0}),document.addEventListener("contextmenu",e,{capture:!0,passive:!0}),addEventListener("scroll",e,{capture:!0,passive:!0}),addEventListener("resize",e,{passive:!0}),()=>{document.removeEventListener("pointerdown",e,{capture:!0}),document.removeEventListener("contextmenu",e,{capture:!0}),removeEventListener("scroll",e,{capture:!0}),removeEventListener("resize",e)}},[v,o]),(0,t.useLayoutEffect)(()=>{let e=h.current;if(!e)return;if(typeof e.showPopover=="function"&&!E(e))try{e.showPopover()}catch{}let r=n.element.getBoundingClientRect(),d=e.getBoundingClientRect(),O=r.top-d.height-4>=4?r.top-d.height-4:Math.min(innerHeight-d.height-4,r.top+4),A=Math.max(4,Math.min(innerWidth-d.width-4,r.right-d.width));e.style.top=`${Math.round(O)}px`,e.style.left=`${Math.round(A)}px`},[v,n.element]),!f)return null;let{offer:a,confidence:P}=f,M=a.type==="panel"?"a panel":a.type==="place"?"go there":a.type==="record"?"open it":"suggested";return(0,c.jsxs)("button",{ref:h,type:"button",popover:"manual","data-testid":"hover-chip","data-ai-offer":a.id,"data-ai-offer-type":a.type,"data-graview-overlay":"","data-graview-popover":"","aria-label":`Suggested by AI: ${a.label}`,title:`Suggested by AI, ${Math.round(P*100)}% sure`,onPointerEnter:s,onPointerLeave:()=>o(),onClick:()=>{n.element.closest("[tabindex], a[href], button")?.focus({preventScroll:!0}),o(!0),k(i,w,a)},style:$,children:[(0,c.jsxs)("span",{"aria-hidden":"true",style:{color:"var(--graview-accent)"},children:["\u2726"," "]}),a.label,(0,c.jsxs)("span",{style:{color:"var(--graview-ink-faint)"},children:[" \xB7 ",M]})]})}var $={position:"fixed",inset:"auto",top:0,left:0,margin:0,zIndex:x("toast"),boxSizing:"border-box",width:"max-content",maxWidth:"min(320px, calc(100vw - 8px))",height:"auto",minHeight:24,padding:"2px 10px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",borderRadius:999,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",color:"var(--graview-ink)",boxShadow:"var(--graview-lift-high)",font:"inherit",fontSize:"0.75rem",cursor:"pointer"};export{V as HoverChip};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as Ee,b as Ve,c as qe,d as me,e as R,f as ge,h as Be}from"./chunk.GUEHKCWN.js";import{h as Ze,i as We,j as Ye}from"./chunk.GKSUTAIX.js";import{a as re,b as ae,c as J,d as Ue,e as X,g as oe,h as He}from"./chunk.QGV7H7RQ.js";import{c as Ce,h as z,i as Le,j as ue}from"./chunk.YIA2EDVF.js";import{A as De,Ca as Ne,Db as bn,Ja as Te,Ka as te,La as pe,Ub as Me,Vb as fe,Wb as Ke,Xb as _e,Yb as Ie,b as W,c as U,e as de,f as Re,g as K,h as S,k as G,l as ee,m as _,n as Fe,nc as Pe,o as Z,oc as Ge,p as N,r as w,s as ne,t as x,u as A,v as V,w as I,x as t,y as T,z as Y}from"./chunk.7BBGRTXM.js";import"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";var ze=e=>Object.entries(e).map(([o,s])=>[o,Object.keys(te(s?.edges))]),ye=(e,o)=>Ke(e,ze(o));function Je(e){return[...Object.keys(e.acts??{}),...Object.keys(e.kinds).flatMap(o=>Me(o)),..._e(ze(e.kinds))]}var B=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function Xe(e){if(!B(e)||!B(e.kinds))return e;let o;try{let f=Object.fromEntries(Object.entries(e.kinds).map(([g,a])=>[g,B(a)&&B(a.edges)?{edges:a.edges}:{}]));o=Je({acts:B(e.acts)?e.acts:{},kinds:f})}catch{return e}let s=new Set(o),n=!1,r=f=>{if(typeof f!="string"||s.has(f))return f;let g=Pe(f,o);return g===void 0?f:(n=!0,g)},l=B(e.policy)&&Array.isArray(e.policy.grants)?{...e.policy,grants:e.policy.grants.map(f=>B(f)&&Array.isArray(f.mutations)?{...f,mutations:f.mutations.map(r)}:f)}:void 0,u=B(e.rules)?Object.fromEntries(Object.entries(e.rules).map(([f,g])=>[f,B(g)&&Array.isArray(g.repairs)?{...g,repairs:g.repairs.map(a=>B(a)?{...a,act:r(a.act)}:a)}:g])):void 0;return n?{...e,...l?{policy:l}:{},...u?{rules:u}:{}}:e}function he(e,o){let s=Ge(e,Je(o));return s&&s!==e?`did you mean "${s}"?`:void 0}var $e="graview-document",we=1,Se=256*1024,se=64*1024,ke=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/,be=/^[a-z][A-Za-z0-9]*$/,$n=/^[a-z0-9\u00df-\u00ff'-]+( [a-z0-9\u00df-\u00ff'-]+){0,2}$/,Qe=12,wn=new Set(["id","kind"]),Sn=/^(?:[a-z][a-z0-9]*(?:-[a-z0-9]+)*|[a-z][A-Za-z0-9]*)$/,On=["string","text","number","integer","boolean","date","datetime","enum","list","url","email","image","video","file","app-link","phone","place","duration"];function jn(){let e=$=>$ in Object.prototype,o=Y($=>!e($),"every object already has this name \u2014 choose another"),s=($,L)=>[...$===void 0?[]:[Re($)],...L===void 0?[]:[de(L)]],n=($,L)=>S().check(...s($,L)),r=($,L,Q)=>N($).check(...s(L,Q)),l=$=>S().check(K(ke,`${$} names are kebab-case, lower-case words joined by hyphens like "tool-note" (field and relation names are camelCase, like "supersededBy")`)),u=S().check(K(Sn,'relation names are one camelCase word, like "supersededBy" (kind names are kebab-case, like "tool-note")'),o),f=S().check(K(be,'field names are one word or camelCase, like "dueDate", so rules say them bare (kind names are kebab-case, like "tool-note")'),Y($=>!wn.has($),'a field cannot be called "id" or "kind" \u2014 the framework keeps those; try "type" or "category"'),o),g=n(1,500),a=S().check(de(40),K($n,'an alias is up to three lower-case words, like "supplier"')),i=n(1,2e3),d=n(1,300),h=w({type:V(On),required:t(_()),description:t(g),label:t(n(1,60)),aliases:t(r(a,1,Qe)),options:t(r(n(1,80),1,100)),optionLabels:t(A(n(1,80),n(1,80))),of:t(V(["string","number","date","image","video","file"])),default:t(Z()),unit:t(n(void 0,12)),format:t(V(["money","percent","duration","markdown"])),min:t(G()),max:t(G()),step:t(G()),renamedFrom:t(S().check(K(be))),repeats:t(_()),collaborative:t(_())}).check(De(($,L)=>{$.type==="enum"&&!$.options&&L.addIssue({code:"custom",message:'an enum field lists its "options"',path:["options"]}),$.type!=="enum"&&$.options&&L.addIssue({code:"custom",message:'"options" belongs only on an enum field',path:["options"]});for(let Q of Object.keys($.optionLabels??{}))$.options?.includes(Q)||L.addIssue({code:"custom",message:`"${Q}" is labeled, and is none of the field's options`,path:["optionLabels",Q]});$.type!=="list"&&$.of&&L.addIssue({code:"custom",message:'"of" belongs only on a list field',path:["of"]}),$.repeats&&$.type!=="date"&&$.type!=="datetime"&&L.addIssue({code:"custom",message:'"repeats" belongs only on a date or datetime field',path:["repeats"]})})),m=S().check(K(new RegExp(`${ke.source}|${Ne.source}`),'a relation goes to a kind of this document, like "house", or of another app, like "@nick/house/house"')),p=w({to:x([r(m,1),I("*")]),cardinality:t(V(["one","many"])),description:t(g),inverse:t(n(1,80)),appendOnly:t(_()),renamedFrom:t(S()),tidying:t(I("never"))}),c=x([i,w({expr:i,label:t(n(1,60)),description:t(g),format:t(V(["money","percent","duration"])),unit:t(n(1,12)),hidden:t(_())})]),j=w({noun:t(n(1,40)),plural:t(n(1,40)),aliases:t(r(a,1,Qe)),description:t(g),fields:A(f,h).check(Y($=>Object.keys($).length>0,"a kind has at least one field")),label:t(d),describe:t(d),lifecycle:t(w({field:f,retired:r(x([S(),G(),_()]),1)})),figure:t(n(void 0,2e4)),glance:t(r(f,1,20)),page:t(w({fields:t(r(f,1,40)),groups:t(r(w({title:n(1,60),fields:r(f,1,40)}),1,12))})),edges:t(A(u,p)),computed:t(A(S(),c).check(Y($=>Object.keys($).length<=20,"a kind works out at most 20 computed fields"))),fieldRoles:t(A(S(),S())),renamedFrom:t(S().check(K(ke))),people:t(_()),archives:t(I(!1)),tidying:t(V(["never","no-links"]))}),k=x([S(),G(),_(),Fe(),N(Z()),w({expr:i})]),O=S().check(K(/^\$[A-Za-z][A-Za-z0-9]*$/,'a reference is "$" and a name, like "$subject" or "$new"')),E=x([w({create:l("kind"),as:t(S().check(K(be))),set:t(A(f,k))}),w({set:A(f,k),target:t(O)}),w({connect:u,from:O,to:O}),w({sever:u,from:O,to:O}),w({remove:O})]),b=w({title:t(n(1,80)),description:t(g),fromTheOtherEnd:t(n(1,80)),on:t(x([l("kind"),r(l("kind"),1)])),creates:t(l("kind")),sets:t(A(f,k)),writes:t(r(f,1)),connects:t(u),severs:t(u),setsOther:t(A(f,k)),replaces:t(x([I(!0),r(u,1,10)])),removes:t(I(!0)),args:t(A(f,h)),effects:t(r(E,1,20)),allowedWhen:t(i),refusal:t(d),destructive:t(_())}),F=w({act:l("act"),label:t(n(1,80)),args:t(A(S(),k))}),M=w({title:t(n(1,120)),description:t(g),over:x([I("graph"),l("kind")]),when:t(i),require:i,says:t(d),repairs:t(r(F,void 0,10))}),C=w({roles:x([r(l("role"),1),I("*")]),mutations:x([r(l("act"),1),I("*")]),kinds:t(x([N(l("kind")),I("*")])),describe:t(g),self:t(_()),ownEnd:t(_())}),y=t(r(l("field"),1)),v=w({roles:x([r(l("role"),1),I("*")]),kinds:r(l("kind"),1),own:t(_()),via:t(u),fields:y,hide:y}),D=w({grants:N(C),sees:t(N(v))}),ie=w({accent:t(S().check(K(/^#[0-9a-fA-F]{6}$/,'an accent is a color like "#c2577a"'))),ground:t(x([S().check(K(/^#[0-9a-fA-F]{6}$/,'a ground is a color like "#eef3f8"')),w({light:t(S().check(K(/^#[0-9a-fA-F]{6}$/,'a ground is a color like "#eef3f8"'))),dark:t(S().check(K(/^#[0-9a-fA-F]{6}$/,'a ground is a color like "#101826"')))})])),name:t(n(1,60)),currency:t(S().check(K(/^[A-Z]{3}$/,'a currency is its three-letter code, like "USD" or "EUR"'))),locale:t(n(2,35)),timeZone:t(n(1,64)),logo:t(x([n(1,se),w({src:n(1,se),alt:t(n(1,120))}),w({light:n(1,se),dark:t(n(1,se)),alt:t(n(1,120)),darkFallback:t(I("invert"))})])),favicon:t(x([n(1,se),w({emoji:S()})])),typography:t(w({display:t(n(1,200)),body:t(n(1,200)),mono:t(n(1,200))})),shape:t(w({radius:t(G().check(U(0),W(32))),density:t(G().check(U(.75),W(1.5)))})),accents:t(A(S(),G().check(U(0),W(360)))),scheme:t(V(["light","dark","auto"])),subtitle:t(I(!1))}),q=A(S(),Z()),H=x([n(1,120),w({by:n(1,120),direction:t(V(["asc","desc"]))})]),xe=G().check(ee(),U(1),W(9999)),mn=ne({create:t(_()),options:t(ne({sort:t(H),columnSort:t(H),search:t(r(n(1,120),void 0,40)),filters:t(r(n(1,120),void 0,40)),horizon:t(x([G().check(ee(),U(1),W(200)),ne({years:G().check(ee(),U(1),W(200)),title:n(1,80),from:t(xe),to:t(xe)})]))}))}),gn=w({card:t(N(Z())),row:t(N(Z())),page:t(N(Z()))}),zn=()=>{let $=t(V(["asc","desc"]));return x([n(1,120),w({by:n(1,120),direction:$,then:t(x([n(1,120),w({by:n(1,120),direction:$})]))})])},yn=()=>x([n(1,120),w({by:n(1,120),order:t(r(n(1,80),void 0,40)),closed:t(r(n(1,80),void 0,40))})]),Ae=ne({order:t(N(S())),hide:t(N(S())),first:t(S()),primary:t(r(n(1,80),void 0,40)),scene:t(n(1,40)),pages:t(n(1,40)),lists:t(A(S(),w({filters:t(r(n(1,120),void 0,40)),sort:t(zn()),group:t(yn()),export:t(_())})))}),hn=w({act:l("act"),title:t(n(1,80)),intro:t(g),fields:t(r(f,1,40)),say:t(g),submit:t(n(1,80)),role:t(l("role"))}),kn=w({$schema:t(S()),format:I($e),formatVersion:I(we),name:n(1,80),description:t(g),version:t(G().check(ee(),U(1))),kinds:A(l("kind"),j).check(Y($=>Object.keys($).length>0,"a document declares at least one kind"),Y($=>Object.keys($).length<=40,"a document declares at most 40 kinds")),computed:t(A(S(),c)),acts:t(A(l("act"),b)),rules:t(A(l("rule"),M)),roles:t(N(l("role"))),policy:t(D),modules:t(q),lenses:t(N(mn)),pages:t(Ae),views:t(A(S(),x([gn,N(Z())]))),brand:t(ie),settings:t(N(q)),migrations:t(N(q)),connections:t(A(l("connection"),q)),purpose:t(q),forms:t(A(l("form"),hn)),publishing:t(w({mode:V(["live","on-publish"]),working:r(l("role"),void 0,40),publishers:t(r(l("role"),1,40))}))});return{FieldSpec:h,EdgeSpec:p,ComputedSpec:c,KindSpec:j,ValueSpec:k,EffectSpec:E,ActSpec:b,RepairSpec:F,RuleSpec:M,GrantSpec:C,SightSpec:v,PolicySpec:D,BrandSpec:ie,PagesSpec:Ae,DocumentSpec:kn}}var vn,P=()=>vn??=jn(),Un=T(()=>P().FieldSpec),Zn=T(()=>P().EdgeSpec),Wn=T(()=>P().ComputedSpec),Yn=T(()=>P().KindSpec),Hn=T(()=>P().ValueSpec),Jn=T(()=>P().EffectSpec),Xn=T(()=>P().ActSpec),Qn=T(()=>P().RepairSpec),et=T(()=>P().RuleSpec),nt=T(()=>P().GrantSpec),tt=T(()=>P().SightSpec),ot=T(()=>P().PolicySpec),st=T(()=>P().BrandSpec),it=T(()=>P().PagesSpec),en=T(()=>P().DocumentSpec);var xn={};function nn(e,o=xn,s=we){let{document:n,respelled:r}=Ee(e),l=r.length>0?{respelled:r}:{};if(!n||typeof n!="object"||Array.isArray(n))return{document:n};let u=n;if(u.format!==$e||typeof u.formatVersion!="number"||u.formatVersion>=s)return{document:n,...l};let f=u.formatVersion,g=structuredClone(u);for(let a=f;a<s;a++){let i=o[a];if(!i)throw new Error(`there is no upgrade from format ${a} to ${a+1}`);g={...i(g),formatVersion:a+1}}return{document:g,from:f,...l}}function tn(e,o,s){let n=Object.keys(e).filter(f=>e[f].edges?.[o]!==void 0);if(n.length===0)return;let r=n.map(f=>e[f].edges[o].to),l=r.some(f=>f==="*")?"*":[...new Set(r.flatMap(f=>f))];if(s.length===0||s.some(f=>n.includes(f)))return{reversed:!1,kinds:l};let u=n.filter(f=>{let g=e[f].edges[o].to;return g==="*"||s.every(a=>g.includes(a))});return u.length>0?{reversed:!0,kinds:u}:{reversed:!1,kinds:l}}var rn=(e,o)=>{let s=e?.fields[o];return s!==void 0&&(s.type==="duration"||(s.type==="number"||s.type==="integer")&&s.format==="duration")};function on(e,o,s,n){if(n==="out"){let r=e[o]?.edges?.[s]?.to;return r===void 0?[]:r==="*"?Object.keys(e):r}return Object.entries(e).filter(([,r])=>{let l=r.edges?.[s]?.to;return l!==void 0&&(l==="*"||l.includes(o))}).map(([r])=>r)}function Oe(e,o,s){if(s.t==="ident")return e[o]?.edges?.[s.name]?on(e,o,s.name,"out"):void 0;if(s.t==="where")return Oe(e,o,s.set);if(s.t==="call"&&(s.fn==="out"||s.fn==="in")&&s.args[0]?.t==="lit"&&typeof s.args[0].value=="string")return on(e,o,s.args[0].value,s.fn)}var sn=(e,o,s)=>{let n=o.filter(r=>e[r]?.fields[s]!==void 0);return n.length>0&&n.every(r=>rn(e[r],s))};function an(e,o,s){let n=e.kinds,r=n[o],l=new Map(s),u=new Map,f=(a,i)=>{if(i>8)return!1;switch(a.t){case"ident":return rn(r,a.name)||g(a.name,i+1);case"member":{let d=Oe(n,o,a.object);return d!==void 0&&sn(n,d,a.name)}case"call":{if(a.fn!=="sum"&&a.fn!=="min"&&a.fn!=="max")return!1;let[d,h]=a.args,m=d&&Oe(n,o,d);return m!==void 0&&h?.t==="ident"&&sn(n,m,h.name)}case"binary":return(a.op==="+"||a.op==="-")&&f(a.left,i)&&f(a.right,i);case"unary":return a.op==="-"&&f(a.operand,i);default:return!1}},g=(a,i)=>{if(r?.computed?.[a]===void 0)return!1;if(u.has(a))return u.get(a);u.set(a,!1);let d=l.get(a),h=d!==void 0&&f(d,i);return u.set(a,h),h};return s.map(([a])=>a).filter(a=>g(a,0))}var An={title:["string","text"],rich_text:["string","text"],number:["number","integer"],select:["enum","string"],status:["enum","string"],multi_select:["list"],date:["date","datetime"],checkbox:["boolean"],url:["url","string"],email:["email","string"],phone_number:["phone","string"],people:["string","text","list"]};var cn=new Set(Object.values(An).flat());function ln(e,o){let s=new Map;if(!e||typeof e!="object")return new Map;for(let n of Object.values(e)){if(!n||typeof n!="object"||typeof n.kind!="string")continue;let r=o[n.kind]?.fields;if(!r)continue;let l=[];n.system==="google-calendar"&&n.fields&&typeof n.fields=="object"?l=Object.values(n.fields).filter(f=>typeof f=="string"):n.system==="notion"&&(l=n.properties&&typeof n.properties=="object"?Object.keys(n.properties):Object.keys(r).filter(f=>cn.has(r[f].type)));let u=s.get(n.kind)??new Set;for(let f of l)Object.hasOwn(r,f)&&u.add(f);s.set(n.kind,u)}return new Map([...s].filter(([,n])=>n.size>0).map(([n,r])=>[n,Object.keys(o[n].fields).filter(l=>r.has(l))]))}function dn(e,o,s=`kinds.${e}.page`){let n=o.page;if(!n)return[];let r=[],l=[...Object.keys(o.fields),...Object.keys(o.computed??{})],u=new Set,f=(a,i)=>{l.includes(a)?u.has(a)&&r.push(z("page-field-twice",i,`"${a}" is on ${e}'s page twice; name each field once`)):r.push(z("page-field",i,`${e}'s page is to show "${a}", and ${e} has no field or computed field called that`,`use one of: ${l.join(", ")}`)),u.add(a)};(n.fields??[]).forEach((a,i)=>f(a,`${s}.fields.${i}`));let g=new Set;return(n.groups??[]).forEach((a,i)=>{let d=a.title.trim().toLowerCase();g.has(d)&&r.push(z("page-group-twice",`${s}.groups.${i}.title`,`${e}'s page has two groups called "${a.title}"; give each its own title`)),g.add(d),a.fields.forEach((h,m)=>f(h,`${s}.groups.${i}.fields.${m}`))}),r}function pn(e,o=[]){return Ie({declared:Object.keys(e.fields),paged:[...e.page?.fields??[],...(e.page?.groups??[]).flatMap(s=>s.fields)],must:s=>!!e.fields[s].required&&e.fields[s].default===void 0,naming:o})}var En=new Set(["subject","now","today","me"]);function Rn(e){if((typeof e=="string"?e:JSON.stringify(e??null)).length>Se)return{findings:[z("too-large","",`a document may be at most ${Se/1024} KB`)]};if(typeof e=="string")try{e=JSON.parse(e)}catch(n){return{findings:[z("not-json","",`this is not JSON: ${n.message}`)]}}try{e=nn(e).document}catch(n){return{findings:[z("format","formatVersion",n.message)]}}e=Xe(e);let o=en.safeParse(e);if(!o.success)return{findings:o.error.issues.map(n=>{let r=n.path.map(String).join(".");if(n.code==="unrecognized_keys")return z("unknown-key",r,`${n.keys.map(l=>`"${l}"`).join(", ")} ${n.keys.length===1?"is":"are"} not part of a Graview document here`,"check the spelling against docs/declaration-document.md");if(n.code==="invalid_union"&&/\.effects\.\d+$/.test(r))return z("effect-shape",r,"this effect is not one Graview knows",'an effect is one of {"create": kind, "as"?: name, "set"?: {field: value}}, {"set": {field: value, \u2026}, "target"?: "$ref"}, {"connect"|"sever": relation, "from": "$ref", "to": "$ref"}, {"remove": "$ref"}');if(n.code==="invalid_key"){let l=n.issues?.[0]?.message;return z("shape",r,`the name "${String(n.path.at(-1))}" is not allowed here${l?`: ${l}`:""}`)}return z("shape",r,n.message)})};let s=o.data;return{document:s,findings:Fn(s)}}var le=e=>[e??[]].flat();function fn(e){let o=new Map;for(let[s,n]of Object.entries(e.kinds))for(let[r,l]of Object.entries(te(n.edges))){let u=o.get(r);o.set(r,{name:r,from:[...u?.from??[],s],to:l.to==="*"||u?.to==="*"?"*":[...new Set([...u?.to??[],...l.to])],cardinality:l.cardinality??"many"})}return o}function It(e){let o=new Map;for(let[n,r]of Object.entries(e.kinds)){let l=oe(r),u=pe(r.edges);o.set(n,{fields:new Set([...Object.keys(r.fields),...u.keys()]),edges:new Map(Object.entries(te(r.edges)).map(([f,g])=>[f,g.cardinality??"many"])),...l?{computed:l}:{},...u.size>0?{linked:u}:{}})}let s=oe(e);return s&&o.set(Ce,{computed:s}),o}function un(e,o){let s=[],n=le(e.on),r=(l,u)=>{let f=tn(o.kinds,l,n)?.reversed===!0,[g,a]=f?["$to","$subject"]:["$subject","$to"];return u==="connect"?{connect:l,from:g,to:a}:{sever:l,from:g,to:a}};if(e.creates){let l=o.kinds[e.creates],u={};for(let f of Object.keys(l?.fields??{}))u[f]=`$${f}`;for(let f of e.effects??[])"set"in f&&!("create"in f)&&R(f.target)==="new"&&Object.assign(u,f.set);s.push({create:e.creates,as:"new",set:u})}return e.sets&&s.push({set:e.sets}),e.writes&&!(e.creates&&e.on===void 0)&&s.push({set:Object.fromEntries(e.writes.map(l=>[l,`$${l}`]))}),e.connects&&(e.replaces&&s.push({replace:e.replaces===!0?[e.connects]:[...e.replaces],keep:e.connects}),s.push(r(e.connects,"connect"))),e.severs&&s.push(r(e.severs,"sever")),e.setsOther&&(e.connects||e.severs)&&s.push({set:e.setsOther,target:"$to"}),e.removes&&s.push({remove:"$subject"}),e.effects&&s.push(...e.effects.filter(l=>!(e.creates&&"set"in l&&!("create"in l)&&R(l.target)==="new"))),s}function je(e,o,s){try{let n=J(e),r=re(n);for(let l of r.unknownFunctions)s.push(z("unknown-function",o,`"${l}" is not a function the rule language knows`,"see docs/declaration-document.md#expression-language"));return n}catch(n){if(n instanceof ae){s.push(z("expression",o,n.sentence+` (at character ${n.at+1})`));return}throw n}}function ve(e,o,s){try{return X(e)}catch(n){if(n instanceof Ue||n instanceof ae){s.push(z("template",o,(n instanceof ae,n.sentence)));return}throw n}}function Fn(e){let o=[],s=new Set(Object.keys(e.kinds)),n=fn(e),r=e.acts??{},l=new Set(e.roles??[]),u=(a,i)=>pe(e.kinds[a]?.edges).has(i),f=a=>Object.keys(e.kinds).some(i=>u(i,a));for(let[a,i]of Object.entries(e.kinds)){let d=`kinds.${a}`;for(let[m,p]of Object.entries(i.edges??{})){if(!Te(p)&&p.to!=="*")for(let c of p.to)s.has(c)||o.push(z("edge-target",`${d}.edges.${m}.to`,`"${c}" is not a kind this document declares`));i.fields[m]&&o.push(z("edge-field-clash",`${d}.edges.${m}`,`"${m}" is both a field and a relation of ${a}`,"rename one of them"))}i.lifecycle&&!i.fields[i.lifecycle.field]&&o.push(z("lifecycle-field",`${d}.lifecycle.field`,`${a} has no field "${i.lifecycle.field}"`));let h=m=>i.computed!==void 0&&Object.hasOwn(i.computed,m);for(let m of i.glance??[])!i.fields[m]&&!h(m)&&o.push(z("glance-field",`${d}.glance`,`a glance at ${a} is to say "${m}", and ${a} has no field or computed field called that`,`use one of: ${[...Object.keys(i.fields),...Object.keys(i.computed??{})].join(", ")}`));o.push(...dn(a,i));for(let m of["label","describe"]){let p=i[m];if(!p)continue;let c=ve(p,`${d}.${m}`,o);for(let j of c??[])if(j.expr){for(let k of re(j.expr).names)if(!i.fields[k]){if(h(k)){He(i,k)||o.push(z("template-field",`${d}.${m}`,`${a}'s ${k} is worked out from beyond the record, and a ${m} is said with no graph to read`,`show it in a view instead, or name a computed field worked out from ${a}'s own fields`));continue}o.push(z("template-field",`${d}.${m}`,`${a} has no field "${k}" for its ${m} to show`,m==="label"?"a label can only show the record's own fields and what they work out":void 0))}}}for(let[m,p]of Object.entries(i.fields)){p.default!==void 0&&p.type==="enum"&&!p.options?.includes(String(p.default))&&o.push(z("default-option",`${d}.fields.${m}.default`,`"${String(p.default)}" is not one of ${m}'s options`));let c=`${m}Repeat`;p.repeats&&(i.fields[c]||i.edges?.[c]||i.computed?.[c])&&o.push(z("repeat-clash",`${d}.fields.${m}.repeats`,`${a} already has "${c}", where how ${m} repeats is kept`))}}for(let[a,i]of Object.entries(r)){let d=`acts.${a}`;for(let c of le(i.on))s.has(c)||o.push(z("act-kind",`${d}.on`,`"${c}" is not a kind this document declares`));let h=le(i.on),m=un(i,e);if(i.creates&&i.on===void 0&&i.writes&&s.has(i.creates)){for(let c of i.writes)if(!e.kinds[i.creates].fields[c])if(e.kinds[i.creates].computed?.[c]!==void 0)o.push(z("computed-written",`${d}.writes`,`${i.creates}'s ${c} is worked out, not written: no act can set it`,"write the stored fields it is worked out from"));else{if(u(i.creates,c))continue;o.push(z("act-field",`${d}.writes`,`${i.creates} has no field "${c}"`))}}m.length===0&&o.push(z("act-empty",d,`"${a}" does nothing`,"give it effects or a shorthand such as sets or creates"));let p=new Map;m.forEach((c,j)=>{let k=m.length-(i.effects?.length??0),O=i.effects&&j>=k?`${d}.effects.${j-k}`:d;if("create"in c){if(!s.has(c.create))o.push(z("act-kind",`${O}.create`,`"${c.create}" is not a kind this document declares`));else for(let b of Object.keys(c.set??{}))e.kinds[c.create].fields[b]||(e.kinds[c.create].computed?.[b]!==void 0?o.push(z("computed-written",`${O}.set.${b}`,`${c.create}'s ${b} is worked out, not written: no act can set it`,"set the stored fields it is worked out from")):o.push(z("act-field",`${O}.set.${b}`,`${c.create} has no field "${b}"`)));c.as&&p.set(c.as,c.create)}else if("connect"in c||"sever"in c){let b="connect"in c?c.connect:c.sever;!n.has(b)&&!f(b)&&o.push(z("act-edge",`${O}.${"connect"in c?"connect":"sever"}`,`"${b}" is not a relation any kind declares`)),R(c.from)==="subject"&&h.length===0&&o.push(z("act-subject",`${d}.on`,`"${a}" acts on "$subject" but does not say which kinds it is "on"`))}else if("set"in c){let b=R(c.target??"$subject"),F=b==="subject"?h:p.has(b??"")?[p.get(b)]:[];b==="subject"&&h.length===0&&o.push(z("act-subject",`${d}.on`,`"${a}" changes "$subject" but does not say which kinds it is "on"`));for(let M of Object.keys(c.set))for(let C of F)if(!(!s.has(C)||e.kinds[C].fields[M]))if(e.kinds[C].computed?.[M]!==void 0)o.push(z("computed-written",`${O}.set.${M}`,`${C}'s ${M} is worked out, not written: no act can set it`,"set the stored fields it is worked out from"));else{if(u(C,M))continue;o.push(z("act-field",`${O}.set.${M}`,`${C} has no field "${M}"`))}}else"remove"in c&&R(c.remove)==="subject"&&h.length===0&&o.push(z("act-subject",`${d}.on`,`"${a}" removes "$subject" but does not say which kinds it is "on"`));("set"in c&&c.set?Object.values(c.set):[]).forEach(b=>{b&&typeof b=="object"&&!Array.isArray(b)&&"expr"in b&&je(b.expr,`${O}.set`,o)})}),i.allowedWhen&&je(i.allowedWhen,`${d}.allowedWhen`,o),i.refusal&&ve(i.refusal,`${d}.refusal`,o)}for(let[a,i]of Object.entries(e.rules??{})){let d=`rules.${a}`;i.over!=="graph"&&!s.has(i.over)&&o.push(z("rule-kind",`${d}.over`,`"${i.over}" is not a kind this document declares`));let h=i.over==="graph"?void 0:e.kinds[i.over];for(let m of["when","require"]){let p=i[m];if(!p)continue;let c=je(p,`${d}.${m}`,o);if(!c)continue;let j=re(c);for(let k of j.names)if(i.over==="graph")o.push(z("rule-name",`${d}.${m}`,`"${k}" means nothing in a rule over the whole graph`,`name a kind in "over", or use all('kind')`));else if(h&&!h.fields[k]&&!h.edges?.[k]&&h.computed?.[k]===void 0){let O=Object.keys(h.edges??{}).find(E=>E.includes("-")&&E.split("-").includes(k));o.push(z("rule-name",`${d}.${m}`,`${i.over} has no field or relation called "${k}"`,O?`"${O}" reads as a subtraction in a rule; rename the relation to one camelCase word, like "${O.replace(/-([a-z0-9])/g,(E,b)=>b.toUpperCase())}"`:void 0))}for(let k of j.edges)!n.has(k)&&!f(k)&&o.push(z("rule-edge",`${d}.${m}`,`"${k}" is not a relation any kind declares`));for(let k of j.sweeps)s.has(k)?i.over!=="graph"&&o.push(Le("rule-cost",`${d}.${m}`,`this rule looks at every ${k} for every ${i.over}, which grows slowly as the app grows`,"walk a relation with out()/in() instead of all() where you can")):o.push(z("rule-kind",`${d}.${m}`,`"${k}" is not a kind this document declares`))}i.says&&ve(i.says,`${d}.says`,o),(i.repairs??[]).forEach((m,p)=>{!r[m.act]&&!fe(m.act)&&!ye(m.act,e.kinds)&&o.push(z("repair-act",`${d}.repairs.${p}.act`,`"${m.act}" is not an act this document declares`,he(m.act,e)))})}let g=e.policy;return g&&(g.grants.forEach((a,i)=>{if(a.roles!=="*"&&l.size>0)for(let d of a.roles)l.has(d)||o.push(z("grant-role",`policy.grants.${i}.roles`,`"${d}" is not one of the document's roles`));if(a.mutations!=="*")for(let d of a.mutations)!r[d]&&!fe(d)&&!ye(d,e.kinds)&&o.push(z("grant-act",`policy.grants.${i}.mutations`,`"${d}" is not an act this document declares`,he(d,e)))}),(g.sees??[]).forEach((a,i)=>{for(let d of a.kinds)s.has(d)||o.push(z("sight-kind",`policy.sees.${i}.kinds`,`"${d}" is not a kind this document declares`));if(a.roles!=="*"&&l.size>0)for(let d of a.roles)l.has(d)||o.push(z("sight-role",`policy.sees.${i}.roles`,`"${d}" is not one of the document's roles`))})),o.push(...Ye(e)),o}function Dn(e){return e.label?[...e.label.matchAll(/\{\s*([A-Za-z_][A-Za-z0-9_]*)/g)].map(o=>o[1]):[ge(e)??[]].flat()}function Nn(e,o,s,n){let r=new Map,l=le(e.on),u=new Map,f=new Map;(l.length>0||o.some(p=>"remove"in p&&R(p.remove)==="subject"||"from"in p&&(R(p.from)==="subject"||R(p.to)==="subject")||"set"in p&&!("create"in p)&&R(p.target??"$subject")==="subject"))&&r.set(me,{ref:l.length>0?l:"*",required:!0});let a=e.args??{},i=e.writes?.length===1,d=(p,c)=>c&&p.type===c.type&&p.min===void 0&&p.max===void 0&&p.step===void 0?{...p,...c.min===void 0?{}:{min:c.min},...c.max===void 0?{}:{max:c.max},...c.step===void 0?{}:{step:c.step}}:p,h=(p,c)=>c&&p.type===c.type&&p.format===void 0&&p.unit===void 0?{...d(p,c),...c.format?{format:c.format}:{},...c.unit?{unit:c.unit}:{}}:d(p,c),m=(p,c,j)=>{if(p===me||En.has(p)||u.has(p)||r.has(p))return;let k=a[p]?h(a[p],j):void 0;r.set(p,k?{field:k,optional:!k.required,required:!!k.required}:c())};for(let p of o)if("create"in p){let c=s.kinds[p.create],j=c?pn(c,Dn(c)):[],k=O=>j.includes(O)?j.indexOf(O):j.length;for(let[O,E]of Object.entries(p.set??{}).sort(([b],[F])=>k(b)-k(F))){let b=R(E),F=c?.fields[O];if(b&&F){let M=!!F.required&&F.default===void 0;m(b,()=>({field:F,optional:!M,required:M}),F)}}p.as&&u.set(p.as,p.create)}else if("connect"in p||"sever"in p){let c=n.get("connect"in p?p.connect:p.sever);for(let[j,k]of[["from",p.from],["to",p.to]]){let O=R(k);if(!O)continue;let E=j==="to"?c?.to??"*":c?.from??"*";E!=="*"&&!f.has(O)&&f.set(O,E),m(O,()=>({ref:E,required:!0}))}}else if("set"in p){let c=R(p.target??"$subject"),j=c==="subject"?l[0]:u.get(c??"")??f.get(c??"")?.[0];c&&c!=="subject"&&!u.has(c)&&m(c,()=>({ref:"*",required:!0}));for(let[k,O]of Object.entries(p.set)){let E=R(O);if(!E)continue;let b=j?s.kinds[j]?.fields[k]:void 0;m(E,()=>b?{field:b,optional:!i,required:i}:{any:!0,required:!1},b)}}else if("remove"in p){let c=R(p.remove);c&&m(c,()=>({ref:"*",required:!0}))}for(let[p,c]of Object.entries(a))r.has(p)||r.set(p,{field:c,optional:!c.required,required:!!c.required});return r}function Pt(e,o={}){let s=Rn(e);if(!s.document||ue(s.findings))return{ok:!1,findings:s.findings};let n=s.document,r=[...s.findings];o.previous&&r.push(...Mn(n,o.previous));let l=Tn(n,r);return ue(l.findings)?{ok:!1,findings:l.findings}:Be(l,o)}function ce(e,o){return e.map(s=>{let n=!s.format&&s.expr?.t==="ident"?o?.[s.expr.name]?.format:void 0;return n==="money"||n==="percent"?{...s,format:n}:s})}function Tn(e,o){let s=fn(e),n={},r=ln(e.connections,e.kinds);for(let[i,d]of Object.entries(e.kinds)){let h=ge(d),m=d.label??(h?`{${h}}`:void 0),p=oe(d),c=p?an(e,i,[...p]):[];n[i]={...m?{label:ce(X(m),d.fields)}:{},...d.describe?{describe:ce(X(d.describe),d.fields)}:{},...p?{computed:[...p]}:{},...c.length>0?{durations:c}:{},...r.has(i)?{keptInStep:r.get(i)}:{}}}let l={};for(let[i,d]of Object.entries(e.acts??{})){let h=un(d,e),m=Nn(d,h,e,s),p=d.destructive??h.some(y=>"remove"in y||"sever"in y||"replace"in y),c=[...new Set(h.flatMap(y=>"create"in y?[y.create]:[]))],j=[...new Set(h.flatMap(y=>"connect"in y?[y.connect]:[]))],k=[...new Set(h.flatMap(y=>"sever"in y?[y.sever]:"replace"in y?y.replace:[]))],O=[...new Set(h.flatMap(y=>"set"in y&&!("create"in y)&&R(y.target??"$subject")==="subject"?Object.keys(y.set):[]))],E=new Map;for(let y of h){if(!("connect"in y)&&!("sever"in y))continue;let v=s.get("connect"in y?y.connect:y.sever);for(let[D,ie]of[["from",y.from],["to",y.to]]){let q=R(ie),H=D==="to"?v?.to:v?.from;q&&q!=="subject"&&H&&H!=="*"&&E.set(q,[...new Set([...E.get(q)??[],...H])])}}let b={};for(let y of h){if(!("set"in y)||"create"in y)continue;let v=R(y.target??"$subject");for(let D of v&&v!=="subject"&&E.get(v)||[])b[D]=[...new Set([...b[D]??[],...Object.keys(y.set)])]}let F={};for(let y of h)if(!(!("set"in y)||"create"in y||R(y.target??"$subject")!=="subject"))for(let[v,D]of Object.entries(y.set??{}))typeof D=="string"&&R(D)===void 0||typeof D=="number"||typeof D=="boolean"?F[v]=typeof D=="string"&&D.startsWith("$$")?D.slice(1):D:delete F[v];let M=c.length===0&&h.every(y=>!("set"in y)||!y.set||Object.values(y.set).every(v=>!(v&&typeof v=="object"&&!Array.isArray(v)&&"expr"in v))),C=new Map;for(let y of h)if(!(!("set"in y)||!y.set))for(let v of Object.values(y.set))v&&typeof v=="object"&&!Array.isArray(v)&&"expr"in v&&C.set(v.expr,J(v.expr));l[i]={title:d.title??i.replace(/-/g," "),effects:h,args:[...m],...d.allowedWhen?{guard:J(d.allowedWhen)}:{},...d.refusal?{refusal:ce(X(d.refusal),e.kinds[[d.on??[]].flat()[0]??""]?.fields)}:{},exprs:[...C],destructive:p,idempotent:M,creates:c,connects:j,severs:k,writes:O,writesOther:b,sets:F}}let u={};for(let[i,d]of Object.entries(e.rules??{}))u[i]={title:d.title??i.replace(/-/g," "),require:J(d.require),...d.when?{when:J(d.when)}:{},...d.says?{says:ce(X(d.says),e.kinds[d.over]?.fields)}:{}};let f=Ve(e,o),g=Ze(e),a=We(e);return{format:qe,document:e,findings:o,kinds:n,...e.computed?{facts:[...oe(e)??[]]}:{},edges:[...s].map(([i,{from:d,to:h,cardinality:m}])=>[i,{from:d,to:h,cardinality:m}]),acts:l,rules:u,brand:f,...Object.keys(g).length>0?{viewSpecs:g}:{},...a?{home:a}:{}}}function Gt(e,o,s){let n=/^defineNode\("([^"]+)"\)/.exec(o)?.[1],r=n?s.kinds[n]:void 0;if(!n||!r)return e;let l=Object.keys(r.fields).filter(u=>u!=="label").slice(0,3);return{...e,path:`kinds.${n}.glance`,fix:`Say which: "glance": [${l.map(u=>`"${u}"`).join(", ")}] on kinds.${n} \u2014 the facts a person compares one by, at a glance.`}}function Mn(e,o){let s=[],n=new Set(Object.values(o.kinds).flatMap(r=>Object.keys(r.edges??{})));for(let[r,l]of Object.entries(e.kinds)){let u=l.renamedFrom;u&&!o.kinds[u]&&s.push(z("renamed-from-nothing",`kinds.${r}.renamedFrom`,`${r} says it was ${u}, and the previous version has no kind called ${u}`,"name the kind it was, or drop renamedFrom"));let f=o.kinds[u??r];for(let[g,a]of Object.entries(l.fields)){let i=a.renamedFrom;i&&!f?.fields[i]&&s.push(z("renamed-from-nothing",`kinds.${r}.fields.${g}.renamedFrom`,`${g} says it was ${i}, and the previous ${u??r} has no field called ${i}`,"name the field it was, or drop renamedFrom"))}for(let[g,a]of Object.entries(l.edges??{})){let i=a.renamedFrom;i&&!n.has(i)&&s.push(z("renamed-from-nothing",`kinds.${r}.edges.${g}.renamedFrom`,`${g} says it was ${i}, and the previous version has no relation called ${i}`,"name the relation it was, or drop renamedFrom"))}}return s}export{bn as ActRefusal,Pt as compileDocumentWithoutCheck,un as effectsOf,Gt as inDocumentWords,It as kindShapes,Rn as readDocument};
|
|
1
|
+
import{a as Ee,b as Ve,c as qe,d as me,e as R,f as ge,h as Be}from"./chunk.PCVPH5KM.js";import{h as Ze,i as We,j as Ye}from"./chunk.N4LOI3YA.js";import{a as re,b as ae,c as J,d as Ue,e as X,g as oe,h as He}from"./chunk.HKINU7VO.js";import{c as Ce,h as z,i as Le,j as ue}from"./chunk.YGZCESXY.js";import{A as De,Ca as Ne,Db as bn,Ja as Te,Ka as te,La as pe,Ub as Me,Vb as fe,Wb as Ke,Xb as _e,Yb as Ie,b as W,c as U,e as de,f as Re,g as K,h as S,k as G,l as ee,m as _,n as Fe,nc as Pe,o as Z,oc as Ge,p as N,r as w,s as ne,t as x,u as A,v as V,w as I,x as t,y as T,z as Y}from"./chunk.X3MMJ3QC.js";import"./chunk.FQLNBIQ5.js";import"./chunk.AJZBJBMO.js";var ze=e=>Object.entries(e).map(([o,s])=>[o,Object.keys(te(s?.edges))]),ye=(e,o)=>Ke(e,ze(o));function Je(e){return[...Object.keys(e.acts??{}),...Object.keys(e.kinds).flatMap(o=>Me(o)),..._e(ze(e.kinds))]}var B=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function Xe(e){if(!B(e)||!B(e.kinds))return e;let o;try{let f=Object.fromEntries(Object.entries(e.kinds).map(([g,a])=>[g,B(a)&&B(a.edges)?{edges:a.edges}:{}]));o=Je({acts:B(e.acts)?e.acts:{},kinds:f})}catch{return e}let s=new Set(o),n=!1,r=f=>{if(typeof f!="string"||s.has(f))return f;let g=Pe(f,o);return g===void 0?f:(n=!0,g)},l=B(e.policy)&&Array.isArray(e.policy.grants)?{...e.policy,grants:e.policy.grants.map(f=>B(f)&&Array.isArray(f.mutations)?{...f,mutations:f.mutations.map(r)}:f)}:void 0,u=B(e.rules)?Object.fromEntries(Object.entries(e.rules).map(([f,g])=>[f,B(g)&&Array.isArray(g.repairs)?{...g,repairs:g.repairs.map(a=>B(a)?{...a,act:r(a.act)}:a)}:g])):void 0;return n?{...e,...l?{policy:l}:{},...u?{rules:u}:{}}:e}function he(e,o){let s=Ge(e,Je(o));return s&&s!==e?`did you mean "${s}"?`:void 0}var $e="graview-document",we=1,Se=256*1024,se=64*1024,ke=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/,be=/^[a-z][A-Za-z0-9]*$/,$n=/^[a-z0-9\u00df-\u00ff'-]+( [a-z0-9\u00df-\u00ff'-]+){0,2}$/,Qe=12,wn=new Set(["id","kind"]),Sn=/^(?:[a-z][a-z0-9]*(?:-[a-z0-9]+)*|[a-z][A-Za-z0-9]*)$/,On=["string","text","number","integer","boolean","date","datetime","enum","list","url","email","image","video","file","app-link","phone","place","duration"];function jn(){let e=$=>$ in Object.prototype,o=Y($=>!e($),"every object already has this name \u2014 choose another"),s=($,L)=>[...$===void 0?[]:[Re($)],...L===void 0?[]:[de(L)]],n=($,L)=>S().check(...s($,L)),r=($,L,Q)=>N($).check(...s(L,Q)),l=$=>S().check(K(ke,`${$} names are kebab-case, lower-case words joined by hyphens like "tool-note" (field and relation names are camelCase, like "supersededBy")`)),u=S().check(K(Sn,'relation names are one camelCase word, like "supersededBy" (kind names are kebab-case, like "tool-note")'),o),f=S().check(K(be,'field names are one word or camelCase, like "dueDate", so rules say them bare (kind names are kebab-case, like "tool-note")'),Y($=>!wn.has($),'a field cannot be called "id" or "kind" \u2014 the framework keeps those; try "type" or "category"'),o),g=n(1,500),a=S().check(de(40),K($n,'an alias is up to three lower-case words, like "supplier"')),i=n(1,2e3),d=n(1,300),h=w({type:V(On),required:t(_()),description:t(g),label:t(n(1,60)),aliases:t(r(a,1,Qe)),options:t(r(n(1,80),1,100)),optionLabels:t(A(n(1,80),n(1,80))),of:t(V(["string","number","date","image","video","file"])),default:t(Z()),unit:t(n(void 0,12)),format:t(V(["money","percent","duration","markdown"])),min:t(G()),max:t(G()),step:t(G()),renamedFrom:t(S().check(K(be))),repeats:t(_()),collaborative:t(_())}).check(De(($,L)=>{$.type==="enum"&&!$.options&&L.addIssue({code:"custom",message:'an enum field lists its "options"',path:["options"]}),$.type!=="enum"&&$.options&&L.addIssue({code:"custom",message:'"options" belongs only on an enum field',path:["options"]});for(let Q of Object.keys($.optionLabels??{}))$.options?.includes(Q)||L.addIssue({code:"custom",message:`"${Q}" is labeled, and is none of the field's options`,path:["optionLabels",Q]});$.type!=="list"&&$.of&&L.addIssue({code:"custom",message:'"of" belongs only on a list field',path:["of"]}),$.repeats&&$.type!=="date"&&$.type!=="datetime"&&L.addIssue({code:"custom",message:'"repeats" belongs only on a date or datetime field',path:["repeats"]})})),m=S().check(K(new RegExp(`${ke.source}|${Ne.source}`),'a relation goes to a kind of this document, like "house", or of another app, like "@nick/house/house"')),p=w({to:x([r(m,1),I("*")]),cardinality:t(V(["one","many"])),description:t(g),inverse:t(n(1,80)),appendOnly:t(_()),renamedFrom:t(S()),tidying:t(I("never"))}),c=x([i,w({expr:i,label:t(n(1,60)),description:t(g),format:t(V(["money","percent","duration"])),unit:t(n(1,12)),hidden:t(_())})]),j=w({noun:t(n(1,40)),plural:t(n(1,40)),aliases:t(r(a,1,Qe)),description:t(g),fields:A(f,h).check(Y($=>Object.keys($).length>0,"a kind has at least one field")),label:t(d),describe:t(d),lifecycle:t(w({field:f,retired:r(x([S(),G(),_()]),1)})),figure:t(n(void 0,2e4)),glance:t(r(f,1,20)),page:t(w({fields:t(r(f,1,40)),groups:t(r(w({title:n(1,60),fields:r(f,1,40)}),1,12))})),edges:t(A(u,p)),computed:t(A(S(),c).check(Y($=>Object.keys($).length<=20,"a kind works out at most 20 computed fields"))),fieldRoles:t(A(S(),S())),renamedFrom:t(S().check(K(ke))),people:t(_()),archives:t(I(!1)),tidying:t(V(["never","no-links"]))}),k=x([S(),G(),_(),Fe(),N(Z()),w({expr:i})]),O=S().check(K(/^\$[A-Za-z][A-Za-z0-9]*$/,'a reference is "$" and a name, like "$subject" or "$new"')),E=x([w({create:l("kind"),as:t(S().check(K(be))),set:t(A(f,k))}),w({set:A(f,k),target:t(O)}),w({connect:u,from:O,to:O}),w({sever:u,from:O,to:O}),w({remove:O})]),b=w({title:t(n(1,80)),description:t(g),fromTheOtherEnd:t(n(1,80)),on:t(x([l("kind"),r(l("kind"),1)])),creates:t(l("kind")),sets:t(A(f,k)),writes:t(r(f,1)),connects:t(u),severs:t(u),setsOther:t(A(f,k)),replaces:t(x([I(!0),r(u,1,10)])),removes:t(I(!0)),args:t(A(f,h)),effects:t(r(E,1,20)),allowedWhen:t(i),refusal:t(d),destructive:t(_())}),F=w({act:l("act"),label:t(n(1,80)),args:t(A(S(),k))}),M=w({title:t(n(1,120)),description:t(g),over:x([I("graph"),l("kind")]),when:t(i),require:i,says:t(d),repairs:t(r(F,void 0,10))}),C=w({roles:x([r(l("role"),1),I("*")]),mutations:x([r(l("act"),1),I("*")]),kinds:t(x([N(l("kind")),I("*")])),describe:t(g),self:t(_()),ownEnd:t(_())}),y=t(r(l("field"),1)),v=w({roles:x([r(l("role"),1),I("*")]),kinds:r(l("kind"),1),own:t(_()),via:t(u),fields:y,hide:y}),D=w({grants:N(C),sees:t(N(v))}),ie=w({accent:t(S().check(K(/^#[0-9a-fA-F]{6}$/,'an accent is a color like "#c2577a"'))),ground:t(x([S().check(K(/^#[0-9a-fA-F]{6}$/,'a ground is a color like "#eef3f8"')),w({light:t(S().check(K(/^#[0-9a-fA-F]{6}$/,'a ground is a color like "#eef3f8"'))),dark:t(S().check(K(/^#[0-9a-fA-F]{6}$/,'a ground is a color like "#101826"')))})])),name:t(n(1,60)),currency:t(S().check(K(/^[A-Z]{3}$/,'a currency is its three-letter code, like "USD" or "EUR"'))),locale:t(n(2,35)),timeZone:t(n(1,64)),logo:t(x([n(1,se),w({src:n(1,se),alt:t(n(1,120))}),w({light:n(1,se),dark:t(n(1,se)),alt:t(n(1,120)),darkFallback:t(I("invert"))})])),favicon:t(x([n(1,se),w({emoji:S()})])),typography:t(w({display:t(n(1,200)),body:t(n(1,200)),mono:t(n(1,200))})),shape:t(w({radius:t(G().check(U(0),W(32))),density:t(G().check(U(.75),W(1.5)))})),accents:t(A(S(),G().check(U(0),W(360)))),scheme:t(V(["light","dark","auto"])),subtitle:t(I(!1))}),q=A(S(),Z()),H=x([n(1,120),w({by:n(1,120),direction:t(V(["asc","desc"]))})]),xe=G().check(ee(),U(1),W(9999)),mn=ne({create:t(_()),options:t(ne({sort:t(H),columnSort:t(H),search:t(r(n(1,120),void 0,40)),filters:t(r(n(1,120),void 0,40)),horizon:t(x([G().check(ee(),U(1),W(200)),ne({years:G().check(ee(),U(1),W(200)),title:n(1,80),from:t(xe),to:t(xe)})]))}))}),gn=w({card:t(N(Z())),row:t(N(Z())),page:t(N(Z()))}),zn=()=>{let $=t(V(["asc","desc"]));return x([n(1,120),w({by:n(1,120),direction:$,then:t(x([n(1,120),w({by:n(1,120),direction:$})]))})])},yn=()=>x([n(1,120),w({by:n(1,120),order:t(r(n(1,80),void 0,40)),closed:t(r(n(1,80),void 0,40))})]),Ae=ne({order:t(N(S())),hide:t(N(S())),first:t(S()),primary:t(r(n(1,80),void 0,40)),scene:t(n(1,40)),pages:t(n(1,40)),lists:t(A(S(),w({filters:t(r(n(1,120),void 0,40)),sort:t(zn()),group:t(yn()),export:t(_())})))}),hn=w({act:l("act"),title:t(n(1,80)),intro:t(g),fields:t(r(f,1,40)),say:t(g),submit:t(n(1,80)),role:t(l("role"))}),kn=w({$schema:t(S()),format:I($e),formatVersion:I(we),name:n(1,80),description:t(g),version:t(G().check(ee(),U(1))),kinds:A(l("kind"),j).check(Y($=>Object.keys($).length>0,"a document declares at least one kind"),Y($=>Object.keys($).length<=40,"a document declares at most 40 kinds")),computed:t(A(S(),c)),acts:t(A(l("act"),b)),rules:t(A(l("rule"),M)),roles:t(N(l("role"))),policy:t(D),modules:t(q),lenses:t(N(mn)),pages:t(Ae),views:t(A(S(),x([gn,N(Z())]))),brand:t(ie),settings:t(N(q)),migrations:t(N(q)),connections:t(A(l("connection"),q)),purpose:t(q),forms:t(A(l("form"),hn)),publishing:t(w({mode:V(["live","on-publish"]),working:r(l("role"),void 0,40),publishers:t(r(l("role"),1,40))}))});return{FieldSpec:h,EdgeSpec:p,ComputedSpec:c,KindSpec:j,ValueSpec:k,EffectSpec:E,ActSpec:b,RepairSpec:F,RuleSpec:M,GrantSpec:C,SightSpec:v,PolicySpec:D,BrandSpec:ie,PagesSpec:Ae,DocumentSpec:kn}}var vn,P=()=>vn??=jn(),Un=T(()=>P().FieldSpec),Zn=T(()=>P().EdgeSpec),Wn=T(()=>P().ComputedSpec),Yn=T(()=>P().KindSpec),Hn=T(()=>P().ValueSpec),Jn=T(()=>P().EffectSpec),Xn=T(()=>P().ActSpec),Qn=T(()=>P().RepairSpec),et=T(()=>P().RuleSpec),nt=T(()=>P().GrantSpec),tt=T(()=>P().SightSpec),ot=T(()=>P().PolicySpec),st=T(()=>P().BrandSpec),it=T(()=>P().PagesSpec),en=T(()=>P().DocumentSpec);var xn={};function nn(e,o=xn,s=we){let{document:n,respelled:r}=Ee(e),l=r.length>0?{respelled:r}:{};if(!n||typeof n!="object"||Array.isArray(n))return{document:n};let u=n;if(u.format!==$e||typeof u.formatVersion!="number"||u.formatVersion>=s)return{document:n,...l};let f=u.formatVersion,g=structuredClone(u);for(let a=f;a<s;a++){let i=o[a];if(!i)throw new Error(`there is no upgrade from format ${a} to ${a+1}`);g={...i(g),formatVersion:a+1}}return{document:g,from:f,...l}}function tn(e,o,s){let n=Object.keys(e).filter(f=>e[f].edges?.[o]!==void 0);if(n.length===0)return;let r=n.map(f=>e[f].edges[o].to),l=r.some(f=>f==="*")?"*":[...new Set(r.flatMap(f=>f))];if(s.length===0||s.some(f=>n.includes(f)))return{reversed:!1,kinds:l};let u=n.filter(f=>{let g=e[f].edges[o].to;return g==="*"||s.every(a=>g.includes(a))});return u.length>0?{reversed:!0,kinds:u}:{reversed:!1,kinds:l}}var rn=(e,o)=>{let s=e?.fields[o];return s!==void 0&&(s.type==="duration"||(s.type==="number"||s.type==="integer")&&s.format==="duration")};function on(e,o,s,n){if(n==="out"){let r=e[o]?.edges?.[s]?.to;return r===void 0?[]:r==="*"?Object.keys(e):r}return Object.entries(e).filter(([,r])=>{let l=r.edges?.[s]?.to;return l!==void 0&&(l==="*"||l.includes(o))}).map(([r])=>r)}function Oe(e,o,s){if(s.t==="ident")return e[o]?.edges?.[s.name]?on(e,o,s.name,"out"):void 0;if(s.t==="where")return Oe(e,o,s.set);if(s.t==="call"&&(s.fn==="out"||s.fn==="in")&&s.args[0]?.t==="lit"&&typeof s.args[0].value=="string")return on(e,o,s.args[0].value,s.fn)}var sn=(e,o,s)=>{let n=o.filter(r=>e[r]?.fields[s]!==void 0);return n.length>0&&n.every(r=>rn(e[r],s))};function an(e,o,s){let n=e.kinds,r=n[o],l=new Map(s),u=new Map,f=(a,i)=>{if(i>8)return!1;switch(a.t){case"ident":return rn(r,a.name)||g(a.name,i+1);case"member":{let d=Oe(n,o,a.object);return d!==void 0&&sn(n,d,a.name)}case"call":{if(a.fn!=="sum"&&a.fn!=="min"&&a.fn!=="max")return!1;let[d,h]=a.args,m=d&&Oe(n,o,d);return m!==void 0&&h?.t==="ident"&&sn(n,m,h.name)}case"binary":return(a.op==="+"||a.op==="-")&&f(a.left,i)&&f(a.right,i);case"unary":return a.op==="-"&&f(a.operand,i);default:return!1}},g=(a,i)=>{if(r?.computed?.[a]===void 0)return!1;if(u.has(a))return u.get(a);u.set(a,!1);let d=l.get(a),h=d!==void 0&&f(d,i);return u.set(a,h),h};return s.map(([a])=>a).filter(a=>g(a,0))}var An={title:["string","text"],rich_text:["string","text"],number:["number","integer"],select:["enum","string"],status:["enum","string"],multi_select:["list"],date:["date","datetime"],checkbox:["boolean"],url:["url","string"],email:["email","string"],phone_number:["phone","string"],people:["string","text","list"]};var cn=new Set(Object.values(An).flat());function ln(e,o){let s=new Map;if(!e||typeof e!="object")return new Map;for(let n of Object.values(e)){if(!n||typeof n!="object"||typeof n.kind!="string")continue;let r=o[n.kind]?.fields;if(!r)continue;let l=[];n.system==="google-calendar"&&n.fields&&typeof n.fields=="object"?l=Object.values(n.fields).filter(f=>typeof f=="string"):n.system==="notion"&&(l=n.properties&&typeof n.properties=="object"?Object.keys(n.properties):Object.keys(r).filter(f=>cn.has(r[f].type)));let u=s.get(n.kind)??new Set;for(let f of l)Object.hasOwn(r,f)&&u.add(f);s.set(n.kind,u)}return new Map([...s].filter(([,n])=>n.size>0).map(([n,r])=>[n,Object.keys(o[n].fields).filter(l=>r.has(l))]))}function dn(e,o,s=`kinds.${e}.page`){let n=o.page;if(!n)return[];let r=[],l=[...Object.keys(o.fields),...Object.keys(o.computed??{})],u=new Set,f=(a,i)=>{l.includes(a)?u.has(a)&&r.push(z("page-field-twice",i,`"${a}" is on ${e}'s page twice; name each field once`)):r.push(z("page-field",i,`${e}'s page is to show "${a}", and ${e} has no field or computed field called that`,`use one of: ${l.join(", ")}`)),u.add(a)};(n.fields??[]).forEach((a,i)=>f(a,`${s}.fields.${i}`));let g=new Set;return(n.groups??[]).forEach((a,i)=>{let d=a.title.trim().toLowerCase();g.has(d)&&r.push(z("page-group-twice",`${s}.groups.${i}.title`,`${e}'s page has two groups called "${a.title}"; give each its own title`)),g.add(d),a.fields.forEach((h,m)=>f(h,`${s}.groups.${i}.fields.${m}`))}),r}function pn(e,o=[]){return Ie({declared:Object.keys(e.fields),paged:[...e.page?.fields??[],...(e.page?.groups??[]).flatMap(s=>s.fields)],must:s=>!!e.fields[s].required&&e.fields[s].default===void 0,naming:o})}var En=new Set(["subject","now","today","me"]);function Rn(e){if((typeof e=="string"?e:JSON.stringify(e??null)).length>Se)return{findings:[z("too-large","",`a document may be at most ${Se/1024} KB`)]};if(typeof e=="string")try{e=JSON.parse(e)}catch(n){return{findings:[z("not-json","",`this is not JSON: ${n.message}`)]}}try{e=nn(e).document}catch(n){return{findings:[z("format","formatVersion",n.message)]}}e=Xe(e);let o=en.safeParse(e);if(!o.success)return{findings:o.error.issues.map(n=>{let r=n.path.map(String).join(".");if(n.code==="unrecognized_keys")return z("unknown-key",r,`${n.keys.map(l=>`"${l}"`).join(", ")} ${n.keys.length===1?"is":"are"} not part of a Graview document here`,"check the spelling against docs/declaration-document.md");if(n.code==="invalid_union"&&/\.effects\.\d+$/.test(r))return z("effect-shape",r,"this effect is not one Graview knows",'an effect is one of {"create": kind, "as"?: name, "set"?: {field: value}}, {"set": {field: value, \u2026}, "target"?: "$ref"}, {"connect"|"sever": relation, "from": "$ref", "to": "$ref"}, {"remove": "$ref"}');if(n.code==="invalid_key"){let l=n.issues?.[0]?.message;return z("shape",r,`the name "${String(n.path.at(-1))}" is not allowed here${l?`: ${l}`:""}`)}return z("shape",r,n.message)})};let s=o.data;return{document:s,findings:Fn(s)}}var le=e=>[e??[]].flat();function fn(e){let o=new Map;for(let[s,n]of Object.entries(e.kinds))for(let[r,l]of Object.entries(te(n.edges))){let u=o.get(r);o.set(r,{name:r,from:[...u?.from??[],s],to:l.to==="*"||u?.to==="*"?"*":[...new Set([...u?.to??[],...l.to])],cardinality:l.cardinality??"many"})}return o}function It(e){let o=new Map;for(let[n,r]of Object.entries(e.kinds)){let l=oe(r),u=pe(r.edges);o.set(n,{fields:new Set([...Object.keys(r.fields),...u.keys()]),edges:new Map(Object.entries(te(r.edges)).map(([f,g])=>[f,g.cardinality??"many"])),...l?{computed:l}:{},...u.size>0?{linked:u}:{}})}let s=oe(e);return s&&o.set(Ce,{computed:s}),o}function un(e,o){let s=[],n=le(e.on),r=(l,u)=>{let f=tn(o.kinds,l,n)?.reversed===!0,[g,a]=f?["$to","$subject"]:["$subject","$to"];return u==="connect"?{connect:l,from:g,to:a}:{sever:l,from:g,to:a}};if(e.creates){let l=o.kinds[e.creates],u={};for(let f of Object.keys(l?.fields??{}))u[f]=`$${f}`;for(let f of e.effects??[])"set"in f&&!("create"in f)&&R(f.target)==="new"&&Object.assign(u,f.set);s.push({create:e.creates,as:"new",set:u})}return e.sets&&s.push({set:e.sets}),e.writes&&!(e.creates&&e.on===void 0)&&s.push({set:Object.fromEntries(e.writes.map(l=>[l,`$${l}`]))}),e.connects&&(e.replaces&&s.push({replace:e.replaces===!0?[e.connects]:[...e.replaces],keep:e.connects}),s.push(r(e.connects,"connect"))),e.severs&&s.push(r(e.severs,"sever")),e.setsOther&&(e.connects||e.severs)&&s.push({set:e.setsOther,target:"$to"}),e.removes&&s.push({remove:"$subject"}),e.effects&&s.push(...e.effects.filter(l=>!(e.creates&&"set"in l&&!("create"in l)&&R(l.target)==="new"))),s}function je(e,o,s){try{let n=J(e),r=re(n);for(let l of r.unknownFunctions)s.push(z("unknown-function",o,`"${l}" is not a function the rule language knows`,"see docs/declaration-document.md#expression-language"));return n}catch(n){if(n instanceof ae){s.push(z("expression",o,n.sentence+` (at character ${n.at+1})`));return}throw n}}function ve(e,o,s){try{return X(e)}catch(n){if(n instanceof Ue||n instanceof ae){s.push(z("template",o,(n instanceof ae,n.sentence)));return}throw n}}function Fn(e){let o=[],s=new Set(Object.keys(e.kinds)),n=fn(e),r=e.acts??{},l=new Set(e.roles??[]),u=(a,i)=>pe(e.kinds[a]?.edges).has(i),f=a=>Object.keys(e.kinds).some(i=>u(i,a));for(let[a,i]of Object.entries(e.kinds)){let d=`kinds.${a}`;for(let[m,p]of Object.entries(i.edges??{})){if(!Te(p)&&p.to!=="*")for(let c of p.to)s.has(c)||o.push(z("edge-target",`${d}.edges.${m}.to`,`"${c}" is not a kind this document declares`));i.fields[m]&&o.push(z("edge-field-clash",`${d}.edges.${m}`,`"${m}" is both a field and a relation of ${a}`,"rename one of them"))}i.lifecycle&&!i.fields[i.lifecycle.field]&&o.push(z("lifecycle-field",`${d}.lifecycle.field`,`${a} has no field "${i.lifecycle.field}"`));let h=m=>i.computed!==void 0&&Object.hasOwn(i.computed,m);for(let m of i.glance??[])!i.fields[m]&&!h(m)&&o.push(z("glance-field",`${d}.glance`,`a glance at ${a} is to say "${m}", and ${a} has no field or computed field called that`,`use one of: ${[...Object.keys(i.fields),...Object.keys(i.computed??{})].join(", ")}`));o.push(...dn(a,i));for(let m of["label","describe"]){let p=i[m];if(!p)continue;let c=ve(p,`${d}.${m}`,o);for(let j of c??[])if(j.expr){for(let k of re(j.expr).names)if(!i.fields[k]){if(h(k)){He(i,k)||o.push(z("template-field",`${d}.${m}`,`${a}'s ${k} is worked out from beyond the record, and a ${m} is said with no graph to read`,`show it in a view instead, or name a computed field worked out from ${a}'s own fields`));continue}o.push(z("template-field",`${d}.${m}`,`${a} has no field "${k}" for its ${m} to show`,m==="label"?"a label can only show the record's own fields and what they work out":void 0))}}}for(let[m,p]of Object.entries(i.fields)){p.default!==void 0&&p.type==="enum"&&!p.options?.includes(String(p.default))&&o.push(z("default-option",`${d}.fields.${m}.default`,`"${String(p.default)}" is not one of ${m}'s options`));let c=`${m}Repeat`;p.repeats&&(i.fields[c]||i.edges?.[c]||i.computed?.[c])&&o.push(z("repeat-clash",`${d}.fields.${m}.repeats`,`${a} already has "${c}", where how ${m} repeats is kept`))}}for(let[a,i]of Object.entries(r)){let d=`acts.${a}`;for(let c of le(i.on))s.has(c)||o.push(z("act-kind",`${d}.on`,`"${c}" is not a kind this document declares`));let h=le(i.on),m=un(i,e);if(i.creates&&i.on===void 0&&i.writes&&s.has(i.creates)){for(let c of i.writes)if(!e.kinds[i.creates].fields[c])if(e.kinds[i.creates].computed?.[c]!==void 0)o.push(z("computed-written",`${d}.writes`,`${i.creates}'s ${c} is worked out, not written: no act can set it`,"write the stored fields it is worked out from"));else{if(u(i.creates,c))continue;o.push(z("act-field",`${d}.writes`,`${i.creates} has no field "${c}"`))}}m.length===0&&o.push(z("act-empty",d,`"${a}" does nothing`,"give it effects or a shorthand such as sets or creates"));let p=new Map;m.forEach((c,j)=>{let k=m.length-(i.effects?.length??0),O=i.effects&&j>=k?`${d}.effects.${j-k}`:d;if("create"in c){if(!s.has(c.create))o.push(z("act-kind",`${O}.create`,`"${c.create}" is not a kind this document declares`));else for(let b of Object.keys(c.set??{}))e.kinds[c.create].fields[b]||(e.kinds[c.create].computed?.[b]!==void 0?o.push(z("computed-written",`${O}.set.${b}`,`${c.create}'s ${b} is worked out, not written: no act can set it`,"set the stored fields it is worked out from")):o.push(z("act-field",`${O}.set.${b}`,`${c.create} has no field "${b}"`)));c.as&&p.set(c.as,c.create)}else if("connect"in c||"sever"in c){let b="connect"in c?c.connect:c.sever;!n.has(b)&&!f(b)&&o.push(z("act-edge",`${O}.${"connect"in c?"connect":"sever"}`,`"${b}" is not a relation any kind declares`)),R(c.from)==="subject"&&h.length===0&&o.push(z("act-subject",`${d}.on`,`"${a}" acts on "$subject" but does not say which kinds it is "on"`))}else if("set"in c){let b=R(c.target??"$subject"),F=b==="subject"?h:p.has(b??"")?[p.get(b)]:[];b==="subject"&&h.length===0&&o.push(z("act-subject",`${d}.on`,`"${a}" changes "$subject" but does not say which kinds it is "on"`));for(let M of Object.keys(c.set))for(let C of F)if(!(!s.has(C)||e.kinds[C].fields[M]))if(e.kinds[C].computed?.[M]!==void 0)o.push(z("computed-written",`${O}.set.${M}`,`${C}'s ${M} is worked out, not written: no act can set it`,"set the stored fields it is worked out from"));else{if(u(C,M))continue;o.push(z("act-field",`${O}.set.${M}`,`${C} has no field "${M}"`))}}else"remove"in c&&R(c.remove)==="subject"&&h.length===0&&o.push(z("act-subject",`${d}.on`,`"${a}" removes "$subject" but does not say which kinds it is "on"`));("set"in c&&c.set?Object.values(c.set):[]).forEach(b=>{b&&typeof b=="object"&&!Array.isArray(b)&&"expr"in b&&je(b.expr,`${O}.set`,o)})}),i.allowedWhen&&je(i.allowedWhen,`${d}.allowedWhen`,o),i.refusal&&ve(i.refusal,`${d}.refusal`,o)}for(let[a,i]of Object.entries(e.rules??{})){let d=`rules.${a}`;i.over!=="graph"&&!s.has(i.over)&&o.push(z("rule-kind",`${d}.over`,`"${i.over}" is not a kind this document declares`));let h=i.over==="graph"?void 0:e.kinds[i.over];for(let m of["when","require"]){let p=i[m];if(!p)continue;let c=je(p,`${d}.${m}`,o);if(!c)continue;let j=re(c);for(let k of j.names)if(i.over==="graph")o.push(z("rule-name",`${d}.${m}`,`"${k}" means nothing in a rule over the whole graph`,`name a kind in "over", or use all('kind')`));else if(h&&!h.fields[k]&&!h.edges?.[k]&&h.computed?.[k]===void 0){let O=Object.keys(h.edges??{}).find(E=>E.includes("-")&&E.split("-").includes(k));o.push(z("rule-name",`${d}.${m}`,`${i.over} has no field or relation called "${k}"`,O?`"${O}" reads as a subtraction in a rule; rename the relation to one camelCase word, like "${O.replace(/-([a-z0-9])/g,(E,b)=>b.toUpperCase())}"`:void 0))}for(let k of j.edges)!n.has(k)&&!f(k)&&o.push(z("rule-edge",`${d}.${m}`,`"${k}" is not a relation any kind declares`));for(let k of j.sweeps)s.has(k)?i.over!=="graph"&&o.push(Le("rule-cost",`${d}.${m}`,`this rule looks at every ${k} for every ${i.over}, which grows slowly as the app grows`,"walk a relation with out()/in() instead of all() where you can")):o.push(z("rule-kind",`${d}.${m}`,`"${k}" is not a kind this document declares`))}i.says&&ve(i.says,`${d}.says`,o),(i.repairs??[]).forEach((m,p)=>{!r[m.act]&&!fe(m.act)&&!ye(m.act,e.kinds)&&o.push(z("repair-act",`${d}.repairs.${p}.act`,`"${m.act}" is not an act this document declares`,he(m.act,e)))})}let g=e.policy;return g&&(g.grants.forEach((a,i)=>{if(a.roles!=="*"&&l.size>0)for(let d of a.roles)l.has(d)||o.push(z("grant-role",`policy.grants.${i}.roles`,`"${d}" is not one of the document's roles`));if(a.mutations!=="*")for(let d of a.mutations)!r[d]&&!fe(d)&&!ye(d,e.kinds)&&o.push(z("grant-act",`policy.grants.${i}.mutations`,`"${d}" is not an act this document declares`,he(d,e)))}),(g.sees??[]).forEach((a,i)=>{for(let d of a.kinds)s.has(d)||o.push(z("sight-kind",`policy.sees.${i}.kinds`,`"${d}" is not a kind this document declares`));if(a.roles!=="*"&&l.size>0)for(let d of a.roles)l.has(d)||o.push(z("sight-role",`policy.sees.${i}.roles`,`"${d}" is not one of the document's roles`))})),o.push(...Ye(e)),o}function Dn(e){return e.label?[...e.label.matchAll(/\{\s*([A-Za-z_][A-Za-z0-9_]*)/g)].map(o=>o[1]):[ge(e)??[]].flat()}function Nn(e,o,s,n){let r=new Map,l=le(e.on),u=new Map,f=new Map;(l.length>0||o.some(p=>"remove"in p&&R(p.remove)==="subject"||"from"in p&&(R(p.from)==="subject"||R(p.to)==="subject")||"set"in p&&!("create"in p)&&R(p.target??"$subject")==="subject"))&&r.set(me,{ref:l.length>0?l:"*",required:!0});let a=e.args??{},i=e.writes?.length===1,d=(p,c)=>c&&p.type===c.type&&p.min===void 0&&p.max===void 0&&p.step===void 0?{...p,...c.min===void 0?{}:{min:c.min},...c.max===void 0?{}:{max:c.max},...c.step===void 0?{}:{step:c.step}}:p,h=(p,c)=>c&&p.type===c.type&&p.format===void 0&&p.unit===void 0?{...d(p,c),...c.format?{format:c.format}:{},...c.unit?{unit:c.unit}:{}}:d(p,c),m=(p,c,j)=>{if(p===me||En.has(p)||u.has(p)||r.has(p))return;let k=a[p]?h(a[p],j):void 0;r.set(p,k?{field:k,optional:!k.required,required:!!k.required}:c())};for(let p of o)if("create"in p){let c=s.kinds[p.create],j=c?pn(c,Dn(c)):[],k=O=>j.includes(O)?j.indexOf(O):j.length;for(let[O,E]of Object.entries(p.set??{}).sort(([b],[F])=>k(b)-k(F))){let b=R(E),F=c?.fields[O];if(b&&F){let M=!!F.required&&F.default===void 0;m(b,()=>({field:F,optional:!M,required:M}),F)}}p.as&&u.set(p.as,p.create)}else if("connect"in p||"sever"in p){let c=n.get("connect"in p?p.connect:p.sever);for(let[j,k]of[["from",p.from],["to",p.to]]){let O=R(k);if(!O)continue;let E=j==="to"?c?.to??"*":c?.from??"*";E!=="*"&&!f.has(O)&&f.set(O,E),m(O,()=>({ref:E,required:!0}))}}else if("set"in p){let c=R(p.target??"$subject"),j=c==="subject"?l[0]:u.get(c??"")??f.get(c??"")?.[0];c&&c!=="subject"&&!u.has(c)&&m(c,()=>({ref:"*",required:!0}));for(let[k,O]of Object.entries(p.set)){let E=R(O);if(!E)continue;let b=j?s.kinds[j]?.fields[k]:void 0;m(E,()=>b?{field:b,optional:!i,required:i}:{any:!0,required:!1},b)}}else if("remove"in p){let c=R(p.remove);c&&m(c,()=>({ref:"*",required:!0}))}for(let[p,c]of Object.entries(a))r.has(p)||r.set(p,{field:c,optional:!c.required,required:!!c.required});return r}function Pt(e,o={}){let s=Rn(e);if(!s.document||ue(s.findings))return{ok:!1,findings:s.findings};let n=s.document,r=[...s.findings];o.previous&&r.push(...Mn(n,o.previous));let l=Tn(n,r);return ue(l.findings)?{ok:!1,findings:l.findings}:Be(l,o)}function ce(e,o){return e.map(s=>{let n=!s.format&&s.expr?.t==="ident"?o?.[s.expr.name]?.format:void 0;return n==="money"||n==="percent"?{...s,format:n}:s})}function Tn(e,o){let s=fn(e),n={},r=ln(e.connections,e.kinds);for(let[i,d]of Object.entries(e.kinds)){let h=ge(d),m=d.label??(h?`{${h}}`:void 0),p=oe(d),c=p?an(e,i,[...p]):[];n[i]={...m?{label:ce(X(m),d.fields)}:{},...d.describe?{describe:ce(X(d.describe),d.fields)}:{},...p?{computed:[...p]}:{},...c.length>0?{durations:c}:{},...r.has(i)?{keptInStep:r.get(i)}:{}}}let l={};for(let[i,d]of Object.entries(e.acts??{})){let h=un(d,e),m=Nn(d,h,e,s),p=d.destructive??h.some(y=>"remove"in y||"sever"in y||"replace"in y),c=[...new Set(h.flatMap(y=>"create"in y?[y.create]:[]))],j=[...new Set(h.flatMap(y=>"connect"in y?[y.connect]:[]))],k=[...new Set(h.flatMap(y=>"sever"in y?[y.sever]:"replace"in y?y.replace:[]))],O=[...new Set(h.flatMap(y=>"set"in y&&!("create"in y)&&R(y.target??"$subject")==="subject"?Object.keys(y.set):[]))],E=new Map;for(let y of h){if(!("connect"in y)&&!("sever"in y))continue;let v=s.get("connect"in y?y.connect:y.sever);for(let[D,ie]of[["from",y.from],["to",y.to]]){let q=R(ie),H=D==="to"?v?.to:v?.from;q&&q!=="subject"&&H&&H!=="*"&&E.set(q,[...new Set([...E.get(q)??[],...H])])}}let b={};for(let y of h){if(!("set"in y)||"create"in y)continue;let v=R(y.target??"$subject");for(let D of v&&v!=="subject"&&E.get(v)||[])b[D]=[...new Set([...b[D]??[],...Object.keys(y.set)])]}let F={};for(let y of h)if(!(!("set"in y)||"create"in y||R(y.target??"$subject")!=="subject"))for(let[v,D]of Object.entries(y.set??{}))typeof D=="string"&&R(D)===void 0||typeof D=="number"||typeof D=="boolean"?F[v]=typeof D=="string"&&D.startsWith("$$")?D.slice(1):D:delete F[v];let M=c.length===0&&h.every(y=>!("set"in y)||!y.set||Object.values(y.set).every(v=>!(v&&typeof v=="object"&&!Array.isArray(v)&&"expr"in v))),C=new Map;for(let y of h)if(!(!("set"in y)||!y.set))for(let v of Object.values(y.set))v&&typeof v=="object"&&!Array.isArray(v)&&"expr"in v&&C.set(v.expr,J(v.expr));l[i]={title:d.title??i.replace(/-/g," "),effects:h,args:[...m],...d.allowedWhen?{guard:J(d.allowedWhen)}:{},...d.refusal?{refusal:ce(X(d.refusal),e.kinds[[d.on??[]].flat()[0]??""]?.fields)}:{},exprs:[...C],destructive:p,idempotent:M,creates:c,connects:j,severs:k,writes:O,writesOther:b,sets:F}}let u={};for(let[i,d]of Object.entries(e.rules??{}))u[i]={title:d.title??i.replace(/-/g," "),require:J(d.require),...d.when?{when:J(d.when)}:{},...d.says?{says:ce(X(d.says),e.kinds[d.over]?.fields)}:{}};let f=Ve(e,o),g=Ze(e),a=We(e);return{format:qe,document:e,findings:o,kinds:n,...e.computed?{facts:[...oe(e)??[]]}:{},edges:[...s].map(([i,{from:d,to:h,cardinality:m}])=>[i,{from:d,to:h,cardinality:m}]),acts:l,rules:u,brand:f,...Object.keys(g).length>0?{viewSpecs:g}:{},...a?{home:a}:{}}}function Gt(e,o,s){let n=/^defineNode\("([^"]+)"\)/.exec(o)?.[1],r=n?s.kinds[n]:void 0;if(!n||!r)return e;let l=Object.keys(r.fields).filter(u=>u!=="label").slice(0,3);return{...e,path:`kinds.${n}.glance`,fix:`Say which: "glance": [${l.map(u=>`"${u}"`).join(", ")}] on kinds.${n} \u2014 the facts a person compares one by, at a glance.`}}function Mn(e,o){let s=[],n=new Set(Object.values(o.kinds).flatMap(r=>Object.keys(r.edges??{})));for(let[r,l]of Object.entries(e.kinds)){let u=l.renamedFrom;u&&!o.kinds[u]&&s.push(z("renamed-from-nothing",`kinds.${r}.renamedFrom`,`${r} says it was ${u}, and the previous version has no kind called ${u}`,"name the kind it was, or drop renamedFrom"));let f=o.kinds[u??r];for(let[g,a]of Object.entries(l.fields)){let i=a.renamedFrom;i&&!f?.fields[i]&&s.push(z("renamed-from-nothing",`kinds.${r}.fields.${g}.renamedFrom`,`${g} says it was ${i}, and the previous ${u??r} has no field called ${i}`,"name the field it was, or drop renamedFrom"))}for(let[g,a]of Object.entries(l.edges??{})){let i=a.renamedFrom;i&&!n.has(i)&&s.push(z("renamed-from-nothing",`kinds.${r}.edges.${g}.renamedFrom`,`${g} says it was ${i}, and the previous version has no relation called ${i}`,"name the relation it was, or drop renamedFrom"))}}return s}export{bn as ActRefusal,Pt as compileDocumentWithoutCheck,un as effectsOf,Gt as inDocumentWords,It as kindShapes,Rn as readDocument};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{d as C,e as re}from"./chunk.
|
|
1
|
+
var __graviewPreload=(base,files)=>{if(typeof document>"u")return;const asked=globalThis.__graviewPreloaded??=new Set;for(const file of files){const href=new URL(file,base).href;if(asked.has(href))continue;asked.add(href);const link=document.createElement("link");link.rel="modulepreload";link.href=href;document.head.append(link)}};import{d as C,e as re}from"./chunk.E22DDEQI.js";import{e as ee}from"./chunk.OLW44AP5.js";import{b as S}from"./chunk.2FOIJ5ID.js";import{j as X}from"./chunk.6IUEGPCZ.js";import{G as se,Ga as V,Ra as J,T as Z,Va as Q}from"./chunk.VNJKGSGZ.js";import{a as K}from"./chunk.SDO3U72B.js";import{Q as Y,W as M,ga as U}from"./chunk.X3MMJ3QC.js";import{b as D}from"./chunk.AJZBJBMO.js";var h=D(se(),1);var n=D(Z(),1),Re=9,le=40,ge=2;function de(e){let r=new Map;for(let i of e.allNodes())r.set(i.kind,(r.get(i.kind)??0)+1);return r}var ue=(e,r)=>(e.far??[]).reduce((i,a)=>i+(r.get(a)??0),0);function ce(e,r,i){if(i)return i.flatMap(s=>e.filters.filter(u=>u.key===s));let a=de(r),o=new Set(e.filters.filter(s=>s.about==="edge"&&ue(s,a)>le).map(s=>s.key));return e.filters.filter(s=>s.about==="edge"?!o.has(s.key):s.about==="via"?o.has(s.key.split(".")[0]):!0)}function pe(e,r){let i=e.filter(a=>a.about==="field"&&a.type==="choice"&&(a.options?.length??0)>0);return r?i:i.slice(0,ge)}var fe=520;function ye(e,r,i,a){let o=i.filters.find(s=>s.key===a.key);if(!o)return`${a.key}: ${a.value}`;if(o.about==="is")return a.value.charAt(0).toUpperCase()+a.value.slice(1);if(o.about==="via")return`${o.label}: ${S(e.tryDefinition(o.far?.[0]??""),o.key.split(".")[1],a.value)}`;if(o.about==="edge"){if(a.value==="*")return`${o.label}: anything`;if(a.value==="none")return`${o.label}: nothing`;let s=r.getNode(a.value);return`${o.label}: ${s?U(e.tryDefinition(s.kind),s):a.value}`}if(o.type==="date"){let[s,u]=a.value.split(":");return`${o.label} ${s} ${u?Y(u):""}`.trim()}if(o.type==="boolean")return`${o.label}: ${a.value==="true"?"yes":"no"}`;if(o.type==="number"){let s=a.value.lastIndexOf(":"),u=a.value.slice(0,Math.max(0,s));if(u==="at-most"||u==="at-least")return`${o.label}: ${u==="at-most"?"at most":"at least"} ${S(e.tryDefinition(i.kind),o.key,Number(a.value.slice(s+1)))}`}return o.type==="text"?`${o.label}: ${a.value}`:`${o.label}: ${S(e.tryDefinition(i.kind),o.key,a.value)}`}var P=e=>/^[A-Z][a-z]/.test(e)?e.charAt(0).toLowerCase()+e.slice(1):e;function me(e){return e?.type==="date"?{asc:"Earliest first",desc:"Latest first"}:e?.type==="number"?{asc:"Lowest first",desc:"Highest first"}:e?.type==="boolean"?{asc:"No first",desc:"Yes first"}:e?.type==="choice"?{asc:"In their order",desc:"In reverse order"}:{asc:"A to Z",desc:"Z to A"}}var x=V(K(()=>(__graviewPreload(import.meta.url,["./chunk.WEGPDJTB.js","./chunk.MRYN42EQ.js","./chunk.E22DDEQI.js","./chunk.OLW44AP5.js","./chunk.NSGQXCH6.js","./chunk.SZG6HJWH.js","./chunk.2FOIJ5ID.js","./chunk.6IUEGPCZ.js","./chunk.CUJX3IVA.js","./chunk.VNJKGSGZ.js","./chunk.SDO3U72B.js","./chunk.X3MMJ3QC.js","./chunk.FQLNBIQ5.js","./chunk.AJZBJBMO.js"]),import("./chunk.Z4CJJ4QP.js")))),N=x.part((e,r)=>(0,n.jsx)(e.ArrangeLists,{...r}),{what:"This list",quiet:!0}),he=x.part((e,r)=>(0,n.jsx)(e.ArrangeChips,{...r}),{what:"This list",quiet:!0}),Oe=()=>x.load(),q=new Map;function Te(e){let{schema:r,graph:i,kind:a,arrangement:o,onChange:s}=e,u=e.offers??ee(r,a),g=e.testId??"arrange",y=C(e.allow,"sort")&&u.sorts.length>1,m=C(e.allow,"group")&&u.groups.length>0,F=C(e.allow,"filter")?ce(u,i,e.filters):[],L=e.chips?pe(F,e.filters):[],H=F.filter(t=>!L.includes(t)),G=H.length>0,_=e.query!==!1&&e.allow!==!1,w=we(e.noun,e.kept),v=e.past&&e.past.count>0?e.past:null;if(!y&&!m&&!G&&!_&&!w&&!v)return null;let z=t=>JSON.stringify(re(t)),R=`${g}|${a}`,p={current:q.get(R)??{words:new Set,latest:null,at:0}};q.set(R,p.current),p.current.latest&&Date.now()-p.current.at>1500&&!p.current.words.has(z(o))&&(p.current={words:new Set,latest:null,at:0},q.set(R,p.current));let d=p.current.latest??o,b=t=>{let l={...p.current.latest??o,...t};for(let c of Object.keys(l))l[c]===void 0&&delete l[c];p.current.latest=l,p.current.at=Date.now(),p.current.words.add(z(l)),s(l)},f=d.filter??[],O=t=>{let l=f.filter((c,I)=>I!==t);b({filter:l.length>0?l:void 0})},A=t=>f.some(l=>l.key===t.key&&l.value===t.value),te=t=>A(t)?O(f.findIndex(l=>l.key===t.key&&l.value===t.value)):b({filter:[...f,t]}),T=d.sort?u.sorts.find(t=>t.key===d.sort.by):void 0,j=d.group?u.groups.find(t=>t.key===d.group.by):void 0,ne=me(T),k={schema:r,graph:i,offers:{...u,filters:H},arrangement:d,set:b,toggle:te,has:A,testId:g},ae=(t,l)=>A({key:t,value:l})?O(f.findIndex(c=>c.key===t&&c.value===l)):b({filter:[...f.filter(c=>c.key!==t),{key:t,value:l}]}),oe=d.sort?(0,n.jsxs)(n.Fragment,{children:["Sorted by ",P(T?.label??d.sort.by),(0,n.jsx)("span",{"aria-hidden":"true",children:d.sort.direction==="desc"?" \u2193":" \u2191"})]}):"Sort",ie=d.group?.bucket&&j?.buckets?`, a ${d.group.bucket} each`:"",B=d.group?`Grouped by ${P(j?.label??d.group.by)}${ie}`:"Group";return(0,n.jsxs)("div",{"data-testid":`${g}-bar`,role:"group","aria-label":"Arrange",className:"graview-arrange",style:e.style,onPointerEnter:x.prefetch,onFocus:x.prefetch,children:[(0,n.jsx)("style",{children:xe}),(0,n.jsxs)("div",{className:"graview-arrange-line",children:[w?(0,n.jsxs)("span",{className:"graview-arrange-count","data-testid":`${g}-count`,children:[w.kept?(0,n.jsx)("span",{"data-testid":`${g}-kept`,children:w.kept}):null,w.words]}):null,v?(0,n.jsxs)("button",{type:"button",className:"graview-arrange-open","data-testid":`${g}-past`,title:`${M(v.count)} more behind the horizon \u2014 press to widen the view to the past`,onClick:t=>{let l=t.currentTarget.closest("[data-graview-view]"),c=t.currentTarget;v.widen();let I=0,W=()=>{if(document.activeElement!==c&&document.activeElement!==document.body&&c.isConnected)return;let $=l?.querySelector('[role="group"][aria-label="Arrange"] :is(button, input)');if($&&$!==c&&$.isConnected)return $.focus({preventScroll:!0});++I<120&&requestAnimationFrame(W)};requestAnimationFrame(W)},children:["+",M(v.count)," past"]}):null,f.map((t,l)=>{let c=ye(r,i,u,t);return(0,n.jsxs)("span",{className:"graview-arrange-token","data-testid":`${g}-condition`,children:[c,(0,n.jsx)("button",{type:"button","aria-label":`Remove: ${c}`,title:"Remove",onClick:()=>O(l),children:"\xD7"})]},`${t.key}:${t.value}`)}),y?(0,n.jsx)("span",{className:"graview-arrange-part graview-arrange-one",children:(0,n.jsx)(E,{testId:`${g}-sort`,value:d.sort?.by??"",set:d.sort!==void 0,label:"Sort",name:d.sort?`Sorted by ${P(T?.label??d.sort.by)}, ${ne[d.sort.direction].toLowerCase()}`:"Sort",list:t=>(0,n.jsx)(N,{which:"sort",done:t,...k}),children:oe})}):null,m?(0,n.jsx)("span",{className:"graview-arrange-part graview-arrange-one",children:(0,n.jsx)(E,{testId:`${g}-group`,value:d.group?.by??"",set:d.group!==void 0,label:"Group",name:B,list:t=>(0,n.jsx)(N,{which:"group",done:t,...k}),children:B})}):null,G?(0,n.jsx)("span",{className:"graview-arrange-part",children:(0,n.jsx)(E,{testId:`${g}-add`,value:"",set:!1,label:"Filter",name:f.length>0?`Filter \u2014 ${f.length} on`:"Filter",list:t=>(0,n.jsx)(N,{which:"filter",done:t,...k}),children:"Filter"})}):null,y||m?(0,n.jsx)("span",{className:"graview-arrange-part graview-arrange-all",children:(0,n.jsx)(E,{testId:`${g}-all`,value:"",set:!1,label:"Arrange",name:"Arrange: sort and group",list:t=>(0,n.jsx)(N,{which:"all",done:t,parts:{sort:y,group:m,filter:!1},...k}),children:"Arrange"})}):null,_?(0,n.jsxs)("label",{className:"graview-arrange-words-at",children:[(0,n.jsx)("span",{style:X,children:"Find"}),(0,n.jsx)("input",{type:"search",className:"graview-arrange-words","data-testid":`${g}-query`,value:d.query??"",placeholder:"Find\u2026",onChange:t=>b({query:t.target.value.length>0?t.target.value:void 0})})]}):null,L.length>0&&e.chips?(0,n.jsx)(h.Suspense,{fallback:null,children:(0,n.jsx)(he,{offers:L,chips:e.chips,schema:r,graph:i,kind:a,arrangement:d,has:A,choose:ae,testId:g})}):null,e.end]})]})}function we(e,r){if(!r)return null;let i=r.shown!==r.of;if(!e)return i?{words:"",kept:`${r.shown} of ${r.of}`}:null;let a=r.of===1?e.one:e.many;return i?{words:` ${a}`,kept:`${r.shown} of ${r.of}`}:{words:`${r.of} ${a}`}}function E({testId:e,value:r,set:i,label:a,name:o,list:s,children:u}){let g=Q("arrange",{align:"start"}),y=(0,h.useRef)(null);return(0,h.useEffect)(()=>{g.open&&y.current?.querySelector('[aria-pressed="true"]')?.focus({preventScroll:!0})},[g.open]),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("button",{type:"button",className:"graview-arrange-open","data-testid":e,"data-set":i?"":void 0,value:r,"aria-label":o,...g.trigger,onClick:g.toggle,children:[u,(0,n.jsx)(be,{})]}),g.open?(0,n.jsx)("div",{...g.pane,ref:m=>{g.pane.ref(m),y.current=m},role:"group","aria-label":a,"data-testid":"arrange-list","data-arrange":e,className:"graview-arrange-list",style:J,onKeyDown:ve,children:s(()=>g.setOpen(!1))}):null]})}function ve(e){if(!["ArrowDown","ArrowUp","Home","End"].includes(e.key))return;let r=[...e.currentTarget.querySelectorAll("button:not([disabled]), input")];if(r.length===0)return;let i=r.indexOf(document.activeElement);if(document.activeElement instanceof HTMLInputElement&&document.activeElement.type==="date"&&(e.key==="ArrowUp"||e.key==="ArrowDown"))return;e.preventDefault();let a=e.key==="Home"?0:e.key==="End"?r.length-1:e.key==="ArrowDown"?(i+1)%r.length:(i-1+r.length)%r.length;r[a].focus()}function be(){return(0,n.jsx)("svg",{width:"9",height:"9",viewBox:"0 0 10 10","aria-hidden":"true",focusable:"false",style:{flex:"0 0 auto",opacity:.7},children:(0,n.jsx)("path",{d:"M2 3.5 L5 6.5 L8 3.5",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})})}var xe=`
|
|
2
2
|
.graview-arrange{container-type:inline-size;box-sizing:border-box;width:100%;min-width:0;max-width:100%}
|
|
3
3
|
.graview-arrange-line{display:flex;flex-wrap:wrap;align-items:center;gap:2px 6px;min-width:0;font-size:.875rem;line-height:1.35;color:var(--graview-ink-muted)}
|
|
4
4
|
.graview-arrange-count{margin-right:2px;color:var(--graview-ink-muted)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as a}from"./chunk.
|
|
1
|
+
import{s as a}from"./chunk.KHZA5F7A.js";import{G as f,T as s,ba as l}from"./chunk.VNJKGSGZ.js";import{b as i}from"./chunk.AJZBJBMO.js";var d=i(f(),1),p=i(s(),1),c=new Set;function B(e){return c.add(e),()=>void c.delete(e)}function S(){let{store:e,principal:o}=l();return(0,d.useMemo)(()=>n=>{let t=n.on===void 0?void 0:e.graph.getNode(n.on);if(!t)return null;let u=[...c].filter(r=>r.store===e&&r.kind===t.kind);return(n.element?u.find(r=>r.root()?.contains(n.element)??!1):u[0])?.section(t.id,o)??null},[e,o])}function v({children:e}){let o=S(),n=(0,d.useMemo)(()=>[o],[o]);return(0,p.jsx)(a,{sections:n,children:e})}export{B as a,S as b,v as c};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a}from"./chunk.QHU3KUZZ.js";import"./chunk.YMRVKG6W.js";import"./chunk.P3CUCDHO.js";import"./chunk.OVSZXILB.js";import"./chunk.BDBLGGFJ.js";import"./chunk.IZ2ZTNEV.js";import"./chunk.CJUIJ6TL.js";import"./chunk.UITZ74YJ.js";import{b as n}from"./chunk.E4SYOBGB.js";import"./chunk.QLTHHWBA.js";import"./chunk.GZHZLJBF.js";import"./chunk.KHZA5F7A.js";import"./chunk.OJGHDWI6.js";import"./chunk.KSVJHSRH.js";import"./chunk.NSGQXCH6.js";import"./chunk.SZG6HJWH.js";import"./chunk.2FOIJ5ID.js";import"./chunk.6IUEGPCZ.js";import"./chunk.CUJX3IVA.js";import{T as i}from"./chunk.VNJKGSGZ.js";import"./chunk.SDO3U72B.js";import"./chunk.X3MMJ3QC.js";import"./chunk.FQLNBIQ5.js";import{b as o}from"./chunk.AJZBJBMO.js";var e=o(i(),1);function m({entries:d,style:l,headingStyle:p,className:r}){return(0,e.jsxs)("section",{...r?{className:r}:{},"data-testid":"record-ai","aria-label":"What AI did here",style:{display:"grid",gap:10,...l},children:[(0,e.jsx)("h2",{style:p??{margin:0,fontSize:"1rem"},children:"What AI did here"}),(0,e.jsx)("ol",{style:{margin:0,padding:0,listStyle:"none",display:"grid",gap:8,fontSize:"0.875rem"},children:d.slice(0,8).map(t=>(0,e.jsx)(n,{entry:t,undo:s=>(0,e.jsx)(a,{batch:s})},t.id))})]})}export{m as RecordInteractions};
|