cloudinary-video-player 3.5.3-edge.1 → 3.5.3-edge.13

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.
Files changed (44) hide show
  1. package/dist/adaptive-streaming.js +2 -2
  2. package/dist/adaptive-streaming.min.js +2 -2
  3. package/dist/chapters.js +2 -2
  4. package/dist/chapters.min.js +3 -3
  5. package/dist/cld-video-player.css +23 -22
  6. package/dist/cld-video-player.js +25 -36
  7. package/dist/cld-video-player.light.js +25 -36
  8. package/dist/cld-video-player.light.min.js +4 -4
  9. package/dist/cld-video-player.min.css +3 -3
  10. package/dist/cld-video-player.min.js +4 -4
  11. package/dist/colors.js +2 -2
  12. package/dist/colors.min.js +3 -3
  13. package/dist/dash.js +2 -2
  14. package/dist/dash.min.js +2 -2
  15. package/dist/debug.js +2 -2
  16. package/dist/debug.min.js +2 -2
  17. package/dist/ima.js +2 -2
  18. package/dist/ima.min.js +2 -2
  19. package/dist/interaction-areas.js +2 -2
  20. package/dist/interaction-areas.min.js +3 -3
  21. package/dist/node_modules_lodash_throttle_js.js +2 -2
  22. package/dist/playlist.js +2 -2
  23. package/dist/playlist.min.js +3 -3
  24. package/dist/recommendations-overlay.js +2 -2
  25. package/dist/recommendations-overlay.min.js +2 -2
  26. package/dist/schema.json +4 -0
  27. package/dist/share.js +2 -2
  28. package/dist/share.min.js +3 -3
  29. package/dist/shoppable.js +2 -2
  30. package/dist/shoppable.min.js +2 -2
  31. package/dist/visual-search.js +2 -2
  32. package/dist/visual-search.min.js +2 -2
  33. package/lib/all.js +1 -1
  34. package/lib/chapters.js +1 -1
  35. package/lib/cld-video-player.js +1 -1
  36. package/lib/cld-video-player.min.css +2 -3
  37. package/lib/colors.js +1 -1
  38. package/lib/interaction-areas.js +1 -1
  39. package/lib/player.js +1 -1
  40. package/lib/playlist.js +1 -1
  41. package/lib/schema.json +4 -0
  42. package/lib/share.js +1 -1
  43. package/lib/videoPlayer.js +1 -1
  44. package/package.json +5 -1
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * Cloudinary Video Player v3.5.3-edge.1
3
- * Built on 2025-12-01T11:07:53.079Z
2
+ * Cloudinary Video Player v3.5.3-edge.13
3
+ * Built on 2025-12-10T12:39:16.482Z
4
4
  * https://github.com/cloudinary/cloudinary-video-player
5
5
  */
6
6
  /*
@@ -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/* harmony import */ var _source_switcher_button_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./source-switcher-button.scss */ \"./components/source-switcher-button/source-switcher-button.scss\");\n\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 }\n buildCSSClass() {\n const empty = !Array.isArray(this._items) || this._items.length === 0;\n return \"vjs-source-switcher-button\".concat(empty ? ' vjs-source-switcher-disabled' : '', \" \").concat(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?");
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\".concat(empty ? ' vjs-source-switcher-disabled' : '', \" \").concat(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
 
