HEX
Server: Apache
System: Linux webm014.cluster128.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User: circuix (152771)
PHP: 8.0.30
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/circuix/www/wp-content/themes/estore/js/superfish.js
;/*
 * jQuery Superfish Menu Plugin - v1.7.7
 * Copyright (c) 2015
 *
 * Dual licensed under the MIT and GPL licenses:
 *	http://www.opensource.org/licenses/mit-license.php
 *	http://www.gnu.org/licenses/gpl.html
 */(function ($, w) {
	"use strict";

	var methods = (function () {
		// private properties and methods go here
		var c                       = {
			bcClass: 'sf-breadcrumb',
			menuClass: 'sf-js-enabled',
			anchorClass: 'sf-with-ul',
			menuArrowClass: 'sf-arrows'
		},
			ios                     = (function () {
				var ios = /^(?![\w\W]*Windows Phone)[\w\W]*(iPhone|iPad|iPod)/i.test( navigator.userAgent );
				if (ios) {
					// tap anywhere on iOS to unfocus a submenu
					$( 'html' ).css( 'cursor', 'pointer' ).on( 'click', $.noop );
				}
				return ios;
			})(),
			wp7                     = (function () {
				var style = document.documentElement.style;
				return ('behavior' in style && 'fill' in style && /iemobile/i.test( navigator.userAgent ));
			})(),
			unprefixedPointerEvents = (function () {
				return ( ! ! w.PointerEvent);
			})(),
			toggleMenuClasses       = function ($menu, o) {
				var classes = c.menuClass;
				if (o.cssArrows) {
					classes += ' ' + c.menuArrowClass;
				}
				$menu.toggleClass( classes );
			},
			setPathToCurrent        = function ($menu, o) {
				return $menu.find( 'li.' + o.pathClass ).slice( 0, o.pathLevels )
					.addClass( o.hoverClass + ' ' + c.bcClass )
						.filter(
							function () {
								return ($( this ).children( o.popUpSelector ).hide().show().length);
							}
						).removeClass( o.pathClass );
			},
			toggleAnchorClass       = function ($li) {
				$li.children( 'a' ).toggleClass( c.anchorClass );
			},
			toggleTouchAction       = function ($menu) {
				var msTouchAction = $menu.css( 'ms-touch-action' );
				var touchAction   = $menu.css( 'touch-action' );
				touchAction       = touchAction || msTouchAction;
				touchAction       = (touchAction === 'pan-y') ? 'auto' : 'pan-y';
				$menu.css(
					{
						'ms-touch-action': touchAction,
						'touch-action': touchAction
					}
				);
			},
			applyHandlers           = function ($menu, o) {
				var targets = 'li:has(' + o.popUpSelector + ')';
				if ($.fn.hoverIntent && ! o.disableHI) {
					$menu.hoverIntent( over, out, targets );
				} else {
					$menu
						.on( 'mouseenter.superfish', targets, over )
						.on( 'mouseleave.superfish', targets, out );
				}
				var touchevent = 'MSPointerDown.superfish';
				if (unprefixedPointerEvents) {
					touchevent = 'pointerdown.superfish';
				}
				if ( ! ios) {
					touchevent += ' touchend.superfish';
				}
				if (wp7) {
					touchevent += ' mousedown.superfish';
				}
				$menu
					.on( 'focusin.superfish', 'li', over )
					.on( 'focusout.superfish', 'li', out )
					.on( touchevent, 'a', o, touchHandler );
			},
			touchHandler            = function (e) {
				var $this = $( this ),
					o     = getOptions( $this ),
					$ul   = $this.siblings( e.data.popUpSelector );

				if (o.onHandleTouch.call( $ul ) === false) {
					return this;
				}

				if ($ul.length > 0 && $ul.is( ':hidden' )) {
					$this.one( 'click.superfish', false );
					if (e.type === 'MSPointerDown' || e.type === 'pointerdown') {
						$this.trigger( 'focus' );
					} else {
						$.proxy( over, $this.parent( 'li' ) )();
					}
				}
			},
			over                    = function () {
				var $this = $( this ),
					o     = getOptions( $this );
				clearTimeout( o.sfTimer );
				$this.siblings().superfish( 'hide' ).end().superfish( 'show' );
			},
			out                     = function () {
				var $this = $( this ),
					o     = getOptions( $this );
				if (ios) {
					$.proxy( close, $this, o )();
				} else {
					clearTimeout( o.sfTimer );
					o.sfTimer = setTimeout( $.proxy( close, $this, o ), o.delay );
				}
			},
			close                   = function (o) {
				o.retainPath = ($.inArray( this[0], o.$path ) > -1);
				this.superfish( 'hide' );

				if ( ! this.parents( '.' + o.hoverClass ).length) {
					o.onIdle.call( getMenu( this ) );
					if (o.$path.length) {
						$.proxy( over, o.$path )();
					}
				}
			},
			getMenu                 = function ($el) {
				return $el.closest( '.' + c.menuClass );
			},
			getOptions              = function ($el) {
				return getMenu( $el ).data( 'sf-options' );
			};

		return {
			// public methods
			hide: function (instant) {
				if (this.length) {
					var $this = this,
						o     = getOptions( $this );
					if ( ! o) {
						return this;
					}
					var not   = (o.retainPath === true) ? o.$path : '',
						$ul   = $this.find( 'li.' + o.hoverClass ).add( this ).not( not ).removeClass( o.hoverClass ).children( o.popUpSelector ),
						speed = o.speedOut;

					if (instant) {
						$ul.show();
						speed = 0;
					}
					o.retainPath = false;

					if (o.onBeforeHide.call( $ul ) === false) {
						return this;
					}

					$ul.stop( true, true ).animate(
						o.animationOut,
						speed,
						function () {
							var $this = $( this );
							o.onHide.call( $this );
						}
					);
				}
				return this;
			},
			show: function () {
				var o = getOptions( this );
				if ( ! o) {
					return this;
				}
				var $this = this.addClass( o.hoverClass ),
					$ul   = $this.children( o.popUpSelector );

				if (o.onBeforeShow.call( $ul ) === false) {
					return this;
				}

				$ul.stop( true, true ).animate(
					o.animation,
					o.speed,
					function () {
						o.onShow.call( $ul );
					}
				);
				return this;
			},
			destroy: function () {
				return this.each(
					function () {
						var $this = $( this ),
						o         = $this.data( 'sf-options' ),
						$hasPopUp;
						if ( ! o) {
							return false;
						}
						$hasPopUp = $this.find( o.popUpSelector ).parent( 'li' );
						clearTimeout( o.sfTimer );
						toggleMenuClasses( $this, o );
						toggleAnchorClass( $hasPopUp );
						toggleTouchAction( $this );
						// remove event handlers
						$this.off( '.superfish' ).off( '.hoverIntent' );
						// clear animation's inline display style
						$hasPopUp.children( o.popUpSelector ).attr(
							'style',
							function (i, style) {
								return style.replace( /display[^;]+;?/g, '' );
							}
						);
						// reset 'current' path classes
						o.$path.removeClass( o.hoverClass + ' ' + c.bcClass ).addClass( o.pathClass );
						$this.find( '.' + o.hoverClass ).removeClass( o.hoverClass );
						o.onDestroy.call( $this );
						$this.removeData( 'sf-options' );
					}
				);
			},
			init: function (op) {
				return this.each(
					function () {
						var $this = $( this );
						if ($this.data( 'sf-options' )) {
							return false;
						}
						var o     = $.extend( {}, $.fn.superfish.defaults, op ),
						$hasPopUp = $this.find( o.popUpSelector ).parent( 'li' );
						o.$path   = setPathToCurrent( $this, o );

						$this.data( 'sf-options', o );

						toggleMenuClasses( $this, o );
						toggleAnchorClass( $hasPopUp );
						toggleTouchAction( $this );
						applyHandlers( $this, o );

						$hasPopUp.not( '.' + c.bcClass ).superfish( 'hide', true );

						o.onInit.call( this );
					}
				);
			}
		};
	})();

	$.fn.superfish = function (method, args) {
		if (methods[method]) {
			return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ) );
		} else if (typeof method === 'object' || ! method) {
			return methods.init.apply( this, arguments );
		} else {
			return $.error( 'Method ' + method + ' does not exist on jQuery.fn.superfish' );
		}
	};

	$.fn.superfish.defaults = {
		popUpSelector: 'ul,.sf-mega', // within menu context
		hoverClass: 'sfHover',
		pathClass: 'overrideThisToUse',
		pathLevels: 1,
		delay: 800,
		animation: {opacity: 'show'},
		animationOut: {opacity: 'hide'},
		speed: 'normal',
		speedOut: 'fast',
		cssArrows: true,
		disableHI: false,
		onInit: $.noop,
		onBeforeShow: $.noop,
		onShow: $.noop,
		onBeforeHide: $.noop,
		onHide: $.noop,
		onIdle: $.noop,
		onDestroy: $.noop,
		onHandleTouch: $.noop
	};

})( jQuery, window );