EmbyCrackedClient/web/modules/alphanumericshortcuts/alphanumericshortcuts.js

1 line
3 KiB
JavaScript
Raw Permalink Normal View History

2025-06-25 11:46:04 +08:00
import dom from"./../dom.js";import focusManager from"./../focusmanager.js";import"./../dialoghelper/dialoghelper.js";require(["css!modules/alphanumericshortcuts/alphanumericshortcuts.css"]);let inputDisplayElement,currentDisplayText="",currentDisplayTextContainer;function alphanumeric(value){return value.match(/^[0-9a-zA-Z]+$/)}function ensureInputDisplayElement(){inputDisplayElement||((inputDisplayElement=document.createElement("div")).classList.add("alphanumeric-shortcut","hide","dialog"),dom.allowBackdropFilter()&&inputDisplayElement.classList.add("dialog-blur"),document.body.appendChild(inputDisplayElement))}let alpanumericShortcutTimeout;function clearAlphaNumericShortcutTimeout(){alpanumericShortcutTimeout&&(clearTimeout(alpanumericShortcutTimeout),alpanumericShortcutTimeout=null)}function resetAlphaNumericShortcutTimeout(instance){clearAlphaNumericShortcutTimeout(),alpanumericShortcutTimeout=setTimeout(onAlphanumericShortcutTimeout.bind(instance),2e3)}function onAlphanumericKeyPress(instance,e,chr){3<=currentDisplayText.length||(ensureInputDisplayElement(),currentDisplayText+=chr,inputDisplayElement.innerHTML=currentDisplayText,inputDisplayElement.classList.remove("hide"),resetAlphaNumericShortcutTimeout(instance))}function onAlphanumericShortcutTimeout(){var value=currentDisplayText,container=currentDisplayTextContainer;currentDisplayText="",currentDisplayTextContainer=null,inputDisplayElement.innerHTML="",inputDisplayElement.classList.add("hide"),clearAlphaNumericShortcutTimeout(),selectByShortcutValue(this,container,value)}function selectByShortcutValue(instance,container,value){instance.onAlphaNumericValueEntered&&instance.onAlphaNumericValueEntered(value)}function AlphaNumericShortcuts(options){(this.options=options).focusScope=focusManager.getCurrentScope(),this.keyDownHandler=this.onKeyDown.bind(this),this.addEventListeners()}AlphaNumericShortcuts.prototype.onKeyDown=function(e){if(!e.ctrlKey&&!e.shiftKey&&!e.altKey){var options=this.options;if(options&&options.focusScope===focusManager.getCurrentScope()){var tagName=e.target.tagName;if("INPUT"!==tagName&&"TEXTAREA"!==tagName){tagName=e.key;let chr=tagName?alphanumeric(tagName):null;chr&&1===(chr=chr.toString().toUpperCase()).length&&(currentDisplayTextContainer=options.itemsContainer,onAlphanumericKeyPress(this,e,chr))}}}},AlphaNumericShortcuts.prototype.addEventListeners=function(){var keyDownHandler;!this._eventHandlersBound&&(this._eventHandlersBound=!0,keyDownHandler=this.keyDownHandler)&&dom.addEventListener(window,"keydown",keyDownHandler,{passive:!0})},AlphaNumericShortcuts.prototype.removeEventListeners=function(){this._eventHandlersBound=null;var keyDownHandler=this.keyDownHandler;keyDownHandler&&dom.removeEventListener(window,"keydown",keyDownHandler,{passive:!0})},AlphaNumericShortcuts.prototype.pause=function(){this.removeEventListeners()},AlphaNumericShortcuts.prototype.resume=function(){this.addEventListeners()},AlphaNumericShortcuts.prototype.destroy=function(){this.removeEventListeners(),this.keyDownHandler=null,this.options=null};export default AlphaNumericShortcuts;