403Webshell
Server IP : 103.234.187.230  /  Your IP : 216.73.216.216
Web Server : Apache
System : Linux lserver42043-ind.megavelocity.net 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
User : apache ( 48)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/html/b2bzend/public/feedback/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/b2bzend/public/feedback/js/navigation.js
;(function (root, factory) {
    var pluginName = 'Navigation';

    if (typeof define === 'function' && define.amd) {
        define([], factory(pluginName));
    }
	else if (typeof exports === 'object') {
        module.exports = factory(pluginName);
    }
	else {
        root[pluginName] = factory(pluginName);
    }
}(this, function (pluginName){

	'use strict';

	var defaults = {
      breakpoint: 992,
		submenuTrigger: "hover",
		overlay: true,
		overlayColor: "rgba(0, 0, 0, 0.7)",
		autoSubmenuIndicator: true,
		submenuIndicatorTrigger: false,
		hideSubWhenClickOut: true,
		scrollMomentum: true,
		scrollSpy: false,
		scrollSpySpeed: 1000,
		scrollSpyOffset: 0,
		landscapeClass: "navigation-landscape",
		onInit: function(){},
		onLandscape: function(){},
		onShowOffCanvas: function(){},
      onHideOffCanvas: function(){}
   };


	// Merge defaults with user options
	var extend = function (target, options) {
        var prop, extended = {};
        for (prop in defaults) {
            if (Object.prototype.hasOwnProperty.call(defaults, prop)) {
                extended[prop] = defaults[prop];
            }
        }
        for (prop in options) {
            if (Object.prototype.hasOwnProperty.call(options, prop)) {
                extended[prop] = options[prop];
            }
        }
        return extended;
    };


	// Events namespacing
	var events = {
		on: function on(event, callback, useCapture){
			if(!this.namespaces) // save the namespaces on the DOM element itself
				this.namespaces = {};

			this.namespaces[event] = callback;
			var options = useCapture || false;

			this.addEventListener(event.split('.')[0], callback, options);
			return this;
		},
		off: function off(event, useCapture) {
			if(this.namespaces !== undefined){
				if(this.namespaces[event]){
					this.removeEventListener(event.split('.')[0], this.namespaces[event], useCapture);
					delete this.namespaces[event];
					return this;
				}
			}
		},
		check: function check(event) {
			if(this.namespaces !== undefined){
				if(this.namespaces[event]){
					return true;
				}
				else{
					return false;
				}
			}
		}
	};
	window.on = document.on = Element.prototype.on = events.on;
	window.off = document.off = Element.prototype.off = events.off;
	window.check = document.check = Element.prototype.check = events.check;


	// Check if given element has a parent with the given class
	var closestByClass = function(el, clazz) {
		while(el.tagName.toLowerCase() !== "html"){
			if(el.classList.length > 0 && el.classList.contains(clazz)){
				return true
			}
			else{
				el = el.parentNode;
			}
		}
		return false;
	};


	// Return the window's width
	var windowWidth = function(){
		return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
	};


	// Constructor
	function Plugin(element, options) {

      var nav,
		clickEvent = "click.link",
		bigScreenFlag = Number.MAX_VALUE,
      smallScreenFlag = 1,
		hoverEnabled;

		if(element !== null){
			nav = element;
		}
		else{
			return false;
		}

		// Initialize the navigation
		nav.init = function(options){

			nav.options = extend(defaults, options);

			nav.navigationBody = nav.getElementsByClassName("navigation-body")[0];
			nav.menuItems = nav.querySelectorAll(".navigation-item, .navigation-dropdown-item");
			nav.menuLinks = nav.querySelectorAll(".navigation-link, .navigation-dropdown-link");

			var submenus = nav.querySelectorAll(".navigation-dropdown, .navigation-megamenu");
			for (var i = 0; i < submenus.length; i++) {
				submenus[i].className += " navigation-submenu";
				submenus[i].parentNode.className += " has-submenu";
			};

			if(nav.options.autoSubmenuIndicator){
				for(var i = 0; i < nav.menuItems.length; i++){
					if(nav.menuItems[i].classList.contains("has-submenu")){
						var indicator = document.createElement("span");
						indicator.classList.add("submenu-indicator");
						if(nav.menuItems[i].children[1].classList.contains("navigation-dropdown-left")){
							indicator.classList.add("submenu-indicator-left");
						}
						nav.menuItems[i].children[0].appendChild(indicator);
					}
				}
			};

			hoverEnabled = !(matchMedia("(hover: none)").matches);

			navigationMode();
			window.on("resize", navigationMode);

			if(nav.options.overlay){
				nav.overlayPanel = document.createElement("div");
				nav.overlayPanel.classList.add("overlay-panel");
				nav.overlayPanel.style.background = nav.options.overlayColor;
				nav.appendChild(nav.overlayPanel);
				nav.overlayPanel.addEventListener("click", nav.toggleOffcanvas);
			};

			nav.getElementsByClassName("navigation-button-toggler")[0].on("click", function(e){
				e.stopPropagation();
				e.preventDefault();
				nav.toggleOffcanvas();
			});
			nav.getElementsByClassName("navigation-body-close-button")[0].on("click", nav.toggleOffcanvas);

			if(nav.options.hideSubWhenClickOut){
				document.on("touchstart.body", function(e){
					if(closestByClass(e.target, "navigation") === false){
						nav.hideSubmenus("BODY");
					}
				});
				document.on("click.body", function(e){
					if(closestByClass(e.target, "navigation") === false){
						nav.hideSubmenus("BODY");
					}
				});
			};

			var tabs = nav.querySelectorAll(".navigation-tabs");
			if(tabs.length > 0){
				for(var i = 0; i < tabs.length; i++){
					navigationTabs(tabs[i]);
				}
			}

			if(nav.options.scrollMomentum){
				nav.navigationBody.classList.add("scroll-momentum");
			}

			nav.options.onInit.call();

		}


		// Navigation mode
		var navigationMode = function() {
			fixSubmenuRightPositionAll();
			if(windowWidth() < nav.options.breakpoint && bigScreenFlag > nav.options.breakpoint){
				nav.classList.remove(nav.options.landscapeClass);
				nav.hideSubmenus("BODY");
				turnOffEvents();
				if(nav.options.submenuIndicatorTrigger){
					clickIndicators();
				}
				else{
					click(clickEvent);
					clickIndicators();
				}
			}
			if(windowWidth() > nav.options.breakpoint && smallScreenFlag < nav.options.breakpoint){
				if(!nav.classList.contains(nav.options.landscapeClass)){
					nav.className += " " + nav.options.landscapeClass;
				}
				nav.hideSubmenus("BODY");
				turnOffEvents();
				if(
					(nav.options.submenuTrigger === "click") ||
					(navigator.userAgent.match(/Mobi/i)) ||
					(navigator.maxTouchPoints > 1 && hoverEnabled)
				){
					click(clickEvent);
				}
				else{
					hover();
				}
				nav.options.onLandscape.call();
			}
			bigScreenFlag = windowWidth();
			smallScreenFlag = windowWidth();
		};


		// Show the Offcanvas
		nav.toggleOffcanvas = function(){
			if(!nav.classList.contains(nav.options.landscapeClass)){
				if(!nav.navigationBody.classList.contains("is-visible") && !nav.classList.contains(nav.options.landscapeClass)){
					nav.navigationBody.className += " is-visible";
					nav.overlayPanel.classList.add("is-visible");
					nav.options.onShowOffCanvas.call();
				}
				else{
					nav.navigationBody.className += " is-invisible";
					if(!nav.navigationBody.check("transitionend")){
						nav.navigationBody.on("transitionend", function(){
							nav.navigationBody.classList.remove("is-visible");
							nav.navigationBody.classList.remove("is-invisible");
							nav.navigationBody.off("transitionend");
						});
					}
					nav.overlayPanel.className += " is-invisible";
					if(!nav.overlayPanel.check("transitionend")){
						nav.overlayPanel.on("transitionend", function(){
							nav.overlayPanel.classList.remove("is-visible");
							nav.overlayPanel.classList.remove("is-invisible");
							nav.overlayPanel.off("transitionend");
						});
					}
					nav.options.onHideOffCanvas.call();
				}
			}
		};


		// Show a submenu
		nav.showSubmenu = function(el) {
			if(!el.nextElementSibling.classList.contains("is-visible")){
				el.nextElementSibling.className += " is-visible";
			}
			fixSubmenuRightPositionItem(el);
		};


		// Hide an item
		function hide(item, delayMultiplyer){
			setTimeout(function(){
				item.classList.remove("is-visible");
			}, 100 * delayMultiplyer);
		}


		// Hide a submenu
		nav.hideSubmenus = function(el) {
			var submenus;
			if(el === "BODY"){
				submenus = nav.querySelectorAll(".navigation-submenu.is-visible");
			}
			else{
				submenus = el.parentNode.querySelectorAll(".navigation-submenu.is-visible");
			}
         for(var i = submenus.length - 1; i >= 0; i--){
            if(nav.classList.contains(nav.options.landscapeClass)){
               hide(submenus[i], submenus.length - i);
            }
            else{
               submenus[i].classList.remove("is-visible");
            }
            submenus[i].parentNode.classList.remove("is-active");
            if(submenus[i].previousElementSibling.getElementsByClassName("submenu-indicator").length > 0){
               submenus[i].previousElementSibling.lastElementChild.classList.remove("is-active");
            }
         }
		};


		// Click on menu links to show submenus
		var click = function(eventName) {
			for(var i = 0; i < nav.menuLinks.length; i++){
				nav.menuLinks[i].on(eventName, function(e){
					if(e.target.parentNode.classList.contains("has-submenu")){
						e.preventDefault();
						e.stopPropagation();
						if(e.target.parentNode.classList.contains("is-active")){
							e.target.parentNode.classList.remove("is-active");
							if(e.target.getElementsByClassName("submenu-indicator").length > 0){
								e.target.lastElementChild.classList.remove("is-active");
							}
							nav.hideSubmenus(e.target);
						}
						else{
							if(e.target.parentNode.classList.contains("navigation-item")){
								nav.hideSubmenus("BODY");
							}
							e.target.parentNode.className += " is-active";
							if(e.target.getElementsByClassName("submenu-indicator").length > 0){
								e.target.lastElementChild.className += " is-active";
							}
							nav.showSubmenu(e.target);
							return false;
						}
						if(e.target.getAttribute("target") === "_blank" || e.target.getAttribute("target") === "blank"){
							window.open(e.target.getAttribute("href"));
						}
						else{
							if(e.target.getAttribute("href") === "#" || e.target.getAttribute("href") === "" || e.target.getAttribute("href") === "javascript:void(0)"){
								return false;
							}
							else{
								window.location.href = e.target.getAttribute("href");
							}
						}
					}
				});
			}
		};


		// Click on submenus indicators to show submenus
		var clickIndicators = function() {
			nav.navigationBody.on("click.indicator", function(e){
				if(e.target.classList.length > 0 && e.target.classList.contains("submenu-indicator")){
					e.preventDefault();
					e.stopPropagation();
					if(e.target.classList.contains("is-active")){
						e.target.classList.remove("is-active");
						e.target.parentNode.parentNode.classList.remove("is-active");
						nav.hideSubmenus(e.target.parentNode);
					}
					else{
						if(e.target.parentNode.parentNode.classList.contains("navigation-item")){
							nav.hideSubmenus("BODY");
						}
						e.target.className += " is-active";
						e.target.parentNode.parentNode.classList.add("is-active");
						nav.showSubmenu(e.target.parentNode);
					}
				}
			});
		};


		// Hover on menu items to show submenus
		var hover = function() {
			function getPosition(el) {
				var rect = el.getBoundingClientRect();
				return {
					x:rect.left,
					y:rect.top
				};
			}

			for(var i = 0; i < nav.menuItems.length; i++){
				if(nav.menuItems[i].classList.contains("has-submenu")){
					nav.menuItems[i].on("mouseenter.item", function(e){
						e.preventDefault();
						e.stopPropagation();
						if(e.target.classList.contains("has-submenu")){
							nav.showSubmenu(e.target.firstElementChild);
							e.target.className += " is-active";
						}
					});

					nav.menuItems[i].on("mouseleave.item", function(e){
						e.preventDefault();
						e.stopPropagation();
                  if(e.target.classList.contains("has-submenu")){
                     var coords = getPosition(e.target.lastElementChild);
                     if(
                        (e.clientX < coords.x || e.clientX > coords.x + e.target.lastElementChild.offsetWidth) ||
                        (e.clientY < coords.y || e.clientY > coords.y + e.target.lastElementChild.offsetHeight)
                     ){
                        nav.hideSubmenus(e.target.firstElementChild);
                        e.target.classList.remove("is-active");
                     }
                  }
					});
				}
			}
		};


		// Turn off the events
		var turnOffEvents = function() {
			nav.navigationBody.off("click.indicator");
			for(var i = 0; i < nav.menuItems.length; i++){
				nav.menuItems[i].off("mouseenter.item");
				nav.menuItems[i].off("mouseleave.item");
			}
			for(var i = 0; i < nav.menuLinks.length; i++){
				nav.menuLinks[i].off("click.link");
			}
		};


		// Fix submenu position on right
		var fixSubmenuRightPositionItem = function(el) {
			if(windowWidth() > nav.options.breakpoint){
				var navWidth = nav.navigationBody.offsetWidth;
				if(el.classList.contains("navigation-link")){
					if(el.offsetLeft + el.nextElementSibling.offsetWidth > navWidth){
						el.nextElementSibling.style.right = 0;
					}
					else{
						el.nextElementSibling.style.right = "auto";
					}
				}
			}
		};

		var fixSubmenuRightPositionAll = function() {
			var submenus = nav.navigationBody.querySelectorAll(".navigation-item > .navigation-submenu");
			var navWidth = nav.navigationBody.offsetWidth;
			for(var i = 0; i < submenus.length; i++){
				if(submenus[i].previousElementSibling.offsetLeft + submenus[i].offsetWidth > navWidth){
					submenus[i].style.right = 0;
				}
				else{
					submenus[i].style.right = "auto";
				}
			}
		};


		// Navigation tabs
		var navigationTabs = function(tab) {
			var navs = tab.getElementsByClassName("navigation-tabs-nav-item");
			var panes = tab.getElementsByClassName("navigation-tabs-pane");

			for(var i = 0; i < navs.length; i++){
				navs[i].on("click.tabs", function(e){
					e.preventDefault();
					e.stopImmediatePropagation();
					for(var i = 0; i < navs.length; i++){
						navs[i].classList.remove("is-active");
					}
					e.target.parentNode.classList.add("is-active");
					for(var i = 0; i < panes.length; i++){
						panes[i].classList.remove("is-active");
					}
					panes[getIndex(e.target.parentNode)].classList.add("is-active");
				});
			}

			function getIndex(item) {
				var children = item.parentNode.childNodes;
				var num = 0;
				for (var i = 0; i < children.length; i++) {
					 if(children[i] == item)
						 return num;
					 if(children[i].nodeType == 1)
						 num++;
				}
				return -1;
			};
		};


		//************************
		// Scrollspy functionality
		//************************

		var scrollSpy = function() {

			var links = nav.querySelectorAll(".navigation-link[href*='#']");

			// Adds two numbers together
			var add = function(ex1, ex2) {
				return parseInt(ex1, 10) + parseInt(ex2, 10);
			};


			// Find the elements
			var findElements = function(links) {
				var elements = [];
				for(var i = 0; i < links.length; i++){
					var hash = links[i].getAttribute("href");

					if(hash.length > 1 && hash.substring(0, 1) === "#"){
						var element = document.getElementById(hash.substr(1)),
							top = Math.floor(element.offsetTop),
							bottom = top + Math.floor(element.offsetHeight);
						elements.push({ element: hash, hash: hash, top: top, bottom: bottom });
					}
				}
				return elements;
			};


			// Find our link from a hash
			var findLink = function (links, hash){
				for(var i = 0; i < links.length; i++){
					var link = links[i];
					if(link.getAttribute("href") === hash){
						return link;
					}
				}
			};

			// Reset classes on our elements
			var resetClasses = function (links){
				for(var i = 0; i < links.length; i++){
					var link = links[i];
					link.parentNode.classList.remove("is-active");
				}
			};


			// Smooth scroll
			var smoothScroll = function(destination, duration, easing, callback){

				var easings = {
					linear: function linear(t) {
						return t;
					},
					easeInQuad: function easeInQuad(t) {
						return t * t;
					},
					easeOutQuad: function easeOutQuad(t) {
						return t * (2 - t);
					},
					easeInOutQuad: function easeInOutQuad(t) {
						return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;
					},
					easeInCubic: function easeInCubic(t) {
						return t * t * t;
					},
					easeOutCubic: function easeOutCubic(t) {
						return (--t) * t * t + 1;
					},
					easeInOutCubic: function easeInOutCubic(t) {
						return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;
					},
					easeInQuart: function easeInQuart(t) {
						return t * t * t * t;
					},
					easeOutQuart: function easeOutQuart(t) {
						return 1 - (--t) * t * t * t;
					},
					easeInOutQuart: function easeInOutQuart(t) {
						return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * (--t) * t * t * t;
					},
					easeInQuint: function easeInQuint(t) {
						return t * t * t * t * t;
					},
					easeOutQuint: function easeOutQuint(t) {
						return 1 + (--t) * t * t * t * t;
					},
					easeInOutQuint: function easeInOutQuint(t) {
						return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * (--t) * t * t * t * t;
					}
				};

				var start = window.pageYOffset;
				var startTime = "now" in window.performance ? performance.now() : new Date().getTime();
				var documentHeight = Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);
				var windowHeight = window.innerHeight || document.documentElement.clientHeight || document.getElementsByTagName("body")[0].clientHeight;
				var destinationOffset = typeof destination === "number" ? destination : destination.offsetTop + nav.options.scrollSpyOffset;
				var destinationOffsetToScroll = Math.round(documentHeight - destinationOffset < windowHeight ? documentHeight - windowHeight : destinationOffset);

				if("requestAnimationFrame" in window === false){
					window.scroll(0, destinationOffsetToScroll);
					if(callback){
						callback();
					}
					return;
				}

				function scroll() {
					var now = "now" in window.performance ? performance.now() : new Date().getTime();
					var time = Math.min(1, ((now - startTime) / duration));
					var timeFunction = easings[easing](time);

					if(destinationOffsetToScroll < 0){
						destinationOffsetToScroll = 0;
					}

					window.scroll(0, Math.ceil((timeFunction * (destinationOffsetToScroll - start)) + start));

					if(window.pageYOffset === destinationOffsetToScroll){
						if(callback){
							callback();
						}
						return;
					}

					requestAnimationFrame(scroll);
				}

				scroll();
			};


			// For each scrollspy instance
			var scrollSpyInit = function(){

				for(var i = 0; i < links.length; i++){
					var link = links[i];

					link.on("click.scrollSpy", function(e){
						if(!e.target.classList.contains("submenu-indicator") && e.target.getAttribute("href").length > 1 && e.target.getAttribute("href").substring(0, 1) === "#"){
							var target = e.target.getAttribute("href"),
								section = document.getElementById(target.replace("#", ""));
							if(target.length > 0){
								smoothScroll(document.querySelector(target), nav.options.scrollSpySpeed, "easeInOutCubic");
							}
						}
					});
				}

				var elements = findElements(links);

				window.on("resize.scrollSpy", function(){
					elements = [];
					elements = findElements(links);
				});

				window.on("scroll.scrollSpy", function(){
					var position = {
						top: add(this.pageYOffset, Math.abs(nav.options.scrollSpyOffset)),
						left: this.pageXOffset
					};

					var link;


					for(var i = 0; i < elements.length; i++){
						var current = elements[i];

						if(position.top >= current.top && position.top < current.bottom){
							var hash = current.hash;

							link = findLink(links, hash);

							if(link){
								resetClasses(links);
								link.parentNode.classList.add("is-active");
								break;
							}
						}
					}
				});
			};

			scrollSpyInit();

		}

		nav.init(options);

		if(nav.options.scrollSpy){
			window.onload = function(){
				scrollSpy();
			}
		}

		return nav;
    };

    return Plugin;

}));

Youez - 2016 - github.com/yon3zu
LinuXploit