EmbyCrackedClient/web/modules/soundeffects/soundeffectsmanager.js
2025-06-25 11:46:04 +08:00

1 line
No EOL
3.5 KiB
JavaScript

import dom from"./../dom.js";import connectionManager from"./../emby-apiclient/connectionmanager.js";import events from"./../emby-apiclient/events.js";import pluginManager from"./../common/pluginmanager.js";import layoutManager from"./../layoutmanager.js";import{appHost}from"./../common/servicelocator.js";import userSettings from"./../common/usersettings/usersettings.js";import inputManager from"./../common/inputmanager.js";import focusManager from"./../focusmanager.js";import keyboardManager from"./../input/keyboard.js";let effects={};function reload(){var soundeffectPlugin;appHost.supports("soundeffects")&&(inputManager.off(window,onInputCommand,{passive:!0}),dom.removeEventListener(window,"keydown",onKeyDown,{passive:!0}),dom.removeEventListener(window,"userprompt",onUserPrompt,{passive:!0}),events.off(focusManager,"move",onFocusManagerMove),layoutManager.tv)&&(inputManager.on(window,onInputCommand,{passive:!0}),dom.addEventListener(window,"keydown",onKeyDown,{passive:!0}),dom.addEventListener(window,"userprompt",onUserPrompt,{passive:!0}),events.on(focusManager,"move",onFocusManagerMove),(soundeffectPlugin=getCurrentPlugin())?setEffects(soundeffectPlugin):effects={})}function getDefaultId(){return appHost.supports("defaultsoundeffects")?appHost.getDefaultSoundEffects():"defaultsoundeffects"}function getCurrentPlugin(){let soundeffectOption;try{soundeffectOption=userSettings.soundEffects()}catch(err){}let defaultOption=getDefaultId();if("none"===(soundeffectOption=soundeffectOption||defaultOption))return null;let soundeffectPlugin=pluginManager.ofType("soundeffects").filter(function(i){return i.id===soundeffectOption})[0];return soundeffectPlugin=soundeffectPlugin||pluginManager.ofType("soundeffects").filter(function(i){return i.id===defaultOption})[0]}function setEffects(soundeffectPlugin){var i,effectDictionary=soundeffectPlugin.getEffects(),temp={};for(i in effectDictionary)temp[i]=pluginManager.mapPath(soundeffectPlugin,effectDictionary[i]);effects=temp}function onFocusManagerMove(e){play("navigation")}function onInputCommand(evt){var command=evt.detail.command;let pendingSound,activeElement;if("select"===command){if("Enter"===evt.detail.originalEvent?.code)return;pendingSound="miniselect",(activeElement=document.activeElement)&&"BUTTON"===activeElement.tagName&&activeElement.classList.contains("button-submit")&&(pendingSound="select")}if(pendingSound){if(activeElement)switch(activeElement.type){case"text":case"textarea":case"tel":case"search":case"password":case"number":return}play(pendingSound)}}function onKeyDown(evt){let pendingSound,activeElement;switch(keyboardManager.normalizeKeyFromEvent(evt)){case"Enter":case" ":pendingSound="miniselect",(activeElement=document.activeElement)&&"BUTTON"===activeElement.tagName&&activeElement.classList.contains("button-submit")&&(pendingSound="select")}if(pendingSound){if(activeElement)switch(activeElement.type){case"text":case"textarea":case"tel":case"search":case"password":case"number":return}play(pendingSound)}}function onUserPrompt(evt){if(evt.detail)switch(evt.detail.promptType){case"alert":play("error");break;case"confirm":play("question")}}let soundEffectsPlayer;function play(type){let effect=effects[type];(effect=effect||"miniselect"!==type?effect:effects.select)&&(soundEffectsPlayer?soundEffectsPlayer.play({path:effect}):require(["soundEffectsPlayer"],function(soundEffectsPlayer_){(soundEffectsPlayer=soundEffectsPlayer_).play({path:effect})}))}reload(),events.on(connectionManager,"localusersignedin",reload),events.on(userSettings,"change",function(e,name){"soundeffects"===name&&reload()});export default{};