cloudinary-video-player 3.14.1 → 3.14.2-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/README.md +3 -13
- package/dist/149.min.js +6 -0
- package/dist/309.min.js +3 -3
- package/dist/689.min.js +2 -2
- package/dist/801.min.js +6 -0
- package/dist/adaptive-streaming.js +2 -2
- package/dist/adaptive-streaming.min.js +2 -2
- package/dist/chapters.js +2 -2
- package/dist/chapters.min.js +2 -2
- package/dist/cld-player-core.js +3119 -11
- package/dist/cld-player-core.min.js +3 -3
- package/dist/cld-poster-url.js +2 -2
- package/dist/cld-poster-url.min.js +2 -2
- package/dist/cld-video-player.css +5 -5
- package/dist/cld-video-player.js +43 -42
- package/dist/cld-video-player.light.js +43 -42
- package/dist/cld-video-player.light.min.js +3 -5
- package/dist/cld-video-player.min.css +2 -2
- package/dist/cld-video-player.min.js +3 -5
- 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 +2 -2
- package/dist/debug.min.js +2 -2
- package/dist/ima.js +2 -2
- package/dist/ima.min.js +2 -2
- package/dist/interaction-areas.js +7 -7
- package/dist/interaction-areas.min.js +3 -3
- package/dist/node_modules_lodash_throttle_js.js +2 -2
- package/dist/{video-player_js.js → player-full.js} +1398 -29
- package/dist/player-full.min.js +6 -0
- package/dist/player.css +3128 -0
- package/dist/{cld-video-player-lazy.js → player.js} +69 -101
- package/dist/player.min.css +5 -0
- package/dist/player.min.js +6 -0
- package/dist/playlist.js +2 -2
- package/dist/playlist.min.js +2 -2
- package/dist/recommendations-overlay.js +2 -2
- package/dist/recommendations-overlay.min.js +2 -2
- package/dist/share.js +2 -2
- package/dist/share.min.js +2 -2
- package/dist/shoppable.js +23 -23
- package/dist/shoppable.min.js +3 -3
- package/dist/utils_fetch-config_js.js +101 -2
- package/dist/utils_schedule_js.js +2 -2
- package/dist/visual-search.js +2 -2
- package/dist/visual-search.min.js +2 -2
- package/lib/all.js +3 -4
- package/lib/chapters.js +2 -3
- package/lib/cld-video-player.min.css +2 -2
- package/lib/cloudinary-config-from-options.js +21 -2775
- package/lib/colors.js +3 -2
- package/lib/debug.js +2 -2
- package/lib/fetch-config.js +0 -2
- package/lib/index.full.js +57 -0
- package/lib/index.js +128 -11
- package/lib/index2.js +10331 -0
- package/lib/{interaction-areas.service.js → interaction-areas.js} +4 -3
- package/lib/player-api.js +7 -2
- package/lib/player.min.css +5 -0
- package/lib/playlist-panel.js +1 -1
- package/lib/playlist.js +4 -3
- package/lib/recommendations-overlay.js +2 -3
- package/lib/share.js +2 -3
- package/lib/shoppable-post-widget.js +1 -1
- package/lib/{shoppable-widget.js → shoppable.js} +1 -2
- package/lib/throttle.js +1 -1
- package/lib/toNumber.js +2 -2
- package/lib/validators-functions.js +2 -47
- package/lib/video-player.const.js +47 -5
- package/lib/video-player.js +401 -7997
- package/package.json +22 -23
- package/dist/350.min.js +0 -6
- package/dist/933.min.js +0 -8
- package/dist/cld-video-player-lazy.min.js +0 -6
- package/dist/plugins_cloudinary_url-helpers_js-utils_cloudinary-config-from-options_js-utils_querystring_j-adfe37.js +0 -996
- package/lib/lazy.js +0 -19
- package/lib/player.js +0 -9
- package/lib/videoPlayer.js +0 -9
package/dist/cld-video-player.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Cloudinary Video Player v3.14.1
|
|
3
|
-
* Built on 2026-04-
|
|
2
|
+
* Cloudinary Video Player v3.14.2-edge.1
|
|
3
|
+
* Built on 2026-04-29T09:18:27.638Z
|
|
4
4
|
* https://github.com/cloudinary/cloudinary-video-player
|
|
5
5
|
*/
|
|
6
6
|
/*
|
|
@@ -151,7 +151,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
151
151
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
152
152
|
|
|
153
153
|
"use strict";
|
|
154
|
-
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 _assets_styles_components_title_bar_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ~/assets/styles/components/title-bar.scss */ \"./assets/styles/components/title-bar.scss\");\n/* harmony import */ var _component_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../component-utils */ \"./components/component-utils.js\");\n/* harmony import */ var _component_utils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_component_utils__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils_utf8Base64__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/utf8Base64 */ \"./utils/utf8Base64.js\");\n/* harmony import */ var _plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ~/plugins/cloudinary/common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var _utils_querystring__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/querystring */ \"./utils/querystring.js\");\n\n\n\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');\nclass TitleBar extends Component {\n constructor(player) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(player, options);\n this.on(player, 'cldsourcechanged', (_, _ref) => {\n let {\n source\n } = _ref;\n return this.setItem(source);\n });\n }\n setItem(source) {\n if (!source) {\n this.setTitle('');\n this.setDescription('');\n return;\n }\n const info = source.info();\n this.setTitle(info.title);\n this.setDescription(info.subtitle);\n\n // auto-fetch title/description if `true`\n const shouldFetchTitle = source.title && source.title() === true;\n const shouldFetchDescription = source.description && source.description() === true;\n if (shouldFetchTitle || shouldFetchDescription) {\n this.fetchAutoMetadata(source, shouldFetchTitle, shouldFetchDescription);\n }\n }\n fetchAutoMetadata(source, fetchTitle, fetchDescription) {\n if (source.isRawUrl) return;\n const config = source.cloudinaryConfig();\n const publicId = source.publicId();\n if (!config?.cloud_name || !publicId) return;\n const urlPrefix = (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_4__.getCloudinaryUrlPrefix)(config);\n const deliveryType = source.getInitOptions().type || 'upload';\n const metadataUrl = (0,_utils_querystring__WEBPACK_IMPORTED_MODULE_5__.appendQueryParams)(`${urlPrefix}/_applet_/video_service/video_metadata/${deliveryType}/${(0,_utils_utf8Base64__WEBPACK_IMPORTED_MODULE_3__.utf8ToBase64)(publicId)}.json`, source.queryParams());\n fetch(metadataUrl, {\n headers: {\n 'X-Cld-Video-Player-Version': \"3.14.1\"\n }\n }).then(response => {\n if (!response.ok) throw new Error(`HTTP ${response.status}`);\n return response.json();\n }).then(metadata => {\n if (fetchTitle && metadata.title) {\n this.setTitle(metadata.title);\n }\n if (fetchDescription && metadata.description) {\n this.setDescription(metadata.description);\n }\n }).catch(error => {\n console.warn(`Failed to fetch metadata for ${publicId}:`, error);\n });\n }\n setTitle(text) {\n const displayText = typeof text === 'string' ? text : '';\n _component_utils__WEBPACK_IMPORTED_MODULE_2___default().setText(this.titleEl, displayText);\n this.refresh();\n return displayText;\n }\n setDescription(text) {\n const displayText = typeof text === 'string' ? text : '';\n _component_utils__WEBPACK_IMPORTED_MODULE_2___default().setText(this.descriptionEl, displayText);\n this.refresh();\n return displayText;\n }\n refresh() {\n const titleValue = () => this.titleEl.innerText;\n const descriptionValue = () => this.descriptionEl.innerText;\n if (!titleValue() && !descriptionValue()) {\n this.hide();\n return;\n }\n this.show();\n }\n createEl() {\n this.titleEl = dom.createEl('div', {\n className: 'vjs-title-bar-title'\n });\n this.descriptionEl = dom.createEl('div', {\n className: 'vjs-title-bar-subtitle'\n });\n const el = super.createEl('div', {\n append: this.titleEl,\n className: 'vjs-title-bar'\n });\n el.appendChild(this.titleEl);\n el.appendChild(this.descriptionEl);\n return el;\n }\n}\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('titleBar', TitleBar);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TitleBar);\n\n//# sourceURL=webpack:///./components/title-bar/title-bar.js?\n}");
|
|
154
|
+
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 _assets_styles_components_title_bar_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ~/assets/styles/components/title-bar.scss */ \"./assets/styles/components/title-bar.scss\");\n/* harmony import */ var _component_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../component-utils */ \"./components/component-utils.js\");\n/* harmony import */ var _component_utils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_component_utils__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils_utf8Base64__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/utf8Base64 */ \"./utils/utf8Base64.js\");\n/* harmony import */ var _plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ~/plugins/cloudinary/common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var _utils_querystring__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/querystring */ \"./utils/querystring.js\");\n\n\n\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');\nclass TitleBar extends Component {\n constructor(player) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(player, options);\n this.on(player, 'cldsourcechanged', (_, _ref) => {\n let {\n source\n } = _ref;\n return this.setItem(source);\n });\n }\n setItem(source) {\n if (!source) {\n this.setTitle('');\n this.setDescription('');\n return;\n }\n const info = source.info();\n this.setTitle(info.title);\n this.setDescription(info.subtitle);\n\n // auto-fetch title/description if `true`\n const shouldFetchTitle = source.title && source.title() === true;\n const shouldFetchDescription = source.description && source.description() === true;\n if (shouldFetchTitle || shouldFetchDescription) {\n this.fetchAutoMetadata(source, shouldFetchTitle, shouldFetchDescription);\n }\n }\n fetchAutoMetadata(source, fetchTitle, fetchDescription) {\n if (source.isRawUrl) return;\n const config = source.cloudinaryConfig();\n const publicId = source.publicId();\n if (!config?.cloud_name || !publicId) return;\n const urlPrefix = (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_4__.getCloudinaryUrlPrefix)(config);\n const deliveryType = source.getInitOptions().type || 'upload';\n const metadataUrl = (0,_utils_querystring__WEBPACK_IMPORTED_MODULE_5__.appendQueryParams)(`${urlPrefix}/_applet_/video_service/video_metadata/${deliveryType}/${(0,_utils_utf8Base64__WEBPACK_IMPORTED_MODULE_3__.utf8ToBase64)(publicId)}.json`, source.queryParams());\n fetch(metadataUrl, {\n headers: {\n 'X-Cld-Video-Player-Version': \"3.14.2-edge.1\"\n }\n }).then(response => {\n if (!response.ok) throw new Error(`HTTP ${response.status}`);\n return response.json();\n }).then(metadata => {\n if (fetchTitle && metadata.title) {\n this.setTitle(metadata.title);\n }\n if (fetchDescription && metadata.description) {\n this.setDescription(metadata.description);\n }\n }).catch(error => {\n console.warn(`Failed to fetch metadata for ${publicId}:`, error);\n });\n }\n setTitle(text) {\n const displayText = typeof text === 'string' ? text : '';\n _component_utils__WEBPACK_IMPORTED_MODULE_2___default().setText(this.titleEl, displayText);\n this.refresh();\n return displayText;\n }\n setDescription(text) {\n const displayText = typeof text === 'string' ? text : '';\n _component_utils__WEBPACK_IMPORTED_MODULE_2___default().setText(this.descriptionEl, displayText);\n this.refresh();\n return displayText;\n }\n refresh() {\n const titleValue = () => this.titleEl.innerText;\n const descriptionValue = () => this.descriptionEl.innerText;\n if (!titleValue() && !descriptionValue()) {\n this.hide();\n return;\n }\n this.show();\n }\n createEl() {\n this.titleEl = dom.createEl('div', {\n className: 'vjs-title-bar-title'\n });\n this.descriptionEl = dom.createEl('div', {\n className: 'vjs-title-bar-subtitle'\n });\n const el = super.createEl('div', {\n append: this.titleEl,\n className: 'vjs-title-bar'\n });\n el.appendChild(this.titleEl);\n el.appendChild(this.descriptionEl);\n return el;\n }\n}\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('titleBar', TitleBar);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TitleBar);\n\n//# sourceURL=webpack:///./components/title-bar/title-bar.js?\n}");
|
|
155
155
|
|
|
156
156
|
/***/ },
|
|
157
157
|
|
|
@@ -177,14 +177,14 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
177
177
|
|
|
178
178
|
/***/ },
|
|
179
179
|
|
|
180
|
-
/***/ "./index.
|
|
181
|
-
|
|
182
|
-
!*** ./index.
|
|
183
|
-
|
|
180
|
+
/***/ "./index.full.js"
|
|
181
|
+
/*!***********************!*\
|
|
182
|
+
!*** ./index.full.js ***!
|
|
183
|
+
\***********************/
|
|
184
184
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
185
185
|
|
|
186
186
|
"use strict";
|
|
187
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ player: () => (/* binding */ player),\n/* harmony export */ players: () => (/* binding */ players),\n/* harmony export */ videoPlayer: () => (/* binding */ videoPlayer),\n/* harmony export */ videoPlayers: () => (/* binding */ videoPlayers)\n/* harmony export */ });\n/* harmony import */ var _assets_styles_main_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ~/assets/styles/main.scss */ \"./assets/styles/main.scss\");\n/* harmony import */ var _video_player__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./video-player */ \"./video-player.js\");\n/* harmony import */ var _utils_player_api__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/player-api */ \"./utils/player-api.js\");\n/**\n * UMD entry: full player bundle for backwards-compatible sync videoPlayer().\n * player() is async with profile and schedule support.\n */\n\n\n\nconst videoPlayer = function (id) {\n let playerOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let ready = arguments.length > 2 ? arguments[2] : undefined;\n return (0,_video_player__WEBPACK_IMPORTED_MODULE_1__.createVideoPlayer)(id, playerOptions, ready);\n};\nconst videoPlayers = (selector, playerOptions, ready) => (0,_utils_player_api__WEBPACK_IMPORTED_MODULE_2__.createMultipleSync)(selector, playerOptions, ready, videoPlayer);\nconst player = function (id) {\n let playerOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let ready = arguments.length > 2 ? arguments[2] : undefined;\n return (0,_utils_player_api__WEBPACK_IMPORTED_MODULE_2__.createAsyncPlayer)(id, playerOptions, ready, _video_player__WEBPACK_IMPORTED_MODULE_1__.createPlayerWithConfig);\n};\nconst players = (selector, playerOptions, ready) => (0,_utils_player_api__WEBPACK_IMPORTED_MODULE_2__.createMultiplePlayers)(selector, playerOptions, ready, player);\nconst cloudinaryVideoPlayerLegacyConfig = function () {\n let instanceConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n console.warn('Cloudinary.new() is deprecated and will be removed. Please use cloudinary.videoPlayer() instead.');\n const mergeOpts = function () {\n let callOpts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return Object.assign({}, instanceConfig, callOpts);\n };\n return {\n videoPlayer: function (id) {\n let playerOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let ready = arguments.length > 2 ? arguments[2] : undefined;\n return (0,_video_player__WEBPACK_IMPORTED_MODULE_1__.createVideoPlayer)(id, mergeOpts(playerOptions), ready);\n },\n videoPlayers: function (selector) {\n let playerOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let ready = arguments.length > 2 ? arguments[2] : undefined;\n return (0,_utils_player_api__WEBPACK_IMPORTED_MODULE_2__.createMultipleSync)(selector, mergeOpts(playerOptions), ready, videoPlayer);\n }\n };\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_utils_player_api__WEBPACK_IMPORTED_MODULE_2__.setupCloudinaryGlobal)({\n videoPlayer,\n videoPlayers,\n player,\n players,\n Cloudinary: {\n new: cloudinaryVideoPlayerLegacyConfig\n }\n}));\n\n//# sourceURL=webpack:///./index.
|
|
187
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ player: () => (/* binding */ player),\n/* harmony export */ players: () => (/* binding */ players),\n/* harmony export */ videoPlayer: () => (/* binding */ videoPlayer),\n/* harmony export */ videoPlayers: () => (/* binding */ videoPlayers)\n/* harmony export */ });\n/* harmony import */ var _assets_styles_main_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ~/assets/styles/main.scss */ \"./assets/styles/main.scss\");\n/* harmony import */ var _video_player__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./video-player */ \"./video-player.js\");\n/* harmony import */ var _utils_player_api__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/player-api */ \"./utils/player-api.js\");\n/**\n * UMD entry: full player bundle for backwards-compatible sync videoPlayer().\n * player() is async with profile and schedule support.\n */\n\n\n\nconst videoPlayer = function (id) {\n let playerOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let ready = arguments.length > 2 ? arguments[2] : undefined;\n return (0,_video_player__WEBPACK_IMPORTED_MODULE_1__.createVideoPlayer)(id, playerOptions, ready);\n};\nconst videoPlayers = (selector, playerOptions, ready) => (0,_utils_player_api__WEBPACK_IMPORTED_MODULE_2__.createMultipleSync)(selector, playerOptions, ready, videoPlayer);\nconst player = function (id) {\n let playerOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let ready = arguments.length > 2 ? arguments[2] : undefined;\n return (0,_utils_player_api__WEBPACK_IMPORTED_MODULE_2__.createAsyncPlayer)(id, playerOptions, ready, _video_player__WEBPACK_IMPORTED_MODULE_1__.createPlayerWithConfig);\n};\nconst players = (selector, playerOptions, ready) => (0,_utils_player_api__WEBPACK_IMPORTED_MODULE_2__.createMultiplePlayers)(selector, playerOptions, ready, player);\nconst cloudinaryVideoPlayerLegacyConfig = function () {\n let instanceConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n console.warn('Cloudinary.new() is deprecated and will be removed. Please use cloudinary.videoPlayer() instead.');\n const mergeOpts = function () {\n let callOpts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return Object.assign({}, instanceConfig, callOpts);\n };\n return {\n videoPlayer: function (id) {\n let playerOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let ready = arguments.length > 2 ? arguments[2] : undefined;\n return (0,_video_player__WEBPACK_IMPORTED_MODULE_1__.createVideoPlayer)(id, mergeOpts(playerOptions), ready);\n },\n videoPlayers: function (selector) {\n let playerOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let ready = arguments.length > 2 ? arguments[2] : undefined;\n return (0,_utils_player_api__WEBPACK_IMPORTED_MODULE_2__.createMultipleSync)(selector, mergeOpts(playerOptions), ready, videoPlayer);\n }\n };\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_utils_player_api__WEBPACK_IMPORTED_MODULE_2__.setupCloudinaryGlobal)({\n videoPlayer,\n videoPlayers,\n player,\n players,\n Cloudinary: {\n new: cloudinaryVideoPlayerLegacyConfig\n }\n}));\n\n//# sourceURL=webpack:///./index.full.js?\n}");
|
|
188
188
|
|
|
189
189
|
/***/ },
|
|
190
190
|
|
|
@@ -250,7 +250,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
250
250
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
251
251
|
|
|
252
252
|
"use strict";
|
|
253
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var lodash_isPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/isPlainObject */ \"../node_modules/lodash/isPlainObject.js\");\n/* harmony import */ var lodash_isPlainObject__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_isPlainObject__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var cloudinary_video_analytics__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! cloudinary-video-analytics */ \"../node_modules/cloudinary-video-analytics/dist/main.js\");\n/* harmony import */ var cloudinary_video_analytics__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(cloudinary_video_analytics__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/consts */ \"./utils/consts.js\");\n\n\n\nclass CloudinaryAnalytics {\n constructor(player, options) {\n this.player = player;\n this.cloudinaryAnalytics = (0,cloudinary_video_analytics__WEBPACK_IMPORTED_MODULE_1__.connectCloudinaryAnalytics)(this.player.videoElement, {\n playerAdapter: this.getCloudinaryVideoPlayerAdapter()\n });\n this.currentVideoMetadata = {\n cloudName: null,\n publicId: null\n };\n this.analyticsOptions = options;\n }\n getMetadata = () => ({\n cloudName: this.player.cloudinary.cloudinaryConfig().cloud_name,\n publicId: this.player.cloudinary.currentPublicId()\n });\n sourceChanged = (e, _ref) => {\n let {\n source\n } = _ref;\n const metadata = this.getMetadata();\n if (metadata.cloudName && metadata.publicId) {\n const isLiveStream = source?.resourceConfig().type === 'live';\n this.currentVideoMetadata = metadata;\n this.cloudinaryAnalytics.startManualTracking({\n ...metadata,\n ...(isLiveStream ? {\n type: 'live'\n } : {})\n }, {\n ...(lodash_isPlainObject__WEBPACK_IMPORTED_MODULE_0___default()(this.analyticsOptions) ? this.analyticsOptions : {}),\n videoPlayerType: 'cloudinary video player',\n videoPlayerVersion: \"3.14.1\"\n });\n } else if (this.currentVideoMetadata.cloudName !== metadata.cloudName || this.currentVideoMetadata.publicId !== metadata.publicId) {\n this.cloudinaryAnalytics.stopManualTracking();\n }\n };\n getCloudinaryVideoPlayerAdapter = () => {\n const createCldVPEventListener = (eventName, callback) => {\n this.player.on(eventName, callback);\n return () => {\n this.player.off(eventName, callback);\n };\n };\n return {\n onCanPlay: callback => createCldVPEventListener('canplay', callback),\n onCanPlayThrough: callback => createCldVPEventListener('canplaythrough', callback),\n onComplete: callback => createCldVPEventListener('complete', callback),\n onDurationChange: callback => createCldVPEventListener('durationchange', callback),\n onEmptied: callback => createCldVPEventListener('emptied', callback),\n onEnded: callback => createCldVPEventListener('ended', callback),\n onError: callback => createCldVPEventListener('error', callback),\n onLoadedData: callback => createCldVPEventListener('loadeddata', callback),\n onLoadedMetadata: callback => createCldVPEventListener('loadedmetadata', callback),\n onLoadStart: callback => createCldVPEventListener('loadstart', callback),\n onPause: callback => createCldVPEventListener('pause', callback),\n onPlay: callback => createCldVPEventListener('play', callback),\n onPlaying: callback => createCldVPEventListener('playing', callback),\n onProgress: callback => createCldVPEventListener('progress', callback),\n onRateChange: callback => createCldVPEventListener('ratechange', callback),\n onSeeked: callback => createCldVPEventListener('seeked', callback),\n onSeeking: callback => createCldVPEventListener('seeking', callback),\n onStalled: callback => createCldVPEventListener('stalled', callback),\n onSuspend: callback => createCldVPEventListener('suspend', callback),\n onTimeUpdate: callback => createCldVPEventListener('timeupdate', callback),\n onVolumeChange: callback => createCldVPEventListener('volumechange', callback),\n onWaiting: callback => createCldVPEventListener('waiting', callback),\n getCurrentSrc: () => this.player.videoElement.currentSrc,\n getCurrentTime: () => this.player.currentTime(),\n getReadyState: () => this.player.videoElement.readyState,\n getDuration: () => this.player.duration()\n };\n };\n init() {\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_2__.PLAYER_EVENT.CLD_SOURCE_CHANGED, this.sourceChanged);\n }\n}\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n new CloudinaryAnalytics(this, opts).init();\n}\n\n//# sourceURL=webpack:///./plugins/cloudinary-analytics/index.js?\n}");
|
|
253
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var lodash_isPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/isPlainObject */ \"../node_modules/lodash/isPlainObject.js\");\n/* harmony import */ var lodash_isPlainObject__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_isPlainObject__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var cloudinary_video_analytics__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! cloudinary-video-analytics */ \"../node_modules/cloudinary-video-analytics/dist/main.js\");\n/* harmony import */ var cloudinary_video_analytics__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(cloudinary_video_analytics__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/consts */ \"./utils/consts.js\");\n\n\n\nclass CloudinaryAnalytics {\n constructor(player, options) {\n this.player = player;\n this.cloudinaryAnalytics = (0,cloudinary_video_analytics__WEBPACK_IMPORTED_MODULE_1__.connectCloudinaryAnalytics)(this.player.videoElement, {\n playerAdapter: this.getCloudinaryVideoPlayerAdapter()\n });\n this.currentVideoMetadata = {\n cloudName: null,\n publicId: null\n };\n this.analyticsOptions = options;\n }\n getMetadata = () => ({\n cloudName: this.player.cloudinary.cloudinaryConfig().cloud_name,\n publicId: this.player.cloudinary.currentPublicId()\n });\n sourceChanged = (e, _ref) => {\n let {\n source\n } = _ref;\n const metadata = this.getMetadata();\n if (metadata.cloudName && metadata.publicId) {\n const isLiveStream = source?.resourceConfig().type === 'live';\n this.currentVideoMetadata = metadata;\n this.cloudinaryAnalytics.startManualTracking({\n ...metadata,\n ...(isLiveStream ? {\n type: 'live'\n } : {})\n }, {\n ...(lodash_isPlainObject__WEBPACK_IMPORTED_MODULE_0___default()(this.analyticsOptions) ? this.analyticsOptions : {}),\n videoPlayerType: 'cloudinary video player',\n videoPlayerVersion: \"3.14.2-edge.1\"\n });\n } else if (this.currentVideoMetadata.cloudName !== metadata.cloudName || this.currentVideoMetadata.publicId !== metadata.publicId) {\n this.cloudinaryAnalytics.stopManualTracking();\n }\n };\n getCloudinaryVideoPlayerAdapter = () => {\n const createCldVPEventListener = (eventName, callback) => {\n this.player.on(eventName, callback);\n return () => {\n this.player.off(eventName, callback);\n };\n };\n return {\n onCanPlay: callback => createCldVPEventListener('canplay', callback),\n onCanPlayThrough: callback => createCldVPEventListener('canplaythrough', callback),\n onComplete: callback => createCldVPEventListener('complete', callback),\n onDurationChange: callback => createCldVPEventListener('durationchange', callback),\n onEmptied: callback => createCldVPEventListener('emptied', callback),\n onEnded: callback => createCldVPEventListener('ended', callback),\n onError: callback => createCldVPEventListener('error', callback),\n onLoadedData: callback => createCldVPEventListener('loadeddata', callback),\n onLoadedMetadata: callback => createCldVPEventListener('loadedmetadata', callback),\n onLoadStart: callback => createCldVPEventListener('loadstart', callback),\n onPause: callback => createCldVPEventListener('pause', callback),\n onPlay: callback => createCldVPEventListener('play', callback),\n onPlaying: callback => createCldVPEventListener('playing', callback),\n onProgress: callback => createCldVPEventListener('progress', callback),\n onRateChange: callback => createCldVPEventListener('ratechange', callback),\n onSeeked: callback => createCldVPEventListener('seeked', callback),\n onSeeking: callback => createCldVPEventListener('seeking', callback),\n onStalled: callback => createCldVPEventListener('stalled', callback),\n onSuspend: callback => createCldVPEventListener('suspend', callback),\n onTimeUpdate: callback => createCldVPEventListener('timeupdate', callback),\n onVolumeChange: callback => createCldVPEventListener('volumechange', callback),\n onWaiting: callback => createCldVPEventListener('waiting', callback),\n getCurrentSrc: () => this.player.videoElement.currentSrc,\n getCurrentTime: () => this.player.currentTime(),\n getReadyState: () => this.player.videoElement.readyState,\n getDuration: () => this.player.duration()\n };\n };\n init() {\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_2__.PLAYER_EVENT.CLD_SOURCE_CHANGED, this.sourceChanged);\n }\n}\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n new CloudinaryAnalytics(this, opts).init();\n}\n\n//# sourceURL=webpack:///./plugins/cloudinary-analytics/index.js?\n}");
|
|
254
254
|
|
|
255
255
|
/***/ },
|
|
256
256
|
|
|
@@ -338,7 +338,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
338
338
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
339
339
|
|
|
340
340
|
"use strict";
|
|
341
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ADAPTIVE_SOURCETYPES: () => (/* binding */ ADAPTIVE_SOURCETYPES),\n/* harmony export */ CONTAINER_MIME_TYPES: () => (/* binding */ CONTAINER_MIME_TYPES),\n/* harmony export */ DEFAULT_DPR: () => (/* binding */ DEFAULT_DPR),\n/* harmony export */ DEFAULT_POSTER_PARAMS: () => (/* binding */ DEFAULT_POSTER_PARAMS),\n/* harmony export */ DEFAULT_VIDEO_PARAMS: () => (/* binding */ DEFAULT_VIDEO_PARAMS),\n/* harmony export */ FORMAT_MAPPINGS: () => (/* binding */ FORMAT_MAPPINGS),\n/* harmony export */ RENDITIONS: () => (/* binding */ RENDITIONS),\n/* harmony export */ URL_PATTERN: () => (/*
|
|
341
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ADAPTIVE_SOURCETYPES: () => (/* binding */ ADAPTIVE_SOURCETYPES),\n/* harmony export */ CONTAINER_MIME_TYPES: () => (/* binding */ CONTAINER_MIME_TYPES),\n/* harmony export */ DEFAULT_DPR: () => (/* binding */ DEFAULT_DPR),\n/* harmony export */ DEFAULT_POSTER_PARAMS: () => (/* binding */ DEFAULT_POSTER_PARAMS),\n/* harmony export */ DEFAULT_VIDEO_PARAMS: () => (/* binding */ DEFAULT_VIDEO_PARAMS),\n/* harmony export */ FORMAT_MAPPINGS: () => (/* binding */ FORMAT_MAPPINGS),\n/* harmony export */ RENDITIONS: () => (/* binding */ RENDITIONS),\n/* harmony export */ URL_PATTERN: () => (/* reexport safe */ _profile_url_pattern__WEBPACK_IMPORTED_MODULE_0__.URL_PATTERN),\n/* harmony export */ VIDEO_SUFFIX_REMOVAL_PATTERN: () => (/* binding */ VIDEO_SUFFIX_REMOVAL_PATTERN)\n/* harmony export */ });\n/* harmony import */ var _profile_url_pattern__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../profile-url-pattern */ \"./plugins/cloudinary/profile-url-pattern.js\");\nconst DEFAULT_POSTER_PARAMS = {\n format: 'jpg',\n resource_type: 'video'\n};\nconst DEFAULT_VIDEO_PARAMS = {\n resource_type: 'video',\n type: 'upload',\n hdr: false,\n transformation: [],\n sourceTransformation: {},\n sourceTypes: ['auto'],\n recommendations: null,\n info: {},\n interactionAreas: {},\n chapters: {}\n};\nconst COMMON_VIDEO_EXTENSIONS = ['3g2', '3gp', 'avi', 'flv', 'm3u8', 'ts', 'm2ts', 'mts', 'mov', 'mkv', 'mp4', 'mpeg', 'mpd', 'mxf', 'ogv', 'webm', 'wmv']; // https://cloudinary.com/documentation/video_manipulation_and_delivery#supported_video_formats\n\nconst VIDEO_SUFFIX_REMOVAL_PATTERN = RegExp(`\\\\.(${COMMON_VIDEO_EXTENSIONS.join('|')})$$`);\n\nconst CONTAINER_MIME_TYPES = {\n hls: 'application/x-mpegURL',\n dash: 'application/dash+xml',\n // See: https://docs.videojs.com/utils_mimetypes.js.html\n opus: 'video/ogg',\n ogv: 'video/ogg',\n mp4: 'video/mp4',\n mov: 'video/mp4',\n m4v: 'video/mp4',\n mkv: 'video/x-matroska',\n m4a: 'audio/mp4',\n mp3: 'audio/mpeg',\n aac: 'audio/aac',\n caf: 'audio/x-caf',\n flac: 'audio/flac',\n oga: 'audio/ogg',\n wav: 'audio/wav',\n m3u8: 'application/x-mpegURL',\n mpd: 'application/dash+xml',\n jpg: 'image/jpeg',\n jpeg: 'image/jpeg',\n gif: 'image/gif',\n png: 'image/png',\n svg: 'image/svg+xml',\n webp: 'image/webp'\n};\nconst ADAPTIVE_SOURCETYPES = ['hls', 'dash', 'mpd', 'm3u8'];\nconst FORMAT_MAPPINGS = {\n hls: 'm3u8',\n dash: 'mpd'\n};\n\n// Breakpoints constants\nconst DEFAULT_DPR = 2.0;\nconst RENDITIONS = [640, 848, 1280, 1920, 2560, 3840];\n\n//# sourceURL=webpack:///./plugins/cloudinary/models/video-source/video-source.const.js?\n}");
|
|
342
342
|
|
|
343
343
|
/***/ },
|
|
344
344
|
|
|
@@ -364,6 +364,17 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
364
364
|
|
|
365
365
|
/***/ },
|
|
366
366
|
|
|
367
|
+
/***/ "./plugins/cloudinary/profile-url-pattern.js"
|
|
368
|
+
/*!***************************************************!*\
|
|
369
|
+
!*** ./plugins/cloudinary/profile-url-pattern.js ***!
|
|
370
|
+
\***************************************************/
|
|
371
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
372
|
+
|
|
373
|
+
"use strict";
|
|
374
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ URL_PATTERN: () => (/* binding */ URL_PATTERN)\n/* harmony export */ });\n/**\n * Detects http(s) profile/config URLs. Split from `video-source.const` so fetch-config\n * does not pull MIME maps and related defaults into the async chunk.\n */\n// eslint-disable-next-line no-control-regex\nconst URL_PATTERN = RegExp('https?:\\\\/\\\\/(www\\\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\\\.[a-zA-Z0-9()]{1,6}\\\\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)');\n\n//# sourceURL=webpack:///./plugins/cloudinary/profile-url-pattern.js?\n}");
|
|
375
|
+
|
|
376
|
+
/***/ },
|
|
377
|
+
|
|
367
378
|
/***/ "./plugins/cloudinary/url-helpers.js"
|
|
368
379
|
/*!*******************************************!*\
|
|
369
380
|
!*** ./plugins/cloudinary/url-helpers.js ***!
|
|
@@ -371,7 +382,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
371
382
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
372
383
|
|
|
373
384
|
"use strict";
|
|
374
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getCloudinaryUrlPrefix: () => (/* reexport safe */ _utils_cloudinary_url_prefix__WEBPACK_IMPORTED_MODULE_1__.getCloudinaryUrlPrefix),\n/* harmony export */ isRawUrl: () => (/* binding */ isRawUrl)\n/* harmony export */ });\n/* harmony import */ var
|
|
385
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getCloudinaryUrlPrefix: () => (/* reexport safe */ _utils_cloudinary_url_prefix__WEBPACK_IMPORTED_MODULE_1__.getCloudinaryUrlPrefix),\n/* harmony export */ isRawUrl: () => (/* binding */ isRawUrl)\n/* harmony export */ });\n/* harmony import */ var _profile_url_pattern__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./profile-url-pattern */ \"./plugins/cloudinary/profile-url-pattern.js\");\n/* harmony import */ var _utils_cloudinary_url_prefix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/cloudinary-url-prefix */ \"./utils/cloudinary-url-prefix.js\");\n\n\nconst isRawUrl = publicId => _profile_url_pattern__WEBPACK_IMPORTED_MODULE_0__.URL_PATTERN.test(publicId);\n\n//# sourceURL=webpack:///./plugins/cloudinary/url-helpers.js?\n}");
|
|
375
386
|
|
|
376
387
|
/***/ },
|
|
377
388
|
|
|
@@ -415,7 +426,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
415
426
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
416
427
|
|
|
417
428
|
"use strict";
|
|
418
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nconst contextMenuContent = player => {\n const isLooping = player.loop();\n const isPaused = player.paused();\n const isMuted = player.muted();\n const isFullscreen = player.isFullscreen();\n const aboutMenuItem = {\n class: 'player-version',\n label: 'Cloudinary Player v' + \"3.14.1\"\n };\n if (!player.controls()) {\n return [aboutMenuItem];\n }\n return [{\n label: isLooping ? 'Unloop' : 'Loop',\n listener: () => {\n player.loop(!isLooping);\n }\n }, {\n label: isPaused ? 'Play' : 'Pause',\n listener: () => {\n if (isPaused) {\n player.play();\n } else {\n player.pause();\n }\n }\n }, {\n label: isMuted ? 'Unmute' : 'Mute',\n listener: () => {\n player.muted(!isMuted);\n }\n }, {\n label: isFullscreen ? 'Exit Fullscreen' : 'Fullscreen',\n listener: () => {\n if (isFullscreen) {\n player.exitFullscreen();\n } else {\n player.requestFullscreen();\n }\n }\n }, aboutMenuItem];\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (contextMenuContent);\n\n//# sourceURL=webpack:///./plugins/context-menu/contextMenuContent.js?\n}");
|
|
429
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nconst contextMenuContent = player => {\n const isLooping = player.loop();\n const isPaused = player.paused();\n const isMuted = player.muted();\n const isFullscreen = player.isFullscreen();\n const aboutMenuItem = {\n class: 'player-version',\n label: 'Cloudinary Player v' + \"3.14.2-edge.1\"\n };\n if (!player.controls()) {\n return [aboutMenuItem];\n }\n return [{\n label: isLooping ? 'Unloop' : 'Loop',\n listener: () => {\n player.loop(!isLooping);\n }\n }, {\n label: isPaused ? 'Play' : 'Pause',\n listener: () => {\n if (isPaused) {\n player.play();\n } else {\n player.pause();\n }\n }\n }, {\n label: isMuted ? 'Unmute' : 'Mute',\n listener: () => {\n player.muted(!isMuted);\n }\n }, {\n label: isFullscreen ? 'Exit Fullscreen' : 'Fullscreen',\n listener: () => {\n if (isFullscreen) {\n player.exitFullscreen();\n } else {\n player.requestFullscreen();\n }\n }\n }, aboutMenuItem];\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (contextMenuContent);\n\n//# sourceURL=webpack:///./plugins/context-menu/contextMenuContent.js?\n}");
|
|
419
430
|
|
|
420
431
|
/***/ },
|
|
421
432
|
|
|
@@ -481,7 +492,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
481
492
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
482
493
|
|
|
483
494
|
"use strict";
|
|
484
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ lazyInteractionAreasPlugin)\n/* harmony export */ });\nasync function lazyInteractionAreasPlugin(player, playerOptions, videojsOptions) {\n try {\n const {\n interactionAreasService\n } = await Promise.all(/*! import() | interaction-areas */[__webpack_require__.e(\"styles\"), __webpack_require__.e(\"node_modules_lodash_throttle_js\"), __webpack_require__.e(\"interaction-areas\")]).then(__webpack_require__.bind(__webpack_require__, /*! ./interaction-areas
|
|
495
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ lazyInteractionAreasPlugin)\n/* harmony export */ });\nasync function lazyInteractionAreasPlugin(player, playerOptions, videojsOptions) {\n try {\n const {\n interactionAreasService\n } = await Promise.all(/*! import() | interaction-areas */[__webpack_require__.e(\"styles\"), __webpack_require__.e(\"node_modules_lodash_throttle_js\"), __webpack_require__.e(\"interaction-areas\")]).then(__webpack_require__.bind(__webpack_require__, /*! ./interaction-areas */ \"./plugins/interaction-areas/interaction-areas.js\"));\n interactionAreasService(player, playerOptions, videojsOptions);\n } catch (error) {\n console.error('Failed to load plugin:', error);\n }\n}\n\n//# sourceURL=webpack:///./plugins/interaction-areas/index.js?\n}");
|
|
485
496
|
|
|
486
497
|
/***/ },
|
|
487
498
|
|
|
@@ -514,7 +525,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
514
525
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
515
526
|
|
|
516
527
|
"use strict";
|
|
517
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ lazyShoppablePlugin)\n/* harmony export */ });\nasync function lazyShoppablePlugin(player, options) {\n const {\n default: ShoppableWidget\n } = await Promise.all(/*! import() | shoppable */[__webpack_require__.e(\"styles\"), __webpack_require__.e(\"node_modules_lodash_throttle_js\"), __webpack_require__.e(\"shoppable\")]).then(__webpack_require__.bind(__webpack_require__, /*! ../../components/shoppable-bar/shoppable
|
|
528
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ lazyShoppablePlugin)\n/* harmony export */ });\nasync function lazyShoppablePlugin(player, options) {\n const {\n default: ShoppableWidget\n } = await Promise.all(/*! import() | shoppable */[__webpack_require__.e(\"styles\"), __webpack_require__.e(\"node_modules_lodash_throttle_js\"), __webpack_require__.e(\"shoppable\")]).then(__webpack_require__.bind(__webpack_require__, /*! ../../components/shoppable-bar/shoppable */ \"./components/shoppable-bar/shoppable.js\"));\n new ShoppableWidget(player, options.shoppable).init();\n}\n\n//# sourceURL=webpack:///./plugins/shoppable-plugin/index.js?\n}");
|
|
518
529
|
|
|
519
530
|
/***/ },
|
|
520
531
|
|
|
@@ -646,7 +657,18 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
646
657
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
647
658
|
|
|
648
659
|
"use strict";
|
|
649
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getCloudinaryConfigFromOptions: () => (/* binding */ getCloudinaryConfigFromOptions)\n/* harmony export */ });\n/* harmony import */ var
|
|
660
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getCloudinaryConfigFromOptions: () => (/* binding */ getCloudinaryConfigFromOptions)\n/* harmony export */ });\n/* harmony import */ var _cloudinary_config_param__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./cloudinary-config-param */ \"./utils/cloudinary-config-param.js\");\n\nconst CLOUDINARY_CONFIG_KEYS = new Set(_cloudinary_config_param__WEBPACK_IMPORTED_MODULE_0__.CLOUDINARY_CONFIG_PARAM);\n\n/**\n * Matches lodash `snakeCase` (avoids heavy lodash in lazy-player).\n */\nconst toSnakeCase = key => key.replace(/([a-z0-9])([A-Z])/g, '$1_$2').replace(/[-\\s]+/g, '_').toLowerCase();\nconst pickCloudinaryKeysFromOptions = options => {\n const out = {};\n for (const key of Object.keys(options)) {\n const snake = toSnakeCase(key);\n if (CLOUDINARY_CONFIG_KEYS.has(snake)) {\n out[snake] = options[key];\n }\n }\n return out;\n};\nconst getCloudinaryConfigFromOptions = options => {\n if (options.cloudinaryConfig) {\n return options.cloudinaryConfig;\n }\n return Object.assign({}, pickCloudinaryKeysFromOptions(options));\n};\n\n//# sourceURL=webpack:///./utils/cloudinary-config-from-options.js?\n}");
|
|
661
|
+
|
|
662
|
+
/***/ },
|
|
663
|
+
|
|
664
|
+
/***/ "./utils/cloudinary-config-param.js"
|
|
665
|
+
/*!******************************************!*\
|
|
666
|
+
!*** ./utils/cloudinary-config-param.js ***!
|
|
667
|
+
\******************************************/
|
|
668
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
669
|
+
|
|
670
|
+
"use strict";
|
|
671
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CLOUDINARY_CONFIG_PARAM: () => (/* binding */ CLOUDINARY_CONFIG_PARAM)\n/* harmony export */ });\n/**\n * Cloudinary SDK config keys (snake_case). Duplicated from `video-player.const` so\n * modules that only need this list do not import the full player constants table.\n */\nconst CLOUDINARY_CONFIG_PARAM = ['api_secret', 'auth_token', 'cdn_subdomain', 'cloud_name', 'cname', 'private_cdn', 'secure', 'secure_cdn_subdomain', 'secure_distribution', 'shorten', 'sign_url', 'url_suffix', 'use_root_path'];\n\n//# sourceURL=webpack:///./utils/cloudinary-config-param.js?\n}");
|
|
650
672
|
|
|
651
673
|
/***/ },
|
|
652
674
|
|
|
@@ -756,7 +778,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
756
778
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
757
779
|
|
|
758
780
|
"use strict";
|
|
759
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getVideoElement: () => (/* binding */ getVideoElement),\n/* harmony export */ lazyBootstrap: () => (/* binding */ lazyBootstrap),\n/* harmony export */ loadPlayer: () => (/* binding */ loadPlayer),\n/* harmony export */ preparePlayerPlaceholder: () => (/* binding */ preparePlayerPlaceholder),\n/* harmony export */ shouldLoadOnScroll: () => (/* binding */ shouldLoadOnScroll),\n/* harmony export */ shouldUseLazyBootstrap: () => (/* binding */ shouldUseLazyBootstrap)\n/* harmony export */ });\nconst FLUID_CLASS = 'cld-fluid';\n\n/** Same condition as `getPosterUrl` in `poster-url.js` (explicit string `poster`); skips the `cld-poster-url` async chunk. */\nconst hasExplicitPoster = options => typeof options?.poster === 'string' && options.poster.length > 0;\nconst getVideoElement = elem => {\n if (typeof elem === 'string') {\n let id = elem;\n if (id.indexOf('#') === 0) id = id.slice(1);\n try {\n elem = document.querySelector(`#${CSS.escape(id)}`);\n } catch {\n elem = null;\n }\n if (!elem) throw new Error(`Could not find element with id ${id}`);\n }\n if (!elem?.tagName) throw new Error('Must specify either an element or an element id.');\n if (elem.tagName !== 'VIDEO') throw new Error('Element is not a video tag.');\n return elem;\n};\nconst preparePlayerPlaceholder = function (videoElement, posterUrl) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const hadControls = videoElement.hasAttribute('controls');\n videoElement.poster = posterUrl;\n videoElement.preload = 'none';\n videoElement.controls = false;\n videoElement.removeAttribute('controls');\n const fluid = options.fluid !== false;\n if (fluid) {\n videoElement.classList.add(FLUID_CLASS);\n }\n if (options.width) videoElement.setAttribute('width', String(options.width));\n if (options.height) videoElement.setAttribute('height', String(options.height));\n const ar = options?.sourceOptions?.aspectRatio || options?.aspectRatio;\n if (typeof ar === 'string' && ar.includes(':')) {\n const parts = ar.split(':').map(x => parseInt(x.trim(), 10));\n if (parts.length === 2 && parts[0] > 0 && parts[1] > 0) {\n videoElement.style.aspectRatio = `${parts[0]} / ${parts[1]}`;\n }\n }\n return {\n videoElement,\n hadControls\n };\n};\nconst loadPlayer = _ref => {\n let {\n overlayRoot,\n videoElement,\n options,\n ready\n } = _ref;\n if (overlayRoot?.parentNode) {\n overlayRoot.replaceWith(videoElement);\n }\n return Promise.all(/*! import() */[__webpack_require__.e(\"styles\"), __webpack_require__.e(\"
|
|
781
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getVideoElement: () => (/* binding */ getVideoElement),\n/* harmony export */ lazyBootstrap: () => (/* binding */ lazyBootstrap),\n/* harmony export */ loadPlayer: () => (/* binding */ loadPlayer),\n/* harmony export */ preparePlayerPlaceholder: () => (/* binding */ preparePlayerPlaceholder),\n/* harmony export */ shouldLoadOnScroll: () => (/* binding */ shouldLoadOnScroll),\n/* harmony export */ shouldUseLazyBootstrap: () => (/* binding */ shouldUseLazyBootstrap)\n/* harmony export */ });\nconst FLUID_CLASS = 'cld-fluid';\n\n/** Same condition as `getPosterUrl` in `poster-url.js` (explicit string `poster`); skips the `cld-poster-url` async chunk. */\nconst hasExplicitPoster = options => typeof options?.poster === 'string' && options.poster.length > 0;\nconst getVideoElement = elem => {\n if (typeof elem === 'string') {\n let id = elem;\n if (id.indexOf('#') === 0) id = id.slice(1);\n try {\n elem = document.querySelector(`#${CSS.escape(id)}`);\n } catch {\n elem = null;\n }\n if (!elem) throw new Error(`Could not find element with id ${id}`);\n }\n if (!elem?.tagName) throw new Error('Must specify either an element or an element id.');\n if (elem.tagName !== 'VIDEO') throw new Error('Element is not a video tag.');\n return elem;\n};\nconst preparePlayerPlaceholder = function (videoElement, posterUrl) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const hadControls = videoElement.hasAttribute('controls');\n videoElement.poster = posterUrl;\n videoElement.preload = 'none';\n videoElement.controls = false;\n videoElement.removeAttribute('controls');\n const fluid = options.fluid !== false;\n if (fluid) {\n videoElement.classList.add(FLUID_CLASS);\n }\n if (options.width) videoElement.setAttribute('width', String(options.width));\n if (options.height) videoElement.setAttribute('height', String(options.height));\n const ar = options?.sourceOptions?.aspectRatio || options?.aspectRatio;\n if (typeof ar === 'string' && ar.includes(':')) {\n const parts = ar.split(':').map(x => parseInt(x.trim(), 10));\n if (parts.length === 2 && parts[0] > 0 && parts[1] > 0) {\n videoElement.style.aspectRatio = `${parts[0]} / ${parts[1]}`;\n }\n }\n return {\n videoElement,\n hadControls\n };\n};\nconst loadPlayer = _ref => {\n let {\n overlayRoot,\n videoElement,\n options,\n ready\n } = _ref;\n if (overlayRoot?.parentNode) {\n overlayRoot.replaceWith(videoElement);\n }\n return Promise.all(/*! import() */[__webpack_require__.e(\"styles\"), __webpack_require__.e(\"cld-player-core\")]).then(__webpack_require__.bind(__webpack_require__, /*! ../video-player.js */ \"./video-player.js\")).then(m => m.createVideoPlayer(videoElement, options, ready));\n};\nconst LAZY_PLAYER_CLASS = 'cld-lazy-player';\nconst isLightSkin = (videoElement, options) => {\n const cls = videoElement.className || '';\n return cls.indexOf('cld-video-player-skin-light') > -1 || options?.skin === 'light';\n};\n\n/** Matches Video.js BigPlayButton DOM structure. */\nconst createBigPlayButton = () => {\n const playBtn = document.createElement('button');\n playBtn.type = 'button';\n playBtn.className = 'vjs-big-play-button';\n playBtn.setAttribute('aria-disabled', 'false');\n playBtn.title = 'Play Video';\n playBtn.setAttribute('aria-label', 'Play Video');\n const icon = document.createElement('span');\n icon.className = 'vjs-icon-placeholder';\n icon.setAttribute('aria-hidden', 'true');\n playBtn.appendChild(icon);\n return playBtn;\n};\nconst shouldUseLazyBootstrap = options => !!options?.lazy;\nconst shouldLoadOnScroll = lazy => lazy && typeof lazy === 'object' && lazy.loadOnScroll === true;\n\n/**\n * Renders the lazy placeholder (poster, big-play) before the main player chunk loads.\n *\n * @param {string|HTMLVideoElement} elem\n * @param {object} options\n * @param {function} [ready] - Passed through when the full player loads.\n * @returns {Promise<{ source: function, loadPlayer: function }>}\n */\nconst lazyBootstrap = async (elem, options, ready) => {\n const videoElement = getVideoElement(elem);\n const posterUrl = hasExplicitPoster(options) ? options.poster : (await __webpack_require__.e(/*! import() | cld-poster-url */ \"cld-poster-url\").then(__webpack_require__.bind(__webpack_require__, /*! ./poster-url */ \"./utils/poster-url.js\"))).getPosterUrl(options);\n const loadOnScroll = shouldLoadOnScroll(options.lazy);\n const fluidEnabled = options?.fluid !== false;\n const {\n hadControls\n } = preparePlayerPlaceholder(videoElement, posterUrl, {\n fluid: fluidEnabled,\n width: options?.width,\n height: options?.height,\n sourceOptions: options?.sourceOptions,\n aspectRatio: options?.aspectRatio\n });\n const light = isLightSkin(videoElement, options);\n const overlayRoot = document.createElement('div');\n overlayRoot.classList.add('cld-video-player', 'video-js', LAZY_PLAYER_CLASS);\n // Fluid rules are `.cld-video-player.cld-fluid`; placeholder `<video>` alone cannot satisfy that selector.\n if (fluidEnabled) {\n overlayRoot.classList.add(FLUID_CLASS);\n }\n overlayRoot.classList.add(light ? 'cld-video-player-skin-light' : 'cld-video-player-skin-dark');\n const colors = options?.colors;\n if (colors) {\n if (colors.base) overlayRoot.style.setProperty('--color-base', colors.base);\n if (colors.accent) overlayRoot.style.setProperty('--color-accent', colors.accent);\n if (colors.text) overlayRoot.style.setProperty('--color-text', colors.text);\n }\n videoElement.parentNode.insertBefore(overlayRoot, videoElement);\n overlayRoot.appendChild(videoElement);\n const playBtn = createBigPlayButton();\n overlayRoot.appendChild(playBtn);\n let loadPromise = null;\n let observer = null;\n const teardownActivation = () => {\n playBtn.removeEventListener('click', onPlayClick);\n videoElement.removeEventListener('click', onVideoClick);\n if (observer) {\n observer.disconnect();\n observer = null;\n }\n };\n const activatePlayer = function () {\n let activationOpts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (loadPromise) {\n return loadPromise;\n }\n teardownActivation();\n const autoplayFromUserGesture = activationOpts.autoplayFromUserGesture === true;\n if (hadControls) videoElement.setAttribute('controls', '');\n const wrappedReady = autoplayFromUserGesture ? p => {\n p.play();\n if (ready) ready(p);\n } : ready;\n const playerOptions = Object.assign({}, options);\n delete playerOptions.lazy;\n loadPromise = loadPlayer({\n overlayRoot,\n videoElement,\n options: playerOptions,\n ready: wrappedReady\n });\n return loadPromise;\n };\n function onPlayClick(e) {\n e.stopPropagation();\n activatePlayer({\n autoplayFromUserGesture: true\n });\n }\n function onVideoClick() {\n activatePlayer({\n autoplayFromUserGesture: true\n });\n }\n playBtn.addEventListener('click', onPlayClick);\n videoElement.addEventListener('click', onVideoClick);\n if (loadOnScroll && typeof IntersectionObserver !== 'undefined') {\n observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n activatePlayer({});\n }\n });\n }, {\n rootMargin: '0px',\n threshold: 0.25\n });\n observer.observe(videoElement);\n }\n const stub = {\n source: () => stub,\n loadPlayer: () => activatePlayer({\n autoplayFromUserGesture: true\n })\n };\n return stub;\n};\n\n//# sourceURL=webpack:///./utils/lazy-player.js?\n}");
|
|
760
782
|
|
|
761
783
|
/***/ },
|
|
762
784
|
|
|
@@ -771,17 +793,6 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
771
793
|
|
|
772
794
|
/***/ },
|
|
773
795
|
|
|
774
|
-
/***/ "./utils/object.js"
|
|
775
|
-
/*!*************************!*\
|
|
776
|
-
!*** ./utils/object.js ***!
|
|
777
|
-
\*************************/
|
|
778
|
-
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
779
|
-
|
|
780
|
-
"use strict";
|
|
781
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ convertKeysToSnakeCase: () => (/* binding */ convertKeysToSnakeCase)\n/* harmony export */ });\n/* harmony import */ var lodash_snakeCase__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/snakeCase */ \"../node_modules/lodash/snakeCase.js\");\n/* harmony import */ var lodash_snakeCase__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_snakeCase__WEBPACK_IMPORTED_MODULE_0__);\n\nconst convertKeysToSnakeCase = obj => {\n let snakeCaseObj = {};\n for (const key of Object.keys(obj)) {\n const snakeCaseKey = lodash_snakeCase__WEBPACK_IMPORTED_MODULE_0___default()(key);\n snakeCaseObj[snakeCaseKey] = obj[key];\n }\n return snakeCaseObj;\n};\n\n//# sourceURL=webpack:///./utils/object.js?\n}");
|
|
782
|
-
|
|
783
|
-
/***/ },
|
|
784
|
-
|
|
785
796
|
/***/ "./utils/player-api.js"
|
|
786
797
|
/*!*****************************!*\
|
|
787
798
|
!*** ./utils/player-api.js ***!
|
|
@@ -789,7 +800,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
789
800
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
790
801
|
|
|
791
802
|
"use strict";
|
|
792
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createAsyncPlayer: () => (/* binding */ createAsyncPlayer),\n/* harmony export */ createMultiplePlayers: () => (/* binding */ createMultiplePlayers),\n/* harmony export */ createMultipleSync: () => (/* binding */ createMultipleSync),\n/* harmony export */ setupCloudinaryGlobal: () => (/* binding */ setupCloudinaryGlobal)\n/* harmony export */ });\n/* harmony import */ var _lazy_player__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lazy-player */ \"./utils/lazy-player.js\");\n\n\nconst createAsyncPlayer = async (id, playerOptions, ready, createFn) => {\n const mergedOptions = Object.assign({}, playerOptions);\n const videoElement = (0,_lazy_player__WEBPACK_IMPORTED_MODULE_0__.getVideoElement)(id);\n const opts = await (async () => {\n try {\n const {\n fetchAndMergeConfig\n } = await
|
|
803
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createAsyncPlayer: () => (/* binding */ createAsyncPlayer),\n/* harmony export */ createMultiplePlayers: () => (/* binding */ createMultiplePlayers),\n/* harmony export */ createMultipleSync: () => (/* binding */ createMultipleSync),\n/* harmony export */ setupCloudinaryGlobal: () => (/* binding */ setupCloudinaryGlobal)\n/* harmony export */ });\n/* harmony import */ var _lazy_player__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lazy-player */ \"./utils/lazy-player.js\");\n\n\nconst createAsyncPlayer = async (id, playerOptions, ready, createFn) => {\n const mergedOptions = Object.assign({}, playerOptions);\n const videoElement = (0,_lazy_player__WEBPACK_IMPORTED_MODULE_0__.getVideoElement)(id);\n const opts = await (async () => {\n try {\n const {\n fetchAndMergeConfig\n } = await __webpack_require__.e(/*! import() */ \"utils_fetch-config_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./fetch-config */ \"./utils/fetch-config.js\"));\n const fetched = await fetchAndMergeConfig(mergedOptions);\n return Object.assign({}, fetched, mergedOptions);\n } catch {\n return mergedOptions;\n }\n })();\n if (opts?.schedule?.weekly) {\n const {\n shouldUseScheduleBootstrap,\n scheduleBootstrap\n } = await __webpack_require__.e(/*! import() */ \"utils_schedule_js\").then(__webpack_require__.bind(__webpack_require__, /*! ./schedule */ \"./utils/schedule.js\"));\n if (shouldUseScheduleBootstrap(opts)) {\n return scheduleBootstrap(id, opts, ready);\n }\n }\n if ((0,_lazy_player__WEBPACK_IMPORTED_MODULE_0__.shouldUseLazyBootstrap)(opts)) {\n return (0,_lazy_player__WEBPACK_IMPORTED_MODULE_0__.lazyBootstrap)(id, opts, ready);\n }\n return createFn(videoElement, opts, ready);\n};\nconst createMultiplePlayers = async (selector, playerOptions, ready, playerFn) => {\n const nodeList = document.querySelectorAll(selector);\n return Promise.all([...nodeList].map(node => playerFn(node, playerOptions, ready)));\n};\nconst createMultipleSync = (selector, playerOptions, ready, playerFn) => {\n const nodeList = document.querySelectorAll(selector);\n return [...nodeList].map(node => playerFn(node, playerOptions, ready));\n};\nconst setupCloudinaryGlobal = methods => {\n const cloudinary = {\n ...(window.cloudinary || {}),\n ...methods\n };\n window.cloudinary = cloudinary;\n return cloudinary;\n};\n\n//# sourceURL=webpack:///./utils/player-api.js?\n}");
|
|
793
804
|
|
|
794
805
|
/***/ },
|
|
795
806
|
|
|
@@ -877,7 +888,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
877
888
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
878
889
|
|
|
879
890
|
"use strict";
|
|
880
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ADS_IN_PLAYLIST: () => (/* binding */ ADS_IN_PLAYLIST),\n/* harmony export */ AUTO_PLAY_MODE: () => (/* binding */ AUTO_PLAY_MODE),\n/* harmony export */ CLOUDINARY_CONFIG_PARAM: () => (/*
|
|
891
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ADS_IN_PLAYLIST: () => (/* binding */ ADS_IN_PLAYLIST),\n/* harmony export */ AUTO_PLAY_MODE: () => (/* binding */ AUTO_PLAY_MODE),\n/* harmony export */ CLOUDINARY_CONFIG_PARAM: () => (/* reexport safe */ _utils_cloudinary_config_param__WEBPACK_IMPORTED_MODULE_0__.CLOUDINARY_CONFIG_PARAM),\n/* harmony export */ CROP_MODE: () => (/* binding */ CROP_MODE),\n/* harmony export */ FLOATING_TO: () => (/* binding */ FLOATING_TO),\n/* harmony export */ FLUID_CLASS_NAME: () => (/* binding */ FLUID_CLASS_NAME),\n/* harmony export */ PLAYER_PARAMS: () => (/* binding */ PLAYER_PARAMS),\n/* harmony export */ PRELOAD: () => (/* binding */ PRELOAD),\n/* harmony export */ SOURCE_PARAMS: () => (/* binding */ SOURCE_PARAMS)\n/* harmony export */ });\n/* harmony import */ var _utils_cloudinary_config_param__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/cloudinary-config-param */ \"./utils/cloudinary-config-param.js\");\n// Parameters that can be passed to source configuration (inherited by source method)\nconst SOURCE_PARAMS = ['adaptiveStreaming', 'allowUsageReport', 'aspectRatio', 'autoShowRecommendations', 'breakpoints', 'chapters', 'cropMode', 'cropPadColor', 'cloudinaryConfig', 'description', 'download', 'hdr', 'info', 'interactionAreas', 'maxDpr', 'poster', 'posterOptions', 'publicId', 'rawTransformation', 'recommendations', 'resourceType', 'shoppable', 'source', 'sourceTransformation', 'sourceTypes', 'textTracks', 'title', 'transformation', 'type', 'visualSearch', 'withCredentials', 'videoSources'];\n\n// All parameters that can be passed to player constructor\nconst PLAYER_PARAMS = SOURCE_PARAMS.concat(['_internalAnalyticsMetadata', 'ads', 'aiHighlightsGraph', 'analytics', 'autoplayMode', 'chaptersButton', 'cloudinaryAnalytics', 'colors', 'debug', 'fetchErrorUsingGet', 'floatingWhenNotVisible', 'fluid', 'fontFace', 'hideContextMenu', 'ima', 'pictureInPictureToggle', 'playedEventPercents', 'playedEventTimes', 'playlistWidget', 'profile', 'qualitySelector', 'queryParams', 'seekThumbnails', 'showJumpControls', 'videoConfig', 'schedule', 'lazy']);\n\n// We support both camelCase and snake_case for cloudinary SDK params\n\nconst FLUID_CLASS_NAME = 'cld-fluid';\nconst AUTO_PLAY_MODE = {\n ALWAYS: 'always',\n ON_SCROLL: 'on-scroll',\n NEVER: 'never'\n};\nconst FLOATING_TO = {\n LEFT: 'left',\n RIGHT: 'right',\n NONE: 'none'\n};\nconst ADS_IN_PLAYLIST = {\n FIRST_VIDEO: 'first-video',\n EVERY_VIDEO: 'every-video'\n};\nconst PRELOAD = {\n AUTO: 'auto',\n METADATA: 'metadata',\n NONE: 'none'\n};\nconst CROP_MODE = {\n FILL: 'fill',\n PAD: 'pad',\n SMART: 'smart'\n};\n\n//# sourceURL=webpack:///./video-player.const.js?\n}");
|
|
881
892
|
|
|
882
893
|
/***/ },
|
|
883
894
|
|
|
@@ -888,7 +899,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
888
899
|
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
889
900
|
|
|
890
901
|
"use strict";
|
|
891
|
-
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createPlayerWithConfig: () => (/* binding */ createPlayerWithConfig),\n/* harmony export */ createVideoPlayer: () => (/* binding */ createVideoPlayer),\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 uuid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! uuid */ \"../node_modules/uuid/dist/v4.js\");\n/* harmony import */ var lodash_isEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isEmpty */ \"../node_modules/lodash/isEmpty.js\");\n/* harmony import */ var lodash_isEmpty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isEmpty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/get */ \"../node_modules/lodash/get.js\");\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_pick__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/pick */ \"../node_modules/lodash/pick.js\");\n/* harmony import */ var lodash_pick__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_pick__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash/isFunction */ \"../node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash/isObject */ \"../node_modules/lodash/isObject.js\");\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_isObject__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash/isString */ \"../node_modules/lodash/isString.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_isString__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components */ \"./components/index.js\");\n/* harmony import */ var _plugins__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./plugins */ \"./plugins/index.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utils */ \"./utils/index.js\");\n/* harmony import */ var _config_defaults__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./config/defaults */ \"./config/defaults.js\");\n/* harmony import */ var _utils_setup_event_methods__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils/setup-event-methods */ \"./utils/setup-event-methods.js\");\n/* harmony import */ var _extended_events__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./extended-events */ \"./extended-events.js\");\n/* harmony import */ var _plugins_cloudinary_models_video_source_video_source__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./plugins/cloudinary/models/video-source/video-source */ \"./plugins/cloudinary/models/video-source/video-source.js\");\n/* harmony import */ var _video_player_utils__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./video-player.utils */ \"./video-player.utils.js\");\n/* harmony import */ var _video_player_const__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./video-player.const */ \"./video-player.const.js\");\n/* harmony import */ var _validators_validators_functions__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./validators/validators-functions */ \"./validators/validators-functions.js\");\n/* harmony import */ var _utils_consts__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./utils/consts */ \"./utils/consts.js\");\n/* harmony import */ var _utils_get_analytics_player_options__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./utils/get-analytics-player-options */ \"./utils/get-analytics-player-options.js\");\n/* harmony import */ var _plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./plugins/cloudinary/common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var _utils_video_retry__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./utils/video-retry */ \"./utils/video-retry.js\");\n/* harmony import */ var _utils_querystring__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./utils/querystring */ \"./utils/querystring.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst INTERNAL_ANALYTICS_URL = 'https://analytics-api-s.cloudinary.com';\nconst RETRY_DEFAULT_TIMEOUT = 5 * 1000;\n\n// Register all plugins\nObject.keys(_plugins__WEBPACK_IMPORTED_MODULE_9__[\"default\"]).forEach(key => {\n video_js__WEBPACK_IMPORTED_MODULE_0___default().registerPlugin(key, _plugins__WEBPACK_IMPORTED_MODULE_9__[\"default\"][key]);\n});\n(0,_video_player_utils__WEBPACK_IMPORTED_MODULE_15__.overrideDefaultVideojsComponents)();\nclass VideoPlayer {\n static all(selector) {\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 const nodeList = document.querySelectorAll(selector);\n return [...nodeList].map(node => new VideoPlayer(node, ...args));\n }\n get playerOptions() {\n return this.options.playerOptions;\n }\n constructor(elem, options, ready) {\n this.videoElement = elem;\n this.options = (0,_video_player_utils__WEBPACK_IMPORTED_MODULE_15__.splitOptions)(options);\n this._videojsOptions = this.options.videojsOptions;\n\n // Make sure to add 'video-js' class before creating videojs instance\n this.videoElement.classList.add('video-js');\n\n // Handle WebFont loading\n _utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].fontFace(this.videoElement, this.playerOptions.fontFace);\n\n // Handle play button options\n if (this._videojsOptions.bigPlayButton === 'init') {\n this.videoElement.classList.add('vjs-big-play-button-init-only');\n this._videojsOptions.bigPlayButton = true;\n }\n this.videojs = video_js__WEBPACK_IMPORTED_MODULE_0___default()(this.videoElement, this._videojsOptions);\n\n // Setup event methods (on, one, off, trigger)\n (0,_utils_setup_event_methods__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(this, this.videojs);\n this._isPlayerConfigValid = true;\n if (this.playerOptions.debug) {\n (0,_validators_validators_functions__WEBPACK_IMPORTED_MODULE_17__.isValidPlayerConfig)(this.options).then(valid => {\n if (!valid) {\n this._isPlayerConfigValid = false;\n this.videojs.error('invalid player configuration');\n return;\n }\n });\n }\n if (this._videojsOptions.muted) {\n this.videojs.volume(0.4);\n }\n if (this.playerOptions.fluid) {\n this.fluid(this.playerOptions.fluid);\n }\n this._setCssClasses();\n this._initPlugins();\n this._initJumpButtons();\n this._initPictureInPicture();\n this._initBigPauseButton();\n this._setVideoJsListeners(ready);\n }\n getVPInstanceId() {\n if (!this.vpInstanceId) {\n this.vpInstanceId = (0,uuid__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n }\n return this.vpInstanceId;\n }\n _sendInternalAnalytics() {\n let additionalOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const options = Object.assign({}, this.playerOptions, this.options.videojsOptions, additionalOptions);\n if (!options.sourceOptions?.allowUsageReport) {\n return;\n }\n try {\n const internalAnalyticsMetadata = options._internalAnalyticsMetadata ?? {};\n const analyticsData = (0,_utils_get_analytics_player_options__WEBPACK_IMPORTED_MODULE_19__.getAnalyticsFromPlayerOptions)(options);\n const analyticsParams = new URLSearchParams(analyticsData).toString();\n const baseParams = new URLSearchParams({\n vpVersion: \"3.14.1\",\n vpInstanceId: this.getVPInstanceId(),\n cloudName: options.cloudinary.cloud_name,\n ...internalAnalyticsMetadata\n }).toString();\n fetch(`${INTERNAL_ANALYTICS_URL}/video_player_source?${analyticsParams}&${baseParams}`);\n } catch (err) {\n console.warn(err);\n }\n }\n _resetReTryVideoState = () => {\n this.reTryVideoStateRetriesCount = 0;\n this.videojs.clearTimeout(this.reTryVideoStateTimeoutId);\n };\n _handleRefresh = () => {\n this.videojs.error(null);\n const src = this.currentPublicId() || this.currentSourceUrl();\n if (src) {\n this.source(src, this.playerOptions.sourceOptions || {});\n }\n };\n _setVideoJsListeners(ready) {\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.ERROR, () => {\n const error = this.videojs.error();\n if (error) {\n const type = this._isPlayerConfigValid && this.videojs.cloudinary.currentSourceType();\n\n /*\n error codes :\n 3 - media playback was aborted due to a corruption problem\n 4 - media error, media source not supported\n */\n const isCorrupted = error.code === 3 && (video_js__WEBPACK_IMPORTED_MODULE_0___default().browser).IS_SAFARI;\n if ([isCorrupted, error.code === 4].includes(true) && [_utils_consts__WEBPACK_IMPORTED_MODULE_18__.SOURCE_TYPE.AUDIO, _utils_consts__WEBPACK_IMPORTED_MODULE_18__.SOURCE_TYPE.VIDEO].includes(type)) {\n if (this.isLiveStream) {\n this.videojs.error({\n code: _plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_20__.ERROR_CODE.CUSTOM,\n message: 'Live Stream not started'\n });\n this.reloadVideoUntilAvailable();\n } else {\n this.videojs.error(null);\n _utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].handleCldError(this, this.playerOptions);\n }\n } else {\n this._resetReTryVideoState();\n }\n }\n });\n this.videojs.tech_.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.RETRY_PLAYLIST, () => {\n const mediaRequestsErrored = lodash_get__WEBPACK_IMPORTED_MODULE_3___default()(this.videojs, 'hls.stats.mediaRequestsErrored', 0);\n if (mediaRequestsErrored > 0) {\n this._resetReTryVideoState();\n _utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].handleCldError(this, this.playerOptions);\n }\n });\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.PLAY, this._resetReTryVideoState);\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.CAN_PLAY_THROUGH, this._resetReTryVideoState);\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.CLD_SOURCE_CHANGED, this._onSourceChange.bind(this));\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.REFRESH, this._handleRefresh.bind(this));\n this.videojs.ready(() => {\n this._onReady();\n this._applyVolumeBarAriaLiveFix();\n if (ready) {\n ready(this);\n }\n });\n }\n _initPlugins() {\n this._initIma();\n this._initAutoplay();\n this._initContextMenu();\n this._initPerSrcBehaviors();\n this._initCloudinary();\n this._initAnalytics();\n this._initCloudinaryAnalytics();\n this._initFloatingPlayer();\n this._initVisualSearch();\n this._initShare();\n this._initColors();\n this._initTextTracks();\n this._initHighlightsGraph();\n this._initSeekThumbs();\n this._initChapters();\n this._initInteractionAreas();\n this._initSourceSwitcher();\n }\n _isFullScreen() {\n return this.videojs.player().isFullscreen();\n }\n _initIma() {\n if (this.playerOptions.ads && Object.keys(this.playerOptions.ads).length !== 0) {\n _plugins__WEBPACK_IMPORTED_MODULE_9__[\"default\"].imaPlugin(this.videojs, this.playerOptions);\n }\n }\n setTextTracks(conf) {\n this.textTracksManager.removeAllTextTracks();\n if (conf) {\n const kinds = Object.keys(conf);\n const allTracks = [];\n for (const kind of kinds) {\n if (kind !== 'options') {\n const tracks = Array.isArray(conf[kind]) ? conf[kind] : [conf[kind]];\n for (const track of tracks) {\n allTracks.push({\n ...track,\n kind: kind,\n label: track.label,\n srclang: track.language,\n default: !!track.default,\n src: track.url\n });\n }\n }\n }\n this.textTracksManager.addTextTracks(allTracks);\n if (conf.options && this.videojs.styledTextTracks) {\n this.videojs.styledTextTracks(conf.options);\n }\n }\n }\n _initSeekThumbs() {\n if (this.playerOptions.seekThumbnails) {\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref) => {\n let {\n source\n } = _ref;\n if (!source || source.getType() === _utils_consts__WEBPACK_IMPORTED_MODULE_18__.SOURCE_TYPE.AUDIO ||\n // Is Audio\n source.resourceConfig().type === 'live' ||\n // Is live stream\n (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_20__.isRawUrl)(source.publicId()) ||\n // Is a raw url\n this.videojs.activePlugins_ && this.videojs.activePlugins_.vr // It's a VR (i.e. 360)\n ) {\n return;\n }\n const publicId = source.publicId();\n const transformation = (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_20__.omitVideoOnlyTransformations)(Object.assign({}, source.transformation()));\n\n // fl_sprite must be in a separate URL component when transformation has params\n const spriteTx = [...(Array.isArray(transformation) ? transformation : [transformation]), {\n flags: ['sprite']\n }];\n const vttUrl = source.config().url(`${publicId}.vtt`, {\n transformation: spriteTx\n }).replace(/\\.json$/, ''); // Handle playlist by tag\n const vttSrc = (0,_utils_querystring__WEBPACK_IMPORTED_MODULE_22__.appendQueryParams)(vttUrl, source.queryParams());\n\n // vttThumbnails must be called differently on init and on source update.\n lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(this.videojs.vttThumbnails) ? this.videojs.vttThumbnails({\n src: vttSrc\n }) : this.videojs.vttThumbnails.src(vttSrc);\n });\n }\n }\n _initHighlightsGraph() {\n if (this.playerOptions.aiHighlightsGraph) {\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref2) => {\n let {\n source\n } = _ref2;\n if (!source || source.getType() === _utils_consts__WEBPACK_IMPORTED_MODULE_18__.SOURCE_TYPE.AUDIO ||\n // Is Audio\n (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_20__.isRawUrl)(source.publicId()) // Is a raw url\n ) {\n return;\n }\n const publicId = source.publicId();\n\n // Keep video-length related transformations and remove the rest\n const inputTransformations = lodash_pick__WEBPACK_IMPORTED_MODULE_4___default()(source.transformation(), ['start_offset', 'end_offset', 'duration']);\n const transformation = Object.assign({}, inputTransformations);\n transformation.effect = 'preview';\n transformation.flags = transformation.flags || [];\n transformation.flags.push('getinfo');\n const aiHighlightsGraphUrl = source.config().url(`${publicId}`, {\n transformation\n }).replace(/\\.json$/, ''); // Handle playlist by tag\n const aiHighlightsGraphSrc = (0,_utils_querystring__WEBPACK_IMPORTED_MODULE_22__.appendQueryParams)(aiHighlightsGraphUrl, source.queryParams());\n\n // Plugin is called differently on init and on source update.\n lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(this.videojs.aiHighlightsGraph) ? this.videojs.aiHighlightsGraph({\n src: aiHighlightsGraphSrc\n }) : this.videojs.aiHighlightsGraph.src(aiHighlightsGraphSrc);\n });\n }\n }\n _initChapters() {\n if (!this.playerOptions.chaptersButton && this.videojs.controlBar) {\n this.videojs.controlBar.removeChild('chaptersButton');\n }\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref3) => {\n let {\n source\n } = _ref3;\n if ((!lodash_isEmpty__WEBPACK_IMPORTED_MODULE_2___default()(source?._chapters) || source?._chapters === true) && this.videojs.chapters) {\n lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(this.videojs.chapters) ? this.videojs.chapters(source._chapters) : this.videojs.chapters.src(source._chapters);\n } else if (this.videojs.chapters?.resetPlugin) {\n this.videojs.chapters.resetPlugin();\n }\n });\n }\n _initInteractionAreas() {\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.READY, async () => {\n if (this.options.videojsOptions.interactionDisplay && this.videojs.interactionAreas) {\n this.videojs.interactionAreas(this, this.playerOptions, this._videojsOptions);\n }\n });\n }\n _initVisualSearch() {\n // Listen for source changes to apply visual search based on source config\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref4) => {\n let {\n source\n } = _ref4;\n if (source?._visualSearch && this.videojs.visualSearch) {\n lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(this.videojs.visualSearch) ? this.videojs.visualSearch(source._visualSearch) : this.videojs.visualSearch.createSearchUI(source._visualSearch);\n } else if (!source?._visualSearch && this.videojs.visualSearch?.clearUI) {\n this.videojs.visualSearch.clearUI();\n }\n });\n }\n _initShare() {\n // Listen for source changes to apply Share plugin based on source config\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref5) => {\n let {\n source\n } = _ref5;\n if (!this.videojs.share) {\n return;\n }\n\n // First time: initialise plugin if necessary\n if (source?._download && lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(this.videojs.share)) {\n this.videojs.share({\n download: true\n });\n }\n if (!lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(this.videojs.share)) {\n // Plugin already initialised – update UI accordingly\n if (source?._download) {\n this.videojs.share.addDownloadButton?.();\n } else {\n this.videojs.share.removeDownloadButton?.();\n }\n }\n });\n }\n _initColors() {\n if (this.playerOptions.colors) {\n this.videojs.colors({\n colors: this.playerOptions.colors\n });\n }\n }\n _initTextTracks() {\n this.textTracksManager = this.videojs.textTracksManager();\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref6) => {\n let {\n source\n } = _ref6;\n if (source?._textTracks) {\n this.setTextTracks(source._textTracks);\n }\n });\n }\n _initPerSrcBehaviors() {\n if (this.videojs.perSourceBehaviors) {\n this.videojs.perSourceBehaviors();\n }\n }\n _initJumpButtons() {\n if (!this.playerOptions.showJumpControls && this.videojs.controlBar) {\n this.videojs.controlBar.removeChild('JumpForwardButton');\n this.videojs.controlBar.removeChild('JumpBackButton');\n }\n }\n _initPictureInPicture() {\n if (!this.playerOptions.pictureInPictureToggle && this.videojs.controlBar) {\n this.videojs.controlBar.removeChild('pictureInPictureToggle');\n }\n }\n _initBigPauseButton() {\n if ((video_js__WEBPACK_IMPORTED_MODULE_0___default().browser).IS_IOS || (video_js__WEBPACK_IMPORTED_MODULE_0___default().browser).IS_ANDROID) {\n this.videojs.addChild('BigPauseButton');\n }\n }\n _initCloudinary() {\n const cloudinaryConfig = this.playerOptions.cloudinary;\n cloudinaryConfig.chainTarget = this;\n if (cloudinaryConfig.secure !== false) {\n (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_20__.extendCloudinaryConfig)(cloudinaryConfig, {\n secure: true\n });\n }\n\n // Merge cloudinary config with source config for the plugin\n const cloudinaryOptions = {\n cloudinaryConfig,\n ...this.playerOptions.sourceOptions\n };\n this.videojs.cloudinary(cloudinaryOptions);\n }\n _initAnalytics() {\n const analyticsOpts = this.playerOptions.analytics;\n if (!window.gtag && analyticsOpts) {\n console.error('Google Analytics script (gtag) is missing.');\n return;\n }\n if (analyticsOpts) {\n const opts = typeof analyticsOpts === 'object' ? analyticsOpts : {};\n this.videojs.analytics(opts);\n }\n }\n _initCloudinaryAnalytics() {\n const cloudinaryAnalyticsOptionEnabled = !!this.playerOptions.cloudinaryAnalytics;\n if (cloudinaryAnalyticsOptionEnabled) {\n this.videojs.videoElement = this.videoElement;\n const options = lodash_isObject__WEBPACK_IMPORTED_MODULE_6___default()(this.playerOptions.cloudinaryAnalytics) ? this.playerOptions.cloudinaryAnalytics : {};\n this.videojs.cloudinaryAnalytics(options);\n }\n }\n _initSourceSwitcher() {\n this.sourceSwitcher = this.videojs.sourceSwitcher();\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref7) => {\n let {\n source\n } = _ref7;\n const videoSources = source.videoSources?.();\n const isSourcesListAvailable = Array.isArray(videoSources) ? !!videoSources.length : false;\n if (this.videojs.controlBar) {\n const method = isSourcesListAvailable ? 'show' : 'hide';\n const element = this.videojs.controlBar.getChild('sourceSwitcherButton');\n if (element && typeof element?.[method] === 'function') {\n element[method]();\n }\n }\n if (isSourcesListAvailable) {\n const selectedIndex = videoSources.findIndex(_ref8 => {\n let {\n publicId\n } = _ref8;\n return publicId === source.publicId();\n });\n this.sourceSwitcher.reInit({\n sources: videoSources,\n selectedIndex: selectedIndex === -1 ? 0 : selectedIndex,\n onSourceChange: _ref9 => {\n let {\n publicId,\n ...newSourceOptions\n } = _ref9;\n return this.source(publicId, {\n ...newSourceOptions,\n videoSources\n });\n }\n });\n }\n });\n if (Array.isArray(this.playerOptions.sourceOptions?.videoSources) && this.playerOptions.sourceOptions?.videoSources.length) {\n // eslint-disable-next-line no-unused-vars\n const {\n publicId,\n label,\n ...videoSourceData\n } = this.playerOptions.sourceOptions.videoSources[0];\n this.source(publicId, {\n ...videoSourceData,\n videoSources: this.playerOptions.sourceOptions.videoSources\n });\n }\n }\n reTryVideoStateUntilAvailable() {\n let maxNumberOfCalls = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.POSITIVE_INFINITY;\n let timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : RETRY_DEFAULT_TIMEOUT;\n if (typeof this.reTryVideoStateRetriesCount !== 'number') {\n this.reTryVideoStateRetriesCount = 0;\n }\n if (!(0,_utils_video_retry__WEBPACK_IMPORTED_MODULE_21__.isVideoInReadyState)(this.videojs.readyState())) {\n if (this.reTryVideoStateRetriesCount < maxNumberOfCalls) {\n this.reTryVideoStateRetriesCount++;\n this.reTryVideoStateTimeoutId = this.videojs.setTimeout(() => this.reTryVideoStateUntilAvailable(maxNumberOfCalls, timeout), timeout);\n } else {\n let e = new Error('Video is not ready please try later');\n this.videojs.trigger('error', e);\n }\n } else {\n this.reTryVideoStateRetriesCount = 0;\n }\n }\n _resetReloadVideo = () => {\n this.reloadVideoRetriesCount = 0;\n this.videojs.clearTimeout(this.reloadVideoTimeoutId);\n };\n reloadVideoUntilAvailable() {\n let maxNumberOfCalls = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.POSITIVE_INFINITY;\n let timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : RETRY_DEFAULT_TIMEOUT;\n if (typeof this.reloadVideoRetriesCount !== 'number') {\n this.reloadVideoRetriesCount = 0;\n }\n if (this.reloadVideoRetriesCount < maxNumberOfCalls) {\n this.reloadVideoRetriesCount++;\n this.reloadVideoTimeoutId = this.videojs.setTimeout(() => {\n const videoUrl = this.currentSourceUrl();\n (0,_utils_video_retry__WEBPACK_IMPORTED_MODULE_21__.checkIfVideoIsAvailable)(videoUrl, this.isLiveStream ? 'live' : 'default').then(() => this.source(videoUrl)).catch(() => this.reloadVideoUntilAvailable(maxNumberOfCalls, timeout));\n }, timeout);\n } else {\n this.videojs.trigger('error', new Error('Sorry, we could not load your video'));\n }\n }\n _initAutoplay() {\n const autoplayMode = this.playerOptions.autoplayMode;\n if (autoplayMode === 'on-scroll') {\n this.videojs.autoplayOnScroll();\n }\n }\n _initContextMenu() {\n if (!this.playerOptions.hideContextMenu) {\n this.videojs.contextMenu(_config_defaults__WEBPACK_IMPORTED_MODULE_11__[\"default\"].contextMenu);\n }\n }\n _initFloatingPlayer() {\n if (this.playerOptions.floatingWhenNotVisible !== _video_player_const__WEBPACK_IMPORTED_MODULE_16__.FLOATING_TO.NONE) {\n this.videojs.floatingPlayer({\n floatTo: this.playerOptions.floatingWhenNotVisible\n });\n }\n }\n _setCssClasses() {\n this.videojs.addClass(_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].CLASS_PREFIX);\n this.videojs.addClass(_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].playerClassPrefix(this.videojs));\n _utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].setSkinClassPrefix(this.videojs, _utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].skinClassPrefix(this.videojs));\n }\n _onReady() {\n this._setExtendedEvents();\n\n // Load first video (mainly to support video tag 'source' and 'public-id' attributes)\n // Source parameters are set to playerOptions.sourceOptions\n const source = this.playerOptions.sourceOptions.source || this.playerOptions.sourceOptions.publicId;\n if (source) {\n const sourceOptions = Object.assign({}, this.playerOptions.sourceOptions);\n this.source(source, sourceOptions);\n }\n }\n\n /**\n * Temporary fix: remove aria-live from VolumeBar to avoid NVDA repeated announcements.\n * TODO: Remove when Video.js includes the upstream fix (nvaccess/nvda#7996).\n */\n _applyVolumeBarAriaLiveFix() {\n const volumeBar = this.videojs.$('.vjs-volume-bar');\n if (volumeBar) {\n volumeBar.removeAttribute('aria-live');\n }\n }\n _onSourceChange(e, _ref0) {\n let {\n source,\n sourceOptions\n } = _ref0;\n this._sendInternalAnalytics({\n ...(sourceOptions && {\n sourceOptions\n })\n });\n this.isLiveStream = source?.resourceConfig()?.type === 'live';\n }\n _setExtendedEvents() {\n const events = [];\n\n // Add user-configured events; ExtendedEvents will merge with defaults\n if (this.playerOptions.playedEventPercents) {\n events.push({\n type: _utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.PERCENTS_PLAYED,\n percents: this.playerOptions.playedEventPercents\n });\n }\n if (this.playerOptions.playedEventTimes) {\n events.push({\n type: _utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.TIME_PLAYED,\n times: this.playerOptions.playedEventTimes\n });\n }\n const extendedEvents = new _extended_events__WEBPACK_IMPORTED_MODULE_13__[\"default\"](this.videojs, {\n events\n });\n\n // Forward all extended events to the main player for developer access\n Object.keys(extendedEvents.events).forEach(_event => {\n extendedEvents.on(_event, (event, data) => {\n this.videojs.trigger({\n type: _event,\n eventData: data\n });\n });\n });\n }\n cloudinaryConfig(config) {\n return this.videojs.cloudinary.cloudinaryConfig(config);\n }\n currentPublicId() {\n return this.videojs.cloudinary.currentPublicId();\n }\n currentSourceUrl() {\n return this.videojs.currentSource().src;\n }\n currentPoster() {\n return this.videojs.cloudinary.currentPoster();\n }\n source(publicId) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n ({\n publicId,\n options\n } = (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_20__.normalizeOptions)(publicId, options));\n if (!this._isPlayerConfigValid) {\n return;\n }\n if (this.playerOptions.debug) {\n options.debug = true;\n (0,_validators_validators_functions__WEBPACK_IMPORTED_MODULE_17__.isValidSourceConfig)(options).then(valid => {\n if (!valid) {\n this.videojs.error('invalid source configuration');\n }\n });\n }\n if (publicId instanceof _plugins_cloudinary_models_video_source_video_source__WEBPACK_IMPORTED_MODULE_14__[\"default\"]) {\n return this.videojs.cloudinary.source(publicId, options);\n }\n\n // Inherit source parameters from player options (source options take precedence)\n const inherited = this.playerOptions.sourceOptions || {};\n options = {\n ...inherited,\n ...options\n };\n if (options.shoppable && this.videojs.shoppable) {\n this.videojs.shoppable(this.videojs, options);\n }\n this._resetReloadVideo();\n this._resetReTryVideoState();\n const maxTries = this.videojs.options_.maxTries || 3;\n const videoReadyTimeout = this.videojs.options_.videoTimeout || 55000;\n this.reTryVideoStateUntilAvailable(maxTries, videoReadyTimeout);\n return this.videojs.cloudinary.source(publicId, options);\n }\n posterOptions(options) {\n return this.videojs.cloudinary.posterOptions(options);\n }\n skin(name) {\n if (name !== undefined && lodash_isString__WEBPACK_IMPORTED_MODULE_7___default()(name)) {\n _utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].setSkinClassPrefix(this.videojs, name);\n }\n return _utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].skinClassPrefix(this.videojs);\n }\n playlist(sources) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.playerOptions.playlistWidget = {\n ...(this.playerOptions.playlistWidget || {\n show: false\n }),\n playlist: true\n };\n options = Object.assign({}, options, {\n playlistWidget: this.playerOptions.playlistWidget\n });\n this.videojs.one(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.READY, async () => {\n const playlistPlugin = await this.videojs.playlist(options);\n playlistPlugin(sources, options);\n });\n return this.videojs.cloudinary.playlist ? this.videojs.cloudinary.playlist(sources, options) : this;\n }\n playlistByTag(tag) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.playerOptions.playlistWidget = {\n ...(this.playerOptions.playlistWidget || {\n show: false\n }),\n playlistByTag: true\n };\n options = Object.assign({}, options, {\n playlistWidget: this.playerOptions.playlistWidget\n });\n return new Promise(resolve => {\n this.videojs.one(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.READY, async () => {\n const playlistPlugin = await this.videojs.playlist(options);\n playlistPlugin(await this.sourcesByTag(tag, options), options);\n resolve(this);\n });\n });\n }\n sourcesByTag(tag) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.videojs.cloudinary.sourcesByTag(tag, options);\n }\n fluid(bool) {\n if (bool === undefined) {\n return this.videojs.fluid();\n }\n if (bool) {\n this.videojs.addClass(_video_player_const__WEBPACK_IMPORTED_MODULE_16__.FLUID_CLASS_NAME);\n } else {\n this.videojs.removeClass(_video_player_const__WEBPACK_IMPORTED_MODULE_16__.FLUID_CLASS_NAME);\n }\n this.videojs.fluid(bool);\n this.videojs.trigger(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.FLUID, bool);\n return this;\n }\n play() {\n this.playWasCalled = true;\n this.videojs.play();\n return this;\n }\n stop() {\n this.pause();\n this.currentTime(0);\n return this;\n }\n playPrevious() {\n this.playlist().playPrevious();\n return this;\n }\n playNext() {\n this.playlist().playNext();\n return this;\n }\n transformation(trans) {\n return this.videojs.cloudinary.transformation(trans);\n }\n sourceTypes(types) {\n return this.videojs.cloudinary.sourceTypes(types);\n }\n sourceTransformation(trans) {\n return this.videojs.cloudinary.sourceTransformation(trans);\n }\n autoShowRecommendations(autoShow) {\n return this.videojs.cloudinary.autoShowRecommendations(autoShow);\n }\n duration() {\n return this.videojs.duration();\n }\n height(dimension) {\n if (!dimension) {\n return this.videojs.height();\n }\n this.videojs.height(dimension);\n return this;\n }\n width(dimension) {\n if (!dimension) {\n return this.videojs.width();\n }\n this.videojs.width(dimension);\n return this;\n }\n volume(volume) {\n if (!volume) {\n return this.videojs.volume();\n }\n this.videojs.volume(volume);\n return this;\n }\n mute() {\n if (!this.isMuted()) {\n this.videojs.muted(true);\n }\n return this;\n }\n unmute() {\n if (this.isMuted()) {\n this.videojs.muted(false);\n }\n return this;\n }\n isMuted() {\n return this.videojs.muted();\n }\n pause() {\n this.videojs.pause();\n return this;\n }\n currentTime(offsetSeconds) {\n if (!offsetSeconds && offsetSeconds !== 0) {\n return this.videojs.currentTime();\n }\n this.videojs.currentTime(offsetSeconds);\n return this;\n }\n maximize() {\n if (!this.isMaximized()) {\n this.videojs.requestFullscreen();\n }\n return this;\n }\n exitMaximize() {\n if (this.isMaximized()) {\n this.videojs.exitFullscreen();\n }\n return this;\n }\n isMaximized() {\n return this.videojs.isFullscreen();\n }\n dispose() {\n this.videojs.dispose();\n }\n controls(bool) {\n if (bool === undefined) {\n return this.videojs.controls();\n }\n this.videojs.controls(bool);\n return this;\n }\n ima() {\n return {\n playAd: this.videojs.ima.playAd\n };\n }\n loop(bool) {\n if (bool === undefined) {\n return this.videojs.loop();\n }\n this.videojs.loop(bool);\n return this;\n }\n el() {\n return this.videojs.el();\n }\n}\nconst mergeDefaults = options => video_js__WEBPACK_IMPORTED_MODULE_0___default().obj.merge({}, _config_defaults__WEBPACK_IMPORTED_MODULE_11__[\"default\"], options);\nconst getConfig = function (elem) {\n let playerOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const videoElement = (0,_video_player_utils__WEBPACK_IMPORTED_MODULE_15__.getResolveVideoElement)(elem);\n const options = (0,_video_player_utils__WEBPACK_IMPORTED_MODULE_15__.extractOptions)(videoElement, playerOptions);\n return {\n videoElement,\n options\n };\n};\nconst createVideoPlayer = function (elem) {\n let playerOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let ready = arguments.length > 2 ? arguments[2] : undefined;\n const {\n videoElement,\n options\n } = getConfig(elem, playerOptions);\n if (options.profile) {\n console.warn('Profile option requires async initialization. Use cloudinary.player() instead of cloudinary.videoPlayer()');\n }\n return new VideoPlayer(videoElement, mergeDefaults(options), ready);\n};\n\n/**\n * Create player with pre-merged config (skips fetch).\n * Used by player() when config was already fetched for schedule check.\n */\nconst createPlayerWithConfig = (elem, mergedOptions, ready) => {\n const {\n videoElement,\n options\n } = getConfig(elem, mergedOptions);\n return new VideoPlayer(videoElement, mergeDefaults(options), ready);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (VideoPlayer);\n\n//# sourceURL=webpack:///./video-player.js?\n}");
|
|
902
|
+
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createPlayerWithConfig: () => (/* binding */ createPlayerWithConfig),\n/* harmony export */ createVideoPlayer: () => (/* binding */ createVideoPlayer),\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 uuid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! uuid */ \"../node_modules/uuid/dist/v4.js\");\n/* harmony import */ var lodash_isEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isEmpty */ \"../node_modules/lodash/isEmpty.js\");\n/* harmony import */ var lodash_isEmpty__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isEmpty__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/get */ \"../node_modules/lodash/get.js\");\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_pick__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/pick */ \"../node_modules/lodash/pick.js\");\n/* harmony import */ var lodash_pick__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_pick__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash/isFunction */ \"../node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash/isObject */ \"../node_modules/lodash/isObject.js\");\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_isObject__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash/isString */ \"../node_modules/lodash/isString.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_isString__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components */ \"./components/index.js\");\n/* harmony import */ var _plugins__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./plugins */ \"./plugins/index.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./utils */ \"./utils/index.js\");\n/* harmony import */ var _config_defaults__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./config/defaults */ \"./config/defaults.js\");\n/* harmony import */ var _utils_setup_event_methods__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils/setup-event-methods */ \"./utils/setup-event-methods.js\");\n/* harmony import */ var _extended_events__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./extended-events */ \"./extended-events.js\");\n/* harmony import */ var _plugins_cloudinary_models_video_source_video_source__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./plugins/cloudinary/models/video-source/video-source */ \"./plugins/cloudinary/models/video-source/video-source.js\");\n/* harmony import */ var _video_player_utils__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./video-player.utils */ \"./video-player.utils.js\");\n/* harmony import */ var _video_player_const__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./video-player.const */ \"./video-player.const.js\");\n/* harmony import */ var _validators_validators_functions__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./validators/validators-functions */ \"./validators/validators-functions.js\");\n/* harmony import */ var _utils_consts__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./utils/consts */ \"./utils/consts.js\");\n/* harmony import */ var _utils_get_analytics_player_options__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./utils/get-analytics-player-options */ \"./utils/get-analytics-player-options.js\");\n/* harmony import */ var _plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./plugins/cloudinary/common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var _utils_video_retry__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./utils/video-retry */ \"./utils/video-retry.js\");\n/* harmony import */ var _utils_querystring__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./utils/querystring */ \"./utils/querystring.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst INTERNAL_ANALYTICS_URL = 'https://analytics-api-s.cloudinary.com';\nconst RETRY_DEFAULT_TIMEOUT = 5 * 1000;\n\n// Register all plugins\nObject.keys(_plugins__WEBPACK_IMPORTED_MODULE_9__[\"default\"]).forEach(key => {\n video_js__WEBPACK_IMPORTED_MODULE_0___default().registerPlugin(key, _plugins__WEBPACK_IMPORTED_MODULE_9__[\"default\"][key]);\n});\n(0,_video_player_utils__WEBPACK_IMPORTED_MODULE_15__.overrideDefaultVideojsComponents)();\nclass VideoPlayer {\n static all(selector) {\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 const nodeList = document.querySelectorAll(selector);\n return [...nodeList].map(node => new VideoPlayer(node, ...args));\n }\n get playerOptions() {\n return this.options.playerOptions;\n }\n constructor(elem, options, ready) {\n this.videoElement = elem;\n this.options = (0,_video_player_utils__WEBPACK_IMPORTED_MODULE_15__.splitOptions)(options);\n this._videojsOptions = this.options.videojsOptions;\n\n // Make sure to add 'video-js' class before creating videojs instance\n this.videoElement.classList.add('video-js');\n\n // Handle WebFont loading\n _utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].fontFace(this.videoElement, this.playerOptions.fontFace);\n\n // Handle play button options\n if (this._videojsOptions.bigPlayButton === 'init') {\n this.videoElement.classList.add('vjs-big-play-button-init-only');\n this._videojsOptions.bigPlayButton = true;\n }\n this.videojs = video_js__WEBPACK_IMPORTED_MODULE_0___default()(this.videoElement, this._videojsOptions);\n\n // Setup event methods (on, one, off, trigger)\n (0,_utils_setup_event_methods__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(this, this.videojs);\n this._isPlayerConfigValid = true;\n if (this.playerOptions.debug) {\n (0,_validators_validators_functions__WEBPACK_IMPORTED_MODULE_17__.isValidPlayerConfig)(this.options).then(valid => {\n if (!valid) {\n this._isPlayerConfigValid = false;\n this.videojs.error('invalid player configuration');\n return;\n }\n });\n }\n if (this._videojsOptions.muted) {\n this.videojs.volume(0.4);\n }\n if (this.playerOptions.fluid) {\n this.fluid(this.playerOptions.fluid);\n }\n this._setCssClasses();\n this._initPlugins();\n this._initJumpButtons();\n this._initPictureInPicture();\n this._initBigPauseButton();\n this._setVideoJsListeners(ready);\n }\n getVPInstanceId() {\n if (!this.vpInstanceId) {\n this.vpInstanceId = (0,uuid__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n }\n return this.vpInstanceId;\n }\n _sendInternalAnalytics() {\n let additionalOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const options = Object.assign({}, this.playerOptions, this.options.videojsOptions, additionalOptions);\n if (!options.sourceOptions?.allowUsageReport) {\n return;\n }\n try {\n const internalAnalyticsMetadata = options._internalAnalyticsMetadata ?? {};\n const analyticsData = (0,_utils_get_analytics_player_options__WEBPACK_IMPORTED_MODULE_19__.getAnalyticsFromPlayerOptions)(options);\n const analyticsParams = new URLSearchParams(analyticsData).toString();\n const baseParams = new URLSearchParams({\n vpVersion: \"3.14.2-edge.1\",\n vpInstanceId: this.getVPInstanceId(),\n cloudName: options.cloudinary.cloud_name,\n ...internalAnalyticsMetadata\n }).toString();\n fetch(`${INTERNAL_ANALYTICS_URL}/video_player_source?${analyticsParams}&${baseParams}`);\n } catch (err) {\n console.warn(err);\n }\n }\n _resetReTryVideoState = () => {\n this.reTryVideoStateRetriesCount = 0;\n this.videojs.clearTimeout(this.reTryVideoStateTimeoutId);\n };\n _handleRefresh = () => {\n this.videojs.error(null);\n const src = this.currentPublicId() || this.currentSourceUrl();\n if (src) {\n this.source(src, this.playerOptions.sourceOptions || {});\n }\n };\n _setVideoJsListeners(ready) {\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.ERROR, () => {\n const error = this.videojs.error();\n if (error) {\n const type = this._isPlayerConfigValid && this.videojs.cloudinary.currentSourceType();\n\n /*\n error codes :\n 3 - media playback was aborted due to a corruption problem\n 4 - media error, media source not supported\n */\n const isCorrupted = error.code === 3 && (video_js__WEBPACK_IMPORTED_MODULE_0___default().browser).IS_SAFARI;\n if ([isCorrupted, error.code === 4].includes(true) && [_utils_consts__WEBPACK_IMPORTED_MODULE_18__.SOURCE_TYPE.AUDIO, _utils_consts__WEBPACK_IMPORTED_MODULE_18__.SOURCE_TYPE.VIDEO].includes(type)) {\n if (this.isLiveStream) {\n this.videojs.error({\n code: _plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_20__.ERROR_CODE.CUSTOM,\n message: 'Live Stream not started'\n });\n this.reloadVideoUntilAvailable();\n } else {\n this.videojs.error(null);\n _utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].handleCldError(this, this.playerOptions);\n }\n } else {\n this._resetReTryVideoState();\n }\n }\n });\n this.videojs.tech_.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.RETRY_PLAYLIST, () => {\n const mediaRequestsErrored = lodash_get__WEBPACK_IMPORTED_MODULE_3___default()(this.videojs, 'hls.stats.mediaRequestsErrored', 0);\n if (mediaRequestsErrored > 0) {\n this._resetReTryVideoState();\n _utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].handleCldError(this, this.playerOptions);\n }\n });\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.PLAY, this._resetReTryVideoState);\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.CAN_PLAY_THROUGH, this._resetReTryVideoState);\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.CLD_SOURCE_CHANGED, this._onSourceChange.bind(this));\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.REFRESH, this._handleRefresh.bind(this));\n this.videojs.ready(() => {\n this._onReady();\n this._applyVolumeBarAriaLiveFix();\n if (ready) {\n ready(this);\n }\n });\n }\n _initPlugins() {\n this._initIma();\n this._initAutoplay();\n this._initContextMenu();\n this._initPerSrcBehaviors();\n this._initCloudinary();\n this._initAnalytics();\n this._initCloudinaryAnalytics();\n this._initFloatingPlayer();\n this._initVisualSearch();\n this._initShare();\n this._initColors();\n this._initTextTracks();\n this._initHighlightsGraph();\n this._initSeekThumbs();\n this._initChapters();\n this._initInteractionAreas();\n this._initSourceSwitcher();\n }\n _isFullScreen() {\n return this.videojs.player().isFullscreen();\n }\n _initIma() {\n if (this.playerOptions.ads && Object.keys(this.playerOptions.ads).length !== 0) {\n _plugins__WEBPACK_IMPORTED_MODULE_9__[\"default\"].imaPlugin(this.videojs, this.playerOptions);\n }\n }\n setTextTracks(conf) {\n this.textTracksManager.removeAllTextTracks();\n if (conf) {\n const kinds = Object.keys(conf);\n const allTracks = [];\n for (const kind of kinds) {\n if (kind !== 'options') {\n const tracks = Array.isArray(conf[kind]) ? conf[kind] : [conf[kind]];\n for (const track of tracks) {\n allTracks.push({\n ...track,\n kind: kind,\n label: track.label,\n srclang: track.language,\n default: !!track.default,\n src: track.url\n });\n }\n }\n }\n this.textTracksManager.addTextTracks(allTracks);\n if (conf.options && this.videojs.styledTextTracks) {\n this.videojs.styledTextTracks(conf.options);\n }\n }\n }\n _initSeekThumbs() {\n if (this.playerOptions.seekThumbnails) {\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref) => {\n let {\n source\n } = _ref;\n if (!source || source.getType() === _utils_consts__WEBPACK_IMPORTED_MODULE_18__.SOURCE_TYPE.AUDIO ||\n // Is Audio\n source.resourceConfig().type === 'live' ||\n // Is live stream\n (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_20__.isRawUrl)(source.publicId()) ||\n // Is a raw url\n this.videojs.activePlugins_ && this.videojs.activePlugins_.vr // It's a VR (i.e. 360)\n ) {\n return;\n }\n const publicId = source.publicId();\n const transformation = (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_20__.omitVideoOnlyTransformations)(Object.assign({}, source.transformation()));\n\n // fl_sprite must be in a separate URL component when transformation has params\n const spriteTx = [...(Array.isArray(transformation) ? transformation : [transformation]), {\n flags: ['sprite']\n }];\n const vttUrl = source.config().url(`${publicId}.vtt`, {\n transformation: spriteTx\n }).replace(/\\.json$/, ''); // Handle playlist by tag\n const vttSrc = (0,_utils_querystring__WEBPACK_IMPORTED_MODULE_22__.appendQueryParams)(vttUrl, source.queryParams());\n\n // vttThumbnails must be called differently on init and on source update.\n lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(this.videojs.vttThumbnails) ? this.videojs.vttThumbnails({\n src: vttSrc\n }) : this.videojs.vttThumbnails.src(vttSrc);\n });\n }\n }\n _initHighlightsGraph() {\n if (this.playerOptions.aiHighlightsGraph) {\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref2) => {\n let {\n source\n } = _ref2;\n if (!source || source.getType() === _utils_consts__WEBPACK_IMPORTED_MODULE_18__.SOURCE_TYPE.AUDIO ||\n // Is Audio\n (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_20__.isRawUrl)(source.publicId()) // Is a raw url\n ) {\n return;\n }\n const publicId = source.publicId();\n\n // Keep video-length related transformations and remove the rest\n const inputTransformations = lodash_pick__WEBPACK_IMPORTED_MODULE_4___default()(source.transformation(), ['start_offset', 'end_offset', 'duration']);\n const transformation = Object.assign({}, inputTransformations);\n transformation.effect = 'preview';\n transformation.flags = transformation.flags || [];\n transformation.flags.push('getinfo');\n const aiHighlightsGraphUrl = source.config().url(`${publicId}`, {\n transformation\n }).replace(/\\.json$/, ''); // Handle playlist by tag\n const aiHighlightsGraphSrc = (0,_utils_querystring__WEBPACK_IMPORTED_MODULE_22__.appendQueryParams)(aiHighlightsGraphUrl, source.queryParams());\n\n // Plugin is called differently on init and on source update.\n lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(this.videojs.aiHighlightsGraph) ? this.videojs.aiHighlightsGraph({\n src: aiHighlightsGraphSrc\n }) : this.videojs.aiHighlightsGraph.src(aiHighlightsGraphSrc);\n });\n }\n }\n _initChapters() {\n if (!this.playerOptions.chaptersButton && this.videojs.controlBar) {\n this.videojs.controlBar.removeChild('chaptersButton');\n }\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref3) => {\n let {\n source\n } = _ref3;\n if ((!lodash_isEmpty__WEBPACK_IMPORTED_MODULE_2___default()(source?._chapters) || source?._chapters === true) && this.videojs.chapters) {\n lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(this.videojs.chapters) ? this.videojs.chapters(source._chapters) : this.videojs.chapters.src(source._chapters);\n } else if (this.videojs.chapters?.resetPlugin) {\n this.videojs.chapters.resetPlugin();\n }\n });\n }\n _initInteractionAreas() {\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.READY, async () => {\n if (this.options.videojsOptions.interactionDisplay && this.videojs.interactionAreas) {\n this.videojs.interactionAreas(this, this.playerOptions, this._videojsOptions);\n }\n });\n }\n _initVisualSearch() {\n // Listen for source changes to apply visual search based on source config\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref4) => {\n let {\n source\n } = _ref4;\n if (source?._visualSearch && this.videojs.visualSearch) {\n lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(this.videojs.visualSearch) ? this.videojs.visualSearch(source._visualSearch) : this.videojs.visualSearch.createSearchUI(source._visualSearch);\n } else if (!source?._visualSearch && this.videojs.visualSearch?.clearUI) {\n this.videojs.visualSearch.clearUI();\n }\n });\n }\n _initShare() {\n // Listen for source changes to apply Share plugin based on source config\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref5) => {\n let {\n source\n } = _ref5;\n if (!this.videojs.share) {\n return;\n }\n\n // First time: initialise plugin if necessary\n if (source?._download && lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(this.videojs.share)) {\n this.videojs.share({\n download: true\n });\n }\n if (!lodash_isFunction__WEBPACK_IMPORTED_MODULE_5___default()(this.videojs.share)) {\n // Plugin already initialised – update UI accordingly\n if (source?._download) {\n this.videojs.share.addDownloadButton?.();\n } else {\n this.videojs.share.removeDownloadButton?.();\n }\n }\n });\n }\n _initColors() {\n if (this.playerOptions.colors) {\n this.videojs.colors({\n colors: this.playerOptions.colors\n });\n }\n }\n _initTextTracks() {\n this.textTracksManager = this.videojs.textTracksManager();\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref6) => {\n let {\n source\n } = _ref6;\n if (source?._textTracks) {\n this.setTextTracks(source._textTracks);\n }\n });\n }\n _initPerSrcBehaviors() {\n if (this.videojs.perSourceBehaviors) {\n this.videojs.perSourceBehaviors();\n }\n }\n _initJumpButtons() {\n if (!this.playerOptions.showJumpControls && this.videojs.controlBar) {\n this.videojs.controlBar.removeChild('JumpForwardButton');\n this.videojs.controlBar.removeChild('JumpBackButton');\n }\n }\n _initPictureInPicture() {\n if (!this.playerOptions.pictureInPictureToggle && this.videojs.controlBar) {\n this.videojs.controlBar.removeChild('pictureInPictureToggle');\n }\n }\n _initBigPauseButton() {\n if ((video_js__WEBPACK_IMPORTED_MODULE_0___default().browser).IS_IOS || (video_js__WEBPACK_IMPORTED_MODULE_0___default().browser).IS_ANDROID) {\n this.videojs.addChild('BigPauseButton');\n }\n }\n _initCloudinary() {\n const cloudinaryConfig = this.playerOptions.cloudinary;\n cloudinaryConfig.chainTarget = this;\n if (cloudinaryConfig.secure !== false) {\n (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_20__.extendCloudinaryConfig)(cloudinaryConfig, {\n secure: true\n });\n }\n\n // Merge cloudinary config with source config for the plugin\n const cloudinaryOptions = {\n cloudinaryConfig,\n ...this.playerOptions.sourceOptions\n };\n this.videojs.cloudinary(cloudinaryOptions);\n }\n _initAnalytics() {\n const analyticsOpts = this.playerOptions.analytics;\n if (!window.gtag && analyticsOpts) {\n console.error('Google Analytics script (gtag) is missing.');\n return;\n }\n if (analyticsOpts) {\n const opts = typeof analyticsOpts === 'object' ? analyticsOpts : {};\n this.videojs.analytics(opts);\n }\n }\n _initCloudinaryAnalytics() {\n const cloudinaryAnalyticsOptionEnabled = !!this.playerOptions.cloudinaryAnalytics;\n if (cloudinaryAnalyticsOptionEnabled) {\n this.videojs.videoElement = this.videoElement;\n const options = lodash_isObject__WEBPACK_IMPORTED_MODULE_6___default()(this.playerOptions.cloudinaryAnalytics) ? this.playerOptions.cloudinaryAnalytics : {};\n this.videojs.cloudinaryAnalytics(options);\n }\n }\n _initSourceSwitcher() {\n this.sourceSwitcher = this.videojs.sourceSwitcher();\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref7) => {\n let {\n source\n } = _ref7;\n const videoSources = source.videoSources?.();\n const isSourcesListAvailable = Array.isArray(videoSources) ? !!videoSources.length : false;\n if (this.videojs.controlBar) {\n const method = isSourcesListAvailable ? 'show' : 'hide';\n const element = this.videojs.controlBar.getChild('sourceSwitcherButton');\n if (element && typeof element?.[method] === 'function') {\n element[method]();\n }\n }\n if (isSourcesListAvailable) {\n const selectedIndex = videoSources.findIndex(_ref8 => {\n let {\n publicId\n } = _ref8;\n return publicId === source.publicId();\n });\n this.sourceSwitcher.reInit({\n sources: videoSources,\n selectedIndex: selectedIndex === -1 ? 0 : selectedIndex,\n onSourceChange: _ref9 => {\n let {\n publicId,\n ...newSourceOptions\n } = _ref9;\n return this.source(publicId, {\n ...newSourceOptions,\n videoSources\n });\n }\n });\n }\n });\n if (Array.isArray(this.playerOptions.sourceOptions?.videoSources) && this.playerOptions.sourceOptions?.videoSources.length) {\n // eslint-disable-next-line no-unused-vars\n const {\n publicId,\n label,\n ...videoSourceData\n } = this.playerOptions.sourceOptions.videoSources[0];\n this.source(publicId, {\n ...videoSourceData,\n videoSources: this.playerOptions.sourceOptions.videoSources\n });\n }\n }\n reTryVideoStateUntilAvailable() {\n let maxNumberOfCalls = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.POSITIVE_INFINITY;\n let timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : RETRY_DEFAULT_TIMEOUT;\n if (typeof this.reTryVideoStateRetriesCount !== 'number') {\n this.reTryVideoStateRetriesCount = 0;\n }\n if (!(0,_utils_video_retry__WEBPACK_IMPORTED_MODULE_21__.isVideoInReadyState)(this.videojs.readyState())) {\n if (this.reTryVideoStateRetriesCount < maxNumberOfCalls) {\n this.reTryVideoStateRetriesCount++;\n this.reTryVideoStateTimeoutId = this.videojs.setTimeout(() => this.reTryVideoStateUntilAvailable(maxNumberOfCalls, timeout), timeout);\n } else {\n let e = new Error('Video is not ready please try later');\n this.videojs.trigger('error', e);\n }\n } else {\n this.reTryVideoStateRetriesCount = 0;\n }\n }\n _resetReloadVideo = () => {\n this.reloadVideoRetriesCount = 0;\n this.videojs.clearTimeout(this.reloadVideoTimeoutId);\n };\n reloadVideoUntilAvailable() {\n let maxNumberOfCalls = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Number.POSITIVE_INFINITY;\n let timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : RETRY_DEFAULT_TIMEOUT;\n if (typeof this.reloadVideoRetriesCount !== 'number') {\n this.reloadVideoRetriesCount = 0;\n }\n if (this.reloadVideoRetriesCount < maxNumberOfCalls) {\n this.reloadVideoRetriesCount++;\n this.reloadVideoTimeoutId = this.videojs.setTimeout(() => {\n const videoUrl = this.currentSourceUrl();\n (0,_utils_video_retry__WEBPACK_IMPORTED_MODULE_21__.checkIfVideoIsAvailable)(videoUrl, this.isLiveStream ? 'live' : 'default').then(() => this.source(videoUrl)).catch(() => this.reloadVideoUntilAvailable(maxNumberOfCalls, timeout));\n }, timeout);\n } else {\n this.videojs.trigger('error', new Error('Sorry, we could not load your video'));\n }\n }\n _initAutoplay() {\n const autoplayMode = this.playerOptions.autoplayMode;\n if (autoplayMode === 'on-scroll') {\n this.videojs.autoplayOnScroll();\n }\n }\n _initContextMenu() {\n if (!this.playerOptions.hideContextMenu) {\n this.videojs.contextMenu(_config_defaults__WEBPACK_IMPORTED_MODULE_11__[\"default\"].contextMenu);\n }\n }\n _initFloatingPlayer() {\n if (this.playerOptions.floatingWhenNotVisible !== _video_player_const__WEBPACK_IMPORTED_MODULE_16__.FLOATING_TO.NONE) {\n this.videojs.floatingPlayer({\n floatTo: this.playerOptions.floatingWhenNotVisible\n });\n }\n }\n _setCssClasses() {\n this.videojs.addClass(_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].CLASS_PREFIX);\n this.videojs.addClass(_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].playerClassPrefix(this.videojs));\n _utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].setSkinClassPrefix(this.videojs, _utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].skinClassPrefix(this.videojs));\n }\n _onReady() {\n this._setExtendedEvents();\n\n // Load first video (mainly to support video tag 'source' and 'public-id' attributes)\n // Source parameters are set to playerOptions.sourceOptions\n const source = this.playerOptions.sourceOptions.source || this.playerOptions.sourceOptions.publicId;\n if (source) {\n const sourceOptions = Object.assign({}, this.playerOptions.sourceOptions);\n this.source(source, sourceOptions);\n }\n }\n\n /**\n * Temporary fix: remove aria-live from VolumeBar to avoid NVDA repeated announcements.\n * TODO: Remove when Video.js includes the upstream fix (nvaccess/nvda#7996).\n */\n _applyVolumeBarAriaLiveFix() {\n const volumeBar = this.videojs.$('.vjs-volume-bar');\n if (volumeBar) {\n volumeBar.removeAttribute('aria-live');\n }\n }\n _onSourceChange(e, _ref0) {\n let {\n source,\n sourceOptions\n } = _ref0;\n this._sendInternalAnalytics({\n ...(sourceOptions && {\n sourceOptions\n })\n });\n this.isLiveStream = source?.resourceConfig()?.type === 'live';\n }\n _setExtendedEvents() {\n const events = [];\n\n // Add user-configured events; ExtendedEvents will merge with defaults\n if (this.playerOptions.playedEventPercents) {\n events.push({\n type: _utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.PERCENTS_PLAYED,\n percents: this.playerOptions.playedEventPercents\n });\n }\n if (this.playerOptions.playedEventTimes) {\n events.push({\n type: _utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.TIME_PLAYED,\n times: this.playerOptions.playedEventTimes\n });\n }\n const extendedEvents = new _extended_events__WEBPACK_IMPORTED_MODULE_13__[\"default\"](this.videojs, {\n events\n });\n\n // Forward all extended events to the main player for developer access\n Object.keys(extendedEvents.events).forEach(_event => {\n extendedEvents.on(_event, (event, data) => {\n this.videojs.trigger({\n type: _event,\n eventData: data\n });\n });\n });\n }\n cloudinaryConfig(config) {\n return this.videojs.cloudinary.cloudinaryConfig(config);\n }\n currentPublicId() {\n return this.videojs.cloudinary.currentPublicId();\n }\n currentSourceUrl() {\n return this.videojs.currentSource().src;\n }\n currentPoster() {\n return this.videojs.cloudinary.currentPoster();\n }\n source(publicId) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n ({\n publicId,\n options\n } = (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_20__.normalizeOptions)(publicId, options));\n if (!this._isPlayerConfigValid) {\n return;\n }\n if (this.playerOptions.debug) {\n options.debug = true;\n (0,_validators_validators_functions__WEBPACK_IMPORTED_MODULE_17__.isValidSourceConfig)(options).then(valid => {\n if (!valid) {\n this.videojs.error('invalid source configuration');\n }\n });\n }\n if (publicId instanceof _plugins_cloudinary_models_video_source_video_source__WEBPACK_IMPORTED_MODULE_14__[\"default\"]) {\n return this.videojs.cloudinary.source(publicId, options);\n }\n\n // Inherit source parameters from player options (source options take precedence)\n const inherited = this.playerOptions.sourceOptions || {};\n options = {\n ...inherited,\n ...options\n };\n if (options.shoppable && this.videojs.shoppable) {\n this.videojs.shoppable(this.videojs, options);\n }\n this._resetReloadVideo();\n this._resetReTryVideoState();\n const maxTries = this.videojs.options_.maxTries || 3;\n const videoReadyTimeout = this.videojs.options_.videoTimeout || 55000;\n this.reTryVideoStateUntilAvailable(maxTries, videoReadyTimeout);\n return this.videojs.cloudinary.source(publicId, options);\n }\n posterOptions(options) {\n return this.videojs.cloudinary.posterOptions(options);\n }\n skin(name) {\n if (name !== undefined && lodash_isString__WEBPACK_IMPORTED_MODULE_7___default()(name)) {\n _utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].setSkinClassPrefix(this.videojs, name);\n }\n return _utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].skinClassPrefix(this.videojs);\n }\n playlist(sources) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.playerOptions.playlistWidget = {\n ...(this.playerOptions.playlistWidget || {\n show: false\n }),\n playlist: true\n };\n options = Object.assign({}, options, {\n playlistWidget: this.playerOptions.playlistWidget\n });\n this.videojs.one(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.READY, async () => {\n const playlistPlugin = await this.videojs.playlist(options);\n playlistPlugin(sources, options);\n });\n return this.videojs.cloudinary.playlist ? this.videojs.cloudinary.playlist(sources, options) : this;\n }\n playlistByTag(tag) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.playerOptions.playlistWidget = {\n ...(this.playerOptions.playlistWidget || {\n show: false\n }),\n playlistByTag: true\n };\n options = Object.assign({}, options, {\n playlistWidget: this.playerOptions.playlistWidget\n });\n return new Promise(resolve => {\n this.videojs.one(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.READY, async () => {\n const playlistPlugin = await this.videojs.playlist(options);\n playlistPlugin(await this.sourcesByTag(tag, options), options);\n resolve(this);\n });\n });\n }\n sourcesByTag(tag) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.videojs.cloudinary.sourcesByTag(tag, options);\n }\n fluid(bool) {\n if (bool === undefined) {\n return this.videojs.fluid();\n }\n if (bool) {\n this.videojs.addClass(_video_player_const__WEBPACK_IMPORTED_MODULE_16__.FLUID_CLASS_NAME);\n } else {\n this.videojs.removeClass(_video_player_const__WEBPACK_IMPORTED_MODULE_16__.FLUID_CLASS_NAME);\n }\n this.videojs.fluid(bool);\n this.videojs.trigger(_utils_consts__WEBPACK_IMPORTED_MODULE_18__.PLAYER_EVENT.FLUID, bool);\n return this;\n }\n play() {\n this.playWasCalled = true;\n this.videojs.play();\n return this;\n }\n stop() {\n this.pause();\n this.currentTime(0);\n return this;\n }\n playPrevious() {\n this.playlist().playPrevious();\n return this;\n }\n playNext() {\n this.playlist().playNext();\n return this;\n }\n transformation(trans) {\n return this.videojs.cloudinary.transformation(trans);\n }\n sourceTypes(types) {\n return this.videojs.cloudinary.sourceTypes(types);\n }\n sourceTransformation(trans) {\n return this.videojs.cloudinary.sourceTransformation(trans);\n }\n autoShowRecommendations(autoShow) {\n return this.videojs.cloudinary.autoShowRecommendations(autoShow);\n }\n duration() {\n return this.videojs.duration();\n }\n height(dimension) {\n if (!dimension) {\n return this.videojs.height();\n }\n this.videojs.height(dimension);\n return this;\n }\n width(dimension) {\n if (!dimension) {\n return this.videojs.width();\n }\n this.videojs.width(dimension);\n return this;\n }\n volume(volume) {\n if (!volume) {\n return this.videojs.volume();\n }\n this.videojs.volume(volume);\n return this;\n }\n mute() {\n if (!this.isMuted()) {\n this.videojs.muted(true);\n }\n return this;\n }\n unmute() {\n if (this.isMuted()) {\n this.videojs.muted(false);\n }\n return this;\n }\n isMuted() {\n return this.videojs.muted();\n }\n pause() {\n this.videojs.pause();\n return this;\n }\n currentTime(offsetSeconds) {\n if (!offsetSeconds && offsetSeconds !== 0) {\n return this.videojs.currentTime();\n }\n this.videojs.currentTime(offsetSeconds);\n return this;\n }\n maximize() {\n if (!this.isMaximized()) {\n this.videojs.requestFullscreen();\n }\n return this;\n }\n exitMaximize() {\n if (this.isMaximized()) {\n this.videojs.exitFullscreen();\n }\n return this;\n }\n isMaximized() {\n return this.videojs.isFullscreen();\n }\n dispose() {\n this.videojs.dispose();\n }\n controls(bool) {\n if (bool === undefined) {\n return this.videojs.controls();\n }\n this.videojs.controls(bool);\n return this;\n }\n ima() {\n return {\n playAd: this.videojs.ima.playAd\n };\n }\n loop(bool) {\n if (bool === undefined) {\n return this.videojs.loop();\n }\n this.videojs.loop(bool);\n return this;\n }\n el() {\n return this.videojs.el();\n }\n}\nconst mergeDefaults = options => video_js__WEBPACK_IMPORTED_MODULE_0___default().obj.merge({}, _config_defaults__WEBPACK_IMPORTED_MODULE_11__[\"default\"], options);\nconst getConfig = function (elem) {\n let playerOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const videoElement = (0,_video_player_utils__WEBPACK_IMPORTED_MODULE_15__.getResolveVideoElement)(elem);\n const options = (0,_video_player_utils__WEBPACK_IMPORTED_MODULE_15__.extractOptions)(videoElement, playerOptions);\n return {\n videoElement,\n options\n };\n};\nconst createVideoPlayer = function (elem) {\n let playerOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let ready = arguments.length > 2 ? arguments[2] : undefined;\n const {\n videoElement,\n options\n } = getConfig(elem, playerOptions);\n if (options.profile) {\n console.warn('Profile option requires async initialization. Use cloudinary.player() instead of cloudinary.videoPlayer()');\n }\n return new VideoPlayer(videoElement, mergeDefaults(options), ready);\n};\n\n/**\n * Create player with pre-merged config (skips fetch).\n * Used by player() when config was already fetched for schedule check.\n */\nconst createPlayerWithConfig = (elem, mergedOptions, ready) => {\n const {\n videoElement,\n options\n } = getConfig(elem, mergedOptions);\n return new VideoPlayer(videoElement, mergeDefaults(options), ready);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (VideoPlayer);\n\n//# sourceURL=webpack:///./video-player.js?\n}");
|
|
892
903
|
|
|
893
904
|
/***/ },
|
|
894
905
|
|
|
@@ -2555,16 +2566,6 @@ eval("{var basePick = __webpack_require__(/*! ./_basePick */ \"../node_modules/l
|
|
|
2555
2566
|
|
|
2556
2567
|
/***/ },
|
|
2557
2568
|
|
|
2558
|
-
/***/ "../node_modules/lodash/snakeCase.js"
|
|
2559
|
-
/*!*******************************************!*\
|
|
2560
|
-
!*** ../node_modules/lodash/snakeCase.js ***!
|
|
2561
|
-
\*******************************************/
|
|
2562
|
-
(module, __unused_webpack_exports, __webpack_require__) {
|
|
2563
|
-
|
|
2564
|
-
eval("{var createCompounder = __webpack_require__(/*! ./_createCompounder */ \"../node_modules/lodash/_createCompounder.js\");\n\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\nvar snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n});\n\nmodule.exports = snakeCase;\n\n\n//# sourceURL=webpack:///../node_modules/lodash/snakeCase.js?\n}");
|
|
2565
|
-
|
|
2566
|
-
/***/ },
|
|
2567
|
-
|
|
2568
2569
|
/***/ "../node_modules/lodash/stubArray.js"
|
|
2569
2570
|
/*!*******************************************!*\
|
|
2570
2571
|
!*** ../node_modules/lodash/stubArray.js ***!
|
|
@@ -3435,7 +3436,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
3435
3436
|
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
|
|
3436
3437
|
/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
|
|
3437
3438
|
/******/ var installedChunks = {
|
|
3438
|
-
/******/ "
|
|
3439
|
+
/******/ "player-full": 0,
|
|
3439
3440
|
/******/ "styles": 0
|
|
3440
3441
|
/******/ };
|
|
3441
3442
|
/******/
|
|
@@ -3523,7 +3524,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|
|
3523
3524
|
/******/ // startup
|
|
3524
3525
|
/******/ // Load entry module and return exports
|
|
3525
3526
|
/******/ // This entry module depends on other loaded chunks and execution need to be delayed
|
|
3526
|
-
/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["styles"], () => (__webpack_require__("./index.
|
|
3527
|
+
/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["styles"], () => (__webpack_require__("./index.full.js")))
|
|
3527
3528
|
/******/ __webpack_exports__ = __webpack_require__.O(__webpack_exports__);
|
|
3528
3529
|
/******/
|
|
3529
3530
|
/******/ return __webpack_exports__;
|