UNPKG

@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
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 };