Luxar Viewer API Documentation - v2026.9.22
    Preparing search index...

    Configuration for a single overlay, as stored in zarr .zattrs

    interface OverlayConfig {
        name: string;
        type: "overlay_text" | "overlay_image" | "overlay_video" | "overlay_html";
        position: [number, number];
        opacity: number;
        anchor: string;
        visible_range?: Record<string, number | [number, number]>;
        transition: string;
        transition_duration: number;
        interactive: boolean;
        z_index: number;
        hover?: boolean;
        hover_image_size?: [number, number];
        text?: string;
        font_size?: number;
        font?: string;
        color?: string;
        width?: number;
        text_align?: string;
        line_height?: number;
        background?: string;
        padding?: number;
        stroke_color?: string;
        stroke_width?: number;
        blend_mode?: string;
        image_file?: string;
        size?: [number, number | null];
        video_file?: string;
        poster_file?: string;
        alpha_matte?: "stacked";
        loop?: boolean;
        autoplay?: boolean;
        muted?: boolean;
        playback_rate?: number;
        html?: string;
    }
    Index
    name: string

    Overlay name (zarr group name)

    type: "overlay_text" | "overlay_image" | "overlay_video" | "overlay_html"

    Overlay type: 'overlay_text', 'overlay_image', 'overlay_video', 'overlay_html'

    position: [number, number]

    Position in normalized screen coords [0, 1], top-left origin

    opacity: number

    Opacity 0-1

    anchor: string

    Anchor point for positioning

    visible_range?: Record<string, number | [number, number]>

    Dimension-based visibility filter

    transition: string

    Transition type: 'none' or 'fade'

    transition_duration: number

    Transition duration in seconds

    interactive: boolean

    Whether overlay captures pointer events

    z_index: number

    Z-ordering index (insertion order)

    hover?: boolean

    Whether this overlay acts as a hover tooltip (content updated by GPU picking)

    hover_image_size?: [number, number]

    Size of hover image thumbnails as [width, height] in viewport fractions

    text?: string
    font_size?: number
    font?: string
    color?: string
    width?: number
    text_align?: string
    line_height?: number
    background?: string
    padding?: number
    stroke_color?: string
    stroke_width?: number
    blend_mode?: string

    CSS mix-blend-mode (e.g. 'difference', 'screen', 'multiply')

    image_file?: string
    size?: [number, number | null]

    [width, height] as viewport fractions; a null height keeps the media's own aspect.

    video_file?: string

    Opaque file beside the group: video.webm (VP9, optionally with alpha) or video.mp4.

    poster_file?: string

    Optional still (PNG/JPEG/WebP) shown before play and where the video cannot decode.

    alpha_matte?: "stacked"

    'stacked': the frame is the colour on top and its alpha as a grey matte of the same size below (an opaque clip twice as tall). The manager recombines the halves in a shader (ui/video-matte.ts) — transparency that survives Safari / WKWebView, which decode a VP9 alpha plane and drop the alpha.

    loop?: boolean
    autoplay?: boolean
    muted?: boolean
    playback_rate?: number
    html?: string