cloudinary-video-player 3.1.2-edge.3 → 3.1.2-edge.4
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 +18 -36920
- package/dist/adaptive-streaming.min.js +3 -4
- package/dist/chapters.js +13 -217
- package/dist/chapters.min.js +3 -4
- package/dist/cld-video-player.css +2 -4
- package/dist/cld-video-player.js +307 -46341
- package/dist/cld-video-player.light.js +307 -46341
- package/dist/cld-video-player.light.min.js +4 -5
- package/dist/cld-video-player.min.css +3 -4
- package/dist/cld-video-player.min.js +4 -5
- package/dist/colors.js +13 -67
- package/dist/colors.min.js +3 -4
- package/dist/dash.js +15 -69999
- package/dist/dash.min.js +3 -4
- package/dist/debug.js +17 -378
- package/dist/debug.min.js +3 -4
- package/dist/ima.js +24 -7049
- package/dist/ima.min.js +3 -4
- package/dist/interaction-areas.js +20 -640
- package/dist/interaction-areas.min.js +3 -4
- package/dist/node_modules_lodash_throttle_js.js +17 -395
- package/dist/playlist.js +40 -1504
- package/dist/playlist.min.js +3 -4
- package/dist/recommendations-overlay.js +19 -391
- package/dist/recommendations-overlay.min.js +3 -4
- package/dist/share.js +14 -195
- package/dist/share.min.js +3 -4
- package/dist/shoppable.js +21 -762
- package/dist/shoppable.min.js +3 -4
- package/dist/srt-text-tracks.js +13 -189
- package/dist/srt-text-tracks.min.js +3 -4
- package/dist/visual-search.js +16 -271
- package/dist/visual-search.min.js +3 -4
- package/lib/adaptive-streaming.js +1 -2
- package/lib/all.js +1 -2
- package/lib/chapters.js +1 -2
- package/lib/cld-video-player.js +1 -2
- package/lib/cld-video-player.min.css +0 -2
- package/lib/colors.js +1 -2
- package/lib/dash.js +1 -2
- package/lib/debug.js +1 -2
- package/lib/ima.js +1 -2
- package/lib/interaction-areas.js +1 -2
- package/lib/player.js +1 -2
- package/lib/playlist.js +1 -2
- package/lib/recommendations-overlay.js +1 -2
- package/lib/share.js +1 -2
- package/lib/shoppable.js +1 -2
- package/lib/srt-text-tracks.js +1 -2
- package/lib/videoPlayer.js +1 -2
- package/lib/visual-search.js +1 -2
- package/package.json +2 -3
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Cloudinary Video Player v3.1.2-edge.
|
|
3
|
-
* Built on 2025-08-
|
|
2
|
+
* Cloudinary Video Player v3.1.2-edge.4
|
|
3
|
+
* Built on 2025-08-11T06:41:01.308Z
|
|
4
4
|
* https://github.com/cloudinary/cloudinary-video-player
|
|
5
5
|
*/
|
|
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}}]);
|
|
7
|
-
//# sourceMappingURL=recommendations-overlay.min.js.map
|
|
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,9 +1,17 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Cloudinary Video Player v3.1.2-edge.
|
|
3
|
-
* Built on 2025-08-
|
|
2
|
+
* Cloudinary Video Player v3.1.2-edge.4
|
|
3
|
+
* Built on 2025-08-11T06:41:19.174Z
|
|
4
4
|
* https://github.com/cloudinary/cloudinary-video-player
|
|
5
5
|
*/
|
|
6
6
|
"use strict";
|
|
7
|
+
/*
|
|
8
|
+
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
|
|
9
|
+
* This devtool is neither made for production nor for readable output files.
|
|
10
|
+
* It uses "eval()" calls to create a separate source file in the browser devtools.
|
|
11
|
+
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
12
|
+
* or disable the default devtool with "devtool: false".
|
|
13
|
+
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
14
|
+
*/
|
|
7
15
|
(self["cloudinaryVideoPlayerChunkLoading"] = self["cloudinaryVideoPlayerChunkLoading"] || []).push([["share"],{
|
|
8
16
|
|
|
9
17
|
/***/ "./plugins/share/components/download-button.js":
|
|
@@ -12,60 +20,7 @@
|
|
|
12
20
|
\*****************************************************/
|
|
13
21
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
14
22
|
|
|
15
|
-
__webpack_require__.r(__webpack_exports__);
|
|
16
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
17
|
-
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
18
|
-
/* harmony export */ });
|
|
19
|
-
/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ "../node_modules/video.js/dist/alt/video.core-exposed.js");
|
|
20
|
-
/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
21
|
-
|
|
22
|
-
const ClickableComponent = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('ClickableComponent');
|
|
23
|
-
class ShareDownloadButton extends ClickableComponent {
|
|
24
|
-
constructor(player) {
|
|
25
|
-
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
26
|
-
super(player, options);
|
|
27
|
-
}
|
|
28
|
-
handleClick(event) {
|
|
29
|
-
super.handleClick(event);
|
|
30
|
-
// Delegate the actual download to the plugin API if present
|
|
31
|
-
if (this.player().share && typeof this.player().share.download === 'function') {
|
|
32
|
-
this.player().share.download();
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
createEl() {
|
|
36
|
-
const button = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('button', {
|
|
37
|
-
className: 'vjs-control vjs-share-download-button vjs-button',
|
|
38
|
-
ariaLabel: 'Download video',
|
|
39
|
-
title: 'Download video'
|
|
40
|
-
});
|
|
41
|
-
const iconSpan = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('span', {
|
|
42
|
-
className: 'vjs-icon-file-download vjs-icon-placeholder'
|
|
43
|
-
});
|
|
44
|
-
button.appendChild(iconSpan);
|
|
45
|
-
const spinnerSpan = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('span', {
|
|
46
|
-
className: 'vjs-loading-spinner'
|
|
47
|
-
});
|
|
48
|
-
button.appendChild(spinnerSpan);
|
|
49
|
-
return button;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Toggles the "preparing download" visual state (spinner + title).
|
|
54
|
-
* @param {boolean} isPreparing
|
|
55
|
-
*/
|
|
56
|
-
setPreparing(isPreparing) {
|
|
57
|
-
const el = this.el();
|
|
58
|
-
if (isPreparing) {
|
|
59
|
-
el.classList.add('vjs-waiting');
|
|
60
|
-
el.setAttribute('title', 'Download is being prepared');
|
|
61
|
-
} else {
|
|
62
|
-
el.classList.remove('vjs-waiting');
|
|
63
|
-
el.setAttribute('title', 'Download video');
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
video_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('ShareDownloadButton', ShareDownloadButton);
|
|
68
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ShareDownloadButton);
|
|
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 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\nconst ClickableComponent = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('ClickableComponent');\nclass ShareDownloadButton extends ClickableComponent {\n constructor(player) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(player, options);\n }\n handleClick(event) {\n super.handleClick(event);\n // Delegate the actual download to the plugin API if present\n if (this.player().share && typeof this.player().share.download === 'function') {\n this.player().share.download();\n }\n }\n createEl() {\n const button = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('button', {\n className: 'vjs-control vjs-share-download-button vjs-button',\n ariaLabel: 'Download video',\n title: 'Download video'\n });\n const iconSpan = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('span', {\n className: 'vjs-icon-file-download vjs-icon-placeholder'\n });\n button.appendChild(iconSpan);\n const spinnerSpan = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('span', {\n className: 'vjs-loading-spinner'\n });\n button.appendChild(spinnerSpan);\n return button;\n }\n\n /**\n * Toggles the \"preparing download\" visual state (spinner + title).\n * @param {boolean} isPreparing\n */\n setPreparing(isPreparing) {\n const el = this.el();\n if (isPreparing) {\n el.classList.add('vjs-waiting');\n el.setAttribute('title', 'Download is being prepared');\n } else {\n el.classList.remove('vjs-waiting');\n el.setAttribute('title', 'Download video');\n }\n }\n}\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('ShareDownloadButton', ShareDownloadButton);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ShareDownloadButton);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/share/components/download-button.js?");
|
|
69
24
|
|
|
70
25
|
/***/ }),
|
|
71
26
|
|
|
@@ -75,140 +30,7 @@ video_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('ShareDownload
|
|
|
75
30
|
\********************************/
|
|
76
31
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
77
32
|
|
|
78
|
-
__webpack_require__.r(__webpack_exports__);
|
|
79
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
80
|
-
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
81
|
-
/* harmony export */ });
|
|
82
|
-
/* harmony import */ var _components_download_button__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/download-button */ "./plugins/share/components/download-button.js");
|
|
83
|
-
/* harmony import */ var _share_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./share.scss */ "./plugins/share/share.scss");
|
|
84
|
-
/* harmony import */ var plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! plugins/cloudinary/common */ "./plugins/cloudinary/common.js");
|
|
85
|
-
/* harmony import */ var lodash_omit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/omit */ "../node_modules/lodash/omit.js");
|
|
86
|
-
/* harmony import */ var lodash_omit__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_omit__WEBPACK_IMPORTED_MODULE_3__);
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
const SharePlugin = function () {
|
|
92
|
-
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
93
|
-
let playerInstance = arguments.length > 1 ? arguments[1] : undefined;
|
|
94
|
-
const player = playerInstance || this;
|
|
95
|
-
player.addClass('vjs-share');
|
|
96
|
-
const addDownloadButton = () => {
|
|
97
|
-
const controlBar = player.getChild('ControlBar');
|
|
98
|
-
if (!controlBar || controlBar.getChild('ShareDownloadButton')) {
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
const children = controlBar.children();
|
|
102
|
-
const insertBeforeIndex = children.findIndex(c => c.name_ === 'FullscreenToggle');
|
|
103
|
-
controlBar.addChild('ShareDownloadButton', {}, insertBeforeIndex !== -1 ? insertBeforeIndex : undefined);
|
|
104
|
-
};
|
|
105
|
-
const removeDownloadButton = () => {
|
|
106
|
-
if (!player.controlBar) {
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
const btn = player.controlBar.getChild('ShareDownloadButton');
|
|
110
|
-
if (btn) {
|
|
111
|
-
player.controlBar.removeChild(btn);
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
const getDownloadUrl = () => {
|
|
115
|
-
const source = player.currentSource?.();
|
|
116
|
-
if (!source) {
|
|
117
|
-
return null;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// Strip format / codec related transformation arrays
|
|
121
|
-
const STRIP_KEYS = ['format', 'video_codec', 'streaming_profile'];
|
|
122
|
-
const stripKeysDeep = value => {
|
|
123
|
-
if (Array.isArray(value)) {
|
|
124
|
-
return value.map(stripKeysDeep);
|
|
125
|
-
}
|
|
126
|
-
if (value && typeof value === 'object') {
|
|
127
|
-
const cleaned = lodash_omit__WEBPACK_IMPORTED_MODULE_3___default()(value, STRIP_KEYS);
|
|
128
|
-
Object.keys(cleaned).forEach(k => {
|
|
129
|
-
cleaned[k] = stripKeysDeep(cleaned[k]);
|
|
130
|
-
});
|
|
131
|
-
return cleaned;
|
|
132
|
-
}
|
|
133
|
-
return value;
|
|
134
|
-
};
|
|
135
|
-
const transformations = stripKeysDeep(player.cloudinary.transformation() || {});
|
|
136
|
-
const baseOptions = {
|
|
137
|
-
...player.cloudinary.cloudinaryConfig(),
|
|
138
|
-
...transformations,
|
|
139
|
-
resource_type: 'video',
|
|
140
|
-
format: 'mp4',
|
|
141
|
-
video_codec: 'h264',
|
|
142
|
-
flags: `streaming_attachment:${player.cloudinary.currentPublicId()}`
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
// For ABR - download a limited-size video
|
|
146
|
-
if (source.isAdaptive) {
|
|
147
|
-
Object.assign(baseOptions, {
|
|
148
|
-
crop: 'limit',
|
|
149
|
-
width: 1920,
|
|
150
|
-
height: 1920
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
// For audio sources, set the format to mp3
|
|
155
|
-
if (player.cloudinary.source()?.getType() === 'AudioSource') {
|
|
156
|
-
Object.assign(baseOptions, {
|
|
157
|
-
format: 'mp3',
|
|
158
|
-
video_codec: undefined
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
return (0,plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_2__.getCloudinaryUrl)(player.cloudinary.currentPublicId(), baseOptions);
|
|
162
|
-
};
|
|
163
|
-
const download = () => {
|
|
164
|
-
const url = getDownloadUrl();
|
|
165
|
-
if (!url) {
|
|
166
|
-
console.warn('Share plugin: Unable to resolve download URL.');
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
const MAX_ATTEMPTS = 60; // 60 tries / 10s interval
|
|
170
|
-
const INTERVAL_MS = 10000;
|
|
171
|
-
const RETRY_STATUS_CODES = [423];
|
|
172
|
-
const triggerDownload = () => {
|
|
173
|
-
const a = document.createElement('a');
|
|
174
|
-
a.href = url;
|
|
175
|
-
a.download = '';
|
|
176
|
-
document.body.appendChild(a);
|
|
177
|
-
a.click();
|
|
178
|
-
document.body.removeChild(a);
|
|
179
|
-
};
|
|
180
|
-
const btn = player.controlBar?.getChild('ShareDownloadButton');
|
|
181
|
-
const setPreparingState = isPreparing => {
|
|
182
|
-
btn?.setPreparing?.(isPreparing);
|
|
183
|
-
};
|
|
184
|
-
const wait = ms => new Promise(resolve => setTimeout(resolve, ms));
|
|
185
|
-
const fetchDownload = async function () {
|
|
186
|
-
let attempt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
187
|
-
const response = await fetch(url, {
|
|
188
|
-
method: 'HEAD'
|
|
189
|
-
});
|
|
190
|
-
if (RETRY_STATUS_CODES.includes(response.status) && attempt < MAX_ATTEMPTS) {
|
|
191
|
-
if (attempt === 0) {
|
|
192
|
-
setPreparingState(true);
|
|
193
|
-
}
|
|
194
|
-
await wait(INTERVAL_MS);
|
|
195
|
-
return fetchDownload(attempt + 1);
|
|
196
|
-
}
|
|
197
|
-
setPreparingState(false);
|
|
198
|
-
triggerDownload();
|
|
199
|
-
};
|
|
200
|
-
fetchDownload();
|
|
201
|
-
};
|
|
202
|
-
if (options.download) {
|
|
203
|
-
addDownloadButton();
|
|
204
|
-
}
|
|
205
|
-
player.share = {
|
|
206
|
-
download,
|
|
207
|
-
addDownloadButton,
|
|
208
|
-
removeDownloadButton
|
|
209
|
-
};
|
|
210
|
-
};
|
|
211
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SharePlugin);
|
|
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 baseOptions = {\n ...player.cloudinary.cloudinaryConfig(),\n ...transformations,\n resource_type: 'video',\n format: 'mp4',\n video_codec: 'h264',\n flags: `streaming_attachment:${player.cloudinary.currentPublicId()}`\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 if (attempt === 0) {\n setPreparingState(true);\n }\n await wait(INTERVAL_MS);\n return fetchDownload(attempt + 1);\n }\n setPreparingState(false);\n triggerDownload();\n };\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?");
|
|
212
34
|
|
|
213
35
|
/***/ }),
|
|
214
36
|
|
|
@@ -218,11 +40,8 @@ const SharePlugin = function () {
|
|
|
218
40
|
\**********************************/
|
|
219
41
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
220
42
|
|
|
221
|
-
__webpack_require__.r(__webpack_exports__);
|
|
222
|
-
// extracted by mini-css-extract-plugin
|
|
223
|
-
|
|
43
|
+
eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/share/share.scss?");
|
|
224
44
|
|
|
225
45
|
/***/ })
|
|
226
46
|
|
|
227
|
-
}]);
|
|
228
|
-
//# sourceMappingURL=share.js.map
|
|
47
|
+
}]);
|
package/dist/share.min.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Cloudinary Video Player v3.1.2-edge.
|
|
3
|
-
* Built on 2025-08-
|
|
2
|
+
* Cloudinary Video Player v3.1.2-edge.4
|
|
3
|
+
* Built on 2025-08-11T06:41:01.308Z
|
|
4
4
|
* https://github.com/cloudinary/cloudinary-video-player
|
|
5
5
|
*/
|
|
6
|
-
"use strict";(self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[976],{2130:(e,o,t)=>{t.d(o,{default:()=>c});var n=t(6673),a=t.n(n);const r=a().getComponent("ClickableComponent");class d extends r{constructor(e){super(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{})}handleClick(e){super.handleClick(e),this.player().share&&"function"==typeof this.player().share.download&&this.player().share.download()}createEl(){const e=a().dom.createEl("button",{className:"vjs-control vjs-share-download-button vjs-button",ariaLabel:"Download video",title:"Download video"}),o=a().dom.createEl("span",{className:"vjs-icon-file-download vjs-icon-placeholder"});e.appendChild(o);const t=a().dom.createEl("span",{className:"vjs-loading-spinner"});return e.appendChild(t),e}setPreparing(e){const o=this.el();e?(o.classList.add("vjs-waiting"),o.setAttribute("title","Download is being prepared")):(o.classList.remove("vjs-waiting"),o.setAttribute("title","Download video"))}}a().registerComponent("ShareDownloadButton",d);var i=t(8033),l=t(4319),s=t.n(l);const c=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const o=(arguments.length>1?arguments[1]:void 0)||this;o.addClass("vjs-share");const t=()=>{const e=o.getChild("ControlBar");if(!e||e.getChild("ShareDownloadButton"))return;const t=e.children().findIndex((e=>"FullscreenToggle"===e.name_));e.addChild("ShareDownloadButton",{},-1!==t?t:void 0)};e.download&&t(),o.share={download:()=>{const e=(()=>{const e=o.currentSource?.();if(!e)return null;const t=["format","video_codec","streaming_profile"],n=e=>{if(Array.isArray(e))return e.map(n);if(e&&"object"==typeof e){const o=s()(e,t);return Object.keys(o).forEach((e=>{o[e]=n(o[e])})),o}return e},a=n(o.cloudinary.transformation()||{}),r={...o.cloudinary.cloudinaryConfig(),...a,resource_type:"video",format:"mp4",video_codec:"h264",flags:`streaming_attachment:${o.cloudinary.currentPublicId()}`};return e.isAdaptive&&Object.assign(r,{crop:"limit",width:1920,height:1920}),"AudioSource"===o.cloudinary.source()?.getType()&&Object.assign(r,{format:"mp3",video_codec:void 0}),(0,i.KA)(o.cloudinary.currentPublicId(),r)})();if(!e)return void console.warn("Share plugin: Unable to resolve download URL.");const t=[423],n=o.controlBar?.getChild("ShareDownloadButton"),a=e=>{n?.setPreparing?.(e)},r=async function(){let o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;const n=await fetch(e,{method:"HEAD"});if(t.includes(n.status)&&o<60)return 0===o&&a(!0),await(d=1e4,new Promise((e=>setTimeout(e,d)))),r(o+1);var d;a(!1),(()=>{const o=document.createElement("a");o.href=e,o.download="",document.body.appendChild(o),o.click(),document.body.removeChild(o)})()};r()},addDownloadButton:t,removeDownloadButton:()=>{if(!o.controlBar)return;const e=o.controlBar.getChild("ShareDownloadButton");e&&o.controlBar.removeChild(e)}}}}}]);
|
|
7
|
-
//# sourceMappingURL=share.min.js.map
|
|
6
|
+
"use strict";(self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[976],{2130:(e,o,t)=>{t.d(o,{default:()=>c});var n=t(6673),a=t.n(n);const r=a().getComponent("ClickableComponent");class d extends r{constructor(e){super(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{})}handleClick(e){super.handleClick(e),this.player().share&&"function"==typeof this.player().share.download&&this.player().share.download()}createEl(){const e=a().dom.createEl("button",{className:"vjs-control vjs-share-download-button vjs-button",ariaLabel:"Download video",title:"Download video"}),o=a().dom.createEl("span",{className:"vjs-icon-file-download vjs-icon-placeholder"});e.appendChild(o);const t=a().dom.createEl("span",{className:"vjs-loading-spinner"});return e.appendChild(t),e}setPreparing(e){const o=this.el();e?(o.classList.add("vjs-waiting"),o.setAttribute("title","Download is being prepared")):(o.classList.remove("vjs-waiting"),o.setAttribute("title","Download video"))}}a().registerComponent("ShareDownloadButton",d);var i=t(8033),l=t(4319),s=t.n(l);const c=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const o=(arguments.length>1?arguments[1]:void 0)||this;o.addClass("vjs-share");const t=()=>{const e=o.getChild("ControlBar");if(!e||e.getChild("ShareDownloadButton"))return;const t=e.children().findIndex((e=>"FullscreenToggle"===e.name_));e.addChild("ShareDownloadButton",{},-1!==t?t:void 0)};e.download&&t(),o.share={download:()=>{const e=(()=>{const e=o.currentSource?.();if(!e)return null;const t=["format","video_codec","streaming_profile"],n=e=>{if(Array.isArray(e))return e.map(n);if(e&&"object"==typeof e){const o=s()(e,t);return Object.keys(o).forEach((e=>{o[e]=n(o[e])})),o}return e},a=n(o.cloudinary.transformation()||{}),r={...o.cloudinary.cloudinaryConfig(),...a,resource_type:"video",format:"mp4",video_codec:"h264",flags:`streaming_attachment:${o.cloudinary.currentPublicId()}`};return e.isAdaptive&&Object.assign(r,{crop:"limit",width:1920,height:1920}),"AudioSource"===o.cloudinary.source()?.getType()&&Object.assign(r,{format:"mp3",video_codec:void 0}),(0,i.KA)(o.cloudinary.currentPublicId(),r)})();if(!e)return void console.warn("Share plugin: Unable to resolve download URL.");const t=[423],n=o.controlBar?.getChild("ShareDownloadButton"),a=e=>{n?.setPreparing?.(e)},r=async function(){let o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;const n=await fetch(e,{method:"HEAD"});if(t.includes(n.status)&&o<60)return 0===o&&a(!0),await(d=1e4,new Promise((e=>setTimeout(e,d)))),r(o+1);var d;a(!1),(()=>{const o=document.createElement("a");o.href=e,o.download="",document.body.appendChild(o),o.click(),document.body.removeChild(o)})()};r()},addDownloadButton:t,removeDownloadButton:()=>{if(!o.controlBar)return;const e=o.controlBar.getChild("ShareDownloadButton");e&&o.controlBar.removeChild(e)}}}}}]);
|