UNPKG

cloudinary-video-player

Version:
325 lines (308 loc) 10.1 kB
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 };