/* ============================================================================= * common_util_view_window.ts * 요소가 지금 놓인 창 — 종단 패널을 새 창으로 빼면 그 창이다(230-1 · 230-2). * * 메인 창 전역 `requestAnimationFrame` · 시계를 쓰면, 새 창을 최대화해 메인 창이 가려질 때 * 브라우저가 메인 창 화면 틀을 멈추고 시계를 늦춰 휠 · 편집 · 다시 그리기가 멈췄다. * 화면 틀 · 시계는 이 함수로 그 요소의 창에서 받는다. * ========================================================================== */ /** 요소가 놓인 창(문서에 안 붙었으면 메인 창). */ export function viewOf(node: Node | null | undefined): Window { return node?.ownerDocument?.defaultView ?? window; } /** 요소가 놓인 창의 다음 화면 틀에 부른다. */ export function frameOf(node: Node | null | undefined, callback: FrameRequestCallback): number { return viewOf(node).requestAnimationFrame(callback); }