feat: refactor queue panel and split layout with deferred reveal and pointer events

- Add PointerEvent support for queue toggle, edge drag, and splitter interactions
- Implement deferred queue panel reveal animation (mr-queue-opening class)
- Make queue panel updates demand-driven; skip refresh when panel is hidden
- Replace per-item remove listeners with event delegation on queue list
- Track queue split container width via ResizeObserver with safe fallbacks
- Centralize split flex application and persist queue width/collapsed state with debounce
- Fix missing browser split pane styles to use helper-track CSS variables
- Add deferred UI cleanup for missing browser split drag end
- Add prewarm frame fallback when ResizeObserver is unavailable
This commit is contained in:
Dariusz L
2026-07-01 17:58:05 +02:00
parent c2b074ce12
commit 3c4dfc72e4
4 changed files with 699 additions and 161 deletions
+27 -3
View File
@@ -179,16 +179,19 @@
padding: 8px 6px 6px;
flex: 1;
min-height: 0;
min-width: 0;
align-items: stretch;
position: relative;
overflow: hidden;
background: var(--mr-bg, #121212);
}
#model-resolver-content {
overflow-y: auto;
flex: 1;
flex: 1 1 0;
min-height: 0;
contain: layout paint style;
min-width: 0;
contain: size layout paint style;
background: var(--mr-bg, #222);
}
@@ -196,14 +199,34 @@
width: 320px;
min-width: 240px;
max-width: 70%;
flex: 0 0 320px;
box-sizing: border-box;
display: flex;
flex-direction: column;
padding-left: 0;
border-left: 0;
contain: layout paint style;
contain: size layout paint style;
background: var(--mr-bg, #121212);
}
#model-resolver-queue.mr-queue-opening .mr-queue-stack {
content-visibility: hidden;
contain-intrinsic-size: 320px 420px;
}
#model-resolver-body.mr-queue-opening-layout #model-resolver-queue {
position: absolute;
top: 8px;
right: 6px;
bottom: 6px;
z-index: 998;
box-shadow: -12px 0 24px rgba(0, 0, 0, 0.24);
}
#model-resolver-body.mr-queue-opening-layout #model-resolver-splitter {
display: none !important;
}
#model-resolver-body.mr-is-resizing-queue #model-resolver-content,
#model-resolver-body.mr-is-resizing-queue #model-resolver-queue {
pointer-events: none;
@@ -292,6 +315,7 @@
display: flex;
flex-direction: column;
min-height: 0;
min-width: 0;
flex: 1 1 auto;
}