@ktt45678/vidstack
Version:
UI component library for building high-quality, accessible video and audio experiences on the web.
162 lines (157 loc) • 6.68 kB
JavaScript
import { GroupedLog } from './chunks/vidstack-rWsN4lSS.js';
export { AudioProviderLoader, AudioTrackList, DASHProviderLoader, FullscreenController, HLSProviderLoader, List, LocalMediaStorage, MEDIA_KEY_SHORTCUTS, MediaControls, MediaPlayer, MediaProvider, MediaRemoteControl, ScreenOrientationController, TextRenderers, TextTrackList, VideoProviderLoader, VideoQualityList, VimeoProviderLoader, YouTubeProviderLoader, canFullscreen, isAudioProvider, isDASHProvider, isGoogleCastProvider, isHLSProvider, isHTMLAudioElement, isHTMLIFrameElement, isHTMLMediaElement, isHTMLVideoElement, isVideoProvider, isVideoQualitySrc, isVimeoProvider, isYouTubeProvider, mediaState, softResetMediaState } from './chunks/vidstack-rWsN4lSS.js';
import { DOMEvent, isString, listenEvent, useState } from './chunks/vidstack-C6myozhB.js';
export { appendTriggerEvent, findTriggerEvent, hasTriggerEvent, isKeyboardClick, isKeyboardEvent, isPointerEvent, walkTriggerEventChain } from './chunks/vidstack-C6myozhB.js';
export { mediaContext } from './chunks/vidstack-Cq-GdDcp.js';
import { TextTrackSymbol } from './chunks/vidstack-CFEqcMSQ.js';
export { TextTrack, isTrackCaptionKind, parseJSONCaptionsFile } from './chunks/vidstack-CFEqcMSQ.js';
export { findActiveCue, isCueActive, watchActiveTextTrack, watchCueTextChange } from './chunks/vidstack-D2w309v1.js';
export { sortVideoQualities } from './chunks/vidstack-BOTZD4tC.js';
import { Thumbnail, Slider } from './chunks/vidstack-Cnk1TbAw.js';
export { ARIAKeyShortcuts, AirPlayButton, AudioRadioGroup, CaptionButton, CaptionsRadioGroup, DEFAULT_PLAYBACK_RATES, FullscreenButton, LiveButton, Menu, MenuButton, MenuItem, MenuItems, MenuPortal, MuteButton, PIPButton, PlayButton, QualityRadioGroup, SeekButton, SliderController, SliderPreview, SliderValue, SpeedRadioGroup, ThumbnailsLoader, Time, TimeSlider, VolumeSlider, formatSpokenTime, formatTime, menuPortalContext, sliderContext, sliderState, updateSliderPreviewPlacement } from './chunks/vidstack-Cnk1TbAw.js';
export { TimeRange, getTimeRangesEnd, getTimeRangesStart, normalizeTimeIntervals, updateTimeIntervals } from './chunks/vidstack-Dy-iOvF5.js';
export { AudioGainRadioGroup, AudioGainSlider, Captions, ChaptersRadioGroup, Controls, ControlsGroup, DEFAULT_AUDIO_GAINS, Gesture, GoogleCastButton, MediaAnnouncer, QualitySlider, Radio, RadioGroup, SliderChapters, SliderVideo, SpeedSlider, ToggleButton, Tooltip, TooltipContent, TooltipTrigger } from './chunks/vidstack-B_uhT3RB.js';
export { Poster } from './chunks/vidstack-i7Glxdxl.js';
export { usePlyrLayoutClasses } from './chunks/vidstack-YHpR-fLm.js';
export { getDownloadFile } from './chunks/vidstack-CVbXna2m.js';
export { AUDIO_EXTENSIONS, AUDIO_TYPES, DASH_VIDEO_EXTENSIONS, DASH_VIDEO_TYPES, HLS_VIDEO_EXTENSIONS, HLS_VIDEO_TYPES, VIDEO_EXTENSIONS, VIDEO_TYPES, canChangeVolume, canGoogleCastSrc, canOrientScreen, canPlayHLSNatively, canRotateScreen, canUsePictureInPicture, canUseVideoPresentation, isAudioSrc, isDASHSrc, isHLSSrc, isMediaStream, isParsedManifest, isVideoSrc } from './chunks/vidstack-CTW_LGt6.js';
import './chunks/vidstack-BoSiLpaP.js';
import './chunks/vidstack-DH8xaM_3.js';
import './chunks/vidstack-C9vIqaYT.js';
import './chunks/vidstack-BeyDmEgV.js';
import '@floating-ui/dom';
import './chunks/vidstack-Dihypf8P.js';
import './chunks/vidstack-D6_zYTXL.js';
import 'media-captions';
class Logger {
constructor() {
this.G = null;
}
error(...data) {
return this.dispatch("error", ...data);
}
warn(...data) {
return this.dispatch("warn", ...data);
}
info(...data) {
return this.dispatch("info", ...data);
}
debug(...data) {
return this.dispatch("debug", ...data);
}
errorGroup(title) {
return new GroupedLog(this, "error", title);
}
warnGroup(title) {
return new GroupedLog(this, "warn", title);
}
infoGroup(title) {
return new GroupedLog(this, "info", title);
}
debugGroup(title) {
return new GroupedLog(this, "debug", title);
}
setTarget(newTarget) {
this.G = newTarget;
}
dispatch(level, ...data) {
return this.G?.dispatchEvent(
new DOMEvent("vds-log", {
bubbles: true,
composed: true,
detail: { level, data }
})
) || false;
}
}
class LibASSTextRenderer {
constructor(loader, config, rendererConfig) {
this.loader = loader;
this.config = config;
this.rendererConfig = rendererConfig;
this.priority = 1;
this.d = null;
this.J = null;
this.Zf = /(ssa|ass)$/;
this.Un = null;
this.Vn = [];
}
get instance() {
return this.d;
}
canRender(track, video) {
return !!video && !!track.src && (isString(track.type) && this.Zf.test(track.type) || this.Zf.test(track.src));
}
async attach(video) {
if (!video) return;
if (this.Un === null)
this.Un = await this.loader().then((mod) => mod.default);
if (this.d) this.destroy();
this.d = new this.Un({
...this.config,
video,
subUrl: this.J?.content ? void 0 : this.J?.src || "",
subContent: this.isValidContent(this.J?.content) ? this.J?.content : void 0
});
const disposeReadyEvent = listenEvent(this.d, "ready", () => {
const canvas = this.d?.Nm;
if (canvas) canvas.style.pointerEvents = "none";
if (this.d && this.rendererConfig?.onSubtitleReady)
this.rendererConfig.onSubtitleReady(this.d);
});
const disposeErrorEvent = listenEvent(this.d, "error", (event) => {
if (this.J) {
this.J[TextTrackSymbol.ma] = 3;
this.J.dispatchEvent(
new DOMEvent("error", {
trigger: event,
detail: event.error
})
);
}
});
this.Vn.push(disposeReadyEvent, disposeErrorEvent);
}
changeTrack(track, video) {
if (!track || track.readyState === 3) {
this._f();
this.destroy();
} else if (this.J !== track) {
this.destroy();
this.J = track;
this.attach(video);
}
}
detach() {
this._f();
this.destroy();
}
destroy() {
if (!this.d) return;
this.Vn.forEach((fn) => {
fn();
});
this.Vn = [];
this.d.destroy();
this.d = null;
}
_f() {
this.d?.freeTrack();
this.J = null;
}
isValidContent(content) {
if (!content) return true;
if (typeof content === "string") return true;
return false;
}
}
class SliderThumbnail extends Thumbnail {
onAttach(el) {
this.ia = useState(Slider.state);
}
uh() {
const { duration, clipStartTime } = this.a.$state;
return clipStartTime() + this.ia.pointerRate() * duration();
}
}
export { LibASSTextRenderer, Logger, Slider, SliderThumbnail, Thumbnail };