cloudinary-video-player
Version:
Cloudinary Video Player
325 lines (308 loc) • 10.1 kB
JavaScript
import { f as require_baseGetTag, g as requireIsObjectLike, i as isObject, d as isString, l as ADS_IN_PLAYLIST, F as FLOATING_TO, A as AUTO_PLAY_MODE, C as CROP_MODE } from './video-player.const.js';
import { e as INTERACTION_AREAS_TEMPLATE, d as INTERACTION_AREAS_THEME } from './interaction-areas.const.js';
import { A as ADAPTIVE_STREAMING_STRATEGY } from './abr-strategies.js';
import { g as getDefaultExportFromCjs } from './_commonjsHelpers.js';
import { i as isFunction, g as getValidatorItem, c as isValueValid } from './validators-functions.js';
var isBoolean_1;
var hasRequiredIsBoolean;
function requireIsBoolean () {
if (hasRequiredIsBoolean) return isBoolean_1;
hasRequiredIsBoolean = 1;
var baseGetTag = require_baseGetTag(),
isObjectLike = requireIsObjectLike();
/** `Object#toString` result references. */
var boolTag = '[object Boolean]';
/**
* Checks if `value` is classified as a boolean primitive or object.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
* @example
*
* _.isBoolean(false);
* // => true
*
* _.isBoolean(null);
* // => false
*/
function isBoolean(value) {
return value === true || value === false ||
(isObjectLike(value) && baseGetTag(value) == boolTag);
}
isBoolean_1 = isBoolean;
return isBoolean_1;
}
var isBooleanExports = requireIsBoolean();
var isBoolean = /*@__PURE__*/getDefaultExportFromCjs(isBooleanExports);
var isNumber_1;
var hasRequiredIsNumber;
function requireIsNumber () {
if (hasRequiredIsNumber) return isNumber_1;
hasRequiredIsNumber = 1;
var baseGetTag = require_baseGetTag(),
isObjectLike = requireIsObjectLike();
/** `Object#toString` result references. */
var numberTag = '[object Number]';
/**
* Checks if `value` is classified as a `Number` primitive or object.
*
* **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
* classified as numbers, use the `_.isFinite` method.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a number, else `false`.
* @example
*
* _.isNumber(3);
* // => true
*
* _.isNumber(Number.MIN_VALUE);
* // => true
*
* _.isNumber(Infinity);
* // => true
*
* _.isNumber('3');
* // => false
*/
function isNumber(value) {
return typeof value == 'number' ||
(isObjectLike(value) && baseGetTag(value) == numberTag);
}
isNumber_1 = isNumber;
return isNumber_1;
}
var isNumberExports = requireIsNumber();
var isNumber = /*@__PURE__*/getDefaultExportFromCjs(isNumberExports);
const getOptionsString = options => isObject(options) ? `:(${Object.values(options).join('/')})` : '';
const arrayOfStringsValidator = () => ({
value: arr => Array.isArray(arr) && arr.every(isString),
message: key => `'${key}' should be an array of strings`
});
const arrayOfNumbersValidator = () => ({
value: arr => Array.isArray(arr) && arr.every(isNumber),
message: key => `'${key}' should be an array of numbers`
});
const arrayOfObjectsValidator = options => ({
value: arr => {
return arr.every(item => {
for (let key in item) {
if (Object.prototype.hasOwnProperty.call(item, key)) {
const value = item[key];
const validator = options[key];
const isValid = validator && isValueValid(validator(value), value, key);
if (!isValid) {
return false;
}
}
}
return true;
});
},
message: () => 'invalid array'
});
const orValidator = function () {
for (var _len = arguments.length, validators = new Array(_len), _key = 0; _key < _len; _key++) {
validators[_key] = arguments[_key];
}
return () => ({
value: value => validators.some(validator => getValidatorItem(validator).value(value)),
message: configPropertyName => validators.map(validator => getValidatorItem(validator).message(configPropertyName)).join(' or ')
});
};
const validator = {
isString: options => ({
value: isString,
message: key => `'${key}' should be a string${getOptionsString(options)}`
}),
isNumber: options => ({
value: isNumber,
message: key => `'${key}' should be a number${getOptionsString(options)}`
}),
isBoolean: () => ({
value: isBoolean,
message: key => `'${key}' should be a boolean`
}),
isFunction: () => ({
value: isFunction,
message: key => `'${key}' should be a function`
}),
isPlainObject: () => ({
value: isObject,
message: key => `'${key}' should be an object`
}),
isObject: () => ({
value: value => value && typeof value === 'object',
message: key => `'${key}' should be an object`
}),
isArray: () => ({
value: Array.isArray,
message: key => `'${key}' should be an array`
}),
isArrayOfNumbers: arrayOfNumbersValidator,
isArrayOfStrings: arrayOfStringsValidator,
isArrayOfObjects: arrayOfObjectsValidator,
or: orValidator
};
const playerValidators = {
videojsOptions: {
loop: validator.isBoolean,
controls: validator.isBoolean,
autoplay: validator.isBoolean,
autoplayMode: validator.isString(AUTO_PLAY_MODE),
bigPlayButton: validator.isBoolean,
playbackRates: validator.isArray,
showLogo: validator.isBoolean,
logoImageUrl: validator.isString,
logoOnclickUrl: validator.isString,
videoJS: validator.isPlainObject,
maxTries: validator.isNumber,
muted: validator.isBoolean,
playsinline: validator.isBoolean,
videoTimeout: validator.isNumber,
preload: validator.isString,
sourceTransformation: validator.isPlainObject,
allowUsageReport: validator.isBoolean,
interactionAreas: {
theme: {
template: validator.isString(INTERACTION_AREAS_THEME)
},
layout: {
enable: validator.isBoolean,
showAgain: validator.isBoolean
}
}
},
playerOptions: {
debug: validator.isBoolean,
queryParams: validator.isPlainObject,
publicId: validator.isString,
fluid: validator.isBoolean,
withCredentials: validator.isBoolean,
analytics: validator.isBoolean,
cloudinaryAnalytics: validator.or(validator.isBoolean, validator.isPlainObject),
hideContextMenu: validator.isBoolean,
playedEventPercents: validator.isArrayOfNumbers,
showJumpControls: validator.isBoolean,
chaptersButton: validator.isBoolean,
pictureInPictureToggle: validator.isBoolean,
seekThumbnails: validator.isBoolean,
aiHighlightsGraph: validator.isBoolean,
floatingWhenNotVisible: validator.isString(FLOATING_TO),
playedEventTimes: validator.isArray,
playlistWidget: {
direction: validator.isString,
total: validator.isNumber
},
colors: {
base: validator.isString,
accent: validator.isString,
text: validator.isString
},
ads: {
adTagUrl: validator.isString,
showCountdown: validator.isBoolean,
adLabel: validator.isString,
locale: validator.isString,
prerollTimeout: validator.isNumber,
postrollTimeout: validator.isNumber,
adsInPlaylist: validator.isString(ADS_IN_PLAYLIST)
},
schedule: {
weekly: validator.isArrayOfObjects({
day: validator.isString,
start: validator.isString,
duration: validator.isNumber
})
},
lazy: validator.or(validator.isBoolean, validator.isPlainObject),
cloudinary: {
autoShowRecommendations: validator.isBoolean,
sourceTypes: validator.isArrayOfStrings,
transformation: validator.isObject,
fontFace: validator.isString,
posterOptions: {
publicId: validator.isString,
transformation: validator.isObject
}
}
}
};
const sourceValidators = {
raw_transformation: validator.isString,
aspectRatio: validator.isString,
cropMode: validator.isString(CROP_MODE),
cropPadColor: validator.isString,
hdr: validator.isBoolean,
resourceType: validator.isString,
shoppable: validator.isPlainObject,
chapters: validator.or(validator.isBoolean, validator.isPlainObject),
visualSearch: validator.or(validator.isBoolean),
download: validator.isBoolean,
title: validator.or(validator.isString, validator.isBoolean),
description: validator.or(validator.isString, validator.isBoolean),
breakpoints: validator.isBoolean,
maxDpr: validator.isNumber,
interactionAreas: {
enable: validator.isBoolean,
template: validator.or(validator.isString(INTERACTION_AREAS_TEMPLATE), validator.isArray),
vttUrl: validator.isString,
onClick: validator.isFunction
},
textTracks: {
options: {
theme: validator.isString,
fontFace: validator.isString,
fontSize: validator.isString,
gravity: validator.isString,
box: validator.isPlainObject,
style: validator.isPlainObject,
wordHighlightStyle: validator.isPlainObject
},
captions: {
label: validator.isString,
language: validator.isString,
default: validator.isBoolean,
url: validator.isString,
maxWords: validator.isNumber,
wordHighlight: validator.isBoolean,
timeOffset: validator.isNumber
},
subtitles: validator.isArrayOfObjects({
label: validator.isString,
language: validator.isString,
default: validator.isBoolean,
url: validator.isString,
maxWords: validator.isNumber,
wordHighlight: validator.isBoolean,
timeOffset: validator.isNumber
})
},
info: {
title: validator.isString,
subtitle: validator.isString,
description: validator.isString
},
cloudinary: {
sourceTypes: validator.isArrayOfStrings,
transformation: validator.isObject
},
adaptiveStreaming: {
strategy: validator.isString(ADAPTIVE_STREAMING_STRATEGY)
},
videoSources: validator.isArray
};
var validators = /*#__PURE__*/Object.freeze({
__proto__: null,
playerValidators: playerValidators,
sourceValidators: sourceValidators
});
export { validators as v };