// Geometry helpers for WaveformSeeker. Deliberately tiny and standalone — this is NOT part of // the TypeScript audio bundle (DeepDrftPublic/Interop/audio → wwwroot/js/audio). Loaded lazily as // an ES module by the component via IJSObjectReference, so it adds no global script tag. export function getWidth(element) { return element ? element.getBoundingClientRect().width : 0; } export function capturePointer(element, pointerId) { // setPointerCapture keeps a drag tracking even when the pointer leaves the element bounds. element?.setPointerCapture?.(pointerId); } export function observeResize(element, dotNetRef) { if (!element || typeof ResizeObserver === 'undefined') return null; const observer = new ResizeObserver(entries => { for (const entry of entries) { dotNetRef.invokeMethodAsync('OnWidthChanged', entry.contentRect.width).catch(() => {}); } }); observer.observe(element); return observer; } export function unobserveResize(observer) { observer?.disconnect(); }