cloudinary-video-player 3.12.1 → 3.12.2-edge.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/dist/134.min.js +8 -0
  2. package/dist/309.min.js +6 -0
  3. package/dist/adaptive-streaming.js +9 -9
  4. package/dist/adaptive-streaming.min.js +2 -2
  5. package/dist/chapters.js +4 -4
  6. package/dist/chapters.min.js +3 -3
  7. package/dist/cld-player-core.js +37 -0
  8. package/dist/cld-player-core.min.js +6 -0
  9. package/dist/cld-video-player-lazy.js +494 -0
  10. package/dist/cld-video-player-lazy.min.js +6 -0
  11. package/dist/cld-video-player.css +2 -2
  12. package/dist/cld-video-player.js +366 -332
  13. package/dist/cld-video-player.light.js +366 -332
  14. package/dist/cld-video-player.light.min.js +4 -4
  15. package/dist/cld-video-player.min.css +2 -2
  16. package/dist/cld-video-player.min.js +4 -4
  17. package/dist/colors.js +4 -4
  18. package/dist/colors.min.js +2 -2
  19. package/dist/dash.js +6 -6
  20. package/dist/dash.min.js +2 -2
  21. package/dist/debug.js +8 -8
  22. package/dist/debug.min.js +3 -3
  23. package/dist/ima.js +9 -9
  24. package/dist/ima.min.js +2 -2
  25. package/dist/interaction-areas.js +11 -11
  26. package/dist/interaction-areas.min.js +2 -2
  27. package/dist/node_modules_lodash_throttle_js.js +8 -8
  28. package/dist/playlist.js +31 -31
  29. package/dist/playlist.min.js +3 -3
  30. package/dist/recommendations-overlay.js +10 -10
  31. package/dist/recommendations-overlay.min.js +2 -2
  32. package/dist/schema.json +19 -0
  33. package/dist/share.js +5 -5
  34. package/dist/share.min.js +3 -3
  35. package/dist/shoppable.js +12 -12
  36. package/dist/shoppable.min.js +2 -2
  37. package/dist/utils_fetch-config_js.js +81 -0
  38. package/dist/video-player_js.js +3111 -0
  39. package/dist/visual-search.js +7 -7
  40. package/dist/visual-search.min.js +2 -2
  41. package/lib/_commonjsHelpers.js +7 -0
  42. package/lib/_videojs-proxy.js +30294 -0
  43. package/lib/abr-strategies.js +31 -0
  44. package/lib/adaptive-streaming.js +468 -2
  45. package/lib/all.js +25 -2
  46. package/lib/chapters.js +205 -1
  47. package/lib/cld-video-player.min.css +5 -22
  48. package/lib/colors.js +59 -1
  49. package/lib/{schema.json → config/configSchema.json} +19 -0
  50. package/lib/dash.js +69943 -2
  51. package/lib/debug.js +322 -1
  52. package/lib/document.js +770 -0
  53. package/lib/download-button.js +48 -0
  54. package/lib/fetch-config.js +93 -0
  55. package/lib/ima.js +6851 -1
  56. package/lib/index.js +27 -0
  57. package/lib/interaction-areas.const.js +24 -0
  58. package/lib/interaction-areas.service.js +469 -0
  59. package/lib/lazy.js +20 -0
  60. package/lib/noop.js +33 -0
  61. package/lib/player-api.js +469 -0
  62. package/lib/player.js +7 -2
  63. package/lib/playlist-panel.js +602 -0
  64. package/lib/playlist.js +637 -1
  65. package/lib/querystring.js +81 -0
  66. package/lib/recommendations-overlay.js +320 -1
  67. package/lib/share.js +129 -1
  68. package/lib/shoppable-post-widget.js +572 -0
  69. package/lib/shoppable-widget.js +77 -0
  70. package/lib/throttle.js +318 -0
  71. package/lib/toNumber.js +134 -0
  72. package/lib/validators-functions.js +485 -0
  73. package/lib/video-player.js +16241 -0
  74. package/lib/videoPlayer.js +7 -2
  75. package/lib/videojs-contrib-hlsjs.js +37638 -0
  76. package/lib/visual-search.js +235 -1
  77. package/package.json +31 -15
  78. package/lib/adaptive-streaming.js.LICENSE.txt +0 -3
  79. package/lib/all.js.LICENSE.txt +0 -25
  80. package/lib/cld-video-player.js +0 -2
  81. package/lib/cld-video-player.js.LICENSE.txt +0 -21
  82. package/lib/dash.js.LICENSE.txt +0 -1842
  83. package/lib/interaction-areas.js +0 -1
  84. package/lib/player.js.LICENSE.txt +0 -21
  85. package/lib/shoppable.js +0 -1
  86. package/lib/videoPlayer.js.LICENSE.txt +0 -21
