(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (factory((global['artplayer-plugin-subtitle'] = {}))); }(this, (function (exports) { 'use strict'; function i18nMix(i18n) { i18n.update({ 'zh-cn': { 'Subtitle offset time': '字幕偏移时间' }, 'zh-tw': { 'Subtitle offset time': '字幕偏移時間' } }); } function settingMix(art) { var i18n = art.i18n, proxy = art.events.proxy; return { title: 'Subtitle', name: 'subtitle', index: 20, html: "\n
\n ".concat(i18n.get('Subtitle offset time'), ": 0s\n
\n
\n \n
\n "), mounted: function mounted($setting) { var $range = $setting.querySelector('.art-subtitle-range'); var $value = $setting.querySelector('.art-subtitle-value'); proxy($range, 'change', function () { var value = $range.value; $value.innerText = value; art.plugins.artplayerPluginSubtitle.offset(Number(value)); }); art.on('subtitle:switch', function () { $range.value = 0; $value.innerText = 0; }); art.on('artplayerPluginSubtitle:set', function (value) { if ($range.value !== value) { $range.value = value; $value.innerText = value; } }); } }; } function artplayerPluginSubtitle(art) { var clamp = art.constructor.utils.clamp; var setting = art.setting, notice = art.notice, template = art.template, i18n = art.i18n; i18nMix(i18n); setting.add(settingMix); var cuesCache = []; art.on('subtitle:switch', function () { cuesCache = []; }); return { offset: function offset(value) { var cues = Array.from(template.$track.track.cues); var time = clamp(value, -5, 5); cues.forEach(function (cue, index) { if (!cuesCache[index]) { cuesCache[index] = { startTime: cue.startTime, endTime: cue.endTime }; } cue.startTime = cuesCache[index].startTime + time; cue.endTime = cuesCache[index].endTime + time; }); notice.show("".concat(i18n.get('Subtitle offset time'), ": ").concat(value, "s")); art.emit('artplayerPluginSubtitle:set', value); } }; } window.artplayerPluginSubtitle = artplayerPluginSubtitle; exports.default = artplayerPluginSubtitle; Object.defineProperty(exports, '__esModule', { value: true }); })));