tiny-essentials
Version:
Collection of small, essential scripts designed to be used across various projects. These simple utilities are crafted for speed, ease of use, and versatility.
168 lines • 7 kB
text/typescript
export default TinyHtmlMedia;
export type ClassSetter = import("./TinyHtmlTemplate.mjs").ClassSetter;
/** @typedef {import('./TinyHtmlTemplate.mjs').ClassSetter} ClassSetter */
/**
* TinyHtmlMedia is a base helper for <audio> and <video> elements.
* It provides a consistent API to control media playback and access
* standard {@link HTMLMediaElement} properties and methods.
*
* @template {HTMLMediaElement} TinyHtmlT
* @extends TinyHtmlTemplate<TinyHtmlT>
*/
declare class TinyHtmlMedia<TinyHtmlT extends HTMLMediaElement> extends TinyHtmlTemplate<TinyHtmlT> {
/**
* Creates a new TinyHtmlMedia instance.
* @param {TinyHtmlT} tag - The HTML tag name (e.g., 'audio', 'video').
* @param {ClassSetter} [tags=[]] - Initial CSS classes to apply.
* @param {ClassSetter} [mainClass=[]] - Main CSS classes to apply.
*/
constructor(tag: TinyHtmlT, tags?: ClassSetter, mainClass?: ClassSetter);
/**
* Plays all attached media elements.
* @returns {Promise<void>} Resolves when all play calls complete.
*/
playMedia(): Promise<void>;
/**
* Pauses all attached media elements.
* @returns {this}
*/
pauseMedia(): this;
/**
* Toggles play/pause state for all attached media elements.
* @returns {this}
*/
togglePlayMedia(): this;
/**
* Stops all media by pausing and resetting the current time to `0`.
* @returns {this}
*/
stopMedia(): this;
set currentTime(t: number);
/** @type {number} The current playback position in seconds. */
get currentTime(): number;
/**
* Reloads all attached media elements.
* @returns {this}
*/
loadMedia(): this;
/**
* Adds a new text track to the first media element.
* @param {TextTrackKind} kind - A string representing the TextTrack.kind property (subtitles, captions, descriptions, chapters, or metadata).
* @param {string} [label] - A string representing the TextTrack.label property.
* @param {string} [language] - A string representing the TextTrack.language property.
* @returns {TextTrack}
*/
addTextTrack(kind: TextTrackKind, label?: string, language?: string): TextTrack;
/**
* Checks if a given MIME type can be played.
* @param {string} type - MIME type (e.g., 'video/mp4').
* @returns {CanPlayTypeResult} Either "", "probably", or "maybe".
*/
canPlayType(type: string): CanPlayTypeResult;
/**
* Seeks quickly to a given time if supported.
* @param {number} time - Target time in seconds.
* @returns {this}
*/
fastSeek(time: number): this;
/**
* Sets custom MediaKeys on the first media element.
* @param {MediaKeys|null} keys - Media keys to set.
* @returns {Promise<void>}
*/
setMediaKeys(keys: MediaKeys | null): Promise<void>;
/**
* Assigns a sink ID (output device) to the first media element.
* @param {string} id - The sink ID (device ID).
* @returns {Promise<void>}
*/
setSinkId(id: string): Promise<void>;
set autoplay(v: boolean);
/** @type {boolean} Autoplay state of the media. */
get autoplay(): boolean;
/** @returns {TimeRanges} The buffered time ranges. */
get buffered(): TimeRanges;
set controls(v: boolean);
/** @type {boolean} Whether default controls are visible. */
get controls(): boolean;
set controlsList(v: string | null);
/** @type {string|null} The list of controls available. */
get controlsList(): string | null;
set crossOrigin(v: string | null);
/** @type {string|null} CORS setting for the media. */
get crossOrigin(): string | null;
/** @returns {string} The resolved source URL currently playing. */
get currentSrc(): string;
set defaultMuted(v: boolean);
/** @type {boolean} Whether media is muted by default. */
get defaultMuted(): boolean;
set defaultPlaybackRate(v: number);
/** @type {number} Default playback rate (1 = normal speed). */
get defaultPlaybackRate(): number;
set disableRemotePlayback(v: boolean);
/** @type {boolean} Whether remote playback is disabled. */
get disableRemotePlayback(): boolean;
/** @returns {number} The duration of the media in seconds. */
get duration(): number;
/** @returns {boolean} Whether the media has ended. */
get ended(): boolean;
/** @returns {MediaError|null} Error state if media failed to load. */
get error(): MediaError | null;
set loop(v: boolean);
/** @type {boolean} Whether the media should loop. */
get loop(): boolean;
set mediaGroup(v: string | null);
/** @type {string|null} Media group name for synchronization. */
get mediaGroup(): string | null;
/** @returns {MediaKeys|null} The associated MediaKeys object. */
get mediaKeys(): MediaKeys | null;
set muted(state: boolean);
/** @type {boolean} Whether the media is muted. */
get muted(): boolean;
/** @returns {number} Network state (see `HTMLMediaElement.networkState`). */
get networkState(): number;
/** @returns {boolean} Whether the media is currently paused. */
get paused(): boolean;
set playbackRate(rate: number);
/** @type {number} Current playback rate (1 = normal speed). */
get playbackRate(): number;
/** @returns {TimeRanges} Played time ranges. */
get played(): TimeRanges;
set preload(v: "" | "metadata" | "none" | "auto");
/** @type {"" | "metadata" | "none" | "auto"} Preload strategy ('none', 'metadata', 'auto'). */
get preload(): "" | "metadata" | "none" | "auto";
set preservesPitch(v: boolean);
/** @type {boolean} Whether pitch is preserved when rate changes. */
get preservesPitch(): boolean;
/** @returns {number} Ready state of the media. */
get readyState(): number;
/** @returns {RemotePlayback|null} Remote playback interface. */
get remote(): RemotePlayback | null;
/** @returns {TimeRanges} Seekable time ranges. */
get seekable(): TimeRanges;
/** @returns {boolean} Whether the media is currently seeking. */
get seeking(): boolean;
/** @returns {string} Current sink ID (output device). */
get sinkId(): string;
set src(v: string | null);
/** @type {string|null} Source URL of the media. */
get src(): string | null;
set srcObject(v: MediaProvider | null);
/** @type {MediaProvider|null} Current `srcObject` (e.g., MediaStream). */
get srcObject(): MediaProvider | null;
/** @returns {TextTrackList} Available text tracks. */
get textTracks(): TextTrackList;
/**
* Sets the volume level.
* @param {number} level - Value between 0.0 and 1.0.
* @throws {TypeError} If not a number.
*/
set volume(level: number);
/**
* Gets the current volume.
* @returns {number} Value between 0.0 and 1.0.
*/
get volume(): number;
}
import TinyHtmlTemplate from './TinyHtmlTemplate.mjs';
//# sourceMappingURL=TinyHtmlMedia.d.mts.map