mirror of
https://github.com/zoriya/v10.git
synced 2026-08-16 02:45:09 +00:00
78 lines
3.1 KiB
JavaScript
78 lines
3.1 KiB
JavaScript
import { EMPTY_REMOTE, EMPTY_TEXT_TRACKS, EMPTY_TIME_RANGES } from "./constants.js";
|
|
import { isFunction, isObject, isUndefined } from "@videojs/utils/predicate";
|
|
//#region src/core/predicate.ts
|
|
function hasMetadata(media) {
|
|
return media.readyState >= 1;
|
|
}
|
|
function isMediaPauseCapable(value) {
|
|
if (!isObject(value)) return false;
|
|
const media = value;
|
|
return !isUndefined(media.paused) && !isUndefined(media.ended) && isFunction(media.pause);
|
|
}
|
|
function isMediaSeekCapable(value) {
|
|
if (!isObject(value)) return false;
|
|
const media = value;
|
|
return !isUndefined(media.currentTime) && !isUndefined(media.duration) && !isUndefined(media.seeking);
|
|
}
|
|
function isMediaSourceCapable(value) {
|
|
if (!isObject(value)) return false;
|
|
const media = value;
|
|
return !isUndefined(media.src) && !isUndefined(media.currentSrc) && !isUndefined(media.readyState) && isFunction(media.load);
|
|
}
|
|
function isMediaVolumeCapable(value) {
|
|
if (!isObject(value)) return false;
|
|
const media = value;
|
|
return !isUndefined(media.volume) && !isUndefined(media.muted);
|
|
}
|
|
function isMediaPlaybackRateCapable(value) {
|
|
if (!isObject(value)) return false;
|
|
return !isUndefined(value.playbackRate);
|
|
}
|
|
function isMediaBufferCapable(value) {
|
|
if (!isObject(value)) return false;
|
|
const media = value;
|
|
return !isUndefined(media.buffered) && media.buffered !== EMPTY_TIME_RANGES && !isUndefined(media.seekable) && media.seekable !== EMPTY_TIME_RANGES;
|
|
}
|
|
function isMediaErrorCapable(value) {
|
|
if (!isObject(value)) return false;
|
|
return !isUndefined(value.error);
|
|
}
|
|
function isMediaTextTrackCapable(value) {
|
|
if (!isObject(value)) return false;
|
|
const media = value;
|
|
return !isUndefined(media.textTracks) && media.textTracks !== EMPTY_TEXT_TRACKS;
|
|
}
|
|
function isMediaVideoRenditionCapable(value) {
|
|
if (!isObject(value)) return false;
|
|
return !isUndefined(value.videoRenditions);
|
|
}
|
|
function isMediaAudioTrackCapable(value) {
|
|
if (!isObject(value)) return false;
|
|
return !isUndefined(value.audioTracks);
|
|
}
|
|
function isMediaVideoDimensionsCapable(value) {
|
|
if (!isObject(value)) return false;
|
|
const media = value;
|
|
return !isUndefined(media.videoWidth) && !isUndefined(media.videoHeight);
|
|
}
|
|
function isMediaRemotePlaybackCapable(value) {
|
|
if (!isObject(value)) return false;
|
|
const media = value;
|
|
return isObject(media.remote) && media.remote !== EMPTY_REMOTE;
|
|
}
|
|
function isMediaStreamTypeCapable(value) {
|
|
if (!isObject(value)) return false;
|
|
return !isUndefined(value.streamType);
|
|
}
|
|
function isMediaLiveCapable(value) {
|
|
if (!isObject(value)) return false;
|
|
const media = value;
|
|
return !isUndefined(media.liveEdgeStart) && !isUndefined(media.targetLiveWindow);
|
|
}
|
|
function isQuerySelectorAllCapable(value) {
|
|
return isObject(value) && "querySelectorAll" in value && isFunction(value.querySelectorAll);
|
|
}
|
|
//#endregion
|
|
export { hasMetadata, isMediaAudioTrackCapable, isMediaBufferCapable, isMediaErrorCapable, isMediaLiveCapable, isMediaPauseCapable, isMediaPlaybackRateCapable, isMediaRemotePlaybackCapable, isMediaSeekCapable, isMediaSourceCapable, isMediaStreamTypeCapable, isMediaTextTrackCapable, isMediaVideoDimensionsCapable, isMediaVideoRenditionCapable, isMediaVolumeCapable, isQuerySelectorAllCapable };
|
|
|
|
//# sourceMappingURL=predicate.js.map
|