"""Focus scene: dim the page with a spotlight cut-out around the target."""
from __future__ import annotations

from .. import js_loader
from ..browser import resolve_locator
from . import register


@register("focus")
def scene_focus(page, scene: dict) -> None:
    locator = resolve_locator(page, scene["selector"])
    box = locator.bounding_box()
    if not box:
        raise RuntimeError(f"focus: no bounding box for {scene['selector']}")
    page.evaluate(
        js_loader.load("focus"),
        {
            "box": box,
            "pad": scene.get("padding", 12),
            "label": scene.get("label", ""),
            "color": scene.get("color", "#ff3b30"),
        },
    )
    page.wait_for_timeout(scene.get("duration", 3000))
