@bobfrankston/rmfmail 1.0.607 → 1.0.619
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/TODO.md +10 -0
- package/bin/mailx.js +24 -8
- package/bin/mailx.js.map +1 -1
- package/bin/mailx.ts +32 -8
- package/client/app.js +70 -30
- package/client/app.js.map +1 -1
- package/client/app.ts +66 -28
- package/client/components/alarms.js +91 -173
- package/client/components/alarms.js.map +1 -1
- package/client/components/alarms.ts +85 -158
- package/client/components/folder-tree.js +1 -1
- package/client/components/folder-tree.js.map +1 -1
- package/client/components/folder-tree.ts +1 -1
- package/client/components/message-list.js +21 -6
- package/client/components/message-list.js.map +1 -1
- package/client/components/message-list.ts +23 -6
- package/client/components/message-viewer.js +37 -6
- package/client/components/message-viewer.js.map +1 -1
- package/client/components/message-viewer.ts +37 -6
- package/client/index.html +8 -5
- package/package.json +1 -1
- package/packages/mailx-imap/index.d.ts.map +1 -1
- package/packages/mailx-imap/index.js +3 -0
- package/packages/mailx-imap/index.js.map +1 -1
- package/packages/mailx-imap/index.ts +3 -0
- package/packages/mailx-imap/package-lock.json +2 -2
- package/packages/mailx-imap/package.json +1 -1
- package/packages/mailx-store/db.d.ts.map +1 -1
- package/packages/mailx-store/db.js +36 -0
- package/packages/mailx-store/db.js.map +1 -1
- package/packages/mailx-store/db.ts +29 -0
- package/packages/mailx-store/package.json +1 -1
package/client/app.ts
CHANGED
|
@@ -11,8 +11,36 @@ import * as messageState from "./lib/message-state.js";
|
|
|
11
11
|
|
|
12
12
|
// ── New message badge (favicon + title) ──
|
|
13
13
|
/** The user-visible app name. Single point of change for the rename;
|
|
14
|
-
* every UI surface that shows "rmfmail" reads from here.
|
|
14
|
+
* every UI surface that shows "rmfmail" reads from here. Static HTML
|
|
15
|
+
* uses placeholder text that `propagateAppName` (called immediately
|
|
16
|
+
* below) overwrites — so the constant is the only place the literal
|
|
17
|
+
* string lives. */
|
|
15
18
|
export const APP_NAME = "rmfmail";
|
|
19
|
+
|
|
20
|
+
/** Stamp APP_NAME into every static HTML element that should show it.
|
|
21
|
+
* Runs synchronously at module load — before paint when imports are
|
|
22
|
+
* fast, with a sub-frame flash of the placeholder otherwise. Add new
|
|
23
|
+
* surfaces here, never inline literals. */
|
|
24
|
+
function propagateAppName(): void {
|
|
25
|
+
const set = (id: string, fn: (v: string) => string): void => {
|
|
26
|
+
const el = document.getElementById(id);
|
|
27
|
+
if (el) el.textContent = fn(APP_NAME);
|
|
28
|
+
};
|
|
29
|
+
document.title = APP_NAME;
|
|
30
|
+
set("startup-status", n => `Starting ${n}…`);
|
|
31
|
+
set("status-version", n => n);
|
|
32
|
+
set("app-version", n => n);
|
|
33
|
+
// About-button label / restart-button hover-titles live in HTML
|
|
34
|
+
// attributes; rewrite the ones that include the name.
|
|
35
|
+
const aboutBtn = document.getElementById("btn-about");
|
|
36
|
+
if (aboutBtn) aboutBtn.title = `Show version and build info`;
|
|
37
|
+
const aboutText = aboutBtn?.textContent || "";
|
|
38
|
+
if (aboutBtn && aboutText.toLowerCase().includes("about")) {
|
|
39
|
+
aboutBtn.textContent = `About ${APP_NAME}...`;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
propagateAppName();
|
|
43
|
+
|
|
16
44
|
let baseTitle = APP_NAME;
|
|
17
45
|
let lastSeenCount = 0;
|
|
18
46
|
let badgeCount = 0;
|
|
@@ -895,10 +923,33 @@ async function deleteSelectedMessages(): Promise<void> {
|
|
|
895
923
|
|
|
896
924
|
const statusSync = document.getElementById("status-sync");
|
|
897
925
|
|
|
926
|
+
// Optimistic UI: remove from list IMMEDIATELY, then queue the IPC.
|
|
927
|
+
// Old order awaited the daemon round-trip (IPC + DB updates) before
|
|
928
|
+
// the rows disappeared, which felt sluggish on bigger selections or
|
|
929
|
+
// when the IPC was congested. Spam button already worked this way;
|
|
930
|
+
// trash now matches. If the IPC fails, the next folder reload
|
|
931
|
+
// re-populates the row and the catch block surfaces the error.
|
|
932
|
+
const snapshot = [...selected];
|
|
933
|
+
removeMessagesAndReconcile(selected);
|
|
934
|
+
|
|
935
|
+
// Undo support set immediately too — Ctrl+Z works the moment rows
|
|
936
|
+
// disappear from the list, not only after the daemon ACKs.
|
|
937
|
+
if (snapshot.length === 1) {
|
|
938
|
+
lastDeleted = { ...snapshot[0], subject: "" };
|
|
939
|
+
if (statusSync) statusSync.textContent = `Trashed 1 message (syncing) — Ctrl+Z to undo`;
|
|
940
|
+
} else {
|
|
941
|
+
lastDeleted = null;
|
|
942
|
+
if (statusSync) statusSync.textContent = `Trashed ${snapshot.length} messages (syncing)`;
|
|
943
|
+
}
|
|
944
|
+
if (undoTimeout) clearTimeout(undoTimeout);
|
|
945
|
+
undoTimeout = setTimeout(() => {
|
|
946
|
+
lastDeleted = null;
|
|
947
|
+
if (statusSync?.textContent?.includes("undo")) statusSync.textContent = "";
|
|
948
|
+
}, 30000);
|
|
949
|
+
|
|
898
950
|
try {
|
|
899
|
-
// Delete on server — group by account for bulk operations
|
|
900
951
|
const byAccount = new Map<string, number[]>();
|
|
901
|
-
for (const msg of
|
|
952
|
+
for (const msg of snapshot) {
|
|
902
953
|
const uids = byAccount.get(msg.accountId) || [];
|
|
903
954
|
uids.push(msg.uid);
|
|
904
955
|
byAccount.set(msg.accountId, uids);
|
|
@@ -906,29 +957,9 @@ async function deleteSelectedMessages(): Promise<void> {
|
|
|
906
957
|
for (const [accountId, uids] of byAccount) {
|
|
907
958
|
await deleteMessages(accountId, uids);
|
|
908
959
|
}
|
|
909
|
-
|
|
910
|
-
// Undo supports the last batch
|
|
911
|
-
if (selected.length === 1) {
|
|
912
|
-
lastDeleted = { ...selected[0], subject: "" };
|
|
913
|
-
if (statusSync) statusSync.textContent = `Trashed 1 message (syncing) — Ctrl+Z to undo`;
|
|
914
|
-
} else {
|
|
915
|
-
lastDeleted = null;
|
|
916
|
-
if (statusSync) statusSync.textContent = `Trashed ${selected.length} messages (syncing)`;
|
|
917
|
-
}
|
|
918
|
-
|
|
919
|
-
if (undoTimeout) clearTimeout(undoTimeout);
|
|
920
|
-
undoTimeout = setTimeout(() => {
|
|
921
|
-
lastDeleted = null;
|
|
922
|
-
if (statusSync?.textContent?.includes("undo")) statusSync.textContent = "";
|
|
923
|
-
}, 30000);
|
|
924
|
-
|
|
925
|
-
// Remove via the list controller — single transaction filters
|
|
926
|
-
// state, deletes DOM rows, hands focus to a survivor (or clears
|
|
927
|
-
// the viewer). Replaces the old "state.removeMessages broadcasts
|
|
928
|
-
// a removed event, list+viewer subscribe independently" model.
|
|
929
|
-
removeMessagesAndReconcile(selected);
|
|
930
960
|
} catch (e: any) {
|
|
931
961
|
console.error(`Delete failed: ${e.message}`);
|
|
962
|
+
if (statusSync) statusSync.textContent = `Delete failed: ${e?.message || e}`;
|
|
932
963
|
}
|
|
933
964
|
}
|
|
934
965
|
|
|
@@ -1728,7 +1759,7 @@ window.addEventListener("message", (e) => {
|
|
|
1728
1759
|
// instantly and lingers when the user moves to do anything else,
|
|
1729
1760
|
// including punching through the compose overlay (which sits at
|
|
1730
1761
|
// z-index 1000 — popover was at 10000, hence the bug in the
|
|
1731
|
-
// screenshot). Now:
|
|
1762
|
+
// screenshot). Now: 1500ms hover delay; suppressed entirely when
|
|
1732
1763
|
// any overlay (compose, modal) is open; auto-dismissed on click,
|
|
1733
1764
|
// scroll, blur, or any keypress.
|
|
1734
1765
|
const w = window as any;
|
|
@@ -1743,7 +1774,7 @@ window.addEventListener("message", (e) => {
|
|
|
1743
1774
|
const source = e.source;
|
|
1744
1775
|
w._linkHoverShowTimer = setTimeout(() => {
|
|
1745
1776
|
// Re-check overlay state at fire time — overlay may have appeared
|
|
1746
|
-
// during the
|
|
1777
|
+
// during the 1500ms wait.
|
|
1747
1778
|
if (document.querySelector(".compose-overlay, .mailx-modal-backdrop")) return;
|
|
1748
1779
|
if (!pop) {
|
|
1749
1780
|
pop = document.createElement("div");
|
|
@@ -1773,7 +1804,7 @@ window.addEventListener("message", (e) => {
|
|
|
1773
1804
|
pop.style.left = x + "px";
|
|
1774
1805
|
pop.style.top = y + "px";
|
|
1775
1806
|
}
|
|
1776
|
-
},
|
|
1807
|
+
}, 1500);
|
|
1777
1808
|
}
|
|
1778
1809
|
if (e.data?.type === "previewKey" && typeof e.data.key === "string") {
|
|
1779
1810
|
// Re-dispatch as a real keydown on document so the hotkey handler
|
|
@@ -2327,11 +2358,18 @@ document.addEventListener("keydown", (e) => {
|
|
|
2327
2358
|
// Ctrl+D or Delete = Delete selected messages.
|
|
2328
2359
|
// P15: don't hijack Delete inside text inputs / textareas / contenteditable
|
|
2329
2360
|
// — JSONC editor's Delete key was being eaten because we always preventDefault'd.
|
|
2361
|
+
// 2026-05-09 fix: if the LIST has multiple selected rows, the user
|
|
2362
|
+
// clearly means "delete those" regardless of where focus is — search
|
|
2363
|
+
// input retaining focus after filtering shouldn't make the key dead.
|
|
2364
|
+
// Only defer to native behavior when there's no list selection AND
|
|
2365
|
+
// focus is in a text-editing surface.
|
|
2330
2366
|
if ((e.ctrlKey && e.key === "d") || e.key === "Delete") {
|
|
2331
2367
|
const t = e.target as HTMLElement | null;
|
|
2332
2368
|
const tag = t?.tagName;
|
|
2333
2369
|
const editable = t?.isContentEditable;
|
|
2334
|
-
|
|
2370
|
+
const inEditable = tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT" || editable;
|
|
2371
|
+
const listSelectionCount = document.querySelectorAll("#ml-body .ml-row.selected").length;
|
|
2372
|
+
if (inEditable && listSelectionCount === 0) return;
|
|
2335
2373
|
e.preventDefault();
|
|
2336
2374
|
deleteSelection();
|
|
2337
2375
|
}
|
|
@@ -123,158 +123,75 @@ function formatWhen(ms) {
|
|
|
123
123
|
}
|
|
124
124
|
let currentPopup = null;
|
|
125
125
|
let firedThisSession = new Set();
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
</select>
|
|
153
|
-
</label>
|
|
154
|
-
<span style="flex:1"></span>
|
|
155
|
-
<button type="button" class="alarm-btn alarm-btn-snooze">Snooze all</button>
|
|
156
|
-
<button type="button" class="alarm-btn alarm-btn-primary alarm-btn-dismiss">Dismiss all</button>
|
|
157
|
-
</div>
|
|
158
|
-
`;
|
|
159
|
-
const list = panel.querySelector(".alarm-list");
|
|
160
|
-
for (const it of items) {
|
|
161
|
-
const row = document.createElement("div");
|
|
162
|
-
row.className = "alarm-row";
|
|
163
|
-
row.dataset.uuid = it.uuid;
|
|
164
|
-
row.innerHTML = `
|
|
165
|
-
<div class="alarm-row-main">
|
|
166
|
-
<span class="alarm-row-kind">${it.kind === "calendar" ? "📅" : "☑"}</span>
|
|
167
|
-
<span class="alarm-row-title"></span>
|
|
168
|
-
<span class="alarm-row-when"></span>
|
|
169
|
-
</div>
|
|
170
|
-
<div class="alarm-row-actions">
|
|
171
|
-
${it.htmlLink ? `<button type="button" class="alarm-row-link" data-link="${it.htmlLink}" title="View in browser">↗</button>` : ""}
|
|
172
|
-
<button type="button" class="alarm-row-dismiss" title="Dismiss this one">✕</button>
|
|
126
|
+
/** uuids whose popup is currently visible on screen — set when the
|
|
127
|
+
* popup opens, cleared when the user resolves it (button or close).
|
|
128
|
+
* pollAlarms skips uuids in here so a tick that lands while a popup is
|
|
129
|
+
* still up doesn't open a second window for the same event. Distinct
|
|
130
|
+
* from `firedThisSession` (which is "shown at any point this session"
|
|
131
|
+
* and gets cleared by snooze) — `openPopups` is "right now on screen". */
|
|
132
|
+
let openPopups = new Set();
|
|
133
|
+
function escapeHtml(s) {
|
|
134
|
+
return s.replace(/[&<>"']/g, c => ({ "&": "&", "<": "<", ">": ">", "\"": """, "'": "'" }[c]));
|
|
135
|
+
}
|
|
136
|
+
/** Render the popup using an inline DOM overlay — used when no msger
|
|
137
|
+
* host is available (browser mode, Android shells without
|
|
138
|
+
* showReminderPopup wired). Returns the same shape as the msger path
|
|
139
|
+
* so the caller can switch on `r.button` uniformly. */
|
|
140
|
+
function showInWebViewPopup(opts) {
|
|
141
|
+
return new Promise(resolve => {
|
|
142
|
+
const overlay = document.createElement("div");
|
|
143
|
+
overlay.className = "alarm-overlay";
|
|
144
|
+
const panel = document.createElement("div");
|
|
145
|
+
panel.className = "alarm-panel";
|
|
146
|
+
const buttonsHtml = opts.buttons.map(b => `<button type="button" class="alarm-btn${b === "Open" || b === "Dismiss" ? " alarm-btn-primary" : ""}" data-button="${escapeHtml(b)}">${escapeHtml(b)}</button>`).join("");
|
|
147
|
+
panel.innerHTML = `
|
|
148
|
+
<div class="alarm-head">
|
|
149
|
+
<span class="alarm-icon">⏰</span>
|
|
150
|
+
<span class="alarm-title">${escapeHtml(opts.title)}</span>
|
|
151
|
+
<button type="button" class="alarm-close" data-button="" aria-label="Close">×</button>
|
|
173
152
|
</div>
|
|
153
|
+
<div class="alarm-body">${opts.html}</div>
|
|
154
|
+
<div class="alarm-foot">${buttonsHtml}</div>
|
|
174
155
|
`;
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
overlay.appendChild(panel);
|
|
180
|
-
document.body.appendChild(overlay);
|
|
181
|
-
currentPopup = overlay;
|
|
182
|
-
// Pin the mailx window above other apps while a reminder is showing —
|
|
183
|
-
// matches Thunderbird's reminder dialog behavior. Cleared on close so
|
|
184
|
-
// the window doesn't stay always-on-top once the user has acknowledged.
|
|
185
|
-
// No-op in browser fallback (msgapi only present in WebView2).
|
|
186
|
-
const msgapi = window.msgapi;
|
|
187
|
-
try {
|
|
188
|
-
msgapi?.setAlwaysOnTop?.(true);
|
|
189
|
-
}
|
|
190
|
-
catch { /* */ }
|
|
191
|
-
const snoozeMinutes = () => {
|
|
192
|
-
const sel = panel.querySelector(".alarm-snooze-sel");
|
|
193
|
-
if (sel.value === "custom") {
|
|
194
|
-
const v = prompt("Snooze for how many minutes?", "30");
|
|
195
|
-
const n = parseInt(v || "", 10);
|
|
196
|
-
return Number.isFinite(n) && n > 0 ? n : null;
|
|
197
|
-
}
|
|
198
|
-
return parseInt(sel.value, 10);
|
|
199
|
-
};
|
|
200
|
-
const snoozeAll = (minutes) => {
|
|
201
|
-
const now = Date.now();
|
|
202
|
-
const map = loadSnoozed();
|
|
203
|
-
for (const it of items)
|
|
204
|
-
map[it.uuid] = now + minutes * 60_000;
|
|
205
|
-
saveSnoozed(map);
|
|
206
|
-
for (const it of items)
|
|
207
|
-
firedThisSession.delete(it.uuid);
|
|
208
|
-
close();
|
|
209
|
-
};
|
|
210
|
-
const dismissAll = () => {
|
|
211
|
-
const map = loadDismissed();
|
|
212
|
-
for (const it of items)
|
|
213
|
-
map[it.uuid] = true;
|
|
214
|
-
saveDismissed(map);
|
|
215
|
-
close();
|
|
216
|
-
};
|
|
217
|
-
const close = () => {
|
|
218
|
-
overlay.remove();
|
|
219
|
-
currentPopup = null;
|
|
156
|
+
overlay.appendChild(panel);
|
|
157
|
+
document.body.appendChild(overlay);
|
|
158
|
+
currentPopup = overlay;
|
|
159
|
+
const msgapi = window.msgapi;
|
|
220
160
|
try {
|
|
221
|
-
msgapi?.setAlwaysOnTop?.(
|
|
161
|
+
msgapi?.setAlwaysOnTop?.(true);
|
|
222
162
|
}
|
|
223
163
|
catch { /* */ }
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
close();
|
|
244
|
-
});
|
|
245
|
-
});
|
|
246
|
-
panel.querySelectorAll(".alarm-row-link").forEach(btn => {
|
|
247
|
-
btn.addEventListener("click", () => {
|
|
248
|
-
const url = btn.dataset.link;
|
|
249
|
-
if (!url)
|
|
250
|
-
return;
|
|
251
|
-
const api = window.mailxapi;
|
|
252
|
-
if (api?.openExternal)
|
|
253
|
-
api.openExternal(url);
|
|
254
|
-
else
|
|
255
|
-
window.open(url, "_blank");
|
|
164
|
+
const cleanup = (button) => {
|
|
165
|
+
overlay.remove();
|
|
166
|
+
currentPopup = null;
|
|
167
|
+
try {
|
|
168
|
+
msgapi?.setAlwaysOnTop?.(false);
|
|
169
|
+
}
|
|
170
|
+
catch { /* */ }
|
|
171
|
+
document.removeEventListener("keydown", onKey, true);
|
|
172
|
+
resolve({ button });
|
|
173
|
+
};
|
|
174
|
+
const onKey = (e) => {
|
|
175
|
+
if (e.key === "Escape") {
|
|
176
|
+
e.stopPropagation();
|
|
177
|
+
cleanup("");
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
document.addEventListener("keydown", onKey, true);
|
|
181
|
+
panel.querySelectorAll("[data-button]").forEach(btn => {
|
|
182
|
+
btn.addEventListener("click", () => cleanup(btn.dataset.button || ""));
|
|
256
183
|
});
|
|
257
184
|
});
|
|
258
|
-
// Escape closes without action (same as X) — user can re-open with next
|
|
259
|
-
// poll tick by not acting on it.
|
|
260
|
-
const onKey = (e) => {
|
|
261
|
-
if (e.key === "Escape") {
|
|
262
|
-
e.stopPropagation();
|
|
263
|
-
close();
|
|
264
|
-
document.removeEventListener("keydown", onKey, true);
|
|
265
|
-
}
|
|
266
|
-
};
|
|
267
|
-
document.addEventListener("keydown", onKey, true);
|
|
268
|
-
}
|
|
269
|
-
/** Fire one OS-level always-on-top popup per due item. Each popup is its
|
|
270
|
-
* own msger window — visible above other apps, not tied to mailx focus.
|
|
271
|
-
* Buttons returned by msger map to local state changes (snooze/dismiss)
|
|
272
|
-
* and the optional Google Calendar deep-link. The in-WebView popup stays
|
|
273
|
-
* as a fallback for the browser-mode build (no msger host). */
|
|
274
|
-
function escapeHtml(s) {
|
|
275
|
-
return s.replace(/[&<>"']/g, c => ({ "&": "&", "<": "<", ">": ">", "\"": """, "'": "'" }[c]));
|
|
276
185
|
}
|
|
277
|
-
async function
|
|
186
|
+
async function firePopupForItem(item) {
|
|
187
|
+
// Already-showing guard. The popup chain is fire-and-forget so
|
|
188
|
+
// without an explicit registry there's nothing stopping a second
|
|
189
|
+
// window for the same uuid (e.g., a 2-min Open snooze expires while
|
|
190
|
+
// the user is still looking at the first popup). `openPopups` tracks
|
|
191
|
+
// "currently on screen" — pollAlarms also checks it.
|
|
192
|
+
if (openPopups.has(item.uuid))
|
|
193
|
+
return;
|
|
194
|
+
openPopups.add(item.uuid);
|
|
278
195
|
const html = `<!DOCTYPE html>
|
|
279
196
|
<html><head><meta charset="utf-8"><style>
|
|
280
197
|
body { font: 13px system-ui, sans-serif; margin: 0; padding: 16px 18px; background: #fff; color: #222; }
|
|
@@ -292,16 +209,26 @@ async function showOsPopupForItem(item) {
|
|
|
292
209
|
// event as a fresh entry — if the user moves the start time during
|
|
293
210
|
// the edit, the new alarm fires off the new time, not the old one.
|
|
294
211
|
// Tasks have no htmlLink so Open is skipped for them.
|
|
295
|
-
const buttons = [];
|
|
296
|
-
buttons.push("Snooze 15m", "Snooze 1h", "Dismiss");
|
|
212
|
+
const buttons = ["Snooze 15m", "Snooze 1h", "Dismiss"];
|
|
297
213
|
if (item.htmlLink)
|
|
298
214
|
buttons.push("Open");
|
|
299
|
-
const
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
215
|
+
const title = item.kind === "calendar" ? "Calendar reminder" : "Task reminder";
|
|
216
|
+
const hasHost = !!window.mailxapi?.showReminderPopup;
|
|
217
|
+
let r;
|
|
218
|
+
try {
|
|
219
|
+
if (hasHost) {
|
|
220
|
+
r = await showReminderPopup({
|
|
221
|
+
title, html, buttons,
|
|
222
|
+
size: { width: 480, height: 210 },
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
r = await showInWebViewPopup({ title, html, buttons });
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
finally {
|
|
230
|
+
openPopups.delete(item.uuid);
|
|
231
|
+
}
|
|
305
232
|
const api = window.mailxapi;
|
|
306
233
|
const openLink = () => {
|
|
307
234
|
if (!item.htmlLink)
|
|
@@ -370,34 +297,25 @@ function snoozeItem(item, minutes) {
|
|
|
370
297
|
}
|
|
371
298
|
async function pollAlarms() {
|
|
372
299
|
if (document.hidden)
|
|
373
|
-
return; // don't
|
|
300
|
+
return; // don't tick while tab hidden
|
|
374
301
|
const now = Date.now();
|
|
375
302
|
pruneState(now);
|
|
376
303
|
const due = await collectDueAlarms(now);
|
|
377
|
-
//
|
|
378
|
-
//
|
|
379
|
-
//
|
|
380
|
-
|
|
304
|
+
// Two filters: skip uuids already fired this session (Snooze + an
|
|
305
|
+
// expired snooze re-allows them; Dismiss permanently suppresses via
|
|
306
|
+
// localStorage), and skip uuids whose popup is currently visible
|
|
307
|
+
// (race guard for fire-and-forget OS popups).
|
|
308
|
+
const fresh = due.filter(d => !firedThisSession.has(d.uuid) && !openPopups.has(d.uuid));
|
|
381
309
|
if (fresh.length === 0)
|
|
382
310
|
return;
|
|
383
311
|
for (const d of fresh)
|
|
384
312
|
firedThisSession.add(d.uuid);
|
|
385
|
-
//
|
|
386
|
-
//
|
|
387
|
-
//
|
|
388
|
-
//
|
|
389
|
-
const
|
|
390
|
-
|
|
391
|
-
for (const item of fresh) {
|
|
392
|
-
// Fire-and-forget — popups are independent processes; we don't
|
|
393
|
-
// serialize them. Errors get logged but never block.
|
|
394
|
-
showOsPopupForItem(item).catch(e => console.error(` [alarm] OS popup failed: ${e?.message || e}`));
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
else {
|
|
398
|
-
if (currentPopup)
|
|
399
|
-
return;
|
|
400
|
-
showPopup(fresh);
|
|
313
|
+
// One unified path. firePopupForItem picks render target (msger OS
|
|
314
|
+
// window vs in-WebView DOM overlay) internally; same buttons,
|
|
315
|
+
// same post-click logic, same dedup. Fire-and-forget per item —
|
|
316
|
+
// errors logged but never block the poll loop.
|
|
317
|
+
for (const item of fresh) {
|
|
318
|
+
firePopupForItem(item).catch(e => console.error(` [alarm] popup failed: ${e?.message || e}`));
|
|
401
319
|
}
|
|
402
320
|
}
|
|
403
321
|
/** Start the alarm poller. Called from app.ts on startup. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alarms.js","sourceRoot":"","sources":["alarms.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"alarms.js","sourceRoot":"","sources":["alarms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEtF,MAAM,aAAa,GAAG,uBAAuB,CAAC,CAAM,iBAAiB;AACrE,MAAM,WAAW,GAAG,qBAAqB,CAAC,CAAU,yBAAyB;AAC7E,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAiB,gCAAgC;AACpF,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAiB,4CAA4C;AAChG,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAY,6BAA6B;AACjF,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAchC,SAAS,aAAa;IAClB,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AAChG,CAAC;AACD,SAAS,aAAa,CAAC,GAA4B;IAC/C,IAAI,CAAC;QAAC,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAClG,CAAC;AACD,SAAS,WAAW;IAChB,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AAC9F,CAAC;AACD,SAAS,WAAW,CAAC,GAA2B;IAC5C,IAAI,CAAC;QAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;AACnF,CAAC;AAED,4DAA4D;AAC5D,SAAS,UAAU,CAAC,GAAW;IAC3B,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAClD,oEAAoE;QACpE,kCAAkC;QAClC,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,GAAG,SAAS,EAAE,CAAC;YAAC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC;QAAC,CAAC;IAC9E,CAAC;IACD,IAAI,OAAO;QAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,2DAA2D;AAC/D,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,GAAW;IACvC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,GAAG,WAAW,EAAE,GAAG,GAAG,YAAY,CAAC,CAAC;QAC9E,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,EAAE,CAAC,IAAI;gBAAE,SAAS;YACvB,IAAI,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC;gBAAE,SAAS;YACjC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,MAAM,KAAK,GAAG,OAAO,GAAG,WAAW,CAAC;YACpC,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;YAC5C,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,GAAG,GAAG,GAAG,WAAW,EAAE,CAAC;gBACpD,KAAK,CAAC,IAAI,CAAC;oBACP,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU;oBAC/B,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,YAAY;oBAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO;oBACnC,QAAQ,EAAE,EAAE,CAAC,QAAQ;iBACxB,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAAC,MAAM,CAAC,CAAC,6DAA6D,CAAC,CAAC;IAEzE,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK;gBAAE,SAAS;YAClC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,SAAS;YAChC,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YAC7C,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,GAAG,GAAG,GAAG,WAAW,EAAE,CAAC;gBACpD,KAAK,CAAC,IAAI,CAAC;oBACP,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM;oBAC1B,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,YAAY;oBAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK;iBACtC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IAEjB,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,UAAU,CAAC,EAAU;IAC1B,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACnB,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,OAAO,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AACjI,CAAC;AAED,IAAI,YAAY,GAAuB,IAAI,CAAC;AAC5C,IAAI,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;AACzC;;;;;2EAK2E;AAC3E,IAAI,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;AAEnC,SAAS,UAAU,CAAC,CAAS;IACzB,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;AACtH,CAAC;AAED;;;wDAGwD;AACxD,SAAS,kBAAkB,CAAC,IAAwD;IAChF,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5C,KAAK,CAAC,SAAS,GAAG,aAAa,CAAC;QAChC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACrC,yCAAyC,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,kBAAkB,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CACnK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACX,KAAK,CAAC,SAAS,GAAG;;;4CAGkB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;;sCAG5B,IAAI,CAAC,IAAI;sCACT,WAAW;SACxC,CAAC;QACF,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,YAAY,GAAG,OAAO,CAAC;QAEvB,MAAM,MAAM,GAAS,MAAc,CAAC,MAAM,CAAC;QAC3C,IAAI,CAAC;YAAC,MAAM,EAAE,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;QAEvD,MAAM,OAAO,GAAG,CAAC,MAAc,EAAQ,EAAE;YACrC,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,YAAY,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC;gBAAC,MAAM,EAAE,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;YACxD,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACrD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACxB,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,CAAC,CAAgB,EAAQ,EAAE;YACrC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAAC,CAAC,CAAC,eAAe,EAAE,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAAC,CAAC;QACjE,CAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAClD,KAAK,CAAC,gBAAgB,CAAoB,eAAe,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACrE,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAe;IAC3C,+DAA+D;IAC/D,iEAAiE;IACjE,oEAAoE;IACpE,qEAAqE;IACrE,qDAAqD;IACrD,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO;IACtC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE1B,MAAM,IAAI,GAAG;;;;;;;;0CAQyB,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;sBACzF,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;sBACnC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU;eAC/D,CAAC;IAEZ,kEAAkE;IAClE,oEAAoE;IACpE,mEAAmE;IACnE,mEAAmE;IACnE,sDAAsD;IACtD,MAAM,OAAO,GAAa,CAAC,YAAY,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACjE,IAAI,IAAI,CAAC,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAExC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,eAAe,CAAC;IAC/E,MAAM,OAAO,GAAG,CAAC,CAAE,MAAc,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IAC9D,IAAI,CAAqB,CAAC;IAC1B,IAAI,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACV,CAAC,GAAG,MAAM,iBAAiB,CAAC;gBACxB,KAAK,EAAE,IAAI,EAAE,OAAO;gBACpB,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;aACpC,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,CAAC,GAAG,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;YAAS,CAAC;QACP,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,GAAG,GAAI,MAAc,CAAC,QAAQ,CAAC;IACrC,MAAM,QAAQ,GAAG,GAAS,EAAE;QACxB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC3B,IAAI,GAAG,EAAE,YAAY;YAAE,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;YAClD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC;IACF,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACP,QAAQ,EAAE,CAAC;YACX,yDAAyD;YACzD,2DAA2D;YAC3D,0DAA0D;YAC1D,yDAAyD;YACzD,2DAA2D;YAC3D,0DAA0D;YAC1D,8DAA8D;YAC9D,gBAAgB;YAChB,EAAE;YACF,4DAA4D;YAC5D,wDAAwD;YACxD,uDAAuD;YACvD,sDAAsD;YACtD,kCAAkC;YAClC,CAAC;gBAAC,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;gBAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAAC,CAAC;YACxE,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACpB,MAAM;QACV,KAAK,YAAY;YAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAAC,MAAM;QAC/C,KAAK,WAAW;YAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAAC,MAAM;QAC9C,KAAK,SAAS;YACV,CAAC;gBAAC,MAAM,CAAC,GAAG,aAAa,EAAE,CAAC;gBAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;YACrE,MAAM;QACV;YACI,8DAA8D;YAC9D,yDAAyD;YACzD,0DAA0D;YAC1D,sDAAsD;YACtD,0DAA0D;YAC1D,6DAA6D;YAC7D,sDAAsD;YACtD,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACrB,MAAM;IACd,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,IAAe,EAAE,OAAe;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;IAC1B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,OAAO,GAAG,MAAM,CAAC;IACxC,WAAW,CAAC,GAAG,CAAC,CAAC;IACjB,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,UAAU;IACrB,IAAI,QAAQ,CAAC,MAAM;QAAE,OAAO,CAAqB,8BAA8B;IAC/E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,UAAU,CAAC,GAAG,CAAC,CAAC;IAChB,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACxC,kEAAkE;IAClE,oEAAoE;IACpE,iEAAiE;IACjE,8CAA8C;IAC9C,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACxF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC/B,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEpD,mEAAmE;IACnE,8DAA8D;IAC9D,gEAAgE;IAChE,+CAA+C;IAC/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACnG,CAAC;AACL,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,gBAAgB;IAC5B,IAAK,MAAc,CAAC,yBAAyB;QAAE,OAAO;IACrD,MAAc,CAAC,yBAAyB,GAAG,IAAI,CAAC;IACjD,8DAA8D;IAC9D,UAAU,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACjE,WAAW,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC9E,oEAAoE;IACpE,wEAAwE;IACxE,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC/C,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAS,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACP,CAAC"}
|