/*! * jQuery triangle-menu Plugin v0.1.3 * Released: 2018-05-12 * jQuery plugin that creates a dynamic menu with a triangle pointer based on clip-path * https://github.com/andrusieczko/triangle-menu * * Copyright 2018 Karol Andrusieczko * Released under MIT license */ var globalVariable=window||root,jQuery=jQuery||globalVariable.jQuery||require("jquery");(function(n){var r=function(t,e,i){this.$el=e,this.$=t,this._processOptions(e,i)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports.TriangleMenu=r):(window||root).TriangleMenu=r;r.prototype={$:null,$el:null,menuItemSelector:".menu-item",triangleWidth:50,triangleHeight:20,selectItem:function(t){var e=this.$el,i=this._createPolygonPoints(e,t);e.clipPath(i),this._colorIcons(e,this._getMenuItem(e,t)),e.trigger("activate",t)},_getMenuItem:function(t,e){return t.find(this.menuItemSelector+":nth-child("+e+")")},_createPolygonPoints:function(t,e){var i=t.width(),n=t.height(),r=this._getMenuItem(t,e),o=this._getCenterOfMenuItem(t,r),s=o-this.triangleWidth/2,l=o+this.triangleWidth/2;return this._buildPolygonPoints(o,s,l,i,n)},_buildPolygonPoints:function(t,e,i,n,r){return[[0,0],[e,0],[t,this.triangleHeight],[i,0],[n,0],[n,r],[0,r]]},_getCenterOfMenuItem:function(t,e){var i=parseInt(e.css("padding-left"),10);return e.offset().left-t.offset().left+i+e.width()/2},_colorIcons:function(t,e){t.find(this.menuItemSelector).removeClass("active"),e.addClass("active")},onHoverAction:function(t){var e=this.$(t.target);e.hasClass(this.menuItemSelector.substr(1))||(e=e.parents(this.menuItemSelector));var i=e.parent().children(this.menuItemSelector).index(e)+1;this.selectItem(i)},_isFunction:function(t){return"function"==typeof t},_processOptions:function(t,e){if(this.triangleHeight=e&&e.triangleHeight||this.triangleHeight,this.triangleWidth=e&&e.triangleWidth||this.triangleWidth,this.menuItemSelector=e&&e.menuItemSelector||this.menuItemSelector,e&&e.activate){if(!this._isFunction(e.activate))throw new Error("activate argument should be a function");t.on("activate",e.activate.bind(this))}}},n.fn.triangleMenu=function(i){return this.each(function(){var t=n(this),e=new r(n,t,i);t.find(e.menuItemSelector).bind("mouseover",e.onHoverAction.bind(e)),e.selectItem(1)})}}).call(this,jQuery);