@@ -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 (!(config !== null && config !== void 0 && 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 = \"\".concat(urlPrefix, \"/_applet_/video_service/video_metadata/\").concat(deliveryType, \"/\").concat((0,_utils_utf8Base64__WEBPACK_IMPORTED_MODULE_3__.utf8ToBase64)(publicId), \".json\");\n fetch(metadataUrl, {\n headers: {\n 'X-Cld-Video-Player-Version': \"3.5.3-edge.1\"\n }\n }).then(response => {\n if (!response.ok) throw new Error(\"HTTP \".concat(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 \".concat(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?");
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 !== null && config !== void 0 && 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 = \"\".concat(urlPrefix, \"/_applet_/video_service/video_metadata/\").concat(deliveryType, \"/\").concat((0,_utils_utf8Base64__WEBPACK_IMPORTED_MODULE_3__.utf8ToBase64)(publicId), \".json\");\n fetch(metadataUrl, {\n headers: {\n 'X-Cld-Video-Player-Version': \"3.5.3-edge.13\"\n }\n }).then(response => {\n if (!response.ok) throw new Error(\"HTTP \".concat(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 \".concat(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
 
@@ -151,7 +151,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
151
151
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
152
152
 
153
153
  "use strict";
154
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _plugins_context_menu_contextMenuContent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../plugins/context-menu/contextMenuContent */ \"./plugins/context-menu/contextMenuContent.js\");\n/* harmony import */ var _video_player_const__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../video-player.const */ \"./video-player.const.js\");\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n logoOnclickUrl: 'https://cloudinary.com/',\n showLogo: true,\n showJumpControls: false,\n playsinline: (video_js__WEBPACK_IMPORTED_MODULE_0___default().browser).IS_IOS,\n skin: 'dark',\n controls: false,\n chaptersButton: false,\n pictureInPictureToggle: false,\n seekThumbnails: true,\n aiHighlightsGraph: false,\n visualSearch: false,\n download: false,\n preload: _video_player_const__WEBPACK_IMPORTED_MODULE_2__.PRELOAD.AUTO,\n textTrackSettings: false,\n loop: false,\n muted: false,\n posterOptions: {},\n sourceTypes: ['auto'],\n contextMenu: {\n content: _plugins_context_menu_contextMenuContent__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n floatingWhenNotVisible: _video_player_const__WEBPACK_IMPORTED_MODULE_2__.FLOATING_TO.NONE,\n hideContextMenu: false,\n analytics: false,\n cloudinaryAnalytics: true,\n allowUsageReport: true,\n playedEventPercents: [25, 50, 75, 100],\n adaptiveStreaming: {\n strategy: 'balanced'\n },\n html5: {\n handlePartialData: false,\n nativeTextTracks: false\n },\n disableSeekWhileScrubbingOnMobile: true\n});\n\n//# sourceURL=webpack://cloudinary-video-player/./config/defaults.js?");
154
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _plugins_context_menu_contextMenuContent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../plugins/context-menu/contextMenuContent */ \"./plugins/context-menu/contextMenuContent.js\");\n/* harmony import */ var _video_player_const__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../video-player.const */ \"./video-player.const.js\");\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n logoOnclickUrl: 'https://cloudinary.com/',\n showLogo: true,\n showJumpControls: false,\n playsinline: (video_js__WEBPACK_IMPORTED_MODULE_0___default().browser).IS_IOS,\n skin: 'dark',\n controls: false,\n chaptersButton: false,\n pictureInPictureToggle: false,\n seekThumbnails: true,\n aiHighlightsGraph: false,\n visualSearch: false,\n download: false,\n preload: _video_player_const__WEBPACK_IMPORTED_MODULE_2__.PRELOAD.AUTO,\n textTrackSettings: false,\n loop: false,\n muted: false,\n posterOptions: {},\n sourceTypes: ['auto'],\n contextMenu: {\n content: _plugins_context_menu_contextMenuContent__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n },\n floatingWhenNotVisible: _video_player_const__WEBPACK_IMPORTED_MODULE_2__.FLOATING_TO.NONE,\n hideContextMenu: false,\n analytics: false,\n cloudinaryAnalytics: true,\n allowUsageReport: true,\n videoConfig: true,\n playedEventPercents: [25, 50, 75, 100],\n adaptiveStreaming: {\n strategy: 'balanced'\n },\n html5: {\n handlePartialData: false,\n nativeTextTracks: false\n },\n disableSeekWhileScrubbingOnMobile: true\n});\n\n//# sourceURL=webpack://cloudinary-video-player/./config/defaults.js?");
155
155
 
156
156
  /***/ }),
157
157
 
