refactor: convert bookmarks to typed module

This commit is contained in:
sjg
2026-08-01 13:13:52 +02:00
parent 9fef0ebc7b
commit c7994347e9
8 changed files with 1052 additions and 856 deletions
@@ -802,11 +802,12 @@ function setTheme(theme) {
invalidateBookmarkColors();
}
function invalidateBookmarkColors() {
if (typeof bmOverlayRevision === "undefined") return;
bmOverlayRevision++;
const bookmarks = window.trx.modules.bookmarks;
if (!bookmarks) return;
bookmarks.invalidateColors();
void getComputedStyle(document.documentElement).getPropertyValue("--bg");
const colorMap = bmCategoryColorMap();
const ref = typeof bmOverlayList !== "undefined" ? bmOverlayList : [];
const ref = bookmarks.overlayList;
document.querySelectorAll(".spectrum-bookmark-chip").forEach((chip) => {
const bm = ref.find((b) => b.id === chip.dataset.bmId);
if (!bm) return;
@@ -1450,7 +1451,7 @@ function drawSignalOverlay() {
const bwEdge = BW_OVERLAY_COLORS.edge;
const bwStroke = BW_OVERLAY_COLORS.stroke;
const bwHard = BW_OVERLAY_COLORS.hard;
const bmRef = typeof bmOverlayList !== "undefined" ? bmOverlayList : null;
const bmRef = window.trx.modules.bookmarks?.overlayList ?? null;
if (Array.isArray(bmRef) && bmRef.length > 0) {
const colorMap = bmCategoryColorMap();
const grouped = /* @__PURE__ */ new Map();
@@ -4625,7 +4626,7 @@ function buildBookmarkTooltipText(bm) {
return text;
}
function nearestBookmarkForHz(hz, widthPx, range) {
const ref = typeof bmOverlayList !== "undefined" ? bmOverlayList : null;
const ref = window.trx.modules.bookmarks?.overlayList ?? null;
if (!Array.isArray(ref) || !Number.isFinite(hz) || !widthPx || !range || !Number.isFinite(range.visSpanHz) || range.visSpanHz <= 0) {
return null;
}
@@ -7189,7 +7190,7 @@ function bmThemePalette() {
];
}
function bmCategoryColorMap() {
const ref = typeof bmOverlayList !== "undefined" ? bmOverlayList : [];
const ref = window.trx.modules.bookmarks?.overlayList ?? [];
const cats = [...new Set(ref.map((b) => b.category).filter(Boolean))].sort();
const palette = bmThemePalette();
const map = { "": palette[0] };
@@ -7216,13 +7217,13 @@ function createBookmarkChip(bm, colorMap, options = {}) {
span.style.setProperty("--bm-cat-bg", col);
span.style.setProperty("--bm-cat-fg", bmContrastFg(col));
span.addEventListener("click", () => {
if (typeof bmApply === "function") bmApply(bm);
void window.trx.modules.bookmarks?.apply(bm);
});
return span;
}
function updateSideBookmarkStack(container, bookmarks, colorMap) {
if (!container) return;
const rev = typeof bmOverlayRevision !== "undefined" ? bmOverlayRevision : 0;
const rev = window.trx.modules.bookmarks?.overlayRevision ?? 0;
const nextKey = Array.isArray(bookmarks) ? `${rev}:${bookmarks.map((bm) => bm.id).join(",")}` : "";
if (!Array.isArray(bookmarks) || bookmarks.length === 0) {
if (container.dataset.bmKey) {
@@ -7246,7 +7247,7 @@ function updateBookmarkAxis(range) {
const leftSideEl = document.getElementById("spectrum-bookmark-side-left");
const rightSideEl = document.getElementById("spectrum-bookmark-side-right");
if (!axisEl) return;
const _bmRef = typeof bmOverlayList !== "undefined" ? bmOverlayList : null;
const _bmRef = window.trx.modules.bookmarks?.overlayList ?? null;
const allBookmarks = Array.isArray(_bmRef) ? _bmRef : [];
const visBookmarks = allBookmarks.filter((bm) => bm.freq_hz >= range.visLoHz && bm.freq_hz <= range.visHiHz);
const leftBookmarks = allBookmarks.filter((bm) => bm.freq_hz < range.visLoHz).sort((a, b) => b.freq_hz - a.freq_hz).slice(0, 3);
@@ -7263,7 +7264,7 @@ function updateBookmarkAxis(range) {
}
return;
}
const rev = typeof bmOverlayRevision !== "undefined" ? bmOverlayRevision : 0;
const rev = window.trx.modules.bookmarks?.overlayRevision ?? 0;
const newKey = `${rev}:${visBookmarks.map((b) => b.id).join(",")}`;
if (axisEl.dataset.bmKey !== newKey) {
axisEl.dataset.bmKey = newKey;