- design_user_pick.ts 새 파일 — 사용자 고름 표시 한 칸(진짜 누름 안 · 묶음 차례 없음) - design_shared onReveal 한 곳이 그 칸만 봄 — 폼(고름 · 우클릭 추가)은 그대로 펴기를 부름 - design_page_data pageBusy — 묶음 차례가 떠 있나 - 배수유역 다시 나눔 응답 · 방향키 · 끌기 · 묶음 다시 돎의 다시 칠하기 = 안 폄 - 시험 test_398_1_reveal_user_pick(헬퍼 helper_398_1_user_pick.cjs) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TteK8mfYZetk5P3bEZkyVZ
31 lines
1.6 KiB
TypeScript
31 lines
1.6 KiB
TypeScript
/* =============================================================================
|
|
* A00_Common/design/design_user_pick.ts
|
|
* 「사용자 고름」 표시 한 칸(PLAN 398-1) — 좌측 패널 저절로 펴기(09-04 「바깥에서 고르면 좌측 패널도」)는
|
|
* 사용자가 직접 누른 고름에서만.
|
|
*
|
|
* 사용자 고름 = 지금 브라우저가 진짜 누름(포인터 · 마우스 · 우클릭)을 처리하는 중 — 눈금 · 마름모 · 3D ·
|
|
* 종단 알약 · 배수유역도 · 횡단 카드 · 우클릭 추가가 다 그 누름 안에서 폼을 엶.
|
|
* 아님 = 누름 밖(서버 응답 · 타이머 — 배수유역 다시 나눔 · 횡단 다시 그림) · 방향키 · 묶음이 도는 동안
|
|
* (교점 끌기 · 곡선 지우기 · 되돌리기가 띄운 차례의 관 · 구조물 따라가기 · 다시 칠하기).
|
|
* 폼이 고른 것을 다시 실을 때마다 부르는 쪽을 막지 않고 펴기 한 곳(`design_shared` onReveal)이 여기만 봄.
|
|
* ========================================================================== */
|
|
|
|
import { pageBusy } from "./design_page_data";
|
|
|
|
const PICK_EVENTS = new Set([
|
|
"pointerdown",
|
|
"pointerup",
|
|
"mousedown",
|
|
"mouseup",
|
|
"click",
|
|
"dblclick",
|
|
"contextmenu",
|
|
]);
|
|
|
|
/** 지금 사용자 누름 안이고 묶음이 안 도는가 — 좌측 패널을 펴도 되는가. */
|
|
export function isUserPick(projectId: string | null): boolean {
|
|
const event = (globalThis as { event?: Event }).event; // 처리 중인 이벤트(그 마이크로태스크까지)
|
|
if (!event?.isTrusted || !PICK_EVENTS.has(event.type)) return false;
|
|
return !projectId || !pageBusy(projectId);
|
|
}
|