@@ -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 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 _video_player__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./video-player */ \"./video-player.js\");\n/* harmony import */ var _player__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./player */ \"./player.js\");\n/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/object */ \"./utils/object.js\");\n/* harmony import */ var _video_player_const__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./video-player.const */ \"./video-player.const.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\nconst getConfig = function () {\n let playerOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let cloudinaryConfig = arguments.length > 1 ? arguments[1] : undefined;\n const snakeCaseCloudinaryConfig = lodash_pick__WEBPACK_IMPORTED_MODULE_1___default()((0,_utils_object__WEBPACK_IMPORTED_MODULE_4__.convertKeysToSnakeCase)(playerOptions), _video_player_const__WEBPACK_IMPORTED_MODULE_5__.CLOUDINARY_CONFIG_PARAM);\n\n // pick cld-configurations and assign them to cloudinaryConfig\n return Object.assign(playerOptions, {\n cloudinaryConfig: cloudinaryConfig || snakeCaseCloudinaryConfig\n });\n};\nconst getVideoPlayer = config => (id, playerOptions, ready) => new _video_player__WEBPACK_IMPORTED_MODULE_2__[\"default\"](id, getConfig(playerOptions, config), ready);\nconst getVideoPlayers = config => (selector, playerOptions, ready) => _video_player__WEBPACK_IMPORTED_MODULE_2__[\"default\"].all(selector, getConfig(playerOptions, config), ready);\nconst getPlayer = config => (id, playerOptions, ready) => (0,_player__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(id, getConfig(playerOptions, config), ready);\nconst getPlayers = config => (selector, playerOptions, ready) => {\n const nodeList = document.querySelectorAll(selector);\n const playerConfig = getConfig(playerOptions, config);\n return [...nodeList].map(node => (0,_player__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(node, playerConfig, ready));\n};\nconst videoPlayer = getVideoPlayer();\nconst videoPlayers = getVideoPlayers();\nconst player = getPlayer();\nconst players = getPlayers();\nconst cloudinaryVideoPlayerLegacyConfig = config => {\n console.warn('Cloudinary.new() is deprecated and will be removed. Please use cloudinary.videoPlayer() instead.');\n return {\n videoPlayer: getVideoPlayer(config),\n videoPlayers: getVideoPlayers(config)\n };\n};\nconst cloudinary = _objectSpread(_objectSpread({}, 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?");
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\");\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\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 = _objectSpread(_objectSpread({}, 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
 
@@ -188,17 +188,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
188
188
 
189
189
  /***/ }),
190
190
 
191
- /***/ "./player.js":
192
- /*!*******************!*\
193
- !*** ./player.js ***!
194
- \*******************/
195
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
196
-
197
- "use strict";
198
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ getProfile: () => (/* binding */ getProfile)\n/* harmony export */ });\n/* harmony import */ var _video_player__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./video-player */ \"./video-player.js\");\n/* harmony import */ var cloudinary_video_player_profiles__WEBPACK_IMPORTED_MODULE_1__ = __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_1___default = /*#__PURE__*/__webpack_require__.n(cloudinary_video_player_profiles__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./plugins/cloudinary/common */ \"./plugins/cloudinary/common.js\");\nconst _excluded = [\"profile\"];\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; }\n\n\n\nconst isDefaultProfile = profileName => !!cloudinary_video_player_profiles__WEBPACK_IMPORTED_MODULE_1__.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_1__.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 \".concat(profileName, \" does not exist\"));\n }\n return profile.config;\n};\nconst getProfile = async (profile, initOptions) => {\n if (isDefaultProfile(profile)) {\n return getDefaultProfileConfig(profile);\n }\n const urlPrefix = (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_2__.getCloudinaryUrlPrefix)(initOptions.cloudinaryConfig);\n const profileUrl = (0,_plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_2__.isRawUrl)(profile) ? profile : \"\".concat(urlPrefix, \"/_applet_/video_service/video_player_profiles/\").concat(profile.replaceAll(' ', '+'), \".json\");\n return fetch(profileUrl, {\n method: 'GET'\n }).then(res => res.json());\n};\nconst player = async (elem, initOptions, ready) => {\n const {\n profile\n } = initOptions,\n otherInitOptions = _objectWithoutProperties(initOptions, _excluded);\n try {\n const profileOptions = profile ? await getProfile(profile, otherInitOptions) : {};\n const options = Object.assign({}, profileOptions.playerOptions, profileOptions.sourceOptions, otherInitOptions, {\n _internalAnalyticsMetadata: {\n newPlayerMethod: true,\n profile: isDefaultProfile(profile) ? profile : !!profile\n }\n });\n const videoPlayer = new _video_player__WEBPACK_IMPORTED_MODULE_0__[\"default\"](elem, options, ready);\n const nativeVideoPlayerSourceMethod = videoPlayer.source;\n videoPlayer.source = (id, options) => {\n const extendedOptions = Object.assign({}, profileOptions.sourceOptions, options);\n return nativeVideoPlayerSourceMethod.call(videoPlayer, id, extendedOptions);\n };\n return videoPlayer;\n } catch (e) {\n const videoPlayer = new _video_player__WEBPACK_IMPORTED_MODULE_0__[\"default\"](elem, otherInitOptions);\n videoPlayer.videojs.error('Invalid profile');\n throw e;\n }\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (player);\n\n//# sourceURL=webpack://cloudinary-video-player/./player.js?");
199
-
200
- /***/ }),
201
-
202
191
  /***/ "./plugins/adaptive-streaming/index.js":
