@bobfrankston/rmfmail 1.1.119 → 1.1.121

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.
Files changed (98) hide show
  1. package/client/app.bundle.js +30 -25
  2. package/client/app.bundle.js.map +2 -2
  3. package/client/components/message-list.js +46 -15
  4. package/client/components/message-list.js.map +1 -1
  5. package/client/components/message-list.ts +47 -13
  6. package/client/components/message-viewer.js +13 -20
  7. package/client/components/message-viewer.js.map +1 -1
  8. package/client/components/message-viewer.ts +13 -20
  9. package/client/lib/tinymce/skins/content/dark/content.js +4 -10
  10. package/client/lib/tinymce/skins/content/dark/content.js.map +1 -0
  11. package/client/lib/tinymce/skins/content/dark/content.min.js +4 -0
  12. package/client/lib/tinymce/skins/content/dark/content.min.js.map +1 -0
  13. package/client/lib/tinymce/skins/content/default/content.js +4 -10
  14. package/client/lib/tinymce/skins/content/default/content.js.map +1 -0
  15. package/client/lib/tinymce/skins/content/default/content.min.js +4 -0
  16. package/client/lib/tinymce/skins/content/default/content.min.js.map +1 -0
  17. package/client/lib/tinymce/skins/content/document/content.js +4 -10
  18. package/client/lib/tinymce/skins/content/document/content.js.map +1 -0
  19. package/client/lib/tinymce/skins/content/document/content.min.js +4 -0
  20. package/client/lib/tinymce/skins/content/document/content.min.js.map +1 -0
  21. package/client/lib/tinymce/skins/content/tinymce-5/content.js +4 -10
  22. package/client/lib/tinymce/skins/content/tinymce-5/content.js.map +1 -0
  23. package/client/lib/tinymce/skins/content/tinymce-5/content.min.js +4 -0
  24. package/client/lib/tinymce/skins/content/tinymce-5/content.min.js.map +1 -0
  25. package/client/lib/tinymce/skins/content/tinymce-5-dark/content.js +4 -10
  26. package/client/lib/tinymce/skins/content/tinymce-5-dark/content.js.map +1 -0
  27. package/client/lib/tinymce/skins/content/tinymce-5-dark/content.min.js +4 -0
  28. package/client/lib/tinymce/skins/content/tinymce-5-dark/content.min.js.map +1 -0
  29. package/client/lib/tinymce/skins/content/writer/content.js +4 -10
  30. package/client/lib/tinymce/skins/content/writer/content.js.map +1 -0
  31. package/client/lib/tinymce/skins/content/writer/content.min.js +4 -0
  32. package/client/lib/tinymce/skins/content/writer/content.min.js.map +1 -0
  33. package/client/lib/tinymce/skins/ui/oxide/content.inline.js +4 -10
  34. package/client/lib/tinymce/skins/ui/oxide/content.inline.js.map +1 -0
  35. package/client/lib/tinymce/skins/ui/oxide/content.inline.min.js +4 -0
  36. package/client/lib/tinymce/skins/ui/oxide/content.inline.min.js.map +1 -0
  37. package/client/lib/tinymce/skins/ui/oxide/content.js +4 -10
  38. package/client/lib/tinymce/skins/ui/oxide/content.js.map +1 -0
  39. package/client/lib/tinymce/skins/ui/oxide/content.min.js +4 -0
  40. package/client/lib/tinymce/skins/ui/oxide/content.min.js.map +1 -0
  41. package/client/lib/tinymce/skins/ui/oxide/skin.js +4 -1
  42. package/client/lib/tinymce/skins/ui/oxide/skin.js.map +1 -0
  43. package/client/lib/tinymce/skins/ui/oxide/skin.min.js +4 -0
  44. package/client/lib/tinymce/skins/ui/oxide/skin.min.js.map +1 -0
  45. package/client/lib/tinymce/skins/ui/oxide/skin.shadowdom.js +4 -1
  46. package/client/lib/tinymce/skins/ui/oxide/skin.shadowdom.js.map +1 -0
  47. package/client/lib/tinymce/skins/ui/oxide/skin.shadowdom.min.js +4 -0
  48. package/client/lib/tinymce/skins/ui/oxide/skin.shadowdom.min.js.map +1 -0
  49. package/client/lib/tinymce/skins/ui/oxide-dark/content.inline.js +4 -10
  50. package/client/lib/tinymce/skins/ui/oxide-dark/content.inline.js.map +1 -0
  51. package/client/lib/tinymce/skins/ui/oxide-dark/content.inline.min.js +4 -0
  52. package/client/lib/tinymce/skins/ui/oxide-dark/content.inline.min.js.map +1 -0
  53. package/client/lib/tinymce/skins/ui/oxide-dark/content.js +4 -10
  54. package/client/lib/tinymce/skins/ui/oxide-dark/content.js.map +1 -0
  55. package/client/lib/tinymce/skins/ui/oxide-dark/content.min.js +4 -0
  56. package/client/lib/tinymce/skins/ui/oxide-dark/content.min.js.map +1 -0
  57. package/client/lib/tinymce/skins/ui/oxide-dark/skin.js +4 -1
  58. package/client/lib/tinymce/skins/ui/oxide-dark/skin.js.map +1 -0
  59. package/client/lib/tinymce/skins/ui/oxide-dark/skin.min.js +4 -0
  60. package/client/lib/tinymce/skins/ui/oxide-dark/skin.min.js.map +1 -0
  61. package/client/lib/tinymce/skins/ui/oxide-dark/skin.shadowdom.js +4 -1
  62. package/client/lib/tinymce/skins/ui/oxide-dark/skin.shadowdom.js.map +1 -0
  63. package/client/lib/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.js +4 -0
  64. package/client/lib/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.js.map +1 -0
  65. package/client/lib/tinymce/skins/ui/tinymce-5/content.inline.js +4 -10
  66. package/client/lib/tinymce/skins/ui/tinymce-5/content.inline.js.map +1 -0
  67. package/client/lib/tinymce/skins/ui/tinymce-5/content.inline.min.js +4 -0
  68. package/client/lib/tinymce/skins/ui/tinymce-5/content.inline.min.js.map +1 -0
  69. package/client/lib/tinymce/skins/ui/tinymce-5/content.js +4 -10
  70. package/client/lib/tinymce/skins/ui/tinymce-5/content.js.map +1 -0
  71. package/client/lib/tinymce/skins/ui/tinymce-5/content.min.js +4 -0
  72. package/client/lib/tinymce/skins/ui/tinymce-5/content.min.js.map +1 -0
  73. package/client/lib/tinymce/skins/ui/tinymce-5/skin.js +4 -1
  74. package/client/lib/tinymce/skins/ui/tinymce-5/skin.js.map +1 -0
  75. package/client/lib/tinymce/skins/ui/tinymce-5/skin.min.js +4 -0
  76. package/client/lib/tinymce/skins/ui/tinymce-5/skin.min.js.map +1 -0
  77. package/client/lib/tinymce/skins/ui/tinymce-5/skin.shadowdom.js +4 -1
  78. package/client/lib/tinymce/skins/ui/tinymce-5/skin.shadowdom.js.map +1 -0
  79. package/client/lib/tinymce/skins/ui/tinymce-5/skin.shadowdom.min.js +4 -0
  80. package/client/lib/tinymce/skins/ui/tinymce-5/skin.shadowdom.min.js.map +1 -0
  81. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.inline.js +4 -10
  82. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.inline.js.map +1 -0
  83. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.inline.min.js +4 -0
  84. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.inline.min.js.map +1 -0
  85. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.js +4 -10
  86. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.js.map +1 -0
  87. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.min.js +4 -0
  88. package/client/lib/tinymce/skins/ui/tinymce-5-dark/content.min.js.map +1 -0
  89. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.js +4 -1
  90. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.js.map +1 -0
  91. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.min.js +4 -0
  92. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.min.js.map +1 -0
  93. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.shadowdom.js +4 -1
  94. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.shadowdom.js.map +1 -0
  95. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.shadowdom.min.js +4 -0
  96. package/client/lib/tinymce/skins/ui/tinymce-5-dark/skin.shadowdom.min.js.map +1 -0
  97. package/package.json +1 -1
  98. /package/packages/mailx-imap/{node_modules.npmglobalize-stash-68176 → node_modules.npmglobalize-stash-57720}/.package-lock.json +0 -0
