@bobfrankston/rmfmail 1.1.174 → 1.1.177
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/bin/mailx.js +30 -2
- package/bin/mailx.js.map +1 -1
- package/bin/mailx.ts +32 -3
- package/client/app.bundle.js +36 -0
- package/client/app.bundle.js.map +2 -2
- package/client/app.js +39 -0
- package/client/app.js.map +1 -1
- package/client/app.ts +33 -0
- package/client/components/message-list.js +18 -0
- package/client/components/message-list.js.map +1 -1
- package/client/components/message-list.ts +19 -0
- package/client/compose/compose.bundle.js +2068 -1775
- package/client/compose/compose.bundle.js.map +4 -4
- package/client/compose/editor.js +85 -0
- package/client/compose/editor.js.map +1 -1
- package/client/compose/editor.ts +79 -0
- package/client/compose/spellcheck-core.js +253 -0
- package/client/compose/spellcheck-core.js.map +1 -0
- package/client/compose/spellcheck-core.ts +242 -0
- package/package.json +5 -5
- /package/packages/mailx-imap/{node_modules.npmglobalize-stash-50120 → node_modules.npmglobalize-stash-50992}/.package-lock.json +0 -0
package/client/app.js
CHANGED
|
@@ -3377,6 +3377,45 @@ document.getElementById("message-viewer")?.addEventListener("dblclick", (e) => {
|
|
|
3377
3377
|
toggleFullscreenPreview();
|
|
3378
3378
|
});
|
|
3379
3379
|
// ── F6 pane cycling ──
|
|
3380
|
+
/** Focus a specific pane by element id. Same visual hint as cyclePaneFocus
|
|
3381
|
+
* so the user can see which pane took focus. Wired to middle-click. */
|
|
3382
|
+
function focusPaneById(id) {
|
|
3383
|
+
const el = document.getElementById(id);
|
|
3384
|
+
if (!el)
|
|
3385
|
+
return;
|
|
3386
|
+
if (!el.hasAttribute("tabindex"))
|
|
3387
|
+
el.setAttribute("tabindex", "-1");
|
|
3388
|
+
el.focus();
|
|
3389
|
+
el.style.outline = "2px solid var(--color-accent, #3b82f6)";
|
|
3390
|
+
el.style.outlineOffset = "-2px";
|
|
3391
|
+
setTimeout(() => { el.style.outline = ""; el.style.outlineOffset = ""; }, 600);
|
|
3392
|
+
}
|
|
3393
|
+
// Middle-click anywhere in a pane focuses that pane. Doesn't conflict with
|
|
3394
|
+
// any existing right-click context menus or left-click selection handlers.
|
|
3395
|
+
// Bob 2026-05-27: F6/Shift+F6 isn't memorable; right-click feels natural.
|
|
3396
|
+
// We do middle-click (button=1) because right-click is already overloaded
|
|
3397
|
+
// for row/message context menus throughout the UI.
|
|
3398
|
+
document.addEventListener("auxclick", (e) => {
|
|
3399
|
+
if (e.button !== 1)
|
|
3400
|
+
return; // middle button only
|
|
3401
|
+
const target = e.target;
|
|
3402
|
+
if (!target)
|
|
3403
|
+
return;
|
|
3404
|
+
const ft = target.closest("#folder-tree");
|
|
3405
|
+
const ml = target.closest("#ml-body");
|
|
3406
|
+
const mv = target.closest("#message-viewer");
|
|
3407
|
+
let id = null;
|
|
3408
|
+
if (ft)
|
|
3409
|
+
id = "folder-tree";
|
|
3410
|
+
else if (ml)
|
|
3411
|
+
id = "ml-body";
|
|
3412
|
+
else if (mv)
|
|
3413
|
+
id = "message-viewer";
|
|
3414
|
+
if (!id)
|
|
3415
|
+
return;
|
|
3416
|
+
e.preventDefault();
|
|
3417
|
+
focusPaneById(id);
|
|
3418
|
+
});
|
|
3380
3419
|
function cyclePaneFocus(reverse) {
|
|
3381
3420
|
// Major panes in tab order. Skip ones not currently visible (folder
|
|
3382
3421
|
// tree is hidden in narrow tier when the rail/drawer is closed; message
|