203
192
  /*!*********************************************!*\
204
193
  !*** ./plugins/adaptive-streaming/index.js ***!
@@ -261,7 +250,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
261
250
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
262
251
 
263
252
  "use strict";
264
- 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\");\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\nclass CloudinaryAnalytics {\n constructor(player, options) {\n _defineProperty(this, \"getMetadata\", () => ({\n cloudName: this.player.cloudinary.cloudinaryConfig().cloud_name,\n publicId: this.player.cloudinary.currentPublicId()\n }));\n _defineProperty(this, \"sourceChanged\", (e, _ref) => {\n let {\n source\n } = _ref;\n const metadata = this.getMetadata();\n if (metadata.cloudName && metadata.publicId) {\n const isLiveStream = (source === null || source === void 0 ? void 0 : source.resourceConfig().type) === 'live';\n this.currentVideoMetadata = metadata;\n this.cloudinaryAnalytics.startManualTracking(_objectSpread(_objectSpread({}, metadata), isLiveStream ? {\n type: 'live'\n } : {}), _objectSpread(_objectSpread({}, lodash_isPlainObject__WEBPACK_IMPORTED_MODULE_0___default()(this.analyticsOptions) ? this.analyticsOptions : {}), {}, {\n videoPlayerType: 'cloudinary video player',\n videoPlayerVersion: \"3.5.3-edge.1\"\n }));\n } else if (this.currentVideoMetadata.cloudName !== metadata.cloudName || this.currentVideoMetadata.publicId !== metadata.publicId) {\n this.cloudinaryAnalytics.stopManualTracking();\n }\n });\n _defineProperty(this, \"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 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 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?");
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\");\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\nclass CloudinaryAnalytics {\n constructor(player, options) {\n _defineProperty(this, \"getMetadata\", () => ({\n cloudName: this.player.cloudinary.cloudinaryConfig().cloud_name,\n publicId: this.player.cloudinary.currentPublicId()\n }));\n _defineProperty(this, \"sourceChanged\", (e, _ref) => {\n let {\n source\n } = _ref;\n const metadata = this.getMetadata();\n if (metadata.cloudName && metadata.publicId) {\n const isLiveStream = (source === null || source === void 0 ? void 0 : source.resourceConfig().type) === 'live';\n this.currentVideoMetadata = metadata;\n this.cloudinaryAnalytics.startManualTracking(_objectSpread(_objectSpread({}, metadata), isLiveStream ? {\n type: 'live'\n } : {}), _objectSpread(_objectSpread({}, lodash_isPlainObject__WEBPACK_IMPORTED_MODULE_0___default()(this.analyticsOptions) ? this.analyticsOptions : {}), {}, {\n videoPlayerType: 'cloudinary video player',\n videoPlayerVersion: \"3.5.3-edge.13\"\n }));\n } else if (this.currentVideoMetadata.cloudName !== metadata.cloudName || this.currentVideoMetadata.publicId !== metadata.publicId) {\n this.cloudinaryAnalytics.stopManualTracking();\n }\n });\n _defineProperty(this, \"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 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 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?");
265
254
 
266
255
  /***/ }),
267
256
 
@@ -294,7 +283,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
294
283
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
295
284
 