@@ -0,0 +1,494 @@
1
+ /*!
2
+ * Cloudinary Video Player v3.12.2-edge.0
3
+ * Built on 2026-03-19T13:14:48.809Z
4
+ * https://github.com/cloudinary/cloudinary-video-player
5
+ */
6
+ /*
7
+ * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
8
+ * This devtool is neither made for production nor for readable output files.
9
+ * It uses "eval()" calls to create a separate source file in the browser devtools.
10
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
11
+ * or disable the default devtool with "devtool: false".
12
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
13
+ */
14
+ (function webpackUniversalModuleDefinition(root, factory) {
15
+ if(typeof exports === 'object' && typeof module === 'object')
16
+ module.exports = factory();
17
+ else if(typeof define === 'function' && define.amd)
18
+ define([], factory);
19
+ else if(typeof exports === 'object')
20
+ exports["cloudinary-video-player"] = factory();
21
+ else
22
+ root["cloudinary-video-player"] = factory();
23
+ })(self, () => {
24
+ return /******/ (() => { // webpackBootstrap
25
+ /******/ var __webpack_modules__ = ({
26
+
27
+ /***/ "./index.lazy.js":
28
+ /*!***********************!*\
29
+ !*** ./index.lazy.js ***!
30
+ \***********************/
31
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
32
+
33
+ "use strict";
34
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ player: () => (/* binding */ player),\n/* harmony export */ players: () => (/* binding */ players)\n/* harmony export */ });\n/* harmony import */ var _utils_player_api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/player-api */ \"./utils/player-api.js\");\n/**\n * Lazy entry: tiny initial bundle, player core loads on demand.\n * Only player()/players() are available. For sync videoPlayer(), use the full bundle.\n */\n\nconst player = (id, playerOptions, ready) => (0,_utils_player_api__WEBPACK_IMPORTED_MODULE_0__.createAsyncPlayer)(id, playerOptions, ready, async (videoElement, opts, r) => {\n const {\n videoPlayer\n } = await Promise.all(/*! import() | cld-player-core */[__webpack_require__.e(\"styles\"), __webpack_require__.e(\"video-player_js\"), __webpack_require__.e(\"cld-player-core\")]).then(__webpack_require__.bind(__webpack_require__, /*! ./index.js */ \"./index.js\"));\n return videoPlayer(videoElement, opts, r);\n});\nconst players = (selector, playerOptions, ready) => (0,_utils_player_api__WEBPACK_IMPORTED_MODULE_0__.createMultiplePlayers)(selector, playerOptions, ready, player);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_utils_player_api__WEBPACK_IMPORTED_MODULE_0__.setupCloudinaryGlobal)({\n player,\n players\n}));\n\n//# sourceURL=webpack:///./index.lazy.js?");
35
+
36
+ /***/ }),
37
+
38
+ /***/ "./utils/cloudinary-url-prefix.js":
39
+ /*!****************************************!*\
40
+ !*** ./utils/cloudinary-url-prefix.js ***!
41
+ \****************************************/
42
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
43
+
44
+ "use strict";
45
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getCloudinaryUrlPrefix: () => (/* binding */ getCloudinaryUrlPrefix)\n/* harmony export */ });\n/* harmony import */ var _cloudinary_url_gen_backwards_utils_unsigned_url_prefix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @cloudinary/url-gen/backwards/utils/unsigned_url_prefix */ \"../node_modules/@cloudinary/url-gen/backwards/utils/unsigned_url_prefix.js\");\n\nconst getCloudinaryUrlPrefix = cloudinaryConfig => {\n return (0,_cloudinary_url_gen_backwards_utils_unsigned_url_prefix__WEBPACK_IMPORTED_MODULE_0__.unsigned_url_prefix)(null, cloudinaryConfig.cloud_name, cloudinaryConfig.private_cdn, cloudinaryConfig.cdn_subdomain, cloudinaryConfig.secure_cdn_subdomain, cloudinaryConfig.cname, cloudinaryConfig.secure ?? true, cloudinaryConfig.secure_distribution);\n};\n\n//# sourceURL=webpack:///./utils/cloudinary-url-prefix.js?");
46
+
47
+ /***/ }),
48
+
49
+ /***/ "./utils/player-api.js":
50
+ /*!*****************************!*\
51
+ !*** ./utils/player-api.js ***!
52
+ \*****************************/
53
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
54
+
55
+ "use strict";
56
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createAsyncPlayer: () => (/* binding */ createAsyncPlayer),\n/* harmony export */ createMultiplePlayers: () => (/* binding */ createMultiplePlayers),\n/* harmony export */ createMultipleSync: () => (/* binding */ createMultipleSync),\n/* harmony export */ setupCloudinaryGlobal: () => (/* binding */ setupCloudinaryGlobal)\n/* harmony export */ });\n/* harmony import */ var _schedule__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schedule */ \"./utils/schedule.js\");\n\nconst createAsyncPlayer = async (id, playerOptions, ready, createFn) => {\n const mergedOptions = Object.assign({}, playerOptions);\n const videoElement = (0,_schedule__WEBPACK_IMPORTED_MODULE_0__.getElementForSchedule)(id);\n const opts = await (async () => {\n try {\n const {\n fetchAndMergeConfig\n } = await __webpack_require__.e(/*! import() */ \"utils_fetch-config_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./fetch-config */ \"./utils/fetch-config.js\"));\n const fetched = await fetchAndMergeConfig(mergedOptions);\n return Object.assign({}, fetched, mergedOptions);\n } catch {\n return mergedOptions;\n }\n })();\n if ((0,_schedule__WEBPACK_IMPORTED_MODULE_0__.shouldUseScheduleBootstrap)(opts)) {\n return (0,_schedule__WEBPACK_IMPORTED_MODULE_0__.scheduleBootstrap)(id, opts);\n }\n return createFn(videoElement, opts, ready);\n};\nconst createMultiplePlayers = async (selector, playerOptions, ready, playerFn) => {\n const nodeList = document.querySelectorAll(selector);\n return Promise.all([...nodeList].map(node => playerFn(node, playerOptions, ready)));\n};\nconst createMultipleSync = (selector, playerOptions, ready, playerFn) => {\n const nodeList = document.querySelectorAll(selector);\n return [...nodeList].map(node => playerFn(node, playerOptions, ready));\n};\nconst setupCloudinaryGlobal = methods => {\n const cloudinary = {\n ...(window.cloudinary || {}),\n ...methods\n };\n window.cloudinary = cloudinary;\n return cloudinary;\n};\n\n//# sourceURL=webpack:///./utils/player-api.js?");
57
+
58
+ /***/ }),
59
+
60
+ /***/ "./utils/poster-url.js":
61
+ /*!*****************************!*\
62
+ !*** ./utils/poster-url.js ***!
63
+ \*****************************/
64
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
65
+
66
+ "use strict";
67
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ buildPosterUrl: () => (/* binding */ buildPosterUrl)\n/* harmony export */ });\n/* harmony import */ var _cloudinary_url_prefix__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cloudinary-url-prefix */ \"./utils/cloudinary-url-prefix.js\");\n/**\n * Minimal Cloudinary poster URL builder for video first frame.\n * Used by schedule bootstrap when outside schedule (no full player loaded).\n */\n\nconst POSTER_TRANSFORMATION = 'so_0,f_auto,q_auto';\n\n/**\n * Build Cloudinary video poster (first frame) URL.\n * @param {string} cloudName - Cloudinary cloud name\n * @param {string} publicId - Video public ID\n * @param {object} [cloudinaryConfig] - Optional: secure, private_cdn, cdn_subdomain, cname, secure_distribution\n * @returns {string} Poster image URL\n */\nconst buildPosterUrl = function (cloudName, publicId) {\n let cloudinaryConfig = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const config = {\n cloud_name: cloudName || cloudinaryConfig.cloud_name,\n ...cloudinaryConfig,\n secure: cloudinaryConfig.secure ?? true\n };\n const prefix = (0,_cloudinary_url_prefix__WEBPACK_IMPORTED_MODULE_0__.getCloudinaryUrlPrefix)(config);\n return `${prefix}/video/upload/${POSTER_TRANSFORMATION}/${publicId}`;\n};\n\n//# sourceURL=webpack:///./utils/poster-url.js?");
68
+
69
+ /***/ }),
70
+
71
+ /***/ "./utils/schedule.js":
72
+ /*!***************************!*\
73
+ !*** ./utils/schedule.js ***!
74
+ \***************************/
75
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
76
+
77
+ "use strict";
78
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getElementForSchedule: () => (/* binding */ getElementForSchedule),\n/* harmony export */ isWithinSchedule: () => (/* binding */ isWithinSchedule),\n/* harmony export */ parseDay: () => (/* binding */ parseDay),\n/* harmony export */ renderScheduleImage: () => (/* binding */ renderScheduleImage),\n/* harmony export */ scheduleBootstrap: () => (/* binding */ scheduleBootstrap),\n/* harmony export */ shouldUseScheduleBootstrap: () => (/* binding */ shouldUseScheduleBootstrap)\n/* harmony export */ });\n/* harmony import */ var css_escape__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! css.escape */ \"../node_modules/css.escape/css.escape.js\");\n/* harmony import */ var css_escape__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(css_escape__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _poster_url__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./poster-url */ \"./utils/poster-url.js\");\n/**\n * Schedule utilities: weekly time-range parsing and bootstrap (poster rendering).\n * Uses browser local time. No videojs dependency for the bootstrap path.\n */\n\n\nconst INTERNAL_ANALYTICS_URL = 'https://analytics-api-s.cloudinary.com';\nconst sendScheduleImageAnalytics = options => {\n const allowReport = options?.sourceOptions?.allowUsageReport ?? options?.allowUsageReport;\n if (allowReport === false) return;\n try {\n const params = new URLSearchParams({\n scheduleImageRendered: 'true',\n cloudName: options?.cloudName || options?.cloudinaryConfig?.cloud_name || ''\n }).toString();\n fetch(`${INTERNAL_ANALYTICS_URL}/video_player_source?${params}`);\n } catch {\n // noop\n }\n};\nconst getCloudNameFromOptions = options => options?.cloudName || options?.cloud_name || options?.cloudinaryConfig?.cloud_name;\nconst getPublicIdFromOptions = options => options?.publicId || options?.sourceOptions?.publicId;\n\n/**\n * Returns true when schedule.weekly is configured and current time is outside the schedule.\n * @param {object} options - player options\n * @returns {boolean}\n */\nconst shouldUseScheduleBootstrap = options => {\n const schedule = options?.schedule;\n const weekly = schedule?.weekly;\n return Array.isArray(weekly) && weekly.length > 0 && !isWithinSchedule(schedule, new Date());\n};\n\n/**\n * Bootstrap path when outside schedule: render poster, return stub with loadPlayer().\n * @param {string|HTMLElement} elem - Element id or video element\n * @param {object} options - player options\n * @returns {object} Stub with source() and loadPlayer()\n */\nconst scheduleBootstrap = (elem, options) => {\n const videoElement = getElementForSchedule(elem);\n const cloudName = getCloudNameFromOptions(options);\n const publicId = getPublicIdFromOptions(options);\n if (!cloudName || !publicId) {\n throw new Error('schedule.weekly requires cloudName and publicId when outside schedule');\n }\n const cloudinaryConfig = options?.cloudinaryConfig || {\n cloud_name: cloudName\n };\n const posterUrl = (0,_poster_url__WEBPACK_IMPORTED_MODULE_1__.buildPosterUrl)(cloudName, publicId, cloudinaryConfig);\n const fluid = options?.fluid !== false;\n const {\n container,\n videoElement: vEl\n } = renderScheduleImage(videoElement, posterUrl, {\n fluid,\n width: options?.width,\n height: options?.height,\n cropMode: options?.sourceOptions?.cropMode\n });\n sendScheduleImageAnalytics(options);\n const stub = {\n source: () => stub,\n loadPlayer: () => {\n if (container && container.parentNode) {\n container.parentNode.removeChild(container);\n }\n vEl.style.display = '';\n return Promise.all(/*! import() */[__webpack_require__.e(\"styles\"), __webpack_require__.e(\"video-player_js\")]).then(__webpack_require__.bind(__webpack_require__, /*! ../video-player.js */ \"./video-player.js\")).then(m => m.createVideoPlayer(vEl, options));\n }\n };\n return stub;\n};\nconst DAY_MAP = {\n sunday: 0,\n sun: 0,\n monday: 1,\n mon: 1,\n tuesday: 2,\n tue: 2,\n tues: 2,\n wednesday: 3,\n wed: 3,\n thursday: 4,\n thu: 4,\n thur: 4,\n thurs: 4,\n friday: 5,\n fri: 5,\n saturday: 6,\n sat: 6\n};\nconst FLUID_CLASS = 'cld-fluid';\n\n/**\n * Parse readable day-of-week string to JS Date.getDay() value (0=Sun .. 6=Sat).\n * @param {string} day - Full or abbreviated day name (case-insensitive)\n * @returns {number|null} 0-6, or null if invalid\n */\nconst parseDay = day => {\n if (typeof day !== 'string') return null;\n const key = day.toLowerCase().trim();\n return DAY_MAP[key] ?? null;\n};\n\n/**\n * Parse \"HH:mm\" string to minutes since midnight.\n * @param {string} timeStr - \"09:00\" or \"17:30\"\n * @returns {number|null} minutes, or null if invalid\n */\nconst parseTime = timeStr => {\n if (typeof timeStr !== 'string') return null;\n const match = timeStr.trim().match(/^(\\d{1,2}):(\\d{2})$/);\n if (!match) return null;\n const h = parseInt(match[1], 10);\n const m = parseInt(match[2], 10);\n if (h < 0 || h > 23 || m < 0 || m > 59) return null;\n return h * 60 + m;\n};\n\n/**\n * Check if a date falls within any configured weekly slot (local time).\n * @param {{ weekly?: Array<{ day: string, start: string, duration: number }> }} schedule - schedule config\n * @param {Date} date - date to check (uses local time)\n * @returns {boolean} true if within a slot\n */\nconst isWithinSchedule = (schedule, date) => {\n const weekly = schedule?.weekly;\n if (!Array.isArray(weekly) || weekly.length === 0) return true;\n const WEEK = 7 * 1440;\n const nowInWeek = date.getDay() * 1440 + date.getHours() * 60 + date.getMinutes();\n for (const slot of weekly) {\n const slotDay = parseDay(slot.day);\n if (slotDay === null) continue;\n const startMin = parseTime(slot.start);\n if (startMin === null || typeof slot.duration !== 'number' || slot.duration <= 0) continue;\n const slotStart = slotDay * 1440 + startMin;\n const durationMin = slot.duration * 60;\n const elapsed = (nowInWeek - slotStart + WEEK) % WEEK;\n if (elapsed < durationMin) return true;\n }\n return false;\n};\n\n/**\n * Resolve video element by id or return element. No videojs.\n * @param {string|HTMLElement} elem - Element id (with or without #) or video element\n * @returns {HTMLVideoElement}\n */\nconst getElementForSchedule = elem => {\n if (typeof elem === 'string') {\n let id = elem;\n if (id.indexOf('#') === 0) id = id.slice(1);\n try {\n elem = document.querySelector(`#${css_escape__WEBPACK_IMPORTED_MODULE_0___default()(id)}`);\n } catch {\n elem = null;\n }\n if (!elem) throw new Error(`Could not find element with id ${id}`);\n }\n if (!elem?.tagName) throw new Error('Must specify either an element or an element id.');\n if (elem.tagName !== 'VIDEO') throw new Error('Element is not a video tag.');\n return elem;\n};\n\n/**\n * Hide video, show poster image overlay. Keeps video in DOM for load().\n * @param {HTMLVideoElement} videoElement\n * @param {string} posterUrl\n * @param {object} options - fluid, width, height, etc.\n * @returns {{ img: HTMLImageElement, container: HTMLElement, videoElement: HTMLVideoElement }}\n */\nconst renderScheduleImage = function (videoElement, posterUrl) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const fluid = options.fluid !== false;\n const parent = videoElement.parentNode;\n const container = document.createElement('div');\n container.className = 'cld-schedule-poster-container';\n container.style.cssText = 'position:relative;width:100%;height:100%;';\n const img = document.createElement('img');\n img.src = posterUrl;\n img.alt = '';\n img.setAttribute('data-cld-schedule-poster', 'true');\n img.style.cssText = 'display:block;width:100%;height:100%;object-fit:contain;';\n if (fluid) {\n container.classList.add(FLUID_CLASS);\n img.style.objectFit = options.cropMode === 'fill' ? 'cover' : 'contain';\n }\n if (options.width) container.style.width = `${options.width}px`;\n if (options.height) container.style.height = `${options.height}px`;\n videoElement.style.display = 'none';\n container.appendChild(img);\n parent.insertBefore(container, videoElement);\n return {\n img,\n container,\n videoElement\n };\n};\n\n//# sourceURL=webpack:///./utils/schedule.js?");
79
+
80
+ /***/ }),
81
+
82
+ /***/ "../node_modules/css.escape/css.escape.js":
83
+ /*!************************************************!*\
84
+ !*** ../node_modules/css.escape/css.escape.js ***!
85
+ \************************************************/
86
+ /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
87
+
88
+ eval("/*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */\n;(function(root, factory) {\n\t// https://github.com/umdjs/umd/blob/master/returnExports.js\n\tif (true) {\n\t\t// For Node.js.\n\t\tmodule.exports = factory(root);\n\t} else {}\n}(typeof __webpack_require__.g != 'undefined' ? __webpack_require__.g : this, function(root) {\n\n\tif (root.CSS && root.CSS.escape) {\n\t\treturn root.CSS.escape;\n\t}\n\n\t// https://drafts.csswg.org/cssom/#serialize-an-identifier\n\tvar cssEscape = function(value) {\n\t\tif (arguments.length == 0) {\n\t\t\tthrow new TypeError('`CSS.escape` requires an argument.');\n\t\t}\n\t\tvar string = String(value);\n\t\tvar length = string.length;\n\t\tvar index = -1;\n\t\tvar codeUnit;\n\t\tvar result = '';\n\t\tvar firstCodeUnit = string.charCodeAt(0);\n\t\twhile (++index < length) {\n\t\t\tcodeUnit = string.charCodeAt(index);\n\t\t\t// Note: there’s no need to special-case astral symbols, surrogate\n\t\t\t// pairs, or lone surrogates.\n\n\t\t\t// If the character is NULL (U+0000), then the REPLACEMENT CHARACTER\n\t\t\t// (U+FFFD).\n\t\t\tif (codeUnit == 0x0000) {\n\t\t\t\tresult += '\\uFFFD';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is in the range [\\1-\\1F] (U+0001 to U+001F) or is\n\t\t\t\t// U+007F, […]\n\t\t\t\t(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||\n\t\t\t\t// If the character is the first character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039), […]\n\t\t\t\t(index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n\t\t\t\t// If the character is the second character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]\n\t\t\t\t(\n\t\t\t\t\tindex == 1 &&\n\t\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 &&\n\t\t\t\t\tfirstCodeUnit == 0x002D\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n\t\t\t\tresult += '\\\\' + codeUnit.toString(16) + ' ';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is the first character and is a `-` (U+002D), and\n\t\t\t\t// there is no second character, […]\n\t\t\t\tindex == 0 &&\n\t\t\t\tlength == 1 &&\n\t\t\t\tcodeUnit == 0x002D\n\t\t\t) {\n\t\t\t\tresult += '\\\\' + string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If the character is not handled by one of the above rules and is\n\t\t\t// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or\n\t\t\t// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to\n\t\t\t// U+005A), or [a-z] (U+0061 to U+007A), […]\n\t\t\tif (\n\t\t\t\tcodeUnit >= 0x0080 ||\n\t\t\t\tcodeUnit == 0x002D ||\n\t\t\t\tcodeUnit == 0x005F ||\n\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 ||\n\t\t\t\tcodeUnit >= 0x0041 && codeUnit <= 0x005A ||\n\t\t\t\tcodeUnit >= 0x0061 && codeUnit <= 0x007A\n\t\t\t) {\n\t\t\t\t// the character itself\n\t\t\t\tresult += string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Otherwise, the escaped character.\n\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character\n\t\t\tresult += '\\\\' + string.charAt(index);\n\n\t\t}\n\t\treturn result;\n\t};\n\n\tif (!root.CSS) {\n\t\troot.CSS = {};\n\t}\n\n\troot.CSS.escape = cssEscape;\n\treturn cssEscape;\n\n}));\n\n\n//# sourceURL=webpack:///../node_modules/css.escape/css.escape.js?");
89
+
90
+ /***/ }),
91
+
92
+ /***/ "../node_modules/@cloudinary/url-gen/backwards/consts.js":
93
+ /*!***************************************************************!*\
94
+ !*** ../node_modules/@cloudinary/url-gen/backwards/consts.js ***!
95
+ \***************************************************************/
96
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
97
+
98
+ "use strict";
99
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AKAMAI_SHARED_CDN: () => (/* binding */ AKAMAI_SHARED_CDN),\n/* harmony export */ CF_SHARED_CDN: () => (/* binding */ CF_SHARED_CDN),\n/* harmony export */ LAYER_KEYWORD_PARAMS: () => (/* binding */ LAYER_KEYWORD_PARAMS),\n/* harmony export */ LEGACY_CONDITIONAL_OPERATORS: () => (/* binding */ LEGACY_CONDITIONAL_OPERATORS),\n/* harmony export */ LEGACY_PREDEFINED_VARS: () => (/* binding */ LEGACY_PREDEFINED_VARS),\n/* harmony export */ NUMBER_PATTERN: () => (/* binding */ NUMBER_PATTERN),\n/* harmony export */ OFFSET_ANY_PATTERN: () => (/* binding */ OFFSET_ANY_PATTERN),\n/* harmony export */ OFFSET_ANY_PATTERN_RE: () => (/* binding */ OFFSET_ANY_PATTERN_RE),\n/* harmony export */ OLD_AKAMAI_SHARED_CDN: () => (/* binding */ OLD_AKAMAI_SHARED_CDN),\n/* harmony export */ RANGE_VALUE_RE: () => (/* binding */ RANGE_VALUE_RE),\n/* harmony export */ SHARED_CDN: () => (/* binding */ SHARED_CDN)\n/* harmony export */ });\nconst LEGACY_CONDITIONAL_OPERATORS = {\n \"=\": 'eq',\n \"!=\": 'ne',\n \"<\": 'lt',\n \">\": 'gt',\n \"<=\": 'lte',\n \">=\": 'gte',\n \"&&\": 'and',\n \"||\": 'or',\n \"*\": \"mul\",\n \"/\": \"div\",\n \"+\": \"add\",\n \"-\": \"sub\",\n \"^\": \"pow\"\n};\nconst CF_SHARED_CDN = \"d3jpl91pxevbkh.cloudfront.net\";\nconst OLD_AKAMAI_SHARED_CDN = \"cloudinary-a.akamaihd.net\";\nconst AKAMAI_SHARED_CDN = \"res.cloudinary.com\";\nconst SHARED_CDN = AKAMAI_SHARED_CDN;\nconst LEGACY_PREDEFINED_VARS = {\n \"aspect_ratio\": \"ar\",\n \"aspectRatio\": \"ar\",\n \"current_page\": \"cp\",\n \"currentPage\": \"cp\",\n \"duration\": \"du\",\n \"face_count\": \"fc\",\n \"faceCount\": \"fc\",\n \"height\": \"h\",\n \"initial_aspect_ratio\": \"iar\",\n \"initial_height\": \"ih\",\n \"initial_width\": \"iw\",\n \"initialAspectRatio\": \"iar\",\n \"initialHeight\": \"ih\",\n \"initialWidth\": \"iw\",\n \"initial_duration\": \"idu\",\n \"initialDuration\": \"idu\",\n \"page_count\": \"pc\",\n \"page_x\": \"px\",\n \"page_y\": \"py\",\n \"pageCount\": \"pc\",\n \"pageX\": \"px\",\n \"pageY\": \"py\",\n \"tags\": \"tags\",\n \"width\": \"w\"\n};\nconst NUMBER_PATTERN = \"([0-9]*)\\\\.([0-9]+)|([0-9]+)\";\nconst OFFSET_ANY_PATTERN = `(${NUMBER_PATTERN})([%pP])?`;\nconst RANGE_VALUE_RE = RegExp(`^${OFFSET_ANY_PATTERN}$`);\nconst OFFSET_ANY_PATTERN_RE = RegExp(`(${OFFSET_ANY_PATTERN})\\\\.\\\\.(${OFFSET_ANY_PATTERN})`);\nconst LAYER_KEYWORD_PARAMS = {\n font_weight: \"normal\",\n font_style: \"normal\",\n text_decoration: \"none\",\n text_align: '',\n stroke: \"none\"\n};\n\n\n//# sourceURL=webpack:///../node_modules/@cloudinary/url-gen/backwards/consts.js?");
100
+
101
+ /***/ }),
102
+
103
+ /***/ "../node_modules/@cloudinary/url-gen/backwards/utils/unsigned_url_prefix.js":
104
+ /*!**********************************************************************************!*\
105
+ !*** ../node_modules/@cloudinary/url-gen/backwards/utils/unsigned_url_prefix.js ***!
106
+ \**********************************************************************************/
107
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
108
+
109
+ "use strict";
110
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ unsigned_url_prefix: () => (/* binding */ unsigned_url_prefix)\n/* harmony export */ });\n/* harmony import */ var _consts_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../consts.js */ \"../node_modules/@cloudinary/url-gen/backwards/consts.js\");\n\nfunction unsigned_url_prefix(source, cloud_name, private_cdn, cdn_subdomain, secure_cdn_subdomain, cname, secure, secure_distribution) {\n let prefix;\n if (cloud_name.indexOf(\"/\") === 0) {\n return '/res' + cloud_name;\n }\n let shared_domain = !private_cdn;\n if (secure) {\n if ((secure_distribution == null) || secure_distribution === _consts_js__WEBPACK_IMPORTED_MODULE_0__.OLD_AKAMAI_SHARED_CDN) {\n secure_distribution = private_cdn ? cloud_name + \"-res.cloudinary.com\" : _consts_js__WEBPACK_IMPORTED_MODULE_0__.SHARED_CDN;\n }\n if (shared_domain == null) {\n shared_domain = secure_distribution === _consts_js__WEBPACK_IMPORTED_MODULE_0__.SHARED_CDN;\n }\n prefix = 'https://' + secure_distribution;\n }\n else if (cname) {\n // let subdomain = cdn_subdomain ? 'a' + ((crc32(source) % 5) + 1) + '.' : '';\n prefix = 'http://' + cname;\n }\n else {\n let cdn_part = private_cdn ? cloud_name + '-' : '';\n let host = [cdn_part, 'res', '.cloudinary.com'].join('');\n prefix = 'http://' + host;\n }\n if (shared_domain) {\n prefix += '/' + cloud_name;\n }\n return prefix;\n}\n\n\n//# sourceURL=webpack:///../node_modules/@cloudinary/url-gen/backwards/utils/unsigned_url_prefix.js?");
111
+
112
+ /***/ })
113
+
114
+ /******/ });
115
+ /************************************************************************/
116
+ /******/ // The module cache
117
+ /******/ var __webpack_module_cache__ = {};
118
+ /******/
119
+ /******/ // The require function
120
+ /******/ function __webpack_require__(moduleId) {
121
+ /******/ // Check if module is in cache
122
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
123
+ /******/ if (cachedModule !== undefined) {
124
+ /******/ return cachedModule.exports;
125
+ /******/ }
126
+ /******/ // Create a new module (and put it into the cache)
127
+ /******/ var module = __webpack_module_cache__[moduleId] = {
128
+ /******/ id: moduleId,
129
+ /******/ loaded: false,
130
+ /******/ exports: {}
131
+ /******/ };
132
+ /******/
133
+ /******/ // Execute the module function
134
+ /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
135
+ /******/
136
+ /******/ // Flag the module as loaded
137
+ /******/ module.loaded = true;
138
+ /******/
139
+ /******/ // Return the exports of the module
140
+ /******/ return module.exports;
141
+ /******/ }
142
+ /******/
143
+ /******/ // expose the modules object (__webpack_modules__)
144
+ /******/ __webpack_require__.m = __webpack_modules__;
145
+ /******/
146
+ /************************************************************************/
147
+ /******/ /* webpack/runtime/compat get default export */
148
+ /******/ (() => {
149
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
150
+ /******/ __webpack_require__.n = (module) => {
151
+ /******/ var getter = module && module.__esModule ?
152
+ /******/ () => (module['default']) :
153
+ /******/ () => (module);
154
+ /******/ __webpack_require__.d(getter, { a: getter });
155
+ /******/ return getter;
156
+ /******/ };
157
+ /******/ })();
158
+ /******/
159
+ /******/ /* webpack/runtime/define property getters */
160
+ /******/ (() => {
161
+ /******/ // define getter functions for harmony exports
162
+ /******/ __webpack_require__.d = (exports, definition) => {
163
+ /******/ for(var key in definition) {
164
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
165
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
166
+ /******/ }
167
+ /******/ }
168
+ /******/ };
169
+ /******/ })();
170
+ /******/
171
+ /******/ /* webpack/runtime/ensure chunk */
172
+ /******/ (() => {
173
+ /******/ __webpack_require__.f = {};
174
+ /******/ // This file contains only the entry chunk.
175
+ /******/ // The chunk loading function for additional chunks
176
+ /******/ __webpack_require__.e = (chunkId) => {
177
+ /******/ return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {
178
+ /******/ __webpack_require__.f[key](chunkId, promises);
179
+ /******/ return promises;
180
+ /******/ }, []));
181
+ /******/ };
182
+ /******/ })();
183
+ /******/
184
+ /******/ /* webpack/runtime/get javascript chunk filename */
185
+ /******/ (() => {
186
+ /******/ // This function allow to reference async chunks
187
+ /******/ __webpack_require__.u = (chunkId) => {
188
+ /******/ // return url for filenames based on template
189
+ /******/ return "" + chunkId + ".js";
190
+ /******/ };
191
+ /******/ })();
192
+ /******/
193
+ /******/ /* webpack/runtime/get mini-css chunk filename */
194
+ /******/ (() => {
195
+ /******/ // This function allow to reference async chunks
196
+ /******/ __webpack_require__.miniCssF = (chunkId) => {
197
+ /******/ // return url for filenames based on template
198
+ /******/ return "cld-video-player.css";
199
+ /******/ };
200
+ /******/ })();
201
+ /******/
202
+ /******/ /* webpack/runtime/global */
203
+ /******/ (() => {
204
+ /******/ __webpack_require__.g = (function() {
205
+ /******/ if (typeof globalThis === 'object') return globalThis;
206
+ /******/ try {
207
+ /******/ return this || new Function('return this')();
208
+ /******/ } catch (e) {
209
+ /******/ if (typeof window === 'object') return window;
210
+ /******/ }
211
+ /******/ })();
212
+ /******/ })();
213
+ /******/
214
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
215
+ /******/ (() => {
216
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
217
+ /******/ })();
218
+ /******/
219
+ /******/ /* webpack/runtime/load script */
220
+ /******/ (() => {
221
+ /******/ var inProgress = {};
222
+ /******/ // data-webpack is not used as build has no uniqueName
223
+ /******/ // loadScript function to load a script via script tag
224
+ /******/ __webpack_require__.l = (url, done, key, chunkId) => {
225
+ /******/ if(inProgress[url]) { inProgress[url].push(done); return; }
226
+ /******/ var script, needAttach;
227
+ /******/ if(key !== undefined) {
228
+ /******/ var scripts = document.getElementsByTagName("script");
229
+ /******/ for(var i = 0; i < scripts.length; i++) {
230
+ /******/ var s = scripts[i];
231
+ /******/ if(s.getAttribute("src") == url) { script = s; break; }
232
+ /******/ }
233
+ /******/ }
234
+ /******/ if(!script) {
235
+ /******/ needAttach = true;
236
+ /******/ script = document.createElement('script');
237
+ /******/
238
+ /******/ script.charset = 'utf-8';
239
+ /******/ script.timeout = 120;
240
+ /******/ if (__webpack_require__.nc) {
241
+ /******/ script.setAttribute("nonce", __webpack_require__.nc);
242
+ /******/ }
243
+ /******/
244
+ /******/
245
+ /******/ script.src = url;
246
+ /******/ }
247
+ /******/ inProgress[url] = [done];
248
+ /******/ var onScriptComplete = (prev, event) => {
249
+ /******/ // avoid mem leaks in IE.
250
+ /******/ script.onerror = script.onload = null;
251
+ /******/ clearTimeout(timeout);
252
+ /******/ var doneFns = inProgress[url];
253
+ /******/ delete inProgress[url];
254
+ /******/ script.parentNode && script.parentNode.removeChild(script);
255
+ /******/ doneFns && doneFns.forEach((fn) => (fn(event)));
256
+ /******/ if(prev) return prev(event);
257
+ /******/ }
258
+ /******/ var timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);
259
+ /******/ script.onerror = onScriptComplete.bind(null, script.onerror);
260
+ /******/ script.onload = onScriptComplete.bind(null, script.onload);
261
+ /******/ needAttach && document.head.appendChild(script);
262
+ /******/ };
263
+ /******/ })();
264
+ /******/
265
+ /******/ /* webpack/runtime/make namespace object */
266
+ /******/ (() => {
267
+ /******/ // define __esModule on exports
268
+ /******/ __webpack_require__.r = (exports) => {
269
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
270
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
271
+ /******/ }
272
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
273
+ /******/ };
274
+ /******/ })();
275
+ /******/
276
+ /******/ /* webpack/runtime/node module decorator */
277
+ /******/ (() => {
278
+ /******/ __webpack_require__.nmd = (module) => {
279
+ /******/ module.paths = [];
280
+ /******/ if (!module.children) module.children = [];
281
+ /******/ return module;
282
+ /******/ };
283
+ /******/ })();
284
+ /******/
285
+ /******/ /* webpack/runtime/publicPath */
286
+ /******/ (() => {
287
+ /******/ var scriptUrl;
288
+ /******/ if (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + "";
289
+ /******/ var document = __webpack_require__.g.document;
290
+ /******/ if (!scriptUrl && document) {
291
+ /******/ if (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')
292
+ /******/ scriptUrl = document.currentScript.src;
293
+ /******/ if (!scriptUrl) {
294
+ /******/ var scripts = document.getElementsByTagName("script");
295
+ /******/ if(scripts.length) {
296
+ /******/ var i = scripts.length - 1;
297
+ /******/ while (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;
298
+ /******/ }
299
+ /******/ }
300
+ /******/ }
301
+ /******/ // When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration
302
+ /******/ // or pass an empty string ("") and set the __webpack_public_path__ variable from your code to use your own logic.
303
+ /******/ if (!scriptUrl) throw new Error("Automatic publicPath is not supported in this browser");
304
+ /******/ scriptUrl = scriptUrl.replace(/#.*$/, "").replace(/\?.*$/, "").replace(/\/[^\/]+$/, "/");
305
+ /******/ __webpack_require__.p = scriptUrl;
306
+ /******/ })();
307
+ /******/
308
+ /******/ /* webpack/runtime/css loading */
309
+ /******/ (() => {
310
+ /******/ if (typeof document === "undefined") return;
311
+ /******/ var createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {
312
+ /******/ var linkTag = document.createElement("link");
313
+ /******/
314
+ /******/ linkTag.rel = "stylesheet";
315
+ /******/ linkTag.type = "text/css";
316
+ /******/ if (__webpack_require__.nc) {
317
+ /******/ linkTag.nonce = __webpack_require__.nc;
318
+ /******/ }
319
+ /******/ var onLinkComplete = (event) => {
320
+ /******/ // avoid mem leaks.
321
+ /******/ linkTag.onerror = linkTag.onload = null;
322
+ /******/ if (event.type === 'load') {
323
+ /******/ resolve();
324
+ /******/ } else {
325
+ /******/ var errorType = event && event.type;
326
+ /******/ var realHref = event && event.target && event.target.href || fullhref;
327
+ /******/ var err = new Error("Loading CSS chunk " + chunkId + " failed.\n(" + errorType + ": " + realHref + ")");
328
+ /******/ err.name = "ChunkLoadError";
329
+ /******/ err.code = "CSS_CHUNK_LOAD_FAILED";
330
+ /******/ err.type = errorType;
331
+ /******/ err.request = realHref;
332
+ /******/ if (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)
333
+ /******/ reject(err);
334
+ /******/ }
335
+ /******/ }
336
+ /******/ linkTag.onerror = linkTag.onload = onLinkComplete;
337
+ /******/ linkTag.href = fullhref;
338
+ /******/
339
+ /******/
340
+ /******/ if (oldTag) {
341
+ /******/ oldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);
342
+ /******/ } else {
343
+ /******/ document.head.appendChild(linkTag);
344
+ /******/ }
345
+ /******/ return linkTag;
346
+ /******/ };
347
+ /******/ var findStylesheet = (href, fullhref) => {
348
+ /******/ var existingLinkTags = document.getElementsByTagName("link");
349
+ /******/ for(var i = 0; i < existingLinkTags.length; i++) {
350
+ /******/ var tag = existingLinkTags[i];
351
+ /******/ var dataHref = tag.getAttribute("data-href") || tag.getAttribute("href");
352
+ /******/ if(tag.rel === "stylesheet" && (dataHref === href || dataHref === fullhref)) return tag;
353
+ /******/ }
354
+ /******/ var existingStyleTags = document.getElementsByTagName("style");
355
+ /******/ for(var i = 0; i < existingStyleTags.length; i++) {
356
+ /******/ var tag = existingStyleTags[i];
357
+ /******/ var dataHref = tag.getAttribute("data-href");
358
+ /******/ if(dataHref === href || dataHref === fullhref) return tag;
359
+ /******/ }
360
+ /******/ };
361
+ /******/ var loadStylesheet = (chunkId) => {
362
+ /******/ return new Promise((resolve, reject) => {
363
+ /******/ var href = __webpack_require__.miniCssF(chunkId);
364
+ /******/ var fullhref = __webpack_require__.p + href;
365
+ /******/ if(findStylesheet(href, fullhref)) return resolve();
366
+ /******/ createStylesheet(chunkId, fullhref, null, resolve, reject);
367
+ /******/ });
368
+ /******/ }
369
+ /******/ // object to store loaded CSS chunks
370
+ /******/ var installedCssChunks = {
371
+ /******/ "cld-video-player-lazy": 0
372
+ /******/ };
373
+ /******/
374
+ /******/ __webpack_require__.f.miniCss = (chunkId, promises) => {
375
+ /******/ var cssChunks = {"styles":1};
376
+ /******/ if(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);
377
+ /******/ else if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {
378
+ /******/ promises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {
379
+ /******/ installedCssChunks[chunkId] = 0;
380
+ /******/ }, (e) => {
381
+ /******/ delete installedCssChunks[chunkId];
382
+ /******/ throw e;
383
+ /******/ }));
384
+ /******/ }
385
+ /******/ };
386
+ /******/
387
+ /******/ // no hmr
388
+ /******/
389
+ /******/ // no prefetching
390
+ /******/
391
+ /******/ // no preloaded
392
+ /******/ })();
393
+ /******/
394
+ /******/ /* webpack/runtime/jsonp chunk loading */
395
+ /******/ (() => {
396
+ /******/ // no baseURI
397
+ /******/
398
+ /******/ // object to store loaded and loading chunks
399
+ /******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
400
+ /******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
401
+ /******/ var installedChunks = {
402
+ /******/ "cld-video-player-lazy": 0
403
+ /******/ };
404
+ /******/
405
+ /******/ __webpack_require__.f.j = (chunkId, promises) => {
406
+ /******/ // JSONP chunk loading for javascript
407
+ /******/ var installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;
408
+ /******/ if(installedChunkData !== 0) { // 0 means "already installed".
409
+ /******/
410
+ /******/ // a Promise means "currently loading".
411
+ /******/ if(installedChunkData) {
412
+ /******/ promises.push(installedChunkData[2]);
413
+ /******/ } else {
414
+ /******/ if("styles" != chunkId) {
415
+ /******/ // setup Promise in chunk cache
416
+ /******/ var promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));
417
+ /******/ promises.push(installedChunkData[2] = promise);
418
+ /******/
419
+ /******/ // start chunk loading
420
+ /******/ var url = __webpack_require__.p + __webpack_require__.u(chunkId);
421
+ /******/ // create error before stack unwound to get useful stacktrace later
422
+ /******/ var error = new Error();
423
+ /******/ var loadingEnded = (event) => {
424
+ /******/ if(__webpack_require__.o(installedChunks, chunkId)) {
425
+ /******/ installedChunkData = installedChunks[chunkId];
426
+ /******/ if(installedChunkData !== 0) installedChunks[chunkId] = undefined;
427
+ /******/ if(installedChunkData) {
428
+ /******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type);
429
+ /******/ var realSrc = event && event.target && event.target.src;
430
+ /******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
431
+ /******/ error.name = 'ChunkLoadError';
432
+ /******/ error.type = errorType;
433
+ /******/ error.request = realSrc;
434
+ /******/ installedChunkData[1](error);
435
+ /******/ }
436
+ /******/ }
437
+ /******/ };
438
+ /******/ __webpack_require__.l(url, loadingEnded, "chunk-" + chunkId, chunkId);
439
+ /******/ } else installedChunks[chunkId] = 0;
440
+ /******/ }
441
+ /******/ }
442
+ /******/ };
443
+ /******/
444
+ /******/ // no prefetching
445
+ /******/
446
+ /******/ // no preloaded
447
+ /******/
448
+ /******/ // no HMR
449
+ /******/
450
+ /******/ // no HMR manifest
451
+ /******/
452
+ /******/ // no on chunks loaded
453
+ /******/
454
+ /******/ // install a JSONP callback for chunk loading
455
+ /******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
456
+ /******/ var [chunkIds, moreModules, runtime] = data;
457
+ /******/ // add "moreModules" to the modules object,
458
+ /******/ // then flag all "chunkIds" as loaded and fire callback
459
+ /******/ var moduleId, chunkId, i = 0;
460
+ /******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) {
461
+ /******/ for(moduleId in moreModules) {
462
+ /******/ if(__webpack_require__.o(moreModules, moduleId)) {
463
+ /******/ __webpack_require__.m[moduleId] = moreModules[moduleId];
464
+ /******/ }
465
+ /******/ }
466
+ /******/ if(runtime) var result = runtime(__webpack_require__);
467
+ /******/ }
468
+ /******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
469
+ /******/ for(;i < chunkIds.length; i++) {
470
+ /******/ chunkId = chunkIds[i];
471
+ /******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
472
+ /******/ installedChunks[chunkId][0]();
473
+ /******/ }
474
+ /******/ installedChunks[chunkId] = 0;
475
+ /******/ }
476
+ /******/
477
+ /******/ }
478
+ /******/
479
+ /******/ var chunkLoadingGlobal = self["cloudinaryVideoPlayerChunkLoading"] = self["cloudinaryVideoPlayerChunkLoading"] || [];
480
+ /******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
481
+ /******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
482
+ /******/ })();
483
+ /******/
484
+ /************************************************************************/
485
+ /******/
486
+ /******/ // startup
487
+ /******/ // Load entry module and return exports
488
+ /******/ // This entry module can't be inlined because the eval devtool is used.
489
+ /******/ var __webpack_exports__ = __webpack_require__("./index.lazy.js");
490
+ /******/
491
+ /******/ return __webpack_exports__;
492
+ /******/ })()
493
+ ;
494
+ });
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Cloudinary Video Player v3.12.2-edge.0
3
+ * Built on 2026-03-19T13:14:32.913Z
4
+ * https://github.com/cloudinary/cloudinary-video-player
5
+ */
6
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["cloudinary-video-player"]=t():e["cloudinary-video-player"]=t()}(self,()=>(()=>{var e,t={1741:(e,t,r)=>{"use strict";r.d(t,{k:()=>o});var n=r(4870);const o=e=>(0,n.D)(null,e.cloud_name,e.private_cdn,e.cdn_subdomain,e.secure_cdn_subdomain,e.cname,e.secure??!0,e.secure_distribution)},2984:(e,t,r)=>{"use strict";r.d(t,{Hn:()=>i,ci:()=>a,hg:()=>l,wQ:()=>o});var n=r(5689);const o=async(e,t,o,i)=>{const a=Object.assign({},t),l=(0,n.lu)(e),s=await(async()=>{try{const{fetchAndMergeConfig:e}=await r.e(309).then(r.bind(r,4309)),t=await e(a);return Object.assign({},t,a)}catch{return a}})();return(0,n.Ov)(s)?(0,n.a1)(e,s):i(l,s,o)},i=async(e,t,r,n)=>{const o=document.querySelectorAll(e);return Promise.all([...o].map(e=>n(e,t,r)))},a=(e,t,r,n)=>[...document.querySelectorAll(e)].map(e=>n(e,t,r)),l=e=>{const t={...window.cloudinary||{},...e};return window.cloudinary=t,t}},4705:(e,t,r)=>{"use strict";r.d(t,{T:()=>o});var n=r(1741);const o=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const o={cloud_name:e||r.cloud_name,...r,secure:r.secure??!0};return`${(0,n.k)(o)}/video/upload/so_0,f_auto,q_auto/${t}`}},5689:(e,t,r)=>{"use strict";r.d(t,{Ov:()=>a,a1:()=>l,lu:()=>p});var n=r(3337),o=r.n(n),i=r(4705);const a=e=>{const t=e?.schedule,r=t?.weekly;return Array.isArray(r)&&r.length>0&&!u(t,new Date)},l=(e,t)=>{const n=p(e),o=(e=>e?.cloudName||e?.cloud_name||e?.cloudinaryConfig?.cloud_name)(t),a=(e=>e?.publicId||e?.sourceOptions?.publicId)(t);if(!o||!a)throw new Error("schedule.weekly requires cloudName and publicId when outside schedule");const l=t?.cloudinaryConfig||{cloud_name:o},s=(0,i.T)(o,a,l),c=!1!==t?.fluid,{container:d,videoElement:u}=h(n,s,{fluid:c,width:t?.width,height:t?.height,cropMode:t?.sourceOptions?.cropMode});(e=>{if(!1!==(e?.sourceOptions?.allowUsageReport??e?.allowUsageReport))try{const t=new URLSearchParams({scheduleImageRendered:"true",cloudName:e?.cloudName||e?.cloudinaryConfig?.cloud_name||""}).toString();fetch(`https://analytics-api-s.cloudinary.com/video_player_source?${t}`)}catch{}})(t);const f={source:()=>f,loadPlayer:()=>(d&&d.parentNode&&d.parentNode.removeChild(d),u.style.display="",Promise.all([r.e(869),r.e(134)]).then(r.bind(r,1134)).then(e=>e.createVideoPlayer(u,t)))};return f},s={sunday:0,sun:0,monday:1,mon:1,tuesday:2,tue:2,tues:2,wednesday:3,wed:3,thursday:4,thu:4,thur:4,thurs:4,friday:5,fri:5,saturday:6,sat:6},c=e=>{if("string"!=typeof e)return null;const t=e.toLowerCase().trim();return s[t]??null},d=e=>{if("string"!=typeof e)return null;const t=e.trim().match(/^(\d{1,2}):(\d{2})$/);if(!t)return null;const r=parseInt(t[1],10),n=parseInt(t[2],10);return r<0||r>23||n<0||n>59?null:60*r+n},u=(e,t)=>{const r=e?.weekly;if(!Array.isArray(r)||0===r.length)return!0;const n=1440*t.getDay()+60*t.getHours()+t.getMinutes();for(const e of r){const t=c(e.day);if(null===t)continue;const r=d(e.start);if(null===r||"number"!=typeof e.duration||e.duration<=0)continue;if((n-(1440*t+r)+10080)%10080<60*e.duration)return!0}return!1},p=e=>{if("string"==typeof e){let t=e;0===t.indexOf("#")&&(t=t.slice(1));try{e=document.querySelector(`#${o()(t)}`)}catch{e=null}if(!e)throw new Error(`Could not find element with id ${t}`)}if(!e?.tagName)throw new Error("Must specify either an element or an element id.");if("VIDEO"!==e.tagName)throw new Error("Element is not a video tag.");return e},h=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const n=!1!==r.fluid,o=e.parentNode,i=document.createElement("div");i.className="cld-schedule-poster-container",i.style.cssText="position:relative;width:100%;height:100%;";const a=document.createElement("img");return a.src=t,a.alt="",a.setAttribute("data-cld-schedule-poster","true"),a.style.cssText="display:block;width:100%;height:100%;object-fit:contain;",n&&(i.classList.add("cld-fluid"),a.style.objectFit="fill"===r.cropMode?"cover":"contain"),r.width&&(i.style.width=`${r.width}px`),r.height&&(i.style.height=`${r.height}px`),e.style.display="none",i.appendChild(a),o.insertBefore(i,e),{img:a,container:i,videoElement:e}}},3337:function(e,t,r){var n;n=void 0!==r.g?r.g:this,e.exports=function(e){if(e.CSS&&e.CSS.escape)return e.CSS.escape;var t=function(e){if(0==arguments.length)throw new TypeError("`CSS.escape` requires an argument.");for(var t,r=String(e),n=r.length,o=-1,i="",a=r.charCodeAt(0);++o<n;)0!=(t=r.charCodeAt(o))?i+=t>=1&&t<=31||127==t||0==o&&t>=48&&t<=57||1==o&&t>=48&&t<=57&&45==a?"\\"+t.toString(16)+" ":0==o&&1==n&&45==t||!(t>=128||45==t||95==t||t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122)?"\\"+r.charAt(o):r.charAt(o):i+="�";return i};return e.CSS||(e.CSS={}),e.CSS.escape=t,t}(n)},4728:(e,t,r)=>{"use strict";r.d(t,{Bu:()=>d,K9:()=>c,Z2:()=>o,gJ:()=>i,qw:()=>s,vo:()=>n,wL:()=>a});const n={"=":"eq","!=":"ne","<":"lt",">":"gt","<=":"lte",">=":"gte","&&":"and","||":"or","*":"mul","/":"div","+":"add","-":"sub","^":"pow"},o="cloudinary-a.akamaihd.net",i="res.cloudinary.com",a={aspect_ratio:"ar",aspectRatio:"ar",current_page:"cp",currentPage:"cp",duration:"du",face_count:"fc",faceCount:"fc",height:"h",initial_aspect_ratio:"iar",initial_height:"ih",initial_width:"iw",initialAspectRatio:"iar",initialHeight:"ih",initialWidth:"iw",initial_duration:"idu",initialDuration:"idu",page_count:"pc",page_x:"px",page_y:"py",pageCount:"pc",pageX:"px",pageY:"py",tags:"tags",width:"w"},l="(([0-9]*)\\.([0-9]+)|([0-9]+))([%pP])?",s=RegExp(`^${l}$`),c=RegExp(`(${l})\\.\\.(${l})`),d={font_weight:"normal",font_style:"normal",text_decoration:"none",text_align:"",stroke:"none"}},4870:(e,t,r)=>{"use strict";r.d(t,{D:()=>o});var n=r(4728);function o(e,t,r,o,i,a,l,s){let c;if(0===t.indexOf("/"))return"/res"+t;let d=!r;if(l)null!=s&&s!==n.Z2||(s=r?t+"-res.cloudinary.com":n.gJ),null==d&&(d=s===n.gJ),c="https://"+s;else if(a)c="http://"+a;else{c="http://"+[r?t+"-":"","res",".cloudinary.com"].join("")}return d&&(c+="/"+t),c}}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var i=r[e]={id:e,loaded:!1,exports:{}};return t[e].call(i.exports,i,i.exports,n),i.loaded=!0,i.exports}n.m=t,n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce((t,r)=>(n.f[r](e,t),t),[])),n.u=e=>(({26:"adaptive-streaming",33:"playlist",40:"debug",76:"cld-player-core",330:"ima",367:"dash",404:"interaction-areas",410:"recommendations-overlay",525:"shoppable",625:"chapters",691:"colors",728:"visual-search",869:"styles",976:"share"}[e]||e)+".min.js"),n.miniCssF=e=>"cld-video-player.min.css",n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},n.l=(t,r,o,i)=>{if(e[t])e[t].push(r);else{var a,l;if(void 0!==o)for(var s=document.getElementsByTagName("script"),c=0;c<s.length;c++){var d=s[c];if(d.getAttribute("src")==t){a=d;break}}a||(l=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,n.nc&&a.setAttribute("nonce",n.nc),a.src=t),e[t]=[r];var u=(r,n)=>{a.onerror=a.onload=null,clearTimeout(p);var o=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach(e=>e(n)),r)return r(n)},p=setTimeout(u.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=u.bind(null,a.onerror),a.onload=u.bind(null,a.onload),l&&document.head.appendChild(a)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var t=n.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var o=r.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=r[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),(()=>{if("undefined"!=typeof document){var e=e=>new Promise((t,r)=>{var o=n.miniCssF(e),i=n.p+o;if(((e,t)=>{for(var r=document.getElementsByTagName("link"),n=0;n<r.length;n++){var o=(a=r[n]).getAttribute("data-href")||a.getAttribute("href");if("stylesheet"===a.rel&&(o===e||o===t))return a}var i=document.getElementsByTagName("style");for(n=0;n<i.length;n++){var a;if((o=(a=i[n]).getAttribute("data-href"))===e||o===t)return a}})(o,i))return t();((e,t,r,o,i)=>{var a=document.createElement("link");a.rel="stylesheet",a.type="text/css",n.nc&&(a.nonce=n.nc),a.onerror=a.onload=r=>{if(a.onerror=a.onload=null,"load"===r.type)o();else{var n=r&&r.type,l=r&&r.target&&r.target.href||t,s=new Error("Loading CSS chunk "+e+" failed.\n("+n+": "+l+")");s.name="ChunkLoadError",s.code="CSS_CHUNK_LOAD_FAILED",s.type=n,s.request=l,a.parentNode&&a.parentNode.removeChild(a),i(s)}},a.href=t,r?r.parentNode.insertBefore(a,r.nextSibling):document.head.appendChild(a)})(e,i,null,t,r)}),t={669:0};n.f.miniCss=(r,n)=>{t[r]?n.push(t[r]):0!==t[r]&&{869:1}[r]&&n.push(t[r]=e(r).then(()=>{t[r]=0},e=>{throw delete t[r],e}))}}})(),(()=>{var e={669:0};n.f.j=(t,r)=>{var o=n.o(e,t)?e[t]:void 0;if(0!==o)if(o)r.push(o[2]);else if(869!=t){var i=new Promise((r,n)=>o=e[t]=[r,n]);r.push(o[2]=i);var a=n.p+n.u(t),l=new Error;n.l(a,r=>{if(n.o(e,t)&&(0!==(o=e[t])&&(e[t]=void 0),o)){var i=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;l.message="Loading chunk "+t+" failed.\n("+i+": "+a+")",l.name="ChunkLoadError",l.type=i,l.request=a,o[1](l)}},"chunk-"+t,t)}else e[t]=0};var t=(t,r)=>{var o,i,[a,l,s]=r,c=0;if(a.some(t=>0!==e[t])){for(o in l)n.o(l,o)&&(n.m[o]=l[o]);if(s)s(n)}for(t&&t(r);c<a.length;c++)i=a[c],n.o(e,i)&&e[i]&&e[i][0](),e[i]=0},r=self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})();var o={};return(()=>{"use strict";n.r(o),n.d(o,{default:()=>i,player:()=>t,players:()=>r});var e=n(2984);const t=(t,r,o)=>(0,e.wQ)(t,r,o,async(e,t,r)=>{const{videoPlayer:o}=await Promise.all([n.e(869),n.e(134),n.e(76)]).then(n.bind(n,9167));return o(e,t,r)}),r=(r,n,o)=>(0,e.Hn)(r,n,o,t),i=(0,e.hg)({player:t,players:r})})(),o})());
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * Cloudinary Video Player v3.12.1
3
- * Built on 2026-03-17T08:20:36.548Z
2
+ * Cloudinary Video Player v3.12.2-edge.0
3
+ * Built on 2026-03-19T13:14:48.809Z
4
4
  * https://github.com/cloudinary/cloudinary-video-player
5
5
  */
6
6
  /*!*************************************************************************************************!*\