cloudinary-video-player 3.6.4-edge.0 → 3.6.4-edge.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adaptive-streaming.js +5 -5
- package/dist/adaptive-streaming.min.js +4 -4
- package/dist/chapters.js +3 -3
- package/dist/chapters.min.js +3 -3
- package/dist/cld-video-player.css +2 -2
- package/dist/cld-video-player.js +38 -38
- package/dist/cld-video-player.light.js +38 -38
- package/dist/cld-video-player.light.min.js +4 -4
- package/dist/cld-video-player.min.css +3 -3
- package/dist/cld-video-player.min.js +4 -4
- package/dist/colors.js +2 -2
- package/dist/colors.min.js +2 -2
- package/dist/dash.js +2 -2
- package/dist/dash.min.js +2 -2
- package/dist/debug.js +3 -3
- package/dist/debug.min.js +3 -3
- package/dist/ima.js +2 -2
- package/dist/ima.min.js +2 -2
- package/dist/interaction-areas.js +4 -4
- package/dist/interaction-areas.min.js +3 -3
- package/dist/node_modules_lodash_throttle_js.js +2 -2
- package/dist/playlist.js +9 -9
- package/dist/playlist.min.js +3 -3
- package/dist/recommendations-overlay.js +4 -4
- package/dist/recommendations-overlay.min.js +3 -3
- package/dist/share.js +3 -3
- package/dist/share.min.js +3 -3
- package/dist/shoppable.js +7 -7
- package/dist/shoppable.min.js +3 -3
- package/dist/visual-search.js +4 -4
- package/dist/visual-search.min.js +3 -3
- package/lib/adaptive-streaming.js +1 -1
- package/lib/all.js +1 -1
- package/lib/chapters.js +1 -1
- package/lib/cld-video-player.js +1 -1
- package/lib/debug.js +1 -1
- package/lib/interaction-areas.js +1 -1
- package/lib/player.js +1 -1
- package/lib/playlist.js +1 -1
- package/lib/recommendations-overlay.js +1 -1
- package/lib/share.js +1 -1
- package/lib/shoppable.js +1 -1
- package/lib/videoPlayer.js +1 -1
- package/lib/visual-search.js +1 -1
- package/package.json +5 -2
package/dist/cld-video-player.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Cloudinary Video Player v3.6.4-edge.
|
|
3
|
-
* Built on
|
|
2
|
+
* Cloudinary Video Player v3.6.4-edge.1
|
|
3
|
+
* Built on 2026-01-04T08:13:28.782Z
|
|
4
4
|
* https://github.com/cloudinary/cloudinary-video-player
|
|
5
5
|
*/
|
|
6
6
|
/*
|
|
@@ -31,7 +31,7 @@ return /******/ (() => { // webpackBootstrap
|
|
|
31
31
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
32
32
|
|
|
33
33
|
"use strict";
|
|
34
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\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 _big_pause_button_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./big-pause-button.scss */ \"./components/bigPauseButton/big-pause-button.scss\");\n\n\nconst BigPlayButton = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('BigPlayButton');\nclass BigPauseButton extends BigPlayButton {\n constructor(player, options) {\n super(player, options);\n this.boundUpdate = this.handleUpdate.bind(this);\n const playerInstance = this.player();\n playerInstance.on('play', this.boundUpdate);\n playerInstance.on('pause', this.boundUpdate);\n this.handleUpdate();\n }\n buildCSSClass() {\n return
|
|
34
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _big_pause_button_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./big-pause-button.scss */ \"./components/bigPauseButton/big-pause-button.scss\");\n\n\nconst BigPlayButton = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('BigPlayButton');\nclass BigPauseButton extends BigPlayButton {\n constructor(player, options) {\n super(player, options);\n this.boundUpdate = this.handleUpdate.bind(this);\n const playerInstance = this.player();\n playerInstance.on('play', this.boundUpdate);\n playerInstance.on('pause', this.boundUpdate);\n this.handleUpdate();\n }\n buildCSSClass() {\n return `${super.buildCSSClass()} vjs-big-pause-button`;\n }\n handleClick() {\n const player = this.player();\n !player.paused() && player.pause();\n }\n handleUpdate() {\n const player = this.player();\n if (!player) {\n return;\n }\n const paused = player.paused();\n !paused && player.hasStarted() ? this.show() : this.hide();\n this[paused ? 'removeClass' : 'addClass']('vjs-playing');\n this.controlText('Pause');\n }\n dispose() {\n if (this.boundUpdate) {\n const player = this.player();\n player.off('play', this.boundUpdate);\n player.off('pause', this.boundUpdate);\n }\n super.dispose();\n }\n}\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('BigPauseButton', BigPauseButton);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BigPauseButton);\n\n//# sourceURL=webpack://cloudinary-video-player/./components/bigPauseButton/big-pause-button.js?");
|
|
35
35
|
|
|
36
36
|
/***/ }),
|
|
37
37
|
|
|
@@ -85,7 +85,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
85
85
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
86
86
|
|
|
87
87
|
"use strict";
|
|
88
|
-
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 _logo_button_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logo-button.scss */ \"./components/logoButton/logo-button.scss\");\n\n\n\n// support VJS5 & VJS6 at the same time\nconst ClickableComponent = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('ClickableComponent');\nclass LogoButton extends ClickableComponent {\n createEl() {\n const opts = this.options_.playerOptions;\n const display = opts.showLogo ? 'block' : 'none';\n const bgImage = opts.logoImageUrl ?
|
|
88
|
+
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 _logo_button_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logo-button.scss */ \"./components/logoButton/logo-button.scss\");\n\n\n\n// support VJS5 & VJS6 at the same time\nconst ClickableComponent = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('ClickableComponent');\nclass LogoButton extends ClickableComponent {\n createEl() {\n const opts = this.options_.playerOptions;\n const display = opts.showLogo ? 'block' : 'none';\n const bgImage = opts.logoImageUrl ? `background-image: url(${opts.logoImageUrl})` : '';\n return video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('a', {}, {\n class: 'vjs-control vjs-cloudinary-button vjs-button',\n href: opts.logoOnclickUrl,\n target: '_blank',\n style: `display: ${display}; ${bgImage}`,\n 'aria-label': 'Logo link'\n });\n }\n}\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('logoButton', LogoButton);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LogoButton);\n\n//# sourceURL=webpack://cloudinary-video-player/./components/logoButton/logo-button.js?");
|
|
89
89
|
|
|
90
90
|
/***/ }),
|
|
91
91
|
|
|
@@ -118,7 +118,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
118
118
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
119
119
|
|
|
120
120
|
"use strict";
|
|
121
|
-
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 _source_switcher_menu_item__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./source-switcher-menu-item */ \"./components/source-switcher-button/source-switcher-menu-item.js\");\n\n\nconst MenuButton = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('MenuButton');\nconst MenuItem = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('MenuItem');\nclass SourceSwitcherButton extends MenuButton {\n constructor(player) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(player, options);\n this.controlText(options.tooltip || 'Sources');\n this._emptyLabel = options.emptyLabel || 'No sources';\n this._items = Array.isArray(options.items) ? options.items : [];\n this._selectedIndex = Number.isInteger(options.defaultIndex) ? options.defaultIndex : undefined;\n this._onSelected = typeof options.onSelected === 'function' ? options.onSelected : null;\n this._setEnabled(this._items.length > 0);\n const placeholder = this.el().querySelector('.vjs-icon-placeholder');\n if (placeholder) {\n placeholder.classList.add('vjs-icon-source-switcher');\n }\n }\n buildCSSClass() {\n const empty = !Array.isArray(this._items) || this._items.length === 0;\n return
|
|
121
|
+
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 _source_switcher_menu_item__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./source-switcher-menu-item */ \"./components/source-switcher-button/source-switcher-menu-item.js\");\n\n\nconst MenuButton = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('MenuButton');\nconst MenuItem = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('MenuItem');\nclass SourceSwitcherButton extends MenuButton {\n constructor(player) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(player, options);\n this.controlText(options.tooltip || 'Sources');\n this._emptyLabel = options.emptyLabel || 'No sources';\n this._items = Array.isArray(options.items) ? options.items : [];\n this._selectedIndex = Number.isInteger(options.defaultIndex) ? options.defaultIndex : undefined;\n this._onSelected = typeof options.onSelected === 'function' ? options.onSelected : null;\n this._setEnabled(this._items.length > 0);\n const placeholder = this.el().querySelector('.vjs-icon-placeholder');\n if (placeholder) {\n placeholder.classList.add('vjs-icon-source-switcher');\n }\n }\n buildCSSClass() {\n const empty = !Array.isArray(this._items) || this._items.length === 0;\n return `vjs-source-switcher-button${empty ? ' vjs-source-switcher-disabled' : ''} ${super.buildCSSClass()}`;\n }\n createItems() {\n if (!Array.isArray(this._items) || this._items.length === 0) {\n const empty = new MenuItem(this.player_, {\n label: this._emptyLabel,\n selectable: false\n });\n empty.addClass('vjs-source-switcher-empty');\n empty.disable();\n return [empty];\n }\n return this._items.map((_ref, index) => {\n let {\n label,\n value\n } = _ref;\n return new _source_switcher_menu_item__WEBPACK_IMPORTED_MODULE_1__[\"default\"](this.player_, {\n label,\n value,\n index,\n selected: index === this._selectedIndex,\n onSelect: payload => this._handleItemSelect(payload)\n });\n });\n }\n _handleItemSelect(_ref2) {\n let {\n index\n } = _ref2;\n if (this._selectedIndex === index) return;\n this.setSelected(index);\n }\n setItems(items) {\n this._items = Array.isArray(items) ? items : [];\n this._selectedIndex = this._items.length ? 0 : undefined;\n this._setEnabled(this._items.length > 0);\n this._rebuildMenu();\n }\n setSelected(index) {\n if (!Array.isArray(this._items) || index == null || index < 0 || index >= this._items.length) return;\n this._selectedIndex = index;\n\n // reflect in UI if menu exists\n if (this.menu && typeof this.menu.children === 'function') {\n this.menu.children().forEach(child => {\n if (child instanceof MenuItem) {\n child.selected(child._ssIndex === index);\n }\n });\n }\n const {\n value\n } = this._items[index];\n if (this._onSelected) this._onSelected({\n index,\n value\n }, this.player_);\n }\n setOnSelected(fn) {\n this._onSelected = typeof fn === 'function' ? fn : null;\n }\n _rebuildMenu() {\n if (!this.menu) return;\n this.menu.children().slice().forEach(c => this.menu.removeChild(c));\n this.createItems().forEach(i => this.menu.addItem(i));\n const el = this.el && this.el();\n if (el) {\n const empty = this._items.length === 0;\n el.classList.toggle('vjs-source-switcher-disabled', empty);\n el.setAttribute('aria-disabled', String(empty));\n }\n }\n _setEnabled(enabled) {\n const el = this.el && this.el();\n if (!el) return;\n el.classList.toggle('vjs-source-switcher-disabled', !enabled);\n el.setAttribute('aria-disabled', String(!enabled));\n }\n}\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('sourceSwitcherButton', SourceSwitcherButton);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SourceSwitcherButton);\n\n//# sourceURL=webpack://cloudinary-video-player/./components/source-switcher-button/source-switcher-button.js?");
|
|
122
122
|
|
|
123
123
|
/***/ }),
|
|
124
124
|
|
|
@@ -129,7 +129,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
129
129
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
130
130
|
|
|
131
131
|
"use strict";
|
|
132
|
-
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__);\
|
|
132
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n\nconst MenuItem = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('MenuItem');\nclass SourceMenuItem extends MenuItem {\n constructor(player) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(player, {\n ...options,\n selectable: true,\n multiSelectable: false,\n selected: !!options.selected,\n label: options.label\n });\n this.value = options.value;\n this._ssIndex = options.index;\n this._onSelect = typeof options.onSelect === 'function' ? options.onSelect : null;\n }\n handleClick(event) {\n super.handleClick(event);\n if (this._onSelect) {\n this._onSelect({\n index: this._ssIndex,\n value: this.value,\n label: this.options_.label\n });\n }\n }\n}\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('SourceMenuItem', SourceMenuItem);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SourceMenuItem);\n\n//# sourceURL=webpack://cloudinary-video-player/./components/source-switcher-button/source-switcher-menu-item.js?");
|
|
133
133
|
|
|
134
134
|
/***/ }),
|
|
135
135
|
|
|
@@ -140,7 +140,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
140
140
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
141
141
|
|
|
142
142
|
"use strict";
|
|
143
|
-
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\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 (!
|
|
143
|
+
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\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 = `${urlPrefix}/_applet_/video_service/video_metadata/${deliveryType}/${(0,_utils_utf8Base64__WEBPACK_IMPORTED_MODULE_3__.utf8ToBase64)(publicId)}.json`;\n fetch(metadataUrl, {\n headers: {\n 'X-Cld-Video-Player-Version': \"3.6.4-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://cloudinary-video-player/./components/title-bar/title-bar.js?");
|
|
144
144
|
|
|
145
145
|
/***/ }),
|
|
146
146
|
|
|
@@ -173,7 +173,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
173
173
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
174
174
|
|
|
175
175
|
"use strict";
|
|
176
|
-
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_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _video_player__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./video-player */ \"./video-player.js\");\n/* harmony import */ var _config_defaults__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config/defaults */ \"./config/defaults.js\");\n/* harmony import */ var _video_player_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./video-player.utils */ \"./video-player.utils.js\");\n/* harmony import */ var _utils_fetch_config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/fetch-config */ \"./utils/fetch-config.js\");\
|
|
176
|
+
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_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _video_player__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./video-player */ \"./video-player.js\");\n/* harmony import */ var _config_defaults__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config/defaults */ \"./config/defaults.js\");\n/* harmony import */ var _video_player_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./video-player.utils */ \"./video-player.utils.js\");\n/* harmony import */ var _utils_fetch_config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/fetch-config */ \"./utils/fetch-config.js\");\n\n\n\n\n\n\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_4__.getResolveVideoElement)(elem);\n const options = (0,_video_player_utils__WEBPACK_IMPORTED_MODULE_4__.extractOptions)(videoElement, playerOptions);\n return {\n videoElement,\n options\n };\n};\nconst mergeDefaults = options => video_js__WEBPACK_IMPORTED_MODULE_1___default().obj.merge({}, _config_defaults__WEBPACK_IMPORTED_MODULE_3__[\"default\"], options);\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 const {\n videoElement,\n options\n } = getConfig(id, playerOptions);\n if (options.profile) {\n console.warn('Profile option requires async initialization. Use cloudinary.player() instead of cloudinary.videoPlayer()');\n }\n return new _video_player__WEBPACK_IMPORTED_MODULE_2__[\"default\"](videoElement, mergeDefaults(options), ready);\n};\nconst videoPlayers = (selector, playerOptions, ready) => {\n const nodeList = document.querySelectorAll(selector);\n return [...nodeList].map(node => videoPlayer(node, playerOptions, ready));\n};\nconst player = async (id, playerOptions, ready) => {\n const {\n videoElement,\n options\n } = getConfig(id, playerOptions);\n try {\n const videoConfig = await (0,_utils_fetch_config__WEBPACK_IMPORTED_MODULE_5__.fetchAndMergeConfig)(options);\n return new _video_player__WEBPACK_IMPORTED_MODULE_2__[\"default\"](videoElement, mergeDefaults(videoConfig), ready);\n } catch (e) {\n const videoPlayer = new _video_player__WEBPACK_IMPORTED_MODULE_2__[\"default\"](videoElement, mergeDefaults(options));\n videoPlayer.videojs.error('Invalid profile');\n throw e;\n }\n};\nconst players = async (selector, playerOptions, ready) => {\n const nodeList = document.querySelectorAll(selector);\n return Promise.all([...nodeList].map(node => player(node, playerOptions, ready)));\n};\nconst cloudinaryVideoPlayerLegacyConfig = () => {\n console.warn('Cloudinary.new() is deprecated and will be removed. Please use cloudinary.videoPlayer() instead.');\n return {\n videoPlayer,\n videoPlayers\n };\n};\nconst cloudinary = {\n ...(window.cloudinary || {}),\n videoPlayer,\n videoPlayers,\n player,\n players,\n Cloudinary: {\n // Backwards compatibility with SDK v1\n new: cloudinaryVideoPlayerLegacyConfig\n }\n};\nwindow.cloudinary = cloudinary;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (cloudinary);\n\n//# sourceURL=webpack://cloudinary-video-player/./index.js?");
|
|
177
177
|
|
|
178
178
|
/***/ }),
|
|
179
179
|
|
|
@@ -206,7 +206,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
206
206
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
207
207
|
|
|
208
208
|
"use strict";
|
|
209
|
-
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 _ai_highlights_graph_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ai-highlights-graph.scss */ \"./plugins/ai-highlights-graph/ai-highlights-graph.scss\");\n\n\n\n// Default options for the plugin.\nlet defaults = {};\n\n/**\n * Function to invoke when the player is ready.\n *\n * @function onPlayerReady\n * @param {Player} player\n * A Video.js player object.\n *\n * @param {Object} [options={}]\n * A plain object containing options for the plugin.\n */\nconst onPlayerReady = function onPlayerReady(player, options) {\n player.addClass('vjs-ai-highlights-graph');\n player.aiHighlightsGraph = new HighlightsGraphPlugin(player, options);\n};\n\n/**\n * A video.js plugin.\n *\n * In the plugin function, the value of `this` is a video.js `Player`\n * instance. You cannot rely on the player being in a \"ready\" state here,\n * depending on how the plugin is invoked. This may or may not be important\n * to you; if not, remove the wait for \"ready\"!\n *\n * @function aiHighlightsGraph\n * @param {Object} [options={}]\n * An object of options left to the plugin author to define.\n */\nfunction aiHighlightsGraph(options) {\n this.ready(() => {\n onPlayerReady(this, video_js__WEBPACK_IMPORTED_MODULE_0___default().obj.merge(defaults, options));\n });\n}\n\n/**\n * HighlightsGraphPlugin class.\n *\n * This class performs all functions related to displaying the AI highlights graph.\n */\nconst HighlightsGraphPlugin = function () {\n /**\n * Plugin class constructor, called by videojs on\n * ready event.\n *\n * @function constructor\n * @param {Player} player\n * A Video.js player object.\n *\n * @param {Object} [options={}]\n * A plain object containing options for the plugin.\n */\n function HighlightsGraphPlugin(player, options) {\n this.player = player;\n this.options = options;\n this.initializeHighlightsGraph();\n return this;\n }\n HighlightsGraphPlugin.prototype.src = function src(source) {\n this.resetPlugin();\n this.options.src = source;\n this.initializeHighlightsGraph();\n };\n HighlightsGraphPlugin.prototype.detach = function detach() {\n this.resetPlugin();\n };\n HighlightsGraphPlugin.prototype.resetPlugin = function resetPlugin() {\n if (this.graphHolder) {\n this.graphHolder.parentNode.removeChild(this.graphHolder);\n }\n delete this.progressBar;\n delete this.graphHolder;\n delete this.lastStyle;\n };\n\n /**\n * Bootstrap the plugin.\n */\n HighlightsGraphPlugin.prototype.initializeHighlightsGraph = function initializeHighlightsGraph() {\n
|
|
209
|
+
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 _ai_highlights_graph_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ai-highlights-graph.scss */ \"./plugins/ai-highlights-graph/ai-highlights-graph.scss\");\n\n\n\n// Default options for the plugin.\nlet defaults = {};\n\n/**\n * Function to invoke when the player is ready.\n *\n * @function onPlayerReady\n * @param {Player} player\n * A Video.js player object.\n *\n * @param {Object} [options={}]\n * A plain object containing options for the plugin.\n */\nconst onPlayerReady = function onPlayerReady(player, options) {\n player.addClass('vjs-ai-highlights-graph');\n player.aiHighlightsGraph = new HighlightsGraphPlugin(player, options);\n};\n\n/**\n * A video.js plugin.\n *\n * In the plugin function, the value of `this` is a video.js `Player`\n * instance. You cannot rely on the player being in a \"ready\" state here,\n * depending on how the plugin is invoked. This may or may not be important\n * to you; if not, remove the wait for \"ready\"!\n *\n * @function aiHighlightsGraph\n * @param {Object} [options={}]\n * An object of options left to the plugin author to define.\n */\nfunction aiHighlightsGraph(options) {\n this.ready(() => {\n onPlayerReady(this, video_js__WEBPACK_IMPORTED_MODULE_0___default().obj.merge(defaults, options));\n });\n}\n\n/**\n * HighlightsGraphPlugin class.\n *\n * This class performs all functions related to displaying the AI highlights graph.\n */\nconst HighlightsGraphPlugin = function () {\n /**\n * Plugin class constructor, called by videojs on\n * ready event.\n *\n * @function constructor\n * @param {Player} player\n * A Video.js player object.\n *\n * @param {Object} [options={}]\n * A plain object containing options for the plugin.\n */\n function HighlightsGraphPlugin(player, options) {\n this.player = player;\n this.options = options;\n this.initializeHighlightsGraph();\n return this;\n }\n HighlightsGraphPlugin.prototype.src = function src(source) {\n this.resetPlugin();\n this.options.src = source;\n this.initializeHighlightsGraph();\n };\n HighlightsGraphPlugin.prototype.detach = function detach() {\n this.resetPlugin();\n };\n HighlightsGraphPlugin.prototype.resetPlugin = function resetPlugin() {\n if (this.graphHolder) {\n this.graphHolder.parentNode.removeChild(this.graphHolder);\n }\n delete this.progressBar;\n delete this.graphHolder;\n delete this.lastStyle;\n };\n\n /**\n * Bootstrap the plugin.\n */\n HighlightsGraphPlugin.prototype.initializeHighlightsGraph = function initializeHighlightsGraph() {\n if (!this.options.src) {\n return;\n }\n fetch(this.options.src, {\n credentials: this.player.cloudinary.source?.().withCredentials ? 'include' : 'omit'\n }).then(res => {\n return res.json();\n }).then(res => {\n this.setupHighlightsGraphElement();\n if (this.graphHolder) {\n this.createHighlightsGraph(res);\n }\n });\n };\n HighlightsGraphPlugin.prototype.setupHighlightsGraphElement = function setupHighlightsGraphElement() {\n this.progressBar = this.player.$('.vjs-progress-control');\n if (!this.progressBar) {\n return;\n }\n const graphHolder = this.player.$('.vjs-highlights-graph-display') || document.createElement('div');\n graphHolder.setAttribute('class', 'vjs-highlights-graph-display');\n this.progressBar.appendChild(graphHolder);\n this.graphHolder = graphHolder;\n };\n\n /**\n * Function to create the SVG path element\n */\n HighlightsGraphPlugin.prototype.createPath = function createPath(dataArray, containerWidth, containerHeight) {\n // Calculate the x and y coordinates for each point\n const stepX = containerWidth / (dataArray.length - 1);\n const points = dataArray.map((value, index) => ({\n x: index * stepX,\n y: containerHeight - value * containerHeight\n }));\n\n // Create a smooth line path\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttribute('fill', 'lightblue');\n\n // Generate the smooth line path data\n let d = `M ${points[0].x},${points[0].y}`;\n for (let i = 0; i < points.length - 1; i++) {\n const xc = (points[i].x + points[i + 1].x) / 2;\n const yc = (points[i].y + points[i + 1].y) / 2;\n d += ` Q ${points[i].x},${points[i].y} ${xc},${yc}`;\n }\n d += ` Q ${points[points.length - 1].x},${points[points.length - 1].y} ${points[points.length - 1].x},${points[points.length - 1].y}`;\n\n // Close the path to fill the region under the line\n d += ` L ${points[points.length - 1].x},${containerHeight} L ${points[0].x},${containerHeight} Z`;\n path.setAttribute('d', d);\n return path;\n };\n HighlightsGraphPlugin.prototype.createHighlightsGraph = function createHighlightsGraph(info) {\n const data = info.data;\n const svgWidth = 600;\n const svgHeight = 20;\n const svg = this.player.$('.vjs-highlights-graph-display > svg') || document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('viewBox', `0 0 ${svgWidth} ${svgHeight}`);\n svg.setAttribute('preserveAspectRatio', 'none');\n svg.setAttribute('width', svgWidth);\n svg.setAttribute('height', svgHeight);\n svg.innerHTML = '';\n const path = this.createPath(data, svgWidth, svgHeight);\n svg.appendChild(path);\n this.graphHolder.appendChild(svg);\n };\n return HighlightsGraphPlugin;\n}();\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (aiHighlightsGraph);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/ai-highlights-graph/index.js?");
|
|
210
210
|
|
|
211
211
|
/***/ }),
|
|
212
212
|
|
|
@@ -217,7 +217,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
217
217
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
218
218
|
|
|
219
219
|
"use strict";
|
|
220
|
-
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 video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var utils_slicing__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utils/slicing */ \"./utils/slicing.js\");\n/* harmony import */ var extended_events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! extended-events */ \"./extended-events.js\");\n/* harmony import */ var _utils_consts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/consts */ \"./utils/consts.js\");\n\n\n\n\nconst DEFAULT_EVENTS = [_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PLAY, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PAUSE, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.ENDED, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.VOLUME_CHANGE, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.RESIZE, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.ERROR, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.FULL_SCREEN_CHANGE, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.START, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.VIDEO_LOAD, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PERCENTS_PLAYED, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.SEEK, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PLAYER_LOAD];\nconst EVENT_DEFAULTS = {\n percentsplayed: {\n percents: [25, 50, 75, 100]\n }\n};\nconst DEFAULT_OPTIONS = {\n events: DEFAULT_EVENTS,\n category: 'Video',\n defaultLabel: player => {\n var _player$cloudinary;\n return ((_player$cloudinary = player.cloudinary) === null || _player$cloudinary === void 0 ? void 0 : _player$cloudinary.currentPublicId()) || player.currentSource().src;\n }\n};\nclass AnalyticsPlugin {\n constructor(player) {\n let initOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.player = player;\n this.options = video_js__WEBPACK_IMPORTED_MODULE_0___default().obj.merge(DEFAULT_OPTIONS, initOptions);\n this.events = (0,extended_events__WEBPACK_IMPORTED_MODULE_2__.normalizeEventsParam)(this.options.events, EVENT_DEFAULTS);\n const extendedEvents = (0,utils_slicing__WEBPACK_IMPORTED_MODULE_1__.sliceProperties)(this.events, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PERCENTS_PLAYED, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.TIME_PLAYED, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PAUSE, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.SEEK);\n if (extendedEvents.pause) {\n delete extendedEvents.pause;\n extendedEvents.pausenoseek = {};\n }\n this._extendedEvents = new extended_events__WEBPACK_IMPORTED_MODULE_2__[\"default\"](player, {\n events: extendedEvents\n });\n this._currentSource = null;\n this._startTracked = null;\n this._endTracked = null;\n this.resetState();\n }\n init() {\n const playerLoad = () => {\n this.track({\n action: 'Player Load',\n label: window.location.href,\n nonInteraction: true\n });\n };\n const play = () => {\n this.track({\n action: 'Play'\n });\n };\n const start = () => {\n if (this._startTracked) {\n this.track({\n action: 'Start'\n });\n this._startTracked = true;\n }\n };\n const pause = () => {\n this.track({\n action: 'Pause'\n });\n };\n const ended = () => {\n if (!this._endTracked) {\n this.track({\n action: 'Ended',\n nonInteraction: true\n });\n this._endTracked = true;\n }\n };\n const error = () => {\n this.track({\n action: 'Error',\n nonInteraction: true\n });\n };\n const volumechange = () => {\n const value = this.player.muted() ? 0 : this.player.volume();\n this.track({\n action: 'Volume Change',\n value\n });\n };\n const resize = () => {\n const action = \"Resize - \".concat(this.player.width(), \"x\").concat(this.player.height(), \"}\");\n this.track({\n action\n });\n };\n const fullscreenchange = () => {\n const action = this.player.isFullscreen() ? 'Enter Fullscreen' : 'Exit Fullscreen';\n this.track({\n action\n });\n };\n const percentsPlayed = (event, data) => {\n const {\n percent\n } = data;\n this.track({\n action: \"\".concat(percent, \" Percents Played\"),\n nonInteraction: true\n });\n };\n const timePlayed = (event, data) => {\n const {\n time\n } = data;\n this.track({\n action: \"\".concat(time, \" Seconds Played\"),\n value: time,\n nonInteraction: true\n });\n };\n const seek = (event, data) => {\n const {\n seekStart,\n seekEnd\n } = data;\n this.track({\n action: 'Seek Start',\n value: seekStart\n });\n this.track({\n action: 'Seek End',\n value: seekEnd\n });\n };\n const shoppableProductHover = (event, data) => {\n this.track({\n action: 'productHover',\n label: data.productName\n });\n };\n const shoppableProductClick = (event, data) => {\n this.track({\n action: 'productClick',\n label: data.productName\n });\n };\n const shoppableBarMax = () => {\n this.track({\n action: 'shoppableBar',\n label: 'opened'\n });\n };\n const shoppableBarMin = () => {\n this.track({\n action: 'shoppableBar',\n label: 'closed'\n });\n };\n const shoppableReplay = () => {\n this.track({\n action: 'replay'\n });\n };\n const shoppableProductClickPost = (event, data) => {\n this.track({\n action: 'productClickPostPlay',\n label: data.productName\n });\n };\n const shoppableProductHoverPost = (event, data) => {\n this.track({\n action: 'productHoverPostPlay',\n label: data.productName\n });\n };\n if (this.events.shoppable) {\n this.player.on('productHover', shoppableProductHover.bind(this));\n this.player.on('productClick', shoppableProductClick.bind(this));\n this.player.on('productHoverPost', shoppableProductHoverPost.bind(this));\n this.player.on('productClickPost', shoppableProductClickPost.bind(this));\n this.player.on('productBarMin', shoppableBarMin.bind(this));\n this.player.on('productBarMax', shoppableBarMax.bind(this));\n this.player.on('replay', shoppableReplay.bind(this));\n }\n if (this.events.play) {\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PLAY, play.bind(this));\n }\n if (this.events.ended) {\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.ENDED, ended.bind(this));\n }\n if (this.events.volumechange) {\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.VOLUME_CHANGE, volumechange.bind(this));\n }\n if (this.events.resize) {\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.RESIZE, resize.bind(this));\n }\n if (this.events.error) {\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.ERROR, error.bind(this));\n }\n if (this.events.start) {\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PLAYING, start.bind(this));\n }\n if (this.events.fullscreenchange) {\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.FULL_SCREEN_CHANGE, fullscreenchange.bind(this));\n }\n if (this.events.percentsplayed) {\n this._extendedEvents.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PERCENTS_PLAYED, percentsPlayed.bind(this));\n }\n if (this.events.timeplayed) {\n this._extendedEvents.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.TIME_PLAYED, timePlayed.bind(this));\n }\n if (this.events.pause) {\n this._extendedEvents.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PAUSE_NO_SEEK, pause.bind(this));\n }\n if (this.events.seek) {\n this._extendedEvents.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.SEEK, seek.bind(this));\n }\n if (this.events.playerload) {\n playerLoad();\n }\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.LOADED_METADATA, this.loadedmetadata.bind(this));\n }\n track(_ref) {\n let {\n action,\n label,\n value = null,\n nonInteraction = false\n } = _ref;\n const eventData = {\n event_category: this.options.category,\n event_label: label || this.options.defaultLabel(this.player),\n value: value || Math.round(this.player.currentTime()),\n non_interaction: nonInteraction\n };\n window.gtag('event', action, eventData);\n }\n videoload() {\n this.track({\n action: 'Video Load',\n nonInteraction: true\n });\n }\n resetState() {\n this._currentSource = '';\n this._startTracked = false;\n this._endTracked = false;\n }\n loadedmetadata() {\n const src = this.player.currentSource().src;\n if (src !== this._currentSource) {\n this.resetState();\n this._currentSource = src;\n if (this.events.videoload) {\n this.videoload();\n }\n }\n }\n}\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n new AnalyticsPlugin(this, opts).init();\n}\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/analytics/index.js?");
|
|
220
|
+
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 video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var utils_slicing__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utils/slicing */ \"./utils/slicing.js\");\n/* harmony import */ var extended_events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! extended-events */ \"./extended-events.js\");\n/* harmony import */ var _utils_consts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/consts */ \"./utils/consts.js\");\n\n\n\n\nconst DEFAULT_EVENTS = [_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PLAY, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PAUSE, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.ENDED, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.VOLUME_CHANGE, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.RESIZE, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.ERROR, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.FULL_SCREEN_CHANGE, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.START, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.VIDEO_LOAD, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PERCENTS_PLAYED, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.SEEK, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PLAYER_LOAD];\nconst EVENT_DEFAULTS = {\n percentsplayed: {\n percents: [25, 50, 75, 100]\n }\n};\nconst DEFAULT_OPTIONS = {\n events: DEFAULT_EVENTS,\n category: 'Video',\n defaultLabel: player => player.cloudinary?.currentPublicId() || player.currentSource().src\n};\nclass AnalyticsPlugin {\n constructor(player) {\n let initOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.player = player;\n this.options = video_js__WEBPACK_IMPORTED_MODULE_0___default().obj.merge(DEFAULT_OPTIONS, initOptions);\n this.events = (0,extended_events__WEBPACK_IMPORTED_MODULE_2__.normalizeEventsParam)(this.options.events, EVENT_DEFAULTS);\n const extendedEvents = (0,utils_slicing__WEBPACK_IMPORTED_MODULE_1__.sliceProperties)(this.events, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PERCENTS_PLAYED, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.TIME_PLAYED, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PAUSE, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.SEEK);\n if (extendedEvents.pause) {\n delete extendedEvents.pause;\n extendedEvents.pausenoseek = {};\n }\n this._extendedEvents = new extended_events__WEBPACK_IMPORTED_MODULE_2__[\"default\"](player, {\n events: extendedEvents\n });\n this._currentSource = null;\n this._startTracked = null;\n this._endTracked = null;\n this.resetState();\n }\n init() {\n const playerLoad = () => {\n this.track({\n action: 'Player Load',\n label: window.location.href,\n nonInteraction: true\n });\n };\n const play = () => {\n this.track({\n action: 'Play'\n });\n };\n const start = () => {\n if (this._startTracked) {\n this.track({\n action: 'Start'\n });\n this._startTracked = true;\n }\n };\n const pause = () => {\n this.track({\n action: 'Pause'\n });\n };\n const ended = () => {\n if (!this._endTracked) {\n this.track({\n action: 'Ended',\n nonInteraction: true\n });\n this._endTracked = true;\n }\n };\n const error = () => {\n this.track({\n action: 'Error',\n nonInteraction: true\n });\n };\n const volumechange = () => {\n const value = this.player.muted() ? 0 : this.player.volume();\n this.track({\n action: 'Volume Change',\n value\n });\n };\n const resize = () => {\n const action = `Resize - ${this.player.width()}x${this.player.height()}}`;\n this.track({\n action\n });\n };\n const fullscreenchange = () => {\n const action = this.player.isFullscreen() ? 'Enter Fullscreen' : 'Exit Fullscreen';\n this.track({\n action\n });\n };\n const percentsPlayed = (event, data) => {\n const {\n percent\n } = data;\n this.track({\n action: `${percent} Percents Played`,\n nonInteraction: true\n });\n };\n const timePlayed = (event, data) => {\n const {\n time\n } = data;\n this.track({\n action: `${time} Seconds Played`,\n value: time,\n nonInteraction: true\n });\n };\n const seek = (event, data) => {\n const {\n seekStart,\n seekEnd\n } = data;\n this.track({\n action: 'Seek Start',\n value: seekStart\n });\n this.track({\n action: 'Seek End',\n value: seekEnd\n });\n };\n const shoppableProductHover = (event, data) => {\n this.track({\n action: 'productHover',\n label: data.productName\n });\n };\n const shoppableProductClick = (event, data) => {\n this.track({\n action: 'productClick',\n label: data.productName\n });\n };\n const shoppableBarMax = () => {\n this.track({\n action: 'shoppableBar',\n label: 'opened'\n });\n };\n const shoppableBarMin = () => {\n this.track({\n action: 'shoppableBar',\n label: 'closed'\n });\n };\n const shoppableReplay = () => {\n this.track({\n action: 'replay'\n });\n };\n const shoppableProductClickPost = (event, data) => {\n this.track({\n action: 'productClickPostPlay',\n label: data.productName\n });\n };\n const shoppableProductHoverPost = (event, data) => {\n this.track({\n action: 'productHoverPostPlay',\n label: data.productName\n });\n };\n if (this.events.shoppable) {\n this.player.on('productHover', shoppableProductHover.bind(this));\n this.player.on('productClick', shoppableProductClick.bind(this));\n this.player.on('productHoverPost', shoppableProductHoverPost.bind(this));\n this.player.on('productClickPost', shoppableProductClickPost.bind(this));\n this.player.on('productBarMin', shoppableBarMin.bind(this));\n this.player.on('productBarMax', shoppableBarMax.bind(this));\n this.player.on('replay', shoppableReplay.bind(this));\n }\n if (this.events.play) {\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PLAY, play.bind(this));\n }\n if (this.events.ended) {\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.ENDED, ended.bind(this));\n }\n if (this.events.volumechange) {\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.VOLUME_CHANGE, volumechange.bind(this));\n }\n if (this.events.resize) {\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.RESIZE, resize.bind(this));\n }\n if (this.events.error) {\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.ERROR, error.bind(this));\n }\n if (this.events.start) {\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PLAYING, start.bind(this));\n }\n if (this.events.fullscreenchange) {\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.FULL_SCREEN_CHANGE, fullscreenchange.bind(this));\n }\n if (this.events.percentsplayed) {\n this._extendedEvents.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PERCENTS_PLAYED, percentsPlayed.bind(this));\n }\n if (this.events.timeplayed) {\n this._extendedEvents.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.TIME_PLAYED, timePlayed.bind(this));\n }\n if (this.events.pause) {\n this._extendedEvents.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PAUSE_NO_SEEK, pause.bind(this));\n }\n if (this.events.seek) {\n this._extendedEvents.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.SEEK, seek.bind(this));\n }\n if (this.events.playerload) {\n playerLoad();\n }\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.LOADED_METADATA, this.loadedmetadata.bind(this));\n }\n track(_ref) {\n let {\n action,\n label,\n value = null,\n nonInteraction = false\n } = _ref;\n const eventData = {\n event_category: this.options.category,\n event_label: label || this.options.defaultLabel(this.player),\n value: value || Math.round(this.player.currentTime()),\n non_interaction: nonInteraction\n };\n window.gtag('event', action, eventData);\n }\n videoload() {\n this.track({\n action: 'Video Load',\n nonInteraction: true\n });\n }\n resetState() {\n this._currentSource = '';\n this._startTracked = false;\n this._endTracked = false;\n }\n loadedmetadata() {\n const src = this.player.currentSource().src;\n if (src !== this._currentSource) {\n this.resetState();\n this._currentSource = src;\n if (this.events.videoload) {\n this.videoload();\n }\n }\n }\n}\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n new AnalyticsPlugin(this, opts).init();\n}\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/analytics/index.js?");
|
|
221
221
|
|
|
222
222
|
/***/ }),
|
|
223
223
|
|
|
@@ -250,7 +250,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
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\");\
|
|
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.6.4-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://cloudinary-video-player/./plugins/cloudinary-analytics/index.js?");
|
|
254
254
|
|
|
255
255
|
/***/ }),
|
|
256
256
|
|
|
@@ -261,7 +261,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
261
261
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
262
262
|
|
|
263
263
|
"use strict";
|
|
264
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ERROR_CODE: () => (/* binding */ ERROR_CODE),\n/* harmony export */ VIDEO_CODEC: () => (/* binding */ VIDEO_CODEC),\n/* harmony export */ cloudinaryErrorsConverter: () => (/* binding */ cloudinaryErrorsConverter),\n/* harmony export */ extendCloudinaryConfig: () => (/* binding */ extendCloudinaryConfig),\n/* harmony export */ getCloudinaryUrl: () => (/* binding */ getCloudinaryUrl),\n/* harmony export */ getCloudinaryUrlPrefix: () => (/* binding */ getCloudinaryUrlPrefix),\n/* harmony export */ isRawUrl: () => (/* binding */ isRawUrl),\n/* harmony export */ isSrcEqual: () => (/* binding */ isSrcEqual),\n/* harmony export */ mergeTransformations: () => (/* binding */ mergeTransformations),\n/* harmony export */ normalizeOptions: () => (/* binding */ normalizeOptions),\n/* harmony export */ setupCloudinaryMiddleware: () => (/* binding */ setupCloudinaryMiddleware)\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 lodash_omit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/omit */ \"../node_modules/lodash/omit.js\");\n/* harmony import */ var lodash_omit__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_omit__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var utils_slicing__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! utils/slicing */ \"./utils/slicing.js\");\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isObject */ \"../node_modules/lodash/isObject.js\");\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isObject__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/isString */ \"../node_modules/lodash/isString.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_isString__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _models_video_source_video_source_const__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./models/video-source/video-source.const */ \"./plugins/cloudinary/models/video-source/video-source.const.js\");\n/* harmony import */ var _cloudinary_url_gen_backwards_createCloudinaryLegacyURL__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @cloudinary/url-gen/backwards/createCloudinaryLegacyURL */ \"../node_modules/@cloudinary/url-gen/backwards/createCloudinaryLegacyURL.js\");\n/* harmony import */ var _cloudinary_url_gen_backwards_transformation__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @cloudinary/url-gen/backwards/transformation */ \"../node_modules/@cloudinary/url-gen/backwards/transformation.js\");\n/* harmony import */ var _cloudinary_url_gen_backwards_utils_unsigned_url_prefix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @cloudinary/url-gen/backwards/utils/unsigned_url_prefix */ \"../node_modules/@cloudinary/url-gen/backwards/utils/unsigned_url_prefix.js\");\n\n\n\n\n\n\n\n\n\nconst normalizeOptions = function (publicId, options) {\n let {\n tolerateMissingId = false\n } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (lodash_isObject__WEBPACK_IMPORTED_MODULE_3___default()(publicId)) {\n const _options = Object.assign({}, publicId);\n publicId = (0,utils_slicing__WEBPACK_IMPORTED_MODULE_2__.sliceAndUnsetProperties)(_options, 'publicId').publicId;\n if (!lodash_isString__WEBPACK_IMPORTED_MODULE_4___default()(publicId) && !tolerateMissingId) {\n throw new Error('Source is missing \\'publicId\\'.');\n }\n if (options) {\n options = Object.assign({}, _options, options);\n }\n }\n return {\n publicId,\n options\n };\n};\nconst isRawUrl = publicId => _models_video_source_video_source_const__WEBPACK_IMPORTED_MODULE_5__.URL_PATTERN.test(publicId);\nconst isSrcEqual = (source1, source2) => {\n let src1 = source1;\n let src2 = source2;\n if (typeof source1 === 'object') {\n src1 = source1.src;\n }\n if (typeof source2 === 'object') {\n src2 = source2.src;\n }\n if (/^\\/\\//.test(src1)) {\n src2 = src2.slice(src2.indexOf('//'));\n }\n if (/^\\/\\//.test(src2)) {\n src1 = src1.slice(src1.indexOf('//'));\n }\n return src1 === src2;\n};\nconst extendCloudinaryConfig = (currentConfig, newConfig) => Object.assign(currentConfig, newConfig);\nconst getCloudinaryUrl = (publicId, transformation) => (0,_cloudinary_url_gen_backwards_createCloudinaryLegacyURL__WEBPACK_IMPORTED_MODULE_6__.createCloudinaryLegacyURL)(publicId, lodash_omit__WEBPACK_IMPORTED_MODULE_1___default()(transformation, ['chainTarget']));\nconst getCloudinaryUrlPrefix = cloudinaryConfig => {\n
|
|
264
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ERROR_CODE: () => (/* binding */ ERROR_CODE),\n/* harmony export */ VIDEO_CODEC: () => (/* binding */ VIDEO_CODEC),\n/* harmony export */ cloudinaryErrorsConverter: () => (/* binding */ cloudinaryErrorsConverter),\n/* harmony export */ extendCloudinaryConfig: () => (/* binding */ extendCloudinaryConfig),\n/* harmony export */ getCloudinaryUrl: () => (/* binding */ getCloudinaryUrl),\n/* harmony export */ getCloudinaryUrlPrefix: () => (/* binding */ getCloudinaryUrlPrefix),\n/* harmony export */ isRawUrl: () => (/* binding */ isRawUrl),\n/* harmony export */ isSrcEqual: () => (/* binding */ isSrcEqual),\n/* harmony export */ mergeTransformations: () => (/* binding */ mergeTransformations),\n/* harmony export */ normalizeOptions: () => (/* binding */ normalizeOptions),\n/* harmony export */ setupCloudinaryMiddleware: () => (/* binding */ setupCloudinaryMiddleware)\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 lodash_omit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/omit */ \"../node_modules/lodash/omit.js\");\n/* harmony import */ var lodash_omit__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_omit__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var utils_slicing__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! utils/slicing */ \"./utils/slicing.js\");\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isObject */ \"../node_modules/lodash/isObject.js\");\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isObject__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/isString */ \"../node_modules/lodash/isString.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_isString__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _models_video_source_video_source_const__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./models/video-source/video-source.const */ \"./plugins/cloudinary/models/video-source/video-source.const.js\");\n/* harmony import */ var _cloudinary_url_gen_backwards_createCloudinaryLegacyURL__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @cloudinary/url-gen/backwards/createCloudinaryLegacyURL */ \"../node_modules/@cloudinary/url-gen/backwards/createCloudinaryLegacyURL.js\");\n/* harmony import */ var _cloudinary_url_gen_backwards_transformation__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @cloudinary/url-gen/backwards/transformation */ \"../node_modules/@cloudinary/url-gen/backwards/transformation.js\");\n/* harmony import */ var _cloudinary_url_gen_backwards_utils_unsigned_url_prefix__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @cloudinary/url-gen/backwards/utils/unsigned_url_prefix */ \"../node_modules/@cloudinary/url-gen/backwards/utils/unsigned_url_prefix.js\");\n\n\n\n\n\n\n\n\n\nconst normalizeOptions = function (publicId, options) {\n let {\n tolerateMissingId = false\n } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (lodash_isObject__WEBPACK_IMPORTED_MODULE_3___default()(publicId)) {\n const _options = Object.assign({}, publicId);\n publicId = (0,utils_slicing__WEBPACK_IMPORTED_MODULE_2__.sliceAndUnsetProperties)(_options, 'publicId').publicId;\n if (!lodash_isString__WEBPACK_IMPORTED_MODULE_4___default()(publicId) && !tolerateMissingId) {\n throw new Error('Source is missing \\'publicId\\'.');\n }\n if (options) {\n options = Object.assign({}, _options, options);\n }\n }\n return {\n publicId,\n options\n };\n};\nconst isRawUrl = publicId => _models_video_source_video_source_const__WEBPACK_IMPORTED_MODULE_5__.URL_PATTERN.test(publicId);\nconst isSrcEqual = (source1, source2) => {\n let src1 = source1;\n let src2 = source2;\n if (typeof source1 === 'object') {\n src1 = source1.src;\n }\n if (typeof source2 === 'object') {\n src2 = source2.src;\n }\n if (/^\\/\\//.test(src1)) {\n src2 = src2.slice(src2.indexOf('//'));\n }\n if (/^\\/\\//.test(src2)) {\n src1 = src1.slice(src1.indexOf('//'));\n }\n return src1 === src2;\n};\nconst extendCloudinaryConfig = (currentConfig, newConfig) => Object.assign(currentConfig, newConfig);\nconst getCloudinaryUrl = (publicId, transformation) => (0,_cloudinary_url_gen_backwards_createCloudinaryLegacyURL__WEBPACK_IMPORTED_MODULE_6__.createCloudinaryLegacyURL)(publicId, lodash_omit__WEBPACK_IMPORTED_MODULE_1___default()(transformation, ['chainTarget']));\nconst getCloudinaryUrlPrefix = cloudinaryConfig => {\n return (0,_cloudinary_url_gen_backwards_utils_unsigned_url_prefix__WEBPACK_IMPORTED_MODULE_7__.unsigned_url_prefix)(null, cloudinaryConfig.cloud_name, cloudinaryConfig.private_cdn, cloudinaryConfig.cdn_subdomain, cloudinaryConfig.secure_cdn_subdomain, cloudinaryConfig.cname, cloudinaryConfig.secure ?? true, cloudinaryConfig.secure_distribution);\n};\nconst isTransformationInstance = transformation => transformation.constructor.name === 'Transformation' && transformation.toOptions;\nconst mergeTransformations = (initTransformation1, transformation2) => {\n const transformation1 = isTransformationInstance(initTransformation1) ? initTransformation1.toOptions() : initTransformation1;\n return new _cloudinary_url_gen_backwards_transformation__WEBPACK_IMPORTED_MODULE_8__[\"default\"](transformation1).fromOptions(transformation2).toOptions();\n};\nconst ERROR_CODE = {\n NO_SUPPORTED_MEDIA: 6,\n CUSTOM: 10,\n UNKNOWN_CUSTOMER: 11,\n RESOURCE_NOT_FOUND: 12,\n PRIVATE_RESOURCE: 13,\n UNAUTHENTICATED: 14\n};\nconst cloudinaryErrorsConverter = _ref => {\n let {\n errorMsg,\n publicId,\n cloudName,\n statusCode\n } = _ref;\n const msg = 'Video cannot be played';\n let error = {\n code: ERROR_CODE.CUSTOM,\n message: `${msg}${errorMsg ? '- ' + errorMsg : ''}`,\n statusCode: statusCode\n };\n let err = errorMsg.toLowerCase();\n if (err.startsWith('unknown customer')) {\n error.code = ERROR_CODE.UNKNOWN_CUSTOMER;\n error.message = `${msg} Unknown cloud-name ${cloudName}`;\n }\n if (err.startsWith('resource not found')) {\n error.code = ERROR_CODE.RESOURCE_NOT_FOUND;\n error.message = `${msg} Public ID ${publicId} not found`;\n }\n if (err.startsWith('private resource')) {\n error.code = ERROR_CODE.PRIVATE_RESOURCE;\n error.message = `${msg} Private video`;\n }\n if (err.startsWith('unauthenticated access')) {\n error.message = `${msg} Requires authentication`;\n error.code = ERROR_CODE.UNAUTHENTICATED;\n }\n return error;\n};\nconst VIDEO_CODEC = {\n AV1: 'av1',\n VP9: 'vp9',\n HEV1: 'hev1',\n H265: 'h265',\n H264: 'h264'\n};\nconst setupCloudinaryMiddleware = () => {\n // Allow 'auto' as a source type\n video_js__WEBPACK_IMPORTED_MODULE_0___default().use('video/auto', () => {\n return {\n async setSource(srcObj, next) {\n const {\n headers\n } = await fetch(srcObj.src, {\n method: 'HEAD',\n credentials: srcObj.withCredentials ? 'include' : 'omit'\n });\n const mimetype = headers.get('content-type').split(';')[0];\n return next(null, {\n src: srcObj.src,\n type: mimetype\n });\n }\n };\n });\n};\n\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/cloudinary/common.js?");
|
|
265
265
|
|
|
266
266
|
/***/ }),
|
|
267
267
|
|
|
@@ -272,7 +272,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
272
272
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
273
273
|
|
|
274
274
|
"use strict";
|
|
275
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nclass EventHandlerRegistry {\n constructor(emitter) {\n this._emitter = emitter;\n this._eventHandlers = [];\n }\n on(type, handler) {\n this._eventHandlers.push({\n type,\n handler\n });\n this._emitter.on(type, handler);\n }\n one(type, handler) {\n var _this = this;\n const wrapper = function () {\n handler(...arguments);\n _this.off(type, handler);\n };\n this._eventHandlers.push({\n type,\n handler,\n wrapper\n });\n this._emitter.one(type, handler);\n }\n off(type, handler) {\n
|
|
275
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nclass EventHandlerRegistry {\n constructor(emitter) {\n this._emitter = emitter;\n this._eventHandlers = [];\n }\n on(type, handler) {\n this._eventHandlers.push({\n type,\n handler\n });\n this._emitter.on(type, handler);\n }\n one(type, handler) {\n var _this = this;\n const wrapper = function () {\n handler(...arguments);\n _this.off(type, handler);\n };\n this._eventHandlers.push({\n type,\n handler,\n wrapper\n });\n this._emitter.one(type, handler);\n }\n off(type, handler) {\n const index = this._eventHandlers?.findIndex(event => event.type === type && event.handler === handler);\n if (index === -1) {\n return;\n }\n const event = this._eventHandlers[index];\n this._emitter.off(type, event.wrapper || event.handler);\n this._eventHandlers.splice(index, 1);\n }\n removeAllListeners() {\n this._eventHandlers.forEach(event => {\n this.off(event);\n });\n }\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (EventHandlerRegistry);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/cloudinary/event-handler-registry.js?");
|
|
276
276
|
|
|
277
277
|
/***/ }),
|
|
278
278
|
|
|
@@ -283,7 +283,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
283
283
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
284
284
|
|
|
285
285
|
"use strict";
|
|
286
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CONSTRUCTOR_PARAMS: () => (/* binding */ CONSTRUCTOR_PARAMS),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/isFunction */ \"../node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var utils_apply_with_props__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utils/apply-with-props */ \"./utils/apply-with-props.js\");\n/* harmony import */ var utils_slicing__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! utils/slicing */ \"./utils/slicing.js\");\n/* harmony import */ var utils_cloudinary__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! utils/cloudinary */ \"./utils/cloudinary.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var _models_video_source_video_source__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./models/video-source/video-source */ \"./plugins/cloudinary/models/video-source/video-source.js\");\n/* harmony import */ var _event_handler_registry__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./event-handler-registry */ \"./plugins/cloudinary/event-handler-registry.js\");\n/* harmony import */ var _models_audio_source_audio_source__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./models/audio-source/audio-source */ \"./plugins/cloudinary/models/audio-source/audio-source.js\");\n/* harmony import */ var components_recommendations_overlay__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/recommendations-overlay */ \"./components/recommendations-overlay/index.js\");\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n\n\n\n\n\n\n\n\n\nconst DEFAULT_PARAMS = {\n transformation: {},\n sourceTypes: [],\n sourceTransformation: [],\n posterOptions: {}\n};\nconst CONSTRUCTOR_PARAMS = ['cloudinaryConfig', 'transformation', 'sourceTypes', 'sourceTransformation', 'posterOptions', 'autoShowRecommendations'];\nclass CloudinaryContext {\n constructor(player) {\n var _this = this;\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0,_common__WEBPACK_IMPORTED_MODULE_4__.setupCloudinaryMiddleware)();\n this.player = player;\n options = Object.assign({}, DEFAULT_PARAMS, options);\n let _source = null;\n let _sources = null;\n let _lastSource = null;\n let _lastPlaylist = null;\n let _posterOptions = null;\n let _cloudinaryConfig = null;\n let _transformation = null;\n let _sourceTypes = null;\n let _sourceTransformation = null;\n let _chainTarget = options.chainTarget;\n let _playerEvents = null;\n let _recommendations = null;\n let _autoShowRecommendations = false;\n this.source = function (source) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n options = Object.assign({}, options);\n if (!source) {\n return _source;\n }\n let src = null;\n if (source instanceof _models_video_source_video_source__WEBPACK_IMPORTED_MODULE_5__[\"default\"]) {\n src = source;\n } else {\n let {\n publicId,\n options: _options\n } = (0,_common__WEBPACK_IMPORTED_MODULE_4__.normalizeOptions)(source, options);\n src = _this.buildSource(publicId, _options);\n }\n const recommendations = src.recommendations();\n if (recommendations && recommendations.length) {\n let itemBuilder = null;\n let disableAutoShow = false;\n if (options.recommendationOptions) {\n ({\n disableAutoShow,\n itemBuilder\n } = (0,utils_slicing__WEBPACK_IMPORTED_MODULE_2__.sliceAndUnsetProperties)(options.recommendationOptions, 'disableAutoShow', 'itemBuilder'));\n }\n (0,components_recommendations_overlay__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(player).then(() => {\n setRecommendations(recommendations, {\n disableAutoShow,\n itemBuilder\n });\n });\n } else {\n unsetRecommendations();\n }\n _source = src;\n _transformation = src.transformation();\n const isDash = options.sourceTypes && options.sourceTypes.some(s => s.includes('dash')) || typeof source === 'string' && source.endsWith('.mpd');\n const isHls = options.sourceTypes && options.sourceTypes.some(s => s.includes('hls')) || typeof source === 'string' && source.endsWith('.m3u8');\n const isAdaptiveStreamingRequired = isDash || isHls;\n if (isAdaptiveStreamingRequired && !_this.player.adaptiveStreamingLoaded) {\n __webpack_require__.e(/*! import() | adaptive-streaming */ \"adaptive-streaming\").then(__webpack_require__.bind(__webpack_require__, /*! ../adaptive-streaming */ \"./plugins/adaptive-streaming/index.js\")).then(() => {\n _this.player.adaptiveStreaming(_objectSpread(_objectSpread({}, options.adaptiveStreaming), {}, {\n isDash,\n debug: options.debug,\n withCredentials: options.withCredentials\n })).then(() => {\n refresh();\n });\n }).catch(err => {\n console.error('Failed to load adaptive streaming plugin:', err);\n refresh();\n });\n } else if (!options.skipRefresh) {\n refresh();\n }\n _this.player.trigger('cldsourcechanged', {\n source: src,\n sourceOptions: options\n });\n return _chainTarget;\n };\n this.buildSource = function (publicId) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let builtSrc = null;\n ({\n publicId,\n options\n } = (0,_common__WEBPACK_IMPORTED_MODULE_4__.normalizeOptions)(publicId, options));\n options.cloudinaryConfig = (0,_common__WEBPACK_IMPORTED_MODULE_4__.extendCloudinaryConfig)(_this.cloudinaryConfig(), options.cloudinaryConfig || {});\n options.transformation = (0,_common__WEBPACK_IMPORTED_MODULE_4__.mergeTransformations)(_this.transformation(), options.transformation || {});\n options.sourceTransformation = options.sourceTransformation || _this.sourceTransformation();\n options.sourceTypes = options.sourceTypes || _this.sourceTypes();\n const defaultPosterOptions = posterOptionsForCurrent();\n const userPosterOptions = options.posterOptions || {};\n options.poster = options.poster || defaultPosterOptions;\n options.posterOptions = Object.assign({}, defaultPosterOptions, userPosterOptions, {\n hasUserPosterOptions: !!userPosterOptions || null\n });\n options.queryParams = Object.assign(options.queryParams || {}, options.allowUsageReport ? {\n _s: \"vp-\".concat(\"3.6.4-edge.0\")\n } : {});\n if (options.sourceTypes.indexOf('audio') > -1) {\n builtSrc = new _models_audio_source_audio_source__WEBPACK_IMPORTED_MODULE_7__[\"default\"](publicId, options);\n } else {\n builtSrc = new _models_video_source_video_source__WEBPACK_IMPORTED_MODULE_5__[\"default\"](publicId, options);\n }\n return builtSrc;\n };\n this.posterOptions = options => {\n if (!options) {\n return _posterOptions;\n }\n _posterOptions = options;\n return _chainTarget;\n };\n this.disablePoster = posterColor => {\n // https://docs.videojs.com/player.js.html#line3816\n this.player.poster(' ');\n this.player.posterImage.el().style.backgroundColor = posterColor;\n };\n this.cloudinaryConfig = config => {\n if (!config) {\n return _cloudinaryConfig;\n }\n _cloudinaryConfig = config;\n return _chainTarget;\n };\n this.transformation = trans => {\n if (!trans) {\n return _transformation;\n }\n _transformation = trans;\n return _chainTarget;\n };\n this.sourceTypes = types => {\n if (!types) {\n return _sourceTypes;\n }\n _sourceTypes = types;\n return _chainTarget;\n };\n this.getCurrentSources = () => _sources;\n this.sourceTransformation = trans => {\n if (!trans) {\n return _sourceTransformation;\n }\n _sourceTransformation = trans;\n return _chainTarget;\n };\n this.on = function () {\n return _playerEvents.on(...arguments);\n };\n this.one = function () {\n return _playerEvents.one(...arguments);\n };\n this.off = function () {\n return _playerEvents.off(...arguments);\n };\n this.autoShowRecommendations = autoShow => {\n if (autoShow === undefined) {\n return _autoShowRecommendations;\n }\n _autoShowRecommendations = autoShow;\n return _chainTarget;\n };\n this.dispose = () => {\n if (this.playlist && this.playlist()) {\n this.disposePlaylist();\n }\n unsetRecommendations();\n _source = undefined;\n _playerEvents.removeAllListeners();\n };\n const setRecommendations = (recommendations, _ref) => {\n let {\n disableAutoShow = false,\n itemBuilder = null\n } = _ref;\n unsetRecommendations();\n if (!Array.isArray(recommendations) && typeof recommendations !== 'function' && !recommendations.then) {\n throw new Error('\"recommendations\" must be either an array or a function');\n }\n _recommendations = {};\n itemBuilder = itemBuilder || (source => ({\n source: source instanceof _models_video_source_video_source__WEBPACK_IMPORTED_MODULE_5__[\"default\"] ? source : this.buildSource(source),\n action: () => this.source(source)\n }));\n _recommendations.sourceChangedHandler = () => {\n const trigger = sources => {\n if (typeof sources !== 'undefined' && sources.length > 0) {\n const items = sources.map(_source => itemBuilder(_source));\n this.player.trigger('recommendationschanged', {\n items\n });\n } else {\n this.player.trigger('recommendationsnoshow');\n }\n _recommendations.sources = sources;\n };\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_0___default()(recommendations)) {\n trigger(recommendations());\n } else if (recommendations.then) {\n recommendations.then(trigger);\n } else {\n trigger(recommendations);\n }\n };\n _recommendations.sourceChangedHandler();\n _recommendations.endedHandler = () => {\n if (!disableAutoShow && this.autoShowRecommendations()) {\n this.player.trigger('recommendationsshow');\n }\n };\n this.on('ended', _recommendations.endedHandler);\n };\n const unsetRecommendations = () => {\n if (_recommendations) {\n this.off('cldsourcechanged', _recommendations.sourceChangedHandler);\n this.off('ended', _recommendations.endedHandler);\n delete _recommendations.endedHandler;\n delete _recommendations.sourceChangedHandler;\n }\n _recommendations = null;\n };\n const refresh = () => {\n const src = this.source();\n if (!src) {\n return;\n }\n const posterOptions = Object.assign({}, this.player.cloudinary.posterOptions(), src.getInitOptions().poster);\n if (posterOptions.posterColor) {\n this.disablePoster(posterOptions.posterColor);\n } else if (src.poster()) {\n this.player.poster(src.poster().url());\n }\n _sources = src.generateSources().reduce((srcs, src) => {\n if (src.isAdaptive) {\n let codec = src.type.split('; ')[1] || null;\n if (codec && 'MediaSource' in window) {\n const parts = src.type.split('; ');\n let typeStr = \"video/mp4; \".concat(parts[1] || '');\n const canPlay = testCanPlayTypeAndTypeSupported(typeStr);\n if (canPlay) {\n srcs.push(src);\n }\n } else {\n srcs.push(src);\n }\n } else {\n srcs.push(src);\n }\n return srcs;\n }, []);\n this.player.src(_sources);\n _lastSource = src;\n if (this.playlist) {\n _lastPlaylist = this.playlist();\n }\n };\n const testCanPlayTypeAndTypeSupported = codec => {\n const v = document.createElement('video');\n return v.canPlayType(codec) || 'MediaSource' in window && MediaSource.isTypeSupported(codec);\n };\n const posterOptionsForCurrent = () => {\n const opts = Object.assign({}, this.posterOptions());\n opts.transformation = opts.transformation || {};\n if ((opts.transformation.width || opts.transformation.height) && !opts.transformation.crop) {\n opts.transformation.crop = 'scale';\n }\n\n // Set poster dimensions to player actual size.\n // (unless they were explicitly set via `posterOptions`)\n const playerEl = this.player.el();\n if (playerEl && playerEl.clientWidth && playerEl.clientHeight && !(0,utils_cloudinary__WEBPACK_IMPORTED_MODULE_3__.isKeyInTransformation)(opts.transformation, 'width') && !(0,utils_cloudinary__WEBPACK_IMPORTED_MODULE_3__.isKeyInTransformation)(opts.transformation, 'height')) {\n const roundUp100 = val => 100 * Math.ceil(val / 100);\n opts.transformation = (0,_common__WEBPACK_IMPORTED_MODULE_4__.mergeTransformations)(opts.transformation, {\n width: roundUp100(playerEl.clientWidth),\n height: roundUp100(playerEl.clientHeight),\n crop: 'limit'\n });\n }\n return opts;\n };\n\n // Handle external (non-cloudinary plugin) source changes (e.g. by ad plugins)\n const syncState = (_, data) => {\n let src = data.to;\n\n // When source is cloudinary's\n if (_lastSource && _lastSource.contains(src)) {\n // If plugin state doesn't have an active VideoSource\n if (!this.source()) {\n // We might have been running a playlist, reset playlist's state.\n if (this.playlist && _lastPlaylist) {\n this.playlist(_lastPlaylist);\n }\n // Rebuild last source state without calling vjs's 'src' and 'poster'\n this.source(_lastSource, {\n skipRefresh: true\n });\n }\n } else {\n // Used by cloudinary-only components\n this.player.trigger('cldsourcechanged', {});\n\n // When source isn't cloudinary's - reset the plugin's state.\n this.dispose();\n }\n };\n _playerEvents = new _event_handler_registry__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this.player);\n const constructorParams = (0,utils_slicing__WEBPACK_IMPORTED_MODULE_2__.sliceAndUnsetProperties)(options, ...CONSTRUCTOR_PARAMS);\n (0,utils_apply_with_props__WEBPACK_IMPORTED_MODULE_1__.applyWithProps)(this, constructorParams);\n this.on('sourcechanged', syncState);\n }\n currentSourceType() {\n return this.source().getType();\n }\n currentPublicId() {\n return this.source() && this.source().publicId();\n }\n currentPoster() {\n return this.source() && this.source().poster();\n }\n}\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n options.chainTarget = options.chainTarget || this;\n this.cloudinary = new CloudinaryContext(this, options);\n}\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/cloudinary/index.js?");
|
|
286
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CONSTRUCTOR_PARAMS: () => (/* binding */ CONSTRUCTOR_PARAMS),\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/isFunction */ \"../node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var utils_apply_with_props__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utils/apply-with-props */ \"./utils/apply-with-props.js\");\n/* harmony import */ var utils_slicing__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! utils/slicing */ \"./utils/slicing.js\");\n/* harmony import */ var utils_cloudinary__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! utils/cloudinary */ \"./utils/cloudinary.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var _models_video_source_video_source__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./models/video-source/video-source */ \"./plugins/cloudinary/models/video-source/video-source.js\");\n/* harmony import */ var _event_handler_registry__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./event-handler-registry */ \"./plugins/cloudinary/event-handler-registry.js\");\n/* harmony import */ var _models_audio_source_audio_source__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./models/audio-source/audio-source */ \"./plugins/cloudinary/models/audio-source/audio-source.js\");\n/* harmony import */ var components_recommendations_overlay__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/recommendations-overlay */ \"./components/recommendations-overlay/index.js\");\n\n\n\n\n\n\n\n\n\nconst DEFAULT_PARAMS = {\n transformation: {},\n sourceTypes: [],\n sourceTransformation: [],\n posterOptions: {}\n};\nconst CONSTRUCTOR_PARAMS = ['cloudinaryConfig', 'transformation', 'sourceTypes', 'sourceTransformation', 'posterOptions', 'autoShowRecommendations'];\nclass CloudinaryContext {\n constructor(player) {\n var _this = this;\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0,_common__WEBPACK_IMPORTED_MODULE_4__.setupCloudinaryMiddleware)();\n this.player = player;\n options = Object.assign({}, DEFAULT_PARAMS, options);\n let _source = null;\n let _sources = null;\n let _lastSource = null;\n let _lastPlaylist = null;\n let _posterOptions = null;\n let _cloudinaryConfig = null;\n let _transformation = null;\n let _sourceTypes = null;\n let _sourceTransformation = null;\n let _chainTarget = options.chainTarget;\n let _playerEvents = null;\n let _recommendations = null;\n let _autoShowRecommendations = false;\n this.source = function (source) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n options = Object.assign({}, options);\n if (!source) {\n return _source;\n }\n let src = null;\n if (source instanceof _models_video_source_video_source__WEBPACK_IMPORTED_MODULE_5__[\"default\"]) {\n src = source;\n } else {\n let {\n publicId,\n options: _options\n } = (0,_common__WEBPACK_IMPORTED_MODULE_4__.normalizeOptions)(source, options);\n src = _this.buildSource(publicId, _options);\n }\n const recommendations = src.recommendations();\n if (recommendations && recommendations.length) {\n let itemBuilder = null;\n let disableAutoShow = false;\n if (options.recommendationOptions) {\n ({\n disableAutoShow,\n itemBuilder\n } = (0,utils_slicing__WEBPACK_IMPORTED_MODULE_2__.sliceAndUnsetProperties)(options.recommendationOptions, 'disableAutoShow', 'itemBuilder'));\n }\n (0,components_recommendations_overlay__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(player).then(() => {\n setRecommendations(recommendations, {\n disableAutoShow,\n itemBuilder\n });\n });\n } else {\n unsetRecommendations();\n }\n _source = src;\n _transformation = src.transformation();\n const isDash = options.sourceTypes && options.sourceTypes.some(s => s.includes('dash')) || typeof source === 'string' && source.endsWith('.mpd');\n const isHls = options.sourceTypes && options.sourceTypes.some(s => s.includes('hls')) || typeof source === 'string' && source.endsWith('.m3u8');\n const isAdaptiveStreamingRequired = isDash || isHls;\n if (isAdaptiveStreamingRequired && !_this.player.adaptiveStreamingLoaded) {\n __webpack_require__.e(/*! import() | adaptive-streaming */ \"adaptive-streaming\").then(__webpack_require__.bind(__webpack_require__, /*! ../adaptive-streaming */ \"./plugins/adaptive-streaming/index.js\")).then(() => {\n _this.player.adaptiveStreaming({\n ...options.adaptiveStreaming,\n isDash,\n debug: options.debug,\n withCredentials: options.withCredentials\n }).then(() => {\n refresh();\n });\n }).catch(err => {\n console.error('Failed to load adaptive streaming plugin:', err);\n refresh();\n });\n } else if (!options.skipRefresh) {\n refresh();\n }\n _this.player.trigger('cldsourcechanged', {\n source: src,\n sourceOptions: options\n });\n return _chainTarget;\n };\n this.buildSource = function (publicId) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let builtSrc = null;\n ({\n publicId,\n options\n } = (0,_common__WEBPACK_IMPORTED_MODULE_4__.normalizeOptions)(publicId, options));\n options.cloudinaryConfig = (0,_common__WEBPACK_IMPORTED_MODULE_4__.extendCloudinaryConfig)(_this.cloudinaryConfig(), options.cloudinaryConfig || {});\n options.transformation = (0,_common__WEBPACK_IMPORTED_MODULE_4__.mergeTransformations)(_this.transformation(), options.transformation || {});\n options.sourceTransformation = options.sourceTransformation || _this.sourceTransformation();\n options.sourceTypes = options.sourceTypes || _this.sourceTypes();\n const defaultPosterOptions = posterOptionsForCurrent();\n const userPosterOptions = options.posterOptions || {};\n options.poster = options.poster || defaultPosterOptions;\n options.posterOptions = Object.assign({}, defaultPosterOptions, userPosterOptions, {\n hasUserPosterOptions: !!userPosterOptions || null\n });\n options.queryParams = Object.assign(options.queryParams || {}, options.allowUsageReport ? {\n _s: `vp-${\"3.6.4-edge.1\"}`\n } : {});\n if (options.sourceTypes.indexOf('audio') > -1) {\n builtSrc = new _models_audio_source_audio_source__WEBPACK_IMPORTED_MODULE_7__[\"default\"](publicId, options);\n } else {\n builtSrc = new _models_video_source_video_source__WEBPACK_IMPORTED_MODULE_5__[\"default\"](publicId, options);\n }\n return builtSrc;\n };\n this.posterOptions = options => {\n if (!options) {\n return _posterOptions;\n }\n _posterOptions = options;\n return _chainTarget;\n };\n this.disablePoster = posterColor => {\n // https://docs.videojs.com/player.js.html#line3816\n this.player.poster(' ');\n this.player.posterImage.el().style.backgroundColor = posterColor;\n };\n this.cloudinaryConfig = config => {\n if (!config) {\n return _cloudinaryConfig;\n }\n _cloudinaryConfig = config;\n return _chainTarget;\n };\n this.transformation = trans => {\n if (!trans) {\n return _transformation;\n }\n _transformation = trans;\n return _chainTarget;\n };\n this.sourceTypes = types => {\n if (!types) {\n return _sourceTypes;\n }\n _sourceTypes = types;\n return _chainTarget;\n };\n this.getCurrentSources = () => _sources;\n this.sourceTransformation = trans => {\n if (!trans) {\n return _sourceTransformation;\n }\n _sourceTransformation = trans;\n return _chainTarget;\n };\n this.on = function () {\n return _playerEvents.on(...arguments);\n };\n this.one = function () {\n return _playerEvents.one(...arguments);\n };\n this.off = function () {\n return _playerEvents.off(...arguments);\n };\n this.autoShowRecommendations = autoShow => {\n if (autoShow === undefined) {\n return _autoShowRecommendations;\n }\n _autoShowRecommendations = autoShow;\n return _chainTarget;\n };\n this.dispose = () => {\n if (this.playlist && this.playlist()) {\n this.disposePlaylist();\n }\n unsetRecommendations();\n _source = undefined;\n _playerEvents.removeAllListeners();\n };\n const setRecommendations = (recommendations, _ref) => {\n let {\n disableAutoShow = false,\n itemBuilder = null\n } = _ref;\n unsetRecommendations();\n if (!Array.isArray(recommendations) && typeof recommendations !== 'function' && !recommendations.then) {\n throw new Error('\"recommendations\" must be either an array or a function');\n }\n _recommendations = {};\n itemBuilder = itemBuilder || (source => ({\n source: source instanceof _models_video_source_video_source__WEBPACK_IMPORTED_MODULE_5__[\"default\"] ? source : this.buildSource(source),\n action: () => this.source(source)\n }));\n _recommendations.sourceChangedHandler = () => {\n const trigger = sources => {\n if (typeof sources !== 'undefined' && sources.length > 0) {\n const items = sources.map(_source => itemBuilder(_source));\n this.player.trigger('recommendationschanged', {\n items\n });\n } else {\n this.player.trigger('recommendationsnoshow');\n }\n _recommendations.sources = sources;\n };\n if (lodash_isFunction__WEBPACK_IMPORTED_MODULE_0___default()(recommendations)) {\n trigger(recommendations());\n } else if (recommendations.then) {\n recommendations.then(trigger);\n } else {\n trigger(recommendations);\n }\n };\n _recommendations.sourceChangedHandler();\n _recommendations.endedHandler = () => {\n if (!disableAutoShow && this.autoShowRecommendations()) {\n this.player.trigger('recommendationsshow');\n }\n };\n this.on('ended', _recommendations.endedHandler);\n };\n const unsetRecommendations = () => {\n if (_recommendations) {\n this.off('cldsourcechanged', _recommendations.sourceChangedHandler);\n this.off('ended', _recommendations.endedHandler);\n delete _recommendations.endedHandler;\n delete _recommendations.sourceChangedHandler;\n }\n _recommendations = null;\n };\n const refresh = () => {\n const src = this.source();\n if (!src) {\n return;\n }\n const posterOptions = Object.assign({}, this.player.cloudinary.posterOptions(), src.getInitOptions().poster);\n if (posterOptions.posterColor) {\n this.disablePoster(posterOptions.posterColor);\n } else if (src.poster()) {\n this.player.poster(src.poster().url());\n }\n _sources = src.generateSources().reduce((srcs, src) => {\n if (src.isAdaptive) {\n let codec = src.type.split('; ')[1] || null;\n if (codec && 'MediaSource' in window) {\n const parts = src.type.split('; ');\n let typeStr = `video/mp4; ${parts[1] || ''}`;\n const canPlay = testCanPlayTypeAndTypeSupported(typeStr);\n if (canPlay) {\n srcs.push(src);\n }\n } else {\n srcs.push(src);\n }\n } else {\n srcs.push(src);\n }\n return srcs;\n }, []);\n this.player.src(_sources);\n _lastSource = src;\n if (this.playlist) {\n _lastPlaylist = this.playlist();\n }\n };\n const testCanPlayTypeAndTypeSupported = codec => {\n const v = document.createElement('video');\n return v.canPlayType(codec) || 'MediaSource' in window && MediaSource.isTypeSupported(codec);\n };\n const posterOptionsForCurrent = () => {\n const opts = Object.assign({}, this.posterOptions());\n opts.transformation = opts.transformation || {};\n if ((opts.transformation.width || opts.transformation.height) && !opts.transformation.crop) {\n opts.transformation.crop = 'scale';\n }\n\n // Set poster dimensions to player actual size.\n // (unless they were explicitly set via `posterOptions`)\n const playerEl = this.player.el();\n if (playerEl && playerEl.clientWidth && playerEl.clientHeight && !(0,utils_cloudinary__WEBPACK_IMPORTED_MODULE_3__.isKeyInTransformation)(opts.transformation, 'width') && !(0,utils_cloudinary__WEBPACK_IMPORTED_MODULE_3__.isKeyInTransformation)(opts.transformation, 'height')) {\n const roundUp100 = val => 100 * Math.ceil(val / 100);\n opts.transformation = (0,_common__WEBPACK_IMPORTED_MODULE_4__.mergeTransformations)(opts.transformation, {\n width: roundUp100(playerEl.clientWidth),\n height: roundUp100(playerEl.clientHeight),\n crop: 'limit'\n });\n }\n return opts;\n };\n\n // Handle external (non-cloudinary plugin) source changes (e.g. by ad plugins)\n const syncState = (_, data) => {\n let src = data.to;\n\n // When source is cloudinary's\n if (_lastSource && _lastSource.contains(src)) {\n // If plugin state doesn't have an active VideoSource\n if (!this.source()) {\n // We might have been running a playlist, reset playlist's state.\n if (this.playlist && _lastPlaylist) {\n this.playlist(_lastPlaylist);\n }\n // Rebuild last source state without calling vjs's 'src' and 'poster'\n this.source(_lastSource, {\n skipRefresh: true\n });\n }\n } else {\n // Used by cloudinary-only components\n this.player.trigger('cldsourcechanged', {});\n\n // When source isn't cloudinary's - reset the plugin's state.\n this.dispose();\n }\n };\n _playerEvents = new _event_handler_registry__WEBPACK_IMPORTED_MODULE_6__[\"default\"](this.player);\n const constructorParams = (0,utils_slicing__WEBPACK_IMPORTED_MODULE_2__.sliceAndUnsetProperties)(options, ...CONSTRUCTOR_PARAMS);\n (0,utils_apply_with_props__WEBPACK_IMPORTED_MODULE_1__.applyWithProps)(this, constructorParams);\n this.on('sourcechanged', syncState);\n }\n currentSourceType() {\n return this.source().getType();\n }\n currentPublicId() {\n return this.source() && this.source().publicId();\n }\n currentPoster() {\n return this.source() && this.source().poster();\n }\n}\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n options.chainTarget = options.chainTarget || this;\n this.cloudinary = new CloudinaryContext(this, options);\n}\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/cloudinary/index.js?");
|
|
287
287
|
|
|
288
288
|
/***/ }),
|
|
289
289
|
|
|
@@ -294,7 +294,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
294
294
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
295
295
|
|
|
296
296
|
"use strict";
|
|
297
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AUDIO_SUFFIX_REMOVAL_PATTERN: () => (/* binding */ AUDIO_SUFFIX_REMOVAL_PATTERN),\n/* harmony export */ COMMON_AUDIO_FORMATS: () => (/* binding */ COMMON_AUDIO_FORMATS),\n/* harmony export */ DEFAULT_AUDIO_PARAMS: () => (/* binding */ DEFAULT_AUDIO_PARAMS),\n/* harmony export */ DEFAULT_POSTER_PARAMS: () => (/* binding */ DEFAULT_POSTER_PARAMS)\n/* harmony export */ });\nconst DEFAULT_POSTER_PARAMS = {\n format: 'jpg',\n resource_type: 'video',\n transformation: {\n flags: 'waveform'\n }\n};\nconst COMMON_AUDIO_FORMATS = ['mp3', 'ogg', 'wav', 'mp4'];\nconst AUDIO_SUFFIX_REMOVAL_PATTERN = RegExp(
|
|
297
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AUDIO_SUFFIX_REMOVAL_PATTERN: () => (/* binding */ AUDIO_SUFFIX_REMOVAL_PATTERN),\n/* harmony export */ COMMON_AUDIO_FORMATS: () => (/* binding */ COMMON_AUDIO_FORMATS),\n/* harmony export */ DEFAULT_AUDIO_PARAMS: () => (/* binding */ DEFAULT_AUDIO_PARAMS),\n/* harmony export */ DEFAULT_POSTER_PARAMS: () => (/* binding */ DEFAULT_POSTER_PARAMS)\n/* harmony export */ });\nconst DEFAULT_POSTER_PARAMS = {\n format: 'jpg',\n resource_type: 'video',\n transformation: {\n flags: 'waveform'\n }\n};\nconst COMMON_AUDIO_FORMATS = ['mp3', 'ogg', 'wav', 'mp4'];\nconst AUDIO_SUFFIX_REMOVAL_PATTERN = RegExp(`\\\\.(${COMMON_AUDIO_FORMATS.join('|')})$$`);\nconst DEFAULT_AUDIO_PARAMS = {\n resource_type: 'video',\n type: 'upload',\n transformation: []\n};\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/cloudinary/models/audio-source/audio-source.const.js?");
|
|
298
298
|
|
|
299
299
|
/***/ }),
|
|
300
300
|
|
|
@@ -305,7 +305,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
305
305
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
306
306
|
|
|
307
307
|
"use strict";
|
|
308
|
-
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_source_video_source__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../video-source/video-source */ \"./plugins/cloudinary/models/video-source/video-source.js\");\n/* harmony import */ var _image_source__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../image-source */ \"./plugins/cloudinary/models/image-source.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var utils_slicing__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! utils/slicing */ \"./utils/slicing.js\");\n/* harmony import */ var utils_querystring__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! utils/querystring */ \"./utils/querystring.js\");\n/* harmony import */ var _audio_source_const__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./audio-source.const */ \"./plugins/cloudinary/models/audio-source/audio-source.const.js\");\n/* harmony import */ var _utils_consts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../../utils/consts */ \"./utils/consts.js\");\n\n\n\n\n\n\n\nclass AudioSource extends _video_source_video_source__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n constructor(publicId) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n ({\n publicId,\n options\n } = (0,_common__WEBPACK_IMPORTED_MODULE_2__.normalizeOptions)(publicId, options));\n publicId = publicId.replace(_audio_source_const__WEBPACK_IMPORTED_MODULE_5__.AUDIO_SUFFIX_REMOVAL_PATTERN, '');\n options = Object.assign({}, _audio_source_const__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_AUDIO_PARAMS, options);\n const {\n poster\n } = (0,utils_slicing__WEBPACK_IMPORTED_MODULE_3__.sliceAndUnsetProperties)(options, 'poster');\n super(publicId, options);\n this._poster = null;\n this._type = _utils_consts__WEBPACK_IMPORTED_MODULE_6__.SOURCE_TYPE.AUDIO;\n this.poster(poster);\n }\n getPoster() {\n return this._poster;\n }\n poster(publicId) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!publicId) {\n return this._poster;\n }\n if (publicId instanceof _image_source__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) {\n this._poster = publicId;\n return this;\n }\n ({\n publicId,\n options\n } = (0,_common__WEBPACK_IMPORTED_MODULE_2__.normalizeOptions)(publicId, options, {\n tolerateMissingId: true\n }));\n if (!publicId) {\n publicId = this.publicId();\n options = Object.assign({}, options, _audio_source_const__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_POSTER_PARAMS);\n }\n options.cloudinaryConfig = options.cloudinaryConfig || this.cloudinaryConfig();\n this._poster = new _image_source__WEBPACK_IMPORTED_MODULE_1__[\"default\"](publicId, options);\n return this;\n }\n generateSources() {\n return this.sourceTypes().map(sourceType => {\n if (sourceType === 'audio') {\n const format = 'mp3';\n const opts = {};\n const srcTransformation = this.sourceTransformation()[sourceType] || [this.transformation()];\n if (srcTransformation) {\n opts.transformation = srcTransformation;\n }\n Object.assign(opts, {\n resource_type: 'video',\n format\n });\n const queryString = this.queryParams() ? (0,utils_querystring__WEBPACK_IMPORTED_MODULE_4__.objectToQuerystring)(this.queryParams()) : '';\n const src =
|
|
308
|
+
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_source_video_source__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../video-source/video-source */ \"./plugins/cloudinary/models/video-source/video-source.js\");\n/* harmony import */ var _image_source__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../image-source */ \"./plugins/cloudinary/models/image-source.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var utils_slicing__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! utils/slicing */ \"./utils/slicing.js\");\n/* harmony import */ var utils_querystring__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! utils/querystring */ \"./utils/querystring.js\");\n/* harmony import */ var _audio_source_const__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./audio-source.const */ \"./plugins/cloudinary/models/audio-source/audio-source.const.js\");\n/* harmony import */ var _utils_consts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../../utils/consts */ \"./utils/consts.js\");\n\n\n\n\n\n\n\nclass AudioSource extends _video_source_video_source__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n constructor(publicId) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n ({\n publicId,\n options\n } = (0,_common__WEBPACK_IMPORTED_MODULE_2__.normalizeOptions)(publicId, options));\n publicId = publicId.replace(_audio_source_const__WEBPACK_IMPORTED_MODULE_5__.AUDIO_SUFFIX_REMOVAL_PATTERN, '');\n options = Object.assign({}, _audio_source_const__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_AUDIO_PARAMS, options);\n const {\n poster\n } = (0,utils_slicing__WEBPACK_IMPORTED_MODULE_3__.sliceAndUnsetProperties)(options, 'poster');\n super(publicId, options);\n this._poster = null;\n this._type = _utils_consts__WEBPACK_IMPORTED_MODULE_6__.SOURCE_TYPE.AUDIO;\n this.poster(poster);\n }\n getPoster() {\n return this._poster;\n }\n poster(publicId) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!publicId) {\n return this._poster;\n }\n if (publicId instanceof _image_source__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) {\n this._poster = publicId;\n return this;\n }\n ({\n publicId,\n options\n } = (0,_common__WEBPACK_IMPORTED_MODULE_2__.normalizeOptions)(publicId, options, {\n tolerateMissingId: true\n }));\n if (!publicId) {\n publicId = this.publicId();\n options = Object.assign({}, options, _audio_source_const__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_POSTER_PARAMS);\n }\n options.cloudinaryConfig = options.cloudinaryConfig || this.cloudinaryConfig();\n this._poster = new _image_source__WEBPACK_IMPORTED_MODULE_1__[\"default\"](publicId, options);\n return this;\n }\n generateSources() {\n return this.sourceTypes().map(sourceType => {\n if (sourceType === 'audio') {\n const format = 'mp3';\n const opts = {};\n const srcTransformation = this.sourceTransformation()[sourceType] || [this.transformation()];\n if (srcTransformation) {\n opts.transformation = srcTransformation;\n }\n Object.assign(opts, {\n resource_type: 'video',\n format\n });\n const queryString = this.queryParams() ? (0,utils_querystring__WEBPACK_IMPORTED_MODULE_4__.objectToQuerystring)(this.queryParams()) : '';\n const src = `${this.config().url(this.publicId(), opts)}${queryString}`;\n const type = 'video/mp4';\n return {\n type,\n src,\n cldSrc: this,\n poster: this.getPoster().url()\n };\n } else {\n return null;\n }\n }, this);\n }\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AudioSource);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/cloudinary/models/audio-source/audio-source.js?");
|
|
309
309
|
|
|
310
310
|
/***/ }),
|
|
311
311
|
|
|
@@ -316,7 +316,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
316
316
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
317
317
|
|
|
318
318
|
"use strict";
|
|
319
|
-
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 _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var utils_slicing__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utils/slicing */ \"./utils/slicing.js\");\n/* harmony import */ var utils_querystring__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! utils/querystring */ \"./utils/querystring.js\");\
|
|
319
|
+
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 _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var utils_slicing__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utils/slicing */ \"./utils/slicing.js\");\n/* harmony import */ var utils_querystring__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! utils/querystring */ \"./utils/querystring.js\");\n\n\n\nclass BaseSource {\n _transformation = null;\n constructor(initPublicId) {\n let initOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n publicId,\n options\n } = (0,_common__WEBPACK_IMPORTED_MODULE_0__.normalizeOptions)(initPublicId, initOptions);\n const {\n cloudinaryConfig\n } = (0,utils_slicing__WEBPACK_IMPORTED_MODULE_1__.sliceAndUnsetProperties)(options, 'cloudinaryConfig');\n const {\n transformation\n } = (0,utils_slicing__WEBPACK_IMPORTED_MODULE_1__.sliceAndUnsetProperties)(options, 'transformation');\n const {\n queryParams\n } = (0,utils_slicing__WEBPACK_IMPORTED_MODULE_1__.sliceAndUnsetProperties)(options, 'queryParams');\n if (!cloudinaryConfig) {\n throw new Error('Source is missing \"cloudinaryConfig\".');\n }\n this.publicId = () => publicId;\n this.cloudinaryConfig = () => cloudinaryConfig;\n this.resourceConfig = () => options;\n this.queryParams = () => queryParams;\n this.getType = () => this._type;\n this.transformation(transformation);\n }\n transformation(transformation) {\n if (transformation) {\n this._transformation = transformation;\n }\n return this._transformation;\n }\n config() {\n const coreConfig = this.cloudinaryConfig();\n return {\n cloud_name: coreConfig.cloudName,\n url: (publicId, initTransformation) => {\n if ((0,_common__WEBPACK_IMPORTED_MODULE_0__.isRawUrl)(publicId)) {\n return publicId;\n }\n const transformation = (0,_common__WEBPACK_IMPORTED_MODULE_0__.mergeTransformations)(this.resourceConfig(), initTransformation);\n return (0,_common__WEBPACK_IMPORTED_MODULE_0__.getCloudinaryUrl)(publicId, {\n ...coreConfig,\n ...transformation\n });\n }\n };\n }\n url() {\n let {\n transformation\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const url = this.config().url(this.publicId(), {\n transformation: transformation || this.transformation()\n });\n const queryString = this.queryParams() ? (0,utils_querystring__WEBPACK_IMPORTED_MODULE_2__.objectToQuerystring)(this.queryParams()) : '';\n return `${url}${queryString}`;\n }\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BaseSource);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/cloudinary/models/base-source.js?");
|
|
320
320
|
|
|
321
321
|
/***/ }),
|
|
322
322
|
|
|
@@ -327,7 +327,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
327
327
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
328
328
|
|
|
329
329
|
"use strict";
|
|
330
|
-
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 _base_source__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base-source */ \"./plugins/cloudinary/models/base-source.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"./plugins/cloudinary/common.js\");\n\n\nconst COMMON_IMAGE_FORMATS = ['jpg', 'png', 'gif', 'webp'];\nconst IMAGE_SUFFIX_REMOVAL_PATTERN = RegExp(
|
|
330
|
+
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 _base_source__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base-source */ \"./plugins/cloudinary/models/base-source.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"./plugins/cloudinary/common.js\");\n\n\nconst COMMON_IMAGE_FORMATS = ['jpg', 'png', 'gif', 'webp'];\nconst IMAGE_SUFFIX_REMOVAL_PATTERN = RegExp(`\\\\.(${COMMON_IMAGE_FORMATS.join('|')})$$`);\nconst DEFAULT_IMAGE_PARAMS = {\n resource_type: 'image',\n type: 'upload',\n transformation: []\n};\nclass ImageSource extends _base_source__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n constructor(publicId) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n ({\n publicId,\n options\n } = (0,_common__WEBPACK_IMPORTED_MODULE_1__.normalizeOptions)(publicId, options));\n publicId = publicId.replace(IMAGE_SUFFIX_REMOVAL_PATTERN, '');\n options = Object.assign({}, DEFAULT_IMAGE_PARAMS, options);\n super(publicId, options);\n this._type = 'ImageSource';\n }\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ImageSource);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/cloudinary/models/image-source.js?");
|
|
331
331
|
|
|
332
332
|
/***/ }),
|
|
333
333
|
|
|
@@ -338,7 +338,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
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_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 */ URL_PATTERN: () => (/* binding */ URL_PATTERN),\n/* harmony export */ VIDEO_SUFFIX_REMOVAL_PATTERN: () => (/* binding */ VIDEO_SUFFIX_REMOVAL_PATTERN)\n/* harmony export */ });\nconst DEFAULT_POSTER_PARAMS = {\n format: 'jpg',\n resource_type: 'video'\n};\nconst DEFAULT_VIDEO_PARAMS = {\n resource_type: 'video',\n type: 'upload',\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(
|
|
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_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 */ URL_PATTERN: () => (/* binding */ URL_PATTERN),\n/* harmony export */ VIDEO_SUFFIX_REMOVAL_PATTERN: () => (/* binding */ VIDEO_SUFFIX_REMOVAL_PATTERN)\n/* harmony export */ });\nconst DEFAULT_POSTER_PARAMS = {\n format: 'jpg',\n resource_type: 'video'\n};\nconst DEFAULT_VIDEO_PARAMS = {\n resource_type: 'video',\n type: 'upload',\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\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()@:%_\\+.~#?&/=]*)');\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//# sourceURL=webpack://cloudinary-video-player/./plugins/cloudinary/models/video-source/video-source.const.js?");
|
|
342
342
|
|
|
343
343
|
/***/ }),
|
|
344
344
|
|
|
@@ -349,7 +349,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
349
349
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
350
350
|
|
|
351
351
|
"use strict";
|
|
352
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var utils_querystring__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! utils/querystring */ \"./utils/querystring.js\");\n/* harmony import */ var lodash_castArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/castArray */ \"../node_modules/lodash/castArray.js\");\n/* harmony import */ var lodash_castArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_castArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var utils_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! utils/consts */ \"./utils/consts.js\");\n/* harmony import */ var video_player_const__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! video-player.const */ \"./video-player.const.js\");\n/* harmony import */ var _video_source_const__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./video-source.const */ \"./plugins/cloudinary/models/video-source/video-source.const.js\");\n/* harmony import */ var _video_source_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./video-source.utils */ \"./plugins/cloudinary/models/video-source/video-source.utils.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var utils_utf8Base64__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! utils/utf8Base64 */ \"./utils/utf8Base64.js\");\n/* harmony import */ var _cloudinary_url_gen_backwards_transformation__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @cloudinary/url-gen/backwards/transformation */ \"../node_modules/@cloudinary/url-gen/backwards/transformation.js\");\n/* harmony import */ var _base_source__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../base-source */ \"./plugins/cloudinary/models/base-source.js\");\n/* harmony import */ var _image_source__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../image-source */ \"./plugins/cloudinary/models/image-source.js\");\n\n\n\n\n\n\n\n\n\n\n\nlet objectId = 0;\nconst generateId = () => objectId++;\nclass VideoSource extends _base_source__WEBPACK_IMPORTED_MODULE_8__[\"default\"] {\n constructor(_publicId) {\n let initOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const _isRawUrl = (0,_common__WEBPACK_IMPORTED_MODULE_6__.isRawUrl)(_publicId);\n let {\n publicId,\n options\n } = (0,_common__WEBPACK_IMPORTED_MODULE_6__.normalizeOptions)(_publicId, initOptions);\n if (!_isRawUrl) {\n publicId = publicId.replace(_video_source_const__WEBPACK_IMPORTED_MODULE_4__.VIDEO_SUFFIX_REMOVAL_PATTERN, '');\n }\n options = Object.assign({}, _video_source_const__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_VIDEO_PARAMS, options);\n if (options.resourceType) {\n options.resource_type = options.resourceType;\n }\n if (!options.poster) {\n options.poster = Object.assign({\n publicId\n }, _video_source_const__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_POSTER_PARAMS);\n }\n super(publicId, options);\n this._type = utils_consts__WEBPACK_IMPORTED_MODULE_2__.SOURCE_TYPE.VIDEO;\n this.isRawUrl = _isRawUrl;\n this.isLiveStream = options.type === 'live';\n this.withCredentials = !!options.withCredentials;\n this.getInitOptions = () => initOptions;\n\n // Get properties that need simple getter/setter methods (exclude special cases)\n const EXCLUDED_PROPERTIES = ['poster',\n // Has complex logic\n 'withCredentials',\n // Direct property\n 'publicId',\n // BaseSource method\n 'cloudinaryConfig',\n // BaseSource method\n 'transformation',\n // BaseSource method\n 'queryParams',\n // BaseSource method\n 'type',\n // BaseSource handles getType()\n 'info' // Custom override method\n ];\n const SIMPLE_PROPERTIES = video_player_const__WEBPACK_IMPORTED_MODULE_3__.SOURCE_PARAMS.filter(param => !EXCLUDED_PROPERTIES.includes(param));\n\n // Create simple getter/setter methods\n this._createGetterSetters(SIMPLE_PROPERTIES);\n\n // Set initial values from options\n SIMPLE_PROPERTIES.forEach(prop => {\n if (options[prop] !== undefined) {\n this[prop](options[prop]);\n }\n });\n\n // Initialize poster\n this.poster(options.poster);\n this.objectId = generateId();\n }\n\n // Helper method to create simple getter/setter methods\n _createGetterSetters(properties) {\n properties.forEach(prop => {\n const privateKey = \"_\".concat(prop);\n this[prop] = function (value) {\n if (value === undefined) {\n // Provide sensible defaults for specific properties\n if (prop === 'sourceTypes' && this[privateKey] === undefined) {\n return ['auto'];\n }\n if (prop === 'sourceTransformation' && this[privateKey] === undefined) {\n return {};\n }\n return this[privateKey];\n }\n this[privateKey] = value;\n return this;\n };\n });\n }\n poster(publicId) {\n let options = {\n type: this.getInitOptions().type\n };\n if (!publicId) {\n return this._poster;\n }\n if (publicId instanceof _image_source__WEBPACK_IMPORTED_MODULE_9__[\"default\"]) {\n this._poster = publicId;\n return this;\n }\n ({\n publicId,\n options\n } = (0,_common__WEBPACK_IMPORTED_MODULE_6__.normalizeOptions)(publicId, options, {\n tolerateMissingId: true\n }));\n if (!publicId && this.isRawUrl) {\n return null;\n }\n if (this.isLiveStream) {\n return null;\n }\n if (!publicId) {\n publicId = this.publicId();\n options = Object.assign({}, options, _video_source_const__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_POSTER_PARAMS);\n }\n options.cloudinaryConfig = options.cloudinaryConfig || this.cloudinaryConfig();\n options.resource_type = this.resourceType() || options.resource_type;\n if (publicId === true) {\n var _this$getInitOptions$;\n const urlPrefix = (0,_common__WEBPACK_IMPORTED_MODULE_6__.getCloudinaryUrlPrefix)(options.cloudinaryConfig);\n const deliveryType = this.getInitOptions().type || 'upload';\n const base64PublicId = (0,utils_utf8Base64__WEBPACK_IMPORTED_MODULE_7__.utf8ToBase64)(this.publicId());\n let appletUrl = \"\".concat(urlPrefix, \"/_applet_/video_service/elements/\").concat(deliveryType, \"/\").concat(base64PublicId, \"/poster\");\n const transformation = (_this$getInitOptions$ = this.getInitOptions().posterOptions) === null || _this$getInitOptions$ === void 0 ? void 0 : _this$getInitOptions$.transformation;\n if (transformation) {\n const transformationString = new _cloudinary_url_gen_backwards_transformation__WEBPACK_IMPORTED_MODULE_10__[\"default\"](transformation).toString();\n appletUrl += \"?tx=\".concat(transformationString);\n }\n this._poster = new _image_source__WEBPACK_IMPORTED_MODULE_9__[\"default\"](appletUrl, {\n cloudinaryConfig: options.cloudinaryConfig\n });\n return this;\n }\n this._poster = new _image_source__WEBPACK_IMPORTED_MODULE_9__[\"default\"](publicId, options);\n return this;\n }\n contains(source) {\n const sources = this.generateSources();\n return sources.some(_source => (0,_common__WEBPACK_IMPORTED_MODULE_6__.isSrcEqual)(_source, source));\n }\n generateSources() {\n if (this.isRawUrl) {\n const type = this.sourceTypes()[0] === 'auto' ? null : this.sourceTypes()[0];\n return [this.generateRawSource(this.publicId(), type)];\n }\n const srcs = this.sourceTypes().map(sourceType => {\n const srcTransformation = this.sourceTransformation()[sourceType] || this.transformation();\n const format = (0,_video_source_utils__WEBPACK_IMPORTED_MODULE_5__.normalizeFormat)(sourceType);\n const isAdaptive = _video_source_const__WEBPACK_IMPORTED_MODULE_4__.ADAPTIVE_SOURCETYPES.includes(format);\n const opts = {};\n if (srcTransformation) {\n opts.transformation = lodash_castArray__WEBPACK_IMPORTED_MODULE_1___default()(srcTransformation);\n }\n Object.assign(opts, {\n format\n });\n const [type, codecTrans] = (0,_video_source_utils__WEBPACK_IMPORTED_MODULE_5__.formatToMimeTypeAndTransformation)(sourceType);\n\n // If user's transformation include video_codec then don't add another video codec to transformation\n if (codecTrans && !((0,_video_source_utils__WEBPACK_IMPORTED_MODULE_5__.hasCodec)(opts.transformation) || (0,_video_source_utils__WEBPACK_IMPORTED_MODULE_5__.hasCodec)(this.rawTransformation()))) {\n opts.transformation = (0,_common__WEBPACK_IMPORTED_MODULE_6__.mergeTransformations)(opts.transformation, codecTrans);\n }\n if (opts.format === 'auto') {\n delete opts.format;\n opts.transformation = (0,_common__WEBPACK_IMPORTED_MODULE_6__.mergeTransformations)(opts.transformation, {\n fetch_format: 'auto:video'\n });\n }\n if (isAdaptive) {\n // Search for streaming_profile anywhere in the transformation\n const hasStreamingProfile = JSON.stringify(opts.transformation || {}).includes('\"streaming_profile\":');\n if (!hasStreamingProfile && !this.isLiveStream) {\n opts.transformation = (0,_common__WEBPACK_IMPORTED_MODULE_6__.mergeTransformations)(opts.transformation, {\n streaming_profile: 'auto'\n });\n }\n }\n const queryString = this.queryParams() ? (0,utils_querystring__WEBPACK_IMPORTED_MODULE_0__.objectToQuerystring)(this.queryParams()) : '';\n const src = this.config().url(this.publicId(), opts);\n // if src is a url that already contains query params then replace '?' with '&'\n const params = src.indexOf('?') > -1 ? queryString.replace('?', '&') : queryString;\n return {\n type,\n src: src + params,\n cldSrc: this,\n isAdaptive: isAdaptive,\n withCredentials: this.withCredentials\n };\n });\n return srcs;\n }\n generateRawSource(url, type) {\n type = type || url.split('.').pop();\n const isAdaptive = _video_source_const__WEBPACK_IMPORTED_MODULE_4__.ADAPTIVE_SOURCETYPES.includes(type);\n if (_video_source_const__WEBPACK_IMPORTED_MODULE_4__.CONTAINER_MIME_TYPES[type]) {\n type = _video_source_const__WEBPACK_IMPORTED_MODULE_4__.CONTAINER_MIME_TYPES[type];\n } else {\n type = type ? \"video/\".concat(type) : null;\n }\n return {\n type,\n src: url,\n cldSrc: this,\n isAdaptive,\n withCredentials: this.withCredentials\n };\n }\n info(value) {\n if (value !== undefined) {\n this._info = value;\n return this;\n }\n const info = this._info || this.getInitOptions().info;\n return {\n title: this.title() || (info === null || info === void 0 ? void 0 : info.title) || '',\n subtitle: this.description() || (info === null || info === void 0 ? void 0 : info.subtitle) || '',\n description: this.description() || (info === null || info === void 0 ? void 0 : info.subtitle) || ''\n };\n }\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (VideoSource);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/cloudinary/models/video-source/video-source.js?");
|
|
352
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var utils_querystring__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! utils/querystring */ \"./utils/querystring.js\");\n/* harmony import */ var lodash_castArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/castArray */ \"../node_modules/lodash/castArray.js\");\n/* harmony import */ var lodash_castArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_castArray__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var utils_consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! utils/consts */ \"./utils/consts.js\");\n/* harmony import */ var video_player_const__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! video-player.const */ \"./video-player.const.js\");\n/* harmony import */ var _video_source_const__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./video-source.const */ \"./plugins/cloudinary/models/video-source/video-source.const.js\");\n/* harmony import */ var _video_source_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./video-source.utils */ \"./plugins/cloudinary/models/video-source/video-source.utils.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var utils_utf8Base64__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! utils/utf8Base64 */ \"./utils/utf8Base64.js\");\n/* harmony import */ var _cloudinary_url_gen_backwards_transformation__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @cloudinary/url-gen/backwards/transformation */ \"../node_modules/@cloudinary/url-gen/backwards/transformation.js\");\n/* harmony import */ var _base_source__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../base-source */ \"./plugins/cloudinary/models/base-source.js\");\n/* harmony import */ var _image_source__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../image-source */ \"./plugins/cloudinary/models/image-source.js\");\n\n\n\n\n\n\n\n\n\n\n\nlet objectId = 0;\nconst generateId = () => objectId++;\nclass VideoSource extends _base_source__WEBPACK_IMPORTED_MODULE_8__[\"default\"] {\n constructor(_publicId) {\n let initOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const _isRawUrl = (0,_common__WEBPACK_IMPORTED_MODULE_6__.isRawUrl)(_publicId);\n let {\n publicId,\n options\n } = (0,_common__WEBPACK_IMPORTED_MODULE_6__.normalizeOptions)(_publicId, initOptions);\n if (!_isRawUrl) {\n publicId = publicId.replace(_video_source_const__WEBPACK_IMPORTED_MODULE_4__.VIDEO_SUFFIX_REMOVAL_PATTERN, '');\n }\n options = Object.assign({}, _video_source_const__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_VIDEO_PARAMS, options);\n if (options.resourceType) {\n options.resource_type = options.resourceType;\n }\n if (!options.poster) {\n options.poster = Object.assign({\n publicId\n }, _video_source_const__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_POSTER_PARAMS);\n }\n super(publicId, options);\n this._type = utils_consts__WEBPACK_IMPORTED_MODULE_2__.SOURCE_TYPE.VIDEO;\n this.isRawUrl = _isRawUrl;\n this.isLiveStream = options.type === 'live';\n this.withCredentials = !!options.withCredentials;\n this.getInitOptions = () => initOptions;\n\n // Get properties that need simple getter/setter methods (exclude special cases)\n const EXCLUDED_PROPERTIES = ['poster',\n // Has complex logic\n 'withCredentials',\n // Direct property\n 'publicId',\n // BaseSource method\n 'cloudinaryConfig',\n // BaseSource method\n 'transformation',\n // BaseSource method\n 'queryParams',\n // BaseSource method\n 'type',\n // BaseSource handles getType()\n 'info' // Custom override method\n ];\n const SIMPLE_PROPERTIES = video_player_const__WEBPACK_IMPORTED_MODULE_3__.SOURCE_PARAMS.filter(param => !EXCLUDED_PROPERTIES.includes(param));\n\n // Create simple getter/setter methods\n this._createGetterSetters(SIMPLE_PROPERTIES);\n\n // Set initial values from options\n SIMPLE_PROPERTIES.forEach(prop => {\n if (options[prop] !== undefined) {\n this[prop](options[prop]);\n }\n });\n\n // Initialize poster\n this.poster(options.poster);\n this.objectId = generateId();\n }\n\n // Helper method to create simple getter/setter methods\n _createGetterSetters(properties) {\n properties.forEach(prop => {\n const privateKey = `_${prop}`;\n this[prop] = function (value) {\n if (value === undefined) {\n // Provide sensible defaults for specific properties\n if (prop === 'sourceTypes' && this[privateKey] === undefined) {\n return ['auto'];\n }\n if (prop === 'sourceTransformation' && this[privateKey] === undefined) {\n return {};\n }\n return this[privateKey];\n }\n this[privateKey] = value;\n return this;\n };\n });\n }\n poster(publicId) {\n let options = {\n type: this.getInitOptions().type\n };\n if (!publicId) {\n return this._poster;\n }\n if (publicId instanceof _image_source__WEBPACK_IMPORTED_MODULE_9__[\"default\"]) {\n this._poster = publicId;\n return this;\n }\n ({\n publicId,\n options\n } = (0,_common__WEBPACK_IMPORTED_MODULE_6__.normalizeOptions)(publicId, options, {\n tolerateMissingId: true\n }));\n if (!publicId && this.isRawUrl) {\n return null;\n }\n if (this.isLiveStream) {\n return null;\n }\n if (!publicId) {\n publicId = this.publicId();\n options = Object.assign({}, options, _video_source_const__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_POSTER_PARAMS);\n }\n options.cloudinaryConfig = options.cloudinaryConfig || this.cloudinaryConfig();\n options.resource_type = this.resourceType() || options.resource_type;\n if (publicId === true) {\n const urlPrefix = (0,_common__WEBPACK_IMPORTED_MODULE_6__.getCloudinaryUrlPrefix)(options.cloudinaryConfig);\n const deliveryType = this.getInitOptions().type || 'upload';\n const base64PublicId = (0,utils_utf8Base64__WEBPACK_IMPORTED_MODULE_7__.utf8ToBase64)(this.publicId());\n let appletUrl = `${urlPrefix}/_applet_/video_service/elements/${deliveryType}/${base64PublicId}/poster`;\n const transformation = this.getInitOptions().posterOptions?.transformation;\n if (transformation) {\n const transformationString = new _cloudinary_url_gen_backwards_transformation__WEBPACK_IMPORTED_MODULE_10__[\"default\"](transformation).toString();\n appletUrl += `?tx=${transformationString}`;\n }\n this._poster = new _image_source__WEBPACK_IMPORTED_MODULE_9__[\"default\"](appletUrl, {\n cloudinaryConfig: options.cloudinaryConfig\n });\n return this;\n }\n this._poster = new _image_source__WEBPACK_IMPORTED_MODULE_9__[\"default\"](publicId, options);\n return this;\n }\n contains(source) {\n const sources = this.generateSources();\n return sources.some(_source => (0,_common__WEBPACK_IMPORTED_MODULE_6__.isSrcEqual)(_source, source));\n }\n generateSources() {\n if (this.isRawUrl) {\n const type = this.sourceTypes()[0] === 'auto' ? null : this.sourceTypes()[0];\n return [this.generateRawSource(this.publicId(), type)];\n }\n const srcs = this.sourceTypes().map(sourceType => {\n const srcTransformation = this.sourceTransformation()[sourceType] || this.transformation();\n const format = (0,_video_source_utils__WEBPACK_IMPORTED_MODULE_5__.normalizeFormat)(sourceType);\n const isAdaptive = _video_source_const__WEBPACK_IMPORTED_MODULE_4__.ADAPTIVE_SOURCETYPES.includes(format);\n const opts = {};\n if (srcTransformation) {\n opts.transformation = lodash_castArray__WEBPACK_IMPORTED_MODULE_1___default()(srcTransformation);\n }\n Object.assign(opts, {\n format\n });\n const [type, codecTrans] = (0,_video_source_utils__WEBPACK_IMPORTED_MODULE_5__.formatToMimeTypeAndTransformation)(sourceType);\n\n // If user's transformation include video_codec then don't add another video codec to transformation\n if (codecTrans && !((0,_video_source_utils__WEBPACK_IMPORTED_MODULE_5__.hasCodec)(opts.transformation) || (0,_video_source_utils__WEBPACK_IMPORTED_MODULE_5__.hasCodec)(this.rawTransformation()))) {\n opts.transformation = (0,_common__WEBPACK_IMPORTED_MODULE_6__.mergeTransformations)(opts.transformation, codecTrans);\n }\n if (opts.format === 'auto') {\n delete opts.format;\n opts.transformation = (0,_common__WEBPACK_IMPORTED_MODULE_6__.mergeTransformations)(opts.transformation, {\n fetch_format: 'auto:video'\n });\n }\n if (isAdaptive) {\n // Search for streaming_profile anywhere in the transformation\n const hasStreamingProfile = JSON.stringify(opts.transformation || {}).includes('\"streaming_profile\":');\n if (!hasStreamingProfile && !this.isLiveStream) {\n opts.transformation = (0,_common__WEBPACK_IMPORTED_MODULE_6__.mergeTransformations)(opts.transformation, {\n streaming_profile: 'auto'\n });\n }\n }\n const queryString = this.queryParams() ? (0,utils_querystring__WEBPACK_IMPORTED_MODULE_0__.objectToQuerystring)(this.queryParams()) : '';\n const src = this.config().url(this.publicId(), opts);\n // if src is a url that already contains query params then replace '?' with '&'\n const params = src.indexOf('?') > -1 ? queryString.replace('?', '&') : queryString;\n return {\n type,\n src: src + params,\n cldSrc: this,\n isAdaptive: isAdaptive,\n withCredentials: this.withCredentials\n };\n });\n return srcs;\n }\n generateRawSource(url, type) {\n type = type || url.split('.').pop();\n const isAdaptive = _video_source_const__WEBPACK_IMPORTED_MODULE_4__.ADAPTIVE_SOURCETYPES.includes(type);\n if (_video_source_const__WEBPACK_IMPORTED_MODULE_4__.CONTAINER_MIME_TYPES[type]) {\n type = _video_source_const__WEBPACK_IMPORTED_MODULE_4__.CONTAINER_MIME_TYPES[type];\n } else {\n type = type ? `video/${type}` : null;\n }\n return {\n type,\n src: url,\n cldSrc: this,\n isAdaptive,\n withCredentials: this.withCredentials\n };\n }\n info(value) {\n if (value !== undefined) {\n this._info = value;\n return this;\n }\n const info = this._info || this.getInitOptions().info;\n return {\n title: this.title() || info?.title || '',\n subtitle: this.description() || info?.subtitle || '',\n description: this.description() || info?.subtitle || ''\n };\n }\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (VideoSource);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/cloudinary/models/video-source/video-source.js?");
|
|
353
353
|
|
|
354
354
|
/***/ }),
|
|
355
355
|
|
|
@@ -360,7 +360,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
360
360
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
361
361
|
|
|
362
362
|
"use strict";
|
|
363
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ formatToMimeTypeAndTransformation: () => (/* binding */ formatToMimeTypeAndTransformation),\n/* harmony export */ hasCodec: () => (/* binding */ hasCodec),\n/* harmony export */ normalizeFormat: () => (/* binding */ normalizeFormat)\n/* harmony export */ });\n/* harmony import */ var _video_source_const__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./video-source.const */ \"./plugins/cloudinary/models/video-source/video-source.const.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isString */ \"../node_modules/lodash/isString.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isString__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var utils_cloudinary__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! utils/cloudinary */ \"./utils/cloudinary.js\");\n\n\n\n\nfunction formatToMimeTypeAndTransformation(format) {\n const [container, codec] = format.toLowerCase().split('/');\n const mimetype = _video_source_const__WEBPACK_IMPORTED_MODULE_0__.CONTAINER_MIME_TYPES[container] ||
|
|
363
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ formatToMimeTypeAndTransformation: () => (/* binding */ formatToMimeTypeAndTransformation),\n/* harmony export */ hasCodec: () => (/* binding */ hasCodec),\n/* harmony export */ normalizeFormat: () => (/* binding */ normalizeFormat)\n/* harmony export */ });\n/* harmony import */ var _video_source_const__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./video-source.const */ \"./plugins/cloudinary/models/video-source/video-source.const.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isString */ \"../node_modules/lodash/isString.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isString__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var utils_cloudinary__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! utils/cloudinary */ \"./utils/cloudinary.js\");\n\n\n\n\nfunction formatToMimeTypeAndTransformation(format) {\n const [container, codec] = format.toLowerCase().split('/');\n const mimetype = _video_source_const__WEBPACK_IMPORTED_MODULE_0__.CONTAINER_MIME_TYPES[container] || `video/${container}`;\n let result = [mimetype];\n if (codec) {\n const transformation = {\n video_codec: codec\n };\n result = [mimetype, transformation];\n }\n return result;\n}\nfunction normalizeFormat(format) {\n format = format.toLowerCase().split('/').shift();\n let res = _video_source_const__WEBPACK_IMPORTED_MODULE_0__.FORMAT_MAPPINGS[format];\n if (!res) {\n res = format.split('/').shift();\n }\n return res;\n}\nconst strIncludesCodec = value => value && Object.values(_common__WEBPACK_IMPORTED_MODULE_1__.VIDEO_CODEC).some(codec => value.includes(codec));\nconst hasCodecTrans = transformations => ['video_codec', 'streaming_profile'].some(key => (0,utils_cloudinary__WEBPACK_IMPORTED_MODULE_3__.isKeyInTransformation)(transformations, key));\nconst hasCodec = transformations => {\n if (!transformations) {\n return false;\n }\n if (lodash_isString__WEBPACK_IMPORTED_MODULE_2___default()(transformations)) {\n return strIncludesCodec(transformations);\n }\n if (hasCodecTrans(transformations)) {\n return true;\n }\n return !!transformations.some?.(transformation => {\n return hasCodec(transformation);\n });\n};\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/cloudinary/models/video-source/video-source.utils.js?");
|
|
364
364
|
|
|
365
365
|
/***/ }),
|
|
366
366
|
|
|
@@ -382,7 +382,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
382
382
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
383
383
|
|
|
384
384
|
"use strict";
|
|
385
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utils/dom */ \"./utils/dom.js\");\n\n\nconst MenuItem = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('MenuItem');\nclass ContextMenuItem extends MenuItem {\n handleClick() {\n super.handleClick();\n this.options_.listener();\n }\n createEl() {\n const label = (0,utils_dom__WEBPACK_IMPORTED_MODULE_1__.createElement)('span', {\n class: 'vjs-menu-item-text' + (this.options_.class ?
|
|
385
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utils/dom */ \"./utils/dom.js\");\n\n\nconst MenuItem = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('MenuItem');\nclass ContextMenuItem extends MenuItem {\n handleClick() {\n super.handleClick();\n this.options_.listener();\n }\n createEl() {\n const label = (0,utils_dom__WEBPACK_IMPORTED_MODULE_1__.createElement)('span', {\n class: 'vjs-menu-item-text' + (this.options_.class ? ` ${this.options_.class}` : '')\n });\n label.appendChild(document.createTextNode(this.localize(this.options_.label)));\n const el = (0,utils_dom__WEBPACK_IMPORTED_MODULE_1__.createElement)('li', {\n class: 'vjs-menu-item',\n tabIndex: -1\n }, label);\n return el;\n }\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ContextMenuItem);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/context-menu/components/context-menu-item.js?");
|
|
386
386
|
|
|
387
387
|
/***/ }),
|
|
388
388
|
|
|
@@ -404,7 +404,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
404
404
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
405
405
|
|
|
406
406
|
"use strict";
|
|
407
|
-
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.6.4-edge.
|
|
407
|
+
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.6.4-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://cloudinary-video-player/./plugins/context-menu/contextMenuContent.js?");
|
|
408
408
|
|
|
409
409
|
/***/ }),
|
|
410
410
|
|
|
@@ -437,7 +437,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
437
437
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
438
438
|
|
|
439
439
|
"use strict";
|
|
440
|
-
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 utils_positioning__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! utils/positioning */ \"./utils/positioning.js\");\n/* harmony import */ var utils_slicing__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utils/slicing */ \"./utils/slicing.js\");\n/* harmony import */ var _floating_player_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./floating-player.scss */ \"./plugins/floating-player/floating-player.scss\");\n/* harmony import */ var _video_player_const__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../video-player.const */ \"./video-player.const.js\");\n\n\n\n\nconst defaults = {\n fraction: 0.5,\n collapsedWidth: 300,\n floatTo: 'right'\n};\nclass FloatingPlayer {\n constructor(player) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n opts = Object.assign({}, defaults, opts);\n // Handle non left-right values.\n if (opts.floatTo && opts.floatTo !== _video_player_const__WEBPACK_IMPORTED_MODULE_3__.FLOATING_TO.LEFT && opts.floatTo !== _video_player_const__WEBPACK_IMPORTED_MODULE_3__.FLOATING_TO.RIGHT) {\n opts.floatTo = defaults.floatTo;\n }\n this.player = player;\n const el = this.player.el();\n let _options = (0,utils_slicing__WEBPACK_IMPORTED_MODULE_1__.sliceProperties)(opts, 'fraction');\n let _floater = null;\n let _isFloated = false;\n let _isFloaterPositioned = false;\n this.init = () => {\n registerEventHandlers();\n if (typeof this.player.ima === 'object') {\n creatFloaterElement();\n }\n };\n const wrapInner = parent => {\n const wrapper = document.createElement('div');\n parent.appendChild(wrapper);\n while (parent.firstChild !== wrapper) {\n wrapper.appendChild(parent.firstChild);\n }\n return wrapper;\n };\n const removeWindowEventHandlers = () => {\n window.removeEventListener('DOMContentLoaded', checkViewportState, false);\n window.removeEventListener('load', checkViewportState, false);\n window.removeEventListener('scroll', checkViewportState, false);\n window.removeEventListener('resize', checkViewportState, false);\n };\n const addWindowEventHandlers = () => {\n window.addEventListener('DOMContentLoaded', checkViewportState, false);\n window.addEventListener('load', checkViewportState, false);\n window.addEventListener('scroll', checkViewportState, false);\n window.addEventListener('resize', checkViewportState, false);\n };\n const registerEventHandlers = () => {\n this.player.on('play', checkViewportState);\n this.player.on('play', addWindowEventHandlers);\n this.player.on('dispose', removeWindowEventHandlers);\n };\n const positionFloater = () => {\n const elRect = el.getBoundingClientRect();\n _floater.setAttribute('class',
|
|
440
|
+
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 utils_positioning__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! utils/positioning */ \"./utils/positioning.js\");\n/* harmony import */ var utils_slicing__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utils/slicing */ \"./utils/slicing.js\");\n/* harmony import */ var _floating_player_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./floating-player.scss */ \"./plugins/floating-player/floating-player.scss\");\n/* harmony import */ var _video_player_const__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../video-player.const */ \"./video-player.const.js\");\n\n\n\n\nconst defaults = {\n fraction: 0.5,\n collapsedWidth: 300,\n floatTo: 'right'\n};\nclass FloatingPlayer {\n constructor(player) {\n let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n opts = Object.assign({}, defaults, opts);\n // Handle non left-right values.\n if (opts.floatTo && opts.floatTo !== _video_player_const__WEBPACK_IMPORTED_MODULE_3__.FLOATING_TO.LEFT && opts.floatTo !== _video_player_const__WEBPACK_IMPORTED_MODULE_3__.FLOATING_TO.RIGHT) {\n opts.floatTo = defaults.floatTo;\n }\n this.player = player;\n const el = this.player.el();\n let _options = (0,utils_slicing__WEBPACK_IMPORTED_MODULE_1__.sliceProperties)(opts, 'fraction');\n let _floater = null;\n let _isFloated = false;\n let _isFloaterPositioned = false;\n this.init = () => {\n registerEventHandlers();\n if (typeof this.player.ima === 'object') {\n creatFloaterElement();\n }\n };\n const wrapInner = parent => {\n const wrapper = document.createElement('div');\n parent.appendChild(wrapper);\n while (parent.firstChild !== wrapper) {\n wrapper.appendChild(parent.firstChild);\n }\n return wrapper;\n };\n const removeWindowEventHandlers = () => {\n window.removeEventListener('DOMContentLoaded', checkViewportState, false);\n window.removeEventListener('load', checkViewportState, false);\n window.removeEventListener('scroll', checkViewportState, false);\n window.removeEventListener('resize', checkViewportState, false);\n };\n const addWindowEventHandlers = () => {\n window.addEventListener('DOMContentLoaded', checkViewportState, false);\n window.addEventListener('load', checkViewportState, false);\n window.addEventListener('scroll', checkViewportState, false);\n window.addEventListener('resize', checkViewportState, false);\n };\n const registerEventHandlers = () => {\n this.player.on('play', checkViewportState);\n this.player.on('play', addWindowEventHandlers);\n this.player.on('dispose', removeWindowEventHandlers);\n };\n const positionFloater = () => {\n const elRect = el.getBoundingClientRect();\n _floater.setAttribute('class', `cld-video-player-floater cld-video-player-floater-bottom-${opts.floatTo}`);\n _floater.setAttribute('style', ['width: ' + opts.collapsedWidth + 'px;', 'top: ' + elRect.top + 'px;', 'left: ' + elRect.left + 'px;', 'right: ' + (document.documentElement.clientWidth - elRect.right) + 'px;', 'bottom: ' + (document.documentElement.clientHeight - elRect.bottom) + 'px;'].join(''));\n _isFloaterPositioned = true;\n };\n const creatFloaterElement = () => {\n const elRect = el.getBoundingClientRect();\n _floater = wrapInner(el);\n const inner = wrapInner(_floater);\n inner.setAttribute('class', 'cld-video-player-floater-inner');\n inner.setAttribute('style', 'padding-bottom: ' + 100 * elRect.height / elRect.width + '%;');\n const close = document.createElement('button');\n close.setAttribute('class', 'cld-video-player-floater-close');\n close.innerHTML = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"><polygon fill-rule=\"evenodd\" points=\"370 7.41 368.59 6 364 10.59 359.41 6 358 7.41 362.59 12 358 16.59 359.41 18 364 13.41 368.59 18 370 16.59 365.41 12\" transform=\"translate(-358 -6)\"/></svg>';\n close.onclick = () => {\n unFloat();\n disable();\n };\n _floater.appendChild(close);\n };\n const setAdSize = () => {\n const {\n ima\n } = this.player;\n if (ima && ima.adsActive) {\n const adsManager = ima.getAdsManager();\n adsManager.resize(_isFloated ? _floater.clientWidth : el.clientWidth, _isFloated ? _floater.clientHeight : el.clientHeight);\n }\n };\n const float = () => {\n if (!_floater) {\n creatFloaterElement();\n }\n if (!_isFloaterPositioned) {\n positionFloater();\n }\n _isFloated = true;\n setTimeout(() => {\n _floater.classList.add('cld-video-player-floating');\n setAdSize();\n });\n };\n const unFloat = () => {\n _floater.classList.remove('cld-video-player-floating');\n _isFloated = false;\n setAdSize();\n };\n const disable = () => {\n removeWindowEventHandlers();\n this.player.off('play', checkViewportState);\n this.player.off('play', addWindowEventHandlers);\n };\n const checkViewportState = () => {\n const visible = (0,utils_positioning__WEBPACK_IMPORTED_MODULE_0__.isElementInViewport)(this.player.el(), {\n fraction: _options.fraction\n });\n if (visible) {\n if (_isFloated) {\n unFloat();\n }\n } else if (!_isFloated) {\n float();\n }\n };\n }\n}\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n new FloatingPlayer(this, opts).init();\n}\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/floating-player/index.js?");
|
|
441
441
|
|
|
442
442
|
/***/ }),
|
|
443
443
|
|
|
@@ -536,7 +536,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
536
536
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
537
537
|
|
|
538
538
|
"use strict";
|
|
539
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var utils_fontFace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! utils/fontFace */ \"./utils/fontFace.js\");\n/* harmony import */ var utils_css_prefix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utils/css-prefix */ \"./utils/css-prefix.js\");\n/* harmony import */ var _styled_text_tracks_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./styled-text-tracks.scss */ \"./plugins/styled-text-tracks/styled-text-tracks.scss\");\
|
|
539
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var utils_fontFace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! utils/fontFace */ \"./utils/fontFace.js\");\n/* harmony import */ var utils_css_prefix__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utils/css-prefix */ \"./utils/css-prefix.js\");\n/* harmony import */ var _styled_text_tracks_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./styled-text-tracks.scss */ \"./plugins/styled-text-tracks/styled-text-tracks.scss\");\n\n\n\nconst styledTextTracks = (config, player) => {\n const options = {\n theme: config.theme || 'default',\n fontFace: config.fontFace,\n fontSize: config.fontSize,\n gravity: config.gravity || 'bottom',\n box: config.box,\n style: config.style,\n wordHighlightStyle: config.wordHighlightStyle\n };\n const styleEl = document.createElement('style');\n player.el_.appendChild(styleEl);\n\n // Class Names - Theme/Gravity\n const classNames = player.textTrackDisplay.el().classList;\n classNames.forEach(className => {\n // Remove previously added theme/gravity classes\n if (className.startsWith('cld-styled-text-tracks')) {\n classNames.remove(className);\n }\n });\n classNames.add('cld-styled-text-tracks');\n classNames.add(`cld-styled-text-tracks-theme-${options.theme}`);\n options.gravity.split('-').forEach(gravity => {\n classNames.add(`cld-styled-text-tracks-gravity-${gravity}`);\n });\n const applyStyle = (style, selector) => {\n if (Object.entries(style)) {\n const css = Object.entries(style).reduce((acc, _ref) => {\n let [key, value] = _ref;\n return acc + `${key}: ${value} !important; `;\n }, '');\n styleEl.innerHTML += `${selector} { ${css} } `;\n }\n };\n const applyWrapperStyle = style => {\n const selector = `\n .${(0,utils_css_prefix__WEBPACK_IMPORTED_MODULE_1__.playerClassPrefix)(player)} .vjs-text-track-display.cld-styled-text-tracks,\n .${(0,utils_css_prefix__WEBPACK_IMPORTED_MODULE_1__.playerClassPrefix)(player)} ::-webkit-media-text-track-display\n `;\n applyStyle(style, selector);\n };\n const applyCueStyle = style => {\n const selector = `\n .${(0,utils_css_prefix__WEBPACK_IMPORTED_MODULE_1__.playerClassPrefix)(player)} .vjs-text-track-cue > div,\n .${(0,utils_css_prefix__WEBPACK_IMPORTED_MODULE_1__.playerClassPrefix)(player)} ::cue\n `;\n applyStyle(style, selector);\n };\n\n // Font\n if (options.fontFace) {\n (0,utils_fontFace__WEBPACK_IMPORTED_MODULE_0__.fontFace)(player.textTrackDisplay.el(), options.fontFace);\n applyCueStyle({\n 'font-family': options.fontFace\n });\n }\n\n // Custom bounding box\n if (options.box) {\n const {\n x,\n y,\n width,\n height\n } = options.box;\n applyWrapperStyle({\n translate: `${x ? x : 0} ${y ? y : 0}`,\n ...(width ? {\n width\n } : undefined),\n ...(height ? {\n height\n } : undefined)\n });\n }\n\n // Custom font-size\n if (options.fontSize) {\n applyCueStyle({\n 'font-size': options.fontSize\n });\n }\n\n // Custom styles\n if (options.style) {\n applyCueStyle(options.style);\n }\n\n // Word highlight styles\n if (options.wordHighlightStyle) {\n applyStyle(options.wordHighlightStyle, `.${(0,utils_css_prefix__WEBPACK_IMPORTED_MODULE_1__.playerClassPrefix)(player)} .cld-paced-text-tracks .vjs-text-track-cue b`);\n applyStyle(options.wordHighlightStyle, 'video::cue(b)');\n }\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (styledTextTracks);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/styled-text-tracks/styled-text-tracks.js?");
|
|
540
540
|
|
|
541
541
|
/***/ }),
|
|
542
542
|
|
|
@@ -547,7 +547,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
547
547
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
548
548
|
|
|
549
549
|
"use strict";
|
|
550
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_utf8Base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/utf8Base64 */ \"./utils/utf8Base64.js\");\n/* harmony import */ var _cloudinary_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../cloudinary/common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var _parsers_transcriptParser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./parsers/transcriptParser */ \"./plugins/text-tracks-manager/parsers/transcriptParser.js\");\n/* harmony import */ var _parsers_srtParser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parsers/srtParser */ \"./plugins/text-tracks-manager/parsers/srtParser.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils */ \"./plugins/text-tracks-manager/utils.js\");\
|
|
550
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_utf8Base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/utf8Base64 */ \"./utils/utf8Base64.js\");\n/* harmony import */ var _cloudinary_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../cloudinary/common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var _parsers_transcriptParser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./parsers/transcriptParser */ \"./plugins/text-tracks-manager/parsers/transcriptParser.js\");\n/* harmony import */ var _parsers_srtParser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parsers/srtParser */ \"./plugins/text-tracks-manager/parsers/srtParser.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils */ \"./plugins/text-tracks-manager/utils.js\");\n\n\n\n\n\nconst getTranscriptionFileUrl = function (urlPrefix, deliveryType, publicId) {\n let languageCode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n return `${urlPrefix}/_applet_/video_service/transcription/${deliveryType}/${languageCode ? `${languageCode}/` : ''}${(0,_utils_utf8Base64__WEBPACK_IMPORTED_MODULE_0__.utf8ToBase64)(publicId)}.transcript`;\n};\nfunction textTracksManager() {\n const player = this;\n const textTracksData = new WeakMap();\n let activeTrack = null;\n const removeAllTextTracks = () => {\n const currentTracks = player.remoteTextTracks();\n if (currentTracks) {\n for (let i = currentTracks.tracks_.length - 1; i >= 0; i--) {\n player.removeRemoteTextTrack(currentTracks.tracks_[i]);\n }\n }\n };\n const createTextTrackData = (textTrack, loadMethod) => {\n const controller = new AbortController();\n textTracksData.set(textTrack, {\n status: 'idle',\n load: async () => {\n const {\n status\n } = textTracksData.get(textTrack);\n if (status === 'idle') {\n await loadMethod(controller.signal);\n (0,_utils__WEBPACK_IMPORTED_MODULE_4__.refreshTextTrack)(textTrack);\n }\n },\n abortLoading: () => {\n const {\n status\n } = textTracksData.get(textTrack);\n if (status === 'pending') {\n controller.abort();\n }\n }\n });\n };\n const updateTextTrackData = (textTrack, dataToUpdate) => {\n const existingData = textTracksData.get(textTrack);\n textTracksData.set(textTrack, {\n ...existingData,\n ...dataToUpdate\n });\n };\n const updateTextTrackStatusToPending = textTrack => updateTextTrackData(textTrack, {\n status: 'pending'\n });\n const updateTextTrackStatusToSuccess = textTrack => updateTextTrackData(textTrack, {\n status: 'success'\n });\n const updateTextTrackStatusToError = (textTrack, error) => updateTextTrackData(textTrack, {\n status: 'error',\n error\n });\n const updateTextTrackStatusToApplied = textTrack => updateTextTrackData(textTrack, {\n status: 'applied'\n });\n const addNativeVttTrack = config => {\n const {\n kind = 'subtitles',\n label = 'Subtitles',\n default: isDefault,\n srclang,\n src\n } = config;\n player.addRemoteTextTrack({\n kind,\n label,\n srclang,\n src,\n default: isDefault,\n mode: isDefault ? 'showing' : 'disabled'\n });\n };\n const addTextTrack = (type, config) => {\n const {\n kind = type === 'transcript' ? 'captions' : 'subtitles',\n label = type === 'transcript' ? 'Captions' : 'Subtitles',\n default: isDefault,\n srclang,\n src\n } = config;\n if (type === 'transcript') {\n player.textTrackDisplay.el().classList.add('cld-paced-text-tracks');\n }\n const {\n track\n } = player.addRemoteTextTrack({\n kind,\n label,\n srclang,\n default: isDefault,\n mode: isDefault ? 'showing' : 'disabled'\n });\n const createParser = () => {\n if (type === 'srt') return _parsers_srtParser__WEBPACK_IMPORTED_MODULE_3__.srtParser;\n return text => (0,_parsers_transcriptParser__WEBPACK_IMPORTED_MODULE_2__.transcriptParser)(text, {\n maxWords: config.maxWords,\n wordHighlight: config.wordHighlight,\n timeOffset: config.timeOffset ?? 0\n });\n };\n const createSourceUrl = () => {\n if (src) return src;\n if (type !== 'transcript') return undefined;\n const source = player.cloudinary.source();\n const publicId = source.publicId();\n const deliveryType = source.resourceConfig().type;\n const urlPrefix = (0,_cloudinary_common__WEBPACK_IMPORTED_MODULE_1__.getCloudinaryUrlPrefix)(player.cloudinary.cloudinaryConfig());\n const baseUrl = getTranscriptionFileUrl(urlPrefix, deliveryType, publicId);\n const localizedUrl = srclang ? getTranscriptionFileUrl(urlPrefix, deliveryType, publicId, srclang) : null;\n return localizedUrl ? localizedUrl : baseUrl;\n };\n createTextTrackData(track, async signal => {\n updateTextTrackStatusToPending(track);\n const sourceUrl = createSourceUrl();\n const response = await (0,_utils__WEBPACK_IMPORTED_MODULE_4__.fetchFileContent)(sourceUrl, {\n signal,\n polling: type === 'transcript' && !src,\n interval: 2000,\n maxAttempts: 10,\n responseStatusAsPending: 202,\n onSuccess: () => updateTextTrackStatusToSuccess(track),\n onError: error => {\n updateTextTrackStatusToError(track, error);\n console.warn(`[${track.label}] Text track could not be loaded`);\n }\n });\n if (response) {\n const parser = createParser();\n const data = await parser(response);\n (0,_utils__WEBPACK_IMPORTED_MODULE_4__.removeAllTextTrackCues)(track);\n (0,_utils__WEBPACK_IMPORTED_MODULE_4__.addTextTrackCues)(track, data);\n updateTextTrackStatusToApplied(track);\n }\n });\n };\n const addTextTracks = textTracks => {\n textTracks.forEach(textTrackConfig => {\n if (textTrackConfig.src && textTrackConfig.src.endsWith('.vtt')) {\n addNativeVttTrack(textTrackConfig);\n } else if (textTrackConfig.src && textTrackConfig.src.endsWith('.srt')) {\n addTextTrack('srt', textTrackConfig);\n } else if (!textTrackConfig.src || textTrackConfig.src.endsWith('.transcript')) {\n addTextTrack('transcript', textTrackConfig);\n }\n });\n const defaultTextTrack = Array.from(player.remoteTextTracks()).find(textTrack => textTrack.default);\n if (defaultTextTrack) {\n onChangeActiveTrack(defaultTextTrack);\n }\n };\n const onChangeActiveTrack = textTrack => {\n const prevActiveTrack = activeTrack;\n activeTrack = textTrack;\n const prevTextTrackData = textTracksData.get(prevActiveTrack);\n if (prevTextTrackData) {\n prevTextTrackData.abortLoading();\n }\n const selectedTextTrackData = textTracksData.get(activeTrack);\n if (selectedTextTrackData) {\n selectedTextTrackData.load();\n }\n };\n player.on('texttrackchange', () => {\n const textTracks = player.textTracks();\n let newActiveTrack = null;\n for (let i = 0; i < textTracks.length; i++) {\n const track = textTracks[i];\n if (track.mode === 'showing') {\n newActiveTrack = track;\n break;\n }\n }\n if (activeTrack !== newActiveTrack) {\n onChangeActiveTrack(newActiveTrack);\n }\n });\n return {\n removeAllTextTracks,\n addTextTracks: function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n player.one('loadedmetadata', () => {\n addTextTracks(...args);\n });\n }\n };\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (textTracksManager);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/text-tracks-manager/index.js?");
|
|
551
551
|
|
|
552
552
|
/***/ }),
|
|
553
553
|
|
|
@@ -569,7 +569,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
569
569
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
570
570
|
|
|
571
571
|
"use strict";
|
|
572
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ transcriptParser: () => (/* binding */ transcriptParser)\n/* harmony export */ });\nconst parseTranscript = (transcriptionData, options) => {\n const captions = [];\n const addCaption = _ref => {\n let {\n startTime,\n endTime,\n text\n } = _ref;\n captions.push({\n startTime: startTime + options.timeOffset,\n endTime: endTime + options.timeOffset,\n text\n });\n };\n transcriptionData.forEach(segment => {\n const words = segment.words;\n if (words) {\n const maxWords = options.maxWords || words.length;\n for (let i = 0; i < words.length; i += maxWords) {\n if (options.wordHighlight) {\n // Create a caption for every word, in which the current word is highlighted\n words.slice(i, Math.min(i + maxWords, words.length)).forEach((word, idx) => {\n addCaption({\n startTime: word.start_time,\n endTime: word.end_time,\n text: words.slice(i, i + maxWords).map(w => w === word ?
|
|
572
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ transcriptParser: () => (/* binding */ transcriptParser)\n/* harmony export */ });\nconst parseTranscript = (transcriptionData, options) => {\n const captions = [];\n const addCaption = _ref => {\n let {\n startTime,\n endTime,\n text\n } = _ref;\n captions.push({\n startTime: startTime + options.timeOffset,\n endTime: endTime + options.timeOffset,\n text\n });\n };\n transcriptionData.forEach(segment => {\n const words = segment.words;\n if (words) {\n const maxWords = options.maxWords || words.length;\n for (let i = 0; i < words.length; i += maxWords) {\n if (options.wordHighlight) {\n // Create a caption for every word, in which the current word is highlighted\n words.slice(i, Math.min(i + maxWords, words.length)).forEach((word, idx) => {\n addCaption({\n startTime: word.start_time,\n endTime: word.end_time,\n text: words.slice(i, i + maxWords).map(w => w === word ? `<b>${w.word}</b>` : w.word).join(' ')\n });\n\n // if we haven't reached the end of the words array, and there's a gap between the current word end_time and the next word start_time, add a non-highlighted caption to fill the gap\n if (words[idx + 1] && word.end_time < words[idx + 1].start_time) {\n addCaption({\n startTime: word.end_time,\n endTime: words[idx + 1].start_time,\n text: words.slice(i, i + maxWords).map(word => word.word).join(' ')\n });\n }\n });\n } else {\n captions.push({\n startTime: words[i].start_time,\n endTime: words[Math.min(i + maxWords - 1, words.length - 1)].end_time,\n text: words.slice(i, i + maxWords).map(word => word.word).join(' ')\n });\n }\n }\n } else {\n addCaption({\n startTime: segment.start_time,\n endTime: segment.end_time,\n text: segment.transcript\n });\n }\n });\n return captions;\n};\nconst transcriptParser = async (fileContent, options) => {\n const data = JSON.parse(fileContent);\n return parseTranscript(data, options);\n};\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/text-tracks-manager/parsers/transcriptParser.js?");
|
|
573
573
|
|
|
574
574
|
/***/ }),
|
|
575
575
|
|
|
@@ -580,7 +580,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
580
580
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
581
581
|
|
|
582
582
|
"use strict";
|
|
583
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ addTextTrackCues: () => (/* binding */ addTextTrackCues),\n/* harmony export */ fetchFileContent: () => (/* binding */ fetchFileContent),\n/* harmony export */ refreshTextTrack: () => (/* binding */ refreshTextTrack),\n/* harmony export */ removeAllTextTrackCues: () => (/* binding */ removeAllTextTrackCues)\n/* harmony export */ });\nconst fetchFileContent = async function (url) {\n let config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n polling = false,\n interval = 3000,\n maxAttempts = 10,\n signal,\n onSuccess,\n onError,\n onAttempt\n } = config;\n let attempts = 0;\n const attemptFetch = async () => {\n if (signal
|
|
583
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ addTextTrackCues: () => (/* binding */ addTextTrackCues),\n/* harmony export */ fetchFileContent: () => (/* binding */ fetchFileContent),\n/* harmony export */ refreshTextTrack: () => (/* binding */ refreshTextTrack),\n/* harmony export */ removeAllTextTrackCues: () => (/* binding */ removeAllTextTrackCues)\n/* harmony export */ });\nconst fetchFileContent = async function (url) {\n let config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n polling = false,\n interval = 3000,\n maxAttempts = 10,\n signal,\n onSuccess,\n onError,\n onAttempt\n } = config;\n let attempts = 0;\n const attemptFetch = async () => {\n if (signal?.aborted) {\n throw new DOMException('Aborted', 'AbortError');\n }\n attempts++;\n onAttempt?.(attempts);\n const response = await fetch(url, {\n signal\n });\n if (response.status === 202 && polling) {\n if (attempts < maxAttempts) {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n attemptFetch().then(resolve).catch(reject);\n }, interval);\n signal?.addEventListener('abort', () => {\n clearTimeout(timeoutId);\n reject(new DOMException('Aborted', 'AbortError'));\n }, {\n once: true\n });\n });\n } else {\n throw new Error(`Polling max attempts reached (${maxAttempts}) for ${url}`);\n }\n }\n if (!response.ok) {\n throw new Error(`Failed fetching from ${url} with status code ${response.status}`);\n }\n const text = await response.text();\n onSuccess?.(text);\n return text;\n };\n try {\n return await attemptFetch();\n } catch (error) {\n if (error.name === 'AbortError') {\n console.warn('Polling aborted');\n } else {\n console.error(error);\n }\n onError?.(error);\n }\n};\nconst addTextTrackCues = (textTrack, cues) => {\n cues.forEach(_ref => {\n let {\n startTime,\n endTime,\n text,\n settings\n } = _ref;\n const cue = new VTTCue(startTime, endTime, text);\n if (settings) {\n const parsed = settings.split(/\\s+/);\n parsed.forEach(setting => {\n const [key, value] = setting.split(':');\n if (!key || !value) return;\n switch (key) {\n case 'line':\n cue.line = isNaN(value) ? value : parseFloat(value);\n break;\n case 'position':\n cue.position = parseFloat(value);\n break;\n case 'size':\n cue.size = parseFloat(value);\n break;\n case 'align':\n cue.align = value;\n break;\n }\n });\n }\n textTrack.addCue(cue);\n });\n};\nconst removeAllTextTrackCues = textTrack => {\n if (!textTrack || !textTrack.cues) return;\n Array.from(textTrack.cues).forEach(cue => {\n try {\n textTrack.removeCue(cue);\n } catch (e) {\n console.warn('Failed to remove cue:', cue, e);\n }\n });\n};\nconst refreshTextTrack = textTrack => {\n if (!textTrack || typeof textTrack.mode !== 'string') return;\n const currentMode = textTrack.mode;\n textTrack.mode = currentMode === 'showing' ? 'hidden' : 'showing';\n\n // Force back to original after a short delay (just enough to trigger reflow)\n setTimeout(() => {\n textTrack.mode = currentMode;\n }, 0);\n};\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/text-tracks-manager/utils.js?");
|
|
584
584
|
|
|
585
585
|
/***/ }),
|
|
586
586
|
|
|
@@ -602,7 +602,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
602
602
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
603
603
|
|
|
604
604
|
"use strict";
|
|
605
|
-
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 _vtt_thumbnails_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vtt-thumbnails.scss */ \"./plugins/vtt-thumbnails/vtt-thumbnails.scss\");\n\n\n\n// Default options for the plugin.\nlet defaults = {};\n\n// Cache for image elements\nlet cache = {};\n\n/**\n * Function to invoke when the player is ready.\n *\n * This is a great place for your plugin to initialize itself. When this\n * function is called, the player will have its DOM and child components\n * in place.\n *\n * @function onPlayerReady\n * @param {Player} player\n * A Video.js player object.\n *\n * @param {Object} [options={}]\n * A plain object containing options for the plugin.\n */\nconst onPlayerReady = function onPlayerReady(player, options) {\n player.addClass('vjs-vtt-thumbnails');\n player.vttThumbnails = new VttThumbnailsPlugin(player, options);\n};\n\n/**\n * A video.js plugin.\n *\n * In the plugin function, the value of `this` is a video.js `Player`\n * instance. You cannot rely on the player being in a \"ready\" state here,\n * depending on how the plugin is invoked. This may or may not be important\n * to you; if not, remove the wait for \"ready\"!\n *\n * @function vttThumbnails\n * @param {Object} [options={}]\n * An object of options left to the plugin author to define.\n */\nconst vttThumbnails = function vttThumbnails(options) {\n this.ready(() => {\n onPlayerReady(this, video_js__WEBPACK_IMPORTED_MODULE_0___default().obj.merge(defaults, options));\n });\n};\n\n/**\n * VTT Thumbnails class.\n *\n * This class performs all functions related to displaying the vtt\n * thumbnails.\n */\nconst VttThumbnailsPlugin = function () {\n /**\n * Plugin class constructor, called by videojs on\n * ready event.\n *\n * @function constructor\n * @param {Player} player\n * A Video.js player object.\n *\n * @param {Object} [options={}]\n * A plain object containing options for the plugin.\n */\n function VttThumbnailsPlugin(player, options) {\n this.player = player;\n this.options = options;\n this.initializeThumbnails();\n return this;\n }\n VttThumbnailsPlugin.prototype.src = function src(source) {\n this.resetPlugin();\n this.options.src = source;\n this.initializeThumbnails();\n };\n VttThumbnailsPlugin.prototype.detach = function detach() {\n this.resetPlugin();\n };\n VttThumbnailsPlugin.prototype.resetPlugin = function resetPlugin() {\n if (this.thumbnailHolder) {\n this.thumbnailHolder.parentNode.removeChild(this.thumbnailHolder);\n }\n delete this.vttData;\n delete this.thumbnailHolder;\n delete this.lastStyle;\n };\n\n /**\n * Bootstrap the plugin.\n */\n VttThumbnailsPlugin.prototype.initializeThumbnails = function initializeThumbnails() {\n
|
|
605
|
+
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 _vtt_thumbnails_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vtt-thumbnails.scss */ \"./plugins/vtt-thumbnails/vtt-thumbnails.scss\");\n\n\n\n// Default options for the plugin.\nlet defaults = {};\n\n// Cache for image elements\nlet cache = {};\n\n/**\n * Function to invoke when the player is ready.\n *\n * This is a great place for your plugin to initialize itself. When this\n * function is called, the player will have its DOM and child components\n * in place.\n *\n * @function onPlayerReady\n * @param {Player} player\n * A Video.js player object.\n *\n * @param {Object} [options={}]\n * A plain object containing options for the plugin.\n */\nconst onPlayerReady = function onPlayerReady(player, options) {\n player.addClass('vjs-vtt-thumbnails');\n player.vttThumbnails = new VttThumbnailsPlugin(player, options);\n};\n\n/**\n * A video.js plugin.\n *\n * In the plugin function, the value of `this` is a video.js `Player`\n * instance. You cannot rely on the player being in a \"ready\" state here,\n * depending on how the plugin is invoked. This may or may not be important\n * to you; if not, remove the wait for \"ready\"!\n *\n * @function vttThumbnails\n * @param {Object} [options={}]\n * An object of options left to the plugin author to define.\n */\nconst vttThumbnails = function vttThumbnails(options) {\n this.ready(() => {\n onPlayerReady(this, video_js__WEBPACK_IMPORTED_MODULE_0___default().obj.merge(defaults, options));\n });\n};\n\n/**\n * VTT Thumbnails class.\n *\n * This class performs all functions related to displaying the vtt\n * thumbnails.\n */\nconst VttThumbnailsPlugin = function () {\n /**\n * Plugin class constructor, called by videojs on\n * ready event.\n *\n * @function constructor\n * @param {Player} player\n * A Video.js player object.\n *\n * @param {Object} [options={}]\n * A plain object containing options for the plugin.\n */\n function VttThumbnailsPlugin(player, options) {\n this.player = player;\n this.options = options;\n this.initializeThumbnails();\n return this;\n }\n VttThumbnailsPlugin.prototype.src = function src(source) {\n this.resetPlugin();\n this.options.src = source;\n this.initializeThumbnails();\n };\n VttThumbnailsPlugin.prototype.detach = function detach() {\n this.resetPlugin();\n };\n VttThumbnailsPlugin.prototype.resetPlugin = function resetPlugin() {\n if (this.thumbnailHolder) {\n this.thumbnailHolder.parentNode.removeChild(this.thumbnailHolder);\n }\n delete this.vttData;\n delete this.thumbnailHolder;\n delete this.lastStyle;\n };\n\n /**\n * Bootstrap the plugin.\n */\n VttThumbnailsPlugin.prototype.initializeThumbnails = function initializeThumbnails() {\n if (!this.options.src) {\n return;\n }\n fetch(this.options.src, {\n credentials: this.player.cloudinary.source?.().withCredentials ? 'include' : 'omit'\n }).then(res => {\n return res.text();\n }).then(data => {\n this.vttData = this.processVtt(data);\n this.setupThumbnailElement();\n });\n };\n VttThumbnailsPlugin.prototype.setupThumbnailElement = function setupThumbnailElement() {\n if (!this.vttData[0]) {\n return;\n }\n const mouseDisplay = this.player.$('.vjs-progress-holder .vjs-mouse-display');\n this.thumbnailHolder = this.player.$('.vjs-vtt-thumbnail-display') || video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('div', undefined, {\n class: 'vjs-vtt-thumbnail-display',\n style: `width: ${this.vttData[0].css.width}`\n });\n this.thumbnailHolder.innerHTML = '';\n this.thumbnailHolder.setAttribute('class', 'vjs-vtt-thumbnail-display');\n mouseDisplay.appendChild(this.thumbnailHolder);\n const halfThumbnailWidth = parseInt(this.vttData[0].css.width, 10) / 2;\n const updateThumbnailStyle = this.updateThumbnailStyle.bind(this);\n const mouseTimeDisplay = this.player.getDescendant(['controlBar', 'progressControl', 'seekBar', 'mouseTimeDisplay']);\n mouseTimeDisplay.update = function (seekBarRect, seekBarPoint) {\n const time = seekBarPoint * this.player_.duration();\n const width = seekBarRect.width;\n updateThumbnailStyle(time);\n this.getChild('timeTooltip').updateTime(seekBarRect, seekBarPoint, time, () => {\n // Make sure the thumbnail doesn't exit the player\n if (seekBarRect.width * seekBarPoint < halfThumbnailWidth) {\n this.el_.style.left = `${halfThumbnailWidth}px`;\n } else if (seekBarRect.width * seekBarPoint + halfThumbnailWidth > width) {\n this.el_.style.left = `${seekBarRect.width - halfThumbnailWidth}px`;\n } else {\n this.el_.style.left = `${seekBarRect.width * seekBarPoint}px`;\n }\n });\n this.getChild('timeTooltip').write(video_js__WEBPACK_IMPORTED_MODULE_0___default().time.formatTime(time));\n };\n };\n VttThumbnailsPlugin.prototype.getStyleForTime = function getStyleForTime(time) {\n for (let i = 0; i < this.vttData.length; ++i) {\n let item = this.vttData[i];\n if (time >= item.start && time < item.end) {\n // Cache miss\n if (item.css.url && !cache[item.css.url]) {\n let image = new Image();\n image.src = item.css.url;\n cache[item.css.url] = image;\n }\n return item.css;\n }\n }\n };\n VttThumbnailsPlugin.prototype.updateThumbnailStyle = function updateThumbnailStyle(time) {\n let currentStyle = this.getStyleForTime(time);\n if (!currentStyle) {\n this.thumbnailHolder.style.opacity = '0';\n return;\n } else {\n this.thumbnailHolder.style.opacity = '1';\n }\n if (this.lastStyle && this.lastStyle === currentStyle) {\n return;\n }\n this.lastStyle = currentStyle;\n for (let style in currentStyle) {\n if (Object.prototype.hasOwnProperty.call(currentStyle, style)) {\n this.thumbnailHolder.style[style] = currentStyle[style];\n }\n }\n };\n VttThumbnailsPlugin.prototype.processVtt = function processVtt(data) {\n let thumbnailsData = [];\n let vttDefinitions = data.split(/[\\r\\n][\\r\\n]/i);\n vttDefinitions.forEach(vttDef => {\n if (vttDef.match(/([0-9]{2}:)?([0-9]{2}:)?[0-9]{2}(.[0-9]{3})?( ?--> ?)([0-9]{2}:)?([0-9]{2}:)?[0-9]{2}(.[0-9]{3})?[\\r\\n]{1}.*/gi)) {\n let vttDefSplit = vttDef.split(/[\\r\\n]/i);\n let vttTiming = vttDefSplit[0];\n let vttTimingSplit = vttTiming.split(/ ?--> ?/i);\n let vttTimeStart = vttTimingSplit[0];\n let vttTimeEnd = vttTimingSplit[1];\n let vttImageFullPath = vttDefSplit[1];\n let vttImageDef = vttImageFullPath.split('\\/').pop();\n let vttCssDef = this.getVttCss(vttImageDef);\n thumbnailsData.push({\n start: this.getSecondsFromTimestamp(vttTimeStart),\n end: this.getSecondsFromTimestamp(vttTimeEnd),\n css: vttCssDef\n });\n }\n });\n return thumbnailsData;\n };\n VttThumbnailsPlugin.prototype.getPropsFromDef = function getPropsFromDef(def) {\n let imageDefSplit = def.split(/#xywh=/i);\n let imageUrl = imageDefSplit[0];\n let imageCoords = imageDefSplit[1];\n let splitCoords = imageCoords.match(/[0-9]+/gi);\n return {\n x: splitCoords[0],\n y: splitCoords[1],\n w: splitCoords[2],\n h: splitCoords[3],\n image: imageUrl\n };\n };\n VttThumbnailsPlugin.prototype.getVttCss = function getVttCss(vttImageDef) {\n let cssObj = {};\n\n // If there isn't a protocol, use the VTT source URL.\n let baseSplit = this.options.src.split(/([^\\/]*)$/gi).shift();\n vttImageDef = [baseSplit.trim(), vttImageDef.trim()].join('/');\n let imageProps = this.getPropsFromDef(vttImageDef);\n cssObj.background = 'url(\"' + imageProps.image + '\") no-repeat -' + imageProps.x + 'px -' + imageProps.y + 'px';\n cssObj.width = imageProps.w + 'px';\n cssObj.height = imageProps.h + 'px';\n cssObj.url = imageProps.image;\n return cssObj;\n };\n VttThumbnailsPlugin.prototype.getSecondsFromTimestamp = function getSecondsFromTimestamp(timestamp) {\n const [hours, minutes, seconds] = timestamp.split(':').map(parseFloat);\n return hours * 60 * 60 + minutes * 60 + seconds;\n };\n return VttThumbnailsPlugin;\n}();\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (vttThumbnails);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/vtt-thumbnails/index.js?");
|
|
606
606
|
|
|
607
607
|
/***/ }),
|
|
608
608
|
|
|
@@ -657,7 +657,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
657
657
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
658
658
|
|
|
659
659
|
"use strict";
|
|
660
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CLASS_PREFIX: () => (/* binding */ CLASS_PREFIX),\n/* harmony export */ playerClassPrefix: () => (/* binding */ playerClassPrefix),\n/* harmony export */ setSkinClassPrefix: () => (/* binding */ setSkinClassPrefix),\n/* harmony export */ skinClass: () => (/* binding */ skinClass),\n/* harmony export */ skinClassPrefix: () => (/* binding */ skinClassPrefix)\n/* harmony export */ });\n/* harmony import */ var _config_defaults__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../config/defaults */ \"./config/defaults.js\");\n/* harmony import */ var _find__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./find */ \"./utils/find.js\");\n\n\nconst CLASS_PREFIX = 'cld-video-player';\nconst SKIN_CLASS_PREFIX =
|
|
660
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CLASS_PREFIX: () => (/* binding */ CLASS_PREFIX),\n/* harmony export */ playerClassPrefix: () => (/* binding */ playerClassPrefix),\n/* harmony export */ setSkinClassPrefix: () => (/* binding */ setSkinClassPrefix),\n/* harmony export */ skinClass: () => (/* binding */ skinClass),\n/* harmony export */ skinClassPrefix: () => (/* binding */ skinClassPrefix)\n/* harmony export */ });\n/* harmony import */ var _config_defaults__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../config/defaults */ \"./config/defaults.js\");\n/* harmony import */ var _find__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./find */ \"./utils/find.js\");\n\n\nconst CLASS_PREFIX = 'cld-video-player';\nconst SKIN_CLASS_PREFIX = `${CLASS_PREFIX}-skin-`;\nconst playerClassPrefix = componentInstance => `${CLASS_PREFIX}-${componentInstance.id_}`;\nconst skinClass = skin => `${SKIN_CLASS_PREFIX}${skin}`;\nconst skinClassPrefix = componentInstance => (0,_find__WEBPACK_IMPORTED_MODULE_1__.find)(componentInstance.el().classList, cls => cls.startsWith(SKIN_CLASS_PREFIX));\nconst setSkinClassPrefix = (componentInstance, name) => {\n const currentSkinPrefix = skinClassPrefix(componentInstance);\n const skinName = name ? name.replace(SKIN_CLASS_PREFIX, '') : false;\n let newSkinPrefix = '';\n if (skinName) {\n // From html class\n newSkinPrefix = skinClass(skinName);\n } else if (componentInstance.options_.skin) {\n // From JS config\n newSkinPrefix = skinClass(componentInstance.options_.skin);\n } else {\n // Defult\n newSkinPrefix = skinClass(_config_defaults__WEBPACK_IMPORTED_MODULE_0__[\"default\"].skin);\n }\n if (newSkinPrefix !== currentSkinPrefix) {\n if (currentSkinPrefix) {\n componentInstance.removeClass(currentSkinPrefix);\n }\n componentInstance.addClass(newSkinPrefix);\n }\n if (skinName && componentInstance.options_.skin !== skinName) {\n componentInstance.options_.skin = skinName;\n }\n};\n\n\n//# sourceURL=webpack://cloudinary-video-player/./utils/css-prefix.js?");
|
|
661
661
|
|
|
662
662
|
/***/ }),
|
|
663
663
|
|
|
@@ -679,7 +679,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
679
679
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
680
680
|
|
|
681
681
|
"use strict";
|
|
682
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ fetchAndMergeConfig: () => (/* binding */ fetchAndMergeConfig)\n/* harmony export */ });\n/* harmony import */ var cloudinary_video_player_profiles__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! cloudinary-video-player-profiles */ \"../node_modules/cloudinary-video-player-profiles/dist/index.js\");\n/* harmony import */ var cloudinary_video_player_profiles__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cloudinary_video_player_profiles__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../plugins/cloudinary/common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var _utils_utf8Base64__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/utf8Base64 */ \"./utils/utf8Base64.js\");\
|
|
682
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ fetchAndMergeConfig: () => (/* binding */ fetchAndMergeConfig)\n/* harmony export */ });\n/* harmony import */ var cloudinary_video_player_profiles__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! cloudinary-video-player-profiles */ \"../node_modules/cloudinary-video-player-profiles/dist/index.js\");\n/* harmony import */ var cloudinary_video_player_profiles__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cloudinary_video_player_profiles__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../plugins/cloudinary/common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var _utils_utf8Base64__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/utf8Base64 */ \"./utils/utf8Base64.js\");\n\n\n\nconst isDefaultProfile = profileName => !!cloudinary_video_player_profiles__WEBPACK_IMPORTED_MODULE_0__.defaultProfiles.find(_ref => {\n let {\n name\n } = _ref;\n return profileName === name;\n});\nconst getDefaultProfileConfig = profileName => {\n const profile = cloudinary_video_player_profiles__WEBPACK_IMPORTED_MODULE_0__.defaultProfiles.find(_ref2 => {\n let {\n name\n } = _ref2;\n return profileName === name;\n });\n if (!profile) {\n throw new Error(`Default profile with name ${profileName} does not exist`);\n }\n return profile.config;\n};\nconst fetchConfig = async options => {\n const {\n profile,\n publicId,\n cloudinaryConfig,\n type = 'upload',\n videoConfig\n } = options;\n if (profile && isDefaultProfile(profile)) {\n return getDefaultProfileConfig(profile);\n }\n const urlPrefix = (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_1__.getCloudinaryUrlPrefix)(cloudinaryConfig) + '/_applet_/video_service';\n let configUrl;\n if (profile) {\n configUrl = (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_1__.isRawUrl)(profile) ? profile : `${urlPrefix}/video_player_profiles/${profile.replaceAll(' ', '+')}.json`;\n } else if (publicId && videoConfig !== false) {\n configUrl = `${urlPrefix}/video_player_config/video/${type}/${(0,_utils_utf8Base64__WEBPACK_IMPORTED_MODULE_2__.utf8ToBase64)(publicId)}.json`;\n } else {\n return {};\n }\n return fetch(configUrl, {\n method: 'GET'\n }).then(res => {\n if (!res.ok) {\n // fail silently\n return {};\n }\n return res.json();\n });\n};\nconst fetchAndMergeConfig = async options => {\n const profileOptions = await fetchConfig(options);\n const fetchedConfig = profileOptions.playerOptions ? Object.keys(profileOptions.playerOptions) : [];\n const profileAnalytics = {\n _internalAnalyticsMetadata: {\n newPlayerMethod: true,\n ...(options.profile ? {\n profile: isDefaultProfile(options.profile) ? options.profile : true\n } : {}),\n ...(!options.profile && options.videoConfig !== false && options.publicId ? {\n videoConfig: true\n } : {}),\n ...(fetchedConfig.length > 0 ? {\n fetchedConfig: fetchedConfig.join(',')\n } : {})\n }\n };\n return Object.assign({}, profileOptions.playerOptions || {}, profileOptions.sourceOptions || {}, options, profileAnalytics);\n};\n\n//# sourceURL=webpack://cloudinary-video-player/./utils/fetch-config.js?");
|
|
683
683
|
|
|
684
684
|
/***/ }),
|
|
685
685
|
|
|
@@ -712,7 +712,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
712
712
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
713
713
|
|
|
714
714
|
"use strict";
|
|
715
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getAnalyticsFromPlayerOptions: () => (/* binding */ getAnalyticsFromPlayerOptions)\n/* harmony export */ });\n/* harmony import */ var config_defaults__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! config/defaults */ \"./config/defaults.js\");\n/* harmony import */ var lodash_isEmpty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isEmpty */ \"../node_modules/lodash/isEmpty.js\");\n/* harmony import */ var lodash_isEmpty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isEmpty__WEBPACK_IMPORTED_MODULE_1__);\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n\n\nconst hasConfig = obj => lodash_isEmpty__WEBPACK_IMPORTED_MODULE_1___default()(obj) ? null : true;\nconst filterDefaultsAndNulls = obj => Object.entries(obj).reduce((filtered, _ref) => {\n let [key, value] = _ref;\n if (value !== config_defaults__WEBPACK_IMPORTED_MODULE_0__[\"default\"][key] && value !== undefined && value !== null) {\n filtered[key] = value;\n }\n return filtered;\n}, {});\nconst getSourceOptions = function () {\n var _sourceOptions$poster, _sourceOptions$adapti, _sourceOptions$adapti2, _sourceOptions$info, _sourceOptions$info2, _sourceOptions$info3;\n let sourceOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n poster: (() => {\n if (sourceOptions.poster === true) return 'auto';\n if (typeof sourceOptions.poster === 'string') return 'url';\n return undefined;\n })(),\n posterOptions: (_sourceOptions$poster = sourceOptions.posterOptions) === null || _sourceOptions$poster === void 0 ? void 0 : _sourceOptions$poster.hasUserPosterOptions,\n posterOptionsPublicId: sourceOptions.posterOptions && hasConfig(sourceOptions.posterOptions.publicId),\n autoShowRecommendations: sourceOptions.autoShowRecommendations,\n fontFace: sourceOptions.fontFace,\n sourceTypes: sourceOptions.sourceTypes,\n resourceType: sourceOptions.resourceType,\n chapters: (() => {\n if (sourceOptions.chapters === true) return 'auto';\n if (sourceOptions.chapters && sourceOptions.chapters.url) return 'url';\n if (sourceOptions.chapters) return 'inline-chapters';\n return undefined;\n })(),\n visualSearch: sourceOptions.visualSearch,\n download: hasConfig(sourceOptions.download),\n recommendations: sourceOptions.recommendations && sourceOptions.recommendations.length\n }, hasConfig(sourceOptions.adaptiveStreaming) ? {\n abrStrategy: (sourceOptions === null || sourceOptions === void 0 || (_sourceOptions$adapti = sourceOptions.adaptiveStreaming) === null || _sourceOptions$adapti === void 0 ? void 0 : _sourceOptions$adapti.strategy) === config_defaults__WEBPACK_IMPORTED_MODULE_0__[\"default\"].adaptiveStreaming.strategy ? undefined : sourceOptions === null || sourceOptions === void 0 || (_sourceOptions$adapti2 = sourceOptions.adaptiveStreaming) === null || _sourceOptions$adapti2 === void 0 ? void 0 : _sourceOptions$adapti2.strategy\n } : {}), {}, {\n shoppable: hasConfig(sourceOptions.shoppable),\n shoppableProductsLength: hasConfig(sourceOptions.shoppable) && sourceOptions.shoppable.products.length\n }, sourceOptions.title || sourceOptions.description || sourceOptions.info ? {\n sourceInfo: hasConfig(sourceOptions.info),\n sourceTitle: typeof sourceOptions.title === 'string' ? sourceOptions.title : (_sourceOptions$info = sourceOptions.info) === null || _sourceOptions$info === void 0 ? void 0 : _sourceOptions$info.title,\n sourceDescription: typeof sourceOptions.description === 'string' ? sourceOptions.description : ((_sourceOptions$info2 = sourceOptions.info) === null || _sourceOptions$info2 === void 0 ? void 0 : _sourceOptions$info2.subtitle) || ((_sourceOptions$info3 = sourceOptions.info) === null || _sourceOptions$info3 === void 0 ? void 0 : _sourceOptions$info3.description)\n } : {}), hasConfig(sourceOptions.textTracks) ? getTextTracksOptions(sourceOptions.textTracks) : {}), {}, {\n interactionAreas: hasConfig(sourceOptions.interactionAreas),\n videoSources: hasConfig(sourceOptions.videoSources)\n });\n};\nconst getTextTracksOptions = function () {\n let textTracks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const tracksArr = [textTracks.captions, ...(textTracks.subtitles || [])].filter(Boolean);\n return _objectSpread({\n textTracks: hasConfig(textTracks),\n textTracksLength: tracksArr.length,\n textTracksOptions: hasConfig(textTracks.options) && Object.keys(textTracks.options).join(','),\n pacedTextTracks: hasConfig(textTracks) && JSON.stringify(textTracks || {}).includes('\"maxWords\":') || null,\n wordHighlight: hasConfig(textTracks) && JSON.stringify(textTracks || {}).includes('\"wordHighlight\":') || null,\n transcriptLanguages: tracksArr.filter(track => !track.url).map(track => track.language || '').join(',') || null,\n transcriptAutoLoaded: tracksArr.some(track => !track.url) || null,\n transcriptFromURl: tracksArr.some(track => {\n var _track$url;\n return (_track$url = track.url) === null || _track$url === void 0 ? void 0 : _track$url.endsWith('.transcript');\n }) || null,\n vttFromUrl: tracksArr.some(track => {\n var _track$url2;\n return (_track$url2 = track.url) === null || _track$url2 === void 0 ? void 0 : _track$url2.endsWith('.vtt');\n }) || null,\n srtFromUrl: tracksArr.some(track => {\n var _track$url3;\n return (_track$url3 = track.url) === null || _track$url3 === void 0 ? void 0 : _track$url3.endsWith('.srt');\n }) || null\n }, textTracks.options ? {\n styledTextTracksTheme: textTracks.options.theme,\n styledTextTracksFont: textTracks.options.fontFace,\n styledTextTracksFontSize: textTracks.options.fontSize,\n styledTextTracksGravity: textTracks.options.gravity,\n styledTextTracksBox: hasConfig(textTracks.options.box),\n styledTextTracksStyle: hasConfig(textTracks.options.style),\n styledTextTracksWordHighlightStyle: hasConfig(textTracks.options.wordHighlightStyle)\n } : {});\n};\nconst getAdsOptions = function () {\n let adsOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return {\n adsAdTagUrl: adsOptions.adTagUrl,\n adsShowCountdown: adsOptions.showCountdown,\n adsAdLabel: adsOptions.adLabel,\n adsLocale: adsOptions.locale,\n adsPrerollTimeout: adsOptions.prerollTimeout,\n adsPostrollTimeout: adsOptions.postrollTimeout,\n adsAdsInPlaylist: adsOptions.adsInPlaylist\n };\n};\nconst getPlaylistOptions = function () {\n let playlistWidgetOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return {\n playlist: playlistWidgetOptions.playlist,\n playlistByTag: playlistWidgetOptions.playlistByTag,\n playlistWidgetDirection: playlistWidgetOptions.direction,\n playlistWidgetTotal: playlistWidgetOptions.total\n };\n};\nconst getAnalyticsFromPlayerOptions = playerOptions => filterDefaultsAndNulls(_objectSpread(_objectSpread(_objectSpread({\n aiHighlightsGraph: playerOptions.aiHighlightsGraph,\n analytics: hasConfig(playerOptions.analytics),\n autoplay: playerOptions.autoplay,\n autoplayMode: playerOptions.autoplayMode,\n bigPlayButton: playerOptions.bigPlayButton,\n className: playerOptions.class,\n cloudinaryAnalytics: hasConfig(playerOptions.cloudinaryAnalytics),\n controls: playerOptions.controls,\n floatingWhenNotVisible: playerOptions.floatingWhenNotVisible,\n fluid: playerOptions.fluid,\n height: playerOptions.height,\n hideContextMenu: playerOptions.hideContextMenu,\n logoImageUrl: playerOptions.logoImageUrl,\n logoOnclickUrl: playerOptions.logoOnclickUrl,\n loop: playerOptions.loop,\n maxTries: playerOptions.maxTries,\n muted: playerOptions.muted,\n playbackRates: playerOptions.playbackRates,\n playedEventPercents: playerOptions.playedEventPercents,\n playedEventTimes: playerOptions.playedEventTimes,\n playsinline: playerOptions.playsinline,\n preload: playerOptions.preload,\n videoTimeout: playerOptions.videoTimeout,\n seekThumbnails: playerOptions.seekThumbnails,\n showJumpControls: playerOptions.showJumpControls,\n chaptersButton: playerOptions.chaptersButton,\n pictureInPictureToggle: playerOptions.pictureInPictureToggle,\n showLogo: playerOptions.showLogo,\n skin: playerOptions.skin,\n videoJS: hasConfig(playerOptions.videoJS),\n width: playerOptions.width,\n withCredentials: playerOptions.withCredentials,\n debug: playerOptions.debug,\n type: playerOptions.type,\n colors: hasConfig(playerOptions.colors),\n controlBar: hasConfig(playerOptions.controlBar)\n}, getSourceOptions(playerOptions.sourceOptions || {})), getAdsOptions(playerOptions.ads)), getPlaylistOptions(playerOptions.playlistWidget)));\n\n//# sourceURL=webpack://cloudinary-video-player/./utils/get-analytics-player-options.js?");
|
|
715
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getAnalyticsFromPlayerOptions: () => (/* binding */ getAnalyticsFromPlayerOptions)\n/* harmony export */ });\n/* harmony import */ var config_defaults__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! config/defaults */ \"./config/defaults.js\");\n/* harmony import */ var lodash_isEmpty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isEmpty */ \"../node_modules/lodash/isEmpty.js\");\n/* harmony import */ var lodash_isEmpty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isEmpty__WEBPACK_IMPORTED_MODULE_1__);\n\n\nconst hasConfig = obj => lodash_isEmpty__WEBPACK_IMPORTED_MODULE_1___default()(obj) ? null : true;\nconst filterDefaultsAndNulls = obj => Object.entries(obj).reduce((filtered, _ref) => {\n let [key, value] = _ref;\n if (value !== config_defaults__WEBPACK_IMPORTED_MODULE_0__[\"default\"][key] && value !== undefined && value !== null) {\n filtered[key] = value;\n }\n return filtered;\n}, {});\nconst getSourceOptions = function () {\n let sourceOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return {\n poster: (() => {\n if (sourceOptions.poster === true) return 'auto';\n if (typeof sourceOptions.poster === 'string') return 'url';\n return undefined;\n })(),\n posterOptions: sourceOptions.posterOptions?.hasUserPosterOptions,\n posterOptionsPublicId: sourceOptions.posterOptions && hasConfig(sourceOptions.posterOptions.publicId),\n autoShowRecommendations: sourceOptions.autoShowRecommendations,\n fontFace: sourceOptions.fontFace,\n sourceTypes: sourceOptions.sourceTypes,\n resourceType: sourceOptions.resourceType,\n chapters: (() => {\n if (sourceOptions.chapters === true) return 'auto';\n if (sourceOptions.chapters && sourceOptions.chapters.url) return 'url';\n if (sourceOptions.chapters) return 'inline-chapters';\n return undefined;\n })(),\n visualSearch: sourceOptions.visualSearch,\n download: hasConfig(sourceOptions.download),\n recommendations: sourceOptions.recommendations && sourceOptions.recommendations.length,\n ...(hasConfig(sourceOptions.adaptiveStreaming) ? {\n abrStrategy: sourceOptions?.adaptiveStreaming?.strategy === config_defaults__WEBPACK_IMPORTED_MODULE_0__[\"default\"].adaptiveStreaming.strategy ? undefined : sourceOptions?.adaptiveStreaming?.strategy\n } : {}),\n shoppable: hasConfig(sourceOptions.shoppable),\n shoppableProductsLength: hasConfig(sourceOptions.shoppable) && sourceOptions.shoppable.products.length,\n ...(sourceOptions.title || sourceOptions.description || sourceOptions.info ? {\n sourceInfo: hasConfig(sourceOptions.info),\n sourceTitle: typeof sourceOptions.title === 'string' ? sourceOptions.title : sourceOptions.info?.title,\n sourceDescription: typeof sourceOptions.description === 'string' ? sourceOptions.description : sourceOptions.info?.subtitle || sourceOptions.info?.description\n } : {}),\n ...(hasConfig(sourceOptions.textTracks) ? getTextTracksOptions(sourceOptions.textTracks) : {}),\n interactionAreas: hasConfig(sourceOptions.interactionAreas),\n videoSources: hasConfig(sourceOptions.videoSources)\n };\n};\nconst getTextTracksOptions = function () {\n let textTracks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const tracksArr = [textTracks.captions, ...(textTracks.subtitles || [])].filter(Boolean);\n return {\n textTracks: hasConfig(textTracks),\n textTracksLength: tracksArr.length,\n textTracksOptions: hasConfig(textTracks.options) && Object.keys(textTracks.options).join(','),\n pacedTextTracks: hasConfig(textTracks) && JSON.stringify(textTracks || {}).includes('\"maxWords\":') || null,\n wordHighlight: hasConfig(textTracks) && JSON.stringify(textTracks || {}).includes('\"wordHighlight\":') || null,\n transcriptLanguages: tracksArr.filter(track => !track.url).map(track => track.language || '').join(',') || null,\n transcriptAutoLoaded: tracksArr.some(track => !track.url) || null,\n transcriptFromURl: tracksArr.some(track => track.url?.endsWith('.transcript')) || null,\n vttFromUrl: tracksArr.some(track => track.url?.endsWith('.vtt')) || null,\n srtFromUrl: tracksArr.some(track => track.url?.endsWith('.srt')) || null,\n ...(textTracks.options ? {\n styledTextTracksTheme: textTracks.options.theme,\n styledTextTracksFont: textTracks.options.fontFace,\n styledTextTracksFontSize: textTracks.options.fontSize,\n styledTextTracksGravity: textTracks.options.gravity,\n styledTextTracksBox: hasConfig(textTracks.options.box),\n styledTextTracksStyle: hasConfig(textTracks.options.style),\n styledTextTracksWordHighlightStyle: hasConfig(textTracks.options.wordHighlightStyle)\n } : {})\n };\n};\nconst getAdsOptions = function () {\n let adsOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return {\n adsAdTagUrl: adsOptions.adTagUrl,\n adsShowCountdown: adsOptions.showCountdown,\n adsAdLabel: adsOptions.adLabel,\n adsLocale: adsOptions.locale,\n adsPrerollTimeout: adsOptions.prerollTimeout,\n adsPostrollTimeout: adsOptions.postrollTimeout,\n adsAdsInPlaylist: adsOptions.adsInPlaylist\n };\n};\nconst getPlaylistOptions = function () {\n let playlistWidgetOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return {\n playlist: playlistWidgetOptions.playlist,\n playlistByTag: playlistWidgetOptions.playlistByTag,\n playlistWidgetDirection: playlistWidgetOptions.direction,\n playlistWidgetTotal: playlistWidgetOptions.total\n };\n};\nconst getAnalyticsFromPlayerOptions = playerOptions => filterDefaultsAndNulls({\n aiHighlightsGraph: playerOptions.aiHighlightsGraph,\n analytics: hasConfig(playerOptions.analytics),\n autoplay: playerOptions.autoplay,\n autoplayMode: playerOptions.autoplayMode,\n bigPlayButton: playerOptions.bigPlayButton,\n className: playerOptions.class,\n cloudinaryAnalytics: hasConfig(playerOptions.cloudinaryAnalytics),\n controls: playerOptions.controls,\n floatingWhenNotVisible: playerOptions.floatingWhenNotVisible,\n fluid: playerOptions.fluid,\n height: playerOptions.height,\n hideContextMenu: playerOptions.hideContextMenu,\n logoImageUrl: playerOptions.logoImageUrl,\n logoOnclickUrl: playerOptions.logoOnclickUrl,\n loop: playerOptions.loop,\n maxTries: playerOptions.maxTries,\n muted: playerOptions.muted,\n playbackRates: playerOptions.playbackRates,\n playedEventPercents: playerOptions.playedEventPercents,\n playedEventTimes: playerOptions.playedEventTimes,\n playsinline: playerOptions.playsinline,\n preload: playerOptions.preload,\n videoTimeout: playerOptions.videoTimeout,\n seekThumbnails: playerOptions.seekThumbnails,\n showJumpControls: playerOptions.showJumpControls,\n chaptersButton: playerOptions.chaptersButton,\n pictureInPictureToggle: playerOptions.pictureInPictureToggle,\n showLogo: playerOptions.showLogo,\n skin: playerOptions.skin,\n videoJS: hasConfig(playerOptions.videoJS),\n width: playerOptions.width,\n withCredentials: playerOptions.withCredentials,\n debug: playerOptions.debug,\n type: playerOptions.type,\n colors: hasConfig(playerOptions.colors),\n controlBar: hasConfig(playerOptions.controlBar),\n ...getSourceOptions(playerOptions.sourceOptions || {}),\n ...getAdsOptions(playerOptions.ads),\n ...getPlaylistOptions(playerOptions.playlistWidget)\n});\n\n//# sourceURL=webpack://cloudinary-video-player/./utils/get-analytics-player-options.js?");
|
|
716
716
|
|
|
717
717
|
/***/ }),
|
|
718
718
|
|
|
@@ -756,7 +756,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
756
756
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
757
757
|
|
|
758
758
|
"use strict";
|
|
759
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getPointerPosition: () => (/* binding */ getPointerPosition),\n/* harmony export */ isElementInViewport: () => (/* binding */ isElementInViewport),\n/* harmony export */ setPosition: () => (/* binding */ setPosition)\n/* harmony export */ });\nfunction getElementPosition(el) {\n const box = el.getBoundingClientRect();\n const body = document.body;\n const docEl = document.documentElement;\n const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\n const scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n const top = box.top + scrollTop - clientTop;\n const left = box.left + scrollLeft - clientLeft;\n return {\n top: Math.round(top),\n left: Math.round(left)\n };\n}\n\n/**\n * Get pointer position in element\n * Returns an object with x and y coordinates.\n * The base on the coordinates are the bottom left of the element.\n *\n * @function getPointerPosition\n * @param {Element} el Element on which to get the pointer position on\n * @param {Event} event Event object\n * @return {Object}\n * This object will have x and y coordinates corresponding to the\n * mouse position\n */\nfunction getPointerPosition(el, event) {\n const position = {};\n const box = getElementPosition(el);\n const boxW = el.offsetWidth;\n const boxH = el.offsetHeight;\n const boxY = box.top;\n const boxX = box.left;\n let pageY = event.pageY;\n let pageX = event.pageX;\n if (event.changedTouches) {\n pageX = event.changedTouches[0].pageX;\n pageY = event.changedTouches[0].pageY;\n }\n position.y = Math.max(0, Math.min(1, (boxY - pageY + boxH) / boxH));\n position.x = Math.max(0, Math.min(1, (pageX - boxX) / boxW));\n return position;\n}\nfunction isElementInViewport(el, _ref) {\n let {\n fraction\n } = _ref;\n const topLeft = getElementPosition(el);\n const x = topLeft.left;\n const y = topLeft.top;\n const h = el.offsetHeight;\n const w = el.offsetWidth;\n const r = x + w;\n const b = y + h;\n const visibleX = Math.max(0, Math.min(w, window.pageXOffset + window.innerWidth - x, r - window.pageXOffset));\n const visibleY = Math.max(0, Math.min(w, window.pageYOffset + window.innerHeight - y, b - window.pageYOffset));\n const visible = visibleX * visibleY / (w * h);\n return visible > fraction;\n}\nfunction setPosition(el, left, top) {\n el.style.left =
|
|
759
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getPointerPosition: () => (/* binding */ getPointerPosition),\n/* harmony export */ isElementInViewport: () => (/* binding */ isElementInViewport),\n/* harmony export */ setPosition: () => (/* binding */ setPosition)\n/* harmony export */ });\nfunction getElementPosition(el) {\n const box = el.getBoundingClientRect();\n const body = document.body;\n const docEl = document.documentElement;\n const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\n const scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n const top = box.top + scrollTop - clientTop;\n const left = box.left + scrollLeft - clientLeft;\n return {\n top: Math.round(top),\n left: Math.round(left)\n };\n}\n\n/**\n * Get pointer position in element\n * Returns an object with x and y coordinates.\n * The base on the coordinates are the bottom left of the element.\n *\n * @function getPointerPosition\n * @param {Element} el Element on which to get the pointer position on\n * @param {Event} event Event object\n * @return {Object}\n * This object will have x and y coordinates corresponding to the\n * mouse position\n */\nfunction getPointerPosition(el, event) {\n const position = {};\n const box = getElementPosition(el);\n const boxW = el.offsetWidth;\n const boxH = el.offsetHeight;\n const boxY = box.top;\n const boxX = box.left;\n let pageY = event.pageY;\n let pageX = event.pageX;\n if (event.changedTouches) {\n pageX = event.changedTouches[0].pageX;\n pageY = event.changedTouches[0].pageY;\n }\n position.y = Math.max(0, Math.min(1, (boxY - pageY + boxH) / boxH));\n position.x = Math.max(0, Math.min(1, (pageX - boxX) / boxW));\n return position;\n}\nfunction isElementInViewport(el, _ref) {\n let {\n fraction\n } = _ref;\n const topLeft = getElementPosition(el);\n const x = topLeft.left;\n const y = topLeft.top;\n const h = el.offsetHeight;\n const w = el.offsetWidth;\n const r = x + w;\n const b = y + h;\n const visibleX = Math.max(0, Math.min(w, window.pageXOffset + window.innerWidth - x, r - window.pageXOffset));\n const visibleY = Math.max(0, Math.min(w, window.pageYOffset + window.innerHeight - y, b - window.pageYOffset));\n const visible = visibleX * visibleY / (w * h);\n return visible > fraction;\n}\nfunction setPosition(el, left, top) {\n el.style.left = `${left}px`;\n el.style.top = `${top}px`;\n}\n\n\n//# sourceURL=webpack://cloudinary-video-player/./utils/positioning.js?");
|
|
760
760
|
|
|
761
761
|
/***/ }),
|
|
762
762
|
|
|
@@ -767,7 +767,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
767
767
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
768
768
|
|
|
769
769
|
"use strict";
|
|
770
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ objectToQuerystring: () => (/* binding */ objectToQuerystring)\n/* harmony export */ });\nconst objectToQuerystring = obj => {\n const keys = Object.keys(obj);\n if (!keys.length) {\n return '';\n }\n const query = keys.map(key =>
|
|
770
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ objectToQuerystring: () => (/* binding */ objectToQuerystring)\n/* harmony export */ });\nconst objectToQuerystring = obj => {\n const keys = Object.keys(obj);\n if (!keys.length) {\n return '';\n }\n const query = keys.map(key => `${key}=${obj[key]}`).join('&');\n return `?${query}`;\n};\n\n\n//# sourceURL=webpack://cloudinary-video-player/./utils/querystring.js?");
|
|
771
771
|
|
|
772
772
|
/***/ }),
|
|
773
773
|
|
|
@@ -811,7 +811,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
811
811
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
812
812
|
|
|
813
813
|
"use strict";
|
|
814
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getValidatorItem: () => (/* binding */ getValidatorItem),\n/* harmony export */ isValidConfig: () => (/* binding */ isValidConfig),\n/* harmony export */ isValidPlayerConfig: () => (/* binding */ isValidPlayerConfig),\n/* harmony export */ isValidSourceConfig: () => (/* binding */ isValidSourceConfig),\n/* harmony export */ isValueValid: () => (/* binding */ isValueValid)\n/* harmony export */ });\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/isFunction */ \"../node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isObject */ \"../node_modules/lodash/isObject.js\");\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isObject__WEBPACK_IMPORTED_MODULE_1__);\n\n\nconst getValidatorItem = validator => lodash_isFunction__WEBPACK_IMPORTED_MODULE_0___default()(validator) ? validator() : validator;\n\n/**\n * check if a value is valid or not\n * @param {object | function} validator - a config object\n * @param {any} value\n * @param {key} string\n * @returns boolean - using the validators to check if the value is a valid value or not\n */\nconst isValueValid = (validator, value, configPropertyName) => {\n const validatorItem = getValidatorItem(validator);\n const isValid = validatorItem.value(value);\n if (!isValid) {\n console.error(
|
|
814
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getValidatorItem: () => (/* binding */ getValidatorItem),\n/* harmony export */ isValidConfig: () => (/* binding */ isValidConfig),\n/* harmony export */ isValidPlayerConfig: () => (/* binding */ isValidPlayerConfig),\n/* harmony export */ isValidSourceConfig: () => (/* binding */ isValidSourceConfig),\n/* harmony export */ isValueValid: () => (/* binding */ isValueValid)\n/* harmony export */ });\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/isFunction */ \"../node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isObject */ \"../node_modules/lodash/isObject.js\");\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isObject__WEBPACK_IMPORTED_MODULE_1__);\n\n\nconst getValidatorItem = validator => lodash_isFunction__WEBPACK_IMPORTED_MODULE_0___default()(validator) ? validator() : validator;\n\n/**\n * check if a value is valid or not\n * @param {object | function} validator - a config object\n * @param {any} value\n * @param {key} string\n * @returns boolean - using the validators to check if the value is a valid value or not\n */\nconst isValueValid = (validator, value, configPropertyName) => {\n const validatorItem = getValidatorItem(validator);\n const isValid = validatorItem.value(value);\n if (!isValid) {\n console.error(`cloudinary video player: ${validatorItem.message(configPropertyName)}`);\n }\n return isValid;\n};\n\n/**\n * check if a configuration object is valid or not\n * @param {object} config - a config object\n * @param {object} validators\n * @returns boolean - true is the configuration object is valid and false if it is not\n */\nconst isValidConfig = (config, validators) => {\n if (lodash_isObject__WEBPACK_IMPORTED_MODULE_1___default()(validators)) {\n for (let key in config) {\n if (Object.prototype.hasOwnProperty.call(validators, key)) {\n const configValue = config[key];\n const validatorValue = validators[key];\n const isConfigObject = lodash_isObject__WEBPACK_IMPORTED_MODULE_1___default()(configValue);\n if (isConfigObject && !isValidConfig(configValue, validatorValue)) {\n return false;\n } else if (!isConfigObject && !isValueValid(validatorValue, configValue, key)) {\n return false;\n }\n }\n }\n }\n return true;\n};\n\n/**\n * check if a configuration object is valid or not\n * @param {object} config - a config object\n * @returns boolean - true is the configuration object is valid and false if it is not\n */\nconst isValidPlayerConfig = async config => {\n return __webpack_require__.e(/*! import() | debug */ \"debug\").then(__webpack_require__.bind(__webpack_require__, /*! ./validators */ \"./validators/validators.js\")).then(_ref => {\n let {\n playerValidators\n } = _ref;\n return isValidConfig(config, playerValidators);\n });\n};\n\n/**\n * check if a configuration object is valid or not\n * @param {object} config - a config object\n * @returns boolean - true is the configuration object is valid and false if it is not\n */\nconst isValidSourceConfig = config => {\n return __webpack_require__.e(/*! import() | debug */ \"debug\").then(__webpack_require__.bind(__webpack_require__, /*! ./validators */ \"./validators/validators.js\")).then(_ref2 => {\n let {\n sourceValidators\n } = _ref2;\n return isValidConfig(config, sourceValidators);\n });\n};\n\n//# sourceURL=webpack://cloudinary-video-player/./validators/validators-functions.js?");
|
|
815
815
|
|
|
816
816
|
/***/ }),
|
|
817
817
|
|
|
@@ -833,7 +833,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
833
833
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
834
834
|
|
|
835
835
|
"use strict";
|
|
836
|
-
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 uuid__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! uuid */ \"../node_modules/uuid/dist/esm-browser/v4.js\");\n/* harmony import */ var lodash_isEmpty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isEmpty */ \"../node_modules/lodash/isEmpty.js\");\n/* harmony import */ var lodash_isEmpty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isEmpty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/get */ \"../node_modules/lodash/get.js\");\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_pick__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/pick */ \"../node_modules/lodash/pick.js\");\n/* harmony import */ var lodash_pick__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_pick__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/isFunction */ \"../node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash/isObject */ \"../node_modules/lodash/isObject.js\");\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_isObject__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash/isString */ \"../node_modules/lodash/isString.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_isString__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components */ \"./components/index.js\");\n/* harmony import */ var _plugins__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./plugins */ \"./plugins/index.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utils */ \"./utils/index.js\");\n/* harmony import */ var _config_defaults__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./config/defaults */ \"./config/defaults.js\");\n/* harmony import */ var _mixins_eventable__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./mixins/eventable */ \"./mixins/eventable.js\");\n/* harmony import */ var _extended_events__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./extended-events */ \"./extended-events.js\");\n/* harmony import */ var _plugins_cloudinary_models_video_source_video_source__WEBPACK_IMPORTED_MODULE_13__ = __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_14__ = __webpack_require__(/*! ./video-player.utils */ \"./video-player.utils.js\");\n/* harmony import */ var _video_player_const__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./video-player.const */ \"./video-player.const.js\");\n/* harmony import */ var _validators_validators_functions__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./validators/validators-functions */ \"./validators/validators-functions.js\");\n/* harmony import */ var _utils_consts__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./utils/consts */ \"./utils/consts.js\");\n/* harmony import */ var _utils_get_analytics_player_options__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./utils/get-analytics-player-options */ \"./utils/get-analytics-player-options.js\");\n/* harmony import */ var _plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./plugins/cloudinary/common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var _utils_video_retry__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./utils/video-retry */ \"./utils/video-retry.js\");\nconst _excluded = [\"publicId\"],\n _excluded2 = [\"publicId\", \"label\"];\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n\n\n\n\n\n\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_8__[\"default\"]).forEach(key => {\n video_js__WEBPACK_IMPORTED_MODULE_0___default().registerPlugin(key, _plugins__WEBPACK_IMPORTED_MODULE_8__[\"default\"][key]);\n});\n(0,_video_player_utils__WEBPACK_IMPORTED_MODULE_14__.overrideDefaultVideojsComponents)();\nclass VideoPlayer extends _utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"].mixin(_mixins_eventable__WEBPACK_IMPORTED_MODULE_11__[\"default\"]) {\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 super();\n _defineProperty(this, \"_resetReTryVideoState\", () => {\n this.reTryVideoStateRetriesCount = 0;\n this.videojs.clearTimeout(this.reTryVideoStateTimeoutId);\n });\n _defineProperty(this, \"_resetReloadVideo\", () => {\n this.reloadVideoRetriesCount = 0;\n this.videojs.clearTimeout(this.reloadVideoTimeoutId);\n });\n this.videoElement = elem;\n this.options = (0,_video_player_utils__WEBPACK_IMPORTED_MODULE_14__.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_9__[\"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 this._isPlayerConfigValid = true;\n if (this.playerOptions.debug) {\n (0,_validators_validators_functions__WEBPACK_IMPORTED_MODULE_16__.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_21__[\"default\"])();\n }\n return this.vpInstanceId;\n }\n _sendInternalAnalytics() {\n var _options$sourceOption;\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$sourceOption = options.sourceOptions) !== null && _options$sourceOption !== void 0 && _options$sourceOption.allowUsageReport)) {\n return;\n }\n try {\n var _options$_internalAna;\n const internalAnalyticsMetadata = (_options$_internalAna = options._internalAnalyticsMetadata) !== null && _options$_internalAna !== void 0 ? _options$_internalAna : {};\n const analyticsData = (0,_utils_get_analytics_player_options__WEBPACK_IMPORTED_MODULE_18__.getAnalyticsFromPlayerOptions)(options);\n const analyticsParams = new URLSearchParams(analyticsData).toString();\n const baseParams = new URLSearchParams(_objectSpread({\n vpVersion: \"3.6.4-edge.0\",\n vpInstanceId: this.getVPInstanceId(),\n cloudName: options.cloudinary.cloud_name\n }, internalAnalyticsMetadata)).toString();\n fetch(\"\".concat(INTERNAL_ANALYTICS_URL, \"/video_player_source?\").concat(analyticsParams, \"&\").concat(baseParams));\n } catch (err) {\n console.warn(err);\n }\n }\n _setVideoJsListeners(ready) {\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_17__.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_17__.SOURCE_TYPE.AUDIO, _utils_consts__WEBPACK_IMPORTED_MODULE_17__.SOURCE_TYPE.VIDEO].includes(type)) {\n if (this.isLiveStream) {\n this.videojs.error({\n code: _plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_19__.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_9__[\"default\"].handleCldError(this, this.playerOptions);\n }\n } else {\n this._resetReTryVideoState();\n }\n }\n });\n this.videojs.tech_.on(_utils_consts__WEBPACK_IMPORTED_MODULE_17__.PLAYER_EVENT.RETRY_PLAYLIST, () => {\n const mediaRequestsErrored = lodash_get__WEBPACK_IMPORTED_MODULE_2___default()(this.videojs, 'hls.stats.mediaRequestsErrored', 0);\n if (mediaRequestsErrored > 0) {\n this._resetReTryVideoState();\n _utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"].handleCldError(this, this.playerOptions);\n }\n });\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_17__.PLAYER_EVENT.PLAY, this._resetReTryVideoState);\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_17__.PLAYER_EVENT.CAN_PLAY_THROUGH, this._resetReTryVideoState);\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_17__.PLAYER_EVENT.CLD_SOURCE_CHANGED, this._onSourceChange.bind(this));\n this.videojs.ready(() => {\n this._onReady();\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_8__[\"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(_objectSpread(_objectSpread({}, 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_17__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref) => {\n let {\n source\n } = _ref;\n if (!source || source.getType() === _utils_consts__WEBPACK_IMPORTED_MODULE_17__.SOURCE_TYPE.AUDIO ||\n // Is Audio\n source.resourceConfig().type === 'live' ||\n // Is live stream\n (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_19__.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 = Object.assign({}, source.transformation());\n if (transformation) {\n delete transformation.streaming_profile;\n delete transformation.video_codec;\n }\n transformation.flags = transformation.flags || [];\n transformation.flags.push('sprite');\n const vttSrc = source.config().url(\"\".concat(publicId, \".vtt\"), {\n transformation\n }).replace(/\\.json$/, ''); // Handle playlist by tag\n\n // vttThumbnails must be called differently on init and on source update.\n lodash_isFunction__WEBPACK_IMPORTED_MODULE_4___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_17__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref2) => {\n let {\n source\n } = _ref2;\n if (!source || source.getType() === _utils_consts__WEBPACK_IMPORTED_MODULE_17__.SOURCE_TYPE.AUDIO ||\n // Is Audio\n (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_19__.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_3___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 aiHighlightsGraphSrc = source.config().url(\"\".concat(publicId), {\n transformation\n }).replace(/\\.json$/, ''); // Handle playlist by tag\n\n // Plugin is called differently on init and on source update.\n lodash_isFunction__WEBPACK_IMPORTED_MODULE_4___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_17__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref3) => {\n var _this$videojs$chapter;\n let {\n source\n } = _ref3;\n if ((!lodash_isEmpty__WEBPACK_IMPORTED_MODULE_1___default()(source === null || source === void 0 ? void 0 : source._chapters) || (source === null || source === void 0 ? void 0 : source._chapters) === true) && this.videojs.chapters) {\n lodash_isFunction__WEBPACK_IMPORTED_MODULE_4___default()(this.videojs.chapters) ? this.videojs.chapters(source._chapters) : this.videojs.chapters.src(source._chapters);\n } else if ((_this$videojs$chapter = this.videojs.chapters) !== null && _this$videojs$chapter !== void 0 && _this$videojs$chapter.resetPlugin) {\n this.videojs.chapters.resetPlugin();\n }\n });\n }\n _initInteractionAreas() {\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_17__.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_17__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref4) => {\n var _this$videojs$visualS;\n let {\n source\n } = _ref4;\n if (source !== null && source !== void 0 && source._visualSearch && this.videojs.visualSearch) {\n lodash_isFunction__WEBPACK_IMPORTED_MODULE_4___default()(this.videojs.visualSearch) ? this.videojs.visualSearch(source._visualSearch) : this.videojs.visualSearch.createSearchUI(source._visualSearch);\n } else if (!(source !== null && source !== void 0 && source._visualSearch) && (_this$videojs$visualS = this.videojs.visualSearch) !== null && _this$videojs$visualS !== void 0 && _this$videojs$visualS.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_17__.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 !== null && source !== void 0 && source._download && lodash_isFunction__WEBPACK_IMPORTED_MODULE_4___default()(this.videojs.share)) {\n this.videojs.share({\n download: true\n });\n }\n if (!lodash_isFunction__WEBPACK_IMPORTED_MODULE_4___default()(this.videojs.share)) {\n // Plugin already initialised – update UI accordingly\n if (source !== null && source !== void 0 && source._download) {\n var _this$videojs$share$a, _this$videojs$share;\n (_this$videojs$share$a = (_this$videojs$share = this.videojs.share).addDownloadButton) === null || _this$videojs$share$a === void 0 || _this$videojs$share$a.call(_this$videojs$share);\n } else {\n var _this$videojs$share$r, _this$videojs$share2;\n (_this$videojs$share$r = (_this$videojs$share2 = this.videojs.share).removeDownloadButton) === null || _this$videojs$share$r === void 0 || _this$videojs$share$r.call(_this$videojs$share2);\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_17__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref6) => {\n let {\n source\n } = _ref6;\n if (source !== null && source !== void 0 && 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_19__.extendCloudinaryConfig)(cloudinaryConfig, {\n secure: true\n });\n }\n\n // Merge cloudinary config with source config for the plugin\n const cloudinaryOptions = _objectSpread({\n cloudinaryConfig\n }, this.playerOptions.sourceOptions);\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_5___default()(this.playerOptions.cloudinaryAnalytics) ? this.playerOptions.cloudinaryAnalytics : {};\n this.videojs.cloudinaryAnalytics(options);\n }\n }\n _initSourceSwitcher() {\n var _this$playerOptions$s, _this$playerOptions$s2;\n this.sourceSwitcher = this.videojs.sourceSwitcher();\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_17__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref7) => {\n var _source$videoSources;\n let {\n source\n } = _ref7;\n const videoSources = (_source$videoSources = source.videoSources) === null || _source$videoSources === void 0 ? void 0 : _source$videoSources.call(source);\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 === null || element === void 0 ? void 0 : 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 } = _ref9,\n newSourceOptions = _objectWithoutProperties(_ref9, _excluded);\n return this.source(publicId, _objectSpread(_objectSpread({}, newSourceOptions), {}, {\n videoSources\n }));\n }\n });\n }\n });\n if (Array.isArray((_this$playerOptions$s = this.playerOptions.sourceOptions) === null || _this$playerOptions$s === void 0 ? void 0 : _this$playerOptions$s.videoSources) && (_this$playerOptions$s2 = this.playerOptions.sourceOptions) !== null && _this$playerOptions$s2 !== void 0 && _this$playerOptions$s2.videoSources.length) {\n // eslint-disable-next-line no-unused-vars\n const _this$playerOptions$s3 = this.playerOptions.sourceOptions.videoSources[0],\n {\n publicId,\n label\n } = _this$playerOptions$s3,\n videoSourceData = _objectWithoutProperties(_this$playerOptions$s3, _excluded2);\n this.source(publicId, _objectSpread(_objectSpread({}, 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_20__.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 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_20__.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_10__[\"default\"].contextMenu);\n }\n }\n _initFloatingPlayer() {\n if (this.playerOptions.floatingWhenNotVisible !== _video_player_const__WEBPACK_IMPORTED_MODULE_15__.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_9__[\"default\"].CLASS_PREFIX);\n this.videojs.addClass(_utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"].playerClassPrefix(this.videojs));\n _utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"].setSkinClassPrefix(this.videojs, _utils__WEBPACK_IMPORTED_MODULE_9__[\"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 _onSourceChange(e, _ref0) {\n var _source$resourceConfi;\n let {\n source,\n sourceOptions\n } = _ref0;\n this._sendInternalAnalytics(_objectSpread({}, sourceOptions && {\n sourceOptions\n }));\n this.isLiveStream = (source === null || source === void 0 || (_source$resourceConfi = source.resourceConfig()) === null || _source$resourceConfi === void 0 ? void 0 : _source$resourceConfi.type) === 'live';\n }\n _setExtendedEvents() {\n const events = [];\n if (this.playerOptions.playedEventPercents) {\n events.push({\n type: _utils_consts__WEBPACK_IMPORTED_MODULE_17__.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_17__.PLAYER_EVENT.TIME_PLAYED,\n times: this.playerOptions.playedEventTimes\n });\n }\n events.push(...[_utils_consts__WEBPACK_IMPORTED_MODULE_17__.PLAYER_EVENT.SEEK, _utils_consts__WEBPACK_IMPORTED_MODULE_17__.PLAYER_EVENT.MUTE, _utils_consts__WEBPACK_IMPORTED_MODULE_17__.PLAYER_EVENT.UNMUTE, _utils_consts__WEBPACK_IMPORTED_MODULE_17__.PLAYER_EVENT.QUALITY_CHANGED]);\n const extendedEvents = new _extended_events__WEBPACK_IMPORTED_MODULE_12__[\"default\"](this.videojs, {\n events\n });\n Object.keys(extendedEvents.events).forEach(_event => {\n const handler = (event, data) => {\n this.videojs.trigger({\n type: _event,\n eventData: data\n });\n };\n extendedEvents.on(_event, handler);\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_19__.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_16__.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_13__[\"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 = _objectSpread(_objectSpread({}, inherited), options);\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_6___default()(name)) {\n _utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"].setSkinClassPrefix(this.videojs, name);\n }\n return _utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"].skinClassPrefix(this.videojs);\n }\n playlist(sources) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.playerOptions.playlistWidget = _objectSpread(_objectSpread({}, 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_17__.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 = _objectSpread(_objectSpread({}, 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_17__.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_15__.FLUID_CLASS_NAME);\n } else {\n this.videojs.removeClass(_video_player_const__WEBPACK_IMPORTED_MODULE_15__.FLUID_CLASS_NAME);\n }\n this.videojs.fluid(bool);\n this.videojs.trigger(_utils_consts__WEBPACK_IMPORTED_MODULE_17__.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}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (VideoPlayer);\n\n//# sourceURL=webpack://cloudinary-video-player/./video-player.js?");
|
|
836
|
+
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 uuid__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! uuid */ \"../node_modules/uuid/dist/esm-browser/v4.js\");\n/* harmony import */ var lodash_isEmpty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/isEmpty */ \"../node_modules/lodash/isEmpty.js\");\n/* harmony import */ var lodash_isEmpty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_isEmpty__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/get */ \"../node_modules/lodash/get.js\");\n/* harmony import */ var lodash_get__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_get__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_pick__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/pick */ \"../node_modules/lodash/pick.js\");\n/* harmony import */ var lodash_pick__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_pick__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/isFunction */ \"../node_modules/lodash/isFunction.js\");\n/* harmony import */ var lodash_isFunction__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash/isObject */ \"../node_modules/lodash/isObject.js\");\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_isObject__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash/isString */ \"../node_modules/lodash/isString.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_isString__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _components__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components */ \"./components/index.js\");\n/* harmony import */ var _plugins__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./plugins */ \"./plugins/index.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utils */ \"./utils/index.js\");\n/* harmony import */ var _config_defaults__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./config/defaults */ \"./config/defaults.js\");\n/* harmony import */ var _mixins_eventable__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./mixins/eventable */ \"./mixins/eventable.js\");\n/* harmony import */ var _extended_events__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./extended-events */ \"./extended-events.js\");\n/* harmony import */ var _plugins_cloudinary_models_video_source_video_source__WEBPACK_IMPORTED_MODULE_13__ = __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_14__ = __webpack_require__(/*! ./video-player.utils */ \"./video-player.utils.js\");\n/* harmony import */ var _video_player_const__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./video-player.const */ \"./video-player.const.js\");\n/* harmony import */ var _validators_validators_functions__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./validators/validators-functions */ \"./validators/validators-functions.js\");\n/* harmony import */ var _utils_consts__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./utils/consts */ \"./utils/consts.js\");\n/* harmony import */ var _utils_get_analytics_player_options__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./utils/get-analytics-player-options */ \"./utils/get-analytics-player-options.js\");\n/* harmony import */ var _plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./plugins/cloudinary/common */ \"./plugins/cloudinary/common.js\");\n/* harmony import */ var _utils_video_retry__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./utils/video-retry */ \"./utils/video-retry.js\");\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_8__[\"default\"]).forEach(key => {\n video_js__WEBPACK_IMPORTED_MODULE_0___default().registerPlugin(key, _plugins__WEBPACK_IMPORTED_MODULE_8__[\"default\"][key]);\n});\n(0,_video_player_utils__WEBPACK_IMPORTED_MODULE_14__.overrideDefaultVideojsComponents)();\nclass VideoPlayer extends _utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"].mixin(_mixins_eventable__WEBPACK_IMPORTED_MODULE_11__[\"default\"]) {\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 super();\n this.videoElement = elem;\n this.options = (0,_video_player_utils__WEBPACK_IMPORTED_MODULE_14__.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_9__[\"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 this._isPlayerConfigValid = true;\n if (this.playerOptions.debug) {\n (0,_validators_validators_functions__WEBPACK_IMPORTED_MODULE_16__.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_21__[\"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_18__.getAnalyticsFromPlayerOptions)(options);\n const analyticsParams = new URLSearchParams(analyticsData).toString();\n const baseParams = new URLSearchParams({\n vpVersion: \"3.6.4-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 _setVideoJsListeners(ready) {\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_17__.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_17__.SOURCE_TYPE.AUDIO, _utils_consts__WEBPACK_IMPORTED_MODULE_17__.SOURCE_TYPE.VIDEO].includes(type)) {\n if (this.isLiveStream) {\n this.videojs.error({\n code: _plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_19__.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_9__[\"default\"].handleCldError(this, this.playerOptions);\n }\n } else {\n this._resetReTryVideoState();\n }\n }\n });\n this.videojs.tech_.on(_utils_consts__WEBPACK_IMPORTED_MODULE_17__.PLAYER_EVENT.RETRY_PLAYLIST, () => {\n const mediaRequestsErrored = lodash_get__WEBPACK_IMPORTED_MODULE_2___default()(this.videojs, 'hls.stats.mediaRequestsErrored', 0);\n if (mediaRequestsErrored > 0) {\n this._resetReTryVideoState();\n _utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"].handleCldError(this, this.playerOptions);\n }\n });\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_17__.PLAYER_EVENT.PLAY, this._resetReTryVideoState);\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_17__.PLAYER_EVENT.CAN_PLAY_THROUGH, this._resetReTryVideoState);\n this.videojs.on(_utils_consts__WEBPACK_IMPORTED_MODULE_17__.PLAYER_EVENT.CLD_SOURCE_CHANGED, this._onSourceChange.bind(this));\n this.videojs.ready(() => {\n this._onReady();\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_8__[\"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_17__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref) => {\n let {\n source\n } = _ref;\n if (!source || source.getType() === _utils_consts__WEBPACK_IMPORTED_MODULE_17__.SOURCE_TYPE.AUDIO ||\n // Is Audio\n source.resourceConfig().type === 'live' ||\n // Is live stream\n (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_19__.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 = Object.assign({}, source.transformation());\n if (transformation) {\n delete transformation.streaming_profile;\n delete transformation.video_codec;\n }\n transformation.flags = transformation.flags || [];\n transformation.flags.push('sprite');\n const vttSrc = source.config().url(`${publicId}.vtt`, {\n transformation\n }).replace(/\\.json$/, ''); // Handle playlist by tag\n\n // vttThumbnails must be called differently on init and on source update.\n lodash_isFunction__WEBPACK_IMPORTED_MODULE_4___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_17__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref2) => {\n let {\n source\n } = _ref2;\n if (!source || source.getType() === _utils_consts__WEBPACK_IMPORTED_MODULE_17__.SOURCE_TYPE.AUDIO ||\n // Is Audio\n (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_19__.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_3___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 aiHighlightsGraphSrc = source.config().url(`${publicId}`, {\n transformation\n }).replace(/\\.json$/, ''); // Handle playlist by tag\n\n // Plugin is called differently on init and on source update.\n lodash_isFunction__WEBPACK_IMPORTED_MODULE_4___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_17__.PLAYER_EVENT.CLD_SOURCE_CHANGED, (e, _ref3) => {\n let {\n source\n } = _ref3;\n if ((!lodash_isEmpty__WEBPACK_IMPORTED_MODULE_1___default()(source?._chapters) || source?._chapters === true) && this.videojs.chapters) {\n lodash_isFunction__WEBPACK_IMPORTED_MODULE_4___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_17__.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_17__.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_4___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_17__.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_4___default()(this.videojs.share)) {\n this.videojs.share({\n download: true\n });\n }\n if (!lodash_isFunction__WEBPACK_IMPORTED_MODULE_4___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_17__.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_19__.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_5___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_17__.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_20__.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_20__.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_10__[\"default\"].contextMenu);\n }\n }\n _initFloatingPlayer() {\n if (this.playerOptions.floatingWhenNotVisible !== _video_player_const__WEBPACK_IMPORTED_MODULE_15__.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_9__[\"default\"].CLASS_PREFIX);\n this.videojs.addClass(_utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"].playerClassPrefix(this.videojs));\n _utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"].setSkinClassPrefix(this.videojs, _utils__WEBPACK_IMPORTED_MODULE_9__[\"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 _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 if (this.playerOptions.playedEventPercents) {\n events.push({\n type: _utils_consts__WEBPACK_IMPORTED_MODULE_17__.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_17__.PLAYER_EVENT.TIME_PLAYED,\n times: this.playerOptions.playedEventTimes\n });\n }\n events.push(...[_utils_consts__WEBPACK_IMPORTED_MODULE_17__.PLAYER_EVENT.SEEK, _utils_consts__WEBPACK_IMPORTED_MODULE_17__.PLAYER_EVENT.MUTE, _utils_consts__WEBPACK_IMPORTED_MODULE_17__.PLAYER_EVENT.UNMUTE, _utils_consts__WEBPACK_IMPORTED_MODULE_17__.PLAYER_EVENT.QUALITY_CHANGED]);\n const extendedEvents = new _extended_events__WEBPACK_IMPORTED_MODULE_12__[\"default\"](this.videojs, {\n events\n });\n Object.keys(extendedEvents.events).forEach(_event => {\n const handler = (event, data) => {\n this.videojs.trigger({\n type: _event,\n eventData: data\n });\n };\n extendedEvents.on(_event, handler);\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_19__.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_16__.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_13__[\"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_6___default()(name)) {\n _utils__WEBPACK_IMPORTED_MODULE_9__[\"default\"].setSkinClassPrefix(this.videojs, name);\n }\n return _utils__WEBPACK_IMPORTED_MODULE_9__[\"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_17__.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_17__.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_15__.FLUID_CLASS_NAME);\n } else {\n this.videojs.removeClass(_video_player_const__WEBPACK_IMPORTED_MODULE_15__.FLUID_CLASS_NAME);\n }\n this.videojs.fluid(bool);\n this.videojs.trigger(_utils_consts__WEBPACK_IMPORTED_MODULE_17__.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}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (VideoPlayer);\n\n//# sourceURL=webpack://cloudinary-video-player/./video-player.js?");
|
|
837
837
|
|
|
838
838
|
/***/ }),
|
|
839
839
|
|
|
@@ -844,7 +844,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
844
844
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
845
845
|
|
|
846
846
|
"use strict";
|
|
847
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ addMetadataTrack: () => (/* binding */ addMetadataTrack),\n/* harmony export */ extractOptions: () => (/* binding */ extractOptions),\n/* harmony export */ getResolveVideoElement: () => (/* binding */ getResolveVideoElement),\n/* harmony export */ isLight: () => (/* binding */ isLight),\n/* harmony export */ normalizeAutoplay: () => (/* binding */ normalizeAutoplay),\n/* harmony export */ overrideDefaultVideojsComponents: () => (/* binding */ overrideDefaultVideojsComponents),\n/* harmony export */ splitOptions: () => (/* binding */ splitOptions)\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 lodash_pick__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/pick */ \"../node_modules/lodash/pick.js\");\n/* harmony import */ var lodash_pick__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_pick__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ \"./utils/index.js\");\n/* harmony import */ var _video_player_const__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./video-player.const */ \"./video-player.const.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/isString */ \"../node_modules/lodash/isString.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_isString__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/object */ \"./utils/object.js\");\n/* harmony import */ var css_escape__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! css.escape */ \"../node_modules/css.escape/css.escape.js\");\n/* harmony import */ var css_escape__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(css_escape__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\n\n/*\n* Used to escape element identifiers that begin with certain\n* characters such as digits.\n* https://www.w3.org/International/questions/qa-escapes#css_identifiers\n*/\n\nconst addMetadataTrack = (videoJs, vttSource) => {\n return videoJs.addRemoteTextTrack({\n kind: 'metadata',\n srclang: 'en',\n src: vttSource,\n default: true\n }, true).track;\n};\nconst isLight = opts => {\n return opts.class.indexOf('cld-video-player-skin-light') > -1 || opts.skin === 'light';\n};\nconst getResolveVideoElement = elem => {\n if (lodash_isString__WEBPACK_IMPORTED_MODULE_4___default()(elem)) {\n let id = elem;\n\n // Adjust for jQuery ID syntax\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n try {\n elem = document.querySelector(
|
|
847
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ addMetadataTrack: () => (/* binding */ addMetadataTrack),\n/* harmony export */ extractOptions: () => (/* binding */ extractOptions),\n/* harmony export */ getResolveVideoElement: () => (/* binding */ getResolveVideoElement),\n/* harmony export */ isLight: () => (/* binding */ isLight),\n/* harmony export */ normalizeAutoplay: () => (/* binding */ normalizeAutoplay),\n/* harmony export */ overrideDefaultVideojsComponents: () => (/* binding */ overrideDefaultVideojsComponents),\n/* harmony export */ splitOptions: () => (/* binding */ splitOptions)\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 lodash_pick__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/pick */ \"../node_modules/lodash/pick.js\");\n/* harmony import */ var lodash_pick__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_pick__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ \"./utils/index.js\");\n/* harmony import */ var _video_player_const__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./video-player.const */ \"./video-player.const.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/isString */ \"../node_modules/lodash/isString.js\");\n/* harmony import */ var lodash_isString__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_isString__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/object */ \"./utils/object.js\");\n/* harmony import */ var css_escape__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! css.escape */ \"../node_modules/css.escape/css.escape.js\");\n/* harmony import */ var css_escape__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(css_escape__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\n\n/*\n* Used to escape element identifiers that begin with certain\n* characters such as digits.\n* https://www.w3.org/International/questions/qa-escapes#css_identifiers\n*/\n\nconst addMetadataTrack = (videoJs, vttSource) => {\n return videoJs.addRemoteTextTrack({\n kind: 'metadata',\n srclang: 'en',\n src: vttSource,\n default: true\n }, true).track;\n};\nconst isLight = opts => {\n return opts.class.indexOf('cld-video-player-skin-light') > -1 || opts.skin === 'light';\n};\nconst getResolveVideoElement = elem => {\n if (lodash_isString__WEBPACK_IMPORTED_MODULE_4___default()(elem)) {\n let id = elem;\n\n // Adjust for jQuery ID syntax\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n try {\n elem = document.querySelector(`#${css_escape__WEBPACK_IMPORTED_MODULE_6___default()(id)}`) || video_js__WEBPACK_IMPORTED_MODULE_0___default().getPlayer(id);\n } catch (err) {\n // eslint-disable-line no-unused-vars\n elem = null;\n }\n if (!elem) {\n throw new Error(`Could not find element with id ${id}`);\n }\n }\n if (!elem.tagName) {\n throw new Error('Must specify either an element or an element id.');\n } else if (elem.tagName !== 'VIDEO') {\n throw new Error('Element is not a video tag.');\n }\n return elem;\n};\nconst normalizeAutoplay = options => {\n const autoplayMode = options.autoplayMode;\n if (autoplayMode) {\n switch (autoplayMode) {\n case _video_player_const__WEBPACK_IMPORTED_MODULE_3__.AUTO_PLAY_MODE.ALWAYS:\n options.autoplay = true;\n break;\n case _video_player_const__WEBPACK_IMPORTED_MODULE_3__.AUTO_PLAY_MODE.ON_SCROLL:\n case _video_player_const__WEBPACK_IMPORTED_MODULE_3__.AUTO_PLAY_MODE.NEVER:\n default:\n options.autoplay = false;\n }\n }\n};\nconst extractOptions = (elem, options) => {\n const elemOptions = _utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].normalizeAttributes(elem);\n if (video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.hasClass(elem, _video_player_const__WEBPACK_IMPORTED_MODULE_3__.FLUID_CLASS_NAME) || video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.hasClass(elem, 'vjs-fluid')) {\n options.fluid = true;\n }\n\n // Extract cloudinaryConfig from playerOptions if not explicitly provided\n if (!options.cloudinaryConfig) {\n const snakeCaseCloudinaryConfig = lodash_pick__WEBPACK_IMPORTED_MODULE_1___default()((0,_utils_object__WEBPACK_IMPORTED_MODULE_5__.convertKeysToSnakeCase)(options), _video_player_const__WEBPACK_IMPORTED_MODULE_3__.CLOUDINARY_CONFIG_PARAM);\n if (Object.keys(snakeCaseCloudinaryConfig).length > 0) {\n options.cloudinaryConfig = snakeCaseCloudinaryConfig;\n }\n }\n return video_js__WEBPACK_IMPORTED_MODULE_0___default().obj.merge({}, elemOptions, options);\n};\nconst splitOptions = flatOptions => {\n const options = Object.assign({}, flatOptions);\n\n // In case of 'autoplay on scroll', we need to make sure normal HTML5 autoplay is off\n normalizeAutoplay(options);\n\n // VideoPlayer specific options\n const playerOptions = _utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].sliceAndUnsetProperties(options, ..._video_player_const__WEBPACK_IMPORTED_MODULE_3__.PLAYER_PARAMS);\n\n // Cloudinary SDK config (cloud_name, secure, etc.)\n playerOptions.cloudinary = _utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].sliceAndUnsetProperties(playerOptions, ..._video_player_const__WEBPACK_IMPORTED_MODULE_3__.CLOUDINARY_CONFIG_PARAM);\n\n // Merge with cloudinaryConfig from src/index.js (e.g., secureDistribution -> secure_distribution)\n if (playerOptions.cloudinaryConfig) {\n Object.assign(playerOptions.cloudinary, playerOptions.cloudinaryConfig);\n delete playerOptions.cloudinaryConfig;\n }\n\n // Source-level config (visualSearch, chapters, etc.)\n playerOptions.sourceOptions = _utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].sliceAndUnsetProperties(playerOptions, ..._video_player_const__WEBPACK_IMPORTED_MODULE_3__.SOURCE_PARAMS);\n\n // Allow explicitly passing options to videojs using the `videojs` namespace, in order\n // to avoid param name conflicts:\n // VideoPlayer.new({ controls: true, videojs: { controls: false })\n if (options.videojs) {\n Object.assign(options, options.videojs);\n delete options.videojs;\n }\n return {\n playerOptions,\n videojsOptions: options\n };\n};\nconst overrideDefaultVideojsComponents = () => {\n const Player = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('Player');\n let children = Player.prototype.options_.children;\n if (children.indexOf('titleBar') === -1) {\n children.push('titleBar');\n }\n const ControlBar = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('ControlBar');\n if (ControlBar) {\n children = ControlBar.prototype.options_.children;\n\n // Add space instead of the progress control (which we detached from the controlBar, and absolutely positioned it above it)\n // Also add a blank div underneath the progress control to stop bubbling up pointer events.\n children.splice(children.indexOf('progressControl'), 0, 'spacer', 'progressControlEventsBlocker');\n\n // Add skip buttons around the 'play-toggle'\n children.splice(children.indexOf('playToggle'), 1, 'playToggle', 'JumpBackButton', 'JumpForwardButton');\n children.splice(children.indexOf('chaptersButton'), 1, 'sourceSwitcherButton', 'chaptersButton');\n\n // Position the 'logo-button' button last\n children.push('logoButton');\n\n // Remove these button\n children.splice(children.indexOf('skipForward'), 1);\n children.splice(children.indexOf('skipBackward'), 1);\n }\n};\n\n//# sourceURL=webpack://cloudinary-video-player/./video-player.utils.js?");
|
|
848
848
|
|
|
849
849
|
/***/ }),
|
|
850
850
|
|
|
@@ -3157,7 +3157,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3157
3157
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
3158
3158
|
|
|
3159
3159
|
"use strict";
|
|
3160
|
-
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 _native_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./native.js */ \"../node_modules/uuid/dist/esm-browser/native.js\");\n/* harmony import */ var _rng_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rng.js */ \"../node_modules/uuid/dist/esm-browser/rng.js\");\n/* harmony import */ var _stringify_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stringify.js */ \"../node_modules/uuid/dist/esm-browser/stringify.js\");\n\n\n\nfunction v4(options, buf, offset) {\n if (_native_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].randomUUID && !buf && !options) {\n return _native_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].randomUUID();\n }\n options = options || {};\n const rnds = options.random
|
|
3160
|
+
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 _native_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./native.js */ \"../node_modules/uuid/dist/esm-browser/native.js\");\n/* harmony import */ var _rng_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rng.js */ \"../node_modules/uuid/dist/esm-browser/rng.js\");\n/* harmony import */ var _stringify_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stringify.js */ \"../node_modules/uuid/dist/esm-browser/stringify.js\");\n\n\n\nfunction v4(options, buf, offset) {\n if (_native_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].randomUUID && !buf && !options) {\n return _native_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? (0,_rng_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return (0,_stringify_js__WEBPACK_IMPORTED_MODULE_2__.unsafeStringify)(rnds);\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (v4);\n\n\n//# sourceURL=webpack://cloudinary-video-player/../node_modules/uuid/dist/esm-browser/v4.js?");
|
|
3161
3161
|
|
|
3162
3162
|
/***/ }),
|
|
3163
3163
|
|