mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-08 19:06:15 -08:00
- Created a new documentation file for the danmuku plugin with interactive code execution. - Added comprehensive i18n setup instructions, including default language settings, language imports, and examples for adding and modifying languages. - Introduced a test file to verify the integration of the danmuku plugin.
1 line
22 KiB
Plaintext
1 line
22 KiB
Plaintext
{"mappings":"C,A,S,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,E,I,E,A,a,O,W,W,A,a,O,K,K,A,a,O,O,O,A,a,O,O,O,C,E,E,A,Y,O,C,C,E,E,C,C,E,C,E,E,C,E,C,E,E,E,K,E,C,E,E,A,a,O,Q,A,Y,O,O,O,E,O,O,C,I,C,Q,S,E,C,C,C,E,G,C,C,C,E,C,C,G,C,C,C,E,C,C,G,C,C,E,C,O,C,C,E,C,I,E,A,Y,O,C,C,E,E,C,C,E,C,G,C,G,E,O,E,E,C,G,G,E,O,E,E,C,G,G,G,A,U,O,E,O,E,G,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,O,C,S,C,E,I,E,C,C,E,C,E,C,E,C,O,A,M,E,E,C,E,E,K,C,C,E,I,E,C,C,E,C,I,E,M,C,G,C,C,E,C,E,C,I,C,E,O,C,E,E,E,O,C,E,C,O,C,C,E,C,O,C,S,E,C,E,I,E,E,O,C,G,M,A,C,I,E,C,E,E,E,C,C,E,e,C,C,E,E,M,C,S,C,E,I,C,E,C,E,I,C,M,C,E,I,C,O,C,E,I,C,O,C,C,C,E,E,O,C,E,E,K,C,E,E,M,C,E,E,O,C,K,E,E,S,C,K,E,E,S,C,K,E,E,C,C,E,E,Q,C,S,C,C,C,E,C,C,E,C,C,S,C,C,C,E,E,O,C,C,E,C,E,A,E,O,c,C,E,O,C,I,W,O,C,C,E,A,C,G,C,C,E,C,E,I,I,E,E,E,E,M,C,I,E,C,C,E,E,G,E,C,I,E,E,E,A,C,U,O,S,A,a,O,O,O,O,C,E,A,Y,O,Q,O,G,E,O,W,O,C,E,C,E,C,M,C,S,C,C,C,C,C,C,C,E,I,E,E,kD,E,iB,C,GCEwB,EAAA,MAAA,CAAA,EAAA,UAAA,IAAA,GAFxB,IAAA,EAAA,EAAA,iB,E,E,c,C,GAEe,SAAS,EAA4B,CAAM,EACxD,OAAO,MAAO,IACZ,GAAM,CACJ,YAAa,CACX,MAAO,CAAE,SAAA,CAAQ,CAAE,SAAA,CAAQ,CAAE,SAAA,CAAQ,CAAE,CACxC,CACD,SAAU,CAAE,UAAA,CAAS,CAAE,CACxB,CAAG,EAEA,EAAQ,KACN,EAAa,MAAM,AAAA,CAAA,EAAA,EAAA,OAAU,AAAV,EAAY,EAAO,GAAG,EAyD/C,OAvCA,EAAI,QAAQ,CAAC,GAAG,CAA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","sources":["<anon>","packages/artplayer-plugin-vtt-thumbnail/src/index.js","packages/artplayer-plugin-vtt-thumbnail/src/getVttArray.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js"],"sourcesContent":["// modules are defined as an array\n// [ module function, map of requires ]\n//\n// map of requires is short require name -> numeric require\n//\n// anything defined in a previous bundle is accessed via the\n// orig method which is the require for previous bundles\n\n(function (\n modules,\n entry,\n mainEntry,\n parcelRequireName,\n externals,\n distDir,\n publicUrl,\n devServer\n) {\n /* eslint-disable no-undef */\n var globalObject =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n /* eslint-enable no-undef */\n\n // Save the require from previous bundle to this closure if any\n var previousRequire =\n typeof globalObject[parcelRequireName] === 'function' &&\n globalObject[parcelRequireName];\n\n var importMap = previousRequire.i || {};\n var cache = previousRequire.cache || {};\n // Do not use `require` to prevent Webpack from trying to bundle this call\n var nodeRequire =\n typeof module !== 'undefined' &&\n typeof module.require === 'function' &&\n module.require.bind(module);\n\n function newRequire(name, jumped) {\n if (!cache[name]) {\n if (!modules[name]) {\n if (externals[name]) {\n return externals[name];\n }\n // if we cannot find the module within our internal map or\n // cache jump to the current global require ie. the last bundle\n // that was added to the page.\n var currentRequire =\n typeof globalObject[parcelRequireName] === 'function' &&\n globalObject[parcelRequireName];\n if (!jumped && currentRequire) {\n return currentRequire(name, true);\n }\n\n // If there are other bundles on this page the require from the\n // previous one is saved to 'previousRequire'. Repeat this as\n // many times as there are bundles until the module is found or\n // we exhaust the require chain.\n if (previousRequire) {\n return previousRequire(name, true);\n }\n\n // Try the node require function if it exists.\n if (nodeRequire && typeof name === 'string') {\n return nodeRequire(name);\n }\n\n var err = new Error(\"Cannot find module '\" + name + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n }\n\n localRequire.resolve = resolve;\n localRequire.cache = {};\n\n var module = (cache[name] = new newRequire.Module(name));\n\n modules[name][0].call(\n module.exports,\n localRequire,\n module,\n module.exports,\n globalObject\n );\n }\n\n return cache[name].exports;\n\n function localRequire(x) {\n var res = localRequire.resolve(x);\n return res === false ? {} : newRequire(res);\n }\n\n function resolve(x) {\n var id = modules[name][1][x];\n return id != null ? id : x;\n }\n }\n\n function Module(moduleName) {\n this.id = moduleName;\n this.bundle = newRequire;\n this.require = nodeRequire;\n this.exports = {};\n }\n\n newRequire.isParcelRequire = true;\n newRequire.Module = Module;\n newRequire.modules = modules;\n newRequire.cache = cache;\n newRequire.parent = previousRequire;\n newRequire.distDir = distDir;\n newRequire.publicUrl = publicUrl;\n newRequire.devServer = devServer;\n newRequire.i = importMap;\n newRequire.register = function (id, exports) {\n modules[id] = [\n function (require, module) {\n module.exports = exports;\n },\n {},\n ];\n };\n\n // Only insert newRequire.load when it is actually used.\n // The code in this file is linted against ES5, so dynamic import is not allowed.\n // INSERT_LOAD_HERE\n\n Object.defineProperty(newRequire, 'root', {\n get: function () {\n return globalObject[parcelRequireName];\n },\n });\n\n globalObject[parcelRequireName] = newRequire;\n\n for (var i = 0; i < entry.length; i++) {\n newRequire(entry[i]);\n }\n\n if (mainEntry) {\n // Expose entry point to Node, AMD or browser globals\n // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js\n var mainExports = newRequire(mainEntry);\n\n // CommonJS\n if (typeof exports === 'object' && typeof module !== 'undefined') {\n module.exports = mainExports;\n\n // RequireJS\n } else if (typeof define === 'function' && define.amd) {\n define(function () {\n return mainExports;\n });\n }\n }\n})({\"a0snX\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>artplayerPluginVttThumbnail);\nvar _getVttArray = require(\"./getVttArray\");\nvar _getVttArrayDefault = parcelHelpers.interopDefault(_getVttArray);\nfunction artplayerPluginVttThumbnail(option) {\n return async (art)=>{\n const { constructor: { utils: { setStyle, isMobile, addClass } }, template: { $progress } } = art;\n let timer = null;\n const thumbnails = await (0, _getVttArrayDefault.default)(option.vtt);\n function showThumbnails($control, find, width) {\n setStyle($control, 'backgroundImage', `url(${find.url})`);\n setStyle($control, 'height', `${find.h}px`);\n setStyle($control, 'width', `${find.w}px`);\n setStyle($control, 'backgroundPosition', `-${find.x}px -${find.y}px`);\n if (width <= find.w / 2) setStyle($control, 'left', 0);\n else if (width > $progress.clientWidth - find.w / 2) setStyle($control, 'left', `${$progress.clientWidth - find.w}px`);\n else setStyle($control, 'left', `${width - find.w / 2}px`);\n }\n art.controls.add({\n name: 'vtt-thumbnail',\n position: 'top',\n index: 20,\n style: option.style || {},\n mounted ($control) {\n addClass($control, 'art-control-thumbnails');\n art.on('setBar', async (type, percentage, event)=>{\n const isMobileDroging = type === 'played' && event && isMobile;\n if (type === 'hover' || isMobileDroging) {\n const width = $progress.clientWidth * percentage;\n const second = percentage * art.duration;\n setStyle($control, 'display', 'flex');\n const find = thumbnails.find((item)=>second >= item.start && second <= item.end);\n if (!find) return setStyle($control, 'display', 'none');\n if (width > 0 && width < $progress.clientWidth) showThumbnails($control, find, width);\n else if (!isMobile) setStyle($control, 'display', 'none');\n if (isMobileDroging) {\n clearTimeout(timer);\n timer = setTimeout(()=>{\n setStyle($control, 'display', 'none');\n }, 500);\n }\n }\n });\n }\n });\n return {\n name: 'artplayerPluginVttThumbnail'\n };\n };\n}\nif (typeof window !== 'undefined') window.artplayerPluginVttThumbnail = artplayerPluginVttThumbnail;\n\n},{\"./getVttArray\":\"2bZju\",\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"2bZju\":[function(require,module,exports,__globalThis) {\nvar parcelHelpers = require(\"@parcel/transformer-js/src/esmodule-helpers.js\");\nparcelHelpers.defineInteropFlag(exports);\nparcelHelpers.export(exports, \"default\", ()=>getVttArray);\nfunction padEnd(str, targetLength, padString) {\n if (str.length > targetLength) return String(str);\n else {\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) padString += padString.repeat(targetLength / padString.length);\n return String(str) + padString.slice(0, targetLength);\n }\n}\nfunction t2d(time) {\n const arr = time.split('.');\n const left = arr[0].split(':') || [];\n const right = padEnd(arr[1] || '0', 3, '0');\n const ms = Number(right) / 1000;\n const h = Number(left[left.length - 3] || 0) * 3600;\n const m = Number(left[left.length - 2] || 0) * 60;\n const s = Number(left[left.length - 1] || 0);\n return h + m + s + ms;\n}\nasync function getVttArray(vttUrl = '') {\n const vttString = await (await fetch(vttUrl)).text();\n const lines = vttString.split(/[\\n\\r]/g).filter((item)=>item.trim());\n const vttArray = [];\n for(let i = 1; i < lines.length; i += 2){\n const time = lines[i];\n const text = lines[i + 1];\n if (!text.trim()) continue;\n const timeReg = /((?:\\d{2}:)?(?:\\d{2}:)?\\d{2}(?:.\\d{3})?) ?--> ?((?:\\d{2}:)?(?:\\d{2}:)?\\d{2}(?:.\\d{3})?)/;\n const timeMatch = time.match(timeReg);\n const textReg = /(.*)#(\\w{4})=(.*)/;\n const textMatch = text.match(textReg);\n const start = Math.floor(t2d(timeMatch[1]));\n const end = Math.floor(t2d(timeMatch[2]));\n let url = textMatch[1];\n const isAbsoluteUrl = /^\\/|(?:https?|ftp|file):\\/\\//i.test(url);\n if (!isAbsoluteUrl) {\n const urlArr = vttUrl.split('/');\n urlArr.pop();\n urlArr.push(url);\n url = urlArr.join('/');\n }\n const result = {\n start,\n end,\n url\n };\n const keys = textMatch[2].split('');\n const values = textMatch[3].split(',');\n for(let j = 0; j < keys.length; j++)result[keys[j]] = values[j];\n vttArray.push(result);\n }\n return vttArray;\n}\n\n},{\"@parcel/transformer-js/src/esmodule-helpers.js\":\"5lQoW\"}],\"5lQoW\":[function(require,module,exports,__globalThis) {\nexports.interopDefault = function(a) {\n return a && a.__esModule ? a : {\n default: a\n };\n};\nexports.defineInteropFlag = function(a) {\n Object.defineProperty(a, '__esModule', {\n value: true\n });\n};\nexports.exportAll = function(source, dest) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) return;\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function() {\n return source[key];\n }\n });\n });\n return dest;\n};\nexports.export = function(dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get\n });\n};\n\n},{}]},[\"a0snX\"], \"a0snX\", \"parcelRequire4dc0\", {})\nlet {default: _default, } = parcelRequire4dc0(\"a0snX\");\nexport {_default as default, };\n\n//# sourceMappingURL=index.js.map\n","import getVttArray from './getVttArray'\n\nexport default function artplayerPluginVttThumbnail(option) {\n return async (art) => {\n const {\n constructor: {\n utils: { setStyle, isMobile, addClass },\n },\n template: { $progress },\n } = art\n\n let timer = null\n const thumbnails = await getVttArray(option.vtt)\n\n function showThumbnails($control, find, width) {\n setStyle($control, 'backgroundImage', `url(${find.url})`)\n setStyle($control, 'height', `${find.h}px`)\n setStyle($control, 'width', `${find.w}px`)\n setStyle($control, 'backgroundPosition', `-${find.x}px -${find.y}px`)\n if (width <= find.w / 2) {\n setStyle($control, 'left', 0)\n }\n else if (width > $progress.clientWidth - find.w / 2) {\n setStyle($control, 'left', `${$progress.clientWidth - find.w}px`)\n }\n else {\n setStyle($control, 'left', `${width - find.w / 2}px`)\n }\n }\n\n art.controls.add({\n name: 'vtt-thumbnail',\n position: 'top',\n index: 20,\n style: option.style || {},\n mounted($control) {\n addClass($control, 'art-control-thumbnails')\n art.on('setBar', async (type, percentage, event) => {\n const isMobileDroging = type === 'played' && event && isMobile\n\n if (type === 'hover' || isMobileDroging) {\n const width = $progress.clientWidth * percentage\n const second = percentage * art.duration\n setStyle($control, 'display', 'flex')\n\n const find = thumbnails.find(item => second >= item.start && second <= item.end)\n if (!find)\n return setStyle($control, 'display', 'none')\n\n if (width > 0 && width < $progress.clientWidth) {\n showThumbnails($control, find, width)\n }\n else {\n if (!isMobile) {\n setStyle($control, 'display', 'none')\n }\n }\n\n if (isMobileDroging) {\n clearTimeout(timer)\n timer = setTimeout(() => {\n setStyle($control, 'display', 'none')\n }, 500)\n }\n }\n })\n },\n })\n\n return {\n name: 'artplayerPluginVttThumbnail',\n }\n }\n}\n\nif (typeof window !== 'undefined') {\n window.artplayerPluginVttThumbnail = artplayerPluginVttThumbnail\n}\n","function padEnd(str, targetLength, padString) {\n if (str.length > targetLength) {\n return String(str)\n }\n else {\n targetLength = targetLength - str.length\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length)\n }\n return String(str) + padString.slice(0, targetLength)\n }\n}\n\nfunction t2d(time) {\n const arr = time.split('.')\n const left = arr[0].split(':') || []\n const right = padEnd(arr[1] || '0', 3, '0')\n const ms = Number(right) / 1000\n\n const h = Number(left[left.length - 3] || 0) * 3600\n const m = Number(left[left.length - 2] || 0) * 60\n const s = Number(left[left.length - 1] || 0)\n return h + m + s + ms\n}\n\nexport default async function getVttArray(vttUrl = '') {\n const vttString = await (await fetch(vttUrl)).text()\n const lines = vttString.split(/[\\n\\r]/g).filter(item => item.trim())\n const vttArray = []\n\n for (let i = 1; i < lines.length; i += 2) {\n const time = lines[i]\n const text = lines[i + 1]\n\n if (!text.trim())\n continue\n\n const timeReg\n = /((?:\\d{2}:)?(?:\\d{2}:)?\\d{2}(?:.\\d{3})?) ?--> ?((?:\\d{2}:)?(?:\\d{2}:)?\\d{2}(?:.\\d{3})?)/\n const timeMatch = time.match(timeReg)\n\n const textReg = /(.*)#(\\w{4})=(.*)/\n const textMatch = text.match(textReg)\n\n const start = Math.floor(t2d(timeMatch[1]))\n const end = Math.floor(t2d(timeMatch[2]))\n\n let url = textMatch[1]\n const isAbsoluteUrl = /^\\/|(?:https?|ftp|file):\\/\\//i.test(url)\n if (!isAbsoluteUrl) {\n const urlArr = vttUrl.split('/')\n urlArr.pop()\n urlArr.push(url)\n url = urlArr.join('/')\n }\n\n const result = { start, end, url }\n\n const keys = textMatch[2].split('')\n const values = textMatch[3].split(',')\n\n for (let j = 0; j < keys.length; j++) {\n result[keys[j]] = values[j]\n }\n\n vttArray.push(result)\n }\n\n return vttArray\n}\n","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (\n key === 'default' ||\n key === '__esModule' ||\n Object.prototype.hasOwnProperty.call(dest, key)\n ) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n"],"names":["modules","entry","mainEntry","parcelRequireName","externals","distDir","publicUrl","devServer","globalObject","globalThis","self","window","global","previousRequire","importMap","i","cache","nodeRequire","module","require","bind","newRequire","name","jumped","currentRequire","err","Error","code","localRequire","resolve","x","id","Module","call","exports","res","isParcelRequire","moduleName","bundle","parent","register","Object","defineProperty","get","length","mainExports","define","amd","__globalThis","parcelHelpers","defineInteropFlag","export","artplayerPluginVttThumbnail","_getVttArray","_getVttArrayDefault","interopDefault","option","art","utils","setStyle","isMobile","addClass","template","$progress","timer","thumbnails","default","vtt","controls","add","position","index","style","mounted","$control","on","type","percentage","event","isMobileDroging","width","clientWidth","second","duration","find","item","start","end","url","h","w","y","clearTimeout","setTimeout","t2d","time","str","targetLength","padString","arr","split","left","ms","Number","String","repeat","slice","getVttArray","vttUrl","lines","vttString","fetch","text","filter","trim","vttArray","timeReg","timeMatch","match","textReg","textMatch","Math","floor","test","urlArr","pop","push","join","result","keys","values","j","a","__esModule","value","exportAll","source","dest","forEach","key","prototype","hasOwnProperty","enumerable","destName","_default","parcelRequire4dc0"],"version":3,"file":"index.js.map"} |