/**
 * knob - pointer capture helpers for RadialKnob.
 *
 * setPointerCapture / releasePointerCapture are not exposed via Blazor's
 * ElementReference, so the component delegates here via JS interop.
 * Both functions are no-ops when the element reference is stale (e.g. the
 * component was disposed between the JS call and the microtask).
 */

/** Capture the pointer on the given element so pointermove/pointerup are
 *  delivered even when the cursor leaves the browser window. */
export function capturePointer(el: Element, pointerId: number): void {
    (el as HTMLElement).setPointerCapture(pointerId);
}

/** Release a previously captured pointer.  Called on pointercancel.
 *  pointerup releases capture implicitly, but we call this on cancel too. */
export function releasePointer(el: Element, pointerId: number): void {
    (el as HTMLElement).releasePointerCapture(pointerId);
}
