fix(B05): 종단 그래프를 끌 때 글자가 선택되던 것 막음

포인터 잡기를 끌기 시작 뒤로 미룬 뒤(측점 선택 복구), 그 전까지 브라우저 기본
글자 선택이 살아나 끌 때마다 라벨·수치가 파랗게 잡혔다.

끌기가 실제로 시작되는 순간 `user-select: none` 을 걸고 이미 잡힌 선택을 푼다.
끝나면 원래대로 되돌린다.

검증(공용 브라우저, 실제 마우스): 끄는 동안 선택된 글자 0자, 끝난 뒤 속성 원복,
측점 클릭 선택은 그대로 동작(60m).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-06 16:43:01 +09:00
co-authored by Claude Opus 5
parent 7b0aced287
commit a1a5081f28
@@ -119,6 +119,7 @@ export function attachWheelHorizontalScroll(scroller: HTMLElement): void {
if (scroller.hasPointerCapture(dragId)) scroller.releasePointerCapture(dragId);
dragId = null;
scroller.style.cursor = "";
scroller.style.userSelect = "";
// 끈 뒤의 click 한 번만 삼킨다(캡처 단계라 아래 리스너보다 먼저 잡는다).
if (dragMoved) {
const swallow = (event: MouseEvent): void => {
@@ -160,6 +161,10 @@ export function attachWheelHorizontalScroll(scroller: HTMLElement): void {
scroller.style.cursor = "grabbing";
// 이제부터 진짜 끌기다 — 창 밖으로 나가도 이어지도록 포인터를 잡는다.
scroller.setPointerCapture(event.pointerId);
// 끄는 동안 글자가 파랗게 잡히지 않게 한다. 포인터 잡기를 미룬 뒤로 브라우저가
// 기본 글자 선택을 시작했다(2026-09-06 사용자 지적). 이미 잡힌 것도 푼다.
scroller.style.userSelect = "none";
window.getSelection()?.removeAllRanges();
}
scroller.scrollLeft = dragLeft - dx;
scroller.scrollTop = dragTop - dy;