296
285
  "use strict";
297
- 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 options.poster = options.poster || posterOptionsForCurrent();\n options.queryParams = Object.assign(options.queryParams || {}, options.allowUsageReport ? {\n _s: \"vp-\".concat(\"3.5.3-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; \".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\");\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.5.3-edge.13\")\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?");
298
287
 
299
288
  /***/ }),
300
289
 
@@ -360,7 +349,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
360
349
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
361
350
 
362
351
  "use strict";
363
- 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 _base_source__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../base-source */ \"./plugins/cloudinary/models/base-source.js\");\n/* harmony import */ var _image_source__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../image-source */ \"./plugins/cloudinary/models/image-source.js\");\n\n\n\n\n\n\n\n\n\nlet objectId = 0;\nconst generateId = () => objectId++;\nclass VideoSource extends _base_source__WEBPACK_IMPORTED_MODULE_7__[\"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_8__[\"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 this._poster = new _image_source__WEBPACK_IMPORTED_MODULE_8__[\"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 = \"_\".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?");
364
353
 
365
354
  /***/ }),
366
355
 
@@ -415,7 +404,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
415
404
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
416
405
 
417
406
  "use strict";
418
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nconst contextMenuContent = player => {\n const isLooping = player.loop();\n const isPaused = player.paused();\n const isMuted = player.muted();\n const isFullscreen = player.isFullscreen();\n const aboutMenuItem = {\n class: 'player-version',\n label: 'Cloudinary Player v' + \"3.5.3-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?");
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.5.3-edge.13\"\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?");
419
408
 
420
409
  /***/ }),
421
410
 
@@ -683,6 +672,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
683
672
 
684
673
  /***/ }),
685
674
 
675
+ /***/ "./utils/fetch-config.js":
676
+ /*!*******************************!*\
677
+ !*** ./utils/fetch-config.js ***!
678
+ \*******************************/
679
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
680
+
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\");\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\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 \".concat(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 : \"\".concat(urlPrefix, \"/video_player_profiles/\").concat(profile.replaceAll(' ', '+'), \".json\");\n } else if (publicId && videoConfig !== false) {\n configUrl = \"\".concat(urlPrefix, \"/video_player_config/video/\").concat(type, \"/\").concat((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: _objectSpread(_objectSpread(_objectSpread({\n newPlayerMethod: true\n }, options.profile ? {\n profile: isDefaultProfile(options.profile) ? options.profile : true\n } : {}), !options.profile && options.videoConfig !== false && options.publicId ? {\n videoConfig: true\n } : {}), fetchedConfig.length > 0 ? {\n fetchedConfig: fetchedConfig.join(',')\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
+
684
+ /***/ }),
685
+
686
686
  /***/ "./utils/find.js":
687
687
  /*!***********************!*\
688
688
  !*** ./utils/find.js ***!
@@ -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__);\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/isObject */ \"../node_modules/lodash/isObject.js\");\n/* harmony import */ var lodash_isObject__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_isObject__WEBPACK_IMPORTED_MODULE_2__);\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\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$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 posterOptions: hasConfig(sourceOptions.posterOptions),\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: !!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 || [])];\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: !!playerOptions.cloudinaryAnalytics,\n cloudinaryAnalyticsOptions: lodash_isObject__WEBPACK_IMPORTED_MODULE_2___default()(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: playerOptions.colors && JSON.stringify(playerOptions.colors),\n controlBar: JSON.stringify(playerOptions.controlBar) !== JSON.stringify(config_defaults__WEBPACK_IMPORTED_MODULE_0__[\"default\"].controlBar) && JSON.stringify(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__);\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?");
716
716
 
717
717
  /***/ }),
718
718
 
@@ -822,7 +822,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
822
822
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
823
823
 
824
824
  "use strict";
