/** * Walks up from `from` to find the nearest ancestor that actually scrolls. * Falls back to the document root so embedding the widget in a plain, * non-scrolling page still locks the page scroll as expected. */ export declare function getScrollLockTarget(from: Element | null): HTMLElement; /** * Finds a scroll lock target without escaping `boundary`. This is used by * component-contained overlays: an ancestor owned by the host page must not * be locked merely because the widget itself has no scroll container. */ export declare function getContainedScrollLockTarget(from: Element | null, boundary: Element | null): HTMLElement | null; /** * Locks scroll on `target` and pads it to compensate for the scrollbar * that disappears, so surrounding content doesn't shift. Returns a * function that restores the original styles. */ export declare function lockScroll(target: HTMLElement): () => void;