EmbyCrackedClient/web/modules/subtitleoffsetoverlay/subtitleoffsetoverlay.js

1 line
5.7 KiB
JavaScript
Raw Normal View History

2025-06-25 11:46:04 +08:00
import dialogHelper from"./../dialoghelper/dialoghelper.js";import globalize from"./../common/globalize.js";import events from"./../emby-apiclient/events.js";import dom from"./../dom.js";import layoutManager from"./../layoutmanager.js";import playbackManager from"./../common/playback/playbackmanager.js";import"./../emby-elements/emby-button/emby-button.js";import"./../emby-elements/emby-button/paper-icon-button-light.js";import"./../emby-elements/emby-dialogclosebutton/emby-dialogclosebutton.js";import"./../emby-elements/emby-slider/emby-slider.js";function SubtitleOffsetDialog(options){this.options=options}require(["material-icons","formDialogStyle"]);let IncrementStepMs=100;function onStepUpClick(){playbackManager.incrementSubtitleOffset(IncrementStepMs,this.options.player)}function onStepDownClick(){playbackManager.incrementSubtitleOffset(-1*IncrementStepMs,this.options.player)}function getEditorHtml(){var html="",buttonClass=layoutManager.tv?" hide":"";return html+'<div class="formDialogContent">'+'<div style="padding-top:.5em;" class="verticalFieldItems dialogContentInner dialogContentInner-normalbottompadding dialog-content-centered dialog-content-centered-mini padded-left padded-right">'+'<h3 class="subtitleOverlayOffsetText verticalFieldItem secondaryText" style="margin:0; text-align:center;"><span class="offsetValue"></span></h3>'+'<div class="flex align-items-center verticalFieldItem buttonItems focuscontainer-x" style="margin:1.25em 0;">'+('<button is="paper-icon-button-light" type="button" class="buttonItems-item flex-shrink-zero btnStepDown'+buttonClass+'" title="'+globalize.translate("Down")+'" aria-label="'+globalize.translate("Down")+'"><i class="md-icon autortl md-icon-fill">&#xe020;</i></button>')+'<div class="buttonItems-item subtitleOffsetSliderContainer sliderContainer flex-grow">'+('<input type="range" is="emby-slider" step="'+IncrementStepMs+'" min="-120000" max="120000" value="0" class="autofocus subtitleOffsetSlider" data-bubble="false" />')+"</div>"+('<button is="paper-icon-button-light" type="button" class="buttonItems-item flex-shrink-zero btnStepUp'+buttonClass+'" title="'+globalize.translate("Up")+'" aria-label="'+globalize.translate("Up")+'"><i class="md-icon autortl md-icon-fill">&#xe01f;</i></button>')+"</div>"+'<div class="buttonItems verticalFieldItem flex align-items-center justify-content-center" style="margin-bottom:.75em;">'+('<button is="emby-button" type="button" class="flex-shrink-zero btnReset raised raised-mini nobackdropfilter" title="'+globalize.translate("Reset")+'" aria-label="'+globalize.translate("Reset")+'">'+globalize.translate("Reset")+"</button>")+"</div>"+"</div>"+"</div>"}function onDialogClosed(){return unbindEvents(this,this.options.player),Promise.resolve()}function onResetButtonClick(e){playbackManager.setSubtitleOffset(0,this.options.player)}function onSliderChange(e){e=e.target,e=parseInt(e.value);console.log("slider value: "+e+" - "+typeof e),playbackManager.setSubtitleOffset(e,this.options.player)}function renderData(instance,offsetValue){instance.dlg.querySelector(".offsetValue").innerHTML=getBubbleText(offsetValue),setSliderValue(instance.dlg.querySelector(".subtitleOffsetSlider"),offsetValue)}function refreshData(instance,player){renderData(instance,playbackManager.getSubtitleOffset(player))}function bindEvents(instance,player){function localOnSubtitleOffsetChange(e){refreshData(instance,player)}instance.localOnSubtitleOffsetChange=localOnSubtitleOffsetChange,events.on(player,"subtitleoffsetchange",localOnSubtitleOffsetChange)}function unbindEvents(instance,player){instance=instance.localOnSubtitleOffsetChange;instance&&events.off(player,"subtitleoffsetchange",instance)}function setSliderValue(slider,value){slider.dragging||(slider.setValue?slider.setValue(value):slider.waitForCustomElementUpgrade().then(function(){slider.setValue(value)}))}function getTimeInSeconds(ms){return 1e3<=Math.abs(ms)?(ms/=1e3).toFixed(1)+" seconds":ms+" ms"}function getBubbleText(value){return getTimeInSeconds(value)}SubtitleOffsetDialog.prototype.show=function(){this.dlg||(di