825
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ADS_IN_PLAYLIST: () => (/* binding */ ADS_IN_PLAYLIST),\n/* harmony export */ AUTO_PLAY_MODE: () => (/* binding */ AUTO_PLAY_MODE),\n/* harmony export */ CLOUDINARY_CONFIG_PARAM: () => (/* binding */ CLOUDINARY_CONFIG_PARAM),\n/* harmony export */ FLOATING_TO: () => (/* binding */ FLOATING_TO),\n/* harmony export */ FLUID_CLASS_NAME: () => (/* binding */ FLUID_CLASS_NAME),\n/* harmony export */ PLAYER_PARAMS: () => (/* binding */ PLAYER_PARAMS),\n/* harmony export */ PRELOAD: () => (/* binding */ PRELOAD),\n/* harmony export */ SOURCE_PARAMS: () => (/* binding */ SOURCE_PARAMS)\n/* harmony export */ });\n// Parameters that can be passed to source configuration (inherited by source method)\nconst SOURCE_PARAMS = ['adaptiveStreaming', 'allowUsageReport', 'autoShowRecommendations', 'chapters', 'cloudinaryConfig', 'description', 'download', 'info', 'interactionAreas', 'poster', 'posterOptions', 'publicId', 'rawTransformation', 'recommendations', 'resourceType', 'shoppable', 'source', 'sourceTransformation', 'sourceTypes', 'textTracks', 'title', 'transformation', 'type', 'visualSearch', 'withCredentials', 'videoSources'];\n\n// All parameters that can be passed to player constructor\nconst PLAYER_PARAMS = SOURCE_PARAMS.concat(['_internalAnalyticsMetadata', 'ads', 'aiHighlightsGraph', 'analytics', 'autoplayMode', 'chaptersButton', 'cloudinaryAnalytics', 'colors', 'debug', 'fetchErrorUsingGet', 'floatingWhenNotVisible', 'fluid', 'fontFace', 'hideContextMenu', 'ima', 'pictureInPictureToggle', 'playedEventPercents', 'playedEventTimes', 'playlistWidget', 'qualitySelector', 'queryParams', 'seekThumbnails', 'showJumpControls']);\n\n// We support both camelCase and snake_case for cloudinary SDK params\nconst CLOUDINARY_CONFIG_PARAM = ['api_secret', 'auth_token', 'cdn_subdomain', 'cloud_name', 'cname', 'private_cdn', 'secure', 'secure_cdn_subdomain', 'secure_distribution', 'shorten', 'sign_url', 'url_suffix', 'use_root_path'];\nconst FLUID_CLASS_NAME = 'cld-fluid';\nconst AUTO_PLAY_MODE = {\n ALWAYS: 'always',\n ON_SCROLL: 'on-scroll',\n NEVER: 'never'\n};\nconst FLOATING_TO = {\n LEFT: 'left',\n RIGHT: 'right',\n NONE: 'none'\n};\nconst ADS_IN_PLAYLIST = {\n FIRST_VIDEO: 'first-video',\n EVERY_VIDEO: 'every-video'\n};\nconst PRELOAD = {\n AUTO: 'auto',\n METADATA: 'metadata',\n NONE: 'none'\n};\n\n//# sourceURL=webpack://cloudinary-video-player/./video-player.const.js?");
825
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ADS_IN_PLAYLIST: () => (/* binding */ ADS_IN_PLAYLIST),\n/* harmony export */ AUTO_PLAY_MODE: () => (/* binding */ AUTO_PLAY_MODE),\n/* harmony export */ CLOUDINARY_CONFIG_PARAM: () => (/* binding */ CLOUDINARY_CONFIG_PARAM),\n/* harmony export */ FLOATING_TO: () => (/* binding */ FLOATING_TO),\n/* harmony export */ FLUID_CLASS_NAME: () => (/* binding */ FLUID_CLASS_NAME),\n/* harmony export */ PLAYER_PARAMS: () => (/* binding */ PLAYER_PARAMS),\n/* harmony export */ PRELOAD: () => (/* binding */ PRELOAD),\n/* harmony export */ SOURCE_PARAMS: () => (/* binding */ SOURCE_PARAMS)\n/* harmony export */ });\n// Parameters that can be passed to source configuration (inherited by source method)\nconst SOURCE_PARAMS = ['adaptiveStreaming', 'allowUsageReport', 'autoShowRecommendations', 'chapters', 'cloudinaryConfig', 'description', 'download', 'info', 'interactionAreas', 'poster', 'posterOptions', 'publicId', 'rawTransformation', 'recommendations', 'resourceType', 'shoppable', 'source', 'sourceTransformation', 'sourceTypes', 'textTracks', 'title', 'transformation', 'type', 'visualSearch', 'withCredentials', 'videoSources'];\n\n// All parameters that can be passed to player constructor\nconst PLAYER_PARAMS = SOURCE_PARAMS.concat(['_internalAnalyticsMetadata', 'ads', 'aiHighlightsGraph', 'analytics', 'autoplayMode', 'chaptersButton', 'cloudinaryAnalytics', 'colors', 'debug', 'fetchErrorUsingGet', 'floatingWhenNotVisible', 'fluid', 'fontFace', 'hideContextMenu', 'ima', 'pictureInPictureToggle', 'playedEventPercents', 'playedEventTimes', 'playlistWidget', 'profile', 'qualitySelector', 'queryParams', 'seekThumbnails', 'showJumpControls', 'videoConfig']);\n\n// We support both camelCase and snake_case for cloudinary SDK params\nconst CLOUDINARY_CONFIG_PARAM = ['api_secret', 'auth_token', 'cdn_subdomain', 'cloud_name', 'cname', 'private_cdn', 'secure', 'secure_cdn_subdomain', 'secure_distribution', 'shorten', 'sign_url', 'url_suffix', 'use_root_path'];\nconst FLUID_CLASS_NAME = 'cld-fluid';\nconst AUTO_PLAY_MODE = {\n ALWAYS: 'always',\n ON_SCROLL: 'on-scroll',\n NEVER: 'never'\n};\nconst FLOATING_TO = {\n LEFT: 'left',\n RIGHT: 'right',\n NONE: 'none'\n};\nconst ADS_IN_PLAYLIST = {\n FIRST_VIDEO: 'first-video',\n EVERY_VIDEO: 'every-video'\n};\nconst PRELOAD = {\n AUTO: 'auto',\n METADATA: 'metadata',\n NONE: 'none'\n};\n\n//# sourceURL=webpack://cloudinary-video-player/./video-player.const.js?");
826
826
 
