cloudinary-video-player 3.13.1-edge.0 → 3.13.1
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.
- package/dist/134.min.js +4 -4
- package/dist/19.min.js +6 -0
- package/dist/309.min.js +3 -3
- package/dist/adaptive-streaming.js +2 -2
- package/dist/adaptive-streaming.min.js +2 -2
- package/dist/chapters.js +2 -2
- package/dist/chapters.min.js +2 -2
- package/dist/cld-player-core.js +2 -2
- package/dist/cld-player-core.min.js +2 -2
- package/dist/cld-video-player-lazy.js +5 -5
- package/dist/cld-video-player-lazy.min.js +3 -3
- package/dist/cld-video-player.css +2 -2
- package/dist/cld-video-player.js +9 -9
- package/dist/cld-video-player.light.js +9 -9
- package/dist/cld-video-player.light.min.js +4 -4
- package/dist/cld-video-player.min.css +2 -2
- package/dist/cld-video-player.min.js +4 -4
- package/dist/colors.js +2 -2
- package/dist/colors.min.js +3 -3
- package/dist/dash.js +2 -2
- package/dist/dash.min.js +2 -2
- package/dist/debug.js +2 -2
- package/dist/debug.min.js +2 -2
- package/dist/ima.js +2 -2
- package/dist/ima.min.js +2 -2
- package/dist/interaction-areas.js +2 -2
- package/dist/interaction-areas.min.js +3 -3
- package/dist/node_modules_lodash_throttle_js.js +2 -2
- package/dist/playlist.js +2 -2
- package/dist/playlist.min.js +2 -2
- package/dist/plugins_cloudinary_url-helpers_js-utils_object_js-utils_querystring_js-utils_utf8Base64_js-vi-555007.js +952 -0
- package/dist/recommendations-overlay.js +2 -2
- package/dist/recommendations-overlay.min.js +2 -2
- package/dist/share.js +2 -2
- package/dist/share.min.js +2 -2
- package/dist/shoppable.js +2 -2
- package/dist/shoppable.min.js +2 -2
- package/dist/utils_fetch-config_js.js +3 -47
- package/dist/video-player_js.js +12 -948
- package/dist/visual-search.js +2 -2
- package/dist/visual-search.min.js +2 -2
- package/lib/all.js +2 -1
- package/lib/chapters.js +2 -1
- package/lib/cld-video-player.min.css +2 -2
- package/lib/colors.js +2 -1
- package/lib/debug.js +2 -1
- package/lib/fetch-config.js +11 -3
- package/lib/index.js +2 -1
- package/lib/interaction-areas.service.js +2 -1
- package/lib/object.js +2805 -0
- package/lib/player.js +2 -1
- package/lib/playlist.js +2 -1
- package/lib/recommendations-overlay.js +2 -1
- package/lib/share.js +2 -1
- package/lib/shoppable-widget.js +3 -2
- package/lib/throttle.js +1 -1
- package/lib/toNumber.js +2 -2
- package/lib/validators-functions.js +3 -366
- package/lib/video-player.const.js +367 -0
- package/lib/video-player.js +80 -2800
- package/lib/videoPlayer.js +2 -1
- package/package.json +1 -1
- package/lib/querystring.js +0 -81
package/dist/chapters.js
CHANGED
package/dist/chapters.min.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Cloudinary Video Player v3.13.1
|
|
3
|
-
* Built on 2026-
|
|
2
|
+
* Cloudinary Video Player v3.13.1
|
|
3
|
+
* Built on 2026-04-02T13:46:27.754Z
|
|
4
4
|
* https://github.com/cloudinary/cloudinary-video-player
|
|
5
5
|
*/
|
|
6
6
|
"use strict";(self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[625],{9234(t,e,r){r.d(e,{default:()=>c});var s=r(6673),a=r.n(s),i=r(5770),o=r(2415),n=r(7311);const p=function(){function t(t,e){return this.player=t,this.options=e,this.player.one("loadedmetadata",this.initializeChapters.bind(this)),this}return t.prototype.src=function(t){this.resetPlugin(),this.options=t,this.player.one("loadedmetadata",this.initializeChapters.bind(this))},t.prototype.detach=function(){this.resetPlugin()},t.prototype.resetPlugin=function(){this.chaptersTrack&&(this.player.$(".vjs-control-bar-chapter-display").remove(),this.player.$(".vjs-chapter-display").remove(),this.player.$$(".vjs-chapter-marker").forEach(t=>t.remove()),this.player.removeRemoteTextTrack(this.chaptersTrack),delete this.chaptersTrack)},t.prototype.getChaptersFileUrlByName=function(){const t=this.player.cloudinary.currentPublicId();if(!t)return null;const e=this.player.cloudinary.source(),{type:r}=e.resourceConfig(),s=`${(0,i.k$)(this.player.cloudinary.cloudinaryConfig())}/_applet_/video_service/chapters/${r}/${(0,o.G)(t)}.vtt`;return(0,n.N)(s,e.queryParams())},t.prototype.initializeChapters=async function(){const t=!0===this.options?this.getChaptersFileUrlByName():this.options.url;if(t){const e={kind:"chapters",src:t,default:!0},r=this.player.addRemoteTextTrack(e);r.addEventListener("load",()=>{this.chaptersTrack=r.track,this.setupChaptersDisplays()})}else if(Object.entries(this.options).length){const t=this.player.addRemoteTextTrack({kind:"chapters",default:!0}),e=this.player.duration();Object.entries(this.options).forEach((r,s,a)=>{const i=new VTTCue(parseFloat(r[0]),parseFloat(a[s+1]?a[s+1][0]:e),r[1]);t.track.addCue(i)}),this.chaptersTrack=t.track,this.setupChaptersDisplays(),this.player.controlBar.chaptersButton&&this.player.controlBar.chaptersButton.update()}},t.prototype.setupChaptersDisplays=function(){this.setupProgressBarMarkers(),this.setupProgressBarChapter(),this.setupControlBarChapter()},t.prototype.setupControlBarChapter=function(){const t=this.player.$(".vjs-control-bar-chapter-display")||document.createElement("div");t.setAttribute("class","vjs-control-bar-chapter-display");const e=this.player.$(".vjs-control-bar .vjs-spacer");e.innerHTML="",e.classList.add("vjs-control-bar-chapter-wrapper"),e.appendChild(t),this.chaptersTrack.addEventListener("cuechange",()=>{const e=Array.from(this.chaptersTrack.activeCues);t.innerText=e.length>0?e[0].text:""})},t.prototype.setupProgressBarMarkers=function(){const t=this.player.duration(),{seekBar:e}=this.player.controlBar.progressControl;Array.from(this.chaptersTrack.cues).forEach(r=>{if(0!==r.startTime){const s=r.startTime/t*100+"%",i=a().dom.createEl("div",void 0,{class:"vjs-chapter-marker",style:`left: ${s}`});e.el().append(i)}})},t.prototype.setupProgressBarChapter=function(){const t=a().dom.createEl("div",void 0,{class:"vjs-chapter-display",style:`max-width: ${this.player.$(".vjs-vtt-thumbnail-display")?this.player.$(".vjs-vtt-thumbnail-display").style.width:"160px"}`}),e=this.player.getDescendant(["controlBar","progressControl","seekBar","mouseTimeDisplay"]),r=e.getDescendant(["timeTooltip"]);r.el().parentElement.prepend(t);const s=t=>{const e=t*this.player.duration(),r=Array.from(this.chaptersTrack?.cues||[]).find(t=>e>=t.startTime&&e<=t.endTime);return r?r.text:""};r.update=function(e,r,a){Object.getPrototypeOf(this).update.call(this,e,r,a),t.innerText=s(r)},"object"!=typeof this.player.vttThumbnails&&(e.update=function(e,s){const i=s*this.player_.duration(),o=e.width,n=t.clientWidth/2;r.updateTime(e,s,i,()=>{e.width*s<n?this.el_.style.left=`${n}px`:e.width*s+n>o?this.el_.style.left=e.width-n+"px":this.el_.style.left=e.width*s+"px"}),r.write(a().time.formatTime(i))})},t}(),c=function(t,e){e.addClass("vjs-chapters"),e.chapters=new p(e,t)}}}]);
|
package/dist/cld-player-core.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Cloudinary Video Player v3.13.1
|
|
3
|
-
* Built on 2026-
|
|
2
|
+
* Cloudinary Video Player v3.13.1
|
|
3
|
+
* Built on 2026-04-02T13:46:27.754Z
|
|
4
4
|
* https://github.com/cloudinary/cloudinary-video-player
|
|
5
5
|
*/
|
|
6
6
|
"use strict";(self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[76],{9167(e,i,l){l.d(i,{videoPlayer:()=>r});l(6673);var n=l(1134),o=l(2984);const r=function(e){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},l=arguments.length>2?arguments[2]:void 0;return(0,n.createVideoPlayer)(e,i,l)},d=function(e){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},l=arguments.length>2?arguments[2]:void 0;return(0,o.wQ)(e,i,l,n.C)};(0,o.hg)({videoPlayer:r,videoPlayers:(e,i,l)=>(0,o.ci)(e,i,l,r),player:d,players:(e,i,l)=>(0,o.Hn)(e,i,l,d)})}}]);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Cloudinary Video Player v3.13.1
|
|
3
|
-
* Built on 2026-
|
|
2
|
+
* Cloudinary Video Player v3.13.1
|
|
3
|
+
* Built on 2026-04-02T13:46:44.754Z
|
|
4
4
|
* https://github.com/cloudinary/cloudinary-video-player
|
|
5
5
|
*/
|
|
6
6
|
/*
|
|
@@ -31,7 +31,7 @@ return /******/ (() => { // webpackBootstrap
|
|
|
31
31
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
32
32
|
|
|
33
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?\n}");
|
|
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(\"plugins_cloudinary_url-helpers_js-utils_object_js-utils_querystring_js-utils_utf8Base64_js-vi-555007\"), __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?\n}");
|
|
35
35
|
|
|
36
36
|
/***/ },
|
|
37
37
|
|
|
@@ -53,7 +53,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
53
53
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
54
54
|
|
|
55
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
|
|
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 Promise.all(/*! import() */[__webpack_require__.e(\"plugins_cloudinary_url-helpers_js-utils_object_js-utils_querystring_js-utils_utf8Base64_js-vi-555007\"), __webpack_require__.e(\"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?\n}");
|
|
57
57
|
|
|
58
58
|
/***/ },
|
|
59
59
|
|
|
@@ -75,7 +75,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
75
75
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
76
76
|
|
|
77
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?\n}");
|
|
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(\"plugins_cloudinary_url-helpers_js-utils_object_js-utils_querystring_js-utils_utf8Base64_js-vi-555007\"), __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?\n}");
|
|
79
79
|
|
|
80
80
|
/***/ },
|
|
81
81
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Cloudinary Video Player v3.13.1
|
|
3
|
-
* Built on 2026-
|
|
2
|
+
* Cloudinary Video Player v3.13.1
|
|
3
|
+
* Built on 2026-04-02T13:46:27.754Z
|
|
4
4
|
* https://github.com/cloudinary/cloudinary-video-player
|
|
5
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(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",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",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(/^blob:/,"").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})());
|
|
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 Promise.all([r.e(19),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(19),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(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",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",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(/^blob:/,"").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(19),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.13.1
|
|
3
|
-
* Built on 2026-
|
|
2
|
+
* Cloudinary Video Player v3.13.1
|
|
3
|
+
* Built on 2026-04-02T13:46:44.754Z
|
|
4
4
|
* https://github.com/cloudinary/cloudinary-video-player
|
|
5
5
|
*/
|
|
6
6
|
/*!*************************************************************************************************!*\
|