@bobfrankston/rmfmail 1.2.243 → 1.2.245
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/client/app.bundle.js +20 -74
- package/client/app.bundle.js.map +3 -3
- package/client/app.js +16 -56
- package/client/app.js.map +1 -1
- package/client/app.ts +15 -53
- package/client/components/message-viewer.js +2 -40
- package/client/components/message-viewer.js.map +1 -1
- package/client/components/message-viewer.ts +2 -41
- package/package.json +3 -3
- package/packages/mailx-imap/index.d.ts.map +1 -1
- package/packages/mailx-imap/index.js +15 -1
- package/packages/mailx-imap/index.js.map +1 -1
- package/packages/mailx-imap/index.ts +16 -1
- package/packages/mailx-imap/package-lock.json +2 -2
- package/packages/mailx-imap/package.json +1 -1
- package/packages/mailx-imap/test/rate-limit-backoff.test.mjs +22 -0
- /package/packages/mailx-imap/{node_modules.npmglobalize-stash-17784 → node_modules.npmglobalize-stash-54952}/.package-lock.json +0 -0
package/client/app.bundle.js
CHANGED
|
@@ -1621,6 +1621,24 @@ var init_address_book = __esm({
|
|
|
1621
1621
|
});
|
|
1622
1622
|
|
|
1623
1623
|
// client/components/message-viewer.js
|
|
1624
|
+
var message_viewer_exports = {};
|
|
1625
|
+
__export(message_viewer_exports, {
|
|
1626
|
+
clearViewer: () => clearViewer,
|
|
1627
|
+
getCurrentMessage: () => getCurrentMessage,
|
|
1628
|
+
initViewer: () => initViewer,
|
|
1629
|
+
invalidateParsedCache: () => invalidateParsedCache,
|
|
1630
|
+
popOutCurrentMessage: () => popOutCurrentMessage,
|
|
1631
|
+
popOutToWindow: () => popOutToWindow,
|
|
1632
|
+
printCurrentMessage: () => printCurrentMessage,
|
|
1633
|
+
printMessage: () => printMessage,
|
|
1634
|
+
saveCurrentMessageAsEml: () => saveCurrentMessageAsEml,
|
|
1635
|
+
saveCurrentMessageAsHtml: () => saveCurrentMessageAsHtml,
|
|
1636
|
+
showMessage: () => showMessage,
|
|
1637
|
+
showPreviewBodyMenu: () => showPreviewBodyMenu,
|
|
1638
|
+
spawnDesktopPopout: () => spawnDesktopPopout,
|
|
1639
|
+
toggleFullscreenPreview: () => toggleFullscreenPreview,
|
|
1640
|
+
wrapHtmlBody: () => wrapHtmlBody
|
|
1641
|
+
});
|
|
1624
1642
|
function parsedCacheGet(accountId, folderId, uid) {
|
|
1625
1643
|
if (folderId == null)
|
|
1626
1644
|
return null;
|
|
@@ -3607,30 +3625,6 @@ function spawnDesktopPopout(msg, accountId) {
|
|
|
3607
3625
|
closeBtn.addEventListener("mouseleave", () => closeBtn.style.color = "#666");
|
|
3608
3626
|
closeBtn.addEventListener("click", () => wrapper.remove());
|
|
3609
3627
|
titleBar.appendChild(closeBtn);
|
|
3610
|
-
const actions = document.createElement("div");
|
|
3611
|
-
actions.style.cssText = "display:flex;gap:4px;padding:6px 10px;border-bottom:1px solid var(--color-border, #ddd);flex-shrink:0;flex-wrap:wrap;";
|
|
3612
|
-
const compose = (mode) => {
|
|
3613
|
-
document.dispatchEvent(new CustomEvent("mailx-compose", {
|
|
3614
|
-
detail: { mode, message: msg, accountId }
|
|
3615
|
-
}));
|
|
3616
|
-
};
|
|
3617
|
-
const mkBtn = (label, title, onClick) => {
|
|
3618
|
-
const b = document.createElement("button");
|
|
3619
|
-
b.className = "tb-btn";
|
|
3620
|
-
b.textContent = label;
|
|
3621
|
-
b.title = title;
|
|
3622
|
-
b.style.cssText = "padding:3px 10px;font-size:13px;cursor:pointer;";
|
|
3623
|
-
b.addEventListener("click", onClick);
|
|
3624
|
-
return b;
|
|
3625
|
-
};
|
|
3626
|
-
actions.appendChild(mkBtn("\u21A9 Reply", "Reply to the sender of this message", () => compose("reply")));
|
|
3627
|
-
actions.appendChild(mkBtn("\u21A9\u21A9 Reply All", "Reply to everyone on this message", () => compose("replyAll")));
|
|
3628
|
-
actions.appendChild(mkBtn("\u2192 Forward", "Forward this message", () => compose("forward")));
|
|
3629
|
-
actions.appendChild(mkBtn("\u270E Edit as new", "Open a copy of this message in compose \u2014 the way to rework and resend one you sent", () => compose("editAsNew")));
|
|
3630
|
-
const spacer = document.createElement("span");
|
|
3631
|
-
spacer.style.cssText = "flex:1;";
|
|
3632
|
-
actions.appendChild(spacer);
|
|
3633
|
-
actions.appendChild(mkBtn("\u{1F5A8}", "Print this message", () => printMessage(msg)));
|
|
3634
3628
|
const headerInfo = document.createElement("div");
|
|
3635
3629
|
headerInfo.style.cssText = "padding:8px 12px;border-bottom:1px solid var(--color-border, #ddd);font-size:13px;line-height:1.4;flex-shrink:0;";
|
|
3636
3630
|
const formatAddrLocal = (a) => a.name ? `${a.name} <${a.address}>` : a.address;
|
|
@@ -3721,7 +3715,6 @@ function spawnDesktopPopout(msg, accountId) {
|
|
|
3721
3715
|
wrapper.remove();
|
|
3722
3716
|
}));
|
|
3723
3717
|
wrapper.appendChild(titleBar);
|
|
3724
|
-
wrapper.appendChild(actions);
|
|
3725
3718
|
wrapper.appendChild(headerInfo);
|
|
3726
3719
|
wrapper.appendChild(toolbar);
|
|
3727
3720
|
wrapper.appendChild(bodyContainer);
|
|
@@ -13262,56 +13255,9 @@ document.addEventListener("mailx-popout-message", (async (e) => {
|
|
|
13262
13255
|
showComposeOverlay(msg.subject ? `Edit: ${msg.subject}` : "Edit draft");
|
|
13263
13256
|
return;
|
|
13264
13257
|
}
|
|
13265
|
-
const
|
|
13266
|
-
|
|
13267
|
-
wrapper.style.cssText = "position:fixed;top:5vh;right:5vw;width:min(900px,60vw);height:min(800px,80vh);z-index:1500;background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;box-shadow:0 8px 32px rgba(0,0,0,0.3);display:flex;flex-direction:column;resize:both;overflow:hidden;";
|
|
13268
|
-
const header = document.createElement("div");
|
|
13269
|
-
header.style.cssText = "display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--color-bg-surface);border-bottom:1px solid var(--color-border);font-weight:600;cursor:move;";
|
|
13270
|
-
const title = document.createElement("span");
|
|
13271
|
-
title.textContent = subject || "(no subject)";
|
|
13272
|
-
title.style.cssText = "flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;";
|
|
13273
|
-
const closeBtn = document.createElement("button");
|
|
13274
|
-
closeBtn.textContent = "\xD7";
|
|
13275
|
-
closeBtn.style.cssText = "background:none;border:none;font-size:1.4rem;cursor:pointer;padding:0 8px;";
|
|
13276
|
-
closeBtn.addEventListener("click", () => wrapper.remove());
|
|
13277
|
-
header.appendChild(title);
|
|
13278
|
-
header.appendChild(closeBtn);
|
|
13279
|
-
const meta = document.createElement("div");
|
|
13280
|
-
meta.style.cssText = "padding:8px 12px;border-bottom:1px solid var(--color-border);font-size:0.9rem;color:var(--color-text-muted);";
|
|
13281
|
-
meta.innerHTML = `<div><b>From:</b> ${escapeHtmlBasic(msg.from?.name || "")} <${escapeHtmlBasic(msg.from?.address || "")}></div>
|
|
13282
|
-
<div><b>To:</b> ${(msg.to || []).map((a) => escapeHtmlBasic(`${a.name || ""} <${a.address}>`)).join(", ")}</div>
|
|
13283
|
-
${msg.cc?.length ? `<div><b>Cc:</b> ${msg.cc.map((a) => escapeHtmlBasic(`${a.name || ""} <${a.address}>`)).join(", ")}</div>` : ""}
|
|
13284
|
-
<div><b>Date:</b> ${new Date(msg.date).toLocaleString()}</div>`;
|
|
13285
|
-
const body = document.createElement("iframe");
|
|
13286
|
-
body.style.cssText = "flex:1;border:none;width:100%;background:#fff;";
|
|
13287
|
-
body.sandbox.add("allow-same-origin");
|
|
13288
|
-
wrapper.appendChild(header);
|
|
13289
|
-
wrapper.appendChild(meta);
|
|
13290
|
-
wrapper.appendChild(body);
|
|
13291
|
-
document.body.appendChild(wrapper);
|
|
13292
|
-
body.srcdoc = msg.bodyHtml ? wrapHtmlBody(msg.bodyHtml, !!msg.remoteAllowed) : `<!DOCTYPE html><html><head><style>body{font-family:system-ui,sans-serif;font-size:17.5px;line-height:1.5;color:#1a1a2e;padding:1rem;margin:0;}pre{white-space:pre-wrap;word-break:break-word;font-family:inherit;font-size:inherit;margin:0;}</style></head><body><pre>${escapeHtmlBasic(msg.bodyText || "(no body)")}</pre></body></html>`;
|
|
13293
|
-
let dragX = 0, dragY = 0, dragging = false;
|
|
13294
|
-
header.addEventListener("mousedown", (de) => {
|
|
13295
|
-
if (de.target.tagName === "BUTTON") return;
|
|
13296
|
-
dragging = true;
|
|
13297
|
-
const rect = wrapper.getBoundingClientRect();
|
|
13298
|
-
dragX = de.clientX - rect.left;
|
|
13299
|
-
dragY = de.clientY - rect.top;
|
|
13300
|
-
de.preventDefault();
|
|
13301
|
-
});
|
|
13302
|
-
document.addEventListener("mousemove", (de) => {
|
|
13303
|
-
if (!dragging) return;
|
|
13304
|
-
wrapper.style.left = `${de.clientX - dragX}px`;
|
|
13305
|
-
wrapper.style.top = `${de.clientY - dragY}px`;
|
|
13306
|
-
wrapper.style.right = "auto";
|
|
13307
|
-
});
|
|
13308
|
-
document.addEventListener("mouseup", () => {
|
|
13309
|
-
dragging = false;
|
|
13310
|
-
});
|
|
13258
|
+
const { spawnDesktopPopout: spawnDesktopPopout2 } = await Promise.resolve().then(() => (init_message_viewer(), message_viewer_exports));
|
|
13259
|
+
spawnDesktopPopout2(msg, accountId);
|
|
13311
13260
|
}));
|
|
13312
|
-
function escapeHtmlBasic(s) {
|
|
13313
|
-
return (s || "").replace(/[&<>"']/g, (c) => ({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" })[c]);
|
|
13314
|
-
}
|
|
13315
13261
|
document.getElementById("status-queue")?.addEventListener("click", async () => {
|
|
13316
13262
|
try {
|
|
13317
13263
|
const { openOutboxView: openOutboxView2 } = await Promise.resolve().then(() => (init_outbox_view(), outbox_view_exports));
|