827
827
  /***/ }),
828
828
 
@@ -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, initOptions, 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 = (0,_video_player_utils__WEBPACK_IMPORTED_MODULE_14__.getResolveVideoElement)(elem);\n this.options = (0,_video_player_utils__WEBPACK_IMPORTED_MODULE_14__.extractOptions)(this.videoElement, initOptions);\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.5.3-edge.1\",\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\");\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.5.3-edge.13\",\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?");
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 */ });\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__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./utils/index.js\");\n/* harmony import */ var _config_defaults__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./config/defaults */ \"./config/defaults.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 css_escape__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! css.escape */ \"../node_modules/css.escape/css.escape.js\");\n/* harmony import */ var css_escape__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(css_escape__WEBPACK_IMPORTED_MODULE_5__);\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(\"#\".concat(css_escape__WEBPACK_IMPORTED_MODULE_5___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 \".concat(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_1__[\"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 // Default options < Markup options < Player options\n options = video_js__WEBPACK_IMPORTED_MODULE_0___default().obj.merge({}, _config_defaults__WEBPACK_IMPORTED_MODULE_2__[\"default\"], elemOptions, options);\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_1__[\"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_1__[\"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_1__[\"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?");
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(\"#\".concat(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 \".concat(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
 
@@ -2614,17 +2614,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extr
2614
2614
 
2615
2615
  /***/ }),
2616
2616
 
2617
- /***/ "./components/source-switcher-button/source-switcher-button.scss":
2618
- /*!***********************************************************************!*\
2619
- !*** ./components/source-switcher-button/source-switcher-button.scss ***!
2620
- \***********************************************************************/
2621
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2622
-
2623
- "use strict";
2624
- eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n\n\n//# sourceURL=webpack://cloudinary-video-player/./components/source-switcher-button/source-switcher-button.scss?");
2625
-
2626
- /***/ }),
2627
-
2628
2617
  /***/ "./plugins/ai-highlights-graph/ai-highlights-graph.scss":
2629
2618
  /*!**************************************************************!*\
2630
2619
  !*** ./plugins/ai-highlights-graph/ai-highlights-graph.scss ***!