cloudinary-video-player 3.6.4-edge.0 → 3.6.4-edge.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/adaptive-streaming.js +5 -5
- package/dist/adaptive-streaming.min.js +4 -4
- package/dist/chapters.js +3 -3
- package/dist/chapters.min.js +3 -3
- package/dist/cld-video-player.css +2 -2
- package/dist/cld-video-player.js +38 -38
- package/dist/cld-video-player.light.js +38 -38
- package/dist/cld-video-player.light.min.js +4 -4
- package/dist/cld-video-player.min.css +3 -3
- package/dist/cld-video-player.min.js +4 -4
- package/dist/colors.js +2 -2
- package/dist/colors.min.js +2 -2
- package/dist/dash.js +2 -2
- package/dist/dash.min.js +2 -2
- package/dist/debug.js +3 -3
- package/dist/debug.min.js +3 -3
- package/dist/ima.js +2 -2
- package/dist/ima.min.js +2 -2
- package/dist/interaction-areas.js +4 -4
- package/dist/interaction-areas.min.js +3 -3
- package/dist/node_modules_lodash_throttle_js.js +2 -2
- package/dist/playlist.js +9 -9
- package/dist/playlist.min.js +3 -3
- package/dist/recommendations-overlay.js +4 -4
- package/dist/recommendations-overlay.min.js +3 -3
- package/dist/share.js +3 -3
- package/dist/share.min.js +3 -3
- package/dist/shoppable.js +7 -7
- package/dist/shoppable.min.js +3 -3
- package/dist/visual-search.js +4 -4
- package/dist/visual-search.min.js +3 -3
- package/lib/adaptive-streaming.js +1 -1
- package/lib/all.js +1 -1
- package/lib/chapters.js +1 -1
- package/lib/cld-video-player.js +1 -1
- package/lib/debug.js +1 -1
- package/lib/interaction-areas.js +1 -1
- package/lib/player.js +1 -1
- package/lib/playlist.js +1 -1
- package/lib/recommendations-overlay.js +1 -1
- package/lib/share.js +1 -1
- package/lib/shoppable.js +1 -1
- package/lib/videoPlayer.js +1 -1
- package/lib/visual-search.js +1 -1
- package/package.json +5 -2
package/dist/playlist.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Cloudinary Video Player v3.6.4-edge.
|
|
3
|
-
* Built on
|
|
2
|
+
* Cloudinary Video Player v3.6.4-edge.1
|
|
3
|
+
* Built on 2026-01-04T08:13:28.782Z
|
|
4
4
|
* https://github.com/cloudinary/cloudinary-video-player
|
|
5
5
|
*/
|
|
6
6
|
/*
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
21
21
|
|
|
22
22
|
"use strict";
|
|
23
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var utils_slicing__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! utils/slicing */ \"./utils/slicing.js\");\n/* harmony import */ var utils_consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utils/consts */ \"./utils/consts.js\");\n/* harmony import */ var plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! plugins/cloudinary/common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var _utils_api__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/api */ \"./plugins/playlist/utils/api.js\");\n/* harmony import */ var _ui_playlist__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ui/playlist */ \"./plugins/playlist/ui/playlist.js\");\n/* harmony import */ var _ui_playlist_widget__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ui/playlist-widget */ \"./plugins/playlist/ui/playlist-widget.js\");\n/* harmony import */ var _ui_panel_playlist_panel__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ui/panel/playlist-panel */ \"./plugins/playlist/ui/panel/playlist-panel.js\");\n\n\n\n\n\n\n\nconst LIST_BY_TAG_PARAMS = {\n format: 'json',\n resource_type: 'video',\n type: 'list'\n};\nconst playlist = function (player) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const chainTarget = (0,utils_slicing__WEBPACK_IMPORTED_MODULE_0__.sliceProperties)(options, 'chainTarget').chainTarget;\n let playlistInstance = null;\n let playlistDisposer = null;\n let playlistWidget = null;\n const initPlaylistWidget = () => {\n player.on(utils_consts__WEBPACK_IMPORTED_MODULE_1__.PLAYER_EVENT.PLAYLIST_CREATED, () => {\n
|
|
23
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var utils_slicing__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! utils/slicing */ \"./utils/slicing.js\");\n/* harmony import */ var utils_consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utils/consts */ \"./utils/consts.js\");\n/* harmony import */ var plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! plugins/cloudinary/common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var _utils_api__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/api */ \"./plugins/playlist/utils/api.js\");\n/* harmony import */ var _ui_playlist__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ui/playlist */ \"./plugins/playlist/ui/playlist.js\");\n/* harmony import */ var _ui_playlist_widget__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ui/playlist-widget */ \"./plugins/playlist/ui/playlist-widget.js\");\n/* harmony import */ var _ui_panel_playlist_panel__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ui/panel/playlist-panel */ \"./plugins/playlist/ui/panel/playlist-panel.js\");\n\n\n\n\n\n\n\nconst LIST_BY_TAG_PARAMS = {\n format: 'json',\n resource_type: 'video',\n type: 'list'\n};\nconst playlist = function (player) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const chainTarget = (0,utils_slicing__WEBPACK_IMPORTED_MODULE_0__.sliceProperties)(options, 'chainTarget').chainTarget;\n let playlistInstance = null;\n let playlistDisposer = null;\n let playlistWidget = null;\n const initPlaylistWidget = () => {\n player.on(utils_consts__WEBPACK_IMPORTED_MODULE_1__.PLAYER_EVENT.PLAYLIST_CREATED, () => {\n if (playlistWidget) {\n playlistWidget.dispose();\n }\n if (options.playlistWidget?.show != false) {\n if (player.fluid_) {\n options.playlistWidget.fluid = true;\n }\n if (player.cloudinary.fontFace) {\n options.playlistWidget.fontFace = player.cloudinary.fontFace;\n }\n playlistWidget = new _ui_playlist_widget__WEBPACK_IMPORTED_MODULE_5__[\"default\"](player, options.playlistWidget);\n }\n });\n };\n const disposePlaylist = () => {\n player.removeClass('vjs-playlist');\n playlistInstance = undefined;\n player.playlist().dispose();\n player.off('cldsourcechanged', playlistDisposer);\n };\n const addPlaylistDisposer = () => {\n const disposer = () => {\n if (playlistInstance && !playlistInstance.currentSource().contains(player.currentSource())) {\n player.disposePlaylist();\n }\n };\n player.on('cldsourcechanged', disposer);\n return disposer;\n };\n const createPlaylist = (sources, options) => {\n if (sources instanceof _ui_playlist__WEBPACK_IMPORTED_MODULE_4__[\"default\"]) {\n playlistInstance = sources;\n playlistInstance.resetState();\n playlistInstance.currentIndex(playlistInstance.currentIndex());\n } else {\n playlistInstance = new _ui_playlist__WEBPACK_IMPORTED_MODULE_4__[\"default\"](player.cloudinary, sources, options);\n playlistInstance.currentIndex(0);\n }\n initPlaylistWidget();\n playlistDisposer = addPlaylistDisposer();\n player.addClass('vjs-playlist');\n };\n player.cloudinary.sourcesByTag = async function (tag) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const url = (0,plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_2__.getCloudinaryUrl)(tag, Object.assign({}, player.cloudinary.cloudinaryConfig(), LIST_BY_TAG_PARAMS));\n const result = await fetch(url);\n const json = await result.json();\n const resources = (0,_utils_api__WEBPACK_IMPORTED_MODULE_3__.normalizeJsonResponse)(json.resources);\n if (options.sorter) {\n resources.sort(options.sorter);\n }\n const sources = resources.map(resource => {\n let sourceParams = options.sourceParams || {};\n if (typeof sourceParams === 'function') {\n sourceParams = sourceParams(resource);\n }\n const info = resource.context && resource.context.custom || {};\n const source = Object.assign({\n info\n }, sourceParams, {\n publicId: resource.publicId\n });\n return player.cloudinary.buildSource(source);\n });\n return sources;\n };\n return function (sources) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (sources === undefined) {\n return playlistInstance;\n }\n if (playlistInstance) {\n disposePlaylist();\n }\n createPlaylist(sources, options);\n player.trigger('playlistcreated');\n return chainTarget;\n };\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (playlist);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/playlist/playlist.js?");
|
|
24
24
|
|
|
25
25
|
/***/ }),
|
|
26
26
|
|
|
@@ -31,7 +31,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
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 */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n\n\n// Get the ClickableComponent base class from Video.js\nconst ClickableComponent = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('ClickableComponent');\n\n// Create a common class for playlist buttons\nclass PlaylistButton extends ClickableComponent {\n constructor(player, options) {\n // It is important to invoke the superclass before anything else,\n // to get all the features of components out of the box!\n super(player, options);\n const type = options.type;\n if (!type && type !== 'previous' && type !== 'next') {\n throw new Error('Type must be either \\'previous\\' or \\'next\\'');\n }\n }\n\n // The `createEl` function of a component creates its DOM element.\n createEl() {\n const type = this.options_.type;\n const typeCssClass =
|
|
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 */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n\n\n// Get the ClickableComponent base class from Video.js\nconst ClickableComponent = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('ClickableComponent');\n\n// Create a common class for playlist buttons\nclass PlaylistButton extends ClickableComponent {\n constructor(player, options) {\n // It is important to invoke the superclass before anything else,\n // to get all the features of components out of the box!\n super(player, options);\n const type = options.type;\n if (!type && type !== 'previous' && type !== 'next') {\n throw new Error('Type must be either \\'previous\\' or \\'next\\'');\n }\n }\n\n // The `createEl` function of a component creates its DOM element.\n createEl() {\n const type = this.options_.type;\n const typeCssClass = `vjs-icon-${type}-item`;\n return video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('button', {\n // Prefixing classes of elements within a player with \"vjs-\"\n // is a convention used in Video.js.\n className: `vjs-control vjs-playlist-button vjs-button ${typeCssClass}`,\n ariaLabel: `Playlist ${type} item`\n });\n }\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PlaylistButton);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/playlist/ui/components/playlist-button.js?");
|
|
35
35
|
|
|
36
36
|
/***/ }),
|
|
37
37
|
|
|
@@ -75,7 +75,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
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 */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _upcoming_video_overlay_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./upcoming-video-overlay.scss */ \"./plugins/playlist/ui/components/upcoming-video-overlay.scss\");\n/* harmony import */ var utils_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! utils/consts */ \"./utils/consts.js\");\
|
|
78
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _upcoming_video_overlay_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./upcoming-video-overlay.scss */ \"./plugins/playlist/ui/components/upcoming-video-overlay.scss\");\n/* harmony import */ var utils_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! utils/consts */ \"./utils/consts.js\");\n\n\n\n\n// support VJS5 & VJS6 at the same time\nconst dom = (video_js__WEBPACK_IMPORTED_MODULE_0___default().dom) || (video_js__WEBPACK_IMPORTED_MODULE_0___default());\nconst Component = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('Component');\nconst ClickableComponent = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('ClickableComponent');\nclass UpcomingVideoOverlay extends ClickableComponent {\n static DISABLE_TRANSITION_CLASS = 'disable-transition';\n static VJS_UPCOMING_VIDEO_SHOW = 'vjs-upcoming-video-show';\n constructor(player) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n super(player, ...args);\n this._setEvents(player);\n }\n _setEvents(player) {\n player.on(utils_consts__WEBPACK_IMPORTED_MODULE_2__.PLAYER_EVENT.UP_COMING_VIDEO_SHOW, this._show);\n player.on(utils_consts__WEBPACK_IMPORTED_MODULE_2__.PLAYER_EVENT.UP_COMING_VIDEO_HIDE, this._hide);\n player.on(utils_consts__WEBPACK_IMPORTED_MODULE_2__.PLAYER_EVENT.PLAYLIST_ITEM_CHANGED, this._onPlaylistItemChange);\n }\n _hide = () => {\n this.removeClass(UpcomingVideoOverlay.VJS_UPCOMING_VIDEO_SHOW);\n };\n _disableTransition(block) {\n this.addClass(UpcomingVideoOverlay.DISABLE_TRANSITION_CLASS);\n block();\n this.removeClass(UpcomingVideoOverlay.DISABLE_TRANSITION_CLASS);\n }\n _onPlaylistItemChange = (_, event) => {\n this._hide();\n this._disableTransition(() => {\n if (event.next) {\n this.setItem(event.next);\n }\n });\n };\n _show = () => {\n const ima = this.player().ima;\n const adsManager = ima === 'object' && ima.getAdsManager();\n if (adsManager) {\n if (!adsManager.getCurrentAd() || adsManager.getCurrentAd().isLinear()) {\n this.addClass(UpcomingVideoOverlay.VJS_UPCOMING_VIDEO_SHOW);\n }\n } else {\n this.addClass(UpcomingVideoOverlay.VJS_UPCOMING_VIDEO_SHOW);\n }\n };\n setTitle(source) {\n const title = this.getChild('upcomingVideoOverlayContent').getChild('upcomingVideoOverlayBar').getChild('upcomingVideoOverlayTitle');\n title.setContent(source.info().title || source.publicId());\n }\n setItem(source) {\n this._source = source;\n const maxWidth = parseInt(window.getComputedStyle(this.el(), null).getPropertyValue('max-width'), 10);\n const maxHeight = Math.round(maxWidth * (9 / 16.0));\n const transformation = {\n crop: 'pad',\n background: 'auto:predominant',\n width: maxWidth,\n height: maxHeight\n };\n const content = this.getChild('upcomingVideoOverlayContent');\n this.setTitle(source);\n content.el().style.backgroundImage = `url(\"${this._source.poster().url({\n transformation\n })}\")`;\n }\n handleClick() {\n super.handleClick(event);\n this.player().cloudinary.playlist().playNext();\n }\n createEl() {\n return super.createEl('div', {\n className: 'vjs-upcoming-video'\n });\n }\n}\nclass UpcomingVideoOverlayContent extends Component {\n createEl() {\n // Content wraps image and bar\n return super.createEl('div', {\n className: 'upcoming-video-overlay aspect-ratio-content'\n });\n }\n}\nclass UpcomingVideoOverlayTitle extends Component {\n setContent(title) {\n this._contentSpan.innerText = title;\n }\n createEl() {\n const el = super.createEl('div', {\n className: 'vjs-control vjs-upcoming-video-title'\n });\n const container = dom.createEl('div', {\n className: 'vjs-upcoming-video-title-display',\n innerHTML: '<span class=\"vjs-control-text\">Next up</span>Next up: '\n });\n this._contentSpan = dom.createEl('span', {\n className: 'vjs-upcoming-video-title-display-label'\n });\n container.appendChild(this._contentSpan);\n el.appendChild(container);\n return el;\n }\n}\nclass UpcomingVideoOverlayBar extends Component {\n createEl() {\n return super.createEl('div', {\n className: 'vjs-upcoming-video-bar'\n });\n }\n}\nUpcomingVideoOverlay.prototype.options_ = {\n children: ['upcomingVideoOverlayContent']\n};\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('upcomingVideoOverlay', UpcomingVideoOverlay);\nUpcomingVideoOverlayContent.prototype.options_ = {\n children: ['upcomingVideoOverlayBar']\n};\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('upcomingVideoOverlayContent', UpcomingVideoOverlayContent);\nUpcomingVideoOverlayBar.prototype.options_ = {\n children: ['upcomingVideoOverlayTitle', 'playlistNextButton']\n};\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('upcomingVideoOverlayBar', UpcomingVideoOverlayBar);\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('upcomingVideoOverlayTitle', UpcomingVideoOverlayTitle);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (UpcomingVideoOverlay);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/playlist/ui/components/upcoming-video-overlay.js?");
|
|
79
79
|
|
|
80
80
|
/***/ }),
|
|
81
81
|
|
|
@@ -119,7 +119,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
119
119
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
120
120
|
|
|
121
121
|
"use strict";
|
|
122
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var utils_consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utils/consts */ \"./utils/consts.js\");\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/dom */ \"./plugins/playlist/utils/dom.js\");\n/* harmony import */ var utils_css_prefix__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! utils/css-prefix */ \"./utils/css-prefix.js\");\
|
|
122
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var utils_consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utils/consts */ \"./utils/consts.js\");\n/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/dom */ \"./plugins/playlist/utils/dom.js\");\n/* harmony import */ var utils_css_prefix__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! utils/css-prefix */ \"./utils/css-prefix.js\");\n\n\n\n\nconst dom = (video_js__WEBPACK_IMPORTED_MODULE_0___default().dom) || (video_js__WEBPACK_IMPORTED_MODULE_0___default());\nconst Component = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('Component');\nconst OPTIONS_DEFAULT = {\n wrap: false\n};\nclass PlaylistLayout extends Component {\n constructor(player, options) {\n const layoutOptions = {\n ...OPTIONS_DEFAULT,\n ...options\n };\n super(player, layoutOptions);\n this.player_ = player;\n const fluidHandler = (e, fluid) => {\n this.options_.fluid = fluid;\n this.removeCls();\n this.setCls();\n };\n const wrapVideoWithLayout = () => {\n const el = this.el();\n this.videoWrap_ = dom.createEl('div', {\n className: 'cld-plw-col-player'\n });\n this.contentEl_ = this.contentEl_ = dom.createEl('div', {\n className: 'cld-plw-col-list'\n });\n (0,_utils_dom__WEBPACK_IMPORTED_MODULE_2__.wrap)(this.player().el(), el);\n el.appendChild(this.videoWrap_);\n el.appendChild(this.contentEl_);\n (0,_utils_dom__WEBPACK_IMPORTED_MODULE_2__.wrap)(this.player().el(), this.videoWrap_);\n };\n if (layoutOptions.wrap) {\n wrapVideoWithLayout();\n }\n player.on(utils_consts__WEBPACK_IMPORTED_MODULE_1__.PLAYER_EVENT.FLUID, fluidHandler);\n this.addChild(utils_consts__WEBPACK_IMPORTED_MODULE_1__.PLAYER_EVENT.PLAYLIST_PANEL, this.options_);\n this.setCls();\n this.dispose = () => {\n this.removeLayout();\n super.dispose();\n player.off(utils_consts__WEBPACK_IMPORTED_MODULE_1__.PLAYER_EVENT.FLUID, fluidHandler);\n };\n }\n getCls() {\n let cls = ['cld-video-player', 'cld-plw-layout'];\n cls.push((0,utils_css_prefix__WEBPACK_IMPORTED_MODULE_3__.skinClassPrefix)(this.player()));\n cls.push((0,utils_css_prefix__WEBPACK_IMPORTED_MODULE_3__.playerClassPrefix)(this.player()));\n if (this.options_.fluid) {\n cls.push('cld-plw-layout-fluid');\n }\n return cls;\n }\n setCls() {\n this.removeClass((0,utils_css_prefix__WEBPACK_IMPORTED_MODULE_3__.skinClassPrefix)(this.player()));\n this.getCls().forEach(cls => {\n this.addClass(cls);\n });\n }\n removeCls() {\n this.getCls().forEach(cls => {\n this.removeClass(cls);\n });\n }\n update(optionToChange, options) {\n this.options(options);\n this.removeChild('PlaylistPanel');\n this.addChild('PlaylistPanel', this.options_);\n this.trigger('playlistlayoutupdate');\n }\n removeLayout() {\n const parentElem = this.el().parentElement;\n if (parentElem) {\n parentElem.appendChild(this.player().el());\n }\n }\n createEl() {\n const el = super.createEl('div');\n\n // Apply font styles on wrapper div.\n el.style.fontFamily = this.player().el().style.fontFamily;\n return el;\n }\n}\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('playlistLayout', PlaylistLayout);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PlaylistLayout);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/playlist/ui/layout/playlist-layout.js?");
|
|
123
123
|
|
|
124
124
|
/***/ }),
|
|
125
125
|
|
|
@@ -152,7 +152,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
152
152
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
153
153
|
|
|
154
154
|
"use strict";
|
|
155
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var utils_consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utils/consts */ \"./utils/consts.js\");\n/* harmony import */ var _layout_playlist_layout_horizontal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./layout/playlist-layout-horizontal */ \"./plugins/playlist/ui/layout/playlist-layout-horizontal.js\");\n/* harmony import */ var _layout_playlist_layout_vertical__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./layout/playlist-layout-vertical */ \"./plugins/playlist/ui/layout/playlist-layout-vertical.js\");\n/* harmony import */ var _layout_playlist_layout_custom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./layout/playlist-layout-custom */ \"./plugins/playlist/ui/layout/playlist-layout-custom.js\");\n/* harmony import */ var _playlist_const__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./playlist.const */ \"./plugins/playlist/ui/playlist.const.js\");\
|
|
155
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var utils_consts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utils/consts */ \"./utils/consts.js\");\n/* harmony import */ var _layout_playlist_layout_horizontal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./layout/playlist-layout-horizontal */ \"./plugins/playlist/ui/layout/playlist-layout-horizontal.js\");\n/* harmony import */ var _layout_playlist_layout_vertical__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./layout/playlist-layout-vertical */ \"./plugins/playlist/ui/layout/playlist-layout-vertical.js\");\n/* harmony import */ var _layout_playlist_layout_custom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./layout/playlist-layout-custom */ \"./plugins/playlist/ui/layout/playlist-layout-custom.js\");\n/* harmony import */ var _playlist_const__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./playlist.const */ \"./plugins/playlist/ui/playlist.const.js\");\n\n\n\n\n\n\nconst modifyOptions = (player, opt) => {\n const options = {\n ..._playlist_const__WEBPACK_IMPORTED_MODULE_5__.PLAYLIST_DEFAULTS_OPTIONS,\n ...opt\n };\n if (options.show && typeof options.selector === 'string') {\n options.useDefaultLayout = false;\n options.useCustomLayout = true;\n options.renderTo = document.querySelector(options.selector);\n options.showAll = true;\n if (!options.renderTo.length === 0) {\n throw new Error(`Couldn't find element(s) by selector '${options.selector}' for playlist`);\n }\n }\n if (options.show && !options.selector) {\n options.useDefaultLayout = true;\n options.useCustomLayout = false;\n }\n options.direction = options.direction.toLowerCase() === 'horizontal' ? 'horizontal' : 'vertical';\n options.skin = player.options_.skin;\n return options;\n};\nclass PlaylistWidget {\n constructor(player) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n options = modifyOptions(player, options);\n this.options_ = options;\n this.player_ = player;\n this.render();\n const fluidHandler = (e, fluid) => {\n this.options_.fluid = fluid;\n };\n player.on(utils_consts__WEBPACK_IMPORTED_MODULE_1__.PLAYER_EVENT.FLUID, fluidHandler);\n this.options = options => {\n if (!options) {\n return this.options_;\n }\n this.options_ = video_js__WEBPACK_IMPORTED_MODULE_0___default().obj.merge(this.options_, options);\n player.trigger('playlistwidgetoption', this.options_.playlistWidget);\n return this.options_;\n };\n this.dispose = () => {\n this.layout_.dispose();\n player.off(utils_consts__WEBPACK_IMPORTED_MODULE_1__.PLAYER_EVENT.FLUID, fluidHandler);\n };\n }\n render() {\n if (this.options_.useDefaultLayout) {\n if (this.options_.direction === 'horizontal') {\n this.layout_ = new _layout_playlist_layout_horizontal__WEBPACK_IMPORTED_MODULE_2__[\"default\"](this.player_, this.options_);\n } else {\n this.layout_ = new _layout_playlist_layout_vertical__WEBPACK_IMPORTED_MODULE_3__[\"default\"](this.player_, this.options_);\n }\n }\n if (this.options_.useCustomLayout) {\n this.layout_ = new _layout_playlist_layout_custom__WEBPACK_IMPORTED_MODULE_4__[\"default\"](this.player_, this.options_);\n }\n }\n getLayout() {\n return this.layout_;\n }\n update(optionName, optionValue) {\n this.options(optionValue);\n if (optionName === 'direction') {\n this.layout_.removeLayout();\n this.layout_.dispose();\n this.render();\n } else {\n this.layout_.update(optionName, this.options_);\n }\n }\n setSkin() {\n this.layout_.setCls();\n }\n total() {\n let totalNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _playlist_const__WEBPACK_IMPORTED_MODULE_5__.PLAYLIST_DEFAULTS_OPTIONS.total;\n const total = parseInt(totalNumber, 10);\n if (total !== this.options_.total && typeof total === 'number' && total > 0) {\n this.update('total', {\n total: total\n });\n }\n return this;\n }\n direction() {\n let direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _playlist_const__WEBPACK_IMPORTED_MODULE_5__.PLAYLIST_DEFAULTS_OPTIONS.direction;\n if (direction === 'horizontal' || direction === 'vertical') {\n this.update('direction', {\n direction: direction\n });\n }\n return this;\n }\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PlaylistWidget);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/playlist/ui/playlist-widget.js?");
|
|
156
156
|
|
|
157
157
|
/***/ }),
|
|
158
158
|
|
|
@@ -174,7 +174,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
174
174
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
175
175
|
|
|
176
176
|
"use strict";
|
|
177
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var plugins_cloudinary_models_video_source_video_source__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! plugins/cloudinary/models/video-source/video-source */ \"./plugins/cloudinary/models/video-source/video-source.js\");\n/* harmony import */ var lodash_isInteger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isInteger */ \"../node_modules/lodash/isInteger.js\");\n/* harmony import */ var lodash_isInteger__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isInteger__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_upcoming_video_overlay__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/upcoming-video-overlay */ \"./plugins/playlist/ui/components/upcoming-video-overlay.js\");\n/* harmony import */ var _components_playlist_buttons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/playlist-buttons */ \"./plugins/playlist/ui/components/playlist-buttons.js\");\n/* harmony import */ var _playlist_const__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./playlist.const */ \"./plugins/playlist/ui/playlist.const.js\");\n/* harmony import */ var _playlist_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./playlist.scss */ \"./plugins/playlist/ui/playlist.scss\");\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n\n\n\n\n\n\nclass Playlist {\n constructor(context) {\n var _this = this;\n let _sources = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n let {\n repeat = false,\n autoAdvance = false,\n presentUpcoming = false\n } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _defineProperty(this, \"playlistByTag\", function (tag) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return _this.player().sourcesByTag(tag, options).then(sources => _this.player().playlist(sources, options));\n });\n this._context = context;\n this._sources = [];\n this._defaultRecResolverCache = {};\n this._currentIndex = null;\n this._recommendationsHandler = null;\n this._autoAdvance = null;\n this._presentUpcoming = null;\n this.addUiComponents();\n this.resetState = () => {\n this.repeat(repeat);\n this.autoAdvance(autoAdvance);\n this.presentUpcoming(presentUpcoming);\n };\n _sources.forEach(source => this.enqueue(source));\n this.resetState();\n }\n list() {\n return this._sources;\n }\n player() {\n return this._context.player;\n }\n addUiComponents() {\n const controlBar = this.player().getChild('ControlBar');\n const children = controlBar.children();\n controlBar.addChild('playlistPreviousButton', {}, children.findIndex(c => c.name_ === 'PlayToggle'));\n controlBar.addChild('playlistNextButton', {}, children.findIndex(c => c.name_ === 'PlayToggle') + 1);\n this.player().addChild('upcomingVideoOverlay');\n }\n presentUpcoming(delay) {\n this._presentUpcoming = this._presentUpcoming || {};\n if (delay === undefined) {\n return this._presentUpcoming.delay;\n }\n if (delay === true) {\n delay = _playlist_const__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_PRESENT_UPCOMING;\n } else if (delay === false) {\n delay = false;\n } else if (!lodash_isInteger__WEBPACK_IMPORTED_MODULE_1___default()(delay) || delay < 0) {\n throw new Error('presentUpcoming \\'delay\\' must be either a boolean or a positive integer.');\n }\n this._presentUpcoming.delay = delay;\n this._setupPresentUpcoming();\n return this._presentUpcoming.delay;\n }\n autoAdvance(delay) {\n this._autoAdvance = this._autoAdvance || {};\n if (delay === undefined) {\n return this._autoAdvance.delay;\n }\n if (delay === true) {\n delay = _playlist_const__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_AUTO_ADVANCE;\n } else if (delay === false) {\n delay = false;\n } else if (!lodash_isInteger__WEBPACK_IMPORTED_MODULE_1___default()(delay) || delay < 0) {\n throw new Error('Auto advance \\'delay\\' must be either a boolean or a positive integer.');\n }\n this._autoAdvance.delay = delay;\n this._setupAutoAdvance();\n return this._autoAdvance.delay;\n }\n _setupAutoAdvance() {\n this._resetAutoAdvance();\n const delay = this._autoAdvance.delay;\n if (delay === false) {\n return;\n }\n const trigger = () => {\n if (this.player().ended()) {\n this._autoAdvance.timeout = setTimeout(() => {\n this.playNext();\n }, delay * 1000);\n }\n };\n this._autoAdvance = {\n delay,\n trigger\n };\n this._context.on('ended', this._autoAdvance.trigger);\n }\n dispose() {\n this._resetAutoAdvance();\n this._resetPresentUpcoming();\n this._resetRecommendations();\n }\n _resetPresentUpcoming() {\n this.player().trigger('upcomingvideohide');\n if (!this._presentUpcoming) {\n this._presentUpcoming = {};\n }\n if (this._presentUpcoming.trigger) {\n this._context.off('timeupdate', this._presentUpcoming.trigger);\n }\n this._presentUpcoming.trigger = null;\n this._presentUpcoming.showTriggered = false;\n }\n _setupPresentUpcoming() {\n this._resetPresentUpcoming();\n const delay = this._presentUpcoming.delay;\n if (delay === false) {\n return;\n }\n this._presentUpcoming.trigger = () => {\n const currentTime = this.player().currentTime();\n const duration = this.player().duration();\n const remainingTime = duration - currentTime;\n if (remainingTime < _playlist_const__WEBPACK_IMPORTED_MODULE_4__.UPCOMING_VIDEO_TRANSITION + 0.5) {\n if (this._presentUpcoming.showTriggered) {\n this.player().trigger('upcomingvideohide');\n this._presentUpcoming.showTriggered = false;\n }\n } else if (remainingTime <= this._presentUpcoming.delay && !this._presentUpcoming.showTriggered && !this.player().loop()) {\n this.player().trigger('upcomingvideoshow');\n this._presentUpcoming.showTriggered = true;\n } else if (this._presentUpcoming.showTriggered && (remainingTime > this._presentUpcoming.delay || this.player().loop())) {\n this.player().trigger('upcomingvideohide');\n this._presentUpcoming.showTriggered = false;\n }\n };\n this._context.on('timeupdate', this._presentUpcoming.trigger);\n }\n _resetAutoAdvance() {\n if (!this._autoAdvance) {\n this._autoAdvance = {};\n }\n if (this._autoAdvance.timeout) {\n clearTimeout(this._autoAdvance.timeout);\n }\n if (this._autoAdvance.trigger) {\n this._context.off('ended', this._autoAdvance.trigger);\n }\n this._autoAdvance.timeout = null;\n this._autoAdvance.trigger = null;\n }\n _resetRecommendations() {\n if (this._recommendationsHandler) {\n this._context.off('ended', this._recommendationsHandler);\n }\n }\n _refreshRecommendations() {\n this._resetRecommendations();\n this._recommendationsHandler = () => {\n if (this.autoAdvance() === false && this._context.autoShowRecommendations()) {\n this.player().trigger('recommendationsshow');\n }\n };\n this._context.on('ended', this._recommendationsHandler);\n }\n _refreshTextTracks() {\n this.player().trigger('refreshTextTracks', this.currentSource().textTracks());\n }\n _recommendationItemBuilder(source) {\n const defaultResolver = this._defaultRecResolverCache[source.objectId];\n if (source.recommendations() && (!defaultResolver || source.recommendations() !== defaultResolver)) {\n return;\n }\n return source => ({\n source,\n action: () => this.playItem(source)\n });\n }\n currentIndex(index) {\n if (index === undefined) {\n return this._currentIndex;\n }\n if (index >= this.length() || index < 0) {\n throw new Error('Invalid playlist index.');\n }\n this._currentIndex = index;\n const current = this.currentSource();\n const itemBuilder = this._recommendationItemBuilder(current);\n if (!current.recommendations()) {\n current.recommendations(this._defaultRecommendationsResolver(current));\n }\n\n // Extract source options for analytics\n const sourceOptions = current.getInitOptions ? current.getInitOptions() : {};\n this._context.source(current, _objectSpread(_objectSpread({}, sourceOptions), {}, {\n recommendationOptions: {\n disableAutoShow: true,\n itemBuilder\n }\n }));\n const eventData = {\n playlist: this,\n current,\n next: this.next()\n };\n this.player().trigger('playlistitemchanged', eventData);\n this._refreshRecommendations();\n this._refreshTextTracks();\n return current;\n }\n _defaultRecommendationsResolver(source) {\n const defaultResolver = this._defaultRecResolverCache[source.objectId];\n if (defaultResolver) {\n return defaultResolver;\n }\n this._defaultRecResolverCache[source.objectId] = () => {\n let index = this.list().indexOf(source);\n const items = [];\n const numOfItems = Math.min(4, this.length() - 1);\n while (items.length < numOfItems) {\n index = this.nextIndex(index);\n if (index === -1) {\n break;\n }\n const source = this.list()[index];\n items.push(source);\n }\n return items;\n };\n return this._defaultRecResolverCache[source.objectId];\n }\n buildSource(source) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this._context.buildSource(source, options);\n }\n enqueue(source) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const src = source instanceof plugins_cloudinary_models_video_source_video_source__WEBPACK_IMPORTED_MODULE_0__[\"default\"] ? source : this.buildSource(source, options);\n this._sources.push(src);\n return src;\n }\n playItem(item) {\n let index = this.list().indexOf(item);\n if (index === -1) {\n throw new Error('Invalid playlist item.');\n }\n this.playAtIndex(index);\n }\n playAtIndex(index) {\n this.currentIndex(index);\n this.player().play();\n return this.currentSource();\n }\n currentSource() {\n return this.list()[this.currentIndex()];\n }\n removeAt(index) {\n if (index >= this.length() || index < 0) {\n throw new Error('Invalid playlist index.');\n }\n this._sources.splice(index, 1);\n return this;\n }\n repeat(repeat) {\n if (repeat === undefined) {\n return this._repeat;\n }\n this._repeat = !!repeat;\n return this._repeat;\n }\n first() {\n return this.list()[0];\n }\n last() {\n return this.list()[this.length() - 1];\n }\n next() {\n const nextIndex = this.nextIndex();\n if (nextIndex === -1) {\n return null;\n }\n return this.list()[nextIndex];\n }\n nextIndex(index) {\n index = index !== undefined ? index : this.currentIndex();\n if (index >= this.length() || index < 0) {\n throw new Error('Invalid playlist index.');\n }\n const isLast = index === this.length() - 1;\n let nextIndex = index + 1;\n if (isLast) {\n if (this.repeat()) {\n nextIndex = 0;\n } else {\n return -1;\n }\n }\n return nextIndex;\n }\n previousIndex() {\n if (this.isFirst()) {\n return -1;\n }\n return this.currentIndex() - 1;\n }\n playFirst() {\n return this.playAtIndex(0);\n }\n playLast() {\n const lastIndex = this.list().length - 1;\n return this.playAtIndex(lastIndex);\n }\n isLast() {\n return this.currentIndex() >= this.length() - 1;\n }\n isFirst() {\n return this.currentIndex() === 0;\n }\n length() {\n return this.list().length;\n }\n playNext() {\n let nextIndex = this.nextIndex();\n if (nextIndex === -1) {\n return null;\n }\n return this.playAtIndex(nextIndex);\n }\n playPrevious() {\n let previousIndex = this.previousIndex();\n if (previousIndex === -1) {\n return null;\n }\n return this.playAtIndex(previousIndex);\n }\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Playlist);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/playlist/ui/playlist.js?");
|
|
177
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var plugins_cloudinary_models_video_source_video_source__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! plugins/cloudinary/models/video-source/video-source */ \"./plugins/cloudinary/models/video-source/video-source.js\");\n/* harmony import */ var lodash_isInteger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isInteger */ \"../node_modules/lodash/isInteger.js\");\n/* harmony import */ var lodash_isInteger__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isInteger__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_upcoming_video_overlay__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/upcoming-video-overlay */ \"./plugins/playlist/ui/components/upcoming-video-overlay.js\");\n/* harmony import */ var _components_playlist_buttons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/playlist-buttons */ \"./plugins/playlist/ui/components/playlist-buttons.js\");\n/* harmony import */ var _playlist_const__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./playlist.const */ \"./plugins/playlist/ui/playlist.const.js\");\n/* harmony import */ var _playlist_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./playlist.scss */ \"./plugins/playlist/ui/playlist.scss\");\n\n\n\n\n\n\nclass Playlist {\n constructor(context) {\n let sources = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n let {\n repeat = false,\n autoAdvance = false,\n presentUpcoming = false\n } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this._context = context;\n this._sources = [];\n this._defaultRecResolverCache = {};\n this._currentIndex = null;\n this._recommendationsHandler = null;\n this._autoAdvance = null;\n this._presentUpcoming = null;\n this.addUiComponents();\n this.resetState = () => {\n this.repeat(repeat);\n this.autoAdvance(autoAdvance);\n this.presentUpcoming(presentUpcoming);\n };\n sources.forEach(source => this.enqueue(source));\n this.resetState();\n }\n list() {\n return this._sources;\n }\n player() {\n return this._context.player;\n }\n addUiComponents() {\n const controlBar = this.player().getChild('ControlBar');\n const children = controlBar.children();\n controlBar.addChild('playlistPreviousButton', {}, children.findIndex(c => c.name_ === 'PlayToggle'));\n controlBar.addChild('playlistNextButton', {}, children.findIndex(c => c.name_ === 'PlayToggle') + 1);\n this.player().addChild('upcomingVideoOverlay');\n }\n presentUpcoming(delay) {\n this._presentUpcoming = this._presentUpcoming || {};\n if (delay === undefined) {\n return this._presentUpcoming.delay;\n }\n if (delay === true) {\n delay = _playlist_const__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_PRESENT_UPCOMING;\n } else if (delay === false) {\n delay = false;\n } else if (!lodash_isInteger__WEBPACK_IMPORTED_MODULE_1___default()(delay) || delay < 0) {\n throw new Error('presentUpcoming \\'delay\\' must be either a boolean or a positive integer.');\n }\n this._presentUpcoming.delay = delay;\n this._setupPresentUpcoming();\n return this._presentUpcoming.delay;\n }\n autoAdvance(delay) {\n this._autoAdvance = this._autoAdvance || {};\n if (delay === undefined) {\n return this._autoAdvance.delay;\n }\n if (delay === true) {\n delay = _playlist_const__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_AUTO_ADVANCE;\n } else if (delay === false) {\n delay = false;\n } else if (!lodash_isInteger__WEBPACK_IMPORTED_MODULE_1___default()(delay) || delay < 0) {\n throw new Error('Auto advance \\'delay\\' must be either a boolean or a positive integer.');\n }\n this._autoAdvance.delay = delay;\n this._setupAutoAdvance();\n return this._autoAdvance.delay;\n }\n _setupAutoAdvance() {\n this._resetAutoAdvance();\n const delay = this._autoAdvance.delay;\n if (delay === false) {\n return;\n }\n const trigger = () => {\n if (this.player().ended()) {\n this._autoAdvance.timeout = setTimeout(() => {\n this.playNext();\n }, delay * 1000);\n }\n };\n this._autoAdvance = {\n delay,\n trigger\n };\n this._context.on('ended', this._autoAdvance.trigger);\n }\n dispose() {\n this._resetAutoAdvance();\n this._resetPresentUpcoming();\n this._resetRecommendations();\n }\n _resetPresentUpcoming() {\n this.player().trigger('upcomingvideohide');\n if (!this._presentUpcoming) {\n this._presentUpcoming = {};\n }\n if (this._presentUpcoming.trigger) {\n this._context.off('timeupdate', this._presentUpcoming.trigger);\n }\n this._presentUpcoming.trigger = null;\n this._presentUpcoming.showTriggered = false;\n }\n _setupPresentUpcoming() {\n this._resetPresentUpcoming();\n const delay = this._presentUpcoming.delay;\n if (delay === false) {\n return;\n }\n this._presentUpcoming.trigger = () => {\n const currentTime = this.player().currentTime();\n const duration = this.player().duration();\n const remainingTime = duration - currentTime;\n if (remainingTime < _playlist_const__WEBPACK_IMPORTED_MODULE_4__.UPCOMING_VIDEO_TRANSITION + 0.5) {\n if (this._presentUpcoming.showTriggered) {\n this.player().trigger('upcomingvideohide');\n this._presentUpcoming.showTriggered = false;\n }\n } else if (remainingTime <= this._presentUpcoming.delay && !this._presentUpcoming.showTriggered && !this.player().loop()) {\n this.player().trigger('upcomingvideoshow');\n this._presentUpcoming.showTriggered = true;\n } else if (this._presentUpcoming.showTriggered && (remainingTime > this._presentUpcoming.delay || this.player().loop())) {\n this.player().trigger('upcomingvideohide');\n this._presentUpcoming.showTriggered = false;\n }\n };\n this._context.on('timeupdate', this._presentUpcoming.trigger);\n }\n _resetAutoAdvance() {\n if (!this._autoAdvance) {\n this._autoAdvance = {};\n }\n if (this._autoAdvance.timeout) {\n clearTimeout(this._autoAdvance.timeout);\n }\n if (this._autoAdvance.trigger) {\n this._context.off('ended', this._autoAdvance.trigger);\n }\n this._autoAdvance.timeout = null;\n this._autoAdvance.trigger = null;\n }\n _resetRecommendations() {\n if (this._recommendationsHandler) {\n this._context.off('ended', this._recommendationsHandler);\n }\n }\n _refreshRecommendations() {\n this._resetRecommendations();\n this._recommendationsHandler = () => {\n if (this.autoAdvance() === false && this._context.autoShowRecommendations()) {\n this.player().trigger('recommendationsshow');\n }\n };\n this._context.on('ended', this._recommendationsHandler);\n }\n _refreshTextTracks() {\n this.player().trigger('refreshTextTracks', this.currentSource().textTracks());\n }\n _recommendationItemBuilder(source) {\n const defaultResolver = this._defaultRecResolverCache[source.objectId];\n if (source.recommendations() && (!defaultResolver || source.recommendations() !== defaultResolver)) {\n return;\n }\n return source => ({\n source,\n action: () => this.playItem(source)\n });\n }\n currentIndex(index) {\n if (index === undefined) {\n return this._currentIndex;\n }\n if (index >= this.length() || index < 0) {\n throw new Error('Invalid playlist index.');\n }\n this._currentIndex = index;\n const current = this.currentSource();\n const itemBuilder = this._recommendationItemBuilder(current);\n if (!current.recommendations()) {\n current.recommendations(this._defaultRecommendationsResolver(current));\n }\n\n // Extract source options for analytics\n const sourceOptions = current.getInitOptions ? current.getInitOptions() : {};\n this._context.source(current, {\n ...sourceOptions,\n recommendationOptions: {\n disableAutoShow: true,\n itemBuilder\n }\n });\n const eventData = {\n playlist: this,\n current,\n next: this.next()\n };\n this.player().trigger('playlistitemchanged', eventData);\n this._refreshRecommendations();\n this._refreshTextTracks();\n return current;\n }\n _defaultRecommendationsResolver(source) {\n const defaultResolver = this._defaultRecResolverCache[source.objectId];\n if (defaultResolver) {\n return defaultResolver;\n }\n this._defaultRecResolverCache[source.objectId] = () => {\n let index = this.list().indexOf(source);\n const items = [];\n const numOfItems = Math.min(4, this.length() - 1);\n while (items.length < numOfItems) {\n index = this.nextIndex(index);\n if (index === -1) {\n break;\n }\n const source = this.list()[index];\n items.push(source);\n }\n return items;\n };\n return this._defaultRecResolverCache[source.objectId];\n }\n buildSource(source) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this._context.buildSource(source, options);\n }\n enqueue(source) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const src = source instanceof plugins_cloudinary_models_video_source_video_source__WEBPACK_IMPORTED_MODULE_0__[\"default\"] ? source : this.buildSource(source, options);\n this._sources.push(src);\n return src;\n }\n playItem(item) {\n let index = this.list().indexOf(item);\n if (index === -1) {\n throw new Error('Invalid playlist item.');\n }\n this.playAtIndex(index);\n }\n playAtIndex(index) {\n this.currentIndex(index);\n this.player().play();\n return this.currentSource();\n }\n currentSource() {\n return this.list()[this.currentIndex()];\n }\n removeAt(index) {\n if (index >= this.length() || index < 0) {\n throw new Error('Invalid playlist index.');\n }\n this._sources.splice(index, 1);\n return this;\n }\n repeat(repeat) {\n if (repeat === undefined) {\n return this._repeat;\n }\n this._repeat = !!repeat;\n return this._repeat;\n }\n first() {\n return this.list()[0];\n }\n last() {\n return this.list()[this.length() - 1];\n }\n next() {\n const nextIndex = this.nextIndex();\n if (nextIndex === -1) {\n return null;\n }\n return this.list()[nextIndex];\n }\n nextIndex(index) {\n index = index !== undefined ? index : this.currentIndex();\n if (index >= this.length() || index < 0) {\n throw new Error('Invalid playlist index.');\n }\n const isLast = index === this.length() - 1;\n let nextIndex = index + 1;\n if (isLast) {\n if (this.repeat()) {\n nextIndex = 0;\n } else {\n return -1;\n }\n }\n return nextIndex;\n }\n previousIndex() {\n if (this.isFirst()) {\n return -1;\n }\n return this.currentIndex() - 1;\n }\n playFirst() {\n return this.playAtIndex(0);\n }\n playLast() {\n const lastIndex = this.list().length - 1;\n return this.playAtIndex(lastIndex);\n }\n isLast() {\n return this.currentIndex() >= this.length() - 1;\n }\n isFirst() {\n return this.currentIndex() === 0;\n }\n length() {\n return this.list().length;\n }\n playNext() {\n let nextIndex = this.nextIndex();\n if (nextIndex === -1) {\n return null;\n }\n return this.playAtIndex(nextIndex);\n }\n playPrevious() {\n let previousIndex = this.previousIndex();\n if (previousIndex === -1) {\n return null;\n }\n return this.playAtIndex(previousIndex);\n }\n playlistByTag = (() => {\n var _this = this;\n return function (tag) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return _this.player().sourcesByTag(tag, options).then(sources => _this.player().playlist(sources, options));\n };\n })();\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Playlist);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/playlist/ui/playlist.js?");
|
|
178
178
|
|
|
179
179
|
/***/ }),
|
|
180
180
|
|
|
@@ -185,7 +185,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
185
185
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
186
186
|
|
|
187
187
|
"use strict";
|
|
188
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _thumbnail_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./thumbnail.scss */ \"./plugins/playlist/ui/thumbnail/thumbnail.scss\");\n\n\n\n// Get the ClickableComponent base class from Video.js\nconst ClickableComponent = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('ClickableComponent');\nconst THUMB_DEFAULT_WIDTH = 300;\nconst DEFAULT_OPTIONS = {\n item: null,\n transformation: {\n width: THUMB_DEFAULT_WIDTH,\n aspect_ratio: '16:9',\n crop: 'pad',\n background: 'black'\n }\n};\nclass Thumbnail extends ClickableComponent {\n constructor(player, initOptions) {\n const options = video_js__WEBPACK_IMPORTED_MODULE_0___default().obj.merge(DEFAULT_OPTIONS, initOptions);\n super(player, options);\n }\n getItem() {\n return this.options_.item;\n }\n getTitle() {\n return this.getItem().info().title;\n }\n getDuration() {\n return ' '; // this.getItem().info().title;\n }\n getThumbnail() {\n return this.getItem().poster().url({\n transformation: this.options_.transformation\n });\n }\n handleClick(e) {\n e.preventDefault();\n }\n createControlTextEl() {\n return;\n }\n createEl() {\n let tag = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'a';\n const el = super.createEl(tag, {\n className: 'cld-thumbnail',\n href: '#'\n });\n const img = super.createEl('img', {\n className: 'cld-thumbnail-img',\n src: this.getThumbnail()\n });\n el.appendChild(img);\n el.style.backgroundImage =
|
|
188
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _thumbnail_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./thumbnail.scss */ \"./plugins/playlist/ui/thumbnail/thumbnail.scss\");\n\n\n\n// Get the ClickableComponent base class from Video.js\nconst ClickableComponent = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('ClickableComponent');\nconst THUMB_DEFAULT_WIDTH = 300;\nconst DEFAULT_OPTIONS = {\n item: null,\n transformation: {\n width: THUMB_DEFAULT_WIDTH,\n aspect_ratio: '16:9',\n crop: 'pad',\n background: 'black'\n }\n};\nclass Thumbnail extends ClickableComponent {\n constructor(player, initOptions) {\n const options = video_js__WEBPACK_IMPORTED_MODULE_0___default().obj.merge(DEFAULT_OPTIONS, initOptions);\n super(player, options);\n }\n getItem() {\n return this.options_.item;\n }\n getTitle() {\n return this.getItem().info().title;\n }\n getDuration() {\n return ' '; // this.getItem().info().title;\n }\n getThumbnail() {\n return this.getItem().poster().url({\n transformation: this.options_.transformation\n });\n }\n handleClick(e) {\n e.preventDefault();\n }\n createControlTextEl() {\n return;\n }\n createEl() {\n let tag = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'a';\n const el = super.createEl(tag, {\n className: 'cld-thumbnail',\n href: '#'\n });\n const img = super.createEl('img', {\n className: 'cld-thumbnail-img',\n src: this.getThumbnail()\n });\n el.appendChild(img);\n el.style.backgroundImage = `url('${this.getThumbnail()}')`;\n return el;\n }\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Thumbnail);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/playlist/ui/thumbnail/thumbnail.js?");
|
|
189
189
|
|
|
190
190
|
/***/ }),
|
|
191
191
|
|
package/dist/playlist.min.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Cloudinary Video Player v3.6.4-edge.
|
|
3
|
-
* Built on
|
|
2
|
+
* Cloudinary Video Player v3.6.4-edge.1
|
|
3
|
+
* Built on 2026-01-04T08:13:13.231Z
|
|
4
4
|
* https://github.com/cloudinary/cloudinary-video-player
|
|
5
5
|
*/
|
|
6
|
-
(self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[33],{5826:(t,e,r)=>{"use strict";r.d(e,{default:()=>lt});var i=r(5871),n=r(1104),s=r(1865),o=r(3686),l=r.n(o),a=r(4679),c=r.n(a);const u=[1,4,5,6,7,10,11],p=["created_at","updated_at"],d=t=>{const e={};return c()(t)?(Object.keys(t).reduce((e,r)=>{const i=l()(r);return-1!==p.indexOf(r)?e[i]=new Date(function(t){let e=0,r=0,i=0;if(r=/^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/.exec(t)){for(let t,e=0;t=u[e];++e)r[t]=+r[t]||0;r[2]=(+r[2]||1)-1,r[3]=+r[3]||1,"Z"!==r[8]&&void 0!==r[9]&&(i=60*r[10]+r[11],"+"===r[9]&&(i=0-i)),e=Date.UTC(r[1],r[2],r[3],r[4],r[5]+i,r[6],r[7])}else e=NaN;return e}(t[r])):e[i]=d(t[r]),e},e),e):Array.isArray(t)?t.map(t=>d(t)):t};var h=r(5381),m=r(4466),g=r.n(m),y=r(6673),f=r.n(y);function v(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var i=r.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}const _=f().dom||f(),b=f().getComponent("Component"),C=f().getComponent("ClickableComponent");class x extends C{constructor(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),i=1;i<e;i++)r[i-1]=arguments[i];super(t,...r),v(this,"_hide",()=>{this.removeClass(x.VJS_UPCOMING_VIDEO_SHOW)}),v(this,"_onPlaylistItemChange",(t,e)=>{this._hide(),this._disableTransition(()=>{e.next&&this.setItem(e.next)})}),v(this,"_show",()=>{const t=this.player().ima,e="object"===t&&t.getAdsManager();e&&e.getCurrentAd()&&!e.getCurrentAd().isLinear()||this.addClass(x.VJS_UPCOMING_VIDEO_SHOW)}),this._setEvents(t)}_setEvents(t){t.on(n.f.UP_COMING_VIDEO_SHOW,this._show),t.on(n.f.UP_COMING_VIDEO_HIDE,this._hide),t.on(n.f.PLAYLIST_ITEM_CHANGED,this._onPlaylistItemChange)}_disableTransition(t){this.addClass(x.DISABLE_TRANSITION_CLASS),t(),this.removeClass(x.DISABLE_TRANSITION_CLASS)}setTitle(t){this.getChild("upcomingVideoOverlayContent").getChild("upcomingVideoOverlayBar").getChild("upcomingVideoOverlayTitle").setContent(t.info().title||t.publicId())}setItem(t){this._source=t;const e=parseInt(window.getComputedStyle(this.el(),null).getPropertyValue("max-width"),10),r={crop:"pad",background:"auto:predominant",width:e,height:Math.round(e*(9/16))},i=this.getChild("upcomingVideoOverlayContent");this.setTitle(t),i.el().style.backgroundImage='url("'.concat(this._source.poster().url({transformation:r}),'")')}handleClick(){super.handleClick(event),this.player().cloudinary.playlist().playNext()}createEl(){return super.createEl("div",{className:"vjs-upcoming-video"})}}v(x,"DISABLE_TRANSITION_CLASS","disable-transition"),v(x,"VJS_UPCOMING_VIDEO_SHOW","vjs-upcoming-video-show");class w extends b{createEl(){return super.createEl("div",{className:"upcoming-video-overlay aspect-ratio-content"})}}class I extends b{createEl(){return super.createEl("div",{className:"vjs-upcoming-video-bar"})}}x.prototype.options_={children:["upcomingVideoOverlayContent"]},f().registerComponent("upcomingVideoOverlay",x),w.prototype.options_={children:["upcomingVideoOverlayBar"]},f().registerComponent("upcomingVideoOverlayContent",w),I.prototype.options_={children:["upcomingVideoOverlayTitle","playlistNextButton"]},f().registerComponent("upcomingVideoOverlayBar",I),f().registerComponent("upcomingVideoOverlayTitle",class extends b{setContent(t){this._contentSpan.innerText=t}createEl(){const t=super.createEl("div",{className:"vjs-control vjs-upcoming-video-title"}),e=_.createEl("div",{className:"vjs-upcoming-video-title-display",innerHTML:'<span class="vjs-control-text">Next up</span>Next up: '});return this._contentSpan=_.createEl("span",{className:"vjs-upcoming-video-title-display-label"}),e.appendChild(this._contentSpan),t.appendChild(e),t}});const O=f().getComponent("ClickableComponent");const P=class extends O{constructor(t,e){super(t,e);const r=e.type;if(!r&&"previous"!==r&&"next"!==r)throw new Error("Type must be either 'previous' or 'next'")}createEl(){const t=this.options_.type,e="vjs-icon-".concat(t,"-item");return f().dom.createEl("button",{className:"vjs-control vjs-playlist-button vjs-button ".concat(e),ariaLabel:"Playlist ".concat(t," item")})}};class E extends P{constructor(t){super(t,{type:"next"})}handleClick(t){t.stopPropagation(),super.handleClick(t),this.player().cloudinary.playlist().playNext()}}f().registerComponent("PlaylistNextButton",E);class A extends P{constructor(t){super(t,{type:"previous"})}handleClick(t){super.handleClick(t),this.player().cloudinary.playlist().playPrevious()}}f().registerComponent("PlaylistPreviousButton",A);const j={fluid:!1,show:!0,direction:"vertical",total:4,selector:!1,renderTo:[]};function T(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,i)}return r}function S(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?T(Object(r),!0).forEach(function(e){N(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):T(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function N(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var i=r.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}const U=class{constructor(t){var e=this;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],{repeat:i=!1,autoAdvance:n=!1,presentUpcoming:s=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};N(this,"playlistByTag",function(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.player().sourcesByTag(t,r).then(t=>e.player().playlist(t,r))}),this._context=t,this._sources=[],this._defaultRecResolverCache={},this._currentIndex=null,this._recommendationsHandler=null,this._autoAdvance=null,this._presentUpcoming=null,this.addUiComponents(),this.resetState=()=>{this.repeat(i),this.autoAdvance(n),this.presentUpcoming(s)},r.forEach(t=>this.enqueue(t)),this.resetState()}list(){return this._sources}player(){return this._context.player}addUiComponents(){const t=this.player().getChild("ControlBar"),e=t.children();t.addChild("playlistPreviousButton",{},e.findIndex(t=>"PlayToggle"===t.name_)),t.addChild("playlistNextButton",{},e.findIndex(t=>"PlayToggle"===t.name_)+1),this.player().addChild("upcomingVideoOverlay")}presentUpcoming(t){if(this._presentUpcoming=this._presentUpcoming||{},void 0===t)return this._presentUpcoming.delay;if(!0===t)t=10;else if(!1===t)t=!1;else if(!g()(t)||t<0)throw new Error("presentUpcoming 'delay' must be either a boolean or a positive integer.");return this._presentUpcoming.delay=t,this._setupPresentUpcoming(),this._presentUpcoming.delay}autoAdvance(t){if(this._autoAdvance=this._autoAdvance||{},void 0===t)return this._autoAdvance.delay;if(!0===t)t=0;else if(!1===t)t=!1;else if(!g()(t)||t<0)throw new Error("Auto advance 'delay' must be either a boolean or a positive integer.");return this._autoAdvance.delay=t,this._setupAutoAdvance(),this._autoAdvance.delay}_setupAutoAdvance(){this._resetAutoAdvance();const t=this._autoAdvance.delay;if(!1===t)return;this._autoAdvance={delay:t,trigger:()=>{this.player().ended()&&(this._autoAdvance.timeout=setTimeout(()=>{this.playNext()},1e3*t))}},this._context.on("ended",this._autoAdvance.trigger)}dispose(){this._resetAutoAdvance(),this._resetPresentUpcoming(),this._resetRecommendations()}_resetPresentUpcoming(){this.player().trigger("upcomingvideohide"),this._presentUpcoming||(this._presentUpcoming={}),this._presentUpcoming.trigger&&this._context.off("timeupdate",this._presentUpcoming.trigger),this._presentUpcoming.trigger=null,this._presentUpcoming.showTriggered=!1}_setupPresentUpcoming(){this._resetPresentUpcoming();!1!==this._presentUpcoming.delay&&(this._presentUpcoming.trigger=()=>{const t=this.player().currentTime(),e=this.player().duration()-t;e<1.5?this._presentUpcoming.showTriggered&&(this.player().trigger("upcomingvideohide"),this._presentUpcoming.showTriggered=!1):e<=this._presentUpcoming.delay&&!this._presentUpcoming.showTriggered&&!this.player().loop()?(this.player().trigger("upcomingvideoshow"),this._presentUpcoming.showTriggered=!0):this._presentUpcoming.showTriggered&&(e>this._presentUpcoming.delay||this.player().loop())&&(this.player().trigger("upcomingvideohide"),this._presentUpcoming.showTriggered=!1)},this._context.on("timeupdate",this._presentUpcoming.trigger))}_resetAutoAdvance(){this._autoAdvance||(this._autoAdvance={}),this._autoAdvance.timeout&&clearTimeout(this._autoAdvance.timeout),this._autoAdvance.trigger&&this._context.off("ended",this._autoAdvance.trigger),this._autoAdvance.timeout=null,this._autoAdvance.trigger=null}_resetRecommendations(){this._recommendationsHandler&&this._context.off("ended",this._recommendationsHandler)}_refreshRecommendations(){this._resetRecommendations(),this._recommendationsHandler=()=>{!1===this.autoAdvance()&&this._context.autoShowRecommendations()&&this.player().trigger("recommendationsshow")},this._context.on("ended",this._recommendationsHandler)}_refreshTextTracks(){this.player().trigger("refreshTextTracks",this.currentSource().textTracks())}_recommendationItemBuilder(t){const e=this._defaultRecResolverCache[t.objectId];if(!t.recommendations()||e&&t.recommendations()===e)return t=>({source:t,action:()=>this.playItem(t)})}currentIndex(t){if(void 0===t)return this._currentIndex;if(t>=this.length()||t<0)throw new Error("Invalid playlist index.");this._currentIndex=t;const e=this.currentSource(),r=this._recommendationItemBuilder(e);e.recommendations()||e.recommendations(this._defaultRecommendationsResolver(e));const i=e.getInitOptions?e.getInitOptions():{};this._context.source(e,S(S({},i),{},{recommendationOptions:{disableAutoShow:!0,itemBuilder:r}}));const n={playlist:this,current:e,next:this.next()};return this.player().trigger("playlistitemchanged",n),this._refreshRecommendations(),this._refreshTextTracks(),e}_defaultRecommendationsResolver(t){const e=this._defaultRecResolverCache[t.objectId];return e||(this._defaultRecResolverCache[t.objectId]=()=>{let e=this.list().indexOf(t);const r=[],i=Math.min(4,this.length()-1);for(;r.length<i&&(e=this.nextIndex(e),-1!==e);){const t=this.list()[e];r.push(t)}return r},this._defaultRecResolverCache[t.objectId])}buildSource(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this._context.buildSource(t,e)}enqueue(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=t instanceof h.A?t:this.buildSource(t,e);return this._sources.push(r),r}playItem(t){let e=this.list().indexOf(t);if(-1===e)throw new Error("Invalid playlist item.");this.playAtIndex(e)}playAtIndex(t){return this.currentIndex(t),this.player().play(),this.currentSource()}currentSource(){return this.list()[this.currentIndex()]}removeAt(t){if(t>=this.length()||t<0)throw new Error("Invalid playlist index.");return this._sources.splice(t,1),this}repeat(t){return void 0===t||(this._repeat=!!t),this._repeat}first(){return this.list()[0]}last(){return this.list()[this.length()-1]}next(){const t=this.nextIndex();return-1===t?null:this.list()[t]}nextIndex(t){if((t=void 0!==t?t:this.currentIndex())>=this.length()||t<0)throw new Error("Invalid playlist index.");let e=t+1;if(t===this.length()-1){if(!this.repeat())return-1;e=0}return e}previousIndex(){return this.isFirst()?-1:this.currentIndex()-1}playFirst(){return this.playAtIndex(0)}playLast(){const t=this.list().length-1;return this.playAtIndex(t)}isLast(){return this.currentIndex()>=this.length()-1}isFirst(){return 0===this.currentIndex()}length(){return this.list().length}playNext(){let t=this.nextIndex();return-1===t?null:this.playAtIndex(t)}playPrevious(){let t=this.previousIndex();return-1===t?null:this.playAtIndex(t)}},L=(t,e)=>(t.parentNode.insertBefore(e,t),e.appendChild(t),e);var D=r(3066);function k(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,i)}return r}function R(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?k(Object(r),!0).forEach(function(e){V(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):k(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function V(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var i=r.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}const B=f().dom||f(),H=f().getComponent("Component"),F={wrap:!1};class M extends H{constructor(t,e){const r=R(R({},F),e);super(t,r),this.player_=t;const i=(t,e)=>{this.options_.fluid=e,this.removeCls(),this.setCls()},s=()=>{const t=this.el();this.videoWrap_=B.createEl("div",{className:"cld-plw-col-player"}),this.contentEl_=this.contentEl_=B.createEl("div",{className:"cld-plw-col-list"}),L(this.player().el(),t),t.appendChild(this.videoWrap_),t.appendChild(this.contentEl_),L(this.player().el(),this.videoWrap_)};r.wrap&&s(),t.on(n.f.FLUID,i),this.addChild(n.f.PLAYLIST_PANEL,this.options_),this.setCls(),this.dispose=()=>{this.removeLayout(),super.dispose(),t.off(n.f.FLUID,i)}}getCls(){let t=["cld-video-player","cld-plw-layout"];return t.push((0,D.skinClassPrefix)(this.player())),t.push((0,D.playerClassPrefix)(this.player())),this.options_.fluid&&t.push("cld-plw-layout-fluid"),t}setCls(){this.removeClass((0,D.skinClassPrefix)(this.player())),this.getCls().forEach(t=>{this.addClass(t)})}removeCls(){this.getCls().forEach(t=>{this.removeClass(t)})}update(t,e){this.options(e),this.removeChild("PlaylistPanel"),this.addChild("PlaylistPanel",this.options_),this.trigger("playlistlayoutupdate")}removeLayout(){const t=this.el().parentElement;t&&t.appendChild(this.player().el())}createEl(){const t=super.createEl("div");return t.style.fontFamily=this.player().el().style.fontFamily,t}}f().registerComponent("playlistLayout",M);const W=M;const G=class extends W{constructor(t,e){e.wrap=!0,super(t,e)}getCls(){const t=super.getCls();return t.push("cld-plw-horizontal"),t}};const z=class extends W{constructor(t,e){e.wrap=!0,super(t,e)}getCls(){const t=super.getCls();return t.push("cld-plw-vertical"),t}};const Y=class extends W{getCls(){let t=super.getCls();return t.push("cld-plw-custom"),t}createEl(){const t=super.createEl();return this.options_.renderTo.appendChild(t),t}};function $(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,i)}return r}function q(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?$(Object(r),!0).forEach(function(e){J(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):$(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function J(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var i=r.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}const Z=class{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=((t,e)=>{const r=q(q({},j),e);if(r.show&&"string"==typeof r.selector&&(r.useDefaultLayout=!1,r.useCustomLayout=!0,r.renderTo=document.querySelector(r.selector),r.showAll=!0,0===!r.renderTo.length))throw new Error("Couldn't find element(s) by selector '".concat(r.selector,"' for playlist"));return r.show&&!r.selector&&(r.useDefaultLayout=!0,r.useCustomLayout=!1),r.direction="horizontal"===r.direction.toLowerCase()?"horizontal":"vertical",r.skin=t.options_.skin,r})(t,e),this.options_=e,this.player_=t,this.render();const r=(t,e)=>{this.options_.fluid=e};t.on(n.f.FLUID,r),this.options=e=>e?(this.options_=f().obj.merge(this.options_,e),t.trigger("playlistwidgetoption",this.options_.playlistWidget),this.options_):this.options_,this.dispose=()=>{this.layout_.dispose(),t.off(n.f.FLUID,r)}}render(){this.options_.useDefaultLayout&&("horizontal"===this.options_.direction?this.layout_=new G(this.player_,this.options_):this.layout_=new z(this.player_,this.options_)),this.options_.useCustomLayout&&(this.layout_=new Y(this.player_,this.options_))}getLayout(){return this.layout_}update(t,e){this.options(e),"direction"===t?(this.layout_.removeLayout(),this.layout_.dispose(),this.render()):this.layout_.update(t,this.options_)}setSkin(){this.layout_.setCls()}total(){const t=parseInt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:j.total,10);return t!==this.options_.total&&"number"==typeof t&&t>0&&this.update("total",{total:t}),this}direction(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:j.direction;return"horizontal"!==t&&"vertical"!==t||this.update("direction",{direction:t}),this}},K=f().getComponent("ClickableComponent"),Q={item:null,transformation:{width:300,aspect_ratio:"16:9",crop:"pad",background:"black"}};const X=class extends K{constructor(t,e){super(t,f().obj.merge(Q,e))}getItem(){return this.options_.item}getTitle(){return this.getItem().info().title}getDuration(){return" "}getThumbnail(){return this.getItem().poster().url({transformation:this.options_.transformation})}handleClick(t){t.preventDefault()}createControlTextEl(){}createEl(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"a";const e=super.createEl(t,{className:"cld-thumbnail",href:"#"}),r=super.createEl("img",{className:"cld-thumbnail-img",src:this.getThumbnail()});return e.appendChild(r),e.style.backgroundImage="url('".concat(this.getThumbnail(),"')"),e}},tt=f().dom||f(),et={source:null,next:!1};class rt extends X{constructor(t,e){super(t,f().obj.merge(et,e))}handleClick(t){super.handleClick(t),this.play()}play(){const t=this.getItem(),e=this.player().cloudinary.playlist().list().indexOf(t);if(-1===e)throw new Error("Invalid playlist item...");this.player().cloudinary.playlist().playAtIndex(e)}isCurrent(){return this.options_.current}getTitle(){return super.getTitle()}getDuration(){return super.getDuration()}createEl(){const t=super.createEl();t.classList.add("cld-plw-panel-item");const e=tt.createEl("div",{className:"cld-plw-item-info-wrap"}),r=tt.createEl("div",{className:"cld-plw-item-title"});if(this.isCurrent()){t.classList.add("cld-plw-panel-item-active");const e=tt.createEl("span",{className:"cld-plw-item-title-curr"},{},"Now Playing: ");r.appendChild(e)}const i=tt.createEl("span",{className:"cld-plw-item-title"},{},this.getTitle());r.appendChild(i);const n=tt.createEl("div",{className:"cld-plw-item-duration"},{},this.getDuration());return e.appendChild(r),e.appendChild(n),t&&t.appendChild(e),t.appendChild(e),t}}f().registerComponent("playlistPanelItem",rt);const it=rt,nt=f().getComponent("Component");class st extends nt{constructor(t){super(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{});const e=()=>{this.render()};t.on(n.f.PLAYLIST_ITEM_CHANGED,e),this.render(),this.dispose=()=>{super.dispose(),t.off(n.f.PLAYLIST_ITEM_CHANGED,e)}}createEl(){const t=super.createEl();return t.classList.add("cld-plw-panel"),t}removeAll(){const t=this.children();for(let e=t.length-1;e>=0;--e)this.removeChild(t[e])}getItems(){const t=this.player().cloudinary.playlist(),e=t._repeat;if(this.options_.showAll)return t.list();const r=[],i=this.options_.total;let n=t.currentIndex(),s=t.list()[n];for(r.push(s);r.length<i;){if(n=t.nextIndex(n),-1===n){if(!e&&r.length>0)break;n=0}s=t.list()[n],r.push(s)}return r}render(){const t=this.getItems();this.removeAll(),t.forEach((t,e)=>{const r=new it(this.player(),f().obj.merge(this.options_,{item:t,next:1===e,current:0===e}));this.addChild(r)})}}f().registerComponent("playlistPanel",st);const ot={format:"json",resource_type:"video",type:"list"},lt=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=(0,i.sliceProperties)(e,"chainTarget").chainTarget;let o=null,l=null,a=null;const c=()=>{t.on(n.f.PLAYLIST_CREATED,()=>{var r;a&&a.dispose(),0!=(null===(r=e.playlistWidget)||void 0===r?void 0:r.show)&&(t.fluid_&&(e.playlistWidget.fluid=!0),t.cloudinary.fontFace&&(e.playlistWidget.fontFace=t.cloudinary.fontFace),a=new Z(t,e.playlistWidget))})},u=(e,r)=>{e instanceof U?(o=e,o.resetState(),o.currentIndex(o.currentIndex())):(o=new U(t.cloudinary,e,r),o.currentIndex(0)),c(),l=(()=>{const e=()=>{o&&!o.currentSource().contains(t.currentSource())&&t.disposePlaylist()};return t.on("cldsourcechanged",e),e})(),t.addClass("vjs-playlist")};return t.cloudinary.sourcesByTag=async function(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=(0,s.KA)(e,Object.assign({},t.cloudinary.cloudinaryConfig(),ot)),n=await fetch(i),o=await n.json(),l=d(o.resources);r.sorter&&l.sort(r.sorter);return l.map(e=>{let i=r.sourceParams||{};"function"==typeof i&&(i=i(e));const n=e.context&&e.context.custom||{},s=Object.assign({info:n},i,{publicId:e.publicId});return t.cloudinary.buildSource(s)})},function(e){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return void 0===e?o:(o&&(t.removeClass("vjs-playlist"),o=void 0,t.playlist().dispose(),t.off("cldsourcechanged",l)),u(e,i),t.trigger("playlistcreated"),r)}}},8812:(t,e,r)=>{var i=r(2140),n=/^\s+/;t.exports=function(t){return t?t.slice(0,i(t)+1).replace(n,""):t}},2140:t=>{var e=/\s/;t.exports=function(t){for(var r=t.length;r--&&e.test(t.charAt(r)););return r}},4466:(t,e,r)=>{var i=r(1826);t.exports=function(t){return"number"==typeof t&&t==i(t)}},4764:(t,e,r)=>{var i=r(5378),n=1/0;t.exports=function(t){return t?(t=i(t))===n||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}},1826:(t,e,r)=>{var i=r(4764);t.exports=function(t){var e=i(t),r=e%1;return e==e?r?e-r:e:0}},5378:(t,e,r)=>{var i=r(8812),n=r(8953),s=r(5414),o=/^[-+]0x[0-9a-f]+$/i,l=/^0b[01]+$/i,a=/^0o[0-7]+$/i,c=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(s(t))return NaN;if(n(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=n(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=i(t);var r=l.test(t);return r||a.test(t)?c(t.slice(2),r?2:8):o.test(t)?NaN:+t}}}]);
|
|
6
|
+
(self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[33],{5826:(t,e,s)=>{"use strict";s.d(e,{default:()=>K});var i=s(5871),n=s(1104),r=s(1865),o=s(3686),l=s.n(o),a=s(4679),c=s.n(a);const d=[1,4,5,6,7,10,11],p=["created_at","updated_at"],h=t=>{const e={};return c()(t)?(Object.keys(t).reduce((e,s)=>{const i=l()(s);return-1!==p.indexOf(s)?e[i]=new Date(function(t){let e=0,s=0,i=0;if(s=/^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/.exec(t)){for(let t,e=0;t=d[e];++e)s[t]=+s[t]||0;s[2]=(+s[2]||1)-1,s[3]=+s[3]||1,"Z"!==s[8]&&void 0!==s[9]&&(i=60*s[10]+s[11],"+"===s[9]&&(i=0-i)),e=Date.UTC(s[1],s[2],s[3],s[4],s[5]+i,s[6],s[7])}else e=NaN;return e}(t[s])):e[i]=h(t[s]),e},e),e):Array.isArray(t)?t.map(t=>h(t)):t};var u=s(5381),m=s(4466),g=s.n(m),y=s(6673),_=s.n(y);const v=_().dom||_(),f=_().getComponent("Component"),C=_().getComponent("ClickableComponent");class x extends C{static DISABLE_TRANSITION_CLASS="disable-transition";static VJS_UPCOMING_VIDEO_SHOW="vjs-upcoming-video-show";constructor(t){for(var e=arguments.length,s=new Array(e>1?e-1:0),i=1;i<e;i++)s[i-1]=arguments[i];super(t,...s),this._setEvents(t)}_setEvents(t){t.on(n.f.UP_COMING_VIDEO_SHOW,this._show),t.on(n.f.UP_COMING_VIDEO_HIDE,this._hide),t.on(n.f.PLAYLIST_ITEM_CHANGED,this._onPlaylistItemChange)}_hide=()=>{this.removeClass(x.VJS_UPCOMING_VIDEO_SHOW)};_disableTransition(t){this.addClass(x.DISABLE_TRANSITION_CLASS),t(),this.removeClass(x.DISABLE_TRANSITION_CLASS)}_onPlaylistItemChange=(t,e)=>{this._hide(),this._disableTransition(()=>{e.next&&this.setItem(e.next)})};_show=()=>{const t=this.player().ima,e="object"===t&&t.getAdsManager();e&&e.getCurrentAd()&&!e.getCurrentAd().isLinear()||this.addClass(x.VJS_UPCOMING_VIDEO_SHOW)};setTitle(t){this.getChild("upcomingVideoOverlayContent").getChild("upcomingVideoOverlayBar").getChild("upcomingVideoOverlayTitle").setContent(t.info().title||t.publicId())}setItem(t){this._source=t;const e=parseInt(window.getComputedStyle(this.el(),null).getPropertyValue("max-width"),10),s={crop:"pad",background:"auto:predominant",width:e,height:Math.round(e*(9/16))},i=this.getChild("upcomingVideoOverlayContent");this.setTitle(t),i.el().style.backgroundImage=`url("${this._source.poster().url({transformation:s})}")`}handleClick(){super.handleClick(event),this.player().cloudinary.playlist().playNext()}createEl(){return super.createEl("div",{className:"vjs-upcoming-video"})}}class I extends f{createEl(){return super.createEl("div",{className:"upcoming-video-overlay aspect-ratio-content"})}}class w extends f{createEl(){return super.createEl("div",{className:"vjs-upcoming-video-bar"})}}x.prototype.options_={children:["upcomingVideoOverlayContent"]},_().registerComponent("upcomingVideoOverlay",x),I.prototype.options_={children:["upcomingVideoOverlayBar"]},_().registerComponent("upcomingVideoOverlayContent",I),w.prototype.options_={children:["upcomingVideoOverlayTitle","playlistNextButton"]},_().registerComponent("upcomingVideoOverlayBar",w),_().registerComponent("upcomingVideoOverlayTitle",class extends f{setContent(t){this._contentSpan.innerText=t}createEl(){const t=super.createEl("div",{className:"vjs-control vjs-upcoming-video-title"}),e=v.createEl("div",{className:"vjs-upcoming-video-title-display",innerHTML:'<span class="vjs-control-text">Next up</span>Next up: '});return this._contentSpan=v.createEl("span",{className:"vjs-upcoming-video-title-display-label"}),e.appendChild(this._contentSpan),t.appendChild(e),t}});const A=_().getComponent("ClickableComponent");const E=class extends A{constructor(t,e){super(t,e);const s=e.type;if(!s&&"previous"!==s&&"next"!==s)throw new Error("Type must be either 'previous' or 'next'")}createEl(){const t=this.options_.type,e=`vjs-icon-${t}-item`;return _().dom.createEl("button",{className:`vjs-control vjs-playlist-button vjs-button ${e}`,ariaLabel:`Playlist ${t} item`})}};class T extends E{constructor(t){super(t,{type:"next"})}handleClick(t){t.stopPropagation(),super.handleClick(t),this.player().cloudinary.playlist().playNext()}}_().registerComponent("PlaylistNextButton",T);class b extends E{constructor(t){super(t,{type:"previous"})}handleClick(t){super.handleClick(t),this.player().cloudinary.playlist().playPrevious()}}_().registerComponent("PlaylistPreviousButton",b);const N={fluid:!1,show:!0,direction:"vertical",total:4,selector:!1,renderTo:[]};const S=class{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],{repeat:s=!1,autoAdvance:i=!1,presentUpcoming:n=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this._context=t,this._sources=[],this._defaultRecResolverCache={},this._currentIndex=null,this._recommendationsHandler=null,this._autoAdvance=null,this._presentUpcoming=null,this.addUiComponents(),this.resetState=()=>{this.repeat(s),this.autoAdvance(i),this.presentUpcoming(n)},e.forEach(t=>this.enqueue(t)),this.resetState()}list(){return this._sources}player(){return this._context.player}addUiComponents(){const t=this.player().getChild("ControlBar"),e=t.children();t.addChild("playlistPreviousButton",{},e.findIndex(t=>"PlayToggle"===t.name_)),t.addChild("playlistNextButton",{},e.findIndex(t=>"PlayToggle"===t.name_)+1),this.player().addChild("upcomingVideoOverlay")}presentUpcoming(t){if(this._presentUpcoming=this._presentUpcoming||{},void 0===t)return this._presentUpcoming.delay;if(!0===t)t=10;else if(!1===t)t=!1;else if(!g()(t)||t<0)throw new Error("presentUpcoming 'delay' must be either a boolean or a positive integer.");return this._presentUpcoming.delay=t,this._setupPresentUpcoming(),this._presentUpcoming.delay}autoAdvance(t){if(this._autoAdvance=this._autoAdvance||{},void 0===t)return this._autoAdvance.delay;if(!0===t)t=0;else if(!1===t)t=!1;else if(!g()(t)||t<0)throw new Error("Auto advance 'delay' must be either a boolean or a positive integer.");return this._autoAdvance.delay=t,this._setupAutoAdvance(),this._autoAdvance.delay}_setupAutoAdvance(){this._resetAutoAdvance();const t=this._autoAdvance.delay;if(!1===t)return;this._autoAdvance={delay:t,trigger:()=>{this.player().ended()&&(this._autoAdvance.timeout=setTimeout(()=>{this.playNext()},1e3*t))}},this._context.on("ended",this._autoAdvance.trigger)}dispose(){this._resetAutoAdvance(),this._resetPresentUpcoming(),this._resetRecommendations()}_resetPresentUpcoming(){this.player().trigger("upcomingvideohide"),this._presentUpcoming||(this._presentUpcoming={}),this._presentUpcoming.trigger&&this._context.off("timeupdate",this._presentUpcoming.trigger),this._presentUpcoming.trigger=null,this._presentUpcoming.showTriggered=!1}_setupPresentUpcoming(){this._resetPresentUpcoming();!1!==this._presentUpcoming.delay&&(this._presentUpcoming.trigger=()=>{const t=this.player().currentTime(),e=this.player().duration()-t;e<1.5?this._presentUpcoming.showTriggered&&(this.player().trigger("upcomingvideohide"),this._presentUpcoming.showTriggered=!1):e<=this._presentUpcoming.delay&&!this._presentUpcoming.showTriggered&&!this.player().loop()?(this.player().trigger("upcomingvideoshow"),this._presentUpcoming.showTriggered=!0):this._presentUpcoming.showTriggered&&(e>this._presentUpcoming.delay||this.player().loop())&&(this.player().trigger("upcomingvideohide"),this._presentUpcoming.showTriggered=!1)},this._context.on("timeupdate",this._presentUpcoming.trigger))}_resetAutoAdvance(){this._autoAdvance||(this._autoAdvance={}),this._autoAdvance.timeout&&clearTimeout(this._autoAdvance.timeout),this._autoAdvance.trigger&&this._context.off("ended",this._autoAdvance.trigger),this._autoAdvance.timeout=null,this._autoAdvance.trigger=null}_resetRecommendations(){this._recommendationsHandler&&this._context.off("ended",this._recommendationsHandler)}_refreshRecommendations(){this._resetRecommendations(),this._recommendationsHandler=()=>{!1===this.autoAdvance()&&this._context.autoShowRecommendations()&&this.player().trigger("recommendationsshow")},this._context.on("ended",this._recommendationsHandler)}_refreshTextTracks(){this.player().trigger("refreshTextTracks",this.currentSource().textTracks())}_recommendationItemBuilder(t){const e=this._defaultRecResolverCache[t.objectId];if(!t.recommendations()||e&&t.recommendations()===e)return t=>({source:t,action:()=>this.playItem(t)})}currentIndex(t){if(void 0===t)return this._currentIndex;if(t>=this.length()||t<0)throw new Error("Invalid playlist index.");this._currentIndex=t;const e=this.currentSource(),s=this._recommendationItemBuilder(e);e.recommendations()||e.recommendations(this._defaultRecommendationsResolver(e));const i=e.getInitOptions?e.getInitOptions():{};this._context.source(e,{...i,recommendationOptions:{disableAutoShow:!0,itemBuilder:s}});const n={playlist:this,current:e,next:this.next()};return this.player().trigger("playlistitemchanged",n),this._refreshRecommendations(),this._refreshTextTracks(),e}_defaultRecommendationsResolver(t){const e=this._defaultRecResolverCache[t.objectId];return e||(this._defaultRecResolverCache[t.objectId]=()=>{let e=this.list().indexOf(t);const s=[],i=Math.min(4,this.length()-1);for(;s.length<i&&(e=this.nextIndex(e),-1!==e);){const t=this.list()[e];s.push(t)}return s},this._defaultRecResolverCache[t.objectId])}buildSource(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this._context.buildSource(t,e)}enqueue(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=t instanceof u.A?t:this.buildSource(t,e);return this._sources.push(s),s}playItem(t){let e=this.list().indexOf(t);if(-1===e)throw new Error("Invalid playlist item.");this.playAtIndex(e)}playAtIndex(t){return this.currentIndex(t),this.player().play(),this.currentSource()}currentSource(){return this.list()[this.currentIndex()]}removeAt(t){if(t>=this.length()||t<0)throw new Error("Invalid playlist index.");return this._sources.splice(t,1),this}repeat(t){return void 0===t||(this._repeat=!!t),this._repeat}first(){return this.list()[0]}last(){return this.list()[this.length()-1]}next(){const t=this.nextIndex();return-1===t?null:this.list()[t]}nextIndex(t){if((t=void 0!==t?t:this.currentIndex())>=this.length()||t<0)throw new Error("Invalid playlist index.");let e=t+1;if(t===this.length()-1){if(!this.repeat())return-1;e=0}return e}previousIndex(){return this.isFirst()?-1:this.currentIndex()-1}playFirst(){return this.playAtIndex(0)}playLast(){const t=this.list().length-1;return this.playAtIndex(t)}isLast(){return this.currentIndex()>=this.length()-1}isFirst(){return 0===this.currentIndex()}length(){return this.list().length}playNext(){let t=this.nextIndex();return-1===t?null:this.playAtIndex(t)}playPrevious(){let t=this.previousIndex();return-1===t?null:this.playAtIndex(t)}playlistByTag=(()=>{var t=this;return function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.player().sourcesByTag(e,s).then(e=>t.player().playlist(e,s))}})()},P=(t,e)=>(t.parentNode.insertBefore(e,t),e.appendChild(t),e);var U=s(3066);const L=_().dom||_(),O=_().getComponent("Component"),k={wrap:!1};class j extends O{constructor(t,e){const s={...k,...e};super(t,s),this.player_=t;const i=(t,e)=>{this.options_.fluid=e,this.removeCls(),this.setCls()},r=()=>{const t=this.el();this.videoWrap_=L.createEl("div",{className:"cld-plw-col-player"}),this.contentEl_=this.contentEl_=L.createEl("div",{className:"cld-plw-col-list"}),P(this.player().el(),t),t.appendChild(this.videoWrap_),t.appendChild(this.contentEl_),P(this.player().el(),this.videoWrap_)};s.wrap&&r(),t.on(n.f.FLUID,i),this.addChild(n.f.PLAYLIST_PANEL,this.options_),this.setCls(),this.dispose=()=>{this.removeLayout(),super.dispose(),t.off(n.f.FLUID,i)}}getCls(){let t=["cld-video-player","cld-plw-layout"];return t.push((0,U.skinClassPrefix)(this.player())),t.push((0,U.playerClassPrefix)(this.player())),this.options_.fluid&&t.push("cld-plw-layout-fluid"),t}setCls(){this.removeClass((0,U.skinClassPrefix)(this.player())),this.getCls().forEach(t=>{this.addClass(t)})}removeCls(){this.getCls().forEach(t=>{this.removeClass(t)})}update(t,e){this.options(e),this.removeChild("PlaylistPanel"),this.addChild("PlaylistPanel",this.options_),this.trigger("playlistlayoutupdate")}removeLayout(){const t=this.el().parentElement;t&&t.appendChild(this.player().el())}createEl(){const t=super.createEl("div");return t.style.fontFamily=this.player().el().style.fontFamily,t}}_().registerComponent("playlistLayout",j);const D=j;const R=class extends D{constructor(t,e){e.wrap=!0,super(t,e)}getCls(){const t=super.getCls();return t.push("cld-plw-horizontal"),t}};const V=class extends D{constructor(t,e){e.wrap=!0,super(t,e)}getCls(){const t=super.getCls();return t.push("cld-plw-vertical"),t}};const B=class extends D{getCls(){let t=super.getCls();return t.push("cld-plw-custom"),t}createEl(){const t=super.createEl();return this.options_.renderTo.appendChild(t),t}};const H=class{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e=((t,e)=>{const s={...N,...e};if(s.show&&"string"==typeof s.selector&&(s.useDefaultLayout=!1,s.useCustomLayout=!0,s.renderTo=document.querySelector(s.selector),s.showAll=!0,0===!s.renderTo.length))throw new Error(`Couldn't find element(s) by selector '${s.selector}' for playlist`);return s.show&&!s.selector&&(s.useDefaultLayout=!0,s.useCustomLayout=!1),s.direction="horizontal"===s.direction.toLowerCase()?"horizontal":"vertical",s.skin=t.options_.skin,s})(t,e),this.options_=e,this.player_=t,this.render();const s=(t,e)=>{this.options_.fluid=e};t.on(n.f.FLUID,s),this.options=e=>e?(this.options_=_().obj.merge(this.options_,e),t.trigger("playlistwidgetoption",this.options_.playlistWidget),this.options_):this.options_,this.dispose=()=>{this.layout_.dispose(),t.off(n.f.FLUID,s)}}render(){this.options_.useDefaultLayout&&("horizontal"===this.options_.direction?this.layout_=new R(this.player_,this.options_):this.layout_=new V(this.player_,this.options_)),this.options_.useCustomLayout&&(this.layout_=new B(this.player_,this.options_))}getLayout(){return this.layout_}update(t,e){this.options(e),"direction"===t?(this.layout_.removeLayout(),this.layout_.dispose(),this.render()):this.layout_.update(t,this.options_)}setSkin(){this.layout_.setCls()}total(){const t=parseInt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:N.total,10);return t!==this.options_.total&&"number"==typeof t&&t>0&&this.update("total",{total:t}),this}direction(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:N.direction;return"horizontal"!==t&&"vertical"!==t||this.update("direction",{direction:t}),this}},F=_().getComponent("ClickableComponent"),M={item:null,transformation:{width:300,aspect_ratio:"16:9",crop:"pad",background:"black"}};const W=class extends F{constructor(t,e){super(t,_().obj.merge(M,e))}getItem(){return this.options_.item}getTitle(){return this.getItem().info().title}getDuration(){return" "}getThumbnail(){return this.getItem().poster().url({transformation:this.options_.transformation})}handleClick(t){t.preventDefault()}createControlTextEl(){}createEl(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"a";const e=super.createEl(t,{className:"cld-thumbnail",href:"#"}),s=super.createEl("img",{className:"cld-thumbnail-img",src:this.getThumbnail()});return e.appendChild(s),e.style.backgroundImage=`url('${this.getThumbnail()}')`,e}},$=_().dom||_(),G={source:null,next:!1};class z extends W{constructor(t,e){super(t,_().obj.merge(G,e))}handleClick(t){super.handleClick(t),this.play()}play(){const t=this.getItem(),e=this.player().cloudinary.playlist().list().indexOf(t);if(-1===e)throw new Error("Invalid playlist item...");this.player().cloudinary.playlist().playAtIndex(e)}isCurrent(){return this.options_.current}getTitle(){return super.getTitle()}getDuration(){return super.getDuration()}createEl(){const t=super.createEl();t.classList.add("cld-plw-panel-item");const e=$.createEl("div",{className:"cld-plw-item-info-wrap"}),s=$.createEl("div",{className:"cld-plw-item-title"});if(this.isCurrent()){t.classList.add("cld-plw-panel-item-active");const e=$.createEl("span",{className:"cld-plw-item-title-curr"},{},"Now Playing: ");s.appendChild(e)}const i=$.createEl("span",{className:"cld-plw-item-title"},{},this.getTitle());s.appendChild(i);const n=$.createEl("div",{className:"cld-plw-item-duration"},{},this.getDuration());return e.appendChild(s),e.appendChild(n),t&&t.appendChild(e),t.appendChild(e),t}}_().registerComponent("playlistPanelItem",z);const Y=z,q=_().getComponent("Component");class J extends q{constructor(t){super(t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{});const e=()=>{this.render()};t.on(n.f.PLAYLIST_ITEM_CHANGED,e),this.render(),this.dispose=()=>{super.dispose(),t.off(n.f.PLAYLIST_ITEM_CHANGED,e)}}createEl(){const t=super.createEl();return t.classList.add("cld-plw-panel"),t}removeAll(){const t=this.children();for(let e=t.length-1;e>=0;--e)this.removeChild(t[e])}getItems(){const t=this.player().cloudinary.playlist(),e=t._repeat;if(this.options_.showAll)return t.list();const s=[],i=this.options_.total;let n=t.currentIndex(),r=t.list()[n];for(s.push(r);s.length<i;){if(n=t.nextIndex(n),-1===n){if(!e&&s.length>0)break;n=0}r=t.list()[n],s.push(r)}return s}render(){const t=this.getItems();this.removeAll(),t.forEach((t,e)=>{const s=new Y(this.player(),_().obj.merge(this.options_,{item:t,next:1===e,current:0===e}));this.addChild(s)})}}_().registerComponent("playlistPanel",J);const Z={format:"json",resource_type:"video",type:"list"},K=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=(0,i.sliceProperties)(e,"chainTarget").chainTarget;let o=null,l=null,a=null;const c=()=>{t.on(n.f.PLAYLIST_CREATED,()=>{a&&a.dispose(),0!=e.playlistWidget?.show&&(t.fluid_&&(e.playlistWidget.fluid=!0),t.cloudinary.fontFace&&(e.playlistWidget.fontFace=t.cloudinary.fontFace),a=new H(t,e.playlistWidget))})},d=(e,s)=>{e instanceof S?(o=e,o.resetState(),o.currentIndex(o.currentIndex())):(o=new S(t.cloudinary,e,s),o.currentIndex(0)),c(),l=(()=>{const e=()=>{o&&!o.currentSource().contains(t.currentSource())&&t.disposePlaylist()};return t.on("cldsourcechanged",e),e})(),t.addClass("vjs-playlist")};return t.cloudinary.sourcesByTag=async function(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=(0,r.KA)(e,Object.assign({},t.cloudinary.cloudinaryConfig(),Z)),n=await fetch(i),o=await n.json(),l=h(o.resources);s.sorter&&l.sort(s.sorter);return l.map(e=>{let i=s.sourceParams||{};"function"==typeof i&&(i=i(e));const n=e.context&&e.context.custom||{},r=Object.assign({info:n},i,{publicId:e.publicId});return t.cloudinary.buildSource(r)})},function(e){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return void 0===e?o:(o&&(t.removeClass("vjs-playlist"),o=void 0,t.playlist().dispose(),t.off("cldsourcechanged",l)),d(e,i),t.trigger("playlistcreated"),s)}}},8812:(t,e,s)=>{var i=s(2140),n=/^\s+/;t.exports=function(t){return t?t.slice(0,i(t)+1).replace(n,""):t}},2140:t=>{var e=/\s/;t.exports=function(t){for(var s=t.length;s--&&e.test(t.charAt(s)););return s}},4466:(t,e,s)=>{var i=s(1826);t.exports=function(t){return"number"==typeof t&&t==i(t)}},4764:(t,e,s)=>{var i=s(5378),n=1/0;t.exports=function(t){return t?(t=i(t))===n||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}},1826:(t,e,s)=>{var i=s(4764);t.exports=function(t){var e=i(t),s=e%1;return e==e?s?e-s:e:0}},5378:(t,e,s)=>{var i=s(8812),n=s(8953),r=s(5414),o=/^[-+]0x[0-9a-f]+$/i,l=/^0b[01]+$/i,a=/^0o[0-7]+$/i,c=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(r(t))return NaN;if(n(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=n(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=i(t);var s=l.test(t);return s||a.test(t)?c(t.slice(2),s?2:8):o.test(t)?NaN:+t}}}]);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Cloudinary Video Player v3.6.4-edge.
|
|
3
|
-
* Built on
|
|
2
|
+
* Cloudinary Video Player v3.6.4-edge.1
|
|
3
|
+
* Built on 2026-01-04T08:13:28.782Z
|
|
4
4
|
* https://github.com/cloudinary/cloudinary-video-player
|
|
5
5
|
*/
|
|
6
6
|
"use strict";
|
|
@@ -50,7 +50,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
50
50
|
\************************************************************************************/
|
|
51
51
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
52
52
|
|
|
53
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _recommendations_overlay_item__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./recommendations-overlay-item */ \"./components/recommendations-overlay/recommendations-overlay-item.js\");\n/* harmony import */ var components_component_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/component-utils */ \"./components/component-utils.js\");\n/* harmony import */ var components_component_utils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(components_component_utils__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n\n// support VJS5 & VJS6 at the same time\nconst dom = (video_js__WEBPACK_IMPORTED_MODULE_0___default().dom) || (video_js__WEBPACK_IMPORTED_MODULE_0___default());\nclass RecommendationsOverlayPrimaryItem extends _recommendations_overlay_item__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n setItem(item) {\n super.setItem(item);\n const info = this.source.info();\n this.setTitle(info.title);\n this.setSubtitle(info.subtitle);\n if (info.description) {\n const descLength = 300;\n const description = info.description.length > descLength ? info.description.substring(0, descLength) + '...' : info.description;\n this.setDescription(description);\n }\n }\n setPoster(url) {\n this.poster.style.backgroundImage =
|
|
53
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _recommendations_overlay_item__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./recommendations-overlay-item */ \"./components/recommendations-overlay/recommendations-overlay-item.js\");\n/* harmony import */ var components_component_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components/component-utils */ \"./components/component-utils.js\");\n/* harmony import */ var components_component_utils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(components_component_utils__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n\n// support VJS5 & VJS6 at the same time\nconst dom = (video_js__WEBPACK_IMPORTED_MODULE_0___default().dom) || (video_js__WEBPACK_IMPORTED_MODULE_0___default());\nclass RecommendationsOverlayPrimaryItem extends _recommendations_overlay_item__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n setItem(item) {\n super.setItem(item);\n const info = this.source.info();\n this.setTitle(info.title);\n this.setSubtitle(info.subtitle);\n if (info.description) {\n const descLength = 300;\n const description = info.description.length > descLength ? info.description.substring(0, descLength) + '...' : info.description;\n this.setDescription(description);\n }\n }\n setPoster(url) {\n this.poster.style.backgroundImage = `url('${url}')`;\n }\n setTitle(text) {\n components_component_utils__WEBPACK_IMPORTED_MODULE_2___default().setText(this.title, text);\n this.setAriaCheck(this.title, !!text);\n }\n setSubtitle(text) {\n components_component_utils__WEBPACK_IMPORTED_MODULE_2___default().setText(this.subtitle, text);\n this.setAriaCheck(this.subtitle, !!text);\n }\n setDescription(text) {\n components_component_utils__WEBPACK_IMPORTED_MODULE_2___default().setText(this.description, text);\n this.setAriaCheck(this.description, !!text);\n }\n setAriaCheck(element) {\n let active = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (active) {\n element.removeAttribute('aria-hidden');\n } else {\n element.setAttribute('aria-hidden', 'true');\n }\n }\n clearItem() {\n this.setTitle('');\n this.setSubtitle('');\n this.setDescription('');\n this.poster.style.backgroundImage = null;\n }\n createEl() {\n const el = super.createEl('div', {\n className: 'vjs-recommendations-overlay-item vjs-recommendations-overlay-item-primary'\n });\n this.poster = dom.createEl('div', {\n className: 'vjs-recommendations-overlay-item-primary-image'\n });\n this.title = dom.createEl('h2', {\n ariaLabel: 'Recmmendation Title'\n });\n this.setAriaCheck(this.title, false);\n this.title.innerHTML = '';\n this.subtitle = dom.createEl('h3', {\n ariaLabel: 'Recmmendation Subtitle'\n });\n this.setAriaCheck(this.subtitle, false);\n this.subtitle.innerHTML = '';\n this.description = dom.createEl('p');\n this.setAriaCheck(this.description, false);\n this.description.innerHTML = '';\n this.content = dom.createEl('div', {\n className: 'vjs-recommendations-overlay-item-info vjs-recommendations-overlay-item-primary-content'\n });\n this.content.appendChild(this.title);\n this.content.appendChild(this.subtitle);\n this.content.appendChild(this.description);\n el.appendChild(this.poster);\n el.appendChild(this.content);\n return el;\n }\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RecommendationsOverlayPrimaryItem);\n\n//# sourceURL=webpack://cloudinary-video-player/./components/recommendations-overlay/recommendations-overlay-primary-item.js?");
|
|
54
54
|
|
|
55
55
|
/***/ }),
|
|
56
56
|
|
|
@@ -60,7 +60,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
60
60
|
\**************************************************************************************/
|
|
61
61
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
62
62
|
|
|
63
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _recommendations_overlay_item__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./recommendations-overlay-item */ \"./components/recommendations-overlay/recommendations-overlay-item.js\");\n\n\n\n// support VJS5 & VJS6 at the same time\nconst dom = (video_js__WEBPACK_IMPORTED_MODULE_0___default().dom) || (video_js__WEBPACK_IMPORTED_MODULE_0___default());\nclass RecommendationsOverlaySecondaryItem extends _recommendations_overlay_item__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n setItem(item) {\n super.setItem(item);\n this.setDuration('');\n }\n setPoster(url) {\n this.el().style.backgroundImage =
|
|
63
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _recommendations_overlay_item__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./recommendations-overlay-item */ \"./components/recommendations-overlay/recommendations-overlay-item.js\");\n\n\n\n// support VJS5 & VJS6 at the same time\nconst dom = (video_js__WEBPACK_IMPORTED_MODULE_0___default().dom) || (video_js__WEBPACK_IMPORTED_MODULE_0___default());\nclass RecommendationsOverlaySecondaryItem extends _recommendations_overlay_item__WEBPACK_IMPORTED_MODULE_1__[\"default\"] {\n setItem(item) {\n super.setItem(item);\n this.setDuration('');\n }\n setPoster(url) {\n this.el().style.backgroundImage = `url('${url}')`;\n }\n setDuration(text) {\n this.duration.innerText = text;\n }\n createEl() {\n const el = super.createEl('div', {\n className: 'vjs-recommendations-overlay-item vjs-recommendations-overlay-item-secondary'\n });\n this.title = dom.createEl('span', {\n className: 'vjs-recommendations-overlay-item-secondary-title'\n });\n this.title.innerHTML = '';\n this.duration = dom.createEl('span', {\n className: 'vjs-recommendations-overlay-item-secondary-duration'\n });\n this.duration.innerHTML = '';\n const caption = dom.createEl('div', {\n className: 'vjs-recommendations-overlay-item-info'\n });\n caption.appendChild(this.title);\n caption.appendChild(this.duration);\n el.appendChild(caption);\n return el;\n }\n handleClick() {\n super.handleClick();\n this.action();\n }\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RecommendationsOverlaySecondaryItem);\n\n//# sourceURL=webpack://cloudinary-video-player/./components/recommendations-overlay/recommendations-overlay-secondary-item.js?");
|
|
64
64
|
|
|
65
65
|
/***/ }),
|
|
66
66
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Cloudinary Video Player v3.6.4-edge.
|
|
3
|
-
* Built on
|
|
2
|
+
* Cloudinary Video Player v3.6.4-edge.1
|
|
3
|
+
* Built on 2026-01-04T08:13:13.231Z
|
|
4
4
|
* https://github.com/cloudinary/cloudinary-video-player
|
|
5
5
|
*/
|
|
6
|
-
"use strict";(self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[410],{7604:(t,
|
|
6
|
+
"use strict";(self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[410],{7604:(e,t,s)=>{s.r(t),s.d(t,{default:()=>k});var i=s(6673),n=s.n(i);const o=n().getComponent("ClickableComponent");const r=class extends o{setItem(e){const{action:t,source:s}=e;this.source=s;const i=s.info();this.setTitle(i.title||s.publicId()),this.setPoster(this.source.poster().url({transformation:{aspect_ratio:"16:9",crop:"pad",background:"black"}})),this.setAction(t)}setTitle(e){this.title.innerText=e}setAction(e){this.action=e}handleClick(){super.handleClick(),this.player().trigger("recommendationshide"),this.action()}};var a=s(7878),c=s.n(a);const l=n().dom||n();const h=class extends r{setItem(e){super.setItem(e);const t=this.source.info();if(this.setTitle(t.title),this.setSubtitle(t.subtitle),t.description){const e=300,s=t.description.length>e?t.description.substring(0,e)+"...":t.description;this.setDescription(s)}}setPoster(e){this.poster.style.backgroundImage=`url('${e}')`}setTitle(e){c().setText(this.title,e),this.setAriaCheck(this.title,!!e)}setSubtitle(e){c().setText(this.subtitle,e),this.setAriaCheck(this.subtitle,!!e)}setDescription(e){c().setText(this.description,e),this.setAriaCheck(this.description,!!e)}setAriaCheck(e){!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?e.removeAttribute("aria-hidden"):e.setAttribute("aria-hidden","true")}clearItem(){this.setTitle(""),this.setSubtitle(""),this.setDescription(""),this.poster.style.backgroundImage=null}createEl(){const e=super.createEl("div",{className:"vjs-recommendations-overlay-item vjs-recommendations-overlay-item-primary"});return this.poster=l.createEl("div",{className:"vjs-recommendations-overlay-item-primary-image"}),this.title=l.createEl("h2",{ariaLabel:"Recmmendation Title"}),this.setAriaCheck(this.title,!1),this.title.innerHTML="",this.subtitle=l.createEl("h3",{ariaLabel:"Recmmendation Subtitle"}),this.setAriaCheck(this.subtitle,!1),this.subtitle.innerHTML="",this.description=l.createEl("p"),this.setAriaCheck(this.description,!1),this.description.innerHTML="",this.content=l.createEl("div",{className:"vjs-recommendations-overlay-item-info vjs-recommendations-overlay-item-primary-content"}),this.content.appendChild(this.title),this.content.appendChild(this.subtitle),this.content.appendChild(this.description),e.appendChild(this.poster),e.appendChild(this.content),e}},d=n().dom||n();const m=class extends r{setItem(e){super.setItem(e),this.setDuration("")}setPoster(e){this.el().style.backgroundImage=`url('${e}')`}setDuration(e){this.duration.innerText=e}createEl(){const e=super.createEl("div",{className:"vjs-recommendations-overlay-item vjs-recommendations-overlay-item-secondary"});this.title=d.createEl("span",{className:"vjs-recommendations-overlay-item-secondary-title"}),this.title.innerHTML="",this.duration=d.createEl("span",{className:"vjs-recommendations-overlay-item-secondary-duration"}),this.duration.innerHTML="";const t=d.createEl("div",{className:"vjs-recommendations-overlay-item-info"});return t.appendChild(this.title),t.appendChild(this.duration),e.appendChild(t),e}handleClick(){super.handleClick(),this.action()}},p=n().getComponent("Component");const u=class extends p{setItems(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];this.clearItems(),t&&t.forEach(e=>{const t=new m(this.player());t.setItem(e),this.addChild(t)})}clearItems(){this.children().forEach(()=>{this.removeChild(this.children()[0])})}createEl(){return super.createEl("div",{className:"vjs-recommendations-overlay-item-secondary-container"})}},v=n().getComponent("Component");class y extends v{constructor(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),i=1;i<t;i++)s[i-1]=arguments[i];super(e,...s),this._primary=new h(e),this._secondaryContainer=new u(e),this.addChild(this._primary),this.addChild(this._secondaryContainer)}setItems(e){this._primary.setItem(e);for(var t=arguments.length,s=new Array(t>1?t-1:0),i=1;i<t;i++)s[i-1]=arguments[i];this._secondaryContainer.setItems(...s)}createEl(){return super.createEl("div",{className:"aspect-ratio-content"})}}const C=class extends v{constructor(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),i=1;i<t;i++)s[i-1]=arguments[i];super(e,...s),this._content=new y(e),this.addChild(this._content)}setItems(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),i=1;i<t;i++)s[i-1]=arguments[i];this._content.setItems(e,...s)}clearItems(){this._content._primary.clearItem(),this._content._secondaryContainer.clearItems()}createEl(){return super.createEl("div",{className:"vjs-recommendations-overlay-content"})}},g=n().getComponent("ClickableComponent");const I=class extends g{createEl(){return super.createEl("span",{className:"vjs-recommendations-overlay-hide vjs-icon-close"})}handleClick(){this.options_.clickHandler()}},b=n().getComponent("Component");class E extends b{constructor(e,t){for(var s=arguments.length,i=new Array(s>2?s-2:0),n=2;n<s;n++)i[n-2]=arguments[n];super(e,...i),this._content=new C(e),this.addChild(this._content),this.addChild(new I(e,{clickHandler:()=>{this.close()}},...i)),this.setEvents(e),this.doNotOpen=!1}setEvents(e){this.on(e,"recommendationschanged",(e,t)=>{this.setItems(...t.items)}),this.on(e,"recommendationsnoshow",this.setDoNotOpen),this.on(e,"recommendationsshow",this.open),this.on(e,"recommendationshide",this.close),this.on(e,"cldsourcechanged",()=>{this.clearItems(),this.close()})}setDoNotOpen(){this.doNotOpen=!0}open(){this.doNotOpen||(this._showControlsOnClose=this.player().controls(),this.player().controls(!1),this.el().style.visibility="visible")}clearItems(){this._content.clearItems()}close(){this.el().style.visibility="hidden",this._showControlsOnClose&&this.player().controls(!0)}createEl(){const e="vjs-recommendations-overlay",t=super.createEl("div",{className:e});return n().dom.addClass(t,e),t}setItems(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),i=1;i<t;i++)s[i-1]=arguments[i];this.doNotOpen=!1,s=s.slice(0,3),this._content.setItems(e,...s)}handleClick(){this.stopPropagation()}dispose(){super.dispose()}}n().registerComponent("recommendationsOverlay",E);const k=E}}]);
|
package/dist/share.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Cloudinary Video Player v3.6.4-edge.
|
|
3
|
-
* Built on
|
|
2
|
+
* Cloudinary Video Player v3.6.4-edge.1
|
|
3
|
+
* Built on 2026-01-04T08:13:28.782Z
|
|
4
4
|
* https://github.com/cloudinary/cloudinary-video-player
|
|
5
5
|
*/
|
|
6
6
|
"use strict";
|
|
@@ -30,7 +30,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
30
30
|
\********************************/
|
|
31
31
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
32
32
|
|
|
33
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _components_download_button__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/download-button */ \"./plugins/share/components/download-button.js\");\n/* harmony import */ var _share_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./share.scss */ \"./plugins/share/share.scss\");\n/* harmony import */ var plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! plugins/cloudinary/common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var lodash_omit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/omit */ \"../node_modules/lodash/omit.js\");\n/* harmony import */ var lodash_omit__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_omit__WEBPACK_IMPORTED_MODULE_3__);\
|
|
33
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _components_download_button__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/download-button */ \"./plugins/share/components/download-button.js\");\n/* harmony import */ var _share_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./share.scss */ \"./plugins/share/share.scss\");\n/* harmony import */ var plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! plugins/cloudinary/common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var lodash_omit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/omit */ \"../node_modules/lodash/omit.js\");\n/* harmony import */ var lodash_omit__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_omit__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\nconst SharePlugin = function () {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let playerInstance = arguments.length > 1 ? arguments[1] : undefined;\n const player = playerInstance || this;\n player.addClass('vjs-share');\n const addDownloadButton = () => {\n const controlBar = player.getChild('ControlBar');\n if (!controlBar || controlBar.getChild('ShareDownloadButton')) {\n return;\n }\n const children = controlBar.children();\n const insertBeforeIndex = children.findIndex(c => c.name_ === 'FullscreenToggle');\n controlBar.addChild('ShareDownloadButton', {}, insertBeforeIndex !== -1 ? insertBeforeIndex : undefined);\n };\n const removeDownloadButton = () => {\n if (!player.controlBar) {\n return;\n }\n const btn = player.controlBar.getChild('ShareDownloadButton');\n if (btn) {\n player.controlBar.removeChild(btn);\n }\n };\n const getDownloadUrl = () => {\n const source = player.currentSource?.();\n if (!source) {\n return null;\n }\n\n // Strip format / codec related transformation arrays\n const STRIP_KEYS = ['format', 'video_codec', 'streaming_profile'];\n const stripKeysDeep = value => {\n if (Array.isArray(value)) {\n return value.map(stripKeysDeep);\n }\n if (value && typeof value === 'object') {\n const cleaned = lodash_omit__WEBPACK_IMPORTED_MODULE_3___default()(value, STRIP_KEYS);\n Object.keys(cleaned).forEach(k => {\n cleaned[k] = stripKeysDeep(cleaned[k]);\n });\n return cleaned;\n }\n return value;\n };\n const transformations = stripKeysDeep(player.cloudinary.transformation() || {});\n const filename = player.cloudinary.currentPublicId()?.split('/')?.pop();\n const baseOptions = {\n ...player.cloudinary.cloudinaryConfig(),\n ...transformations,\n resource_type: 'video',\n format: 'mp4',\n video_codec: 'h264',\n flags: `streaming_attachment:${filename}`\n };\n\n // For ABR - download a limited-size video\n if (source.isAdaptive) {\n Object.assign(baseOptions, {\n crop: 'limit',\n width: 1920,\n height: 1920\n });\n }\n\n // For audio sources, set the format to mp3\n if (player.cloudinary.source()?.getType() === 'AudioSource') {\n Object.assign(baseOptions, {\n format: 'mp3',\n video_codec: undefined\n });\n }\n return (0,plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_2__.getCloudinaryUrl)(player.cloudinary.currentPublicId(), baseOptions);\n };\n const download = () => {\n const url = getDownloadUrl();\n if (!url) {\n console.warn('Share plugin: Unable to resolve download URL.');\n return;\n }\n const MAX_ATTEMPTS = 60; // 60 tries / 10s interval\n const INTERVAL_MS = 10000;\n const RETRY_STATUS_CODES = [423];\n const triggerDownload = () => {\n const a = document.createElement('a');\n a.href = url;\n a.download = '';\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n };\n const btn = player.controlBar?.getChild('ShareDownloadButton');\n const setPreparingState = isPreparing => {\n btn?.setPreparing?.(isPreparing);\n };\n const wait = ms => new Promise(resolve => setTimeout(resolve, ms));\n const fetchDownload = async function () {\n let attempt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n const response = await fetch(url, {\n method: 'HEAD'\n });\n if (RETRY_STATUS_CODES.includes(response.status) && attempt < MAX_ATTEMPTS) {\n await wait(INTERVAL_MS);\n return fetchDownload(attempt + 1);\n }\n setPreparingState(false);\n triggerDownload();\n };\n setPreparingState(true);\n fetchDownload();\n };\n if (options.download) {\n addDownloadButton();\n }\n player.share = {\n download,\n addDownloadButton,\n removeDownloadButton\n };\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SharePlugin);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/share/share.js?");
|
|
34
34
|
|
|
35
35
|
/***/ }),
|
|
36
36
|
|
package/dist/share.min.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Cloudinary Video Player v3.6.4-edge.
|
|
3
|
-
* Built on
|
|
2
|
+
* Cloudinary Video Player v3.6.4-edge.1
|
|
3
|
+
* Built on 2026-01-04T08:13:13.231Z
|
|
4
4
|
* https://github.com/cloudinary/cloudinary-video-player
|
|
5
5
|
*/
|
|
6
|
-
"use strict";(self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[976],{2130:(e,t
|
|
6
|
+
"use strict";(self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[976],{2130:(o,e,t)=>{t.d(e,{default:()=>c});var n=t(6673),a=t.n(n);const r=a().getComponent("ClickableComponent");class i extends r{constructor(o){super(o,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{})}handleClick(o){super.handleClick(o),this.player().share&&"function"==typeof this.player().share.download&&this.player().share.download()}createEl(){const o=a().dom.createEl("button",{className:"vjs-control vjs-share-download-button vjs-button",ariaLabel:"Download video",title:"Download video"}),e=a().dom.createEl("span",{className:"vjs-icon-file-download vjs-icon-placeholder"});o.appendChild(e);const t=a().dom.createEl("span",{className:"vjs-loading-spinner"});return o.appendChild(t),o}setPreparing(o){const e=this.el();o?(e.classList.add("vjs-waiting"),e.setAttribute("title","Download is being prepared")):(e.classList.remove("vjs-waiting"),e.setAttribute("title","Download video"))}}a().registerComponent("ShareDownloadButton",i);var d=t(1865),l=t(4319),s=t.n(l);const c=function(){let o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const e=(arguments.length>1?arguments[1]:void 0)||this;e.addClass("vjs-share");const t=()=>{const o=e.getChild("ControlBar");if(!o||o.getChild("ShareDownloadButton"))return;const t=o.children().findIndex(o=>"FullscreenToggle"===o.name_);o.addChild("ShareDownloadButton",{},-1!==t?t:void 0)};o.download&&t(),e.share={download:()=>{const o=(()=>{const o=e.currentSource?.();if(!o)return null;const t=["format","video_codec","streaming_profile"],n=o=>{if(Array.isArray(o))return o.map(n);if(o&&"object"==typeof o){const e=s()(o,t);return Object.keys(e).forEach(o=>{e[o]=n(e[o])}),e}return o},a=n(e.cloudinary.transformation()||{}),r=e.cloudinary.currentPublicId()?.split("/")?.pop(),i={...e.cloudinary.cloudinaryConfig(),...a,resource_type:"video",format:"mp4",video_codec:"h264",flags:`streaming_attachment:${r}`};return o.isAdaptive&&Object.assign(i,{crop:"limit",width:1920,height:1920}),"AudioSource"===e.cloudinary.source()?.getType()&&Object.assign(i,{format:"mp3",video_codec:void 0}),(0,d.KA)(e.cloudinary.currentPublicId(),i)})();if(!o)return void console.warn("Share plugin: Unable to resolve download URL.");const t=[423],n=e.controlBar?.getChild("ShareDownloadButton"),a=o=>{n?.setPreparing?.(o)},r=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;const n=await fetch(o,{method:"HEAD"});if(t.includes(n.status)&&e<60)return await(i=1e4,new Promise(o=>setTimeout(o,i))),r(e+1);var i;a(!1),(()=>{const e=document.createElement("a");e.href=o,e.download="",document.body.appendChild(e),e.click(),document.body.removeChild(e)})()};a(!0),r()},addDownloadButton:t,removeDownloadButton:()=>{if(!e.controlBar)return;const o=e.controlBar.getChild("ShareDownloadButton");o&&e.controlBar.removeChild(o)}}}}}]);
|