@@ -1652,20 +1652,12 @@ async function showMessage(accountId, uid, folderId, specialUse, isRetry = false
1652
1652
  } else {
1653
1653
  const emlPath = msg.emlPath || "";
1654
1654
  const attCount = msg.attachments?.length || 0;
1655
- const flags = Array.isArray(msg.flags) ? msg.flags.join(", ") : "";
1656
1655
  const appVer = (document.querySelector(".app-version, #app-version, #status-version")?.textContent || "").trim();
1656
+ const headline = attCount > 0 ? "This message has attachments but no body text." : "This message has no body text \u2014 only a subject.";
1657
+ const crumbs = `mailx${appVer ? " " + appVer : ""} \xB7 ${accountId}/${uid}${emlPath ? " \xB7 " + emlPath : ""}`;
1657
1658
  bodyEl.innerHTML = `<div class="mv-system-message">
1658
- <div class="mv-system-tag">mailx${appVer ? " " + escapeHtml(appVer) : ""}</div>
1659
- <div class="mv-system-title">Body parsed empty</div>
1660
- <div class="mv-system-body" style="white-space:pre-line">${escapeHtml([
1661
- `Parser produced 0 bytes for both bodyHtml and bodyText.`,
1662
- emlPath ? `.eml file: ${emlPath}` : `.eml file: (no body_path in DB)`,
1663
- `Attachments: ${attCount}`,
1664
- flags ? `Flags: ${flags}` : "",
1665
- `Message: ${accountId}/${uid}${folderId ? ` (folder ${folderId})` : ""}`,
1666
- ``,
1667
- `Likely causes: (a) sender included only attachments/images, (b) the fetched .eml is a stub (0 bytes on disk \u2014 fetch was incomplete), (c) the body is signed/encrypted in a way the parser doesn't unwrap.`
1668
- ].filter(Boolean).join("\n"))}</div>
1659
+ <div class="mv-system-body">${escapeHtml(headline)}</div>
1660
+ <div class="mv-system-body" style="color:var(--color-text-muted);font-size:0.8em;margin-top:8px">${escapeHtml(crumbs)}</div>
1669
1661
  </div>`;
1670
1662
  }
1671
1663
  }
@@ -3502,6 +3494,13 @@ var init_message_list = __esm({
3502
3494
  const body = document.getElementById("ml-body");
3503
3495
  if (!body)
3504
3496
  return;
3497
+ const isTouch = !!window.matchMedia?.("(pointer: coarse)")?.matches;
3498
+ if (!isTouch && !body.classList.contains("multi-select-on")) {
3499
+ clearSelection();
3500
+ focusRow(this);
3501
+ lastClickedRow = this.el;
3502
+ return;
3503
+ }
3505
3504
  if (body.classList.contains("multi-select-on")) {
3506
3505
  this.setSelected(!this.isSelected);
3507
3506
  } else {
@@ -3571,7 +3570,25 @@ var init_message_list = __esm({
3571
3570
  return;
3572
3571
  }
3573
3572
  const body = this.el.parentElement;
3573
+ if (e.shiftKey) {
3574
+ const anchor = resolveShiftAnchor();
3575
+ clearSelection();
3576
+ if (anchor)
3577
+ selectRange(anchor, this.el);
3578
+ lastClickedRow = this.el;
3579
+ focusRow(this);
3580
+ updateBulkBar();
3581
+ return;
3582
+ }
3574
3583
  if (body?.classList.contains("multi-select-on")) {
3584
+ const isTouch = !!window.matchMedia?.("(pointer: coarse)")?.matches;
3585
+ if (!isTouch && !e.ctrlKey && !e.metaKey) {
3586
+ exitMultiSelect();
3587
+ focusRow(this);
3588
+ lastClickedRow = this.el;
3589
+ updateBulkBar();
3590
+ return;
3591
+ }
3575
3592
  const willBeSelected = !this.isSelected;
3576
3593
  this.setSelected(willBeSelected);
3577
3594
  lastClickedRow = this.el;
@@ -3580,19 +3597,7 @@ var init_message_list = __esm({
3580
3597
  updateBulkBar();
3581
3598
  return;
3582
3599
  }
3583
- if (e.shiftKey) {
3584
- const anchor = resolveShiftAnchor();
3585
- if (anchor) {
3586
- clearSelection();
3587
- selectRange(anchor, this.el);
3588
- lastClickedRow = this.el;
3589
- focusRow(this);
3590
- } else {
3591
- clearSelection();
3592
- focusRow(this);
3593
- lastClickedRow = this.el;
3594
- }
3595
- } else if (e.ctrlKey || e.metaKey) {
3600
+ if (e.ctrlKey || e.metaKey) {
3596
3601
  this.setSelected(!this.isSelected);
3597
3602
  lastClickedRow = this.el;
3598
3603
  } else {