cloudinary-video-player
Version:
Cloudinary Video Player
37 lines (30 loc) • 8.52 kB
JavaScript
/*!
* Cloudinary Video Player v3.2.1
* Built on 2025-08-12T18:54:00.175Z
* https://github.com/cloudinary/cloudinary-video-player
*/
"use strict";
/*
* 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/).
*/
(self["cloudinaryVideoPlayerChunkLoading"] = self["cloudinaryVideoPlayerChunkLoading"] || []).push([["srt-text-tracks"],{
/***/ "./plugins/srt-text-tracks/srt-text-tracks.js":
/*!****************************************************!*\
!*** ./plugins/srt-text-tracks/srt-text-tracks.js ***!
\****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
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 srt_parser_2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! srt-parser-2 */ \"../node_modules/srt-parser-2/dist/index.js\");\n\nfunction srtTextTracks(config, player) {\n // Load the SRT file and convert it to WebVTT\n const initSRT = async () => {\n let srtResponse;\n if (config.src) {\n try {\n srtResponse = await fetch(config.src);\n if (!srtResponse.ok) {\n throw new Error(`Failed fetching from ${config.src} with status code ${srtResponse.status}`);\n }\n } catch (error) {\n console.error(error);\n }\n }\n if (!srtResponse.ok) return;\n const srtData = await srtResponse.text();\n const webvttCues = srt2webvtt(srtData); // Get the array of cues\n\n const srtTrack = player.addRemoteTextTrack({\n kind: config.kind || 'subtitles',\n label: config.label || 'Subtitles',\n srclang: config.srclang,\n default: config.default,\n mode: config.default ? 'showing' : 'disabled'\n });\n\n // Add the WebVTT data to the track\n webvttCues.forEach(cue => {\n if (cue) {\n srtTrack.track.addCue(new VTTCue(cue.startTime, cue.endTime, cue.text));\n }\n });\n };\n player.one('loadedmetadata', () => {\n initSRT();\n });\n}\n\n// SRT parser\nconst srt2webvtt = data => {\n const SRTParser = new srt_parser_2__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n const cues = SRTParser.fromSrt(data);\n return cues.map(cue => ({\n startTime: cue.startSeconds,\n endTime: cue.endSeconds,\n text: cue.text\n }));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (srtTextTracks);\n\n//# sourceURL=webpack://cloudinary-video-player/./plugins/srt-text-tracks/srt-text-tracks.js?");
/***/ }),
/***/ "../node_modules/srt-parser-2/dist/index.js":
/*!**************************************************!*\
!*** ../node_modules/srt-parser-2/dist/index.js ***!
\**************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nclass Parser {\n seperator = \",\";\n timestampToSeconds(srtTimestamp) {\n const [rest, millisecondsString] = srtTimestamp.split(\",\");\n const milliseconds = parseInt(millisecondsString);\n const [hours, minutes, seconds] = rest.split(\":\").map((x) => parseInt(x));\n const result = milliseconds * 0.001 + seconds + 60 * minutes + 3600 * hours;\n // fix odd JS roundings, e.g. timestamp '00:01:20,460' result is 80.46000000000001\n return Math.round(result * 1000) / 1000;\n }\n ;\n correctFormat(time) {\n // Fix the format if the format is wrong\n // 00:00:28.9670 Become 00:00:28,967\n // 00:00:28.967 Become 00:00:28,967\n // 00:00:28.96 Become 00:00:28,960\n // 00:00:28.9 Become 00:00:28,900\n // 00:00:28,96 Become 00:00:28,960\n // 00:00:28,9 Become 00:00:28,900\n // 00:00:28,0 Become 00:00:28,000\n // 00:00:28,01 Become 00:00:28,010\n // 0:00:10,500 Become 00:00:10,500\n let str = time.replace(\".\", \",\");\n var hour = null;\n var minute = null;\n var second = null;\n var millisecond = null;\n // Handle millisecond\n var [front, ms] = str.split(\",\");\n millisecond = this.fixed_str_digit(3, ms);\n // Handle hour\n var [a_hour, a_minute, a_second] = front.split(\":\");\n hour = this.fixed_str_digit(2, a_hour, false);\n minute = this.fixed_str_digit(2, a_minute, false);\n second = this.fixed_str_digit(2, a_second, false);\n return `${hour}:${minute}:${second},${millisecond}`;\n }\n /*\n // make sure string is 'how_many_digit' long\n // if str is shorter than how_many_digit, pad with 0\n // if str is longer than how_many_digit, slice from the beginning\n // Example:\n \n Input: fixed_str_digit(3, '100')\n Output: 100\n Explain: unchanged, because \"100\" is 3 digit\n \n Input: fixed_str_digit(3, '50')\n Output: 500\n Explain: pad end with 0\n \n Input: fixed_str_digit(3, '50', false)\n Output: 050\n Explain: pad start with 0\n \n Input: fixed_str_digit(3, '7771')\n Output: 777\n Explain: slice from beginning\n */\n fixed_str_digit(how_many_digit, str, padEnd = true) {\n if (str.length == how_many_digit) {\n return str;\n }\n if (str.length > how_many_digit) {\n return str.slice(0, how_many_digit);\n }\n if (str.length < how_many_digit) {\n if (padEnd) {\n return str.padEnd(how_many_digit, \"0\");\n }\n else {\n return str.padStart(how_many_digit, \"0\");\n }\n }\n }\n tryComma(data) {\n data = data.replace(/\\r/g, \"\");\n var regex = /(\\d+)\\n(\\d{1,2}:\\d{2}:\\d{2},\\d{1,3}) --> (\\d{1,2}:\\d{2}:\\d{2},\\d{1,3})/g;\n let data_array = data.split(regex);\n data_array.shift(); // remove first '' in array\n return data_array;\n }\n tryDot(data) {\n data = data.replace(/\\r/g, \"\");\n var regex = /(\\d+)\\n(\\d{1,2}:\\d{2}:\\d{2}\\.\\d{1,3}) --> (\\d{1,2}:\\d{2}:\\d{2}\\.\\d{1,3})/g;\n let data_array = data.split(regex);\n data_array.shift(); // remove first '' in array\n this.seperator = \".\";\n return data_array;\n }\n fromSrt(data) {\n var originalData = data;\n var data_array = this.tryComma(originalData);\n if (data_array.length == 0) {\n data_array = this.tryDot(originalData);\n }\n var items = [];\n for (var i = 0; i < data_array.length; i += 4) {\n const startTime = this.correctFormat(data_array[i + 1].trim());\n const endTime = this.correctFormat(data_array[i + 2].trim());\n var new_line = {\n id: data_array[i].trim(),\n startTime,\n startSeconds: this.timestampToSeconds(startTime),\n endTime,\n endSeconds: this.timestampToSeconds(endTime),\n text: data_array[i + 3].trim(),\n };\n items.push(new_line);\n }\n return items;\n }\n toSrt(data) {\n var res = \"\";\n const end_of_line = \"\\r\\n\";\n for (var i = 0; i < data.length; i++) {\n var s = data[i];\n res += s.id + end_of_line;\n res += s.startTime + \" --> \" + s.endTime + end_of_line;\n res += s.text.replace(\"\\n\", end_of_line) + end_of_line + end_of_line;\n }\n return res;\n }\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Parser);\n\n\n//# sourceURL=webpack://cloudinary-video-player/../node_modules/srt-parser-2/dist/index.js?");
/***/ })
}]);