v1.0.4 - Quick Access reorder, performance improvements, search fixes

- Quick Access drag-to-reorder: drag notes to rearrange, order persists
- Quick Access preserves order when moving notes between notebooks
- In-note search: debounced input, proper scroll-to-match
- Panel resize: RAF-batched updates, editor containment during resize
- Thinner resize handles (3px)
- Note list: removed transition, added CSS containment for 1200+ notes
- Escape closes Settings and Info panels
- Fix Quick Access cache invalidation on remove
This commit is contained in:
Yuri Karamian
2026-02-10 21:14:50 +01:00
parent a95e240bcd
commit f688cf4bd4
12 changed files with 193 additions and 51 deletions
+14 -2
View File
@@ -2,23 +2,35 @@
let { onResize }: { onResize: (delta: number) => void } = $props();
let active = $state(false);
let startX = 0;
let rafId = 0;
let pendingDelta = 0;
function onMouseDown(e: MouseEvent) {
e.preventDefault();
active = true;
startX = e.clientX;
document.body.classList.add('resizing');
window.addEventListener('mousemove', onMouseMove);
window.addEventListener('mouseup', onMouseUp);
}
function onMouseMove(e: MouseEvent) {
const delta = e.clientX - startX;
pendingDelta += e.clientX - startX;
startX = e.clientX;
onResize(delta);
if (!rafId) {
rafId = requestAnimationFrame(() => {
onResize(pendingDelta);
pendingDelta = 0;
rafId = 0;
});
}
}
function onMouseUp() {
active = false;
document.body.classList.remove('resizing');
if (rafId) { cancelAnimationFrame(rafId); rafId = 0; }
if (pendingDelta) { onResize(pendingDelta); pendingDelta = 0; }
window.removeEventListener('mousemove', onMouseMove);
window.removeEventListener('mouseup', onMouseUp);
}