// 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();
}
