import type { AnyPlayerStore, Media, MediaContainer, PlayerStore } from '@videojs/core/dom'; import type { ReactiveControllerHost } from '@videojs/element'; import { type Context, type ContextConsumer, createContext } from '@videojs/element/context'; // ---------------------------------------- // Player Context // ---------------------------------------- export const PLAYER_CONTEXT_KEY = Symbol.for('@videojs/player'); export type PlayerContextValue = Store; export type PlayerContext = Context< typeof PLAYER_CONTEXT_KEY, PlayerContextValue >; /** * The default player context instance for consuming the player store in controllers. * * @public */ export const playerContext = createContext(PLAYER_CONTEXT_KEY); // ---------------------------------------- // Media Context // ---------------------------------------- export const MEDIA_CONTEXT_KEY = Symbol.for('@videojs/media'); export interface MediaContextValue { media: Media | null; setMedia: (media: Media | null) => void; } export type MediaContext = Context; export const mediaContext = createContext(MEDIA_CONTEXT_KEY); // ---------------------------------------- // Container Context // ---------------------------------------- export const CONTAINER_CONTEXT_KEY = Symbol.for('@videojs/container'); export interface ContainerContextValue { container: MediaContainer | null; setContainer: (container: MediaContainer | null) => void; } export type ContainerContext = Context; export type ContainerContextConsumer = ContextConsumer; export const containerContext = createContext( CONTAINER_CONTEXT_KEY );