(function (playbackManager, focusManager, appRouter, dom) { "use strict"; var lastInputTime = Date.now(); function notify() { (lastInputTime = Date.now()), handleCommand("unknown"); } var commandTimes = {}; function handleCommand(name, options) { lastInputTime = Date.now(); var tagName, sourceElement = options ? options.sourceElement : null; ((sourceElement = sourceElement || document.activeElement) && "BODY" !== (tagName = sourceElement.tagName) && "HTML" !== tagName) || (sourceElement = focusManager.getCurrentScope()); var command, last, now, customEvent = new CustomEvent("command", { detail: { command: name }, bubbles: !0, cancelable: !0 }); if (!sourceElement.dispatchEvent(customEvent)) return !0; switch (name) { case "up": return focusManager.moveUp(sourceElement), !0; case "down": return focusManager.moveDown(sourceElement), !0; case "left": return focusManager.moveLeft(sourceElement), !0; case "right": return focusManager.moveRight(sourceElement), !0; case "home": return appRouter.goHome(), !0; case "settings": return appRouter.showSettings(), !0; case "back": return appRouter.back(), !0; case "forward": return !0; case "select": return sourceElement.click(), !0; case "menu": case "info": return !0; case "nextchapter": return playbackManager.nextChapter(), !0; case "next": case "nexttrack": return playbackManager.nextTrack(), !0; case "previous": case "previoustrack": return playbackManager.previousTrack(), !0; case "previouschapter": return playbackManager.previousChapter(), !0; case "guide": return appRouter.showGuide(), !0; case "recordedtv": return appRouter.showRecordedTV(), !0; case "record": return !0; case "livetv": return appRouter.showLiveTV(), !0; case "mute": return playbackManager.setMute(!0), !0; case "unmute": return playbackManager.setMute(!1), !0; case "togglemute": return playbackManager.toggleMute(), !0; case "channelup": return playbackManager.channelUp(), !0; case "channeldown": return playbackManager.channelDown(), !0; case "volumedown": return playbackManager.volumeDown(), !0; case "volumeup": return playbackManager.volumeUp(), !0; case "play": return playbackManager.unpause(), !0; case "pause": return playbackManager.pause(), !0; case "playpause": return playbackManager.playPause(), !0; case "stop": return (last = commandTimes[(command = "stop")] || 0), (now = Date.now()) - last < 1e3 || ((commandTimes[command] = now), !1) || playbackManager.stop(), !0; case "changezoom": return playbackManager.toggleAspectRatio(), !0; case "changeaudiotrack": return playbackManager.changeAudioStream(), !0; case "changesubtitletrack": return playbackManager.changeSubtitleStream(), !0; case "search": return appRouter.showSearch(), !0; case "favorites": return appRouter.showFavorites(), !0; case "fastforward": return playbackManager.fastForward(), !0; case "rewind": return playbackManager.rewind(), !0; case "togglefullscreen": return playbackManager.toggleFullscreen(), !0; case "disabledisplaymirror": return playbackManager.enableDisplayMirroring(!1), !0; case "enabledisplaymirror": return playbackManager.enableDisplayMirroring(!0), !0; case "toggledisplaymirror": return playbackManager.toggleDisplayMirroring(), !0; case "togglestats": return !0; case "movies": case "music": case "tv": return appRouter.goHome(), !0; case "nowplaying": return appRouter.showNowPlaying(), !0; case "save": case "screensaver": case "refresh": case "changebrightness": case "red": case "green": case "yellow": case "blue": case "grey": case "brown": return !0; case "repeatnone": return playbackManager.setRepeatMode("RepeatNone"), !0; case "repeatall": return playbackManager.setRepeatMode("RepeatAll"), !0; case "repeatone": return playbackManager.setRepeatMode("RepeatOne"), !0; default: return !1; } } return ( dom.addEventListener(document, "click", notify, { passive: !0 }), { trigger: handleCommand, handle: handleCommand, notify: notify, notifyMouseMove: function () { lastInputTime = Date.now(); }, idleTime: function () { return Date.now() - lastInputTime; }, on: function (scope, fn) { dom.addEventListener(scope, "command", fn, {}); }, off: function (scope, fn) { dom.removeEventListener(scope, "command", fn, {}); }, } ); });