Files
Futontime_UI/modules/alphapicker/alphapicker.js
2026-02-09 10:48:21 +01:00

1 line
6.9 KiB
JavaScript

define(["exports","./../layoutmanager.js","./../focusmanager.js","./../emby-elements/emby-button/paper-icon-button-light.js"],function(_exports,_layoutmanager,_focusmanager,_paperIconButtonLight){function focus(){var selected=this.querySelector(".alphaPickerButton-current");selected?_focusmanager.default.focus(selected):_focusmanager.default.autoFocus(this)}function getAlphaPickerButtonClassName(vertical){var alphaPickerButtonClassName="alphaPickerButton";return alphaPickerButtonClassName+=" secondaryText",vertical&&(alphaPickerButtonClassName+=" alphaPickerButton-vertical"),alphaPickerButtonClassName}function mapKeysToHtml(keys,vertical){return keys.map(function(k){return function(keyInfo,vertical){return'<button type="button" is="emby-button" href="#" data-focusscale="false" data-value="'+keyInfo.value+'" class="button-link '+getAlphaPickerButtonClassName(vertical)+'">'+keyInfo.name+"</button>"}(k,vertical)})}function mapToKeyInfo(character){return{name:character,value:character}}function mapLettersToHtml(letters,vertical){return mapKeysToHtml(letters.map(mapToKeyInfo),vertical)}function setInnerHtml(element,html){element.innerHTML=html,element.classList.add("focusable"),element.focus=focus}function clearAlphaFocusTimeout(instance){instance.alphaFocusTimeout&&(clearTimeout(instance.alphaFocusTimeout),instance.alphaFocusTimeout=null)}function onAlphaPickerFocusIn(e){this.alphaFocusTimeout&&(clearTimeout(this.alphaFocusTimeout),this.alphaFocusTimeout=null);var e=e.target.closest(".alphaPickerButton"),delay=1500;this.previousActiveElement||(delay=3e3),(this.previousActiveElement=e)&&(this.alphaFocusedElement=e,this.alphaFocusTimeout=setTimeout(function(){var value;this.alphaFocusTimeout=null,this.previousActiveElement=null,document.activeElement===this.alphaFocusedElement&&(value=this.alphaFocusedElement.getAttribute("data-value"),this.value(value,!0))}.bind(this),delay))}function AlphaPicker(options){this.options=options,this.bound_onAlphaPickerInKeyboardModeClick=function(e){(e=e.target.closest(".alphaPickerButton"))&&(e=e.getAttribute("data-value"),this.options.element.dispatchEvent(new CustomEvent("alphavalueclicked",{cancelable:!1,detail:{value:e}})))}.bind(this),this.bound_onAlphaPickerFocusIn=onAlphaPickerFocusIn.bind(this),this.bound_onAlphaPickerClick=function(e){clearAlphaFocusTimeout(this),(e=e.target.closest(".alphaPickerButton"))&&(e=e.getAttribute("data-value"),this.value(e,!0))}.bind(this),function(element,options){element.classList.add("alphaPicker");var vertical=element.classList.contains("alphaPicker-vertical"),html=(vertical||element.classList.add("focuscontainer-x"),""),alphaPickerButtonClassName=getAlphaPickerButtonClassName(vertical),rowClassName="alphaPickerRow";if(vertical&&(rowClassName+=" alphaPickerRow-vertical secondaryText",_layoutmanager.default.tv||(rowClassName+=" scrollY hiddenScrollY")),"keyboard"===options.mode){var rows=[];"numeric"===options.type?rows.push({keys:["0","1","2","3","4","5","6","7","8","9"].map(mapToKeyInfo)}):(rows.push({keys:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"].map(mapToKeyInfo)},{keys:["0","1","2","3","4","5","6","7","8","9"].map(mapToKeyInfo)}),rows[0].keys.unshift({name:"SPACE",value:" "}));for(var i=0,length=rows.length;i<length;i++){html=(html+='<div class="'+rowClassName+'">')+mapKeysToHtml(rows[i].keys,vertical).join("");0===i&&(html=html+'<button type="button" data-focusscale="false" data-value="backspace" is="paper-icon-button-light" class="'+alphaPickerButtonClassName+'"><i class="md-icon alphaPickerButtonIcon autortl">&#xe14A;</i></button></div>'),html+="</div>"}setInnerHtml(element,html)}else setInnerHtml(element,html=(html+='<div class="'+rowClassName+'">')+mapLettersToHtml(options.prefixes||[],vertical).join("")+"</div>")}(options.element,options),this.enabled(!0),this.visible(!0)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,require(["css!modules/alphapicker/alphapicker.css","css!!tv|modules/alphapicker/alphapicker_nontv.css","css!tv|modules/alphapicker/alphapicker_tv.css","material-icons"]),AlphaPicker.prototype.enabled=function(enabled){var options=this.options,element=options.element;enabled?"keyboard"===options.mode?element.addEventListener("click",this.bound_onAlphaPickerInKeyboardModeClick):(_layoutmanager.default.tv&&element.addEventListener("focus",this.bound_onAlphaPickerFocusIn,!0),element.addEventListener("click",this.bound_onAlphaPickerClick)):(clearAlphaFocusTimeout(this),element.removeEventListener("click",this.bound_onAlphaPickerInKeyboardModeClick,!0),element.removeEventListener("click",this.bound_onAlphaPickerClick),(enabled=element.onAlphaPickerClickFn)&&(element.removeEventListener("click",enabled),element.onAlphaPickerClickFn=null))},AlphaPicker.prototype.value=function(value,applyValue){var element=this.options.element;value=value.toUpperCase(),applyValue&&element.dispatchEvent(new CustomEvent("alphavaluechanged",{cancelable:!1,detail:{value:value}}))},AlphaPicker.prototype.setCurrentFromItem=function(item){var prefix=(prefix=item.Prefix)||(prefix=item.SortName||item.Name)&&prefix[0];prefix&&!function(instance,button){var current=instance._currentButton;current!==button&&(current&&current.classList.remove("alphaPickerButton-current"),instance._currentButton=button)&&button.classList.add("alphaPickerButton-current")}(this,function(instance){var buttonMap=instance._buttonMap;if(!buttonMap){for(var buttonMap={},buttons=instance.options.element.querySelectorAll(".alphaPickerButton[data-value]"),i=0,length=buttons.length;i<length;i++){var button=buttons[i];buttonMap[button.getAttribute("data-value")]=button}instance._buttonMap=buttonMap}return buttonMap}(this)[prefix])},AlphaPicker.prototype.on=function(name,fn){this.options.element.addEventListener(name,fn)},AlphaPicker.prototype.off=function(name,fn){this.options.element.removeEventListener(name,fn)},AlphaPicker.prototype.visible=function(visible){this.options.element.style.visibility=visible?"visible":"hidden"},AlphaPicker.prototype.setPrefixes=function(prefixes){27<prefixes.length&&(prefixes.length=27);var element=this.options.element,prefixes=mapLettersToHtml(prefixes,element.classList.contains("alphaPicker-vertical")).join("");element.querySelector(".alphaPickerRow").innerHTML=prefixes,this._buttonMap=null},AlphaPicker.prototype.values=function(){for(var elems=this.options.element.querySelectorAll(".alphaPickerButton"),values=[],i=0,length=elems.length;i<length;i++)values.push(elems[i].getAttribute("data-value"));return values},AlphaPicker.prototype.focus=function(){var element=this.options.element;_focusmanager.default.autoFocus(element)},AlphaPicker.prototype.destroy=function(){this.enabled(!1),this.itemFocusValue=null,this.options=null,this.valueChangeEvent=null,this.bound_onAlphaPickerInKeyboardModeClick=null,this.bound_onAlphaPickerFocusIn=null,this.bound_onAlphaPickerClick=null,this._currentButton=null,this._buttonMap=null};_exports.default=AlphaPicker});