import type { ScrubberPosition } from './types'; type Props = { /** Video source URL */ src: string; /** Poster image shown before playback starts */ poster: string | null | undefined; /** Unique player ID for the global PlaybackManager @default nanoid() */ id?: string; /** Autoplay strategy: `true` plays immediately, `'on-appearance'` plays when scrolled into view */ autoplay?: true | false | 'on-appearance'; loop?: boolean; /** Scroll ancestor for the IntersectionObserver */ intersectionContainer?: HTMLElement; /** Make the video non-interactive */ inert?: boolean; /** Begin loading the video source before it scrolls into view */ allowPreloading?: boolean; /** Hide the mute/unmute speaker button */ hideSpeaker?: boolean; /** Hide the play/pause overlay button */ hidePlayButton?: boolean; /** Position the seek bar at the top or bottom of the overlay @default 'bottom' */ scrubberPosition?: ScrubberPosition; /** * Removes `container-type: inline-size` from the root so the play glyph stays a fixed 40px. * Use this when size containment would collapse a shrink-to-fit parent to zero width. * @default false */ staticControls?: boolean; on?: { started?: (data: { id: string; src: string; }) => void; loaded?: (data: { id: string; src: string; }) => void; /** Fires on timeupdate with the completion ratio (0-1) */ progress?: (value: number) => void; /** * Fires on timeupdate with the raw playback position in seconds. Position-change * samples, not a heartbeat: nothing fires while paused, seeks fire once, and a * stopped/reset player emits a trailing `seconds: 0`. */ timeUpdate?: (data: { id: string; seconds: number; }) => void; ended?: (data: { id: string; src: string; }) => void; }; }; /** * A full-featured video player with custom overlay controls, play/pause, mute, seek bar, poster image, autoplay-on-scroll, and global playback management. * * The root is a `container-type: inline-size` container, so the play / pause glyph scales with the * player's own width. Pass `staticControls` to drop the container where size containment would break * the surrounding layout. * * ### CSS Custom Properties * | Property | Description | Default | * |---|---|---| * | `--sc-kit--video--background-color` | Player background | `black` | * | `--sc-kit--video--border-radius` | Corner rounding | `0` | * | `--sc-kit--video--media-fit` | Video object-fit mode | `contain` | * | `--sc-kit--video--playback-button--size` | Pins the play / pause glyph to a fixed size instead of letting `PlayIndicator` scale it with the player width | unset | * | `--sc-kit--video--poster--media-fit` | Poster image object-fit mode | `cover` | */ declare const Cmp: import("svelte").Component; type Cmp = ReturnType; export default Cmp;