waygraph 0.3.0 → 0.3.1
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/cli.js +44 -7
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -367,10 +367,13 @@ const RING_CSS =
|
|
|
367
367
|
"#wg-modules .wg-mod-done{background:#2a1650;color:#9a7ad1;}" +
|
|
368
368
|
"#wg-modules .wg-mod-current{background:#7C3AED;color:#fff;}" +
|
|
369
369
|
"#wg-modules .wg-mod-upcoming{background:transparent;color:#5a4a80;border:1px solid #3a2a60;}" +
|
|
370
|
-
"#wg-banner{position:fixed;z-index:2147483647;top:14px;
|
|
370
|
+
"#wg-banner{position:fixed;z-index:2147483647;top:14px;max-width:320px;" +
|
|
371
371
|
"background:rgba(20,10,40,.94);color:#fff;border-radius:12px;padding:10px 16px;" +
|
|
372
372
|
"font:14px/1.4 system-ui,sans-serif;box-shadow:0 8px 20px rgba(0,0,0,.3);" +
|
|
373
|
-
"border:1px solid rgba(124,58,237,.4);}" +
|
|
373
|
+
"border:1px solid rgba(124,58,237,.4);cursor:pointer;user-select:none;}" +
|
|
374
|
+
"#wg-banner[data-pos=left]{left:14px;right:auto;transform:none;}" +
|
|
375
|
+
"#wg-banner[data-pos=center]{left:50%;right:auto;transform:translateX(-50%);}" +
|
|
376
|
+
"#wg-banner[data-pos=right]{right:14px;left:auto;transform:none;}" +
|
|
374
377
|
"#wg-banner .wg-banner-tag{display:block;font-size:10px;font-weight:700;color:#c9a6ff;" +
|
|
375
378
|
"letter-spacing:.05em;text-transform:uppercase;margin-bottom:2px;}" +
|
|
376
379
|
"#wg-panel .wg-key{margin:8px 0;}" +
|
|
@@ -400,17 +403,46 @@ const WAYGRAPH_FAVICON =
|
|
|
400
403
|
|
|
401
404
|
async function installOverlay(page, title) {
|
|
402
405
|
await page.addStyleTag({ content: RING_CSS }).catch(() => {});
|
|
406
|
+
// Default top-left; override with WAYGRAPH_TITLE_POS=left|center|right.
|
|
407
|
+
// Click cycles left -> center -> right (persisted in localStorage so a
|
|
408
|
+
// navigation that rebuilds the banner keeps the human's last pick).
|
|
409
|
+
const envPos = (process.env.WAYGRAPH_TITLE_POS || "left").toLowerCase();
|
|
410
|
+
const bannerPos = envPos === "center" || envPos === "right" ? envPos : "left";
|
|
403
411
|
await page
|
|
404
412
|
.evaluate(
|
|
405
|
-
({ title, favicon }) => {
|
|
413
|
+
({ title, favicon, bannerPos }) => {
|
|
406
414
|
if (!document.getElementById("wg-ring")) {
|
|
407
415
|
const ring = document.createElement("div");
|
|
408
416
|
ring.id = "wg-ring";
|
|
409
417
|
document.documentElement.appendChild(ring);
|
|
410
418
|
}
|
|
419
|
+
const POSITIONS = ["left", "center", "right"];
|
|
420
|
+
const applyPos = (el, pos) => {
|
|
421
|
+
el.dataset.pos = pos;
|
|
422
|
+
try {
|
|
423
|
+
localStorage.setItem("wg-banner-pos", pos);
|
|
424
|
+
} catch {
|
|
425
|
+
/* private mode / blocked storage - position still applies this page */
|
|
426
|
+
}
|
|
427
|
+
};
|
|
411
428
|
if (title && !document.getElementById("wg-banner")) {
|
|
412
429
|
const banner = document.createElement("div");
|
|
413
430
|
banner.id = "wg-banner";
|
|
431
|
+
let saved = null;
|
|
432
|
+
try {
|
|
433
|
+
saved = localStorage.getItem("wg-banner-pos");
|
|
434
|
+
} catch {
|
|
435
|
+
/* ignore */
|
|
436
|
+
}
|
|
437
|
+
const startPos =
|
|
438
|
+
saved && POSITIONS.includes(saved) ? saved : bannerPos;
|
|
439
|
+
applyPos(banner, startPos);
|
|
440
|
+
banner.title = "Click to move: top left / center / right";
|
|
441
|
+
banner.addEventListener("click", (e) => {
|
|
442
|
+
e.stopPropagation();
|
|
443
|
+
const i = POSITIONS.indexOf(banner.dataset.pos || "left");
|
|
444
|
+
applyPos(banner, POSITIONS[(i + 1) % POSITIONS.length]);
|
|
445
|
+
});
|
|
414
446
|
const tag = document.createElement("span");
|
|
415
447
|
tag.className = "wg-banner-tag";
|
|
416
448
|
tag.textContent = "waygraph demo";
|
|
@@ -434,7 +466,7 @@ async function installOverlay(page, title) {
|
|
|
434
466
|
}
|
|
435
467
|
if (iconLink.href !== favicon) iconLink.href = favicon;
|
|
436
468
|
},
|
|
437
|
-
{ title, favicon: WAYGRAPH_FAVICON },
|
|
469
|
+
{ title, favicon: WAYGRAPH_FAVICON, bannerPos },
|
|
438
470
|
)
|
|
439
471
|
.catch(() => {});
|
|
440
472
|
}
|
|
@@ -1176,10 +1208,15 @@ Usage:
|
|
|
1176
1208
|
WAYGRAPH_AUTOPLAY=1 step mode only - hands-off, advances on a
|
|
1177
1209
|
timer instead of waiting for clicks
|
|
1178
1210
|
WAYGRAPH_AUTOPLAY_MS=ms delay between auto-advances (default 1800)
|
|
1179
|
-
WAYGRAPH_TITLE="..." step mode only - a persistent top
|
|
1180
|
-
|
|
1211
|
+
WAYGRAPH_TITLE="..." step mode only - a persistent top banner
|
|
1212
|
+
naming what this whole run is about (default
|
|
1213
|
+
top-left; click the banner to cycle left /
|
|
1214
|
+
center / right)
|
|
1215
|
+
WAYGRAPH_TITLE_POS=left|center|right
|
|
1216
|
+
initial banner position (default left); click
|
|
1217
|
+
still cycles and remembers via localStorage
|
|
1181
1218
|
|
|
1182
|
-
"project" defaults to the current directory.
|
|
1219
|
+
"project" defaults to the current directory.
|
|
1183
1220
|
`);
|
|
1184
1221
|
process.exit(0);
|
|
1185
1222
|
}
|