') +
+ '
') +
+ (chapter ? _dom.default.htmlEncode(chapter.Name) : " ")) +
+ "
" +
+ (thumbnailSet
+ ? '
'
+ : '
')) +
+ _datetime.default.getDisplayRunningTime(positionTicks)) +
+ "
" +
+ "
")
+ );
+ }
+ function onStop() {
+ _playbackmanager.default.stop(self.currentPlayer);
+ }
+ _dom.default.addEventListener(
+ view,
+ window.PointerEvent && !_dom.default.supportsPointerTypeInClickEvent()
+ ? "pointerup"
+ : "click",
+ function (e) {
+ var isEnoughTimeSinceLastTap,
+ pointerType = e.pointerType;
+ "touch" ===
+ (lastPointerUpType = pointerType =
+ pointerType || (supportsTouchEvent ? "touch" : "mouse"))
+ ? e.target.closest("BUTTON,INPUT,.videoosd-tabcontainers")
+ ? self.showOsd()
+ : (!(isEnoughTimeSinceLastTap =
+ 300 < (pointerType = Date.now()) - lastPointerEvent) &&
+ "click" !== e.type) ||
+ ((lastPointerEvent = pointerType),
+ self.currentVisibleMenu
+ ? setTimeout(self.boundHideOsd, 10)
+ : self.currentVisibleMenu ||
+ (isEnoughTimeSinceLastTap &&
+ setTimeout(self.boundShowOsdDefaultParams, 100)))
+ : onOsdClick(e, self, null, !0);
+ },
+ { passive: !0 },
+ ),
+ _dom.default.addEventListener(
+ view,
+ "dblclick",
+ function (e) {
+ e.target.closest("BUTTON") ||
+ ("mouse" === lastPointerUpType &&
+ _playbackmanager.default.toggleFullscreen(self.currentPlayer));
+ },
+ { passive: !0 },
+ ),
+ _dom.default.addEventListener(
+ buttonMute,
+ "click",
+ function () {
+ _playbackmanager.default.toggleMute(self.currentPlayer);
+ },
+ { passive: !0 },
+ ),
+ _dom.default.addEventListener(
+ brightnessSlider,
+ "change",
+ function () {
+ _playbackmanager.default.setBrightness(
+ parseFloat(this.value),
+ self.currentPlayer,
+ ),
+ self.showOsd();
+ },
+ { passive: !0 },
+ ),
+ _dom.default.addEventListener(
+ brightnessSlider,
+ "input",
+ function () {
+ _playbackmanager.default.setBrightness(
+ parseFloat(this.value),
+ self.currentPlayer,
+ ),
+ self.showOsd();
+ },
+ { passive: !0 },
+ ),
+ _dom.default.addEventListener(
+ nowPlayingVolumeSlider,
+ "change",
+ function () {
+ _playbackmanager.default.setVolume(
+ parseFloat(this.value),
+ self.currentPlayer,
+ ),
+ self.showOsd();
+ },
+ { passive: !0 },
+ ),
+ _dom.default.addEventListener(
+ self.nowPlayingPositionSlider,
+ "change",
+ function () {
+ var newPercent,
+ seekAirTimeTicks,
+ player = self.currentPlayer;
+ player &&
+ ((newPercent = parseFloat(this.value)),
+ enableProgressByTimeOfDay
+ ? ((seekAirTimeTicks =
+ (seekAirTimeTicks =
+ (newPercent / 100) *
+ (programEndDateMs - programStartDateMs) *
+ 1e4) +
+ 1e4 * programStartDateMs -
+ playbackStartTimeTicks),
+ _playbackmanager.default.seek(seekAirTimeTicks, player))
+ : _playbackmanager.default.seekPercent(newPercent, player));
+ },
+ { passive: !0 },
+ ),
+ (self.nowPlayingPositionSlider.getBubbleHtml = function (value) {
+ if ((self.showOsd(), enableProgressByTimeOfDay))
+ return programStartDateMs && programEndDateMs
+ ? ((ms = programEndDateMs - programStartDateMs),
+ (ms = (ms /= 100) * value + programStartDateMs),
+ '
' +
+ getDisplayTimeWithoutAmPm(new Date(parseInt(ms)), !0) +
+ "
")
+ : "--:--";
+ if (!currentRuntimeTicks) return "--:--";
+ var ms = currentRuntimeTicks,
+ value = ((ms = (ms / 100) * value), self.currentItem);
+ if (value) {
+ var apiClient = _connectionmanager.default.getApiClient(
+ value.ServerId,
+ ),
+ thumbnails =
+ (refreshThumbnailsIfNeeded(value, "", apiClient, 400),
+ currentItemThumbnails),
+ chapters = currentDisplayChapters || [];
+ if (chapters.length) {
+ apiClient = getThumbnailBubbleHtml(
+ apiClient,
+ value.Id,
+ 0,
+ thumbnails,
+ chapters,
+ ms,
+ 400,
+ );
+ if (apiClient) return apiClient;
+ }
+ }
+ return (
+ '
' +
+ _datetime.default.getDisplayRunningTime(ms) +
+ "
"
+ );
+ }),
+ _dom.default.addEventListener(
+ self.osdBottomElement,
+ transitionEndEventName,
+ function (e) {
+ var elem = e.currentTarget;
+ elem === e.target &&
+ elem.classList.contains("videoOsdBottom-hidden") &&
+ (elem.classList.add("hide"),
+ headerElement.classList.add("hide"),
+ self.bottomTabs.selectedIndex(-1),
+ onTabTransitionEnd.call(tabContainersElem, {
+ target: tabContainersElem,
+ currentTarget: tabContainersElem,
+ }),
+ 2 === self.currentLockState && self.setLockState(1),
+ view.dispatchEvent(
+ new CustomEvent("video-osd-hide", { bubbles: !0 }),
+ ));
+ },
+ { passive: !0 },
+ ),
+ _dom.default.addEventListener(
+ btnPreviousTrack,
+ "click",
+ function () {
+ _playbackmanager.default.previousTrack(self.currentPlayer);
+ },
+ { passive: !0 },
+ );
+ for (var _i18 = 0, _length18 = stopButtons.length; _i18 < _length18; _i18++)
+ stopButtons[_i18].addEventListener("click", onStop);
+ function onNextTrackClick() {
+ _playbackmanager.default.nextTrack(self.currentPlayer);
+ }
+ function onRewindButtonClick() {
+ rewind(self, !0);
+ }
+ _dom.default.addEventListener(
+ self.btnPause,
+ "click",
+ function () {
+ _playbackmanager.default.playPause(self.currentPlayer);
+ },
+ { passive: !0 },
+ ),
+ _dom.default.addEventListener(btnNextTrack, "click", onNextTrackClick, {
+ passive: !0,
+ });
+ for (
+ var _i19 = 0, _length19 = rewindButtons.length;
+ _i19 < _length19;
+ _i19++
+ )
+ _dom.default.addEventListener(
+ rewindButtons[_i19],
+ "click",
+ onRewindButtonClick,
+ { passive: !0 },
+ );
+ function onFastForwardButtonClick() {
+ fastForward(self, !0);
+ }
+ for (
+ var _i20 = 0, _length20 = fastForwardButtons.length;
+ _i20 < _length20;
+ _i20++
+ )
+ _dom.default.addEventListener(
+ fastForwardButtons[_i20],
+ "click",
+ onFastForwardButtonClick,
+ { passive: !0 },
+ );
+ function onMoreClick() {
+ showMoreMenu(self.currentItem, this);
+ }
+ function onCloseRequestedFromTab() {
+ self.bottomTabs.selectedIndex(-1);
+ }
+ function loadBottomTabController(index, forceRefresh) {
+ var tabResumeOptions = {
+ refresh: forceRefresh,
+ item: self.currentItem,
+ displayItem: currentDisplayItem,
+ mediaSource: currentMediaSource,
+ enableProgressByTimeOfDay: enableProgressByTimeOfDay,
+ currentPlayer: self.currentPlayer,
+ },
+ bottomTabControllers = self.bottomTabControllers;
+ if (bottomTabControllers[index])
+ return bottomTabControllers[index].onResume(tabResumeOptions);
+ require([
+ [
+ "videoosd_infotab",
+ "videoosd_chapterstab",
+ "videoosd_peopletab",
+ "videoosd_onnowtab",
+ "videoosd_guidetab",
+ ][index],
+ ]).then(function (responses) {
+ responses = new responses[0](tabContainers[index]);
+ return (
+ (bottomTabControllers[index] = responses),
+ (tabResumeOptions.refresh = !0),
+ _events.default.on(
+ responses,
+ "closerequested",
+ onCloseRequestedFromTab,
+ ),
+ responses.onResume(tabResumeOptions)
+ );
+ });
+ }
+ function onTabTransitionEnd(e) {
+ var elem = e.currentTarget;
+ elem === e.target &&
+ elem.classList.contains("videoosd-tabcontainers-hidden") &&
+ (elem.classList.add("hide"),
+ self.osdBottomElement.classList.remove("videoosd-bottom-with-opentab"),
+ (e = elem.querySelector(".videoosd-activetab")) &&
+ e.classList.remove("videoosd-activetab"),
+ focusMainOsdControls(self));
+ }
+ function setContentSection(sectionName, saveToUserSettings) {
+ currentOsdContentSectionName = sectionName;
+ for (
+ var sections = view.querySelectorAll(".osdContentSection"),
+ _i21 = 0,
+ _length21 = sections.length;
+ _i21 < _length21;
+ _i21++
+ ) {
+ var section = sections[_i21];
+ section.getAttribute("data-contentsection") === sectionName
+ ? section.classList.remove("hide")
+ : section.classList.add("hide");
+ }
+ for (
+ var buttons = view.querySelectorAll(".osdContentSectionToggleButton"),
+ _i22 = 0,
+ _length22 = buttons.length;
+ _i22 < _length22;
+ _i22++
+ ) {
+ var button = buttons[_i22],
+ icon = button.querySelector("i");
+ button.getAttribute("data-contentsection") === sectionName
+ ? (button.classList.add("toggleButton-active"),
+ icon.classList.add("toggleButtonIcon-active"))
+ : (button.classList.remove("toggleButton-active"),
+ icon.classList.remove("toggleButtonIcon-active"));
+ }
+ var playQueue = self.playQueue,
+ playQueue =
+ ("playqueue" === sectionName
+ ? playQueue && playQueue.resume({})
+ : playQueue && playQueue.pause(),
+ self.lyricsRenderer),
+ playQueue =
+ ("lyrics" === sectionName
+ ? playQueue && playQueue.resume({})
+ : playQueue && playQueue.pause(),
+ self.osdBottomElement);
+ _layoutmanager.default.tv
+ ? (sectionName && "playqueue" !== sectionName && "art" !== sectionName
+ ? playQueue.classList.add("videoOsdBottom-split")
+ : playQueue.classList.remove("videoOsdBottom-split"),
+ sectionName && "lyrics" !== sectionName && "art" !== sectionName
+ ? playQueue.classList.remove("videoOsdBottom-art")
+ : playQueue.classList.add("videoOsdBottom-art"))
+ : sectionName && "art" !== sectionName
+ ? (playQueue.classList.add("videoOsdBottom-split"),
+ playQueue.classList.remove("videoOsdBottom-art"))
+ : (playQueue.classList.remove("videoOsdBottom-split"),
+ playQueue.classList.add("videoOsdBottom-art")),
+ !1 !== saveToUserSettings &&
+ _usersettings.default.osdContentSection(sectionName);
+ }
+ function onContentSectionToggleButtonClick(e) {
+ this.classList.contains("toggleButton-active")
+ ? setContentSection("art")
+ : setContentSection(this.getAttribute("data-contentsection"));
+ }
+ function onSkipIntroClickInternal() {
+ var info = currentIntroInfo,
+ player = self.currentPlayer;
+ info &&
+ player &&
+ (_playbackmanager.default.seek(info.end, player),
+ showHideSkipIntro(!1),
+ self.hideOsd());
+ }
+ function onLockClick() {
+ var lockState = self.currentLockState;
+ switch (lockState) {
+ case 0:
+ case 1:
+ lockState++;
+ break;
+ default:
+ lockState = 0;
+ }
+ self.setLockState(lockState);
+ }
+ _dom.default.addEventListener(
+ btnRepeatMode,
+ "click",
+ function () {
+ var player;
+ (player = self.currentPlayer) &&
+ _playbackmanager.default.toggleRepeatMode(player);
+ },
+ { passive: !0 },
+ ),
+ _dom.default.addEventListener(btnOsdMoreBottom, "click", onMoreClick, {
+ passive: !0,
+ }),
+ _dom.default.addEventListener(btnOsdMoreTitle, "click", onMoreClick, {
+ passive: !0,
+ }),
+ _dom.default.addEventListener(
+ btnAudio,
+ "click",
+ function () {
+ var currentIndex,
+ audioTracks,
+ player = self.currentPlayer;
+ player &&
+ ((audioTracks = _playbackmanager.default.audioTracks(player)),
+ (currentIndex =
+ _playbackmanager.default.getAudioStreamIndex(player)),
+ (audioTracks = audioTracks.map(function (stream) {
+ var opt = {
+ name: stream.DisplayTitle,
+ secondaryText:
+ stream.Title &&
+ !(stream.DisplayTitle || "")
+ .toLowerCase()
+ .includes((stream.Title || "").toLowerCase())
+ ? stream.Title
+ : null,
+ id: stream.Index,
+ };
+ return stream.Index === currentIndex && (opt.selected = !0), opt;
+ })),
+ self.showOsd(),
+ showActionSheet({
+ items: audioTracks,
+ title: _globalize.default.translate("Audio"),
+ positionTo: this,
+ positionY: "above",
+ transformOrigin: "center bottom",
+ hasItemSelectionState: !0,
+ autoTvLayout: !1,
+ }).then(function (id) {
+ self.showOsd();
+ id = parseInt(id);
+ id !== currentIndex &&
+ _playbackmanager.default.setAudioStreamIndex(id, player);
+ }, self.boundShowOsdDefaultParams));
+ },
+ { passive: !0 },
+ ),
+ _dom.default.addEventListener(
+ btnSubtitles,
+ "click",
+ function () {
+ var player = self.currentPlayer,
+ streams = _playbackmanager.default.subtitleTracks(player),
+ currentIndex =
+ _playbackmanager.default.getSubtitleStreamIndex(player),
+ menuItems =
+ (null == currentIndex && (currentIndex = -1),
+ streams.unshift({
+ Index: -1,
+ DisplayTitle: _globalize.default.translate("Off"),
+ }),
+ streams.map(function (stream) {
+ var opt = {
+ name: stream.DisplayTitle,
+ secondaryText:
+ stream.Title &&
+ !(stream.DisplayTitle || "")
+ .toLowerCase()
+ .includes((stream.Title || "").toLowerCase())
+ ? stream.Title
+ : null,
+ id: stream.Index,
+ };
+ return (
+ stream.Index === currentIndex && (opt.selected = !0), opt
+ );
+ })),
+ positionTo = this;
+ (streams = _connectionmanager.default.getApiClient(self.currentItem))
+ .getCurrentUser()
+ .then(function (user) {
+ supportsSubtitleDownloading() &&
+ _itemmanager.default.canDownloadSubtitles(
+ self.currentItem,
+ user,
+ ) &&
+ self.showOsd(),
+ showActionSheet({
+ title: _globalize.default.translate("Subtitles"),
+ items: menuItems,
+ positionTo: positionTo,
+ positionY: "above",
+ transformOrigin: "center bottom",
+ hasItemSelectionState: !0,
+ hasItemAsideIcon: !0,
+ autoTvLayout: !1,
+ }).then(function (id) {
+ var item, mediaSource;
+ self.showOsd(),
+ "search" === id
+ ? ((item = self.currentItem),
+ (mediaSource = currentMediaSource),
+ require([
+ "registrationServices",
+ "subtitleEditor",
+ ]).then(function (responses) {
+ return responses[0]
+ .validateFeature("sync")
+ .then(function () {
+ return responses[1]
+ .show({
+ item: item,
+ mediaSource: mediaSource,
+ showCurrentSubtitles: !1,
+ autoSearch: !0,
+ closeOnDownload: !0,
+ })
+ .then(function (result) {
+ self.showOsd(),
+ _playbackmanager.default.setSubtitleStreamIndex(
+ result.NewIndex,
+ self.currentPlayer,
+ !0,
+ );
+ }, self.boundShowOsdDefaultParams);
+ });
+ }))
+ : "subtitleoffset" === id
+ ? toggleSubtitleOffset()
+ : (id = parseInt(id)) !== currentIndex &&
+ _playbackmanager.default.setSubtitleStreamIndex(
+ id,
+ player,
+ );
+ }, self.boundShowOsdDefaultParams);
+ });
+ },
+ { passive: !0 },
+ ),
+ (videoOsdBottomContentbuttons.getFocusableElements =
+ videoOsdBottomButtons.getFocusableElements =
+ function (parent, activeElement, direction, options) {
+ if (!_layoutmanager.default.tv) return null;
+ switch (direction) {
+ case 0:
+ case 1:
+ return Array.prototype.slice
+ .call(videoOsdBottomButtons.querySelectorAll("button"), 0)
+ .concat(
+ Array.prototype.slice.call(
+ videoOsdBottomContentbuttons.querySelectorAll("button"),
+ 0,
+ ),
+ );
+ default:
+ return null;
+ }
+ }),
+ self.bottomTabs.addEventListener("beforetabchange", function (e) {
+ var previousPanel,
+ newPanel = tabContainers[e.detail.selectedTabIndex];
+ null != e.detail.previousIndex &&
+ ((previousPanel = tabContainers[e.detail.previousIndex]) &&
+ newPanel &&
+ previousPanel.classList.remove("videoosd-activetab"),
+ (previousPanel =
+ self.bottomTabControllers[e.detail.previousIndex])) &&
+ previousPanel.onPause(),
+ newPanel
+ ? (loadBottomTabController(e.detail.selectedTabIndex),
+ newPanel.classList.add("videoosd-activetab"),
+ tabContainersElem.classList.remove("hide"),
+ tabContainersElem.offsetWidth,
+ tabContainersElem.classList.remove(
+ "videoosd-tabcontainers-hidden",
+ ),
+ self.osdBottomElement.classList.add(
+ "videoosd-bottom-with-opentab",
+ ),
+ btnCloseTabContent.classList.remove("hide"))
+ : (tabContainersElem.classList.add("videoosd-tabcontainers-hidden"),
+ btnCloseTabContent.classList.add("hide"));
+ }),
+ btnCloseTabContent.addEventListener("click", function () {
+ self.bottomTabs.selectedIndex(-1);
+ }),
+ _dom.default.addEventListener(
+ tabContainersElem,
+ transitionEndEventName,
+ onTabTransitionEnd,
+ { passive: !0 },
+ ),
+ _inputmanager.default.on(self.bottomTabs, function (e) {
+ switch (e.detail.command) {
+ case "up":
+ -1 !== self.bottomTabs.selectedIndex() &&
+ (self.bottomTabs.selectedIndex(-1),
+ e.preventDefault(),
+ e.stopPropagation(),
+ self.showOsd());
+ break;
+ case "down":
+ var btn;
+ -1 === self.bottomTabs.selectedIndex() &&
+ ((btn = e.target.closest(".videoosd-tab-button"))
+ ? self.bottomTabs.selectedIndex(
+ parseInt(btn.getAttribute("data-index")),
+ )
+ : self.bottomTabs.selectedIndex(-1));
+ }
+ });
+ for (
+ var lockButtons = view.querySelectorAll(".videoOsd-btnToggleLock"),
+ _i24 = 0,
+ _length24 = lockButtons.length;
+ _i24 < _length24;
+ _i24++
+ )
+ _dom.default.addEventListener(lockButtons[_i24], "click", onLockClick, {
+ passive: !0,
+ });
+ if (
+ (_dom.default.addEventListener(
+ btnHideUpNext,
+ "click",
+ function () {
+ showHideUpNext(!1);
+ },
+ { passive: !0 },
+ ),
+ _dom.default.addEventListener(
+ view.querySelector(".btnPlayNextFromUpNext"),
+ "click",
+ onNextTrackClick,
+ { passive: !0 },
+ ),
+ _dom.default.addEventListener(
+ btnSkipIntro,
+ "click",
+ function () {
+ if (!skipIntroValidated)
+ return validateSkipIntroFeature().then(onSkipIntroClickInternal);
+ onSkipIntroClickInternal();
+ },
+ { passive: !0 },
+ ),
+ _dom.default.addEventListener(
+ view.querySelector(".btnPlayQueue"),
+ "click",
+ onContentSectionToggleButtonClick,
+ { passive: !0 },
+ ),
+ _dom.default.addEventListener(
+ btnLyrics,
+ "click",
+ onContentSectionToggleButtonClick,
+ { passive: !0 },
+ ),
+ _dom.default.allowBackdropFilter())
+ )
+ for (
+ var toggleButtonIcons = view.querySelectorAll(".toggleButtonIcon"),
+ _i25 = 0,
+ _length25 = toggleButtonIcons.length;
+ _i25 < _length25;
+ _i25++
+ )
+ toggleButtonIcons[_i25].classList.add(
+ "toggleButtonIcon-backdropfilter",
+ );
+ _inputmanager.default.on(self.nowPlayingPositionSlider, function (e) {
+ var stepUpCommand,
+ stepDownCommand =
+ "rtl" === document.dir
+ ? ((stepUpCommand = "left"), "right")
+ : ((stepUpCommand = "right"), "left");
+ switch (e.detail.command) {
+ case stepDownCommand:
+ case "rewind":
+ e.preventDefault(),
+ (nowPlayingSliderValue = e.detail.repeat
+ ? Math.min(
+ Math.max(
+ nowPlayingSliderValue - parseFloat(this.step),
+ this.min,
+ ),
+ this.max,
+ )
+ : Math.min(
+ Math.max(
+ nowPlayingSliderValue -
+ convertMsToNowPlayingSliderStep(
+ _usersettings.default.skipBackLength(),
+ ),
+ this.min,
+ ),
+ this.max,
+ )),
+ this.beginEditing(nowPlayingSliderValue),
+ startEndEditTimeoutForPositionSlider();
+ break;
+ case stepUpCommand:
+ case "fastforward":
+ e.preventDefault(),
+ (nowPlayingSliderValue = e.detail.repeat
+ ? Math.min(
+ Math.max(
+ nowPlayingSliderValue + parseFloat(this.step),
+ this.min,
+ ),
+ this.max,
+ )
+ : Math.min(
+ Math.max(
+ nowPlayingSliderValue +
+ convertMsToNowPlayingSliderStep(
+ _usersettings.default.skipForwardLength(),
+ ),
+ this.min,
+ ),
+ this.max,
+ )),
+ this.beginEditing(nowPlayingSliderValue),
+ startEndEditTimeoutForPositionSlider();
+ break;
+ case "pageup":
+ e.preventDefault(),
+ _playbackmanager.default.nextChapter(self.currentPlayer);
+ break;
+ case "pagedown":
+ e.preventDefault(),
+ _playbackmanager.default.previousChapter(self.currentPlayer);
+ break;
+ case "back":
+ cancelPositionSliderEditing();
+ break;
+ case "play":
+ case "playpause":
+ self.nowPlayingPositionSlider.dragging &&
+ (e.preventDefault(),
+ e.stopPropagation(),
+ self.nowPlayingPositionSlider.endEditing(
+ !0,
+ nowPlayingSliderValue,
+ ));
+ break;
+ case "select":
+ self.nowPlayingPositionSlider.dragging
+ ? (e.preventDefault(),
+ e.stopPropagation(),
+ self.nowPlayingPositionSlider.endEditing(
+ !0,
+ nowPlayingSliderValue,
+ ))
+ : _playbackmanager.default.playPause(self.currentPlayer);
+ }
+ }),
+ self.nowPlayingPositionSlider.addEventListener("keydown", function (e) {
+ var key = _keyboard.default.normalizeKeyFromEvent(e);
+ ("Enter" !== key && " " !== key) ||
+ (this.dragging &&
+ (e.preventDefault(),
+ e.stopPropagation(),
+ this.endEditing(!0, nowPlayingSliderValue)));
+ }),
+ self.nowPlayingPositionSlider.addEventListener("blur", function (e) {
+ cancelPositionSliderEditing();
+ });
+ for (
+ var sections = view.querySelectorAll(".osdContentSection"),
+ _i23 = 0,
+ _length23 = sections.length;
+ _i23 < _length23;
+ _i23++
+ ) {
+ var section = sections[_i23];
+ (_layoutmanager.default.tv &&
+ "lyrics" !== section.getAttribute("data-contentsection")) ||
+ section.classList.add("osdContentSection-split"),
+ _layoutmanager.default.tv &&
+ "lyrics" === section.getAttribute("data-contentsection") &&
+ section.classList.add("osdContentSection-tv-split");
+ }
+ _shortcuts.default.on(this.videoOsdText),
+ (this.boundHideOsd = this.hideOsd.bind(this)),
+ (this.boundShowOsdDefaultParams = function () {
+ this.showOsd();
+ }.bind(this)),
+ (this.boundOnOsdHideTimeout = function () {
+ _focusmanager.default.hasExclusiveFocusScope() ||
+ 0 <= this.bottomTabs.selectedIndex()
+ ? startOsdHideTimer(this)
+ : this.mouseOverButton || this.hideOsd();
+ }.bind(this));
+ }
+ Object.assign(VideoOsd.prototype, _baseview.default.prototype),
+ (VideoOsd.prototype.enableWindowInputCommands = function () {
+ return !0;
+ }),
+ (VideoOsd.prototype.onWindowInputCommand = function (e) {
+ var mediaType;
+ switch (e.detail.command) {
+ case "back":
+ var upNextContainer = e.target.closest(".upNextContainer");
+ return upNextContainer
+ ? (e.preventDefault(),
+ void upNextContainer.querySelector(".btnHideUpNext").click())
+ : void (
+ !_layoutmanager.default.tv ||
+ _focusmanager.default.hasExclusiveFocusScope() ||
+ ((upNextContainer =
+ null == (upNextContainer = e.detail.originalEvent)
+ ? void 0
+ : upNextContainer.target) &&
+ headerElement.contains(upNextContainer)) ||
+ (isDisplayingLocalVideo(this.currentPlayer)
+ ? this.currentVisibleMenu &&
+ !this.upNextContainer._visible &&
+ (e.preventDefault(), this.hideOsd())
+ : !this.currentVisibleMenu &&
+ (upNextContainer = this.currentPlayer) &&
+ upNextContainer.isLocalPlayer &&
+ (mediaType ||
+ _playbackmanager.default.isPlaying(upNextContainer)) &&
+ (e.preventDefault(), this.showOsd()))
+ );
+ case "left":
+ return e.target.closest(".skipIntroContainer,.upNextContainer")
+ ? void 0
+ : void (
+ "rtl" === document.dir
+ ? onFastForwardInputCommand
+ : onRewindInputCommand
+ )(e, this);
+ case "rewind":
+ return void onRewindInputCommand(e, this);
+ case "right":
+ return e.target.closest(".skipIntroContainer,.upNextContainer")
+ ? void 0
+ : void (
+ "rtl" === document.dir
+ ? onRewindInputCommand
+ : onFastForwardInputCommand
+ )(e, this);
+ case "fastforward":
+ return void onFastForwardInputCommand(e, this);
+ case "pageup":
+ return void _playbackmanager.default.nextChapter(this.currentPlayer);
+ case "pagedown":
+ return void _playbackmanager.default.previousChapter(
+ this.currentPlayer,
+ );
+ case "playpause":
+ e.preventDefault(), e.stopPropagation();
+ var isPaused =
+ null == (upNextContainer = this.currentPlayer)
+ ? void 0
+ : upNextContainer.paused();
+ return (
+ _playbackmanager.default.playPause(this.currentPlayer),
+ void (
+ (this.currentVisibleMenu ||
+ (shouldOsdBeShown(this) && !isPaused)) &&
+ this.showOsd()
+ )
+ );
+ case "play":
+ e.preventDefault(), e.stopPropagation();
+ isPaused =
+ null == (isPaused = this.currentPlayer)
+ ? void 0
+ : isPaused.paused();
+ return (
+ _playbackmanager.default.unpause(this.currentPlayer),
+ void (
+ (this.currentVisibleMenu ||
+ (shouldOsdBeShown(this) && !isPaused)) &&
+ this.showOsd()
+ )
+ );
+ case "select":
+ return void (
+ onOsdClick(e, this, null, shouldOsdBeShown(this)) &&
+ e.preventDefault()
+ );
+ case "up":
+ case "down":
+ return void (shouldOsdBeShown(this) && this.showOsd());
+ case "menu":
+ case "pause":
+ case "nowplaying":
+ return void (shouldOsdBeShown(this) && this.showOsd());
+ case "record":
+ return (
+ shouldOsdBeShown(this) && this.showOsd(),
+ void (function (instance) {
+ (instance = instance.btnRecord).classList.contains("hide") ||
+ instance.click();
+ })(this)
+ );
+ case "togglestats":
+ return void toggleStats(this);
+ case "movies":
+ case "music":
+ case "tv":
+ case "settings":
+ case "search":
+ case "favorites":
+ case "recordedtv":
+ return void e.preventDefault();
+ case "info":
+ return setBottomTabIndex(this, 0), void e.preventDefault();
+ case "livetv":
+ case "guide":
+ return (
+ this.bottomTabButtons[3].classList.contains("hide") ||
+ setBottomTabIndex(this, 3),
+ void e.preventDefault()
+ );
+ }
+ _baseview.default.prototype.onWindowInputCommand.apply(this, arguments);
+ }),
+ (VideoOsd.prototype.setLockState = function (lockState) {
+ ((this.currentLockState = lockState)
+ ? (headerElement.classList.add("videoOsdHeader-locked"),
+ this.osdBottomElement.classList.add("videoosd-bottom-locked"),
+ this.view
+ .querySelector(".videoOsdUnlockControls")
+ .classList.remove("hide"),
+ 1 === lockState
+ ? (this.view
+ .querySelector(".videoOsd-btnUnlock1")
+ .classList.remove("hide"),
+ this.view
+ .querySelector(".videoOsd-btnUnlock2")
+ .classList.add("hide"))
+ : (this.view
+ .querySelector(".videoOsd-btnUnlock1")
+ .classList.add("hide"),
+ this.view
+ .querySelector(".videoOsd-btnUnlock2")
+ .classList.remove("hide")),
+ lockOrientation)
+ : (headerElement.classList.remove("videoOsdHeader-locked"),
+ this.osdBottomElement.classList.remove("videoosd-bottom-locked"),
+ this.view
+ .querySelector(".videoOsdUnlockControls")
+ .classList.add("hide"),
+ this.view.querySelector(".videoOsd-btnUnlock1").classList.add("hide"),
+ this.view.querySelector(".videoOsd-btnUnlock2").classList.add("hide"),
+ unlockOrientation))();
+ }),
+ (VideoOsd.prototype.showOsd = function (timeoutMs, elementToFocus) {
+ this.paused ||
+ (headerElement.classList.remove("hide"),
+ headerElement.offsetWidth,
+ headerElement.classList.remove("videoOsdHeader-hidden"),
+ (function (instance, elementToFocus) {
+ var elem;
+ instance.currentVisibleMenu ||
+ ((elem = instance.osdBottomElement),
+ (instance.currentVisibleMenu = "osd"),
+ elem.classList.remove("hide"),
+ elem.offsetWidth,
+ elem.classList.remove("videoOsdBottom-hidden"),
+ _focusmanager.default.hasExclusiveFocusScope() ||
+ (elementToFocus
+ ? _focusmanager.default.focus(elementToFocus)
+ : focusMainOsdControls(instance)),
+ console.log(
+ "showMainOsdControls activeElement: " +
+ document.activeElement.className,
+ ),
+ instance.view.dispatchEvent(
+ new CustomEvent("video-osd-show", { bubbles: !0 }),
+ ));
+ })(this, elementToFocus),
+ startOsdHideTimer(this, timeoutMs));
+ }),
+ (VideoOsd.prototype.hideOsd = function () {
+ var instance, elem;
+ isDisplayingLocalVideo(this.currentPlayer) &&
+ (headerElement.classList.add("videoOsdHeader-hidden"),
+ (instance = this).currentVisibleMenu &&
+ ((elem = instance.osdBottomElement).offsetWidth,
+ elem.classList.add("videoOsdBottom-hidden"),
+ (instance.currentVisibleMenu = null)),
+ (elem = this.lyricsRenderer)) &&
+ !elem.paused &&
+ _layoutmanager.default.tv &&
+ elem.focus();
+ }),
+ (VideoOsd.prototype.exit = function () {
+ _approuter.default.back();
+ }),
+ (VideoOsd.prototype.onResume = function (options) {
+ _baseview.default.prototype.onResume.apply(this, arguments),
+ _layoutmanager.default.tv
+ ? headerElement.classList.add("videoOsdHeader")
+ : headerElement.classList.add(
+ "videoOsdHeader",
+ "videoOsd-customFont-x2",
+ );
+ var boundOnPlayerChange =
+ (boundOnPlayerChange = this.boundOnPlayerChange) ||
+ (this.boundOnPlayerChange = function (e, player) {
+ this.bindToPlayer(player), this.bottomTabs.selectedIndex(-1);
+ }.bind(this)),
+ boundOnPlayerChange =
+ (_events.default.on(
+ _playbackmanager.default,
+ "playerchange",
+ boundOnPlayerChange,
+ ),
+ this.bindToPlayer(_playbackmanager.default.getCurrentPlayer(), !0),
+ this.currentPlayer),
+ boundOnPlayerChange =
+ (boundOnPlayerChange &&
+ !options.refresh &&
+ this.updateTransparency(
+ boundOnPlayerChange,
+ this.lastPlayerState || {},
+ null == (boundOnPlayerChange = this.currentItem)
+ ? void 0
+ : boundOnPlayerChange.MediaType,
+ ),
+ this.view),
+ boundPointerMove =
+ (boundPointerMove = this.boundPointerMove) ||
+ (this.boundPointerMove = function (e) {
+ var obj,
+ pointerType = e.pointerType;
+ "touch" === pointerType ||
+ (!pointerType && supportsTouchEvent) ||
+ ((pointerType = e.screenX || 0),
+ (e = e.screenY || 0),
+ (obj = this.lastPointerMoveData)
+ ? (Math.abs(pointerType - obj.x) < 10 &&
+ Math.abs(e - obj.y) < 10) ||
+ ((obj.x = pointerType), (obj.y = e), this.showOsd())
+ : ((this.lastPointerMoveData = { x: pointerType, y: e }),
+ this.showOsd()));
+ }.bind(this));
+ _dom.default.addEventListener(
+ document,
+ window.PointerEvent ? "pointermove" : "mousemove",
+ boundPointerMove,
+ { passive: !0 },
+ );
+ boundPointerMove =
+ (boundPointerMove = this.boundPointerEnter) ||
+ (this.boundPointerEnter = function (e) {
+ var pointerType = e.pointerType;
+ "touch" === pointerType ||
+ (!pointerType && supportsTouchEvent) ||
+ (this.mouseOverButton = null != e.target.closest("button,a"));
+ }.bind(this));
+ _dom.default.addEventListener(
+ boundOnPlayerChange,
+ window.PointerEvent ? "pointerenter" : "mouseenter",
+ boundPointerMove,
+ { passive: !0, capture: !0 },
+ );
+ boundPointerMove =
+ (boundPointerMove = this.boundPointerLeave) ||
+ (this.boundPointerLeave = function (e) {
+ this.mouseOverButton = null;
+ }.bind(this));
+ _dom.default.addEventListener(
+ boundOnPlayerChange,
+ window.PointerEvent ? "pointerleave" : "mouseleave",
+ boundPointerMove,
+ { passive: !0, capture: !0 },
+ ),
+ (function (view) {
+ var activeElement = document.activeElement;
+ if (activeElement && !view.contains(activeElement))
+ try {
+ activeElement.blur();
+ } catch (err) {
+ console.log("Error blurring element from previous view: " + err);
+ }
+ })(boundOnPlayerChange);
+ boundPointerMove =
+ (boundPointerMove = this.boundWindowKeyDown) ||
+ (this.boundWindowKeyDown = function (e) {
+ switch (_keyboard.default.normalizeKeyFromEvent(e)) {
+ case "Enter":
+ case " ":
+ return _focusmanager.default.hasExclusiveFocusScope()
+ ? void 0
+ : void (this.currentVisibleMenu &&
+ !e.target.closest(".videoOsdPositionSlider")
+ ? this.showOsd()
+ : e.target.closest("BUTTON") ||
+ this.nowPlayingPositionSlider.dragging ||
+ (_playbackmanager.default.playPause(this.currentPlayer),
+ shouldOsdBeShown(this) &&
+ setTimeout(this.boundShowOsdDefaultParams, 100),
+ _browser.default.edge &&
+ (e.preventDefault(), e.stopPropagation())));
+ case "b":
+ case "B":
+ if (!_focusmanager.default.hasExclusiveFocusScope() && e.ctrlKey)
+ return e.shiftKey
+ ? (e.preventDefault(), void rewind(this))
+ : (e.preventDefault(),
+ void _playbackmanager.default.previousChapter(
+ this.currentPlayer,
+ ));
+ break;
+ case "f":
+ case "F":
+ if (!_focusmanager.default.hasExclusiveFocusScope()) {
+ if (e.ctrlKey)
+ return e.shiftKey
+ ? (e.preventDefault(), void fastForward(this))
+ : (e.preventDefault(),
+ void _playbackmanager.default.nextChapter(
+ this.currentPlayer,
+ ));
+ _playbackmanager.default.toggleFullscreen(this.currentPlayer);
+ }
+ break;
+ case "m":
+ case "M":
+ _focusmanager.default.hasExclusiveFocusScope() ||
+ _playbackmanager.default.toggleMute(this.currentPlayer);
+ }
+ }.bind(this));
+ _dom.default.addEventListener(window, "keydown", boundPointerMove, {}),
+ _mouse.default.requestMouseListening("videoosd");
+ }),
+ (VideoOsd.prototype.onPause = function () {
+ _baseview.default.prototype.onPause.apply(this, arguments);
+ var statsOverlay = this.statsOverlay;
+ statsOverlay && statsOverlay.enabled(!1);
+ this.subtitleOffsetOverlay && destroySubtitleOffsetOverlay(this);
+ var statsOverlay = this.boundWindowKeyDown,
+ statsOverlay =
+ (statsOverlay &&
+ _dom.default.removeEventListener(
+ window,
+ "keydown",
+ statsOverlay,
+ {},
+ ),
+ headerElement.classList.remove(
+ "videoOsdHeader",
+ "videoosd-header-safe",
+ "videoOsdHeader-hidden",
+ "videoOsdHeader-locked",
+ "hide",
+ "videoOsd-customFont-x2",
+ "videoOsd-customFont-remotecontrol",
+ ),
+ backdropContainer.classList.remove(
+ "nowplaying-backdropcontainer-blur",
+ "nowplaying-backdropcontainer-blur-high",
+ "nowplaying-backdropcontainer-blur-extrasaturation",
+ "nowplaying-backdropcontainer-blur-backdropfilter",
+ ),
+ backgroundContainer.classList.remove(
+ "nowplaying-backgroundcontainer-blur",
+ "nowplaying-backgroundcontainer-brighter",
+ "nowplaying-backgroundcontainer-blur-backdropfilter",
+ ),
+ clearBlurFromDocumentElement(),
+ this.boundPointerMove),
+ statsOverlay =
+ (statsOverlay &&
+ _dom.default.removeEventListener(
+ document,
+ window.PointerEvent ? "pointermove" : "mousemove",
+ statsOverlay,
+ { passive: !0 },
+ ),
+ this.boundOnPlayerChange);
+ statsOverlay &&
+ _events.default.off(
+ _playbackmanager.default,
+ "playerchange",
+ statsOverlay,
+ ),
+ this.enableStopOnBack &&
+ ((this.enableStopOnBack = !1),
+ (this.enableBackOnStop = !1),
+ null != (statsOverlay = this.currentPlayer) &&
+ statsOverlay.isLocalPlayer &&
+ _usersettings.default.enableVideoUnderUI()
+ ? _approuter.default.setTransparency("backdrop")
+ : _playbackmanager.default.stop(statsOverlay)),
+ this.releaseCurrentPlayer(),
+ _mouse.default.releaseMouseListening("videoosd"),
+ stopOsdHideTimer(this),
+ _backdrop.default.clear(),
+ this.setLockState(0),
+ unlockOrientation(),
+ setSystemUIHidden(!1);
+ }),
+ (VideoOsd.prototype.destroy = function () {
+ _baseview.default.prototype.destroy.apply(this, arguments);
+ var videoOsdText = this.videoOsdText,
+ videoOsdText =
+ (videoOsdText &&
+ (_shortcuts.default.off(videoOsdText), (this.videoOsdText = null)),
+ destroyPlayQueue(this),
+ destroyLyricsRenderer(this),
+ this.recordingButtonManager),
+ bottomTabControllers =
+ (videoOsdText &&
+ (videoOsdText.destroy(), (this.recordingButtonManager = null)),
+ destroyStats(this),
+ destroySubtitleOffsetOverlay(this),
+ this.bottomTabControllers);
+ if (bottomTabControllers) {
+ for (var i = 0, length = bottomTabControllers.length; i < length; i++)
+ bottomTabControllers[i] && bottomTabControllers[i].destroy();
+ this.bottomTabControllers = null;
+ }
+ (this.boundPointerMove = null),
+ (this.boundWindowKeyDown = null),
+ (this.boundInputCommand = null),
+ (this.boundHideOsd = null),
+ (this.boundShowOsdDefaultParams = null),
+ (this.boundOnOsdHideTimeout = null),
+ (this.boundOnPlayerChange = null),
+ (this.upNextContainer = null),
+ (this.lastPlayerState = null);
+ }),
+ (_exports.default = VideoOsd);
+});