graview 0.1.48 → 0.1.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/preview/{chunk.TKMQROXF.js → chunk.2CO2EJQA.js} +1 -1
- package/dist/preview/{chunk.D5ETRTAF.js → chunk.2N6RQ427.js} +1 -1
- package/dist/preview/{chunk.FOP5RBGF.js → chunk.2OLZ6BYI.js} +1 -1
- package/dist/preview/{chunk.X7N3JUO4.js → chunk.2OXXGN7C.js} +2 -2
- package/dist/preview/{chunk.QII2C5OV.js → chunk.2QKSWK4U.js} +1 -1
- package/dist/preview/chunk.35FUGOSG.js +1 -0
- package/dist/preview/{chunk.X7JMJSLU.js → chunk.3EW6L5DY.js} +1 -1
- package/dist/preview/chunk.3NEALGMI.js +1 -0
- package/dist/preview/{chunk.2UIUMG23.js → chunk.423SZS7C.js} +3 -3
- package/dist/preview/{chunk.HKA5T7DL.js → chunk.4D26JY5U.js} +1 -1
- package/dist/preview/{chunk.5A4AOFOA.js → chunk.4HUB3N7I.js} +1 -1
- package/dist/preview/chunk.4K7I7WYF.js +1 -0
- package/dist/preview/{chunk.OZGETOTK.js → chunk.4OTESF7W.js} +1 -1
- package/dist/preview/{chunk.NWT5FPEK.js → chunk.4Q5KWYVY.js} +18 -18
- package/dist/preview/{chunk.LNON6P7K.js → chunk.4QINLTDZ.js} +1 -1
- package/dist/preview/{chunk.UJRBOUGC.js → chunk.4SEY7VWZ.js} +1 -1
- package/dist/preview/{chunk.37CJSWLL.js → chunk.4XKACWLT.js} +1 -1
- package/dist/preview/chunk.52QB4YW2.js +1 -0
- package/dist/preview/{chunk.HG4DDNPG.js → chunk.54PZWX23.js} +1 -1
- package/dist/preview/{chunk.FPYL6REZ.js → chunk.5YFO6D7J.js} +1 -1
- package/dist/preview/chunk.6EGHJCEM.js +1 -0
- package/dist/preview/{chunk.XTMOFRHL.js → chunk.6EHE26ZS.js} +1 -1
- package/dist/preview/{chunk.3BAHAK6W.js → chunk.6RLFO5GA.js} +1 -1
- package/dist/preview/chunk.6WRA3Y7D.js +1 -0
- package/dist/preview/{chunk.BDHKWVNX.js → chunk.7C4IR4S7.js} +1 -1
- package/dist/preview/{chunk.MZLWLIKR.js → chunk.7JLYEZW4.js} +1 -1
- package/dist/preview/{chunk.GACKGEUY.js → chunk.7JW5SHRR.js} +1 -1
- package/dist/preview/{chunk.I7QIHN66.js → chunk.7MJGZHTS.js} +1 -1
- package/dist/preview/{chunk.KW65F4WA.js → chunk.7MWLDDFL.js} +1 -1
- package/dist/preview/{chunk.IRHSTUZM.js → chunk.7SGQ3HFG.js} +1 -1
- package/dist/preview/{chunk.N4M54YK6.js → chunk.A7HMVWMG.js} +1 -1
- package/dist/preview/{chunk.UGJSMNVO.js → chunk.AGVFW6WC.js} +1 -1
- package/dist/preview/{chunk.NQZ73QV7.js → chunk.AOEXSQDG.js} +1 -1
- package/dist/preview/{chunk.GUMJEVVP.js → chunk.AP22NNIM.js} +1 -1
- package/dist/preview/{chunk.PPRSGM64.js → chunk.AVDXG57A.js} +1 -1
- package/dist/preview/{chunk.EMQ5POGB.js → chunk.B2BLZDBD.js} +1 -1
- package/dist/preview/chunk.B445DZOY.js +1 -0
- package/dist/preview/{chunk.GNBN3BK7.js → chunk.BH365UJ5.js} +1 -1
- package/dist/preview/{chunk.PMJUGHW4.js → chunk.BJR6E2CT.js} +1 -1
- package/dist/preview/{chunk.GT3F6FQ6.js → chunk.BNU3KXKL.js} +1 -1
- package/dist/preview/{chunk.GH2SWMCW.js → chunk.BTORFVKO.js} +1 -1
- package/dist/preview/{chunk.76W2FXEC.js → chunk.BU6V76EF.js} +1 -1
- package/dist/preview/{chunk.QQTRAY5W.js → chunk.BVXOLZQ3.js} +1 -1
- package/dist/preview/{chunk.VQAQQW4Q.js → chunk.C75I24Z5.js} +1 -1
- package/dist/preview/{chunk.J6ANRF6E.js → chunk.CXIIRL67.js} +1 -1
- package/dist/preview/{chunk.SKJJBLXF.js → chunk.D25QV6DK.js} +1 -1
- package/dist/preview/{chunk.TMDI7KRS.js → chunk.D4IKO5YA.js} +3 -3
- package/dist/preview/{chunk.MAFFUPCR.js → chunk.D4K23FUB.js} +1 -1
- package/dist/preview/{chunk.ZH4NWRWB.js → chunk.D53IGR45.js} +1 -1
- package/dist/preview/chunk.D66RI4QS.js +1 -0
- package/dist/preview/{chunk.KVEDIBXS.js → chunk.DFGXNFFE.js} +1 -1
- package/dist/preview/{chunk.QPICKSSM.js → chunk.DSNHE4MZ.js} +1 -1
- package/dist/preview/{chunk.NFDLCUCC.js → chunk.DTRNDSMS.js} +1 -1
- package/dist/preview/{chunk.4KX53HCV.js → chunk.DV4GSLGX.js} +2 -2
- package/dist/preview/{chunk.DPHTUTOS.js → chunk.EJAVIZ7Y.js} +1 -1
- package/dist/preview/{chunk.YDL5BSTG.js → chunk.EM5CGFNB.js} +1 -1
- package/dist/preview/chunk.EPTUOPPC.js +1 -0
- package/dist/preview/{chunk.44G5A53D.js → chunk.ERWBI2NK.js} +1 -1
- package/dist/preview/chunk.EYSQPXVE.js +2 -0
- package/dist/preview/{chunk.DAUC2DFY.js → chunk.FIS27KW4.js} +1 -1
- package/dist/preview/chunk.FNK2ZZ5E.js +1 -0
- package/dist/preview/{chunk.RQBEQYB2.js → chunk.FOYVTN5B.js} +1 -1
- package/dist/preview/{chunk.I5TOMBIF.js → chunk.FUMQLGNM.js} +1 -1
- package/dist/preview/chunk.G25JEYCC.js +1 -0
- package/dist/preview/{chunk.2VTMTW7K.js → chunk.G3Q5CYEM.js} +1 -1
- package/dist/preview/{chunk.7LL7OSBY.js → chunk.GEY4MA4D.js} +2 -2
- package/dist/preview/{chunk.KVJFY7N5.js → chunk.GRLPNTUW.js} +1 -1
- package/dist/preview/{chunk.6TKILWRM.js → chunk.H42WBU5C.js} +1 -1
- package/dist/preview/{chunk.TBRJOKIK.js → chunk.IQHVVQEA.js} +1 -1
- package/dist/preview/{chunk.DWPU56S5.js → chunk.IVHPJUFM.js} +1 -1
- package/dist/preview/{chunk.QO7MDWID.js → chunk.IWEPDTVG.js} +1 -1
- package/dist/preview/{chunk.PVEPU6EA.js → chunk.IYLOA3MV.js} +1 -1
- package/dist/preview/chunk.JBG5UQLM.js +1 -0
- package/dist/preview/{chunk.DOBQ4LO4.js → chunk.KDTNKKOY.js} +1 -1
- package/dist/preview/chunk.KJBXNMIU.js +21 -0
- package/dist/preview/chunk.KLAEKRCA.js +1 -0
- package/dist/preview/{chunk.Z4UM4CMT.js → chunk.KQSD5MLY.js} +1 -1
- package/dist/preview/{chunk.ETR6AV47.js → chunk.KVEDMKUN.js} +1 -1
- package/dist/preview/{chunk.5Y3Q7ONN.js → chunk.LD6S2FL5.js} +1 -1
- package/dist/preview/{chunk.DFK2NA6L.js → chunk.LUL6PFIQ.js} +1 -1
- package/dist/preview/chunk.MCFLCC42.js +12 -0
- package/dist/preview/{chunk.2GLJH253.js → chunk.MJ4XTNTL.js} +1 -1
- package/dist/preview/{chunk.CJ23XTSW.js → chunk.MU5WUTVF.js} +1 -1
- package/dist/preview/{chunk.P6FQAILU.js → chunk.MUHFZXPS.js} +1 -1
- package/dist/preview/{chunk.NLBIX7LH.js → chunk.N2S3TMBC.js} +1 -1
- package/dist/preview/{chunk.DUWYF7BO.js → chunk.N2S45SSL.js} +1 -1
- package/dist/preview/{chunk.PCEYZQAW.js → chunk.NBJ4C33P.js} +1 -1
- package/dist/preview/{chunk.E5GM2SMO.js → chunk.NQ7SRWXA.js} +1 -1
- package/dist/preview/chunk.NQDGUIUQ.js +1 -0
- package/dist/preview/{chunk.QQCDCRR2.js → chunk.NUUT37ER.js} +1 -1
- package/dist/preview/{chunk.LXCJVZF3.js → chunk.O3ONLQUF.js} +1 -1
- package/dist/preview/{chunk.QGE6YKSU.js → chunk.OFBESPHJ.js} +1 -1
- package/dist/preview/chunk.OKHEZJBX.js +1 -0
- package/dist/preview/{chunk.LPD74WBI.js → chunk.OL5D7YTW.js} +1 -1
- package/dist/preview/{chunk.ENPCLMP2.js → chunk.ON35FJ5H.js} +1 -1
- package/dist/preview/{chunk.GVNYPFIM.js → chunk.OS75HEZP.js} +1 -1
- package/dist/preview/{chunk.6VAFNCR4.js → chunk.OTF3NNTI.js} +1 -1
- package/dist/preview/{chunk.OVO6L5IP.js → chunk.P2AC6JRL.js} +1 -1
- package/dist/preview/chunk.PBCT33FF.js +1 -0
- package/dist/preview/{chunk.PTXLOFQW.js → chunk.PCVU3LY3.js} +1 -1
- package/dist/preview/chunk.PFEKS3KO.js +5 -0
- package/dist/preview/chunk.PFR3FQBR.js +1 -0
- package/dist/preview/{chunk.NTLHEHOM.js → chunk.Q4KNNJFL.js} +1 -1
- package/dist/preview/{chunk.PQVUQVRL.js → chunk.QBHVBL42.js} +1 -1
- package/dist/preview/{chunk.G7WDMUDV.js → chunk.QPNFWP4Z.js} +1 -1
- package/dist/preview/{chunk.OFRGDJYX.js → chunk.QQE7N7LB.js} +1 -1
- package/dist/preview/{chunk.MVRG75ZD.js → chunk.QQRLUBWQ.js} +1 -1
- package/dist/preview/{chunk.2QNGGF55.js → chunk.QWX2N2VD.js} +2 -2
- package/dist/preview/chunk.R5IRHCLZ.js +1 -0
- package/dist/preview/{chunk.YVOABA2U.js → chunk.REANMQ6K.js} +1 -1
- package/dist/preview/{chunk.MVSV7T6E.js → chunk.RI624PFK.js} +1 -1
- package/dist/preview/{chunk.W72TTRLX.js → chunk.RMWLV3PR.js} +6 -6
- package/dist/preview/{chunk.DHAK6PPX.js → chunk.RSR2M7ZO.js} +2 -2
- package/dist/preview/{chunk.EXEZBZGW.js → chunk.SGJSJGSR.js} +1 -1
- package/dist/preview/{chunk.NR5ODXMO.js → chunk.SIVMZNHZ.js} +1 -1
- package/dist/preview/{chunk.4VW6THJF.js → chunk.SPZVEQC5.js} +1 -1
- package/dist/preview/chunk.SR2345SW.js +1 -0
- package/dist/preview/chunk.ST4JHXPS.js +1 -0
- package/dist/preview/{chunk.KTFUVR4V.js → chunk.TABIRLQS.js} +1 -1
- package/dist/preview/{chunk.SFAAM4KE.js → chunk.TBA4GF34.js} +1 -1
- package/dist/preview/{chunk.HDE2MGGU.js → chunk.THENABJU.js} +1 -1
- package/dist/preview/{chunk.KA44WNB4.js → chunk.TM6JVVGW.js} +1 -1
- package/dist/preview/{chunk.CH5ROV7N.js → chunk.TSHBXCMU.js} +1 -1
- package/dist/preview/{chunk.J2V76Z6G.js → chunk.UL43GFVC.js} +1 -1
- package/dist/preview/{chunk.5IPH2SCE.js → chunk.UTRIPGW6.js} +1 -1
- package/dist/preview/{chunk.Y4MQGEUS.js → chunk.VSWEKNKS.js} +2 -2
- package/dist/preview/chunk.VV3PNZPI.js +1 -0
- package/dist/preview/chunk.W6CGAPNQ.js +1 -0
- package/dist/preview/{chunk.V2GSBYDK.js → chunk.WQN7EFW3.js} +2 -2
- package/dist/preview/{chunk.ODRL5OWR.js → chunk.X4MTZKL3.js} +1 -1
- package/dist/preview/{chunk.3UD7GG5B.js → chunk.XJ7YGW6Y.js} +1 -1
- package/dist/preview/{chunk.5IM645XQ.js → chunk.XMOIMPUC.js} +1 -1
- package/dist/preview/{chunk.7VT3TRHR.js → chunk.XN7PIWVC.js} +1 -1
- package/dist/preview/{chunk.3RP3N2JP.js → chunk.XXZFWZ4C.js} +1 -1
- package/dist/preview/{chunk.V4BCB7N2.js → chunk.YECMUK4X.js} +1 -1
- package/dist/preview/{chunk.SA34Y3X5.js → chunk.YSFNPYCD.js} +1 -1
- package/dist/preview/{chunk.RLXKDXPB.js → chunk.YXOJKGRC.js} +1 -1
- package/dist/preview/{chunk.EZJNUFNQ.js → chunk.ZBL47SFK.js} +1 -1
- package/dist/preview/{chunk.HC5N3CT2.js → chunk.ZILULTJJ.js} +1 -1
- package/dist/preview/index.html +49 -49
- package/dist/preview/page.js +2 -2
- package/package.json +6 -6
- package/dist/preview/chunk.4GQA3AJU.js +0 -1
- package/dist/preview/chunk.4TJOS4C7.js +0 -5
- package/dist/preview/chunk.664PBQAQ.js +0 -1
- package/dist/preview/chunk.72OZLWJL.js +0 -1
- package/dist/preview/chunk.72W6S746.js +0 -1
- package/dist/preview/chunk.7FRPNQU4.js +0 -1
- package/dist/preview/chunk.7QZYFLBS.js +0 -1
- package/dist/preview/chunk.B2IIEVBF.js +0 -21
- package/dist/preview/chunk.DQ7M3LFV.js +0 -1
- package/dist/preview/chunk.FQYOTK34.js +0 -1
- package/dist/preview/chunk.GTPC6JOW.js +0 -2
- package/dist/preview/chunk.ILZYRJDS.js +0 -1
- package/dist/preview/chunk.LGSFGNWE.js +0 -1
- package/dist/preview/chunk.MTXEURFE.js +0 -1
- package/dist/preview/chunk.NX7IIZLO.js +0 -1
- package/dist/preview/chunk.O45VO36H.js +0 -1
- package/dist/preview/chunk.OAIWGWGU.js +0 -3
- package/dist/preview/chunk.SAHNXAV3.js +0 -1
- package/dist/preview/chunk.SUPWMV2F.js +0 -1
- package/dist/preview/chunk.TPG6IY4M.js +0 -1
- package/dist/preview/chunk.V3N34DSU.js +0 -1
- package/dist/preview/chunk.X5G7FOPY.js +0 -12
- package/dist/preview/chunk.YEVA72L2.js +0 -1
- package/dist/preview/chunk.YLWON7X3.js +0 -1
- package/dist/preview/chunk.YUH43J2K.js +0 -1
- package/dist/preview/chunk.ZXZNAG35.js +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* or `graview check` from inside a project that has it as a devDependency.
|
|
7
7
|
* It owns no logic. Every subcommand lives in the package whose concern it
|
|
8
8
|
* is — the generator, the checker and `doctor` in core, `serve`,
|
|
9
|
-
* `sync-seed`, `preview` and `shots` in ship, `mcp` and `
|
|
9
|
+
* `sync-seed`, `preview` and `shots` in ship, `mcp`, `apply` and `dream` in tools,
|
|
10
10
|
* `skills` in skills, `view` in guest — and this dispatches to it, so a
|
|
11
11
|
* project made with `graview create` and one made by calling core's own
|
|
12
12
|
* CLI are the same project. What it carries is the page `preview` serves,
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import { main as core, USAGE as CORE_USAGE } from "@graview/core/cli";
|
|
|
8
8
|
* or `graview check` from inside a project that has it as a devDependency.
|
|
9
9
|
* It owns no logic. Every subcommand lives in the package whose concern it
|
|
10
10
|
* is — the generator, the checker and `doctor` in core, `serve`,
|
|
11
|
-
* `sync-seed`, `preview` and `shots` in ship, `mcp` and `
|
|
11
|
+
* `sync-seed`, `preview` and `shots` in ship, `mcp`, `apply` and `dream` in tools,
|
|
12
12
|
* `skills` in skills, `view` in guest — and this dispatches to it, so a
|
|
13
13
|
* project made with `graview create` and one made by calling core's own
|
|
14
14
|
* CLI are the same project. What it carries is the page `preview` serves,
|
|
@@ -37,9 +37,9 @@ export async function main(given) {
|
|
|
37
37
|
const { syncSeed } = await import("@graview/ship/cli");
|
|
38
38
|
return syncSeed(rest);
|
|
39
39
|
}
|
|
40
|
-
if (command === "mcp" || command === "apply") {
|
|
41
|
-
const { mcp, apply } = await import("@graview/tools/cli");
|
|
42
|
-
return command === "mcp" ? mcp(rest) : apply(rest);
|
|
40
|
+
if (command === "mcp" || command === "apply" || command === "dream") {
|
|
41
|
+
const { mcp, apply, dream } = await import("@graview/tools/cli");
|
|
42
|
+
return command === "mcp" ? mcp(rest) : command === "apply" ? apply(rest) : dream(rest);
|
|
43
43
|
}
|
|
44
44
|
if (command === "skills") {
|
|
45
45
|
const { skills } = await import("@graview/skills/cli");
|
|
@@ -58,9 +58,9 @@ export async function main(given) {
|
|
|
58
58
|
/** Core's usage, then the subcommands the other packages contribute. */
|
|
59
59
|
async function usage() {
|
|
60
60
|
const { SERVE_USAGE } = await import("@graview/ship/cli");
|
|
61
|
-
const { MCP_USAGE } = await import("@graview/tools/cli");
|
|
61
|
+
const { MCP_USAGE, DREAM_USAGE } = await import("@graview/tools/cli");
|
|
62
62
|
const { SKILLS_USAGE } = await import("@graview/skills/cli");
|
|
63
63
|
const { VIEW_USAGE } = await import("@graview/guest/cli");
|
|
64
|
-
return `${CORE_USAGE}\n${SERVE_USAGE}\n${MCP_USAGE}\n${SKILLS_USAGE}\n${VIEW_USAGE}`;
|
|
64
|
+
return `${CORE_USAGE}\n${SERVE_USAGE}\n${MCP_USAGE}\n${DREAM_USAGE}\n${SKILLS_USAGE}\n${VIEW_USAGE}`;
|
|
65
65
|
}
|
|
66
66
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEtE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,KAAwB;IACjD,iGAAiG;IACjG,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACxD,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAChC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACpD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACjD,gKAAgK;QAChK,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACnE,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACvD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEtE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,KAAwB;IACjD,iGAAiG;IACjG,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACxD,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAChC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACpD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACjD,gKAAgK;QAChK,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACnE,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACvD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACpE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACjE,OAAO,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC/E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,wEAAwE;AACxE,KAAK,UAAU,KAAK;IAClB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC1D,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACtE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC7D,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC1D,OAAO,GAAG,UAAU,KAAK,WAAW,KAAK,SAAS,KAAK,WAAW,KAAK,YAAY,KAAK,UAAU,EAAE,CAAC;AACvG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as r,b as m,d as k,e as y}from"./chunk.UGFDSE37.js";import"./chunk.
|
|
1
|
+
import{a as r,b as m,d as k,e as y}from"./chunk.UGFDSE37.js";import"./chunk.423SZS7C.js";import"./chunk.TM6JVVGW.js";import"./chunk.SDO3U72B.js";import"./chunk.PFEKS3KO.js";import"./chunk.2AZTW66C.js";import"./chunk.AJZBJBMO.js";var i="way-back",b='[data-testid="notices-toasts"]';function g(t){let o=document.activeElement;o!==null&&o!==document.body&&!o.closest(b)||(t??document).querySelector('[data-graview-app-bar] [data-testid="app-home"]')?.focus({preventScroll:!0})}function w(t,o,a,d,h){if(t.past)return a?.dismiss(i),()=>{};let c=h?.closest("[data-graview-embed]"),s,f=e=>{if(e!==void 0&&r(t,o)?.batch!==e)return!1;try{let n=k(t,o);return n&&a?.notify({kind:"toast",id:i,sentence:`Took back \u201C${n.intent}\u201D`}),n!==void 0}catch(n){return a?.notify({kind:"toast",id:i,tone:"warn",sentence:n instanceof Error?n.message:String(n)}),!0}},u=()=>{let e=m(t,o,d);if(d=t.batches().length,e){let n=s=e.batch;a?.notify({kind:"toast",id:i,sentence:e.intent,timeout:1e4,action:{label:"Take back",keys:"Meta+Z Control+Z",onSelect:()=>(g(c),f(n))}})}else s&&r(t,o)?.batch!==s&&(s=void 0,a?.dismiss(i))},l=e=>{y(e)&&(!c||c.contains(e.target))&&f()&&e.preventDefault()};u();let p=t.subscribe(u);return document.addEventListener("keydown",l),(e=!1)=>{p(),document.removeEventListener("keydown",l),e&&s&&a?.dismiss(i)}}export{w as sceneWay};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./chunk.WVUJXDXZ.js";import{b as C}from"./chunk.
|
|
1
|
+
import"./chunk.WVUJXDXZ.js";import{b as C}from"./chunk.NQDGUIUQ.js";import"./chunk.DTRNDSMS.js";import"./chunk.3EW6L5DY.js";import"./chunk.AVDXG57A.js";import"./chunk.LD6S2FL5.js";import"./chunk.TABIRLQS.js";import"./chunk.EJAVIZ7Y.js";import{pa as $,ra as E,sa as b,ta as k}from"./chunk.PFEKS3KO.js";import"./chunk.2AZTW66C.js";import"./chunk.AJZBJBMO.js";function M(r,l,t){let p=r.getAttribute("data-record")??"",g=r.getAttribute("data-field")??"",e=Number(r.getAttribute("data-index")??"0"),c=[...l?.node?[l.node]:[],...l?.nodes??[]].find(a=>a.id===p);if(!p||!c)return{why:p?`names a record it was not shown ("${p.slice(0,80)}")`:"names no record (data-record)"};let s=g&&Object.hasOwn(c,g)?c[g]:void 0,o=(Array.isArray(s)?s:[s]).filter($),u=Number.isInteger(e)&&e>=0?o[e]:void 0,n=c.label?`"${c.label}"`:"a record";return g?u?(t==="video"?!b(u):!b(u)&&!E(u))?{why:`names "${u.name}" on ${n}, which is not ${t==="video"?"a video":"a picture or a video"}`}:{file:u,on:c}:{why:o.length===0?`names "${g}" on ${n}, which holds no file it was shown`:`names file ${r.getAttribute("data-index")} of "${g}" on ${n}, which holds ${o.length}`}:{why:`names no field of ${n} (data-field)`}}var A=r=>`${r.caption?.trim()||r.name}, ${k(r)}`;function T(r,l,t,p,g){let e=r.createElement("video");e.setAttribute("data-graview-video",""),e.setAttribute("controls",""),e.setAttribute("preload","metadata"),e.setAttribute("playsinline",""),e.setAttribute("aria-label",A(t));let c=t.poster?p(t.poster):void 0;c&&e.setAttribute("poster",c),t.width&&t.height?(e.setAttribute("width",String(t.width)),e.setAttribute("height",String(t.height)),e.style.aspectRatio=`${t.width} / ${t.height}`):e.style.aspectRatio="16 / 9",e.style.cssText+=";display:block;width:100%;height:auto;max-height:80vh;background:#000;border-radius:var(--graview-radius, 8px)";let s=t.captions?p(t.captions):void 0;if(s){let o=r.createElement("track");o.setAttribute("kind","captions"),o.setAttribute("src",s),o.setAttribute("srclang","en"),o.setAttribute("label","Captions"),o.setAttribute("default",""),e.appendChild(o)}return t.duration===void 0&&e.addEventListener("loadedmetadata",()=>Number.isFinite(e.duration)&&e.duration>0&&e.setAttribute("aria-label",A({...t,duration:e.duration}))),e.setAttribute("src",g),l.appendChild(e),e}function N(r,l){let t=r.document,p=new Set,g=n=>{p.has(n)||(p.add(n),l.onProblem?.(n))},e=n=>{let a=l.file?l.file(n):n;if(a!==void 0)try{let h=new r.URL(a,t.baseURI);return h.origin===r.location.origin&&/^https?:$/.test(h.protocol)?a:void 0}catch{return}},c=new WeakMap,s,o=n=>{if(typeof n.close=="function")return n.close();n.removeAttribute("open"),n.dispatchEvent(new r.Event("close"))},u=(n,a)=>g(`The ${n} in the view ${l.view} was not drawn: it ${a}.`);return{refresh(n){let a=l.shown();for(let h of Array.from(n.querySelectorAll("graview-video"))){let d=h.shadowRoot??h.attachShadow({mode:"open"});if(!l.pictures){c.delete(h),d.replaceChildren(),u("video",`asks for no pictures: a view places a record's video where its manifest says "pictures": true`);continue}let f=M(h,a,"video"),i="file"in f?JSON.stringify(f.file):"";if(c.get(h)===i&&d.childNodes.length>0)continue;if(c.set(h,i),d.replaceChildren(),"why"in f){u("video",f.why);continue}let m=e(f.file.href);if(!m){u("video",`names "${f.file.name}", which this host does not say it serves on this page`);continue}let w=t.createElement("style");w.textContent=":host { display: block; min-width: 0; }",d.appendChild(w),T(t,d,f.file,e,m)}},open(n){if(!l.pictures)return u("full-screen viewer",`asks for no pictures: a view opens a record's picture or video full screen where its manifest says "pictures": true`),!1;let a=M(n,l.shown(),"any");if("why"in a)return u("full-screen viewer",a.why),!1;let h=e(a.file.href);if(!h)return u("full-screen viewer",`names "${a.file.name}", which this host does not say it serves on this page`),!1;s&&o(s);let d=a.file,f=d.caption?.trim()||d.name,i=t.createElement("dialog");i.setAttribute("data-graview-lightbox",""),i.setAttribute("aria-label",b(d)?A(d):f),i.style.cssText="padding:0;border:0;border-radius:var(--graview-radius, 8px);max-width:min(96vw, 1600px);max-height:94vh;background:var(--graview-panel, Canvas);color:var(--graview-ink, CanvasText)";let m=t.createElement("figure");if(m.style.cssText="margin:0;display:grid;gap:8px;padding:10px",b(d))T(t,m,d,e,h);else{let v=t.createElement("img");v.setAttribute("src",h),v.setAttribute("alt",f),v.style.cssText="max-width:100%;max-height:80vh;object-fit:contain;display:block;margin:0 auto",m.appendChild(v)}let w=t.createElement("figcaption");w.style.cssText="display:flex;gap:12px;align-items:center;justify-content:space-between";let x=t.createElement("span");x.textContent=b(d)&&d.duration!==void 0?`${f} \xB7 ${C(d.duration)}`:f;let y=t.createElement("button");return y.type="button",y.textContent="Close",y.addEventListener("click",()=>o(i)),w.append(x,y),m.appendChild(w),i.appendChild(m),i.addEventListener("click",v=>v.target===i&&o(i)),i.addEventListener("close",()=>{i.remove(),s===i&&(s=void 0),n.focus?.()}),t.body.appendChild(i),s=i,typeof i.showModal=="function"?i.showModal():i.setAttribute("open",""),y.focus(),!0},dispose(){s&&o(s),s?.remove(),s=void 0}}}export{N as createGuestMedia,M as namedFile};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{G as h}from"./chunk.
|
|
1
|
+
import{G as h}from"./chunk.TM6JVVGW.js";import{_c as u,lc as a,xc as m}from"./chunk.PFEKS3KO.js";import{b as l}from"./chunk.AJZBJBMO.js";function f(e){let t=[e?.typography?.body,e?.typography?.display,e?.typography?.mono],o=[];for(let i of t){let n=i?.split(",")[0]?.trim().replace(/^["']|["']$/g,"");!n||m(n)||n.toLowerCase()!==a.toLowerCase()&&(o.includes(n)||o.push(n))}return o}function p(e){let t=f(e);return t.length===0?null:`https://fonts.googleapis.com/css2?${t.map(i=>`family=${encodeURIComponent(i).replace(/%20/g,"+")}:wght@400;500;600;700`).join("&")}&display=swap`}var r=l(h(),1);function k(e,t){return new u({schema:e.schema,mutations:e.mutations??[],invariants:e.invariants??[],...t?{snapshot:t}:{},...e.policy?{policy:e.policy}:{},...e.intelligence?{intelligence:e.intelligence}:{},...e.brand?.timeZone?{timeZone:e.brand.timeZone}:{}})}function d(e){if(typeof document>"u")return e==="dark"?"dark":"light";let t=document.documentElement.dataset.theme;return t==="dark"||t==="light"?t:e==="dark"||e==="light"?e:typeof matchMedia=="function"&&matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function v(e,t){let[o,i]=(0,r.useState)(()=>d(t));return(0,r.useEffect)(()=>{if(!e||typeof document>"u")return;let n=()=>i(d(t));n();let s=new MutationObserver(n);s.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme"]});let c=typeof matchMedia=="function"?matchMedia("(prefers-color-scheme: dark)"):null;return c?.addEventListener?.("change",n),()=>{s.disconnect(),c?.removeEventListener?.("change",n)}},[e,t]),o}export{p as a,k as b,v as c};
|
|
@@ -1,6 +1,6 @@
|
|
|
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{Da as K,G as C,R as k}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{Da as K,G as C,R as k}from"./chunk.TM6JVVGW.js";import{a as H}from"./chunk.SDO3U72B.js";import{b}from"./chunk.AJZBJBMO.js";var n=b(C(),1),N=450,_=10,O=t=>t instanceof HTMLInputElement?t.dataset.graviewChooseBox??void 0:void 0,q={ArrowDown:1,ArrowRight:1,ArrowUp:-1,ArrowLeft:-1,Home:-1/0,End:1/0},S=t=>t instanceof Element?t.closest("[data-graview-choose]"):null,G=t=>t instanceof HTMLElement&&(t.isContentEditable||t instanceof HTMLInputElement&&t.type!=="checkbox"||t instanceof HTMLTextAreaElement||t instanceof HTMLSelectElement);function Y(t){let[i,d]=(0,n.useState)(()=>new Set),l=(0,n.useRef)(null),x=(0,n.useRef)(null),[E,P]=(0,n.useState)(null),R=E!==null&&t.includes(E)?E:t[0],L=(0,n.useMemo)(()=>t.filter(e=>i.has(e)),[t,i]),M=(0,n.useMemo)(()=>new Set(t),[t]);(0,n.useEffect)(()=>{[...i].some(e=>!M.has(e))&&d(e=>new Set([...e].filter(o=>M.has(o))))},[M,i]);let u=(0,n.useCallback)((e,o=!1)=>{let a=l.current;d(s=>{let r=new Set(s),f=a===null?-1:t.indexOf(a),y=t.indexOf(e);if(o&&f>=0&&y>=0){let T=s.has(a);for(let p of t.slice(Math.min(f,y),Math.max(f,y)+1))T?r.add(p):r.delete(p)}else r.has(e)?r.delete(e):r.add(e);return r}),l.current=e},[t]),v=(0,n.useCallback)(e=>d(new Set(e)),[]),A=(0,n.useCallback)(()=>{l.current=null,d(new Set)},[]),c=(0,n.useRef)(null),g=(0,n.useRef)(!1),m=L.length>0,h=()=>{c.current&&clearTimeout(c.current.timer),c.current=null};(0,n.useEffect)(()=>h,[]);let B={ref:x,onKeyDown:e=>{if(G(e.target))return;let o=O(e.target);if(e.key==="Tab"&&!e.shiftKey&&!e.metaKey&&!e.ctrlKey&&!e.altKey&&o!==void 0&&m){let s=document.querySelector('[data-testid="several-bar"]'),r=s?.querySelector("[data-mutation]:not([disabled])")??s?.querySelector("button:not([disabled])");if(r){e.preventDefault(),e.stopPropagation(),r.focus();return}}let a=q[e.key];if(o!==void 0&&a!==void 0&&!e.metaKey&&!e.ctrlKey&&!e.altKey){let s=t.indexOf(o),r=t[Math.max(0,Math.min(t.length-1,s+(Number.isFinite(a)?a:a>0?t.length:-t.length)))];if(e.preventDefault(),e.stopPropagation(),r===void 0||r===o)return;if(e.shiftKey){let f=l.current!==null&&t.includes(l.current)?l.current:o,[y,T]=[t.indexOf(f),t.indexOf(r)].sort((p,F)=>p-F);d(p=>new Set([...p,...t.slice(y,T+1)])),l.current=f}P(r),x.current?.querySelector(`[data-graview-choose-box="${CSS.escape(r)}"]`)?.focus();return}if((e.metaKey||e.ctrlKey)&&!e.altKey&&e.key.toLowerCase()==="a"){e.preventDefault(),e.stopPropagation(),v(t);return}if(e.key===" "&&!e.metaKey&&!e.ctrlKey){let s=S(e.target),r=e.target instanceof HTMLButtonElement||e.target instanceof HTMLInputElement&&e.target.type==="checkbox";if(!s||r)return;e.preventDefault(),u(s.dataset.graviewChoose,e.shiftKey)}},onFocus:e=>{let o=O(e.target);o!==void 0&&P(o)},onPointerDown:e=>{if(g.current=!1,e.pointerType==="mouse"||e.button>0)return;let o=S(e.target);if(!o||e.target instanceof HTMLInputElement&&e.target.type==="checkbox")return;let a=o.dataset.graviewChoose;h(),c.current={id:a,x:e.clientX,y:e.clientY,timer:setTimeout(()=>{c.current=null,g.current=!0,u(a)},N)}},onPointerMove:e=>{let o=c.current;o&&Math.hypot(e.clientX-o.x,e.clientY-o.y)>_&&h()},onPointerUp:h,onPointerCancel:h,onClickCapture:e=>{let o=S(e.target);if(!o||e.target instanceof HTMLInputElement&&e.target.type==="checkbox"&&e.target.hasAttribute("data-graview-choose-box"))return;if(g.current){g.current=!1,e.preventDefault(),e.stopPropagation();return}let s=o.dataset.graviewChoose;if(e.shiftKey&&(m||l.current!==null)){e.preventDefault(),e.stopPropagation(),u(s,!0);return}m&&matchMedia?.("(pointer: coarse)").matches&&(e.preventDefault(),e.stopPropagation(),u(s))},onContextMenu:e=>{(g.current||c.current)&&(e.preventDefault(),e.stopPropagation())},...m?{"data-graview-choosing":""}:{}},j=(0,n.useCallback)(e=>i.has(e),[i]);return{chosen:L,has:j,toggle:u,choose:v,clear:A,listProps:B,boxProps:(e,o)=>({type:"checkbox",className:"graview-choose-box","data-graview-choose-box":e,"aria-label":`Choose ${o}`,tabIndex:e===R?0:-1,checked:i.has(e),onChange:()=>{},onClick:a=>{a.stopPropagation(),u(e,a.shiftKey)}}),list:x}}var $=`
|
|
2
2
|
.graview-choose-box{width:24px;height:24px;margin:0;accent-color:var(--graview-accent);cursor:pointer;opacity:0}
|
|
3
3
|
[data-graview-choose]:hover .graview-choose-box,[data-graview-choose]:focus-within .graview-choose-box,.graview-choose-box:focus-visible,.graview-choose-box:checked,[data-graview-choosing] .graview-choose-box{opacity:1}
|
|
4
4
|
[data-graview-choose]{-webkit-touch-callout:none}
|
|
5
5
|
[data-graview-choosing] [data-graview-choose]{-webkit-user-select:none;user-select:none}
|
|
6
|
-
`;var D=b(C(),1),w=b(k(),1),I=K(H(()=>(__graviewPreload(import.meta.url,["./chunk.
|
|
6
|
+
`;var D=b(C(),1),w=b(k(),1),I=K(H(()=>(__graviewPreload(import.meta.url,["./chunk.FIS27KW4.js","./chunk.EYSQPXVE.js","./chunk.7C4IR4S7.js","./chunk.D53IGR45.js","./chunk.FNK2ZZ5E.js","./chunk.AOEXSQDG.js","./chunk.3NEALGMI.js","./chunk.UT6642FC.js","./chunk.35FUGOSG.js","./chunk.MB7LKKUD.js","./chunk.NQDGUIUQ.js","./chunk.DTRNDSMS.js","./chunk.3EW6L5DY.js","./chunk.AVDXG57A.js","./chunk.LD6S2FL5.js","./chunk.TABIRLQS.js","./chunk.A7HMVWMG.js","./chunk.GRLPNTUW.js","./chunk.EJAVIZ7Y.js","./chunk.423SZS7C.js","./chunk.TM6JVVGW.js","./chunk.SDO3U72B.js","./chunk.PFEKS3KO.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.7SGQ3HFG.js")))),U=I.part((t,i)=>(0,w.jsx)(t.SeveralBar,{...i}),{what:"The selection bar"});function Q(t){return t.chosen.length===0?null:(0,w.jsx)(D.Suspense,{fallback:null,children:(0,w.jsx)(U,{...t})})}var W=()=>I.prefetch();export{Y as a,$ as b,Q as c,W as d};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as m}from"./chunk.
|
|
1
|
+
import{c as m}from"./chunk.LD6S2FL5.js";import{da as c,ea as u,fa as f,ha as p,la as h,ma as l}from"./chunk.PFEKS3KO.js";function A(t,e){let n=t.schema.kinds,r="kind"in e?e.kind:void 0;if(r!==void 0&&!n.includes(r))return`There is no kind "${r}" in this app. Its kinds are: ${n.join(", ")}.`;if(e.on==="act"&&e.act!==void 0&&t.allMutations&&!t.allMutations().some(i=>i.name===e.act))return`There is no act "${e.act}" in this app.`;let o="record"in e?e.record:void 0;if(o!==void 0&&t.graph&&!t.graph.getNode(o))return`No record "${o}" is here to be told about.`;if(o!==void 0&&r!==void 0&&t.graph&&t.graph.getNode(o)?.kind!==r)return`\u201C${o}\u201D is not ${h(r)}.`;if(e.on==="changed"&&e.kind===void 0&&e.record===void 0)return"Say which kind, or which record, to be told about.";if(e.on==="reaches"){if(e.condition.trim()==="")return"Say what it should reach: a condition like done == true.";try{m(e.condition)}catch(i){return`The condition does not read: ${i instanceof Error?i.message:String(i)}.`}}}function a(t,e){let n=t.graph?.getNode(e);return n?c(t.schema.tryDefinition(n.kind),n):e}function g(t,e){let n=t.allMutations?.().find(r=>r.name===e);return n?u(n):f(e)}function M(t,e){let{when:n}=e,r=e.alsoMine?"anyone":"someone else",o=d=>l(t.schema.tryDefinition(d),d),i=d=>{let s=o(d);return`${/^[aeiou]/i.test(s)?"an":"a"} ${s}`};switch(n.on){case"act":{let d=n.act!==void 0?`\u201C${g(t,n.act)}\u201D`:"an act";return`When ${r} runs ${d}${n.record!==void 0?` on \u201C${a(t,n.record)}\u201D`:""}`}case"created":return`When ${r} adds ${i(n.kind)}`;case"changed":return n.record!==void 0?`When ${r} changes \u201C${a(t,n.record)}\u201D`:`When ${r} changes any of the ${p(t.schema,n.kind)}`;case"reaches":return`When ${n.record!==void 0?`\u201C${a(t,n.record)}\u201D`:i(n.kind)} reaches ${n.condition}${e.alsoMine?"":" (by someone else)"}`}}export{A as a,M as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{h,i as E}from"./chunk.GRLPNTUW.js";import{a as M,f as z}from"./chunk.EJAVIZ7Y.js";import{$a as L,C as y,Fa as O,Jb as N,Jc as K,Kc as k,Qa as P,Ra as D,Sb as T,Tb as Z,Ub as q,Vb as v,fa as S,mb as V,nb as I,ob as g,va as R,ya as j}from"./chunk.PFEKS3KO.js";var J=n=>n.safeParse?.(void 0).success??!1,C=n=>h(n).shape,A=n=>{let r=h(n);if(y(r)?.type!=="literal")return;let o=y(r)?.values;return o&&o.length===1&&typeof o[0]=="string"?o[0]:void 0};function F(n,r){let o=J(r),e=h(r),t=y(e)?.type,c=N(r);if(c)return{control:"node",name:n,optional:o,kinds:c};let p=O(r);if(p)return{control:"linked",name:n,optional:o,relation:p};if(D(r)){let d=P(n);return{control:"repeat",name:n,optional:o,...d?{of:d}:{}}}if(t==="boolean")return{control:"boolean",name:n,optional:o};let f=R(e);if(f)return{control:"file",name:n,optional:o,...f==="image"?{image:!0}:f==="video"?{video:!0}:{}};if(t==="object"){let d=e.shape??{};return{control:"group",name:n,optional:o,fields:Object.entries(d).map(([a,l])=>F(a,l))}}if(t==="union"){let d=y(e)?.options??[],a=d.map(s=>C(s));if(a.every(s=>s!==void 0)){let s=Object.keys(a[0]??{}).find(u=>a.every(m=>A(m?.[u])!==void 0));if(s)return{control:"variant",name:n,optional:o,tag:s,options:d.map((u,m)=>({value:A(a[m]?.[s])??"",fields:Object.entries(a[m]??{}).filter(([w])=>w!==s).map(([w,B])=>F(w,B))}))}}let l=d.map(s=>A(s));return l.every(s=>s!==void 0)?{control:"choice",name:n,optional:o,options:l}:{control:"opaque",name:n,optional:o}}if(t==="array"){let d=y(e)?.element;return d!==void 0?{control:"list",name:n,optional:o,item:F(n,d)}:{control:"opaque",name:n,optional:o}}let i=E(r);return i.type==="text"?{control:"text",name:n,optional:o,...i.long?{long:!0}:{},...j(e)?{app:!0}:{},...M(e)?{markdown:!0}:{},...i.holds?{holds:i.holds}:{}}:i.type==="number"&&i.duration?{control:"text",name:n,optional:o,holds:"duration"}:i.type==="date"?{control:"date",name:n,optional:o,...i.time?{time:!0}:{},...i.instant?{instant:!0}:{}}:i.type==="number"?{control:"number",name:n,optional:o,...i.min===void 0?{}:{min:i.min},...i.max===void 0?{}:{max:i.max},...i.step===void 0?{}:{step:i.step},...i.amount?{amount:i.amount}:{}}:i.type==="choice"?{control:"choice",name:n,optional:o,options:i.options}:{control:"opaque",name:n,optional:o}}function H(n){let r=n.shape;return r?Object.entries(r).map(([o,e])=>F(o,e)):[]}function W(n,r){let o={...r};for(let e of n){let t=r[e.name];t===void 0&&!e.optional&&(e.control==="list"||e.control==="boolean")&&(o[e.name]=e.control==="list"?[]:!1),e.control==="text"&&e.holds&&typeof t=="string"&&(o[e.name]=t.trim()===""?void 0:e.holds==="duration"?z(t)??t:t.trim()),e.control==="group"&&t!==void 0&&typeof t=="object"&&t!==null&&(o[e.name]=W(e.fields,t))}return o}function G(n,r){return Z(H(r.input),T(n,r))}var x="visitor";function gn(n,r,o,e){let t=K.keptFrom?.(n,r),c=new Set;if(!t)return c;let p=Object.keys(o.input.shape??{});for(let a of o.creates??[]){let l=t({id:"\0new",kind:a});for(let s of p)l?.(s)&&c.add(s)}let f=e===void 0?void 0:n.graph.getNode(e),i=f&&n.schema.tryDefinition(f.kind),d=f&&t(f);if(i&&d)for(let a of v(o,i))d(a)&&p.includes(a)&&c.add(a);return c}function _(n,r,o,e){let t=new Set,c=r?.sees??[];if(I(o)||!c.some(k))return t;let p=V(o),f=(l,s)=>{let u=c.filter(m=>m.kinds.includes(l)&&g(m,p));return u.some(k)?L.has(s)||u.some(m=>!k(m)||(m.fields===void 0||m.fields.includes(s))&&!m.hide?.includes(s)):!0},i=Object.keys(e.input.shape??{}),d=new Map,a=(l,s)=>d.set(l,d.get(l)===!0||s);for(let l of e.creates??[]){let s=Object.keys(n.tryDefinition(l)?.fields.shape??{});for(let u of i)s.includes(u)&&a(u,f(l,u))}for(let l of q(n,e)){let s=n.tryDefinition(l);if(s)for(let u of v(e,s))i.includes(u)&&a(u,f(l,u))}for(let[l,s]of d)s||t.add(l);return t}var $=(n,r)=>r.title??S(n);function Q(n,r,o){let e=n?.sees;return!e||e.length===0?!0:e.some(t=>t.kinds.includes(o)&&g(t,r)&&!t.own&&!t.via)}function b(n){switch(n.control){case"node":return[n];case"group":return n.fields.flatMap(b);case"variant":return n.options.flatMap(r=>r.fields.flatMap(b));case"list":return b(n.item);default:return[]}}function U(n,r,o,e){return e.has(o.name)?!1:b(o).every(t=>t.kinds.some(c=>c!=="*"&&Q(n,r,c)))}var X=n=>({kind:"human",id:"form:",roles:[n]});function vn(n,r,o=n.mutations??[]){let e=n.forms?.[r];if(!e)return;let t=o.find(a=>a.name===e.act);if(!t)return;let c=e.role??x,p=X(c),f=_(n.schema,n.policy,p,t),i=G(n.schema,t),d=e.fields?e.fields.flatMap(a=>i.find(l=>l.name===a)??[]):i.filter(a=>U(n.policy,p,a,f));return{name:r,title:$(r,e),...e.intro?{intro:e.intro}:{},...e.say?{say:e.say}:{},submit:e.submit??t.title??S(t.name),role:c,act:t,fields:d}}function An(n,r,o){let e=n.forms?.[r];if(!e)throw new Error(`There is no form called "${r}"${n.forms?`: the forms are ${Object.keys(n.forms).join(", ")}`:": the app declares none"}.`);return{kind:"human",id:o,name:`a visitor via the ${$(r,e)} form`,roles:[e.role??x]}}function xn(n){return{said:"Received \u2014 thank you.",...n.say?{next:n.say}:{}}}export{H as a,W as b,G as c,gn as d,_ as e,vn as f,An as g,xn as h};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as O,b,c as w,d as R,e as V}from"./chunk.5Y3Q7ONN.js";import{h as l,i as S}from"./chunk.KTFUVR4V.js";import{Ia as $,Ja as F}from"./chunk.4TJOS4C7.js";var E=["card","row","page"],j=["good","warn","bad","neutral","accent"],H=["money","percent","date","time","datetime","relative","count"],_=4,T=40,I=120,L=["number","money","percent"],B=["large"],U=["card","row"],M=1e3,fe=100;function C(e){let n=/^\s*(out|in)\(\s*['"]([A-Za-z][A-Za-z0-9_-]*)['"]\s*\)\s*$/.exec(e);return n?{edge:n[2],way:n[1]}:/^[A-Za-z][A-Za-z0-9_-]*$/.test(e)?{edge:e}:void 0}var v={title:[],headline:[],list:["sort","limit","group","empty","as"],text:["tone"],badge:["tone"],field:["as","currency","label"],image:["as","label"],progress:["label"],group:["direction"],when:["show"],divider:[],figure:["as","currency","label","emphasis"]},Z=Object.keys(v),G=`{"title": "{name}"}, {"headline": "{count(all('offer'))} offers"}, {"figure": expr, "as"?: "number"|"money"|"percent", "currency"?, "label"?, "emphasis"?: "large"}, {"list": expr, "sort"?, "limit"?, "group"?, "empty"?, "as"?: "card"|"row"}, {"text": "\u2026", "tone"?}, {"badge": "{status}", "tone"?}, {"field": "quote", "as"?, "currency"?, "label"?}, {"image": "photos", "as"?: "thumb"|"gallery"}, {"progress": {"value": expr, "max": expr}, "label"?}, {"group": [blocks], "direction"?: "row"|"column"}, {"when": expr, "show": [blocks]}, {"divider": true}, {"figure": true}`,X=e=>/^(image|video|file)$/.test(e?.of??e?.type??"");function ue(e){return Object.fromEntries(Object.entries(e.views??{}).filter(([,n])=>!Array.isArray(n)))}function ce(e){let n=e.views?.home;return Array.isArray(n)?n:void 0}var Y={field:()=>!1,relation:()=>!1,figure:!1},z=e=>e.kind??"the home",m=(e,n)=>e!==void 0&&Object.hasOwn(e,n),g=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function N(e,n,t){let o=O(e);for(let a of o.unknownFunctions)t.findings.push(l("unknown-function",n,`"${a}" is not a function the rule language knows`,"see docs/declaration-document.md#expression-language"));for(let a of o.names){if(t.kind===null){t.findings.push(l("view-name",n,`"${a}" names nothing here: these blocks are about no one record`,"reach records with all('<kind>'), like count(all('offer')) or first(all('party') where role == 'client').name"));continue}a==="id"||t.spec.field(a)||t.spec.relation(a)||t.findings.push(l("view-name",n,`${t.kind} has no field or relation called "${a}"`))}for(let a of o.edges)t.edges.has(a)||t.findings.push(l("view-edge",n,`"${a}" is not a relation any kind declares`));for(let a of o.sweeps)t.kinds.has(a)||t.findings.push(l("view-kind",n,`"${a}" is not a kind this document declares`))}function k(e,n,t){if(typeof e!="string"||e.length===0||e.length>2e3){t.findings.push(l("view-expression",n,`an expression is a line of the rule language, like "status == 'booked'"`));return}try{N(w(e),n,t)}catch(o){if(!(o instanceof b))throw o;t.findings.push(l("expression",n,`${o.sentence} (at character ${o.at+1})`))}}function A(e,n,t,o){let a=o==="text";if(typeof e!="string"||e.length===0||e.length>300){t.findings.push(l("view-template",n,'a template is words with {field} in braces, like "{name}" or "{quote|money}", at most 300 characters'));return}let d;try{d=V(e)}catch(r){if(r instanceof R||r instanceof b){t.findings.push(l("template",n,r.sentence));return}throw r}for(let r of d)if(r.expr){if(N(r.expr,n,t),a&&!r.format&&r.expr.t==="ident"&&(t.slot==="card"||t.slot==="row")&&t.spec.prose?.(r.expr.name)){let i=r.expr.name;t.findings.push(S("view-whole-text",n,`${t.kind} ${t.slot} shows ${i} whole; it will be clamped. Use {${i}|excerpt} or move it to the page.`,`write {${i}|excerpt}, or {${i}|excerpt: 80} for fewer characters`))}if(o==="headline"&&!r.format&&r.expr.t==="ident"&&t.spec.prose?.(r.expr.name)){let i=r.expr.name;t.findings.push(S("view-headline-long",n,`${z(t)}${t.slot?` ${t.slot}`:""} heads it with ${i}, a long text, drawn at a headline's size; a headline is a few words.`,`say it in a text block, {"text": "{${i}}"}, or head it with {${i}|excerpt: 60}`))}}}function q(e,n,t){if(typeof e=="string"){j.includes(e)||t.findings.push(l("view-tone",n,`"${e}" is not a tone`,`use one of ${j.join(", ")}, or {"expr": "if(status == 'booked', 'good', 'neutral')"}`));return}if(g(e)&&Object.keys(e).length===1&&"expr"in e){k(e.expr,`${n}.expr`,t);return}t.findings.push(l("view-tone",n,'a tone is a word or {"expr": \u2026}',`one of ${j.join(", ")}`))}function x(e,n,t,o){if(!Array.isArray(e)){o.findings.push(l("view-shape",n,"a view is a list of blocks"));return}if(t>_){o.findings.push(l("view-depth",n,`blocks nest at most ${_} deep`,"flatten a group or a condition"));return}e.forEach((a,d)=>J(a,`${n}.${d}`,t,o))}function J(e,n,t,o){if(t===1&&o.count++,o.all++,!g(e)){o.findings.push(l("view-block",n,"a block is an object naming what it shows",`one of ${G}`));return}let a=Object.keys(e),d=a.filter(s=>Z.includes(s)&&!(s==="group"&&a.includes("list")));if(d.length===0){o.findings.push(l("view-block",n,`${a.length>0?a.map(s=>`"${s}"`).join(", "):"an empty object"} is not a block Graview knows`,`one of ${G}`));return}if(d.length>1){o.findings.push(l("view-block",n,`a block is one thing, and this says ${d.map(s=>`"${s}"`).join(" and ")}`,"split it into two blocks"));return}let r=d[0];for(let s of a)s!==r&&s!="key"&&!v[r].includes(s)&&o.findings.push(l("unknown-key",`${n}.${s}`,`"${s}" is not part of a ${r} block`,v[r].length>0?`a ${r} block may also say ${v[r].map(f=>`"${f}"`).join(", ")}`:`a ${r} block says nothing else`));let i=e[r];switch(r){case"title":case"headline":case"text":case"badge":A(i,`${n}.${r}`,o,r==="text"||r==="headline"?r:void 0),"tone"in e&&q(e.tone,`${n}.tone`,o);return;case"image":case"field":{let s=r==="image";if(typeof i!="string"||!(s?o.spec.files?.(i):o.spec.field(i))){let u=typeof i=="string"&&o.spec.relation(i);o.findings.push(l(`view-${r}`,`${n}.${r}`,`${o.kind} has no ${s?"image, video or file ":""}field ${typeof i=="string"?`"${i}"`:"by that name"}`,u?`"${i}" is a relation; show it with {"text": "{${i}.name}"}`:void 0))}let f=s?["thumb","gallery"]:H;"as"in e&&!f.includes(e.as)&&o.findings.push(l("view-format",`${n}.as`,`"${String(e.as)}" is not a way to show ${s?"pictures":"a field"}`,`use one of ${f.join(", ")}`)),s||W(e,n,o,"field"),"label"in e&&ie(e.label,`${n}.label`,o);return}case"progress":{!g(i)||Object.keys(i).some(s=>s!=="value"&&s!=="max")||!("value"in i)||!("max"in i)?o.findings.push(l("view-progress",`${n}.progress`,'progress is {"value": expression, "max": expression}')):(k(i.value,`${n}.progress.value`,o),k(i.max,`${n}.progress.max`,o)),"label"in e&&A(e.label,`${n}.label`,o);return}case"group":"direction"in e&&e.direction!=="row"&&e.direction!=="column"&&o.findings.push(l("view-direction",`${n}.direction`,`a group runs "row" or "column", not "${String(e.direction)}"`)),x(i,`${n}.group`,t+1,o);return;case"when":k(i,`${n}.when`,o),"show"in e?x(e.show,`${n}.show`,t+1,o):o.findings.push(l("view-when",n,'a condition says what it shows: {"when": expr, "show": [blocks]}'));return;case"figure":if(typeof i=="string")return Q(e,n,o);for(let s of["as","currency","label","emphasis"])s in e&&o.findings.push(l("unknown-key",`${n}.${s}`,`"${s}" belongs to a figure that works a number out; {"figure": true} is the kind's picture`,`write {"figure": "count(all('offer'))", "as": "number"}`));i!==!0?o.findings.push(l("view-block",`${n}.figure`,`a figure is a number worked out, {"figure": "sum(all('offer'), net)", "as": "money"}, or the kind's picture, {"figure": true}`)):o.spec.figure||o.findings.push(l("view-figure",`${n}.figure`,`${z(o)} has no figure to show`,o.kind===null?`work a number out: {"figure": "count(all('offer'))"}`:'give the kind a "figure", or leave this block out'));return;case"list":return ne(e,n,o);case"divider":i!==!0&&o.findings.push(l("view-block",`${n}.${r}`,`write {"${r}": true}`));return}}function Q(e,n,t){k(e.figure,`${n}.figure`,t),"as"in e&&!L.includes(e.as)&&t.findings.push(l("view-format",`${n}.as`,`"${String(e.as)}" is not a way to say a figure`,`use one of ${L.join(", ")}`)),W(e,n,t,"figure"),"label"in e&&A(e.label,`${n}.label`,t),"emphasis"in e&&!B.includes(e.emphasis)&&t.findings.push(l("view-emphasis",`${n}.emphasis`,`"${String(e.emphasis)}" is not how loudly a figure is said`,`use ${B.map(o=>`"${o}"`).join(", ")}, or leave it out for the figure's own size`))}function W(e,n,t,o){"currency"in e&&(typeof e.currency!="string"||!/^[A-Z]{3}$/.test(e.currency)?t.findings.push(l("view-currency",`${n}.currency`,'a currency is its three-letter code, like "USD" or "EUR"')):e.as!=="money"&&t.findings.push(l("view-currency",`${n}.currency`,`a currency belongs on a ${o} shown as money`,'add "as": "money"')))}function ee(e,n){let t=[...n.kinds],o=(d,r)=>{let i=new Set;for(let s of d){let f=n.vocabulary.namesOf(s)?.targets?.(r);if(f==="*")return t;for(let u of f??[])i.add(u)}return i.size>0?[...i]:void 0},a=d=>{switch(d.t){case"ident":return n.kind!==null&&n.spec.relation(d.name)?o([n.kind],d.name):void 0;case"member":{let r=a(d.object);return r?o(r,d.name):void 0}case"where":return a(d.set);case"call":{let r=d.args[0],i=r?.t==="lit"&&typeof r.value=="string"?r.value:void 0;if(d.fn==="all")return i!==void 0&&n.kinds.has(i)?[i]:void 0;let s=d.args.length===2&&d.args[1]?.t==="lit"&&typeof d.args[1].value=="string"?d.args[1].value:void 0;if(d.fn==="out"&&s!==void 0){let f=a(r);return f?o(f,s):void 0}if(d.fn==="out")return i!==void 0&&n.kind!==null?o([n.kind],i):void 0;if(d.fn==="in"){let f=s??i,u=s!==void 0?a(r):n.kind!==null?[n.kind]:void 0,c=f!==void 0?n.vocabulary.sources(f).filter(p=>{let y=n.vocabulary.namesOf(p)?.targets?.(f);return!u||y==="*"||u.some(h=>y?.includes(h))}):[];return c.length>0?c:void 0}if((d.fn==="sort"||d.fn==="first")&&r)return a(r);if(d.fn==="either"){let f=d.args.map(a);return f.every(u=>u!==void 0)?[...new Set(f.flatMap(u=>u??[]))]:void 0}return}default:return}};return a(e)}function K(e,n,t,o){let a;try{a=w(e)}catch(r){if(!(r instanceof b))throw r;o.findings.push(l("expression",n,`${r.sentence} (at character ${r.at+1})`));return}let d=O(a);for(let r of d.unknownFunctions)o.findings.push(l("unknown-function",n,`"${r}" is not a function the rule language knows`,"see docs/declaration-document.md#expression-language"));for(let r of d.edges)o.edges.has(r)||o.findings.push(l("view-edge",n,`"${r}" is not a relation any kind declares`));if(t)for(let r of d.names)r==="id"||t.some(i=>o.vocabulary.namesOf(i)?.field(r)||o.vocabulary.namesOf(i)?.relation(r))||o.findings.push(l("view-name",n,`${t.join(" and ")} ${t.length===1?"has":"have"} no field or relation called "${r}"`))}function ne(e,n,t){let o=e.list;k(o,`${n}.list`,t);let a;if(typeof o=="string")try{a=ee(w(o),t)}catch{a=void 0}let d=i=>{if(!a)return[...t.kinds].map(f=>t.vocabulary.namesOf(f)?.choices?.(i)).find(f=>f!==void 0);let s=a.map(f=>t.vocabulary.namesOf(f)?.choices?.(i));return s.every(f=>f!==void 0)?[...new Set(s.flatMap(f=>f??[]))]:void 0},r=a?a.join(" and "):"any kind";if("sort"in e){let i=e.sort;if(typeof i=="string")K(i,`${n}.sort`,a,t);else if(g(i)&&typeof i.by=="string"&&Object.keys(i).every(s=>s==="by"||s==="direction")){let s=i.direction;s!==void 0&&s!=="asc"&&s!=="desc"&&s!=="choices"?t.findings.push(l("list-sort",`${n}.sort.direction`,`a list is sorted "asc", "desc" or "choices", not "${String(s)}"`,'"choices" puts a choice field in the order its choices are declared')):s==="choices"?d(i.by)===void 0&&t.findings.push(l("list-sort",`${n}.sort.by`,`"${i.by}" is not a choice field of ${r}, so it has no declared order`,'sort by a choice field, or say "asc" or "desc"')):K(i.by,`${n}.sort.by`,a,t)}else t.findings.push(l("list-sort",`${n}.sort`,'a sort is a key, like "net", or {"by": key, "direction": "asc" | "desc" | "choices"}'))}if("limit"in e){let i=e.limit;(typeof i!="number"||!Number.isInteger(i)||i<1||i>M)&&t.findings.push(l("list-limit",`${n}.limit`,`a limit is a whole number from 1 to ${M}`))}if("group"in e){let i=e.group,s=typeof i=="string"?i:g(i)&&typeof i.by=="string"?i.by:void 0;if(!(typeof i=="string"||g(i)&&Object.keys(i).every(u=>u==="by"||u==="headings"))||s===void 0)t.findings.push(l("list-group",`${n}.group`,'a group is a choice field, like "type", or {"by": "type", "headings": {"pain": "What hurts"}} \u2014 or a relation, like "inGenre", a heading per linked record'));else{let u=d(s),c=u===void 0?C(s):void 0,p=c!==void 0&&(c.way!==void 0?t.edges.has(c.edge):a?a.every(y=>t.vocabulary.namesOf(y)?.relation(c.edge)):t.edges.has(c.edge));if(u===void 0&&!p&&t.findings.push(l("list-group",`${n}.group`,`"${s}" is not a choice field or a relation of ${r}, so it has nothing to group by`,'group by a field whose type is enum, or by a relation of the kind listed, like "inGenre"')),g(i)&&"headings"in i){let y=i.headings;if(!g(y)||Object.values(y).some(h=>typeof h!="string"||h.length===0||h.length>80))t.findings.push(l("list-group",`${n}.group.headings`,'headings are words per choice, like {"pain": "What hurts"}, at most 80 characters each'));else if(u)for(let h of Object.keys(y))u.includes(h)||t.findings.push(l("list-group",`${n}.group.headings.${h}`,`"${h}" is not one of ${s}'s choices`,`use ${u.join(", ")}`))}}}"empty"in e&&(typeof e.empty!="string"||e.empty.length===0||e.empty.length>200)&&t.findings.push(l("list-empty",`${n}.empty`,"what an empty list says is a sentence, at most 200 characters")),"as"in e&&!U.includes(e.as)&&t.findings.push(l("list-as",`${n}.as`,`a list draws each record as its "card" or its "row", not "${String(e.as)}"`))}function ie(e,n,t){(typeof e!="string"||e.length===0||e.length>60)&&t.findings.push(l("view-label",n,"a label is a few words, at most 60 characters"))}function D(e,n,t,o,a,d,r){let i={kind:null,spec:Y,kinds:o,edges:a,vocabulary:t,findings:d,count:0,all:0};Array.isArray(e)&&e.length===0&&d.push(l("view-shape",n,`${r} has no blocks`,'give it one: {"headline": "\u2026"}')),x(e,n,1,i),P(i,n,r,"show less")}function P(e,n,t,o){e.count>T?e.findings.push(l("view-size",n,`${t} has ${e.count} blocks at its top; a view has at most ${T} there, a group or a condition counting as one`,`${o}, or gather some into a group`)):e.all>I&&e.findings.push(l("view-size",n,`${t} has ${e.all} blocks counting the ones inside its groups and conditions; a view has at most ${I} in all`,o))}function te(e,n,t,o,a){Array.isArray(e)&&e.forEach((d,r)=>{if(!g(d)||d.name!=="blocks"||!g(d.options)||!("blocks"in d.options))return;let i=[];D(d.options.blocks,`lenses.${r}.options.blocks`,n,t,o,i,`the lens "${String(d.title??r)}"`);for(let s of i)a.push({...s,severity:"warning"})})}function oe(e,n,t,o,a,d,r){let i=[];if(e===void 0)return i;if(!g(e))return i.push(l("view-shape",n,'views are an object of kinds, each with a "card", a "row" or a "page"')),i;for(let[s,f]of Object.entries(e)){if(s==="home"&&Array.isArray(f)){D(f,`${n}.home`,r,o,a,i,"the home");continue}let u=t(s);if(!u){i.push(l("view-kind",`${n}.${s}`,`"${s}" is not a kind this ${d} declares`));continue}if(!g(f)){i.push(l("view-shape",`${n}.${s}`,`a kind's views are {"card": [blocks], "row": [blocks], "page": [blocks]}`));continue}for(let c of Object.keys(f))E.includes(c)||i.push(l("view-slot",`${n}.${s}.${c}`,`"${c}" is not a place a view is drawn`,`use ${E.map(p=>`"${p}"`).join(", ")}`));for(let c of E){let p=f[c];if(p===void 0)continue;let y={kind:s,spec:u,kinds:o,edges:a,vocabulary:r,findings:i,count:0,all:0,slot:c};x(p,`${n}.${s}.${c}`,1,y),P(y,`${n}.${s}.${c}`,`this ${c}`,"show less, or move detail to the page")}}return i}function ge(e){let n=new Set(Object.keys(e.kinds)),t=new Set(Object.values(e.kinds).flatMap(r=>Object.keys($(r.edges)))),o=r=>{let i=m(e.kinds,r)?e.kinds[r]:void 0;return i?{field:s=>m(i.fields,s)||m(i.computed,s)||F(i.edges).has(s),relation:s=>m($(i.edges),s),figure:i.figure!==void 0,files:s=>m(i.fields,s)&&X(i.fields[s]),choices:s=>m(i.fields,s)&&i.fields[s].type==="enum"?i.fields[s].options:void 0,targets:s=>m($(i.edges),s)?i.edges[s].to:void 0,prose:s=>m(i.fields,s)&&i.fields[s].type==="text"}:void 0},a={namesOf:o,sources:r=>Object.keys(e.kinds).filter(i=>m(e.kinds[i].edges,r))},d=oe(e.views,"views",o,n,t,"document",a);return te(e.lenses,a,n,t,d),d}export{j as a,H as b,L as c,B as d,M as e,fe as f,C as g,ue as h,ce as i,ge as j};
|
|
1
|
+
import{a as O,b,c as w,d as R,e as V}from"./chunk.LD6S2FL5.js";import{h as l,i as S}from"./chunk.TABIRLQS.js";import{Ia as $,Ja as F}from"./chunk.PFEKS3KO.js";var E=["card","row","page"],j=["good","warn","bad","neutral","accent"],H=["money","percent","date","time","datetime","relative","count"],_=4,T=40,I=120,L=["number","money","percent"],B=["large"],U=["card","row"],M=1e3,fe=100;function C(e){let n=/^\s*(out|in)\(\s*['"]([A-Za-z][A-Za-z0-9_-]*)['"]\s*\)\s*$/.exec(e);return n?{edge:n[2],way:n[1]}:/^[A-Za-z][A-Za-z0-9_-]*$/.test(e)?{edge:e}:void 0}var v={title:[],headline:[],list:["sort","limit","group","empty","as"],text:["tone"],badge:["tone"],field:["as","currency","label"],image:["as","label"],progress:["label"],group:["direction"],when:["show"],divider:[],figure:["as","currency","label","emphasis"]},Z=Object.keys(v),G=`{"title": "{name}"}, {"headline": "{count(all('offer'))} offers"}, {"figure": expr, "as"?: "number"|"money"|"percent", "currency"?, "label"?, "emphasis"?: "large"}, {"list": expr, "sort"?, "limit"?, "group"?, "empty"?, "as"?: "card"|"row"}, {"text": "\u2026", "tone"?}, {"badge": "{status}", "tone"?}, {"field": "quote", "as"?, "currency"?, "label"?}, {"image": "photos", "as"?: "thumb"|"gallery"}, {"progress": {"value": expr, "max": expr}, "label"?}, {"group": [blocks], "direction"?: "row"|"column"}, {"when": expr, "show": [blocks]}, {"divider": true}, {"figure": true}`,X=e=>/^(image|video|file)$/.test(e?.of??e?.type??"");function ue(e){return Object.fromEntries(Object.entries(e.views??{}).filter(([,n])=>!Array.isArray(n)))}function ce(e){let n=e.views?.home;return Array.isArray(n)?n:void 0}var Y={field:()=>!1,relation:()=>!1,figure:!1},z=e=>e.kind??"the home",m=(e,n)=>e!==void 0&&Object.hasOwn(e,n),g=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function N(e,n,t){let o=O(e);for(let a of o.unknownFunctions)t.findings.push(l("unknown-function",n,`"${a}" is not a function the rule language knows`,"see docs/declaration-document.md#expression-language"));for(let a of o.names){if(t.kind===null){t.findings.push(l("view-name",n,`"${a}" names nothing here: these blocks are about no one record`,"reach records with all('<kind>'), like count(all('offer')) or first(all('party') where role == 'client').name"));continue}a==="id"||t.spec.field(a)||t.spec.relation(a)||t.findings.push(l("view-name",n,`${t.kind} has no field or relation called "${a}"`))}for(let a of o.edges)t.edges.has(a)||t.findings.push(l("view-edge",n,`"${a}" is not a relation any kind declares`));for(let a of o.sweeps)t.kinds.has(a)||t.findings.push(l("view-kind",n,`"${a}" is not a kind this document declares`))}function k(e,n,t){if(typeof e!="string"||e.length===0||e.length>2e3){t.findings.push(l("view-expression",n,`an expression is a line of the rule language, like "status == 'booked'"`));return}try{N(w(e),n,t)}catch(o){if(!(o instanceof b))throw o;t.findings.push(l("expression",n,`${o.sentence} (at character ${o.at+1})`))}}function A(e,n,t,o){let a=o==="text";if(typeof e!="string"||e.length===0||e.length>300){t.findings.push(l("view-template",n,'a template is words with {field} in braces, like "{name}" or "{quote|money}", at most 300 characters'));return}let d;try{d=V(e)}catch(r){if(r instanceof R||r instanceof b){t.findings.push(l("template",n,r.sentence));return}throw r}for(let r of d)if(r.expr){if(N(r.expr,n,t),a&&!r.format&&r.expr.t==="ident"&&(t.slot==="card"||t.slot==="row")&&t.spec.prose?.(r.expr.name)){let i=r.expr.name;t.findings.push(S("view-whole-text",n,`${t.kind} ${t.slot} shows ${i} whole; it will be clamped. Use {${i}|excerpt} or move it to the page.`,`write {${i}|excerpt}, or {${i}|excerpt: 80} for fewer characters`))}if(o==="headline"&&!r.format&&r.expr.t==="ident"&&t.spec.prose?.(r.expr.name)){let i=r.expr.name;t.findings.push(S("view-headline-long",n,`${z(t)}${t.slot?` ${t.slot}`:""} heads it with ${i}, a long text, drawn at a headline's size; a headline is a few words.`,`say it in a text block, {"text": "{${i}}"}, or head it with {${i}|excerpt: 60}`))}}}function q(e,n,t){if(typeof e=="string"){j.includes(e)||t.findings.push(l("view-tone",n,`"${e}" is not a tone`,`use one of ${j.join(", ")}, or {"expr": "if(status == 'booked', 'good', 'neutral')"}`));return}if(g(e)&&Object.keys(e).length===1&&"expr"in e){k(e.expr,`${n}.expr`,t);return}t.findings.push(l("view-tone",n,'a tone is a word or {"expr": \u2026}',`one of ${j.join(", ")}`))}function x(e,n,t,o){if(!Array.isArray(e)){o.findings.push(l("view-shape",n,"a view is a list of blocks"));return}if(t>_){o.findings.push(l("view-depth",n,`blocks nest at most ${_} deep`,"flatten a group or a condition"));return}e.forEach((a,d)=>J(a,`${n}.${d}`,t,o))}function J(e,n,t,o){if(t===1&&o.count++,o.all++,!g(e)){o.findings.push(l("view-block",n,"a block is an object naming what it shows",`one of ${G}`));return}let a=Object.keys(e),d=a.filter(s=>Z.includes(s)&&!(s==="group"&&a.includes("list")));if(d.length===0){o.findings.push(l("view-block",n,`${a.length>0?a.map(s=>`"${s}"`).join(", "):"an empty object"} is not a block Graview knows`,`one of ${G}`));return}if(d.length>1){o.findings.push(l("view-block",n,`a block is one thing, and this says ${d.map(s=>`"${s}"`).join(" and ")}`,"split it into two blocks"));return}let r=d[0];for(let s of a)s!==r&&s!="key"&&!v[r].includes(s)&&o.findings.push(l("unknown-key",`${n}.${s}`,`"${s}" is not part of a ${r} block`,v[r].length>0?`a ${r} block may also say ${v[r].map(f=>`"${f}"`).join(", ")}`:`a ${r} block says nothing else`));let i=e[r];switch(r){case"title":case"headline":case"text":case"badge":A(i,`${n}.${r}`,o,r==="text"||r==="headline"?r:void 0),"tone"in e&&q(e.tone,`${n}.tone`,o);return;case"image":case"field":{let s=r==="image";if(typeof i!="string"||!(s?o.spec.files?.(i):o.spec.field(i))){let u=typeof i=="string"&&o.spec.relation(i);o.findings.push(l(`view-${r}`,`${n}.${r}`,`${o.kind} has no ${s?"image, video or file ":""}field ${typeof i=="string"?`"${i}"`:"by that name"}`,u?`"${i}" is a relation; show it with {"text": "{${i}.name}"}`:void 0))}let f=s?["thumb","gallery"]:H;"as"in e&&!f.includes(e.as)&&o.findings.push(l("view-format",`${n}.as`,`"${String(e.as)}" is not a way to show ${s?"pictures":"a field"}`,`use one of ${f.join(", ")}`)),s||W(e,n,o,"field"),"label"in e&&ie(e.label,`${n}.label`,o);return}case"progress":{!g(i)||Object.keys(i).some(s=>s!=="value"&&s!=="max")||!("value"in i)||!("max"in i)?o.findings.push(l("view-progress",`${n}.progress`,'progress is {"value": expression, "max": expression}')):(k(i.value,`${n}.progress.value`,o),k(i.max,`${n}.progress.max`,o)),"label"in e&&A(e.label,`${n}.label`,o);return}case"group":"direction"in e&&e.direction!=="row"&&e.direction!=="column"&&o.findings.push(l("view-direction",`${n}.direction`,`a group runs "row" or "column", not "${String(e.direction)}"`)),x(i,`${n}.group`,t+1,o);return;case"when":k(i,`${n}.when`,o),"show"in e?x(e.show,`${n}.show`,t+1,o):o.findings.push(l("view-when",n,'a condition says what it shows: {"when": expr, "show": [blocks]}'));return;case"figure":if(typeof i=="string")return Q(e,n,o);for(let s of["as","currency","label","emphasis"])s in e&&o.findings.push(l("unknown-key",`${n}.${s}`,`"${s}" belongs to a figure that works a number out; {"figure": true} is the kind's picture`,`write {"figure": "count(all('offer'))", "as": "number"}`));i!==!0?o.findings.push(l("view-block",`${n}.figure`,`a figure is a number worked out, {"figure": "sum(all('offer'), net)", "as": "money"}, or the kind's picture, {"figure": true}`)):o.spec.figure||o.findings.push(l("view-figure",`${n}.figure`,`${z(o)} has no figure to show`,o.kind===null?`work a number out: {"figure": "count(all('offer'))"}`:'give the kind a "figure", or leave this block out'));return;case"list":return ne(e,n,o);case"divider":i!==!0&&o.findings.push(l("view-block",`${n}.${r}`,`write {"${r}": true}`));return}}function Q(e,n,t){k(e.figure,`${n}.figure`,t),"as"in e&&!L.includes(e.as)&&t.findings.push(l("view-format",`${n}.as`,`"${String(e.as)}" is not a way to say a figure`,`use one of ${L.join(", ")}`)),W(e,n,t,"figure"),"label"in e&&A(e.label,`${n}.label`,t),"emphasis"in e&&!B.includes(e.emphasis)&&t.findings.push(l("view-emphasis",`${n}.emphasis`,`"${String(e.emphasis)}" is not how loudly a figure is said`,`use ${B.map(o=>`"${o}"`).join(", ")}, or leave it out for the figure's own size`))}function W(e,n,t,o){"currency"in e&&(typeof e.currency!="string"||!/^[A-Z]{3}$/.test(e.currency)?t.findings.push(l("view-currency",`${n}.currency`,'a currency is its three-letter code, like "USD" or "EUR"')):e.as!=="money"&&t.findings.push(l("view-currency",`${n}.currency`,`a currency belongs on a ${o} shown as money`,'add "as": "money"')))}function ee(e,n){let t=[...n.kinds],o=(d,r)=>{let i=new Set;for(let s of d){let f=n.vocabulary.namesOf(s)?.targets?.(r);if(f==="*")return t;for(let u of f??[])i.add(u)}return i.size>0?[...i]:void 0},a=d=>{switch(d.t){case"ident":return n.kind!==null&&n.spec.relation(d.name)?o([n.kind],d.name):void 0;case"member":{let r=a(d.object);return r?o(r,d.name):void 0}case"where":return a(d.set);case"call":{let r=d.args[0],i=r?.t==="lit"&&typeof r.value=="string"?r.value:void 0;if(d.fn==="all")return i!==void 0&&n.kinds.has(i)?[i]:void 0;let s=d.args.length===2&&d.args[1]?.t==="lit"&&typeof d.args[1].value=="string"?d.args[1].value:void 0;if(d.fn==="out"&&s!==void 0){let f=a(r);return f?o(f,s):void 0}if(d.fn==="out")return i!==void 0&&n.kind!==null?o([n.kind],i):void 0;if(d.fn==="in"){let f=s??i,u=s!==void 0?a(r):n.kind!==null?[n.kind]:void 0,c=f!==void 0?n.vocabulary.sources(f).filter(p=>{let y=n.vocabulary.namesOf(p)?.targets?.(f);return!u||y==="*"||u.some(h=>y?.includes(h))}):[];return c.length>0?c:void 0}if((d.fn==="sort"||d.fn==="first")&&r)return a(r);if(d.fn==="either"){let f=d.args.map(a);return f.every(u=>u!==void 0)?[...new Set(f.flatMap(u=>u??[]))]:void 0}return}default:return}};return a(e)}function K(e,n,t,o){let a;try{a=w(e)}catch(r){if(!(r instanceof b))throw r;o.findings.push(l("expression",n,`${r.sentence} (at character ${r.at+1})`));return}let d=O(a);for(let r of d.unknownFunctions)o.findings.push(l("unknown-function",n,`"${r}" is not a function the rule language knows`,"see docs/declaration-document.md#expression-language"));for(let r of d.edges)o.edges.has(r)||o.findings.push(l("view-edge",n,`"${r}" is not a relation any kind declares`));if(t)for(let r of d.names)r==="id"||t.some(i=>o.vocabulary.namesOf(i)?.field(r)||o.vocabulary.namesOf(i)?.relation(r))||o.findings.push(l("view-name",n,`${t.join(" and ")} ${t.length===1?"has":"have"} no field or relation called "${r}"`))}function ne(e,n,t){let o=e.list;k(o,`${n}.list`,t);let a;if(typeof o=="string")try{a=ee(w(o),t)}catch{a=void 0}let d=i=>{if(!a)return[...t.kinds].map(f=>t.vocabulary.namesOf(f)?.choices?.(i)).find(f=>f!==void 0);let s=a.map(f=>t.vocabulary.namesOf(f)?.choices?.(i));return s.every(f=>f!==void 0)?[...new Set(s.flatMap(f=>f??[]))]:void 0},r=a?a.join(" and "):"any kind";if("sort"in e){let i=e.sort;if(typeof i=="string")K(i,`${n}.sort`,a,t);else if(g(i)&&typeof i.by=="string"&&Object.keys(i).every(s=>s==="by"||s==="direction")){let s=i.direction;s!==void 0&&s!=="asc"&&s!=="desc"&&s!=="choices"?t.findings.push(l("list-sort",`${n}.sort.direction`,`a list is sorted "asc", "desc" or "choices", not "${String(s)}"`,'"choices" puts a choice field in the order its choices are declared')):s==="choices"?d(i.by)===void 0&&t.findings.push(l("list-sort",`${n}.sort.by`,`"${i.by}" is not a choice field of ${r}, so it has no declared order`,'sort by a choice field, or say "asc" or "desc"')):K(i.by,`${n}.sort.by`,a,t)}else t.findings.push(l("list-sort",`${n}.sort`,'a sort is a key, like "net", or {"by": key, "direction": "asc" | "desc" | "choices"}'))}if("limit"in e){let i=e.limit;(typeof i!="number"||!Number.isInteger(i)||i<1||i>M)&&t.findings.push(l("list-limit",`${n}.limit`,`a limit is a whole number from 1 to ${M}`))}if("group"in e){let i=e.group,s=typeof i=="string"?i:g(i)&&typeof i.by=="string"?i.by:void 0;if(!(typeof i=="string"||g(i)&&Object.keys(i).every(u=>u==="by"||u==="headings"))||s===void 0)t.findings.push(l("list-group",`${n}.group`,'a group is a choice field, like "type", or {"by": "type", "headings": {"pain": "What hurts"}} \u2014 or a relation, like "inGenre", a heading per linked record'));else{let u=d(s),c=u===void 0?C(s):void 0,p=c!==void 0&&(c.way!==void 0?t.edges.has(c.edge):a?a.every(y=>t.vocabulary.namesOf(y)?.relation(c.edge)):t.edges.has(c.edge));if(u===void 0&&!p&&t.findings.push(l("list-group",`${n}.group`,`"${s}" is not a choice field or a relation of ${r}, so it has nothing to group by`,'group by a field whose type is enum, or by a relation of the kind listed, like "inGenre"')),g(i)&&"headings"in i){let y=i.headings;if(!g(y)||Object.values(y).some(h=>typeof h!="string"||h.length===0||h.length>80))t.findings.push(l("list-group",`${n}.group.headings`,'headings are words per choice, like {"pain": "What hurts"}, at most 80 characters each'));else if(u)for(let h of Object.keys(y))u.includes(h)||t.findings.push(l("list-group",`${n}.group.headings.${h}`,`"${h}" is not one of ${s}'s choices`,`use ${u.join(", ")}`))}}}"empty"in e&&(typeof e.empty!="string"||e.empty.length===0||e.empty.length>200)&&t.findings.push(l("list-empty",`${n}.empty`,"what an empty list says is a sentence, at most 200 characters")),"as"in e&&!U.includes(e.as)&&t.findings.push(l("list-as",`${n}.as`,`a list draws each record as its "card" or its "row", not "${String(e.as)}"`))}function ie(e,n,t){(typeof e!="string"||e.length===0||e.length>60)&&t.findings.push(l("view-label",n,"a label is a few words, at most 60 characters"))}function D(e,n,t,o,a,d,r){let i={kind:null,spec:Y,kinds:o,edges:a,vocabulary:t,findings:d,count:0,all:0};Array.isArray(e)&&e.length===0&&d.push(l("view-shape",n,`${r} has no blocks`,'give it one: {"headline": "\u2026"}')),x(e,n,1,i),P(i,n,r,"show less")}function P(e,n,t,o){e.count>T?e.findings.push(l("view-size",n,`${t} has ${e.count} blocks at its top; a view has at most ${T} there, a group or a condition counting as one`,`${o}, or gather some into a group`)):e.all>I&&e.findings.push(l("view-size",n,`${t} has ${e.all} blocks counting the ones inside its groups and conditions; a view has at most ${I} in all`,o))}function te(e,n,t,o,a){Array.isArray(e)&&e.forEach((d,r)=>{if(!g(d)||d.name!=="blocks"||!g(d.options)||!("blocks"in d.options))return;let i=[];D(d.options.blocks,`lenses.${r}.options.blocks`,n,t,o,i,`the lens "${String(d.title??r)}"`);for(let s of i)a.push({...s,severity:"warning"})})}function oe(e,n,t,o,a,d,r){let i=[];if(e===void 0)return i;if(!g(e))return i.push(l("view-shape",n,'views are an object of kinds, each with a "card", a "row" or a "page"')),i;for(let[s,f]of Object.entries(e)){if(s==="home"&&Array.isArray(f)){D(f,`${n}.home`,r,o,a,i,"the home");continue}let u=t(s);if(!u){i.push(l("view-kind",`${n}.${s}`,`"${s}" is not a kind this ${d} declares`));continue}if(!g(f)){i.push(l("view-shape",`${n}.${s}`,`a kind's views are {"card": [blocks], "row": [blocks], "page": [blocks]}`));continue}for(let c of Object.keys(f))E.includes(c)||i.push(l("view-slot",`${n}.${s}.${c}`,`"${c}" is not a place a view is drawn`,`use ${E.map(p=>`"${p}"`).join(", ")}`));for(let c of E){let p=f[c];if(p===void 0)continue;let y={kind:s,spec:u,kinds:o,edges:a,vocabulary:r,findings:i,count:0,all:0,slot:c};x(p,`${n}.${s}.${c}`,1,y),P(y,`${n}.${s}.${c}`,`this ${c}`,"show less, or move detail to the page")}}return i}function ge(e){let n=new Set(Object.keys(e.kinds)),t=new Set(Object.values(e.kinds).flatMap(r=>Object.keys($(r.edges)))),o=r=>{let i=m(e.kinds,r)?e.kinds[r]:void 0;return i?{field:s=>m(i.fields,s)||m(i.computed,s)||F(i.edges).has(s),relation:s=>m($(i.edges),s),figure:i.figure!==void 0,files:s=>m(i.fields,s)&&X(i.fields[s]),choices:s=>m(i.fields,s)&&i.fields[s].type==="enum"?i.fields[s].options:void 0,targets:s=>m($(i.edges),s)?i.edges[s].to:void 0,prose:s=>m(i.fields,s)&&i.fields[s].type==="text"}:void 0},a={namesOf:o,sources:r=>Object.keys(e.kinds).filter(i=>m(e.kinds[i].edges,r))},d=oe(e.views,"views",o,n,t,"document",a);return te(e.lenses,a,n,t,d),d}export{j as a,H as b,L as c,B as d,M as e,fe as f,C as g,ue as h,ce as i,ge as j};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as cn,c as un}from"./chunk.UT6642FC.js";import{j as x}from"./chunk.GRLPNTUW.js";import{c as Z}from"./chunk.EJAVIZ7Y.js";import{Jb as on,Kb as E,Sb as rn,Tb as an,Uc as dn,Ya as V,cc as Q,da as T,ea as K,fa as H,ga as en,ha as tn,hc as U,ka as sn,la as J,ma as G}from"./chunk.PFEKS3KO.js";function fn(){return{name:"insight",derive({store:n,nodes:d,kindSelection:t}){let f=[],v=l=>T(n.schema.tryDefinition(l.kind),l);for(let l of d){if([...n.schema.edgeKinds].reduce((c,w)=>c+n.graph.out(l.id,w).length+n.graph.in(l.id,w).length,0)===0){f.push({id:`insight:island:${l.id}`,text:`${v(l)} is connected to nothing yet`,nodeIds:[l.id]});continue}for(let c of n.schema.edgeKinds){let w=n.graph.in(l.id,c).length;if(w<3)continue;let s=[...n.graph.allEdges()].filter(a=>a.kind===c),e=s.length;e>=4&&w/e>.6&&f.push({id:`insight:load:${l.id}:${c}`,text:`${v(l)} ${vn(n,s,c,w)}`,nodeIds:[l.id]})}}for(let l of t){if(n.graph.nodesOfKind(l).length>0)continue;let A=n.schema.definitions.filter(c=>c.kind!==l).filter(c=>Object.values(c.edges).some(w=>w.to!=="*"&&w.to.includes(l))).map(c=>c.plural??`${c.kind}s`);A.length>0&&f.push({id:`insight:gap:${l}`,text:`Nothing here yet, though ${A.join(" and ")} expect to connect to these`,nodeIds:[]})}return{observations:f}}}}function vn(n,d,t,f){let v=new Set(d.map(s=>n.graph.getNode(s.from)?.kind).filter(s=>s!==void 0)),l=v.size===1?[...v][0]:void 0,A=d.length,c=Z(n.schema,l??[...v][0]??"",t,"in"),w=s=>l?en(n.schema,l,s):String(s);return f===A?`${c}: all ${w(f)}`:`${c}: ${f} of the ${w(A)}`}function ln(n){let d=new Map;if(n.length===0)return d;let t=n.slice(-512),f=new Set;for(let l of t)l.undoes&&f.add(l.undoes);let v=n[n.length-1].seq;for(let l of t){if(!l.mutation||f.has(l.id))continue;let A=Math.pow(.5,(v-l.seq)/64);d.set(l.mutation.name,(d.get(l.mutation.name)??0)+A)}return d}function hn(n){return 8*(n/(n+1))}var bn=100;function gn(){return{name:"invariant",derive({store:n,selection:d,nodes:t,violations:f}){let v=s=>T(n.schema.tryDefinition(s.kind),s),l=new Set(d),A=f.filter(s=>s.nodeIds.some(e=>l.has(e))||s.subjectId!==void 0&&l.has(s.subjectId)),c=[],w=[];A.forEach((s,e)=>{w.push({id:`violation:${s.invariant}:${e}`,text:s.message,nodeIds:s.nodeIds}),s.repairs.forEach((a,h)=>{c.push({id:`invariant:${s.invariant}:${e}:${h}`,label:a.label,provider:"invariant",mutation:a.mutation,args:a.args??{},open:(a.missing??[]).map(m=>{let r=n.allMutations().find(g=>g.name===a.mutation);if(!r)return{name:m};let o=E(r.input).find(g=>g.name===m),k=o?o.kinds.includes("*")?n.graph.allNodes().map(g=>g.id):o.kinds.flatMap(g=>n.graph.nodesOfKind(g).map($=>$.id)):void 0;return{name:m,shape:x(r.input,m),...o?{kinds:o.kinds}:{},...k?{candidates:k}:{}}}),score:bn-h-(a.missing?.length??0),why:s.message,nodeIds:s.nodeIds,...s.subjectId===void 0?{}:{subjectId:s.subjectId}})})});for(let s of t){let e=n.allInvariants().filter(a=>{if(a.scope==="graph")return!1;let h=a.scope;return h.kind!==s.kind?!1:h.match?h.match(s):!0});e.length!==0&&(A.some(a=>a.subjectId===s.id||a.nodeIds.includes(s.id))||w.push({id:`holds:${s.id}`,text:`${v(s)} holds \u2014 nothing currently breaks ${e.length===1?"it":`any of its ${e.length} rules`}`,nodeIds:[s.id]}))}return{affordances:c,observations:w}}}}var X=40;function pn(){return{name:"schema",derive({store:n,selection:d,nodes:t,kindSelection:f,edgeSelection:v,principal:l}){let A=(e,a)=>l!==void 0&&!n.permits({name:e,args:a},l).ok,c=[];if(t.length===0&&v.length>0){for(let e of v){let a=n.graph.getNode(e.from),h=n.graph.getNode(e.to);if(!a||!h)continue;let m=un(n,e);m?.provisional&&c.push({id:`schema:edge:${Q}:${e.kind}:${e.from}:${e.to}`,label:"Keep this link",provider:"schema",mutation:Q,args:{kind:e.kind,from:e.from,to:e.to},open:[],score:64,why:cn(m),nodeIds:[e.from,e.to]});for(let r of n.allMutations()){let o=(r.connects??[]).includes(e.kind),k=(r.severs??[]).includes(e.kind);if(!o&&!k||r.derived?.relation!==void 0&&r.derived.kind!==a.kind)continue;let g={},$=[],j=E(r.input);for(let p of j){let S=p.kinds.includes("*")||p.kinds.includes(a.kind),P=p.kinds.includes("*")||p.kinds.includes(h.kind),y=S&&!j.some(I=>I!==p&&(I.kinds.includes(a.kind)||I.kinds.includes("*")));S&&!P?g[p.name]=e.from:P&&!S?g[p.name]=e.to:S&&P&&y?g[p.name]=e.from:$.push({name:p.name,kinds:p.kinds,candidates:[e.from,e.to],shape:x(r.input,p.name)})}for(let p of q(r.input,""))p in g||$.some(S=>S.name===p)||$.push({name:p,shape:x(r.input,p)});$.every(p=>p.optional===!0?!0:p.kinds!==void 0?(p.candidates?.length??0)>0:(p.candidates?.length??0)>0||p.shape!==void 0&&p.shape.type!=="unknown")&&(o&&!k&&$.length===0||c.push({id:`schema:edge:${r.name}:${e.kind}:${e.from}:${e.to}`,label:K(r),provider:"schema",mutation:r.name,args:g,open:$,...r.destructive?{destructive:!0}:{},score:(k?62:58)-$.length,why:`this line is "${Z(n.schema,n.graph.getNode(e.from)?.kind??"",e.kind,"out")}"`,nodeIds:[e.from,e.to]}))}}return{affordances:c}}if(t.length===0&&f.length>0){let e=new Set(f),a=[];for(let h of n.allMutations()){if(!(h.creates??[]).some(o=>e.has(o)))continue;let m=[];for(let o of E(h.input)){let k=o.kinds.includes("*")?n.graph.allNodes().map(g=>g.id):o.kinds.flatMap(g=>n.graph.nodesOfKind(g).map($=>$.id));m.push({name:o.name,kinds:o.kinds,candidates:k,shape:x(h.input,o.name),...o.optional?{optional:!0}:{}})}for(let o of q(h.input,""))m.some(k=>k.name===o)||m.push({name:o,shape:x(h.input,o)});if(!m.every(o=>o.optional===!0?!0:o.kinds!==void 0?(o.candidates?.length??0)>0:(o.candidates?.length??0)>0||o.shape!==void 0&&o.shape.type!=="unknown")&&!A(h.name,{})){let o=m.filter(k=>k.optional!==!0&&k.kinds!==void 0&&!k.kinds.includes("*")&&(k.candidates?.length??0)===0);if(o.length>0){let k=[...new Set(o.flatMap(g=>g.kinds??[]))].map(g=>J(G(n.schema.tryDefinition(g),g)));a.push({id:`schema:waits:${h.name}`,text:`"${h.title??h.name}" cannot begin until there is ${k.length===1?k[0]:`${k.slice(0,-1).join(", ")} and ${k[k.length-1]}`}.`,nodeIds:[]})}continue}c.push({id:`schema:add:${h.name}`,label:K(h),provider:"schema",mutation:h.name,args:{},open:m,score:X-m.length,why:`this makes ${(h.creates??[]).filter(o=>e.has(o)).map(o=>J(G(n.schema.tryDefinition(o),o))).join(", ")}`,nodeIds:[]})}return{affordances:c,observations:a}}if(t.length===0)return{};let w=new Set(t.map(e=>e.kind)),s=(e,a,h)=>{let m=[];for(let r of n.graph.allEdges()){if(!a.includes(r.kind))continue;let o=r.from===e?r.to:r.to===e?r.from:null;if(!o)continue;let k=n.graph.getNode(o);k&&(!h.includes("*")&&!h.includes(k.kind)||m.includes(o)||m.push(o))}return m};for(let e of n.allMutations()){let a=e.subject;if(!a||!(a.kinds==="*"?!0:[...w].every(u=>a.kinds.includes(u))))continue;let m=e.derived?.act;if((m==="archive"||m==="merge")&&t.some(u=>V(u))||m==="unarchive"&&!t.some(u=>V(u))||m==="leave-alone"&&t.every(u=>U(n,u.id))||m==="allow-tidying"&&!t.some(u=>U(n,u.id)))continue;let r=t.length===1?t[0].id:null,o=e.severs??[],k=e.connects??[];if(r&&o.length>0&&k.length===0&&s(r,o,["*"]).length===0)continue;let g=[];for(let u of E(e.input)){if(u.name===a.arg)continue;let p=u.kinds.includes("*")?n.graph.allNodes().map(S=>S.id):u.kinds.flatMap(S=>n.graph.nodesOfKind(S).map(P=>P.id));if(r&&k.length>0){let S=new Set(s(r,k,u.kinds));p=p.filter(P=>!S.has(P))}else r&&o.length>0&&(p=s(r,o,u.kinds));g.push({name:u.name,kinds:u.kinds,candidates:p.filter(S=>!d.includes(S)),shape:x(e.input,u.name),...u.optional?{optional:!0}:{}})}for(let u of q(e.input,a.arg))g.some(p=>p.name===u)||g.push({name:u,shape:x(e.input,u)});if(g.length===0&&r){let u=Sn(e.input,a.arg);if(u.length>0&&!wn(n,e.name,{[a.arg]:r}))for(let p of u){let S=E(e.input).find(P=>P.name===p);g.push({name:p,optional:!0,...S?{kinds:S.kinds}:{},shape:x(e.input,p)})}}if(!g.every(u=>u.optional===!0?!0:u.kinds!==void 0?(u.candidates?.length??0)>0:(u.candidates?.length??0)>0||u.shape!==void 0&&u.shape.type!=="unknown")&&!A(e.name,r?{[a.arg]:r}:{}))continue;let j=t.map(u=>({[a.arg]:u.id}));g.length===0&&!j.some(u=>n.wouldChange({name:e.name,args:u}))||c.push({id:`schema:${e.name}`,label:t.length>1?`${K(e)} (${t.length})`:K(e),provider:"schema",mutation:e.name,args:j[0]??{},open:g,...e.destructive?{destructive:!0}:{},...e.derived?.act==="archive"||e.derived?.act==="merge"||e.derived?.act==="leave-alone"||e.derived?.act==="allow-tidying"?{setsAside:!0}:{},...o.length>0||k.length>0?{ties:!0}:{},...t.length>1?{batch:j}:{},score:X-g.length,why:t.length>1?`all ${t.length} selected nodes are ${[...w].map(u=>tn(n.schema,u).toLowerCase()).join(" or ")}`:`this is ${J(G(n.schema.tryDefinition(t[0].kind),t[0].kind))}`,nodeIds:t.map(u=>u.id)})}if(t.length===1){let e=t[0];for(let a of n.allMutations()){let h=a.subject,m=a.severs??[],r=a.connects??[];if(!h||m.length===0&&r.length===0)continue;let o=h.kinds==="*"?"*":h.kinds;if(o==="*"||o.includes(e.kind))continue;let k=E(a.input),g=k.find(y=>y.name!==h.arg&&(y.kinds.includes("*")||y.kinds.includes(e.kind)));if(!g)continue;let $=o,j=$.includes("*")?n.graph.allNodes().map(y=>y.id):$.flatMap(y=>n.graph.nodesOfKind(y).map(I=>I.id)),u=new Set(s(e.id,r.length>0?r:m,$)),p=r.length>0?j.filter(y=>!u.has(y)):j.filter(y=>u.has(y));if(p.length===0)continue;let S=[{name:h.arg,kinds:$,candidates:p,shape:x(a.input,h.arg)}];for(let y of k){if(y.name===g.name||y.name===h.arg)continue;let I=y.kinds.includes("*")?n.graph.allNodes().map(L=>L.id):y.kinds.flatMap(L=>n.graph.nodesOfKind(L).map(O=>O.id));S.push({name:y.name,kinds:y.kinds,candidates:I,shape:x(a.input,y.name),...y.optional?{optional:!0}:{}})}for(let y of q(a.input,g.name))y===h.arg||S.some(I=>I.name===y)||S.push({name:y,shape:x(a.input,y)});S.every(y=>y.optional===!0?!0:y.kinds!==void 0?(y.candidates?.length??0)>0:(y.candidates?.length??0)>0||y.shape!==void 0&&y.shape.type!=="unknown")&&c.push({id:`schema:tie:${a.name}:${e.id}`,label:a.fromTheOtherEnd??K(a),provider:"schema",mutation:a.name,args:{[g.name]:e.id},open:S,ties:!0,...a.destructive?{destructive:!0}:{},score:X-S.length+2,why:`${m.length>0?"this one is on":"this one could join"} ${S[0].candidates.length===1?"it":"one of these"}`,nodeIds:[e.id]})}}return{affordances:c}}}}function Sn(n,d){let t=n.shape;return t?Object.entries(t).filter(([f,v])=>f!==d&&v.safeParse(void 0).success).map(([f])=>f):[]}function wn(n,d,t){try{return n.preview({name:d,args:t}),!0}catch{return!1}}function q(n,d){let t=n.shape;return t?Object.entries(t).filter(([f,v])=>f!==d&&!v.safeParse(void 0).success).map(([f])=>f):[]}var An=70,$n=80,On=new Set(["id","kind"]);function mn(){return{name:"structure",derive({store:n,nodes:d}){let t=c=>T(n.schema.tryDefinition(c.kind),c);if(d.length<2)return{};let f=[],v=[],l=d.map(c=>c.id);for(let c of n.schema.edgeKinds){let w=In(d.map(e=>new Set([...n.graph.out(e.id,c).map(a=>a.id),...n.graph.in(e.id,c).map(a=>a.id)])));for(let e of w){let a=n.graph.getNode(e);a&&f.push({id:`shared:${c}:${e}`,text:`all ${d.length} share "${t(a)}" (${H(c).toLowerCase()})`,nodeIds:[...l,e]})}let s=new Map;for(let e of d)for(let a of[...n.graph.out(e.id,c),...n.graph.in(e.id,c)])s.set(a.id,(s.get(a.id)??0)+1);for(let[e,a]of s){if(a!==d.length-1||d.length<3||l.includes(e))continue;let h=n.graph.getNode(e);if(!h)continue;let m=d.find(r=>![...n.graph.out(r.id,c),...n.graph.in(r.id,c)].some(o=>o.id===e));if(m&&(f.push({id:`near-shared:${c}:${e}`,text:`all but "${t(m)}" share "${t(h)}" (${H(c).toLowerCase()})`,nodeIds:[...l,e]}),!(!n.schema.edgeAllowed(c,m.kind,h.kind)&&!n.schema.edgeAllowed(c,h.kind,m.kind))))for(let r of n.allMutations()){let o=r.subject;if(!o||o.kinds!=="*"&&!o.kinds.includes(m.kind)||(r.connects!==void 0||r.severs!==void 0)&&!(r.connects??[]).includes(c))continue;let g=Pn(r.input,h.kind);g&&v.push({id:`structure:join:${r.name}:${m.id}:${e}`,label:`${K(r)}: bring "${t(m)}" in line with the others`,provider:"structure",mutation:r.name,args:{[o.arg]:m.id,[g]:e},open:[],score:An,why:`every other selected node is connected to "${t(h)}"`,nodeIds:[m.id,e]})}}}let A=new Map;for(let c of d)A.set(c.kind,[...A.get(c.kind)??[],c]);for(let[c,w]of A){if(w.length<2)continue;let s=w,e=w.map(r=>r.id),a=A.size>1?`${c}:`:"",h=new Set;for(let r of s)for(let o of Object.keys(r))On.has(o)||h.add(o);let m=r=>n.schema.definitions.find(o=>o.kind===r);for(let r of[...h].sort()){let o=m(s[0].kind),k=sn(o,r).toLowerCase(),g=o?.display?.format?.[r],$=O=>{if(!g)return O;try{return String(g(JSON.parse(O)))}catch{return O}},j=s.map(O=>O[r]),u=new Map;if(j.forEach((O,R)=>{let D=JSON.stringify(O??null),M=u.get(D);M?M.push(s[R]):u.set(D,[s[R]])}),u.size===1){let O=[...u.keys()][0];if(O==="null")continue;f.push({id:`agree:${a}${r}`,text:`all ${s.length} share the ${k} ${$(O)}`,nodeIds:e});continue}if(s.length<3||u.size!==2)continue;let p=[...u.entries()].sort((O,R)=>R[1].length-O[1].length),[S,P]=p[0],[,y]=p[1];if(y.length!==1||S==="null")continue;let I=y[0],L=JSON.parse(S);f.push({id:`odd-one-out:${a}${r}`,text:`${P.length} share the ${k} ${$(S)}; "${t(I)}" does not`,nodeIds:e});for(let O of n.allMutations()){let R=O.subject;if(!R||R.kinds!=="*"&&!R.kinds.includes(I.kind))continue;let D=kn(O.input);if(!D||!(r in D))continue;let M={[R.arg]:I.id,[r]:L},C=!0;for(let[W,z]of Object.entries(D)){if(W in M||z.safeParse(void 0).success)continue;let B=I[W];if(B===void 0){C=!1;break}M[W]=B}!C||!O.input.safeParse(M).success||v.push({id:`structure:align:${O.name}:${r}:${I.id}`,label:`Align the ${k} of "${t(I)}" with the other ${P.length}`,provider:"structure",mutation:O.name,args:M,open:[],score:$n,why:`${P.length} of ${s.length} share the ${k} ${$(S)}`,nodeIds:e})}}}return{affordances:v,observations:f}}}}function In(n){if(n.length===0)return[];let[d,...t]=n;return[...d].filter(f=>t.every(v=>v.has(f))).sort()}function kn(n){return n.shape??null}function Pn(n,d){let t=kn(n);if(!t)return null;for(let[f]of Object.entries(t)){let v=on(t[f]);if(v&&(v.includes("*")||v.includes(d)))return f}return null}function jn(){return[gn(),mn(),pn(),fn()]}function Xn(n,d,t={}){let f=yn(),v=t.providers??jn(),l=d.map(i=>n.graph.getNode(i)).filter(i=>i!==void 0),A={store:n,selection:d,nodes:l,kindSelection:t.kindSelection??[],edgeSelection:t.edgeSelection??[],violations:n.violations(t.context),context:t.context??{},principal:t.principal??{kind:"human"}},c=[],w=[];for(let i of v){let b=i.derive(A);c.push(...b.affordances??[]),w.push(...b.observations??[])}let s=new Map(n.allMutations().map(i=>[i.name,i]));c.forEach((i,b)=>{let N=i.open.length>1?s.get(i.mutation):void 0;N&&(c[b]={...i,open:an(i.open,rn(n.schema,N))})});let e=new Set(n.allMutations().filter(i=>i.pinned).map(i=>i.name)),a=new Set(t.pins?.pinned??[]),h=new Set(t.pins?.unpinned??[]),m=i=>a.has(i.mutation)?"user":e.has(i.mutation)&&!h.has(i.mutation)?"declared":void 0,r=i=>{let b=m(i);return b?{...i,pinned:b}:i},o=new Map;for(let[i,b]of ln(n.log.all()))o.set(i,hn(b));let k=i=>i.pinned==="user"?0:i.pinned==="declared"?1:2,g=i=>i.score+(o.get(i.mutation)??0),$=new Map(n.allMutations().map(i=>[i.name,i])),j=new Map,u=i=>{let b=$.get(i.mutation);if(!b)return[];let N=j.get(i.mutation);N||(N=E(b.input).map(F=>F.name),j.set(i.mutation,N));let _=[];for(let F of i.batch??[i.args])for(let Y of N){let nn=F[Y]??i.args[Y];typeof nn=="string"&&_.push(nn)}return _},p=t.focus,S=4,P=i=>i.open.length>0?1:0,y=i=>{if(p===void 0)return S;let b=u(i);return b.length>0?b.includes(p)?I(i,0):S:i.nodeIds.includes(p)||i.subjectId===p?I(i,1):S},I=(i,b)=>i.provider==="invariant"?b:2+P(i),L=i=>i.setsAside?1:0,O=Nn(c).map(r),R=new Map(O.map((i,b)=>[i,b])),D=O.sort((i,b)=>{let N=Number(i.destructive??!1)-Number(b.destructive??!1);if(N!==0)return N;let _=L(i)-L(b);if(_!==0)return _;let F=y(i)-y(b);return F!==0?F:y(i)<2?R.get(i)-R.get(b):+(b.provider==="invariant")-+(i.provider==="invariant")||k(i)-k(b)||g(b)-g(i)||i.id.localeCompare(b.id)}),M=t.principal??{kind:"human"},C=[],W=[];for(let i of D){let b=n.permits({name:i.mutation,args:{...i.args,...i.batch?.[0]??{}}},M);if(b.ok)C.push(i);else{let N=Rn(n,i,M);if(N==="done")continue;N?C.push(N):W.push({...i,refusal:b.refusal})}}let z=C.map((i,b)=>({...i,rank:b})),B=W.map((i,b)=>({...i,rank:C.length+b}));return{affordances:t.limit===void 0?z:z.slice(0,t.limit),withheld:B,observations:xn(w),ms:yn()-f}}function Nn(n){let d=new Map;for(let t of n){let f=[t.mutation,JSON.stringify(t.args),JSON.stringify(t.batch??null)].join("|"),v=d.get(f);(!v||t.score>v.score)&&d.set(f,t)}return[...d.values()]}function xn(n){let d=new Map;for(let t of n)d.set(t.text,t);return[...d.values()]}function yn(){return typeof performance<"u"?performance.now():Date.now()}function Yn(n,d,t={},f={}){let v=(d.batch??[d.args]).map(A=>({name:d.mutation,args:{...d.args,...A,...t}})),l=n.allMutations().find(A=>A.name===d.mutation);return n.applyAll(v,{...l?.describe?{}:{intent:d.label},...f.author?{author:f.author}:{}})}function ne(n,d,t={},f={}){try{return n.preview({name:d.mutation,args:{...d.args,...t}})}catch(v){throw f.pressed&&dn(v,f.pressed.author?.id),v}}function Rn(n,d,t){let f=n.allMutations().find(s=>s.name===d.mutation)?.subject,v=f!==void 0&&d.args[f.arg]===void 0,l=v?d.open.find(s=>s.name===f.arg):d.open.find(s=>s.name!==f?.arg&&s.candidates);if(!l?.candidates)return;let A=s=>n.permits({name:d.mutation,args:{...d.args,...d.batch?.[0]??{},[l.name]:s}},t).ok,c=l.candidates.filter(A),w=t.id===void 0?void 0:n.graph.getNode(t.id);if(c.length===0){let s=v?f.kinds:"*";return w!==void 0&&(s==="*"||s.includes(w.kind))&&A(w.id)?"done":void 0}return c.length===1&&c[0]===t.id?{...d,args:{...d.args,[l.name]:t.id},open:d.open.filter(s=>s!==l)}:{...d,open:d.open.map(s=>s===l?{...s,candidates:c}:s)}}export{Xn as a,Yn as b,ne as c};
|
|
@@ -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{$ as X,Da as M,G as B,Ja as $r,Ka as Or,La as Nr,Oa as Z,R as S,Sa as J,_ as fe,a as $e,e as Oe,ia as Tr,l as Sr,m as Pr,qa as Ar,s as Lr,v as ae,z as Er}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{$ as X,Da as M,G as B,Ja as $r,Ka as Or,La as Nr,Oa as Z,R as S,Sa as J,_ as fe,a as $e,e as Oe,ia as Tr,l as Sr,m as Pr,qa as Ar,s as Lr,v as ae,z as Er}from"./chunk.TM6JVVGW.js";import{a as R}from"./chunk.SDO3U72B.js";import{Ad as kr,Cc as pr,Ec as ur,Hc as gr,Ic as fr,Xa as rr,da as Ze,dd as ge,ed as ne,gd as Te,ia as Je,id as mr,ja as er,jb as tr,jd as wr,kc as nr,kd as Q,mc as ar,nc as ue,oc as Ee,pc as ir,qc as or,rc as U,rd as vr,sc as sr,sd as yr,tc as lr,td as hr,ud as br,vc as dr,vd as xr,wc as cr,wd as Ae}from"./chunk.PFEKS3KO.js";import{a as Xe,b as h}from"./chunk.AJZBJBMO.js";var Vr=Xe(L=>{"use strict";var Ft=B();function Fr(r){var e="https://react.dev/errors/"+r;if(1<arguments.length){e+="?args[]="+encodeURIComponent(arguments[1]);for(var t=2;t<arguments.length;t++)e+="&args[]="+encodeURIComponent(arguments[t])}return"Minified React error #"+r+"; visit "+e+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function W(){}var P={d:{f:W,r:function(){throw Error(Fr(522))},D:W,C:W,L:W,m:W,X:W,S:W,M:W},p:0,findDOMNode:null},Vt=Symbol.for("react.portal");function It(r,e,t){var n=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:Vt,key:n==null?null:""+n,children:r,containerInfo:e,implementation:t}}var ie=Ft.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function we(r,e){if(r==="font")return"";if(typeof e=="string")return e==="use-credentials"?e:""}L.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=P;L.createPortal=function(r,e){var t=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)throw Error(Fr(299));return It(r,e,null,t)};L.flushSync=function(r){var e=ie.T,t=P.p;try{if(ie.T=null,P.p=2,r)return r()}finally{ie.T=e,P.p=t,P.d.f()}};L.preconnect=function(r,e){typeof r=="string"&&(e?(e=e.crossOrigin,e=typeof e=="string"?e==="use-credentials"?e:"":void 0):e=null,P.d.C(r,e))};L.prefetchDNS=function(r){typeof r=="string"&&P.d.D(r)};L.preinit=function(r,e){if(typeof r=="string"&&e&&typeof e.as=="string"){var t=e.as,n=we(t,e.crossOrigin),i=typeof e.integrity=="string"?e.integrity:void 0,a=typeof e.fetchPriority=="string"?e.fetchPriority:void 0;t==="style"?P.d.S(r,typeof e.precedence=="string"?e.precedence:void 0,{crossOrigin:n,integrity:i,fetchPriority:a}):t==="script"&&P.d.X(r,{crossOrigin:n,integrity:i,fetchPriority:a,nonce:typeof e.nonce=="string"?e.nonce:void 0})}};L.preinitModule=function(r,e){if(typeof r=="string")if(typeof e=="object"&&e!==null){if(e.as==null||e.as==="script"){var t=we(e.as,e.crossOrigin);P.d.M(r,{crossOrigin:t,integrity:typeof e.integrity=="string"?e.integrity:void 0,nonce:typeof e.nonce=="string"?e.nonce:void 0})}}else e==null&&P.d.M(r)};L.preload=function(r,e){if(typeof r=="string"&&typeof e=="object"&&e!==null&&typeof e.as=="string"){var t=e.as,n=we(t,e.crossOrigin);P.d.L(r,t,{crossOrigin:n,integrity:typeof e.integrity=="string"?e.integrity:void 0,nonce:typeof e.nonce=="string"?e.nonce:void 0,type:typeof e.type=="string"?e.type:void 0,fetchPriority:typeof e.fetchPriority=="string"?e.fetchPriority:void 0,referrerPolicy:typeof e.referrerPolicy=="string"?e.referrerPolicy:void 0,imageSrcSet:typeof e.imageSrcSet=="string"?e.imageSrcSet:void 0,imageSizes:typeof e.imageSizes=="string"?e.imageSizes:void 0,media:typeof e.media=="string"?e.media:void 0})}};L.preloadModule=function(r,e){if(typeof r=="string")if(e){var t=we(e.as,e.crossOrigin);P.d.m(r,{as:typeof e.as=="string"&&e.as!=="script"?e.as:void 0,crossOrigin:t,integrity:typeof e.integrity=="string"?e.integrity:void 0})}else P.d.m(r)};L.requestFormReset=function(r){P.d.r(r)};L.unstable_batchedUpdates=function(r,e){return r(e)};L.useFormState=function(r,e,t){return ie.H.useFormState(r,e,t)};L.useFormStatus=function(){return ie.H.useHostTransitionStatus()};L.version="19.2.8"});var Kr=Xe((oa,Wr)=>{"use strict";function Ir(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Ir)}catch(r){console.error(r)}}Ir(),Wr.exports=Vr()});var Cr={name:"Graview",typography:{body:Ee.body,mono:Ee.mono},schemes:ue},Hr={ground:"--graview-ground",groundDeep:"--graview-ground-deep",wash:"--graview-wash",panel:"--graview-panel",panelMuted:"--graview-panel-muted",panelWarning:"--graview-panel-warning",edge:"--graview-edge",edgeBright:"--graview-edge-bright",ink:"--graview-ink",inkMuted:"--graview-ink-muted",inkFaint:"--graview-ink-faint",accent:"--graview-accent",accentDim:"--graview-accent-dim",accentInk:"--graview-accent-ink",warn:"--graview-warn",good:"--graview-good",bad:"--graview-bad",glow:"--graview-glow",bar:"--graview-bar",float:"--graview-float",liftLow:"--graview-lift-low",liftHigh:"--graview-lift-high",tintAlpha:"--graview-tint-alpha",tintLightness:"--graview-tint-lightness",gridAlpha:"--graview-grid-alpha"};function Rr(r){return Object.keys(Hr).map(e=>` ${Hr[e]}: ${r[e]};`).join(`
|
|
2
2
|
`)}function Br(r,e){let t=r===e?r:`${r} ${e}`;return` ${t} [data-graview-view] { transition: none; }
|
|
3
3
|
${t} [data-graview-touched] > * { animation: none; }
|
|
4
4
|
${t} [data-graview-view][data-graview-wrote] > *,
|
|
@@ -277,7 +277,7 @@ code { color: var(--graview-ink-muted); font-size: 0.8125rem; letter-spacing: 0.
|
|
|
277
277
|
@media (prefers-reduced-motion: reduce) {
|
|
278
278
|
${Br(`${l}:not([data-graview-motion='full'])`,o)}
|
|
279
279
|
}
|
|
280
|
-
${Br(`${l}[data-graview-motion='reduce']`,o)}`}var Ne=h(B(),1),Mr=new WeakMap,me=r=>{let e=Mr.get(r);return e||Mr.set(r,e={open:null,drawn:0,listeners:new Set}),e},Mt=r=>{for(let e of[...r.listeners])e()},_t=0;function ta(r,e){let t=me(r);t.open=e?{...e,at:++_t}:null,Mt(t)}var _r=r=>e=>{let t=me(r);return t.listeners.add(e),()=>void t.listeners.delete(e)};function Dr(r){let e=()=>r?me(r).drawn>0:!1;return(0,Ne.useSyncExternalStore)(r?_r(r):Dt,e,e)}var Dt=()=>()=>{};function na(r){let e=()=>me(r).open;return(0,Ne.useSyncExternalStore)(_r(r),e,e)}var D=h(B(),1),Gr=h(Kr(),1);function Wt(r){let[e,t]=(0,D.useState)(null),[n,i]=(0,D.useState)(null);return(0,D.useLayoutEffect)(()=>{r.current!==n&&i(r.current)}),(0,D.useLayoutEffect)(()=>{if(!n||typeof ResizeObserver>"u")return;let a=()=>Math.round(n.getBoundingClientRect().width),o=a();t(o);let l=new ResizeObserver(()=>{let p=a();p!==o&&(o=p,(0,Gr.flushSync)(()=>t(p)))});return l.observe(n),()=>l.disconnect()},[n]),e}function Kt(r=!0){let[e,t]=(0,D.useState)();return(0,D.useEffect)(()=>{if(!r)return t(void 0);let n=0,i=()=>t(innerHeight),a=()=>{i(),clearTimeout(n),n=window.setTimeout(i,300)},o=l=>{for(let[p,s]of[[window,"resize"],[window,"orientationchange"],[window.visualViewport,"resize"]])p?.[l](s,a)};return o("addEventListener"),i(),()=>{clearTimeout(n),o("removeEventListener")}},[r]),e}var ve={position:"absolute",width:1,height:1,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(50%)",whiteSpace:"nowrap"};var E=h(B(),1);var O=h(S(),1),zr=6e3;function Gt(){let r=[],e=0,t=new Set,n=new Map,i,a=()=>{for(let s of[...t])s()},o=s=>{if(clearTimeout(n.get(s.id)),n.delete(s.id),s.kind!=="toast")return;let u=(s.actions?.length??0)+(s.action?1:0),c=s.timeout??(u>0?!1:zr);c!==!1&&n.set(s.id,setTimeout(()=>i?.()?o(s):l(s.id),c))},l=s=>{clearTimeout(n.get(s)),n.delete(s),r.some(u=>u.id===s)&&(r=r.filter(u=>u.id!==s),a())},p=s=>{r=r.some(u=>u.id===s.id)?r.map(u=>u.id===s.id?s:u):[...r,s],o(s),a()};return{notify(s){let u=s.id??`notice-${++e}`;return p({...s,id:u,said:++e}),{id:u,dismiss:()=>l(u),update:c=>{let g=r.find(w=>w.id===u);g&&p({...g,...c,id:u,kind:g.kind,said:c.sentence!==void 0&&c.sentence!==g.sentence?++e:g.said})}}},dismiss:l,hold(s){i=s},list:()=>r,subscribe(s){return t.add(s),()=>t.delete(s)}}}function zt({notices:r}){let e=r.reduce((l,p)=>!l||p.said>l.said?p:l,void 0),[t,n]=(0,E.useState)(""),[i,a]=(0,E.useState)(""),o=(0,E.useRef)(0);return(0,E.useEffect)(()=>{if(!e||e.said===o.current)return;o.current=e.said;let l=e.tone==="bad";(l?a:n)("");let p=setTimeout(()=>(l?a:n)(e.sentence),50);return()=>clearTimeout(p)},[e]),(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)("div",{role:"status","aria-live":"polite","data-testid":"notices-said",style:ve,children:t}),(0,O.jsx)("div",{role:"alert","data-testid":"notices-alarm",style:ve,children:i})]})}var qt=(0,E.createContext)(null);function jt({board:r,anchor:e}){let t=(0,E.useSyncExternalStore)(r.subscribe,r.list,r.list);return(0,E.useEffect)(()=>Qt(He.prefetch),[]),(0,O.jsxs)(O.Fragment,{children:[t.length>0?(0,O.jsx)(E.Suspense,{fallback:null,children:(0,O.jsx)(Ut,{notices:t,anchor:e,board:r})}):null,(0,O.jsx)(zt,{notices:t})]})}var He=M(R(()=>(__graviewPreload(import.meta.url,["./chunk.MB7LKKUD.js","./chunk.
|
|
280
|
+
${Br(`${l}[data-graview-motion='reduce']`,o)}`}var Ne=h(B(),1),Mr=new WeakMap,me=r=>{let e=Mr.get(r);return e||Mr.set(r,e={open:null,drawn:0,listeners:new Set}),e},Mt=r=>{for(let e of[...r.listeners])e()},_t=0;function ta(r,e){let t=me(r);t.open=e?{...e,at:++_t}:null,Mt(t)}var _r=r=>e=>{let t=me(r);return t.listeners.add(e),()=>void t.listeners.delete(e)};function Dr(r){let e=()=>r?me(r).drawn>0:!1;return(0,Ne.useSyncExternalStore)(r?_r(r):Dt,e,e)}var Dt=()=>()=>{};function na(r){let e=()=>me(r).open;return(0,Ne.useSyncExternalStore)(_r(r),e,e)}var D=h(B(),1),Gr=h(Kr(),1);function Wt(r){let[e,t]=(0,D.useState)(null),[n,i]=(0,D.useState)(null);return(0,D.useLayoutEffect)(()=>{r.current!==n&&i(r.current)}),(0,D.useLayoutEffect)(()=>{if(!n||typeof ResizeObserver>"u")return;let a=()=>Math.round(n.getBoundingClientRect().width),o=a();t(o);let l=new ResizeObserver(()=>{let p=a();p!==o&&(o=p,(0,Gr.flushSync)(()=>t(p)))});return l.observe(n),()=>l.disconnect()},[n]),e}function Kt(r=!0){let[e,t]=(0,D.useState)();return(0,D.useEffect)(()=>{if(!r)return t(void 0);let n=0,i=()=>t(innerHeight),a=()=>{i(),clearTimeout(n),n=window.setTimeout(i,300)},o=l=>{for(let[p,s]of[[window,"resize"],[window,"orientationchange"],[window.visualViewport,"resize"]])p?.[l](s,a)};return o("addEventListener"),i(),()=>{clearTimeout(n),o("removeEventListener")}},[r]),e}var ve={position:"absolute",width:1,height:1,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(50%)",whiteSpace:"nowrap"};var E=h(B(),1);var O=h(S(),1),zr=6e3;function Gt(){let r=[],e=0,t=new Set,n=new Map,i,a=()=>{for(let s of[...t])s()},o=s=>{if(clearTimeout(n.get(s.id)),n.delete(s.id),s.kind!=="toast")return;let u=(s.actions?.length??0)+(s.action?1:0),c=s.timeout??(u>0?!1:zr);c!==!1&&n.set(s.id,setTimeout(()=>i?.()?o(s):l(s.id),c))},l=s=>{clearTimeout(n.get(s)),n.delete(s),r.some(u=>u.id===s)&&(r=r.filter(u=>u.id!==s),a())},p=s=>{r=r.some(u=>u.id===s.id)?r.map(u=>u.id===s.id?s:u):[...r,s],o(s),a()};return{notify(s){let u=s.id??`notice-${++e}`;return p({...s,id:u,said:++e}),{id:u,dismiss:()=>l(u),update:c=>{let g=r.find(w=>w.id===u);g&&p({...g,...c,id:u,kind:g.kind,said:c.sentence!==void 0&&c.sentence!==g.sentence?++e:g.said})}}},dismiss:l,hold(s){i=s},list:()=>r,subscribe(s){return t.add(s),()=>t.delete(s)}}}function zt({notices:r}){let e=r.reduce((l,p)=>!l||p.said>l.said?p:l,void 0),[t,n]=(0,E.useState)(""),[i,a]=(0,E.useState)(""),o=(0,E.useRef)(0);return(0,E.useEffect)(()=>{if(!e||e.said===o.current)return;o.current=e.said;let l=e.tone==="bad";(l?a:n)("");let p=setTimeout(()=>(l?a:n)(e.sentence),50);return()=>clearTimeout(p)},[e]),(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)("div",{role:"status","aria-live":"polite","data-testid":"notices-said",style:ve,children:t}),(0,O.jsx)("div",{role:"alert","data-testid":"notices-alarm",style:ve,children:i})]})}var qt=(0,E.createContext)(null);function jt({board:r,anchor:e}){let t=(0,E.useSyncExternalStore)(r.subscribe,r.list,r.list);return(0,E.useEffect)(()=>Qt(He.prefetch),[]),(0,O.jsxs)(O.Fragment,{children:[t.length>0?(0,O.jsx)(E.Suspense,{fallback:null,children:(0,O.jsx)(Ut,{notices:t,anchor:e,board:r})}):null,(0,O.jsx)(zt,{notices:t})]})}var He=M(R(()=>(__graviewPreload(import.meta.url,["./chunk.MB7LKKUD.js","./chunk.423SZS7C.js","./chunk.TM6JVVGW.js","./chunk.SDO3U72B.js","./chunk.PFEKS3KO.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.B2BLZDBD.js")))),Yt=()=>He.load().then(()=>{},()=>{}),Ut=He.part((r,e)=>(0,O.jsx)(r.NoticeStacks,{...e}),{quiet:!0});function Qt(r){let e=()=>{(typeof navigator>"u"||navigator.onLine!==!1)&&r()},t=globalThis;if(t.requestIdleCallback){let i=t.requestIdleCallback(e,{timeout:5e3});return()=>t.cancelIdleCallback?.(i)}let n=setTimeout(e,2500);return()=>clearTimeout(n)}var C=M(R(()=>(__graviewPreload(import.meta.url,["./chunk.C75I24Z5.js","./chunk.4SEY7VWZ.js","./chunk.IVHPJUFM.js","./chunk.W6CGAPNQ.js","./chunk.7C4IR4S7.js","./chunk.D53IGR45.js","./chunk.MJ4XTNTL.js","./chunk.AP22NNIM.js","./chunk.FNK2ZZ5E.js","./chunk.UT6642FC.js","./chunk.TI4OSTQV.js","./chunk.GZHZLJBF.js","./chunk.FOYVTN5B.js","./chunk.OJGHDWI6.js","./chunk.OTF3NNTI.js","./chunk.A7HMVWMG.js","./chunk.GRLPNTUW.js","./chunk.EJAVIZ7Y.js","./chunk.423SZS7C.js","./chunk.TM6JVVGW.js","./chunk.SDO3U72B.js","./chunk.PFEKS3KO.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.DV4GSLGX.js"))));var v=h(B(),1);var Yr=h(B(),1);var qr=h(B(),1);function Be(r){return(0,qr.useMemo)(()=>r===void 0||r===""?void 0:{__html:r},[r])}var K=h(S(),1);function Ce({brand:r,size:e=22}){let t=dr(r),n=jr(t?.light),i=n?jr(t?.dark):void 0,a=Be(n!==void 0&&U(n)?n:void 0),o=Be(i!==void 0&&U(i)?i:void 0),l={display:"inline-flex",flex:"0 0 auto",height:e,color:"var(--graview-accent)"},p=cr(r);if(p)return(0,K.jsx)("span",{className:"graview-logo graview-emoji-mark","data-testid":"app-mark","aria-hidden":!0,style:{...l,alignItems:"center",fontSize:`${e*.86/16}rem`,lineHeight:1},children:p});if(!n)return null;let s=r?.logoAlt??r?.name??"",u=s!==""&&s!==r?.name,c=u?{role:"img","aria-label":s}:{"aria-hidden":!0};if(i){let w=(y,b,N)=>U(y)?(0,K.jsx)("span",{className:"graview-logo-face","data-graview-scheme-only":N,dangerouslySetInnerHTML:b}):(0,K.jsx)("img",{className:"graview-logo-face","data-graview-scheme-only":N,src:y,alt:""});return(0,K.jsxs)("span",{className:"graview-logo","data-testid":"app-mark",style:l,...c,children:[w(n,a,"light"),w(i,o,"dark")]})}let g=t?.darkFallback==="invert"?{"data-graview-logo-fallback":"invert"}:{};return U(n)?(0,K.jsx)("span",{className:"graview-logo","data-testid":"app-mark",style:l,...g,...c,dangerouslySetInnerHTML:a}):(0,K.jsx)("img",{className:"graview-logo","data-testid":"app-mark",src:n,alt:u?s:"",...g,style:{...l,width:"auto"}})}function jr(r){if(!(!r||!lr(r)))return U(r)&&sr(r)!==null?void 0:r}function Xt(r){(0,Yr.useEffect)(()=>{if(!r||typeof document>"u")return;let e=[...document.querySelectorAll('link[rel~="icon"]')],t=e.map(i=>i.getAttribute("href")),n;e.length===0&&(n=document.createElement("link"),n.rel="icon",n.setAttribute("data-graview-favicon",""),document.head.appendChild(n),e.push(n));for(let i of e)i.href=r;return()=>{n&&n.remove(),e.forEach((i,a)=>{i!==n&&t[a]!==null&&t[a]!==void 0&&i.setAttribute("href",t[a])})}},[r])}var d=h(S(),1),Zt=C.part((r,e)=>(0,d.jsx)(r.TidyFoot,{...e}),{quiet:!0}),Jt=C.part((r,e)=>(0,d.jsx)(r.Here,{...e}),{quiet:!0});function en(){let r=X(),[e,t]=(0,v.useState)("");return(0,v.useEffect)(()=>r?.store.subscribe((n,i)=>{i.some(a=>a.author.id!==r.principal.id)&&C.load().then(a=>a.sayTheirChange(i,r,t),String)}),[r]),(0,d.jsx)("span",{role:"status",className:"graview-bar-said",children:e})}var Ur="home",Qr="/",j="scene:whole";function rn(r){let{store:e,principal:t,views:n}=r,i=e.kindsKeptFrom(t),a=e.schema.kinds.filter(f=>!e.modules.disabledKinds.has(f)&&!i.has(f)),o=n?.arrangement?.(),l=n?.places()??[],p=br(o,e.schema,l),s=hr(e.schema,o,[...e.modules.administered.values()].flatMap(f=>f.kinds??[])),u=(f,x)=>(!e.graph.size.nodes||e.graph.count(f)>0)&&(p?x?p.places.has(`${f}|${x}`):p.kinds.has(f):!s.has(f)),c=[{key:Ur,label:"Home",path:Qr,group:"home",primary:!0}],g=l.filter(f=>a.includes(f.kind)&&f.as!==xr&&!f.hidden),w=new Set(ne(g).map(f=>Q(f,l,e.schema).toLowerCase())),y=f=>mr(f.as,wr(f,l)?Te(e.schema,f.kind).slice(1):void 0),b=new Set(o?.hide??[]),N=kr(a,o?.order,g);for(let{kind:f,view:x}of N){if(x){c.push({key:`place:${x.kind}:${x.as}`,label:Q(x,l,e.schema),path:y(x),group:"lists",kind:f,primary:p?p.places.has(`${f}|${x.as}`):!0});continue}let Y=Je(e.schema,f),A=w.has(Y.toLowerCase());c.push({key:`kind:${f}`,label:A?er(e.schema,f):Y,path:Te(e.schema,f),group:"lists",kind:f,primary:A||b.has(f)?!1:u(f),...b.has(f)?{hidden:!0}:{}})}for(let f of ne(g)){if(N.some(A=>A.view&&ge(A.view,f)))continue;let x=y(f),Y=[f.kind,...f.over??[]].some(A=>a.includes(A)&&u(A,f.as));c.some(A=>A.path===x)||c.push({key:`place:${f.kind}:${f.as}`,label:Q(f,l,e.schema),path:x,group:"pictures",kind:f.kind,primary:Y})}return a.some(f=>Object.keys(e.schema.tryDefinition(f)?.edges??{}).length>0)&&c.push({key:"connections",label:"Connections",path:"/map",group:"pictures",primary:!1}),c}function tn(r,e){let[t="/",n=""]=e.split("?"),i=r.find(o=>o.path===(n?`${t}?${n}`:t))??r.find(o=>o.path===t);if(i)return i.key;let a=`/${t.split("/").filter(Boolean)[0]??""}`;return r.find(o=>o.group==="lists"&&o.path===a)?.key??null}var Xr=(0,v.createContext)(null),nn=()=>(0,v.useContext)(Xr),ee=30,Zr=48,oe=640,_e=4,Re=2;function Jr(r){let{widths:e,current:t,room:n,more:i,gap:a=_e,primary:o,most:l=yr}=r;if(e.length===0||!(n>0)||!(i>0)||e.some(c=>!(c>0)))return null;let p=(c,g)=>c.reduce((w,y)=>w+e[y],0)+a*Math.max(0,c.length-1)+(g?a+i:0),s=(c,g)=>t<0||!c.includes(t)||c.slice(0,g).includes(t)?c.slice(0,g):[...c.filter(w=>w!==t).slice(0,g-1),t].sort((w,y)=>w-y),u=s(e.map((c,g)=>g).filter(c=>o?.[c]!==!1||c===t),l);if(p(u,u.length<e.length)<=n)return u.length>=Re?u:null;for(let c=u.length-1;c>=Re;c--){let g=s(u,c);if(p(g,!0)<=n)return g}return null}var an=`
|
|
281
281
|
.graview-bar{display:block;margin:0;padding:0;container:graview-bar/inline-size;flex:0 0 auto;position:relative;background:var(--graview-bar);border-bottom:1px solid var(--graview-edge);color:var(--graview-ink);font-family:var(--graview-font-body,system-ui)}
|
|
282
282
|
.graview-bar-row{display:flex;flex-wrap:nowrap;align-items:center;gap:16px;height:${Zr-1}px;margin:0;padding:0 16px}
|
|
283
283
|
.graview-bar-home,.graview-bar-face,.graview-bar-place,.graview-bar-item,.graview-bar-at{display:inline-flex;align-items:center;box-sizing:border-box;min-width:0;margin:0;border:0;background:none;box-shadow:none;font:inherit;letter-spacing:normal;text-transform:none;text-decoration:none;color:var(--graview-ink);cursor:pointer;text-align:left}
|
|
@@ -343,7 +343,7 @@ ${Br(`${l}[data-graview-motion='reduce']`,o)}`}var Ne=h(B(),1),Mr=new WeakMap,me
|
|
|
343
343
|
@container graview-bar (max-width: 300px){
|
|
344
344
|
.graview-bar-row{gap:4px;padding:0 10px}
|
|
345
345
|
}`,re={display:"inline-flex",alignItems:"center",justifyContent:"center",gap:6,minWidth:ee,height:ee,padding:0,borderRadius:8,border:"1px solid transparent",background:"none",boxShadow:"none",color:"var(--graview-ink-muted)",font:"inherit",fontSize:"0.875rem",cursor:"pointer",flex:"0 0 auto"};function on({brand:r,name:e,heading:t=1,home:n,faces:i,places:a,current:o,reach:l,tools:p,find:s=!0,description:u,findBox:c,onFind:g,switch:w="words",scenePlaces:y,skips:b,named:N=!0}){let V=(0,v.useRef)(null),f=X()?.who.size,[x,Y]=(0,v.useState)(null),[A,mt]=(0,v.useState)(null),[$,wt]=(0,v.useState)(!1),[vt,Ke]=(0,v.useState)(!1),[yt,ht]=(0,v.useState)(!0),[Ge,bt]=(0,v.useState)(null),le=i?i.pages.current:!y,xt=(0,v.useMemo)(()=>a.some(m=>m.hidden&&m.key!==o)?a.filter(m=>!m.hidden||m.key===o):a,[a,o]),Se=le?{places:xt,current:o,reach:l}:y,k=Se&&Se.places.length>0?Se:null,ze=k?k.places.findIndex(m=>m.key===k.current):-1,qe=!!i&&w==="words",je=k?k.places.map(m=>m.primary===!1?"0":"1").join(""):"",I=(0,v.useCallback)(()=>{let m=V.current;if(!m)return;let H=yn(m,ze,qe,je);H!==void 0&&bt(H);let q=H?!0:ln(m);q!==null&&ht(q)},[ze,qe,je]);(0,v.useLayoutEffect)(()=>{let m=V.current;if(!m)return;let H=()=>{let pe=m.getBoundingClientRect().width;wt(pe<oe),m.style.setProperty("--graview-bar-width",`${Math.round(pe)}px`),I()};H();let q=typeof document>"u"?void 0:document.fonts;if(q?.ready.then(I),q?.addEventListener?.("loadingdone",I),typeof ResizeObserver>"u")return()=>q?.removeEventListener?.("loadingdone",I);let Le=new ResizeObserver(H);Le.observe(m);for(let pe of m.querySelectorAll(".graview-bar-tools > *"))Le.observe(pe);return()=>{Le.disconnect(),q?.removeEventListener?.("loadingdone",I)}},[I]);let Pe=(0,v.useRef)(g);Pe.current=g,(0,v.useLayoutEffect)(()=>{Pe.current?.(s&&x?{slot:x,compact:$,own:A}:null)},[s,x,$,A]),(0,v.useLayoutEffect)(()=>()=>Pe.current?.(null),[]);let kt=(0,v.useCallback)(()=>{Ke(!0),requestAnimationFrame(()=>x?.querySelector("input")?.focus())},[x]),Ye=(0,v.useRef)(null),de=(0,v.useRef)(!1),Ue=(0,v.useCallback)(()=>{Ke(!1),de.current&&(de.current=!1,requestAnimationFrame(()=>Ye.current?.focus()))},[]),St=t===!1?"span":`h${t}`,Pt=n.href!==void 0?"a":"button",Lt=m=>H=>{!m||!rt(H)||(H.preventDefault(),m())},Et=!le,Qe=k&&!$&&Ge!==null?Ge.split(",").map(Number).filter(m=>m<k.places.length):null,ce=k?(0,d.jsx)(wn,{places:k.places,current:k.current,reach:k.reach,scene:Et,stands:Qe}):null,Tt=k?k.places.map(m=>m.label).join(`
|
|
346
|
-
`):"";(0,v.useLayoutEffect)(I,[I,e,r,Tt,k?.current,le,$,w,s]);let At=w==="icons"||!yt||$?"icons":"words";return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("header",{ref:V,className:"graview-bar","data-testid":"app-bar","data-graview-app-bar":"",...vt&&$?{"data-finding":""}:{},children:[(0,d.jsx)("style",{children:an}),b,(0,d.jsxs)("div",{className:"graview-bar-row",children:[N?(0,d.jsx)("div",{className:"graview-bar-app",children:(0,d.jsx)(St,{className:"graview-bar-name",children:(0,d.jsxs)(Pt,{...n.href!==void 0?{href:n.href,onClick:Lt(n.go)}:{type:"button",onClick:n.go},"data-testid":"app-home",...n.current?{"aria-current":"page"}:{},title:u?`${e} \u2014 ${u}`:`${e} \u2014 home`,className:"graview-bar-home",children:[(0,d.jsx)(Ce,{brand:r,size:20}),(0,d.jsx)("span",{className:"graview-bar-app-name","data-testid":"app-name",children:e})]})})}):null,i?(0,d.jsx)(sn,{faces:i,form:w,drawn:At}):null,(0,d.jsx)("div",{className:"graview-bar-mid",...Qe?{"data-places":"standing"}:!$&&ce?{"data-place":""}:{},children:$?null:ce}),!$&&k&&k.places.length>1?(0,d.jsxs)("span",{className:"graview-bar-ruler","aria-hidden":"true","data-graview-bar-ruler":"",children:[k.places.map(m=>(0,d.jsx)("span",{className:"graview-bar-at",children:m.label},m.key)),(0,d.jsxs)("span",{className:"graview-bar-at",children:[Me,(0,d.jsx)(nt,{})]})]}):null,N?(0,d.jsx)("span",{className:"graview-bar-ruler","aria-hidden":"true",children:(0,d.jsx)("span",{className:"graview-bar-name",children:e})}):null,(0,d.jsxs)("div",{className:"graview-bar-tools",children:[s?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("button",{type:"button",className:"graview-bar-find-open",ref:Ye,"data-testid":"app-find-open","aria-label":"Find",title:"Find",onClick:kt,style:{...re,display:void 0},children:(0,d.jsx)(un,{})}),(0,d.jsxs)("div",{className:"graview-bar-find","data-testid":"app-find",onBlur:m=>{let H=m.relatedTarget;H instanceof Node&&m.currentTarget.contains(H)||m.currentTarget.querySelector("input")?.value||Ue()},onKeyDownCapture:m=>{m.key==="Escape"&&$&&(de.current=!0)},onKeyDown:m=>{m.key!=="Escape"||!$||(!m.defaultPrevented||!m.currentTarget.querySelector("input")?.value?Ue():de.current=!1)},children:[(0,d.jsx)("div",{ref:Y,className:"graview-bar-find-slot",children:c}),(0,d.jsx)(cn,{})]})]}):null,(0,d.jsx)("div",{ref:mt,className:"graview-bar-own","data-graview-bar-own":""}),f?(0,d.jsx)(v.Suspense,{fallback:null,children:(0,d.jsx)(Jt,{scene:!le,compact:$})}):null,(0,d.jsx)(en,{}),p]})]})]}),$&&ce?(0,d.jsx)("div",{className:"graview-bar-line","data-graview-place-line":"","data-testid":"app-place-line",children:ce}):null]})}function sn({faces:r,form:e,drawn:t}){let n=i=>{let a=r[i];return(0,d.jsxs)("button",{type:"button",className:"graview-bar-face","data-testid":`app-face-${i}`,"aria-pressed":a.current,title:a.label,...a.reach&&!a.current?{onPointerEnter:a.reach,onPointerDown:a.reach,onFocus:a.reach}:{},onClick:()=>{a.current||a.go()},children:[i==="scene"?(0,d.jsx)(tt,{}):(0,d.jsx)(pn,{}),(0,d.jsx)("span",{children:a.label})]})};return(0,d.jsxs)("div",{className:"graview-bar-faces",role:"group","aria-label":`${r.scene.label} or ${r.pages.label}`,"data-testid":"app-faces","data-switch":e,"data-switch-drawn":t,children:[n("scene"),n("pages")]})}function ln(r){let e=r.querySelector(".graview-bar-faces"),t=r.querySelector(".graview-bar-mid"),n=r.querySelector(".graview-bar-find");if(!e||!t||n?.matches(":focus-within")||r.getBoundingClientRect().width<oe)return null;let a=it(e),o=t.querySelector(".graview-bar-place-words"),l=o?parseFloat(getComputedStyle(o).fontSize)||14:0,p=o?Math.min(o.scrollWidth+34,14*l):0,s=et(r);if(s===null)return!1;let u=t.getBoundingClientRect().width-p-s;if(n&&n.getBoundingClientRect().width>0){let c=parseFloat(getComputedStyle(n).flexBasis);isFinite(c)&&(u-=Math.max(0,c-n.getBoundingClientRect().width))}return e.getAttribute("data-switch-drawn")==="icons"?u>=a+2:u>=-1}function et(r){let e=r.querySelector(".graview-bar-app"),t=r.querySelector(".graview-bar-ruler>.graview-bar-name");if(!e||!t)return 0;let n=o=>o?.getBoundingClientRect().width??0,i=n(e.firstElementChild)-n(r.querySelector(".graview-bar-app-name"))+n(t)+2,a=parseFloat(getComputedStyle(e).maxWidth)/100*(e.parentElement.clientWidth-2*e.offsetLeft)||1/0;return i>a+.5?null:Math.max(0,i-n(e))}var rt=r=>r.button===0&&!(r.metaKey||r.ctrlKey||r.shiftKey||r.altKey);function dn(){let r=globalThis.navigator?.platform??"";return/Mac|iPhone|iPad|iPod/.test(r)?"\u2318K":"Ctrl K"}function cn(){let r=Dr(X()?.aiDesk);return(0,d.jsx)("span",{className:"graview-bar-find-keys","data-testid":"app-find-keys","aria-hidden":"true",children:r?"/":dn()})}function se({size:r,box:e=r,children:t}){return(0,d.jsx)("svg",{width:r,height:r,viewBox:`0 0 ${e} ${e}`,"aria-hidden":"true",focusable:"false",style:{flex:"0 0 auto"},children:t})}function tt(){return(0,d.jsxs)(se,{size:14,children:[(0,d.jsx)("path",{d:"M7 1.5 L12.5 4.5 L7 7.5 L1.5 4.5 Z",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinejoin:"round"}),(0,d.jsx)("path",{d:"M1.5 7.5 L7 10.5 L12.5 7.5",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinejoin:"round",strokeLinecap:"round"})]})}function pn(){return(0,d.jsxs)(se,{size:14,children:[(0,d.jsx)("rect",{x:"2.25",y:"1.75",width:"9.5",height:"10.5",rx:"1.5",fill:"none",stroke:"currentColor",strokeWidth:"1.3"}),(0,d.jsx)("path",{d:"M4.5 5 H9.5 M4.5 7.25 H9.5 M4.5 9.5 H7.5",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round"})]})}function nt(){return(0,d.jsx)(se,{size:10,children:(0,d.jsx)("path",{d:"M2 3.5 L5 6.5 L8 3.5",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})})}function un(){return(0,d.jsxs)(se,{size:16,children:[(0,d.jsx)("circle",{cx:"7",cy:"7",r:"4.75",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),(0,d.jsx)("path",{d:"M10.5 10.5 L14 14",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}function gn({place:r}){if(r.key===j)return(0,d.jsx)(tt,{});if(r.group==="home")return(0,d.jsx)(se,{size:13,box:14,children:(0,d.jsx)("path",{d:"M2 6.5 L7 2 L12 6.5 V12 H2 Z",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinejoin:"round"})});let e=r.kind?`hsl(${Math.round(nr(r.kind))} 55% 52%`:"rgb(128 128 128";return(0,d.jsx)("span",{"aria-hidden":"true",style:{display:"inline-block",width:12,height:8,clipPath:"polygon(50% 0, 100% 50%, 50% 100%, 0 50%)",background:r.group==="lists"?`${e})`:`linear-gradient(${e}), ${e})) center / 6px 4px no-repeat, ${e} / 0.35)`}})}var fn=[{group:"home"},{group:"lists",heading:"Lists"},{group:"pictures",heading:"Pictures"}],Me="More";function at({place:r,current:e,reach:t,standing:n,done:i}){let a=r.key===e,o=t.href?.(r.path);return(0,d.jsxs)(o!==void 0?"a":"button",{className:n?"graview-bar-at":"graview-bar-item","data-testid":`app-place-${r.key}`,"data-place-path":r.path,...a?{"aria-current":"page"}:{},...o!==void 0?{href:o}:{type:"button"},onClick:p=>{i(),t.go&&(o!==void 0&&!rt(p)||(p.preventDefault(),t.go(r)))},children:[n?null:(0,d.jsx)("span",{className:"graview-bar-mark",children:(0,d.jsx)(gn,{place:r})}),n&&a?(0,d.jsx)("span",{"data-testid":"app-place-current",children:r.label}):(0,d.jsx)("span",{children:r.label})]})}function mn({places:r,current:e,reach:t,id:n,done:i}){return(0,d.jsx)(d.Fragment,{children:fn.map(({group:a,heading:o})=>{let l=r.filter(s=>s.group===a);if(l.length===0)return null;let p=`${n}-${a}`;return(0,d.jsxs)("div",{role:"group",...o?{"aria-labelledby":p}:{"aria-label":l[0].label},"data-place-group":a,children:[o?(0,d.jsx)("p",{id:p,children:o}):null,(0,d.jsx)("ul",{children:l.map(s=>(0,d.jsx)("li",{children:(0,d.jsx)(at,{place:s,current:e,reach:t,standing:!1,done:i})},s.key))})]},a)})})}function wn({places:r,current:e,reach:t,scene:n,stands:i}){let a=J("places"),o=(0,v.useRef)(i);a.open||(o.current=i);let l=o.current,s=r.find(b=>b.key===e)?.label??"Places",u=l?r.filter((b,N)=>!l.includes(N)):r,c=vn(r,e,n),g=X(),w=g?.keptViews?.current(),y=!!(w&&(w.removed.length>0||g.views.places().some(b=>b.hidden)||w.may.lenses&&(g.views.arrangement?.()?.hide?.length??0)>0));return(0,d.jsxs)("nav",{className:l?"graview-bar-places":"graview-bar-place-at","aria-label":n?"What the scene shows":"The app\u2019s places",...l?{"data-testid":"app-places-standing"}:{},...c,children:[l?.map(b=>(0,d.jsx)(at,{place:r[b],current:e,reach:t,standing:!0,done:()=>{}},r[b].key)),u.length>0||y?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("button",{type:"button",className:l?"graview-bar-at":"graview-bar-place","data-testid":"app-places-open",...a.trigger,onClick:a.toggle,"aria-label":l?`${Me} \u2014 ${u.length} more ${n?"pictures":"places"}`:`${s} \u2014 ${n?"everything the scene shows":"every place"}`,title:l?u.map(b=>b.label).join(", "):s,children:[l?Me:(0,d.jsx)("span",{className:"graview-bar-place-words","data-testid":"app-place-current",children:s}),(0,d.jsx)(nt,{})]}),(0,d.jsxs)("div",{...a.pane,"data-testid":"app-places",hidden:!a.open,className:"graview-bar-list",style:Z,children:[(0,d.jsx)(mn,{places:u,current:e,reach:t,id:a.pane.id,done:()=>a.setOpen(!1)}),y&&a.open?(0,d.jsx)(v.Suspense,{fallback:null,children:(0,d.jsx)(Zt,{id:a.pane.id,scene:n,reach:t,done:()=>a.setOpen(!1)})}):null]})]}):null]})}function vn(r,e,t){let n=X()?.setMenuAt,i=a=>{let o=a.target.closest?.("[data-place-path],[data-testid=app-places-open]");if(!o||!n)return;let l={at:0};a.type==="pointerdown"?document.addEventListener("pointerup",()=>l.at||=Date.now(),{once:!0}):a.preventDefault();let p=a.nativeEvent;C.load().then(s=>s.placeGesture(p,o,r,e,t,n,l),String)};return{onContextMenu:a=>a.shiftKey||i(a),onKeyDown:a=>(a.key==="ContextMenu"||a.key==="F10"&&a.shiftKey)&&i(a),onPointerDown:a=>a.pointerType!=="mouse"&&a.isPrimary&&i(a)}}function yn(r,e,t,n){let i=r.querySelector("[data-graview-bar-ruler]"),a=r.querySelector(".graview-bar-mid");if(!i||!a)return null;let o=r.querySelector(".graview-bar-find");if(o?.matches(":focus-within"))return;if(r.getBoundingClientRect().width<oe)return null;let l=et(r);if(l===null)return null;let p=[...i.children].map(V=>V.getBoundingClientRect().width),s=p.pop()??0,u=r.querySelector(".graview-bar-faces"),c=u&&t?it(u):0,g=u?.getAttribute("data-switch-drawn")==="words"?c:0,w=a.getBoundingClientRect().left+l,y=o?.getBoundingClientRect(),b=y&&y.width>0?y.right-w-(parseFloat(getComputedStyle(o).minWidth)||0)-16:a.getBoundingClientRect().width-l,N=[...n].map(V=>V!=="0");return Jr({widths:p,current:e,room:Math.floor(b+g-c),more:s,primary:N})?.join(",")??null}function it(r){return[...r.querySelectorAll(".graview-bar-face span")].reduce((e,t)=>e+t.scrollWidth+10,0)}var hn=r=>`graview:lenses:${r}`,bn=(r,e)=>r?.name??e.kinds.join(",");function De(r){try{let e=JSON.parse(localStorage.getItem(hn(r))??"[]");return Array.isArray(e)?e.filter(t=>typeof t?.title=="string"&&typeof t.lens=="string"):[]}catch{return[]}}var G=h(B(),1);var T=h(S(),1);function xn({scheme:r,onScheme:e,profileHref:t,keeping:n,hostActions:i=kn,signature:a=!1}){let{store:o,principal:l,seats:p,people:s}=fe(),u=J("profile"),c=u.open,[g,w]=(0,G.useState)(!1);(0,G.useEffect)(()=>Ln(ye),[]),c&&!g&&w(!0),(0,G.useEffect)(()=>{c&&ye()},[c]);let y=l.id===void 0?void 0:o.graph.getNode(l.id),b=y===void 0?l.id===void 0?"Nobody in particular":rr(l,{graph:o.graph,schema:o.schema,seats:p,people:s}):Ze(o.schema.tryDefinition(y.kind),y);return(0,T.jsxs)("div",{style:{position:"relative"},children:[(0,T.jsx)("button",{type:"button","data-testid":"profile-button",...u.trigger,onClick:u.toggle,onPointerEnter:ye,onFocus:ye,"aria-label":`${b} \u2014 you, your seat and your settings`,title:`${b} \u2014 you, your seat and your settings`,style:{...re,borderRadius:999},children:(0,T.jsx)("span",{"aria-hidden":"true","data-testid":"profile-mark",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:ee-4,height:ee-4,borderRadius:999,fontSize:"0.8125rem",fontWeight:600,background:"var(--graview-panel-muted)",color:"var(--graview-ink)",border:"1px solid var(--graview-edge)"},children:En(b)})}),(0,T.jsxs)("section",{...u.pane,"aria-label":"Profile","data-testid":"profile","data-graview-offstage":"",hidden:!c,style:{...Z,width:280,maxWidth:"calc(100vw - 32px)",maxHeight:"min(62cqh, 520px)",overflowY:"auto",overflowX:"hidden",display:c?"grid":"none",gap:12,padding:12,borderRadius:10,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)"},children:[g?(0,T.jsx)(G.Suspense,{fallback:null,children:(0,T.jsx)(Sn,{part:"top",name:b,me:y,profileHref:t,hostActions:i,close:()=>u.setOpen(!1)})}):null,(0,T.jsxs)("div",{className:"graview-profile-keeping","data-testid":"profile-keeping",style:An,children:[(0,T.jsx)("span",{style:Tn,children:"Keeping this app"}),n]}),g?(0,T.jsx)(G.Suspense,{fallback:null,children:(0,T.jsx)(Pn,{part:"rest",name:b,me:y,scheme:r,onScheme:e,hostActions:i,signature:a,close:()=>u.setOpen(!1)})}):null]})]})}var kn=[],ye=()=>C.prefetch(),Sn=C.part((r,e)=>(0,T.jsx)(r.ProfilePane,{...e}),{what:"The rest of your menu"}),Pn=C.part((r,e)=>(0,T.jsx)(r.ProfilePane,{...e}),{quiet:!0});function Ln(r){let e=()=>{(typeof navigator>"u"||navigator.onLine!==!1)&&r()},t=globalThis;if(t.requestIdleCallback){let i=t.requestIdleCallback(e,{timeout:5e3});return()=>t.cancelIdleCallback?.(i)}let n=setTimeout(e,2500);return()=>clearTimeout(n)}function En(r){return(r.trim()[0]??"?").toUpperCase()}var Tn={fontSize:"0.75rem",letterSpacing:"0.14em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},An={paddingTop:10,borderTop:"1px solid var(--graview-edge)"};function $n(r){return!(r==="hidden"||r===!1)}var Fe=h(B(),1);var ot="The whole thing",he=r=>`scene:${r.kind}:${r.as}`;function st(r){let{view:e}=r,t=r.places.filter(c=>!r.hidden.has(c.kind)),n=ne(t),i=(c,g)=>{if(c===j)return Sr(Pr(g,!0),"view",null);let w=n.find(y=>he(y)===c);return w?Er(g,w.over?.find(y=>g.focusId===ae(y))??w.kind,w.as):null},a=e.within?.view,o=c=>e.focusId===ae(c.kind)&&(a===void 0?t.filter(g=>g.kind===c.kind).at(-1)===c:a===c.as),l=t.find(c=>o(c)&&(a!==void 0||!e.overview)),p=l?n.find(c=>ge(c,l)):void 0,s=n.filter(c=>!c.hidden||c===p);return{places:[{key:j,label:ot,path:`${Ae}${Oe(i(j,$e))}`,group:"home"},...s.map(c=>({key:he(c),label:Q(c,t,r.schema),path:`${Ae}${Oe(i(he(c),$e))}`,group:"pictures",kind:c.kind}))],current:p?he(p):j,to:i}}function On(){let{store:r,views:e,hiddenKinds:t}=fe(),{view:n,go:i}=Nr(),a=e.places(),o=(0,Fe.useMemo)(()=>st({places:a,hidden:t,view:n,schema:r.schema}),[a,t,n,r.schema]),l=(0,Fe.useMemo)(()=>({go:p=>{let s=o.to(p.key,n);s&&i(s)}}),[o,n,i]);return{places:o.places,current:o.current,reach:l}}var te=h(B(),1);var _=h(S(),1),Nn=C.part((r,e)=>(0,_.jsx)(r.ProblemRows,{...e}),{what:"The problems",as:"li"}),Ve=()=>C.prefetch();function Hn({clean:r="All rules hold"}){let e=Or(),{set:t}=$r(),n=e.length,[i,a]=(0,te.useState)(!1),o=J("problems",{open:i&&n>0,onOpenChange:a}),l=o.open,p=dt(e,r);return(0,te.useEffect)(()=>{if(n===0)return;let s=setTimeout(Ve,1500);return()=>clearTimeout(s)},[n>0]),(0,_.jsxs)("div",{style:{position:"relative",display:"inline-flex"},children:[(0,_.jsxs)("button",{type:"button","data-testid":"standing",...o.trigger,"aria-disabled":n===0?!0:void 0,"aria-label":p,onClick:n===0?void 0:o.toggle,onPointerEnter:n===0?void 0:Ve,onFocus:n===0?void 0:Ve,title:p,style:{...re,padding:n===0?0:"0 8px",cursor:n===0?"default":"pointer",color:n===0?"var(--graview-ink-muted)":lt(e),fontVariantNumeric:"tabular-nums",fontWeight:600},children:[(0,_.jsx)(ct,{tone:n===0?"var(--graview-good)":lt(e)}),n>0?(0,_.jsx)("span",{"aria-hidden":"true",children:n}):null]}),l?(0,_.jsx)("ol",{...o.pane,"data-testid":"problems",style:{...Z,width:300,maxHeight:"min(48cqh, 420px)",overflow:"auto",margin:0,padding:4,listStyle:"none",display:"grid",borderRadius:10,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)"},children:(0,_.jsx)(te.Suspense,{fallback:null,children:(0,_.jsx)(Nn,{violations:e,pick:s=>{t(s.nodeIds),o.setOpen(!1)}})})}):null]})}function dt(r,e){return r.length===0?e:`${tr(r)} \u2014 open what is broken, and what would fix it`}var lt=r=>r.some(e=>e.status==="could-not-judge"||e.status==="over-budget")?"var(--graview-bad)":"var(--graview-warn)";function ct({tone:r}){return(0,_.jsx)("span",{"aria-hidden":"true",style:{width:8,height:8,borderRadius:999,flex:"0 0 auto",background:r}})}function Bn(r,e,t=[]){if(r.focusId)return r.focusId;let i=(r.selection??[]).map(Lr).find(a=>a!==null)??t.find(a=>e.includes(a))??e[0]??null;return i===null?null:ae(i)}var xe=h(S(),1),be=M(R(()=>(__graviewPreload(import.meta.url,["./chunk.GNBN3BK7.js","./chunk.XTMOFRHL.js","./chunk.NLBIX7LH.js","./chunk.GACKGEUY.js","./chunk.2GLJH253.js","./chunk.GUMJEVVP.js","./chunk.4VW6THJF.js","./chunk.SAHNXAV3.js","./chunk.DHAK6PPX.js","./chunk.DUWYF7BO.js","./chunk.UGJSMNVO.js","./chunk.NR5ODXMO.js","./chunk.WVUJXDXZ.js","./chunk.TPG6IY4M.js","./chunk.NFDLCUCC.js","./chunk.X7JMJSLU.js","./chunk.PPRSGM64.js","./chunk.5Y3Q7ONN.js","./chunk.KTFUVR4V.js","./chunk.GZHZLJBF.js","./chunk.RQBEQYB2.js","./chunk.OJGHDWI6.js","./chunk.6VAFNCR4.js","./chunk.N4M54YK6.js","./chunk.KVJFY7N5.js","./chunk.DPHTUTOS.js","./chunk.2UIUMG23.js","./chunk.KA44WNB4.js","./chunk.SDO3U72B.js","./chunk.4TJOS4C7.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.YEVA72L2.js"))));function Cn(){return be.load().then(()=>{})}var Rn=[{cardinality:"one",fidelity:"full",slot:"page"},{cardinality:"one",fidelity:"summary",slot:"card"},{cardinality:"one",fidelity:"glyph",slot:"row"},{cardinality:"many",fidelity:"full"},{cardinality:"many",fidelity:"summary"},{cardinality:"many",fidelity:"glyph"}];function Mn({schema:r,specs:e,kind:t,view:n}){let i=be.current.frameworkViews(r,e).lookup(t,{cardinality:n.cardinality,fidelity:n.fidelity});return i?(0,xe.jsx)(i,{...n}):null}var _n=be.part((r,e)=>(0,xe.jsx)(Mn,{...e}),{what:"This view"});function pt(r,e,t){for(let n of e.kinds){let i=t?.[n];for(let a of Rn){let o=p=>(0,xe.jsx)(_n,{schema:e,specs:t,kind:n,view:p}),l=a.slot!==void 0&&i?.[a.slot]!==void 0;l&&(o.says=(p,s)=>be.current?.frameworkViews(e,t).lookup(n,{cardinality:a.cardinality,fidelity:a.fidelity})?.says?.(p,s)),r.register(n,{cardinality:a.cardinality,fidelity:a.fidelity},l?o:Tr(o))}}return r}function Dn(r,e){return pt(Ar(r),r,e)}var Ie=h(B(),1);var F=h(S(),1),ut=M(R(()=>(__graviewPreload(import.meta.url,["./chunk.44G5A53D.js","./chunk.X7N3JUO4.js","./chunk.NTLHEHOM.js","./chunk.V2GSBYDK.js","./chunk.GNBN3BK7.js","./chunk.XTMOFRHL.js","./chunk.NLBIX7LH.js","./chunk.GACKGEUY.js","./chunk.HJCQ6I3S.js","./chunk.KVEDIBXS.js","./chunk.7VT3TRHR.js","./chunk.GTPC6JOW.js","./chunk.2GLJH253.js","./chunk.GUMJEVVP.js","./chunk.4VW6THJF.js","./chunk.SAHNXAV3.js","./chunk.DHAK6PPX.js","./chunk.YDL5BSTG.js","./chunk.DUWYF7BO.js","./chunk.UGJSMNVO.js","./chunk.NR5ODXMO.js","./chunk.E5GM2SMO.js","./chunk.NQZ73QV7.js","./chunk.O45VO36H.js","./chunk.UT6642FC.js","./chunk.SUPWMV2F.js","./chunk.MAFFUPCR.js","./chunk.WVUJXDXZ.js","./chunk.TPG6IY4M.js","./chunk.NFDLCUCC.js","./chunk.X7JMJSLU.js","./chunk.PPRSGM64.js","./chunk.5Y3Q7ONN.js","./chunk.KTFUVR4V.js","./chunk.GZHZLJBF.js","./chunk.RQBEQYB2.js","./chunk.OJGHDWI6.js","./chunk.6VAFNCR4.js","./chunk.N4M54YK6.js","./chunk.KVJFY7N5.js","./chunk.DPHTUTOS.js","./chunk.2UIUMG23.js","./chunk.KA44WNB4.js","./chunk.SDO3U72B.js","./chunk.4TJOS4C7.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.72W6S746.js"))));function Fn({lens:r,view:e}){let t=ut.current.declaredLensView(r);return(0,F.jsx)(t,{...e})}var Vn=ut.part((r,e)=>(0,F.jsx)(Fn,{...e}),{what:"This picture"});function In(r){let e=n=>(0,F.jsx)(Ie.Suspense,{fallback:null,children:(0,F.jsx)(Vn,{lens:r,view:n})});r.lens==="blocks"&&(e.flows=!0);let t=r.lens==="blocks"?r.options.blocks?.[0]:void 0;return typeof t?.headline=="string"&&(e.lede=t),r.create===!1&&(e.creates=!1),e}var gt=M(R(()=>(__graviewPreload(import.meta.url,["./chunk.GNBN3BK7.js","./chunk.XTMOFRHL.js","./chunk.NLBIX7LH.js","./chunk.GACKGEUY.js","./chunk.2GLJH253.js","./chunk.GUMJEVVP.js","./chunk.4VW6THJF.js","./chunk.SAHNXAV3.js","./chunk.DHAK6PPX.js","./chunk.DUWYF7BO.js","./chunk.UGJSMNVO.js","./chunk.NR5ODXMO.js","./chunk.WVUJXDXZ.js","./chunk.TPG6IY4M.js","./chunk.NFDLCUCC.js","./chunk.X7JMJSLU.js","./chunk.PPRSGM64.js","./chunk.5Y3Q7ONN.js","./chunk.KTFUVR4V.js","./chunk.GZHZLJBF.js","./chunk.RQBEQYB2.js","./chunk.OJGHDWI6.js","./chunk.6VAFNCR4.js","./chunk.N4M54YK6.js","./chunk.KVJFY7N5.js","./chunk.DPHTUTOS.js","./chunk.2UIUMG23.js","./chunk.KA44WNB4.js","./chunk.SDO3U72B.js","./chunk.4TJOS4C7.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.ILZYRJDS.js"))));function Wn({blocks:r,view:e}){let t=gt.current.homeView(r);return(0,F.jsx)(t,{...e})}var Kn=gt.part((r,e)=>(0,F.jsx)(Wn,{...e}),{what:"The home"});function Gn(r){let e=t=>(0,F.jsx)(Ie.Suspense,{fallback:null,children:(0,F.jsx)(Kn,{blocks:r,view:t})});return Object.defineProperty(e,Symbol.for("graview.home-blocks"),{value:!0}),e}function zn(r,e){return e.home&&e.home.length>0&&r.home?.(Gn(e.home)),ft(r,e),r.arrange?.(e.pages),r}function ft(r,e,t){for(let n of vr(e).drawn){if(t&&r.places().some(o=>o.title===n.title))continue;let i=In(n),a={title:n.title,lens:n.lens,...n.across?{across:n.across}:{},...t?{beside:t}:{},...n.hidden?{hidden:!0}:{},over:n.kinds,...t?{}:{declared:!0}};for(let o of n.kinds)r.register(o,{cardinality:"many",fidelity:"full"},i,a),r.register(o,{cardinality:"many",fidelity:"summary"},i,a)}}function qn(r,e,t){t.length>0&&ft(r,{schema:e,lenses:t.map(({lens:n,...i})=>({...i,name:n}))},!0)}function jn(r,e,t){qn(r,e,De(t))}var z=h(B(),1),ke=h(S(),1);var We=r=>`graview:first-look:${r}`;function Yn(r,e){if(r.seen!==void 0)try{return typeof r.seen=="function"?r.seen():r.seen}catch{return!0}try{return window.localStorage.getItem(We(e))!==null}catch{return!1}}function Un(r,e){if(r.seen===void 0)try{window.localStorage.setItem(We(e),"seen")}catch{}}var Qn=M(R(()=>(__graviewPreload(import.meta.url,["./chunk.KA44WNB4.js","./chunk.SDO3U72B.js","./chunk.4TJOS4C7.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.SFAAM4KE.js")))),Xn=Qn.part((r,e)=>{let t=r.FirstLookHints;return(0,ke.jsx)(t,{...e})},{quiet:!0});function Zn({firstLook:r,root:e,app:t}){let n=(0,z.useRef)(null);n.current=r===!0?{}:r||null;let[i,a]=(0,z.useState)(()=>n.current!==null&&typeof window<"u"&&!Yn(n.current,t)),o=(0,z.useCallback)(l=>{if(a(!1),l===null)return;let p=n.current??{};Un(p,t),p.onDone?.(l)},[t]);return!i||n.current===null?null:(0,ke.jsx)(z.Suspense,{fallback:null,children:(0,ke.jsx)(Xn,{root:e,steps:n.current.steps??[],onEnd:o})})}export{Nt as a,Ht as b,me as c,Mt as d,ta as e,Dr as f,na as g,Be as h,Xt as i,Kr as j,Wt as k,Kt as l,ve as m,Gt as n,qt as o,jt as p,Yt as q,C as r,rn as s,tn as t,Xr as u,nn as v,re as w,on as x,xn as y,$n as z,On as A,hn as B,bn as C,De as D,Hn as E,dt as F,ct as G,Bn as H,zn as I,qn as J,jn as K,Cn as L,Dn as M,Zn as N};
|
|
346
|
+
`):"";(0,v.useLayoutEffect)(I,[I,e,r,Tt,k?.current,le,$,w,s]);let At=w==="icons"||!yt||$?"icons":"words";return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("header",{ref:V,className:"graview-bar","data-testid":"app-bar","data-graview-app-bar":"",...vt&&$?{"data-finding":""}:{},children:[(0,d.jsx)("style",{children:an}),b,(0,d.jsxs)("div",{className:"graview-bar-row",children:[N?(0,d.jsx)("div",{className:"graview-bar-app",children:(0,d.jsx)(St,{className:"graview-bar-name",children:(0,d.jsxs)(Pt,{...n.href!==void 0?{href:n.href,onClick:Lt(n.go)}:{type:"button",onClick:n.go},"data-testid":"app-home",...n.current?{"aria-current":"page"}:{},title:u?`${e} \u2014 ${u}`:`${e} \u2014 home`,className:"graview-bar-home",children:[(0,d.jsx)(Ce,{brand:r,size:20}),(0,d.jsx)("span",{className:"graview-bar-app-name","data-testid":"app-name",children:e})]})})}):null,i?(0,d.jsx)(sn,{faces:i,form:w,drawn:At}):null,(0,d.jsx)("div",{className:"graview-bar-mid",...Qe?{"data-places":"standing"}:!$&&ce?{"data-place":""}:{},children:$?null:ce}),!$&&k&&k.places.length>1?(0,d.jsxs)("span",{className:"graview-bar-ruler","aria-hidden":"true","data-graview-bar-ruler":"",children:[k.places.map(m=>(0,d.jsx)("span",{className:"graview-bar-at",children:m.label},m.key)),(0,d.jsxs)("span",{className:"graview-bar-at",children:[Me,(0,d.jsx)(nt,{})]})]}):null,N?(0,d.jsx)("span",{className:"graview-bar-ruler","aria-hidden":"true",children:(0,d.jsx)("span",{className:"graview-bar-name",children:e})}):null,(0,d.jsxs)("div",{className:"graview-bar-tools",children:[s?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("button",{type:"button",className:"graview-bar-find-open",ref:Ye,"data-testid":"app-find-open","aria-label":"Find",title:"Find",onClick:kt,style:{...re,display:void 0},children:(0,d.jsx)(un,{})}),(0,d.jsxs)("div",{className:"graview-bar-find","data-testid":"app-find",onBlur:m=>{let H=m.relatedTarget;H instanceof Node&&m.currentTarget.contains(H)||m.currentTarget.querySelector("input")?.value||Ue()},onKeyDownCapture:m=>{m.key==="Escape"&&$&&(de.current=!0)},onKeyDown:m=>{m.key!=="Escape"||!$||(!m.defaultPrevented||!m.currentTarget.querySelector("input")?.value?Ue():de.current=!1)},children:[(0,d.jsx)("div",{ref:Y,className:"graview-bar-find-slot",children:c}),(0,d.jsx)(cn,{})]})]}):null,(0,d.jsx)("div",{ref:mt,className:"graview-bar-own","data-graview-bar-own":""}),f?(0,d.jsx)(v.Suspense,{fallback:null,children:(0,d.jsx)(Jt,{scene:!le,compact:$})}):null,(0,d.jsx)(en,{}),p]})]})]}),$&&ce?(0,d.jsx)("div",{className:"graview-bar-line","data-graview-place-line":"","data-testid":"app-place-line",children:ce}):null]})}function sn({faces:r,form:e,drawn:t}){let n=i=>{let a=r[i];return(0,d.jsxs)("button",{type:"button",className:"graview-bar-face","data-testid":`app-face-${i}`,"aria-pressed":a.current,title:a.label,...a.reach&&!a.current?{onPointerEnter:a.reach,onPointerDown:a.reach,onFocus:a.reach}:{},onClick:()=>{a.current||a.go()},children:[i==="scene"?(0,d.jsx)(tt,{}):(0,d.jsx)(pn,{}),(0,d.jsx)("span",{children:a.label})]})};return(0,d.jsxs)("div",{className:"graview-bar-faces",role:"group","aria-label":`${r.scene.label} or ${r.pages.label}`,"data-testid":"app-faces","data-switch":e,"data-switch-drawn":t,children:[n("scene"),n("pages")]})}function ln(r){let e=r.querySelector(".graview-bar-faces"),t=r.querySelector(".graview-bar-mid"),n=r.querySelector(".graview-bar-find");if(!e||!t||n?.matches(":focus-within")||r.getBoundingClientRect().width<oe)return null;let a=it(e),o=t.querySelector(".graview-bar-place-words"),l=o?parseFloat(getComputedStyle(o).fontSize)||14:0,p=o?Math.min(o.scrollWidth+34,14*l):0,s=et(r);if(s===null)return!1;let u=t.getBoundingClientRect().width-p-s;if(n&&n.getBoundingClientRect().width>0){let c=parseFloat(getComputedStyle(n).flexBasis);isFinite(c)&&(u-=Math.max(0,c-n.getBoundingClientRect().width))}return e.getAttribute("data-switch-drawn")==="icons"?u>=a+2:u>=-1}function et(r){let e=r.querySelector(".graview-bar-app"),t=r.querySelector(".graview-bar-ruler>.graview-bar-name");if(!e||!t)return 0;let n=o=>o?.getBoundingClientRect().width??0,i=n(e.firstElementChild)-n(r.querySelector(".graview-bar-app-name"))+n(t)+2,a=parseFloat(getComputedStyle(e).maxWidth)/100*(e.parentElement.clientWidth-2*e.offsetLeft)||1/0;return i>a+.5?null:Math.max(0,i-n(e))}var rt=r=>r.button===0&&!(r.metaKey||r.ctrlKey||r.shiftKey||r.altKey);function dn(){let r=globalThis.navigator?.platform??"";return/Mac|iPhone|iPad|iPod/.test(r)?"\u2318K":"Ctrl K"}function cn(){let r=Dr(X()?.aiDesk);return(0,d.jsx)("span",{className:"graview-bar-find-keys","data-testid":"app-find-keys","aria-hidden":"true",children:r?"/":dn()})}function se({size:r,box:e=r,children:t}){return(0,d.jsx)("svg",{width:r,height:r,viewBox:`0 0 ${e} ${e}`,"aria-hidden":"true",focusable:"false",style:{flex:"0 0 auto"},children:t})}function tt(){return(0,d.jsxs)(se,{size:14,children:[(0,d.jsx)("path",{d:"M7 1.5 L12.5 4.5 L7 7.5 L1.5 4.5 Z",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinejoin:"round"}),(0,d.jsx)("path",{d:"M1.5 7.5 L7 10.5 L12.5 7.5",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinejoin:"round",strokeLinecap:"round"})]})}function pn(){return(0,d.jsxs)(se,{size:14,children:[(0,d.jsx)("rect",{x:"2.25",y:"1.75",width:"9.5",height:"10.5",rx:"1.5",fill:"none",stroke:"currentColor",strokeWidth:"1.3"}),(0,d.jsx)("path",{d:"M4.5 5 H9.5 M4.5 7.25 H9.5 M4.5 9.5 H7.5",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round"})]})}function nt(){return(0,d.jsx)(se,{size:10,children:(0,d.jsx)("path",{d:"M2 3.5 L5 6.5 L8 3.5",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})})}function un(){return(0,d.jsxs)(se,{size:16,children:[(0,d.jsx)("circle",{cx:"7",cy:"7",r:"4.75",fill:"none",stroke:"currentColor",strokeWidth:"1.5"}),(0,d.jsx)("path",{d:"M10.5 10.5 L14 14",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}function gn({place:r}){if(r.key===j)return(0,d.jsx)(tt,{});if(r.group==="home")return(0,d.jsx)(se,{size:13,box:14,children:(0,d.jsx)("path",{d:"M2 6.5 L7 2 L12 6.5 V12 H2 Z",fill:"none",stroke:"currentColor",strokeWidth:"1.3",strokeLinejoin:"round"})});let e=r.kind?`hsl(${Math.round(nr(r.kind))} 55% 52%`:"rgb(128 128 128";return(0,d.jsx)("span",{"aria-hidden":"true",style:{display:"inline-block",width:12,height:8,clipPath:"polygon(50% 0, 100% 50%, 50% 100%, 0 50%)",background:r.group==="lists"?`${e})`:`linear-gradient(${e}), ${e})) center / 6px 4px no-repeat, ${e} / 0.35)`}})}var fn=[{group:"home"},{group:"lists",heading:"Lists"},{group:"pictures",heading:"Pictures"}],Me="More";function at({place:r,current:e,reach:t,standing:n,done:i}){let a=r.key===e,o=t.href?.(r.path);return(0,d.jsxs)(o!==void 0?"a":"button",{className:n?"graview-bar-at":"graview-bar-item","data-testid":`app-place-${r.key}`,"data-place-path":r.path,...a?{"aria-current":"page"}:{},...o!==void 0?{href:o}:{type:"button"},onClick:p=>{i(),t.go&&(o!==void 0&&!rt(p)||(p.preventDefault(),t.go(r)))},children:[n?null:(0,d.jsx)("span",{className:"graview-bar-mark",children:(0,d.jsx)(gn,{place:r})}),n&&a?(0,d.jsx)("span",{"data-testid":"app-place-current",children:r.label}):(0,d.jsx)("span",{children:r.label})]})}function mn({places:r,current:e,reach:t,id:n,done:i}){return(0,d.jsx)(d.Fragment,{children:fn.map(({group:a,heading:o})=>{let l=r.filter(s=>s.group===a);if(l.length===0)return null;let p=`${n}-${a}`;return(0,d.jsxs)("div",{role:"group",...o?{"aria-labelledby":p}:{"aria-label":l[0].label},"data-place-group":a,children:[o?(0,d.jsx)("p",{id:p,children:o}):null,(0,d.jsx)("ul",{children:l.map(s=>(0,d.jsx)("li",{children:(0,d.jsx)(at,{place:s,current:e,reach:t,standing:!1,done:i})},s.key))})]},a)})})}function wn({places:r,current:e,reach:t,scene:n,stands:i}){let a=J("places"),o=(0,v.useRef)(i);a.open||(o.current=i);let l=o.current,s=r.find(b=>b.key===e)?.label??"Places",u=l?r.filter((b,N)=>!l.includes(N)):r,c=vn(r,e,n),g=X(),w=g?.keptViews?.current(),y=!!(w&&(w.removed.length>0||g.views.places().some(b=>b.hidden)||w.may.lenses&&(g.views.arrangement?.()?.hide?.length??0)>0));return(0,d.jsxs)("nav",{className:l?"graview-bar-places":"graview-bar-place-at","aria-label":n?"What the scene shows":"The app\u2019s places",...l?{"data-testid":"app-places-standing"}:{},...c,children:[l?.map(b=>(0,d.jsx)(at,{place:r[b],current:e,reach:t,standing:!0,done:()=>{}},r[b].key)),u.length>0||y?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("button",{type:"button",className:l?"graview-bar-at":"graview-bar-place","data-testid":"app-places-open",...a.trigger,onClick:a.toggle,"aria-label":l?`${Me} \u2014 ${u.length} more ${n?"pictures":"places"}`:`${s} \u2014 ${n?"everything the scene shows":"every place"}`,title:l?u.map(b=>b.label).join(", "):s,children:[l?Me:(0,d.jsx)("span",{className:"graview-bar-place-words","data-testid":"app-place-current",children:s}),(0,d.jsx)(nt,{})]}),(0,d.jsxs)("div",{...a.pane,"data-testid":"app-places",hidden:!a.open,className:"graview-bar-list",style:Z,children:[(0,d.jsx)(mn,{places:u,current:e,reach:t,id:a.pane.id,done:()=>a.setOpen(!1)}),y&&a.open?(0,d.jsx)(v.Suspense,{fallback:null,children:(0,d.jsx)(Zt,{id:a.pane.id,scene:n,reach:t,done:()=>a.setOpen(!1)})}):null]})]}):null]})}function vn(r,e,t){let n=X()?.setMenuAt,i=a=>{let o=a.target.closest?.("[data-place-path],[data-testid=app-places-open]");if(!o||!n)return;let l={at:0};a.type==="pointerdown"?document.addEventListener("pointerup",()=>l.at||=Date.now(),{once:!0}):a.preventDefault();let p=a.nativeEvent;C.load().then(s=>s.placeGesture(p,o,r,e,t,n,l),String)};return{onContextMenu:a=>a.shiftKey||i(a),onKeyDown:a=>(a.key==="ContextMenu"||a.key==="F10"&&a.shiftKey)&&i(a),onPointerDown:a=>a.pointerType!=="mouse"&&a.isPrimary&&i(a)}}function yn(r,e,t,n){let i=r.querySelector("[data-graview-bar-ruler]"),a=r.querySelector(".graview-bar-mid");if(!i||!a)return null;let o=r.querySelector(".graview-bar-find");if(o?.matches(":focus-within"))return;if(r.getBoundingClientRect().width<oe)return null;let l=et(r);if(l===null)return null;let p=[...i.children].map(V=>V.getBoundingClientRect().width),s=p.pop()??0,u=r.querySelector(".graview-bar-faces"),c=u&&t?it(u):0,g=u?.getAttribute("data-switch-drawn")==="words"?c:0,w=a.getBoundingClientRect().left+l,y=o?.getBoundingClientRect(),b=y&&y.width>0?y.right-w-(parseFloat(getComputedStyle(o).minWidth)||0)-16:a.getBoundingClientRect().width-l,N=[...n].map(V=>V!=="0");return Jr({widths:p,current:e,room:Math.floor(b+g-c),more:s,primary:N})?.join(",")??null}function it(r){return[...r.querySelectorAll(".graview-bar-face span")].reduce((e,t)=>e+t.scrollWidth+10,0)}var hn=r=>`graview:lenses:${r}`,bn=(r,e)=>r?.name??e.kinds.join(",");function De(r){try{let e=JSON.parse(localStorage.getItem(hn(r))??"[]");return Array.isArray(e)?e.filter(t=>typeof t?.title=="string"&&typeof t.lens=="string"):[]}catch{return[]}}var G=h(B(),1);var T=h(S(),1);function xn({scheme:r,onScheme:e,profileHref:t,keeping:n,hostActions:i=kn,signature:a=!1}){let{store:o,principal:l,seats:p,people:s}=fe(),u=J("profile"),c=u.open,[g,w]=(0,G.useState)(!1);(0,G.useEffect)(()=>Ln(ye),[]),c&&!g&&w(!0),(0,G.useEffect)(()=>{c&&ye()},[c]);let y=l.id===void 0?void 0:o.graph.getNode(l.id),b=y===void 0?l.id===void 0?"Nobody in particular":rr(l,{graph:o.graph,schema:o.schema,seats:p,people:s}):Ze(o.schema.tryDefinition(y.kind),y);return(0,T.jsxs)("div",{style:{position:"relative"},children:[(0,T.jsx)("button",{type:"button","data-testid":"profile-button",...u.trigger,onClick:u.toggle,onPointerEnter:ye,onFocus:ye,"aria-label":`${b} \u2014 you, your seat and your settings`,title:`${b} \u2014 you, your seat and your settings`,style:{...re,borderRadius:999},children:(0,T.jsx)("span",{"aria-hidden":"true","data-testid":"profile-mark",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:ee-4,height:ee-4,borderRadius:999,fontSize:"0.8125rem",fontWeight:600,background:"var(--graview-panel-muted)",color:"var(--graview-ink)",border:"1px solid var(--graview-edge)"},children:En(b)})}),(0,T.jsxs)("section",{...u.pane,"aria-label":"Profile","data-testid":"profile","data-graview-offstage":"",hidden:!c,style:{...Z,width:280,maxWidth:"calc(100vw - 32px)",maxHeight:"min(62cqh, 520px)",overflowY:"auto",overflowX:"hidden",display:c?"grid":"none",gap:12,padding:12,borderRadius:10,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)"},children:[g?(0,T.jsx)(G.Suspense,{fallback:null,children:(0,T.jsx)(Sn,{part:"top",name:b,me:y,profileHref:t,hostActions:i,close:()=>u.setOpen(!1)})}):null,(0,T.jsxs)("div",{className:"graview-profile-keeping","data-testid":"profile-keeping",style:An,children:[(0,T.jsx)("span",{style:Tn,children:"Keeping this app"}),n]}),g?(0,T.jsx)(G.Suspense,{fallback:null,children:(0,T.jsx)(Pn,{part:"rest",name:b,me:y,scheme:r,onScheme:e,hostActions:i,signature:a,close:()=>u.setOpen(!1)})}):null]})]})}var kn=[],ye=()=>C.prefetch(),Sn=C.part((r,e)=>(0,T.jsx)(r.ProfilePane,{...e}),{what:"The rest of your menu"}),Pn=C.part((r,e)=>(0,T.jsx)(r.ProfilePane,{...e}),{quiet:!0});function Ln(r){let e=()=>{(typeof navigator>"u"||navigator.onLine!==!1)&&r()},t=globalThis;if(t.requestIdleCallback){let i=t.requestIdleCallback(e,{timeout:5e3});return()=>t.cancelIdleCallback?.(i)}let n=setTimeout(e,2500);return()=>clearTimeout(n)}function En(r){return(r.trim()[0]??"?").toUpperCase()}var Tn={fontSize:"0.75rem",letterSpacing:"0.14em",textTransform:"uppercase",color:"var(--graview-ink-faint)"},An={paddingTop:10,borderTop:"1px solid var(--graview-edge)"};function $n(r){return!(r==="hidden"||r===!1)}var Fe=h(B(),1);var ot="The whole thing",he=r=>`scene:${r.kind}:${r.as}`;function st(r){let{view:e}=r,t=r.places.filter(c=>!r.hidden.has(c.kind)),n=ne(t),i=(c,g)=>{if(c===j)return Sr(Pr(g,!0),"view",null);let w=n.find(y=>he(y)===c);return w?Er(g,w.over?.find(y=>g.focusId===ae(y))??w.kind,w.as):null},a=e.within?.view,o=c=>e.focusId===ae(c.kind)&&(a===void 0?t.filter(g=>g.kind===c.kind).at(-1)===c:a===c.as),l=t.find(c=>o(c)&&(a!==void 0||!e.overview)),p=l?n.find(c=>ge(c,l)):void 0,s=n.filter(c=>!c.hidden||c===p);return{places:[{key:j,label:ot,path:`${Ae}${Oe(i(j,$e))}`,group:"home"},...s.map(c=>({key:he(c),label:Q(c,t,r.schema),path:`${Ae}${Oe(i(he(c),$e))}`,group:"pictures",kind:c.kind}))],current:p?he(p):j,to:i}}function On(){let{store:r,views:e,hiddenKinds:t}=fe(),{view:n,go:i}=Nr(),a=e.places(),o=(0,Fe.useMemo)(()=>st({places:a,hidden:t,view:n,schema:r.schema}),[a,t,n,r.schema]),l=(0,Fe.useMemo)(()=>({go:p=>{let s=o.to(p.key,n);s&&i(s)}}),[o,n,i]);return{places:o.places,current:o.current,reach:l}}var te=h(B(),1);var _=h(S(),1),Nn=C.part((r,e)=>(0,_.jsx)(r.ProblemRows,{...e}),{what:"The problems",as:"li"}),Ve=()=>C.prefetch();function Hn({clean:r="All rules hold"}){let e=Or(),{set:t}=$r(),n=e.length,[i,a]=(0,te.useState)(!1),o=J("problems",{open:i&&n>0,onOpenChange:a}),l=o.open,p=dt(e,r);return(0,te.useEffect)(()=>{if(n===0)return;let s=setTimeout(Ve,1500);return()=>clearTimeout(s)},[n>0]),(0,_.jsxs)("div",{style:{position:"relative",display:"inline-flex"},children:[(0,_.jsxs)("button",{type:"button","data-testid":"standing",...o.trigger,"aria-disabled":n===0?!0:void 0,"aria-label":p,onClick:n===0?void 0:o.toggle,onPointerEnter:n===0?void 0:Ve,onFocus:n===0?void 0:Ve,title:p,style:{...re,padding:n===0?0:"0 8px",cursor:n===0?"default":"pointer",color:n===0?"var(--graview-ink-muted)":lt(e),fontVariantNumeric:"tabular-nums",fontWeight:600},children:[(0,_.jsx)(ct,{tone:n===0?"var(--graview-good)":lt(e)}),n>0?(0,_.jsx)("span",{"aria-hidden":"true",children:n}):null]}),l?(0,_.jsx)("ol",{...o.pane,"data-testid":"problems",style:{...Z,width:300,maxHeight:"min(48cqh, 420px)",overflow:"auto",margin:0,padding:4,listStyle:"none",display:"grid",borderRadius:10,border:"1px solid var(--graview-edge)",background:"var(--graview-float)",boxShadow:"var(--graview-lift-high)"},children:(0,_.jsx)(te.Suspense,{fallback:null,children:(0,_.jsx)(Nn,{violations:e,pick:s=>{t(s.nodeIds),o.setOpen(!1)}})})}):null]})}function dt(r,e){return r.length===0?e:`${tr(r)} \u2014 open what is broken, and what would fix it`}var lt=r=>r.some(e=>e.status==="could-not-judge"||e.status==="over-budget")?"var(--graview-bad)":"var(--graview-warn)";function ct({tone:r}){return(0,_.jsx)("span",{"aria-hidden":"true",style:{width:8,height:8,borderRadius:999,flex:"0 0 auto",background:r}})}function Bn(r,e,t=[]){if(r.focusId)return r.focusId;let i=(r.selection??[]).map(Lr).find(a=>a!==null)??t.find(a=>e.includes(a))??e[0]??null;return i===null?null:ae(i)}var xe=h(S(),1),be=M(R(()=>(__graviewPreload(import.meta.url,["./chunk.BH365UJ5.js","./chunk.6EHE26ZS.js","./chunk.N2S3TMBC.js","./chunk.7JW5SHRR.js","./chunk.MJ4XTNTL.js","./chunk.AP22NNIM.js","./chunk.SPZVEQC5.js","./chunk.FNK2ZZ5E.js","./chunk.RSR2M7ZO.js","./chunk.N2S45SSL.js","./chunk.AGVFW6WC.js","./chunk.SIVMZNHZ.js","./chunk.WVUJXDXZ.js","./chunk.NQDGUIUQ.js","./chunk.DTRNDSMS.js","./chunk.3EW6L5DY.js","./chunk.AVDXG57A.js","./chunk.LD6S2FL5.js","./chunk.TABIRLQS.js","./chunk.GZHZLJBF.js","./chunk.FOYVTN5B.js","./chunk.OJGHDWI6.js","./chunk.OTF3NNTI.js","./chunk.A7HMVWMG.js","./chunk.GRLPNTUW.js","./chunk.EJAVIZ7Y.js","./chunk.423SZS7C.js","./chunk.TM6JVVGW.js","./chunk.SDO3U72B.js","./chunk.PFEKS3KO.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.OKHEZJBX.js"))));function Cn(){return be.load().then(()=>{})}var Rn=[{cardinality:"one",fidelity:"full",slot:"page"},{cardinality:"one",fidelity:"summary",slot:"card"},{cardinality:"one",fidelity:"glyph",slot:"row"},{cardinality:"many",fidelity:"full"},{cardinality:"many",fidelity:"summary"},{cardinality:"many",fidelity:"glyph"}];function Mn({schema:r,specs:e,kind:t,view:n}){let i=be.current.frameworkViews(r,e).lookup(t,{cardinality:n.cardinality,fidelity:n.fidelity});return i?(0,xe.jsx)(i,{...n}):null}var _n=be.part((r,e)=>(0,xe.jsx)(Mn,{...e}),{what:"This view"});function pt(r,e,t){for(let n of e.kinds){let i=t?.[n];for(let a of Rn){let o=p=>(0,xe.jsx)(_n,{schema:e,specs:t,kind:n,view:p}),l=a.slot!==void 0&&i?.[a.slot]!==void 0;l&&(o.says=(p,s)=>be.current?.frameworkViews(e,t).lookup(n,{cardinality:a.cardinality,fidelity:a.fidelity})?.says?.(p,s)),r.register(n,{cardinality:a.cardinality,fidelity:a.fidelity},l?o:Tr(o))}}return r}function Dn(r,e){return pt(Ar(r),r,e)}var Ie=h(B(),1);var F=h(S(),1),ut=M(R(()=>(__graviewPreload(import.meta.url,["./chunk.ERWBI2NK.js","./chunk.2OXXGN7C.js","./chunk.Q4KNNJFL.js","./chunk.WQN7EFW3.js","./chunk.BH365UJ5.js","./chunk.6EHE26ZS.js","./chunk.N2S3TMBC.js","./chunk.7JW5SHRR.js","./chunk.HJCQ6I3S.js","./chunk.DFGXNFFE.js","./chunk.XN7PIWVC.js","./chunk.EYSQPXVE.js","./chunk.MJ4XTNTL.js","./chunk.AP22NNIM.js","./chunk.SPZVEQC5.js","./chunk.FNK2ZZ5E.js","./chunk.RSR2M7ZO.js","./chunk.EM5CGFNB.js","./chunk.N2S45SSL.js","./chunk.AGVFW6WC.js","./chunk.SIVMZNHZ.js","./chunk.NQ7SRWXA.js","./chunk.AOEXSQDG.js","./chunk.3NEALGMI.js","./chunk.UT6642FC.js","./chunk.35FUGOSG.js","./chunk.D4K23FUB.js","./chunk.WVUJXDXZ.js","./chunk.NQDGUIUQ.js","./chunk.DTRNDSMS.js","./chunk.3EW6L5DY.js","./chunk.AVDXG57A.js","./chunk.LD6S2FL5.js","./chunk.TABIRLQS.js","./chunk.GZHZLJBF.js","./chunk.FOYVTN5B.js","./chunk.OJGHDWI6.js","./chunk.OTF3NNTI.js","./chunk.A7HMVWMG.js","./chunk.GRLPNTUW.js","./chunk.EJAVIZ7Y.js","./chunk.423SZS7C.js","./chunk.TM6JVVGW.js","./chunk.SDO3U72B.js","./chunk.PFEKS3KO.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.PFR3FQBR.js"))));function Fn({lens:r,view:e}){let t=ut.current.declaredLensView(r);return(0,F.jsx)(t,{...e})}var Vn=ut.part((r,e)=>(0,F.jsx)(Fn,{...e}),{what:"This picture"});function In(r){let e=n=>(0,F.jsx)(Ie.Suspense,{fallback:null,children:(0,F.jsx)(Vn,{lens:r,view:n})});r.lens==="blocks"&&(e.flows=!0);let t=r.lens==="blocks"?r.options.blocks?.[0]:void 0;return typeof t?.headline=="string"&&(e.lede=t),r.create===!1&&(e.creates=!1),e}var gt=M(R(()=>(__graviewPreload(import.meta.url,["./chunk.BH365UJ5.js","./chunk.6EHE26ZS.js","./chunk.N2S3TMBC.js","./chunk.7JW5SHRR.js","./chunk.MJ4XTNTL.js","./chunk.AP22NNIM.js","./chunk.SPZVEQC5.js","./chunk.FNK2ZZ5E.js","./chunk.RSR2M7ZO.js","./chunk.N2S45SSL.js","./chunk.AGVFW6WC.js","./chunk.SIVMZNHZ.js","./chunk.WVUJXDXZ.js","./chunk.NQDGUIUQ.js","./chunk.DTRNDSMS.js","./chunk.3EW6L5DY.js","./chunk.AVDXG57A.js","./chunk.LD6S2FL5.js","./chunk.TABIRLQS.js","./chunk.GZHZLJBF.js","./chunk.FOYVTN5B.js","./chunk.OJGHDWI6.js","./chunk.OTF3NNTI.js","./chunk.A7HMVWMG.js","./chunk.GRLPNTUW.js","./chunk.EJAVIZ7Y.js","./chunk.423SZS7C.js","./chunk.TM6JVVGW.js","./chunk.SDO3U72B.js","./chunk.PFEKS3KO.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.B445DZOY.js"))));function Wn({blocks:r,view:e}){let t=gt.current.homeView(r);return(0,F.jsx)(t,{...e})}var Kn=gt.part((r,e)=>(0,F.jsx)(Wn,{...e}),{what:"The home"});function Gn(r){let e=t=>(0,F.jsx)(Ie.Suspense,{fallback:null,children:(0,F.jsx)(Kn,{blocks:r,view:t})});return Object.defineProperty(e,Symbol.for("graview.home-blocks"),{value:!0}),e}function zn(r,e){return e.home&&e.home.length>0&&r.home?.(Gn(e.home)),ft(r,e),r.arrange?.(e.pages),r}function ft(r,e,t){for(let n of vr(e).drawn){if(t&&r.places().some(o=>o.title===n.title))continue;let i=In(n),a={title:n.title,lens:n.lens,...n.across?{across:n.across}:{},...t?{beside:t}:{},...n.hidden?{hidden:!0}:{},over:n.kinds,...t?{}:{declared:!0}};for(let o of n.kinds)r.register(o,{cardinality:"many",fidelity:"full"},i,a),r.register(o,{cardinality:"many",fidelity:"summary"},i,a)}}function qn(r,e,t){t.length>0&&ft(r,{schema:e,lenses:t.map(({lens:n,...i})=>({...i,name:n}))},!0)}function jn(r,e,t){qn(r,e,De(t))}var z=h(B(),1),ke=h(S(),1);var We=r=>`graview:first-look:${r}`;function Yn(r,e){if(r.seen!==void 0)try{return typeof r.seen=="function"?r.seen():r.seen}catch{return!0}try{return window.localStorage.getItem(We(e))!==null}catch{return!1}}function Un(r,e){if(r.seen===void 0)try{window.localStorage.setItem(We(e),"seen")}catch{}}var Qn=M(R(()=>(__graviewPreload(import.meta.url,["./chunk.TM6JVVGW.js","./chunk.SDO3U72B.js","./chunk.PFEKS3KO.js","./chunk.2AZTW66C.js","./chunk.AJZBJBMO.js"]),import("./chunk.TBA4GF34.js")))),Xn=Qn.part((r,e)=>{let t=r.FirstLookHints;return(0,ke.jsx)(t,{...e})},{quiet:!0});function Zn({firstLook:r,root:e,app:t}){let n=(0,z.useRef)(null);n.current=r===!0?{}:r||null;let[i,a]=(0,z.useState)(()=>n.current!==null&&typeof window<"u"&&!Yn(n.current,t)),o=(0,z.useCallback)(l=>{if(a(!1),l===null)return;let p=n.current??{};Un(p,t),p.onDone?.(l)},[t]);return!i||n.current===null?null:(0,ke.jsx)(z.Suspense,{fallback:null,children:(0,ke.jsx)(Xn,{root:e,steps:n.current.steps??[],onEnd:o})})}export{Nt as a,Ht as b,me as c,Mt as d,ta as e,Dr as f,na as g,Be as h,Xt as i,Kr as j,Wt as k,Kt as l,ve as m,Gt as n,qt as o,jt as p,Yt as q,C as r,rn as s,tn as t,Xr as u,nn as v,re as w,on as x,xn as y,$n as z,On as A,hn as B,bn as C,De as D,Hn as E,dt as F,ct as G,Bn as H,zn as I,qn as J,jn as K,Cn as L,Dn as M,Zn as N};
|
|
347
347
|
/*! Bundled license information:
|
|
348
348
|
|
|
349
349
|
react-dom/cjs/react-dom.production.js:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as c,b as d,c as e,d as f,e as g,f as h,g as i,h as j,i as k,j as l,k as m,l as n,m as o,n as p}from"./chunk.
|
|
1
|
+
import{a as c,b as d,c as e,d as f,e as g,f as h,g as i,h as j,i as k,j as l,k as m,l as n,m as o,n as p}from"./chunk.EM5CGFNB.js";import{a,b}from"./chunk.N2S45SSL.js";import"./chunk.AGVFW6WC.js";import"./chunk.SIVMZNHZ.js";import"./chunk.A7HMVWMG.js";import"./chunk.GRLPNTUW.js";import"./chunk.EJAVIZ7Y.js";import"./chunk.423SZS7C.js";import"./chunk.TM6JVVGW.js";import"./chunk.SDO3U72B.js";import"./chunk.PFEKS3KO.js";import"./chunk.2AZTW66C.js";import"./chunk.AJZBJBMO.js";export{j as ARRANGE_NARROW,o as ArrangeBar,e as CHIP_FIELDS,d as MANY_AT_THE_FAR_END,c as TYPED_FROM,p as arrangementCaption,a as arrangementOf,i as chipOffers,m as directionWords,g as farCount,f as farCounts,l as inSentence,h as offeredFilters,n as preloadArrangeLists,k as sayCondition,b as withArrangement};
|