1 line
5.3 KiB
JavaScript
1 line
5.3 KiB
JavaScript
define(["exports","./dialogsidebar.js","./../common/inputmanager.js","./../emby-elements/emby-collapse/emby-collapse.js","./../emby-elements/emby-button/emby-button.js"],function(_exports,_dialogsidebar,_inputmanager,_embyCollapse,_embyButton){function ownKeys(e,r){var o,t=Object.keys(e);return Object.getOwnPropertySymbols&&(o=Object.getOwnPropertySymbols(e),r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)),t}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,require(["css!modules/dialogsidebar/indexsidebar.css"]);var PATH_MAIN_TEMPLATE="text!./modules/dialogsidebar/indexsidebar.template.html",PATH_NODE_TEMPLATE="text!./modules/dialogsidebar/indexnode.template.html",PATH_ITEM_TEMPLATE="text!./modules/dialogsidebar/indexitem.template.html";function IndexSidebar(options){var _this=this,self=this;function addItemsToContainer(items,container){function _loop(item){label=item.label,callback=item.href&&options.callback?function(){return options.callback(item.href,item.id)}:null,id=item.id||item.href,(temp=document.createElement("div")).innerHTML=self.itemTemplate,(temp=temp.firstElementChild).querySelector(".indexItemBody").textContent=label,callback&&temp.addEventListener("click",callback),id&&(temp.dataset.indexItemId=id);var callback,temp,id,label=temp;null!=(callback=item.subitems)&&callback.length?((id=function(){var temp=document.createElement("div");return temp.innerHTML=self.nodeTemplate,temp.firstElementChild}()).querySelector(".indexNodeTitle").append(label),addItemsToContainer(item.subitems,id.querySelector(".indexNodeSubItems")),item.className&&id.classList.add(item.className),container.append(id)):(item.className&&label.classList.add(item.className),container.append(label))}var item;for(item of items)_loop(item)}self.nodeTemplate=null,self.itemTemplate=null,self.selected=null,self.container=null,self.ready=new Promise(function(resolve){require([PATH_MAIN_TEMPLATE,PATH_NODE_TEMPLATE,PATH_ITEM_TEMPLATE]).then(function(templates){self.sidebar=_dialogsidebar.default.show(function(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){babelHelpers.defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}({template:templates[0]},options)),self.sidebar.indexSidebar=_this,self.container=self.sidebar.container,self.nodeTemplate=templates[1],self.itemTemplate=templates[2],self.container.classList.add("indexSidebar"),options.header&&(self.container.querySelector(".indexSidebarHeader").innerHTML=options.header),self.addItems(options.items),_inputmanager.default.on(self.container,function(e){var command=e.detail.command,rtl=self.container&&"rtl"===getComputedStyle(self.container).direction,focused=document.activeElement;focused.classList.contains("indexItem")&&focused.parentElement.classList.contains("indexNodeTitle")&&(focused=focused.closest(".indexCollapse"),!rtl&&"left"===command||rtl&&"right"===command?(focused.collapse(),e.preventDefault(),e.stopPropagation()):(!rtl&&"right"===command||rtl&&"left"===command)&&(focused.expand(),e.preventDefault(),e.stopPropagation()))}),self.show=self.sidebar.show,self.hide=self.sidebar.hide,self.toggle=self.sidebar.toggle,resolve(self.container)})}),self.addItems=function(items){var frag=new DocumentFragment;addItemsToContainer(items,frag),self.container.querySelector(".indexSidebarItems").append(frag)},self.selectItem=function(id){if(self.selected){if(self.selected.dataset.indexItemId===id)return;self.selected.classList.remove(options.selectedClass)}id=self.container.querySelector('.indexItem[data-index-item-id="'+id+'"]');return id&&id.classList.add(options.selectedClass),self.selected=id},self.unselectItem=function(id){self.selected&&self.selected.classList.contains(options.selectedClass)?self.selected.classList.remove(options.selectedClass):id&&(id=self.container.querySelector('.indexItem[data-index-item-id="'+id+'"]'))&&id.classList.remove(options.selectedClass),self.selected=null},self.destroy=function(){self.sidebar.destroy()}}function show(options){("object"!=typeof options||options instanceof HTMLElement)&&(options={container:options});var container=(options=Object.assign({container:void 0,parent:void 0,className:void 0,selectedClass:"toggleButtonIcon-active",header:"",items:[],callback:void 0},options)).container;if(!((container="string"==typeof container?document.querySelector(container):container)instanceof HTMLElement))throw new Error("The container must be a HTML element.");if(options.parent||(options.parent=container.parentElement),container.classList.contains(_dialogsidebar.default.sidebarClass)){container=_dialogsidebar.default.get(container.dataset.sidebar);if(container.indexSidebar)return container;throw new Error("The container is already a sidebar.")}if(options.className)return new IndexSidebar(options);throw new Error("Sidebar requires a className.")}_exports.default={show:show,create:function(options){if((options="object"!=typeof options||options instanceof HTMLElement?{parent:options}:options).parent)return options.container=document.createElement("div"),options.parent.append(options.container),show(options);throw new Error("This function requires a 'parent' element.")}}}); |