PageSourceSearch

https://klubmp3.org/assets/app/javascript/stacked-menu.min.js

js klubmp3.org collected 2026-10-08 03:07:36 UTC 8,875 bytes, 1 lines download raw bytes

vendor: 5,402 bytes, line 1
1var StackedMenu=function(){"use strict";function t(t){this.options={compact:!1,hoverable:!1,closeOther:!0,align:"right",selector:"#stacked-menu",selectorClass:"stacked-menu"},this.options=this._extend({},this.options,t),this.selector=document.querySelector(this.options.selector),this.items=this.selector?this.selector.querySelectorAll(".menu-item"):null,Array.prototype.forEach||(Array.prototype.forEach=function(t,e){if("function"!=typeof t)throw new TypeError(t+" is not a function");var s=this;e=e||this;for(var i=0;i<s.length;i++)t.call(e,s[i],i,s)}),this.each=Array.prototype.forEach,this.classes={alignLeft:this.options.selectorClass+"-has-left",compact:this.options.selectorClass+"-has-compact",collapsible:this.options.selectorClass+"-has-collapsible",hoverable:this.options.selectorClass+"-has-hoverable",hasChild:"has-child",hasActive:"has-active",hasOpen:"has-open"},this.active=null,this.open=[],this.turbolinksAvailable="object"==typeof window.Turbolinks&&window.Turbolinks.supported,this.handlerClickDoc=[],this.handlerOver=[],this.handlerOut=[],this.handlerClick=[],this.init()}return t.prototype._onReady=function(t){"loading"!=document.readyState?t():document.addEventListener("DOMContentLoaded",t,!1)},t.prototype._handleNavigation=function(s){s.each.call(this.items,function(e){s._on(e,"click",function(t){t.stopPropagation(),s.turbolinksAvailable&&t.preventDefault(),s._hasChild(e)?s.turbolinksAvailable||t.preventDefault():s.turbolinksAvailable&&window.Turbolinks.visit(e.firstElementChild.href)})})},t.prototype._extend=function(t){t=t||{};for(var e=arguments,s=1;s<e.length;s++)if(e[s])for(var i in e[s])e[s].hasOwnProperty(i)&&(t[i]=e[s][i]);return t},t.prototype._emit=function(t,e){var s;document.createEvent?(s=document.createEvent("Event")).initEvent(t,!0,!0):(s=document.createEventObject()).eventType=t,s.eventName=t,s.data=e||this,document.createEvent?this.selector.dispatchEvent(s):this.selector.fireEvent("on"+t,s)},t.prototype._hover=function(t,e,s){"A"===t.tagName?(this._on(t,"focus",e),this._on(t,"blur",s)):(this._on(t,"mouseover",e),this._on(t,"mouseout",s))},t.prototype._on=function(t,e,s){for(var i=e.split(" "),o=0;o<i.length;o++)t[window.addEventListener?"addEventListener":"attachEvent"](window.addEventListener?i[o]:"on"+i[o],s,!1)},t.prototype._off=function(t,e,s){for(var i=e.split(" "),o=0;o<i.length;o++)t[window.removeEventListener?"removeEventListener":"detachEvent"](window.removeEventListener?i[o]:"on"+i[o],s,!1)},t.prototype._addClass=function(t,e){for(var s=e.split(" "),i=0;i<s.length;i++)t.classList?t.classList.add(s[i]):t.classes[i]+=" "+s[i]},t.prototype._removeClass=function(t,e){for(var s=e.split(" "),i=0;i<s.length;i++)t.classList?t.classList.remove(s[i]):t.classes[i]=t.classes[i].replace(new RegExp("(^|\\b)"+s[i].split(" ").join("|")+"(\\b|$)","gi")," ")},t.prototype._hasClass=function(t,e){return t.classList?t.classList.contains(e):new RegExp("(^| )"+e+"( |$)","gi").test(t.className)},t.prototype._hasChild=function(t){return this._hasClass(t,this.classes.hasChild)},t.prototype._hasActive=function(t){return this._hasClass(t,this.classes.hasActive)},t.prototype._hasOpen=function(t){return this._hasClass(t,this.classes.hasOpen)},t.prototype._isLevelMenu=function(t){return this._hasClass(t.parentNode.parentNode,this.options.selectorClass)},t.prototype._menuTrigger=function(t,e){var s=t.querySelector("a");this._off(t,"mouseover",this.handlerOver[e]),this._off(t,"mouseout",this.handlerOut[e]),this._off(s,"focus",this.handlerOver[e]),this._off(s,"blur",this.handlerOut[e]),this._off(t,"click",this.handlerClick[e]),this.handlerOver[e]=this.openMenu.bind(this,t),this.handlerOut[e]=this.closeMenu.bind(this,t),this.handlerClick[e]=this.toggleMenu.bind(this,t),this.isHoverable()?this._hasChild(t)&&(this._hover(t,this.handlerOver[e],this.handlerOut[e]),this._hover(s,this.handlerOver[e],this.handlerOut[e])):this._on(t,"click",this.handlerClick[e])},t.prototype._handleInteractions=function(t){var s=this;this.each.call(t,function(t,e){s._hasChild(t)&&s._menuTrigger(t,e),s._hasActive(t)&&(s.active=t)})},t.prototype._getSubhead=function(t){return t.querySelector(".menu-text").textContent},t.prototype._generateSubhead=function(){var e,s,i,o,n=this,t=this.selector.children;this.each.call(t,function(t){n.each.call(t.children,function(t){n._hasChild(t)&&(n.each.call(t.children,function(t){n._hasClass(t,"menu-link")&&(e=t)}),s=e.nextElementSibling,i=document.createElement("li"),o=document.createTextNode(n._getSubhead(e)),i.appendChild(o),n._addClass(i,"menu-subhead"),s.insertBefore(i,s.firstChild))})})},t.prototype._handleTabIndex=function(){var s=this;this.each.call(this.items,function(t){var e=t.parentNode.parentNode;s._isLevelMenu(t)||t.querySelector("a").setAttribute("tabindex","-1"),(s._hasActive(e)||s._hasOpen(e))&&t.querySelector("a").removeAttribute("tabindex")})},t.prototype._slide=function(e,s,t,i){t=t||300,i=i||"ease";var o,n=this,h=e.querySelector(".menu"),a=window.getComputedStyle(e).height,l=t+50,r=l+100;h.style.transition="height "+t+"ms "+i+", opacity "+t/2+"ms "+i+", visibility "+t/2+"ms "+i,"down"===s?(e.style.overflow="hidden",e.style.height=a,h.style.height="auto",o=window.getComputedStyle(h).height,h.style.height=0,h.style.visibility="hidden",h.style.opacity=0,e.style.overflow="",e.style.height="",setTimeout(function(){h.style.height=o,h.style.opacity=1,h.style.visibility="visible"}
1,0)):"up"===s&&(c=window.getComputedStyle(h).height,h.style.height=c,h.style.visibility="visible",h.style.opacity=1,setTimeout(function(){h.style.height=0,h.style.visibility="hidden",h.style.opacity=0},0));var c=new Promise(function(t){setTimeout(function(){t(e),n._emit("menu:slide"+s)},l)});return setTimeout(function(){h.removeAttribute("style")},r),c},t.prototype.init=function(){var t=this,e=this.options;this._addClass(this.selector,e.selectorClass),this._generateSubhead(),this.compact(e.compact),this.hoverable(e.hoverable),this._handleTabIndex(),this._handleNavigation(t),this._on(document.body,"click",function(){!t.isHoverable()&&t.isCompact()&&t.closeAllMenu()}),this._onReady(function(){t._emit("menu:init")})},t.prototype.openMenu=function(t,e){if(void 0===e&&(e=!0),!this._hasActive(t)||this.isCompact()){var s,i,o,n,h=this,a=this._isLevelMenu(t)&&this.isCompact();return this.isHoverable()||a?(this._addClass(t,this.classes.hasOpen),this._handleTabIndex()):this._slide(t,"down",150,"linear").then(function(){h._addClass(t,h.classes.hasOpen),h._handleTabIndex()}),this.open.push(t),(this.isHoverable()||this.isCompact()&&!this.hoverable())&&(n=document.documentElement.clientHeight,o=(i=(s=t.querySelector(".menu")).getBoundingClientRect()).height-20,a=n-i.top,n="left"===this.options.align?"100%":"0px",(500<=i.top||a<=o)&&(s.style.top="auto",s.style.bottom=0,s.style.transformOrigin=n+" 100% 0")),e&&this._emit("menu:open"),this}},t.prototype.closeMenu=function(s,t){void 0===t&&(t=!0);var i=this,e=this._isLevelMenu(s)&&this.isCompact();return this.isHoverable()||e?(this._removeClass(s,this.classes.hasOpen),this._handleTabIndex()):this._hasActive(s)||this._slide(s,"up",150,"linear").then(function(){i._removeClass(s,i.classes.hasOpen),i._handleTabIndex()}),this.each.call(this.open,function(t,e){s==t&&i.open.splice(e,1)}),(this.isHoverable()||this.isCompact()&&!this.hoverable())&&((e=s.querySelector(".menu")).style.top="",e.style.bottom="",e.style.transformOrigin=""),t&&this._emit("menu:close"),this},t.prototype.closeAllMenu=function(){var e=this;return this.each.call(this.items,function(t){e._hasOpen(t)&&e.closeMenu(t,!1)}),this},t.prototype.toggleMenu=function(e){var s,i,t=this._hasOpen(e)?"closeMenu":"openMenu",o=this;return this.each.call(this.items,function(t){s=t.parentNode.parentNode,s=o._hasClass(s,"menu-item")?s:s.parentNode,i=e.parentNode.parentNode,i=o._hasClass(i,"menu-item")?i:i.parentNode,!o._hasOpen(i)&&o._hasChild(s)&&(o.options.closeOther||!o.options.closeOther&&o.isCompact())&&o._hasOpen(s)&&o.closeMenu(s,!1)}),this._hasChild(e)&&this[t](e),this},t.prototype.align=function(t){var e="left"===t?"_addClass":"_removeClass",s=this.classes;return this[e](this.selector,s.alignLeft),this.options.align=t,this._emit("menu:align"),this},t.prototype.isCompact=function(){return this.options.compact},t.prototype.compact=function(t){var e=t?"_addClass":"_removeClass",s=this.classes;return this[e](this.selector,s.compact),this.options.compact=t,this._handleInteractions(this.items),this._emit("menu:compact"),this},t.prototype.isHoverable=function(){return this.options.hoverable},t.prototype.hoverable=function(t){var e=this.classes;return t?(this._addClass(this.selector,e.hoverable),this._removeClass(this.selector,e.collapsible)):(this._addClass(this.selector,e.collapsible),this._removeClass(this.selector,e.hoverable)),this.options.hoverable=t,this._handleInteractions(this.items),this._emit("menu:hoverable"),this},t}();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.