cleanup and refactor

This commit is contained in:
th committed 2026-04-09 19:39:56 +02:00
1 parent 5f9db690a4
commit 73da8fb849
10 files changed
+91 -97

No files matched your search

+20 -23
View File
@@ -2,10 +2,9 @@
import { $, esc, api } from './util.js';
import { state, sortedCards, parseTags, tagChipHtml, getChildren, getRecent, getFavorites, isFavorite, SORT_MODES, SORT_ICONS, CARD_COLORS } from './state.js';
import { stripMd, getTodos, firstImage, leadingImage } from './markdown.js';
import { stripMd, getTodos, firstImage, leadingImage, renderMd, addCodeCopyButtons, formatTodoItems } from './markdown.js';
import { pushReorder, pushCardEdit, pushBatch, snapshotCard } from './undo.js';
import { getCalConfig } from './caldav.js';
import { renderMd, addCodeCopyButtons, formatTodoItems } from './markdown.js';
import { addProvider as addNotifProvider, render as renderNotifs } from './notifications.js';
import { bindCheckboxes, bindDetailImageFullscreen } from './detail.js';
@@ -22,13 +21,11 @@ const boardPreviewTitle = $('board-preview-title');
const boardPreviewColor = $('board-preview-color');
const boardPreviewTags = $('board-preview-tags');
const boardPreviewMeta = $('board-preview-meta');
let boardSplitOpen = localStorage.getItem('hyprcrd-board-split') === '1';
let boardPreviewCardId = null;
let activeDragEl = null;
let dragGhost = null;
// ── Multi-select ──
const selectedIds = new Set();
const selectedIds = state.selectedIds;
const selectBar = $('select-bar');
const selectCount = $('select-count');
@@ -263,8 +260,8 @@ export function updateSortUI() {
function showBoardPreview(cardId) {
const card = state.cards.find(c => c.id == cardId);
if (!card || !boardSplitOpen) return;
boardPreviewCardId = cardId;
if (!card || !state.boardSplitOpen) return;
state.boardPreviewCardId = cardId;
$('board-preview-empty')?.classList.add('hidden');
$('board-preview-content')?.classList.remove('hidden');
if (boardPreviewColor) boardPreviewColor.style.background = card.color;
@@ -296,12 +293,12 @@ function showBoardPreview(cardId) {
function closeBoardPreview() {
boardPreview?.classList.add('hidden');
boardSplitOpen = false;
state.boardSplitOpen = false;
localStorage.setItem('hyprcrd-board-split', '0');
const btn = $('board-split-toggle');
if (btn) btn.classList.remove('text-t-accent');
board.querySelectorAll('.board-card').forEach(el => el.classList.remove('preview-active'));
boardPreviewCardId = null;
state.boardPreviewCardId = null;
resetBoardPreview();
}
@@ -313,26 +310,26 @@ function resetBoardPreview() {
}
function toggleBoardSplit() {
boardSplitOpen = !boardSplitOpen;
localStorage.setItem('hyprcrd-board-split', boardSplitOpen ? '1' : '0');
boardPreview?.classList.toggle('hidden', !boardSplitOpen);
state.boardSplitOpen = !state.boardSplitOpen;
localStorage.setItem('hyprcrd-board-split', state.boardSplitOpen ? '1' : '0');
boardPreview?.classList.toggle('hidden', !state.boardSplitOpen);
const btn = $('board-split-toggle');
if (btn) btn.classList.toggle('text-t-accent', boardSplitOpen);
if (!boardSplitOpen) {
if (btn) btn.classList.toggle('text-t-accent', state.boardSplitOpen);
if (!state.boardSplitOpen) {
board.querySelectorAll('.board-card').forEach(el => el.classList.remove('preview-active'));
boardPreviewCardId = null;
state.boardPreviewCardId = null;
}
}
$('board-split-toggle')?.addEventListener('click', toggleBoardSplit);
$('board-preview-close')?.addEventListener('click', closeBoardPreview);
$('board-preview-edit')?.addEventListener('click', () => {
const card = state.cards.find(c => c.id == boardPreviewCardId);
const card = state.cards.find(c => c.id == state.boardPreviewCardId);
if (card) window._openModal(card);
});
// Init split state
if (boardSplitOpen) {
if (state.boardSplitOpen) {
boardPreview?.classList.remove('hidden');
const btn = $('board-split-toggle');
if (btn) btn.classList.add('text-t-accent');
@@ -559,7 +556,7 @@ export function renderBoard() {
}
board.querySelectorAll('.superview-item[data-id]').forEach(el => {
el.addEventListener('click', () => { clearHover(); if (boardSplitOpen) showBoardPreview(el.dataset.id); else window._openDetail(el.dataset.id); });
el.addEventListener('click', () => { clearHover(); if (state.boardSplitOpen) showBoardPreview(el.dataset.id); else window._openDetail(el.dataset.id); });
el.addEventListener('dblclick', () => { clearHover(); const card = state.cards.find(c => c.id == el.dataset.id); if (card) window._openModal(card); });
el.addEventListener('contextmenu', e => { e.preventDefault(); clearHover(); const card = state.cards.find(c => c.id == el.dataset.id); if (card) window._showContextMenu(e.clientX, e.clientY, card); });
@@ -645,10 +642,10 @@ export function renderBoard() {
if (fc) fc.textContent = `${cards.length} card${cards.length !== 1 ? 's' : ''} · ${state.cards.length} total`;
// Refresh split preview if open
if (boardSplitOpen && boardPreviewCardId) {
const stillExists = state.cards.some(c => c.id == boardPreviewCardId);
if (stillExists) showBoardPreview(boardPreviewCardId);
else { boardPreviewCardId = null; resetBoardPreview(); }
if (state.boardSplitOpen && state.boardPreviewCardId) {
const stillExists = state.cards.some(c => c.id == state.boardPreviewCardId);
if (stillExists) showBoardPreview(state.boardPreviewCardId);
else { state.boardPreviewCardId = null; resetBoardPreview(); }
}
// Notification banner
@@ -912,7 +909,7 @@ function bindCardEvents() {
if (clickTimer) return;
clickTimer = setTimeout(() => {
clickTimer = null;
if (boardSplitOpen) { showBoardPreview(id); }
if (state.boardSplitOpen) { showBoardPreview(id); }
else if (localStorage.getItem('hyprcrd-click-action') === 'edit') {
const card = state.cards.find(c => c.id == id);
if (card) window._openModal(card);