cloudinary-video-player
Version:
Cloudinary Video Player
209 lines (159 loc) • 1.82 MB
JavaScript
/*!
* Cloudinary Video Player v3.6.3
* Built on 2026-01-04T09:24:08.226Z
* https://github.com/cloudinary/cloudinary-video-player
*/
/*
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else if(typeof exports === 'object')
exports["cloudinary-video-player"] = factory();
else
root["cloudinary-video-player"] = factory();
})(self, () => {
return /******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ "./components/bigPauseButton/big-pause-button.js":
/*!*******************************************************!*\
!*** ./components/bigPauseButton/big-pause-button.js ***!
\*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _big_pause_button_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./big-pause-button.scss */ \"./components/bigPauseButton/big-pause-button.scss\");\n\n\nconst BigPlayButton = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('BigPlayButton');\nclass BigPauseButton extends BigPlayButton {\n constructor(player, options) {\n super(player, options);\n this.boundUpdate = this.handleUpdate.bind(this);\n const playerInstance = this.player();\n playerInstance.on('play', this.boundUpdate);\n playerInstance.on('pause', this.boundUpdate);\n this.handleUpdate();\n }\n buildCSSClass() {\n return `${super.buildCSSClass()} vjs-big-pause-button`;\n }\n handleClick() {\n const player = this.player();\n !player.paused() && player.pause();\n }\n handleUpdate() {\n const player = this.player();\n if (!player) {\n return;\n }\n const paused = player.paused();\n !paused && player.hasStarted() ? this.show() : this.hide();\n this[paused ? 'removeClass' : 'addClass']('vjs-playing');\n this.controlText('Pause');\n }\n dispose() {\n if (this.boundUpdate) {\n const player = this.player();\n player.off('play', this.boundUpdate);\n player.off('pause', this.boundUpdate);\n }\n super.dispose();\n }\n}\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('BigPauseButton', BigPauseButton);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BigPauseButton);\n\n//# sourceURL=webpack://cloudinary-video-player/./components/bigPauseButton/big-pause-button.js?");
/***/ }),
/***/ "./components/component-utils.js":
/*!***************************************!*\
!*** ./components/component-utils.js ***!
\***************************************/
/***/ ((module) => {
eval("const hide = el => {\n el.style.display = 'none';\n};\nconst show = el => {\n el.style.display = '';\n};\nconst setText = (el, text) => {\n if (!text || text.length <= 0) {\n el.innerText = '';\n hide(el);\n return;\n }\n el.innerText = text;\n show(el);\n};\nmodule.exports = {\n hide,\n show,\n setText\n};\n\n//# sourceURL=webpack://cloudinary-video-player/./components/component-utils.js?");
/***/ }),
/***/ "./components/index.js":
/*!*****************************!*\
!*** ./components/index.js ***!
\*****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BigPauseButton: () => (/* reexport safe */ _bigPauseButton_big_pause_button__WEBPACK_IMPORTED_MODULE_6__[\"default\"]),\n/* harmony export */ JumpBackButton: () => (/* reexport safe */ _jumpButtons_jump_10_minus__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ JumpForwardButton: () => (/* reexport safe */ _jumpButtons_jump_10_plus__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ LogoButton: () => (/* reexport safe */ _logoButton_logo_button__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ ProgressControlEventsBlocker: () => (/* reexport safe */ _progress_control_events_blocker_progress_control_events_blocker__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ SourceSwitcherButton: () => (/* reexport safe */ _source_switcher_button_source_switcher_button__WEBPACK_IMPORTED_MODULE_5__[\"default\"]),\n/* harmony export */ TitleBar: () => (/* reexport safe */ _title_bar_title_bar__WEBPACK_IMPORTED_MODULE_4__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _jumpButtons_jump_10_plus__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./jumpButtons/jump-10-plus */ \"./components/jumpButtons/jump-10-plus.js\");\n/* harmony import */ var _jumpButtons_jump_10_minus__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./jumpButtons/jump-10-minus */ \"./components/jumpButtons/jump-10-minus.js\");\n/* harmony import */ var _logoButton_logo_button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./logoButton/logo-button */ \"./components/logoButton/logo-button.js\");\n/* harmony import */ var _progress_control_events_blocker_progress_control_events_blocker__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./progress-control-events-blocker/progress-control-events-blocker */ \"./components/progress-control-events-blocker/progress-control-events-blocker.js\");\n/* harmony import */ var _title_bar_title_bar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./title-bar/title-bar */ \"./components/title-bar/title-bar.js\");\n/* harmony import */ var _source_switcher_button_source_switcher_button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./source-switcher-button/source-switcher-button */ \"./components/source-switcher-button/source-switcher-button.js\");\n/* harmony import */ var _bigPauseButton_big_pause_button__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./bigPauseButton/big-pause-button */ \"./components/bigPauseButton/big-pause-button.js\");\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://cloudinary-video-player/./components/index.js?");
/***/ }),
/***/ "./components/jumpButtons/jump-10-minus.js":
/*!*************************************************!*\
!*** ./components/jumpButtons/jump-10-minus.js ***!
\*************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n\nconst ClickableComponent = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('ClickableComponent');\nclass JumpBackButton extends ClickableComponent {\n handleClick(event) {\n super.handleClick(event);\n this.player().currentTime(this.player().currentTime() - 10);\n }\n createEl() {\n return video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('button', {\n className: 'vjs-control vjs-icon-skip-10-min vjs-icon-replay-10 vjs-button',\n ariaLabel: 'Jump back 10 seconds'\n });\n }\n}\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('JumpBackButton', JumpBackButton);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (JumpBackButton);\n\n//# sourceURL=webpack://cloudinary-video-player/./components/jumpButtons/jump-10-minus.js?");
/***/ }),
/***/ "./components/jumpButtons/jump-10-plus.js":
/*!************************************************!*\
!*** ./components/jumpButtons/jump-10-plus.js ***!
\************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n\nconst ClickableComponent = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('ClickableComponent');\nclass JumpForwardButton extends ClickableComponent {\n handleClick(event) {\n super.handleClick(event);\n this.player().currentTime(this.player().currentTime() + 10);\n }\n createEl() {\n return video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('button', {\n className: 'vjs-control vjs-icon-skip-10-plus vjs-icon-forward-10 vjs-button',\n ariaLabel: 'Jump forward 10 seconds'\n });\n }\n}\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('JumpForwardButton', JumpForwardButton);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (JumpForwardButton);\n\n//# sourceURL=webpack://cloudinary-video-player/./components/jumpButtons/jump-10-plus.js?");
/***/ }),
/***/ "./components/logoButton/logo-button.js":
/*!**********************************************!*\
!*** ./components/logoButton/logo-button.js ***!
\**********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _logo_button_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logo-button.scss */ \"./components/logoButton/logo-button.scss\");\n\n\n\n// support VJS5 & VJS6 at the same time\nconst ClickableComponent = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('ClickableComponent');\nclass LogoButton extends ClickableComponent {\n createEl() {\n const opts = this.options_.playerOptions;\n const display = opts.showLogo ? 'block' : 'none';\n const bgImage = opts.logoImageUrl ? `background-image: url(${opts.logoImageUrl})` : '';\n return video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('a', {}, {\n class: 'vjs-control vjs-cloudinary-button vjs-button',\n href: opts.logoOnclickUrl,\n target: '_blank',\n style: `display: ${display}; ${bgImage}`,\n 'aria-label': 'Logo link'\n });\n }\n}\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('logoButton', LogoButton);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LogoButton);\n\n//# sourceURL=webpack://cloudinary-video-player/./components/logoButton/logo-button.js?");
/***/ }),
/***/ "./components/progress-control-events-blocker/progress-control-events-blocker.js":
/*!***************************************************************************************!*\
!*** ./components/progress-control-events-blocker/progress-control-events-blocker.js ***!
\***************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n\nconst Component = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('Component');\nclass ProgressControlEventsBlocker extends Component {\n constructor(player) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(player, options);\n }\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-control-events-blocker'\n });\n }\n}\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('progressControlEventsBlocker', ProgressControlEventsBlocker);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProgressControlEventsBlocker);\n\n//# sourceURL=webpack://cloudinary-video-player/./components/progress-control-events-blocker/progress-control-events-blocker.js?");
/***/ }),
/***/ "./components/recommendations-overlay/index.js":
/*!*****************************************************!*\
!*** ./components/recommendations-overlay/index.js ***!
\*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ lazyRecommendationsOverlayComponent)\n/* harmony export */ });\nasync function lazyRecommendationsOverlayComponent(player) {\n try {\n if (!player.getChild('recommendationsOverlay')) {\n await Promise.all(/*! import() | recommendations-overlay */[__webpack_require__.e(\"styles\"), __webpack_require__.e(\"recommendations-overlay\")]).then(__webpack_require__.bind(__webpack_require__, /*! ./recommendations-overlay */ \"./components/recommendations-overlay/recommendations-overlay.js\"));\n player.addChild('recommendationsOverlay');\n }\n return player;\n } catch (error) {\n console.error('Failed to load plugin:', error);\n }\n}\n\n//# sourceURL=webpack://cloudinary-video-player/./components/recommendations-overlay/index.js?");
/***/ }),
/***/ "./components/source-switcher-button/source-switcher-button.js":
/*!*********************************************************************!*\
!*** ./components/source-switcher-button/source-switcher-button.js ***!
\*********************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _source_switcher_menu_item__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./source-switcher-menu-item */ \"./components/source-switcher-button/source-switcher-menu-item.js\");\n\n\nconst MenuButton = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('MenuButton');\nconst MenuItem = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('MenuItem');\nclass SourceSwitcherButton extends MenuButton {\n constructor(player) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(player, options);\n this.controlText(options.tooltip || 'Sources');\n this._emptyLabel = options.emptyLabel || 'No sources';\n this._items = Array.isArray(options.items) ? options.items : [];\n this._selectedIndex = Number.isInteger(options.defaultIndex) ? options.defaultIndex : undefined;\n this._onSelected = typeof options.onSelected === 'function' ? options.onSelected : null;\n this._setEnabled(this._items.length > 0);\n const placeholder = this.el().querySelector('.vjs-icon-placeholder');\n if (placeholder) {\n placeholder.classList.add('vjs-icon-source-switcher');\n }\n }\n buildCSSClass() {\n const empty = !Array.isArray(this._items) || this._items.length === 0;\n return `vjs-source-switcher-button${empty ? ' vjs-source-switcher-disabled' : ''} ${super.buildCSSClass()}`;\n }\n createItems() {\n if (!Array.isArray(this._items) || this._items.length === 0) {\n const empty = new MenuItem(this.player_, {\n label: this._emptyLabel,\n selectable: false\n });\n empty.addClass('vjs-source-switcher-empty');\n empty.disable();\n return [empty];\n }\n return this._items.map((_ref, index) => {\n let {\n label,\n value\n } = _ref;\n return new _source_switcher_menu_item__WEBPACK_IMPORTED_MODULE_1__[\"default\"](this.player_, {\n label,\n value,\n index,\n selected: index === this._selectedIndex,\n onSelect: payload => this._handleItemSelect(payload)\n });\n });\n }\n _handleItemSelect(_ref2) {\n let {\n index\n } = _ref2;\n if (this._selectedIndex === index) return;\n this.setSelected(index);\n }\n setItems(items) {\n this._items = Array.isArray(items) ? items : [];\n this._selectedIndex = this._items.length ? 0 : undefined;\n this._setEnabled(this._items.length > 0);\n this._rebuildMenu();\n }\n setSelected(index) {\n if (!Array.isArray(this._items) || index == null || index < 0 || index >= this._items.length) return;\n this._selectedIndex = index;\n\n // reflect in UI if menu exists\n if (this.menu && typeof this.menu.children === 'function') {\n this.menu.children().forEach(child => {\n if (child instanceof MenuItem) {\n child.selected(child._ssIndex === index);\n }\n });\n }\n const {\n value\n } = this._items[index];\n if (this._onSelected) this._onSelected({\n index,\n value\n }, this.player_);\n }\n setOnSelected(fn) {\n this._onSelected = typeof fn === 'function' ? fn : null;\n }\n _rebuildMenu() {\n if (!this.menu) return;\n this.menu.children().slice().forEach(c => this.menu.removeChild(c));\n this.createItems().forEach(i => this.menu.addItem(i));\n const el = this.el && this.el();\n if (el) {\n const empty = this._items.length === 0;\n el.classList.toggle('vjs-source-switcher-disabled', empty);\n el.setAttribute('aria-disabled', String(empty));\n }\n }\n _setEnabled(enabled) {\n const el = this.el && this.el();\n if (!el) return;\n el.classList.toggle('vjs-source-switcher-disabled', !enabled);\n el.setAttribute('aria-disabled', String(!enabled));\n }\n}\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('sourceSwitcherButton', SourceSwitcherButton);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SourceSwitcherButton);\n\n//# sourceURL=webpack://cloudinary-video-player/./components/source-switcher-button/source-switcher-button.js?");
/***/ }),
/***/ "./components/source-switcher-button/source-switcher-menu-item.js":
/*!************************************************************************!*\
!*** ./components/source-switcher-button/source-switcher-menu-item.js ***!
\************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n\nconst MenuItem = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('MenuItem');\nclass SourceMenuItem extends MenuItem {\n constructor(player) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(player, {\n ...options,\n selectable: true,\n multiSelectable: false,\n selected: !!options.selected,\n label: options.label\n });\n this.value = options.value;\n this._ssIndex = options.index;\n this._onSelect = typeof options.onSelect === 'function' ? options.onSelect : null;\n }\n handleClick(event) {\n super.handleClick(event);\n if (this._onSelect) {\n this._onSelect({\n index: this._ssIndex,\n value: this.value,\n label: this.options_.label\n });\n }\n }\n}\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('SourceMenuItem', SourceMenuItem);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SourceMenuItem);\n\n//# sourceURL=webpack://cloudinary-video-player/./components/source-switcher-button/source-switcher-menu-item.js?");
/***/ }),
/***/ "./components/title-bar/title-bar.js":
/*!*******************************************!*\
!*** ./components/title-bar/title-bar.js ***!
\*******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var assets_styles_components_title_bar_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! assets/styles/components/title-bar.scss */ \"./assets/styles/components/title-bar.scss\");\n/* harmony import */ var _component_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../component-utils */ \"./components/component-utils.js\");\n/* harmony import */ var _component_utils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_component_utils__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils_utf8Base64__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/utf8Base64 */ \"./utils/utf8Base64.js\");\n/* harmony import */ var plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! plugins/cloudinary/common */ \"./plugins/cloudinary/common.js\");\n\n\n\n\n\n\n// support VJS5 & VJS6 at the same time\nconst dom = (video_js__WEBPACK_IMPORTED_MODULE_0___default().dom) || (video_js__WEBPACK_IMPORTED_MODULE_0___default());\nconst Component = video_js__WEBPACK_IMPORTED_MODULE_0___default().getComponent('Component');\nclass TitleBar extends Component {\n constructor(player) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(player, options);\n this.on(player, 'cldsourcechanged', (_, _ref) => {\n let {\n source\n } = _ref;\n return this.setItem(source);\n });\n }\n setItem(source) {\n if (!source) {\n this.setTitle('');\n this.setDescription('');\n return;\n }\n const info = source.info();\n this.setTitle(info.title);\n this.setDescription(info.subtitle);\n\n // auto-fetch title/description if `true`\n const shouldFetchTitle = source.title && source.title() === true;\n const shouldFetchDescription = source.description && source.description() === true;\n if (shouldFetchTitle || shouldFetchDescription) {\n this.fetchAutoMetadata(source, shouldFetchTitle, shouldFetchDescription);\n }\n }\n fetchAutoMetadata(source, fetchTitle, fetchDescription) {\n if (source.isRawUrl) return;\n const config = source.cloudinaryConfig();\n const publicId = source.publicId();\n if (!config?.cloud_name || !publicId) return;\n const urlPrefix = (0,plugins_cloudinary_common__WEBPACK_IMPORTED_MODULE_4__.getCloudinaryUrlPrefix)(config);\n const deliveryType = source.getInitOptions().type || 'upload';\n const metadataUrl = `${urlPrefix}/_applet_/video_service/video_metadata/${deliveryType}/${(0,_utils_utf8Base64__WEBPACK_IMPORTED_MODULE_3__.utf8ToBase64)(publicId)}.json`;\n fetch(metadataUrl, {\n headers: {\n 'X-Cld-Video-Player-Version': \"3.6.3\"\n }\n }).then(response => {\n if (!response.ok) throw new Error(`HTTP ${response.status}`);\n return response.json();\n }).then(metadata => {\n if (fetchTitle && metadata.title) {\n this.setTitle(metadata.title);\n }\n if (fetchDescription && metadata.description) {\n this.setDescription(metadata.description);\n }\n }).catch(error => {\n console.warn(`Failed to fetch metadata for ${publicId}:`, error);\n });\n }\n setTitle(text) {\n const displayText = typeof text === 'string' ? text : '';\n _component_utils__WEBPACK_IMPORTED_MODULE_2___default().setText(this.titleEl, displayText);\n this.refresh();\n return displayText;\n }\n setDescription(text) {\n const displayText = typeof text === 'string' ? text : '';\n _component_utils__WEBPACK_IMPORTED_MODULE_2___default().setText(this.descriptionEl, displayText);\n this.refresh();\n return displayText;\n }\n refresh() {\n const titleValue = () => this.titleEl.innerText;\n const descriptionValue = () => this.descriptionEl.innerText;\n if (!titleValue() && !descriptionValue()) {\n this.hide();\n return;\n }\n this.show();\n }\n createEl() {\n this.titleEl = dom.createEl('div', {\n className: 'vjs-title-bar-title'\n });\n this.descriptionEl = dom.createEl('div', {\n className: 'vjs-title-bar-subtitle'\n });\n const el = super.createEl('div', {\n append: this.titleEl,\n className: 'vjs-title-bar'\n });\n el.appendChild(this.titleEl);\n el.appendChild(this.descriptionEl);\n return el;\n }\n}\nvideo_js__WEBPACK_IMPORTED_MODULE_0___default().registerComponent('titleBar', TitleBar);\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TitleBar);\n\n//# sourceURL=webpack://cloudinary-video-player/./components/title-bar/title-bar.js?");
/***/ }),
/***/ "./config/defaults.js":
/*!****************************!*\
!*** ./config/defaults.js ***!
\****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
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?");
/***/ }),
/***/ "./extended-events.js":
/*!****************************!*\
!*** ./extended-events.js ***!
\****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ normalizeEventsParam: () => (/* binding */ normalizeEventsParam)\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 events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! events */ \"../node_modules/events/events.js\");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(events__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__);\n/* harmony import */ var _utils_consts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/consts */ \"./utils/consts.js\");\n\n\n\n\nconst EVENT_DEFAULTS = {\n percentsplayed: {\n percents: [25, 50, 75, 100]\n }\n};\nconst DEFAULT_EVENTS = [_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PERCENTS_PLAYED, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PAUSE_NO_SEEK, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.SEEK, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.MUTE, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.UNMUTE, _utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.QUALITY_CHANGED];\nconst DEFAULT_OPTIONS = {\n events: DEFAULT_EVENTS\n};\n\n// Emits the following additional events:\n// percentsplayed, timeplayed, pausenoseek, seek, mute, unmute\nclass ExtendedEvents extends (events__WEBPACK_IMPORTED_MODULE_1___default()) {\n constructor(player) {\n let initOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n this.player = player;\n const options = video_js__WEBPACK_IMPORTED_MODULE_0___default().obj.merge(DEFAULT_OPTIONS, initOptions);\n let _muteData = {\n lastState: undefined\n };\n let _seekStart = 0;\n let _seekEnd = 0;\n let _seeking = false;\n let _percentsTracked = [];\n let _timesTracked = [];\n let _currentSource = null;\n let _ended = false;\n const volumechange = event => {\n if (this.player.muted() && _muteData.lastState !== 'muted') {\n _muteData.lastState = 'muted';\n this.emit(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.MUTE, event);\n } else if (!this.player.muted() && _muteData.lastState !== 'unmuted') {\n _muteData.lastState = 'unmuted';\n this.emit(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.UNMUTE, event);\n }\n };\n const timeupdate = event => {\n const currentTime = this.player.currentTime();\n const duration = this.player.duration();\n const _emit = (type, data) => {\n data.originalType = 'timeupdate';\n this.emit(type, event, data);\n };\n if (this.events.percentsplayed) {\n this.events.percentsplayed.percents.forEach(percent => {\n if (playedAtPercentage(currentTime, duration, percent) && _percentsTracked.indexOf(percent) === -1) {\n _percentsTracked.push(percent);\n _emit(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PERCENTS_PLAYED, {\n percent\n });\n }\n });\n }\n if (this.events.timeplayed) {\n const timeplayed = this.events.timeplayed;\n const times = timeplayed.interval ? [Math.floor(currentTime / timeplayed.interval) * timeplayed.interval] : timeplayed.times;\n times.forEach(time => {\n if (playedAtTime(currentTime, time) && _timesTracked.indexOf(time) === -1) {\n _timesTracked.push(time);\n _emit(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.TIME_PLAYED, {\n time\n });\n }\n });\n }\n if (this.events.seek) {\n _seekStart = _seekEnd;\n _seekEnd = currentTime;\n if (Math.abs(_seekStart - _seekEnd) > 1) {\n _seeking = true;\n\n // should empty _timesTracked array on seek, needed for 'timeplayed' event\n resetPerVideoState();\n _emit(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.SEEK, {\n seekStart: _seekStart,\n seekEnd: _seekEnd\n });\n }\n }\n };\n const pause = event => {\n const currentTime = Math.round(this.player.currentTime());\n const duration = Math.round(this.player.duration());\n if (currentTime !== duration && !_seeking) {\n this.emit(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PAUSE_NO_SEEK, event);\n }\n };\n const play = () => {\n _seeking = false;\n };\n const replay = () => {\n if (_ended) {\n this.player.trigger('replay');\n _ended = false;\n }\n };\n const loadedmetadata = () => {\n if (this.player.currentSource().src !== _currentSource) {\n resetPerVideoState();\n _currentSource = this.player.currentSource().src;\n }\n };\n const adaptiveEvents = event => {\n let ee = this;\n let tracks = this.player.textTracks();\n let segmentMetadataTrack = null;\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i].label === 'segment-metadata') {\n segmentMetadataTrack = tracks[i];\n }\n }\n let previousResolution = null;\n if (segmentMetadataTrack) {\n segmentMetadataTrack.on('cuechange', function () {\n let activeCue = segmentMetadataTrack.activeCues[0];\n if (activeCue) {\n let currentRes = activeCue.value.resolution;\n if (previousResolution !== currentRes) {\n let data = {\n from: previousResolution,\n to: currentRes\n };\n ee.emit(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.QUALITY_CHANGED, event, data);\n }\n previousResolution = currentRes;\n }\n });\n }\n };\n const resetState = () => {\n _muteData = {\n lastState: undefined\n };\n _seekStart = _seekEnd = 0;\n _seeking = false;\n resetPerVideoState();\n };\n const resetPerVideoState = () => {\n _percentsTracked = [];\n _timesTracked = [];\n };\n const ended = () => {\n _ended = true;\n };\n this.events = normalizeEventsParam(options.events, EVENT_DEFAULTS);\n resetState();\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PLAY, replay.bind(this));\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.ENDED, ended.bind(this));\n if (this.events.percentsplayed || this.events.timeplayed || this.events.seek || this.events.totaltimeplayed) {\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.TIME_UPDATE, timeupdate.bind(this));\n }\n if (this.events.mute || this.events.unmute) {\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.VOLUME_CHANGE, volumechange.bind(this));\n }\n if (this.events.pausenoseek) {\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PAUSE, pause.bind(this));\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.PLAY, play.bind(this));\n }\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.LOADED_METADATA, loadedmetadata.bind(this));\n this.player.on(_utils_consts__WEBPACK_IMPORTED_MODULE_3__.PLAYER_EVENT.LOADED_DATA, adaptiveEvents.bind(this));\n }\n}\nconst normalizeEventsParam = (events, defaults) => {\n let normalized = events;\n if (events.constructor.name === 'Array') {\n normalized = events.reduce((agg, item) => {\n const eventDefaults = defaults[item] || {};\n if (lodash_isObject__WEBPACK_IMPORTED_MODULE_2___default()(item)) {\n agg[item.type] = Object.assign({}, eventDefaults, item);\n } else {\n agg[item] = eventDefaults;\n }\n return agg;\n }, {});\n }\n return normalized;\n};\nconst playedAtPercentage = function (currentTime, duration, percentageCheckpoint) {\n let graceRangeSeconds = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.5;\n const checkPoint = duration * percentageCheckpoint / 100;\n return playedAtTime(currentTime, checkPoint, graceRangeSeconds);\n};\nconst playedAtTime = function (currentTime, checkpoint) {\n let graceRangeSeconds = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0.5;\n return currentTime <= checkpoint + graceRangeSeconds && currentTime >= checkpoint - graceRangeSeconds;\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ExtendedEvents);\n\n//# sourceURL=webpack://cloudinary-video-player/./extended-events.js?");
/***/ }),
/***/ "./index.js":
/*!******************!*\
!*** ./index.js ***!
\******************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ player: () => (/* binding */ player),\n/* harmony export */ players: () => (/* binding */ players),\n/* harmony export */ videoPlayer: () => (/* binding */ videoPlayer),\n/* harmony export */ videoPlayers: () => (/* binding */ videoPlayers)\n/* harmony export */ });\n/* harmony import */ var assets_styles_main_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! assets/styles/main.scss */ \"./assets/styles/main.scss\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _video_player__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./video-player */ \"./video-player.js\");\n/* harmony import */ var _config_defaults__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config/defaults */ \"./config/defaults.js\");\n/* harmony import */ var _video_player_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./video-player.utils */ \"./video-player.utils.js\");\n/* harmony import */ var _utils_fetch_config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/fetch-config */ \"./utils/fetch-config.js\");\n\n\n\n\n\n\nconst getConfig = function (elem) {\n let playerOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const videoElement = (0,_video_player_utils__WEBPACK_IMPORTED_MODULE_4__.getResolveVideoElement)(elem);\n const options = (0,_video_player_utils__WEBPACK_IMPORTED_MODULE_4__.extractOptions)(videoElement, playerOptions);\n return {\n videoElement,\n options\n };\n};\nconst mergeDefaults = options => video_js__WEBPACK_IMPORTED_MODULE_1___default().obj.merge({}, _config_defaults__WEBPACK_IMPORTED_MODULE_3__[\"default\"], options);\nconst videoPlayer = function (id) {\n let playerOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let ready = arguments.length > 2 ? arguments[2] : undefined;\n const {\n videoElement,\n options\n } = getConfig(id, playerOptions);\n if (options.profile) {\n console.warn('Profile option requires async initialization. Use cloudinary.player() instead of cloudinary.videoPlayer()');\n }\n return new _video_player__WEBPACK_IMPORTED_MODULE_2__[\"default\"](videoElement, mergeDefaults(options), ready);\n};\nconst videoPlayers = (selector, playerOptions, ready) => {\n const nodeList = document.querySelectorAll(selector);\n return [...nodeList].map(node => videoPlayer(node, playerOptions, ready));\n};\nconst player = async (id, playerOptions, ready) => {\n const {\n videoElement,\n options\n } = getConfig(id, playerOptions);\n try {\n const videoConfig = await (0,_utils_fetch_config__WEBPACK_IMPORTED_MODULE_5__.fetchAndMergeConfig)(options);\n return new _video_player__WEBPACK_IMPORTED_MODULE_2__[\"default\"](videoElement, mergeDefaults(videoConfig), ready);\n } catch (e) {\n const videoPlayer = new _video_player__WEBPACK_IMPORTED_MODULE_2__[\"default\"](videoElement, mergeDefaults(options));\n videoPlayer.videojs.error('Invalid profile');\n throw e;\n }\n};\nconst players = async (selector, playerOptions, ready) => {\n const nodeList = document.querySelectorAll(selector);\n return Promise.all([...nodeList].map(node => player(node, playerOptions, ready)));\n};\nconst cloudinaryVideoPlayerLegacyConfig = () => {\n console.warn('Cloudinary.new() is deprecated and will be removed. Please use cloudinary.videoPlayer() instead.');\n return {\n videoPlayer,\n videoPlayers\n };\n};\nconst cloudinary = {\n ...(window.cloudinary || {}),\n videoPlayer,\n videoPlayers,\n player,\n players,\n Cloudinary: {\n // Backwards compatibility with SDK v1\n new: cloudinaryVideoPlayerLegacyConfig\n }\n};\nwindow.cloudinary = cloudinary;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (cloudinary);\n\n//# sourceURL=webpack://cloudinary-video-player/./index.js?");
/***/ }),
/***/ "./mixins/eventable.js":
/*!*****************************!*\
!*** ./mixins/eventable.js ***!
\*****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
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 Eventable = superclass => class extends superclass {\n constructor() {\n var _this;\n super();\n _this = this;\n const eventable = {\n data: {},\n handlers: {}\n };\n this.on = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n const lastIndex = args.length - 1;\n const func = args[lastIndex];\n eventable.handlers[func] = function (event) {\n event.Player = _this;\n for (var _len2 = arguments.length, _args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n _args[_key2 - 1] = arguments[_key2];\n }\n func(event, ..._args);\n };\n args[lastIndex] = eventable.handlers[func];\n return _this.videojs.on(...args);\n };\n this.one = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n const lastIndex = args.length - 1;\n const func = args[lastIndex];\n eventable.handlers[func] = function (event) {\n event.Player = _this;\n for (var _len4 = arguments.length, _args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n _args[_key4 - 1] = arguments[_key4];\n }\n func(event, ..._args);\n delete eventable.handlers[func];\n };\n args[lastIndex] = eventable.handlers[func];\n return _this.videojs.one(...args);\n };\n this.off = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n const lastIndex = args.length - 1;\n const func = args[lastIndex];\n args[lastIndex] = eventable.handlers[func];\n const res = _this.videojs.off(...args);\n delete eventable.handlers[func];\n return res;\n };\n this.trigger = function () {\n _this.videojs.trigger(...arguments);\n };\n }\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Eventable);\n\n//# sourceURL=webpack://cloudinary-video-player/./mixins/eventable.js?");
/***/ }),
/***/ "./plugins/adaptive-streaming/index.js":
/*!*********************************************!*\
!*** ./plugins/adaptive-streaming/index.js ***!
\*********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ lazyAdaptiveStreamingPlugin)\n/* harmony export */ });\nasync function lazyAdaptiveStreamingPlugin(options) {\n const player = this;\n try {\n if (options.isDash && !window.dashjs) {\n await __webpack_require__.e(/*! import() | dash */ \"dash\").then(__webpack_require__.bind(__webpack_require__, /*! videojs-contrib-dash */ \"../node_modules/videojs-contrib-dash/dist/videojs-dash.es.js\"));\n }\n const {\n default: abrPlugin\n } = await __webpack_require__.e(/*! import() | adaptive-streaming */ \"adaptive-streaming\").then(__webpack_require__.bind(__webpack_require__, /*! ./adaptive-streaming */ \"./plugins/adaptive-streaming/adaptive-streaming.js\"));\n abrPlugin(player, options);\n } catch (error) {\n console.error('Failed to load plugin:', error);\n }\n}\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/adaptive-streaming/index.js?");
/***/ }),
/***/ "./plugins/ai-highlights-graph/index.js":
/*!**********************************************!*\
!*** ./plugins/ai-highlights-graph/index.js ***!
\**********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ \"../node_modules/video.js/dist/alt/video.core-exposed.js\");\n/* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ai_highlights_graph_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ai-highlights-graph.scss */ \"./plugins/ai-highlights-graph/ai-highlights-graph.scss\");\n\n\n\n// Default options for the plugin.\nlet defaults = {};\n\n/**\n * Function to invoke when the player is re