{"version":3,"file":"jquery.slicknav-ffb93af8.js","sources":["../../../app/javascript/javascripts/ui/jquery.slicknav.js"],"sourcesContent":["/*!\n * SlickNav Responsive Mobile Menu v1.0.4\n * (c) 2015 Josh Cope\n * licensed under MIT\n */\n;(function ($, document, window) {\n    var\n    // default settings object.\n        defaults = {\n            label: '',\n            duplicate: true,\n            duration: 200,\n            easingOpen: 'swing',\n            easingClose: 'swing',\n            prependTo: '.sp_nav_on',\n            appendTo: '',\n            parentTag: 'a',\n            closeOnClick: false,\n            allowParentLinks: false,\n            nestedParentLinks: true,\n            showChildren: false,\n            removeIds: false,\n            removeClasses: false,\n            removeStyles: false,\n\t\t\tbrand: '',\n            init: function () {},\n            beforeOpen: function () {},\n            beforeClose: function () {},\n            afterOpen: function () {},\n            afterClose: function () {}\n        },\n        mobileMenu = 'slicknav',\n        prefix = 'slicknav';\n\n    function Plugin(element, options) {\n        this.element = element;\n\n        // jQuery has an extend method which merges the contents of two or\n        // more objects, storing the result in the first object. The first object\n        // is generally empty as we don't want to alter the default options for\n        // future instances of the plugin\n        this.settings = $.extend({}, defaults, options);\n\n        this._defaults = defaults;\n        this._name = mobileMenu;\n\n        this.init();\n    }\n\n    Plugin.prototype.init = function () {\n        var $this = this,\n            menu = $(this.element),\n            settings = this.settings,\n            iconClass,\n            menuBar;\n\n        // clone menu if needed\n        if (settings.duplicate) {\n            $this.mobileNav = menu.clone();\n            //remove ids from clone to prevent css issues\n            $this.mobileNav.removeAttr('id');\n            $this.mobileNav.find('*').each(function (i, e) {\n                $(e).removeAttr('id');\n            });\n        } else {\n            $this.mobileNav = menu;\n\n            // remove ids if set\n            $this.mobileNav.removeAttr('id');\n            $this.mobileNav.find('*').each(function (i, e) {\n                $(e).removeAttr('id');\n            });\n        }\n\n        // remove classes if set\n        if (settings.removeClasses) {\n            $this.mobileNav.removeAttr('class');\n            $this.mobileNav.find('*').each(function (i, e) {\n                $(e).removeAttr('class');\n            });\n        }\n        \n        // remove styles if set\n        if (settings.removeStyles) {\n            $this.mobileNav.removeAttr('style');\n            $this.mobileNav.find('*').each(function (i, e) {\n                $(e).removeAttr('style');\n            });\n        }\n\n        // styling class for the button\n        iconClass = prefix + '_icon';\n\n        if (settings.label === '') {\n            iconClass += ' ' + prefix + '_no-text';\n        }\n\n        if (settings.parentTag === 'a') {\n            settings.parentTag = 'a href=\"#\"';\n        }\n\n        // create menu bar\n        $this.mobileNav.attr('class', prefix + '_nav');\n        menuBar = $('<div class=\"' + prefix + '_menu\"></div>');\n\t\tif (settings.brand !== '') {\n\t\t\tvar brand = $('<div class=\"' + prefix + '_brand\">'+settings.brand+'</div>');\n\t\t\t$(menuBar).append(brand);\n\t\t}\n        $this.btn = $(\n            ['<' + settings.parentTag + ' aria-haspopup=\"true\" tabindex=\"0\" class=\"' + prefix + '_btn ' + prefix + '_collapsed\">',\n                '<span class=\"' + prefix + '_menutxt\">' + settings.label + '</span>',\n                '<span class=\"' + iconClass + '\">',\n                    '<span class=\"' + prefix + '_icon-bar\"></span>',\n                    '<span class=\"' + prefix + '_icon-bar\"></span>',\n                    '<span class=\"' + prefix + '_icon-bar\"></span>',\n                '</span>',\n            '</' + settings.parentTag + '>'\n            ].join('')\n        );\n        $(menuBar).append($this.btn);\n        if(settings.appendTo !== '') {\n            $(settings.appendTo).append(menuBar);\n        } else {\n            $(settings.prependTo).prepend(menuBar);\n        }\n        menuBar.append($this.mobileNav);\n\n        // iterate over structure adding additional structure\n        var items = $this.mobileNav.find('li');\n        $(items).each(function () {\n            var item = $(this),\n                data = {};\n            data.children = item.children('ul').attr('role', 'menu');\n            item.data('menu', data);\n\n            // if a list item has a nested menu\n            if (data.children.length > 0) {\n\n                // select all text before the child menu\n                // check for anchors\n\n                var a = item.contents(),\n                    containsAnchor = false,\n                    nodes = [];\n\n                $(a).each(function () {\n                    if (!$(this).is('ul')) {\n                        nodes.push(this);\n                    } else {\n                        return false;\n                    }\n\n                    if($(this).is(\"a\")) {\n                        containsAnchor = true;\n                    }\n                });\n\n                var wrapElement = $(\n                    '<' + settings.parentTag + ' role=\"menuitem\" aria-haspopup=\"true\" tabindex=\"-1\" class=\"' + prefix + '_item\"/>'\n                );\n\n                // wrap item text with tag and add classes unless we are separating parent links\n                if ((!settings.allowParentLinks || settings.nestedParentLinks) || !containsAnchor) {\n                    var $wrap = $(nodes).wrapAll(wrapElement).parent();\n                    $wrap.addClass(prefix+'_row');\n                } else\n                    $(nodes).wrapAll('<span class=\"'+prefix+'_parent-link '+prefix+'_row\"/>').parent();\n\n                if (!settings.showChildren) {\n                    item.addClass(prefix+'_collapsed');\n                } else {\n                    item.addClass(prefix+'_open');\n                }\n\n                item.addClass(prefix+'_parent');\n\n                // create parent arrow. wrap with link if parent links and separating\n                var arrowElement = $('<span class=\"'+prefix+'_arrow\">'+(settings.showChildren?settings.openedSymbol:settings.closedSymbol)+'</span>');\n\n                if (settings.allowParentLinks && !settings.nestedParentLinks && containsAnchor)\n                    arrowElement = arrowElement.wrap(wrapElement).parent();\n\n                //append arrow\n                $(nodes).last().after(arrowElement);\n\n\n            } else if ( item.children().length === 0) {\n                 item.addClass(prefix+'_txtnode');\n            }\n\n            // accessibility for links\n            item.children('a').attr('role', 'menuitem').click(function(event){\n                //Ensure that it's not a parent\n                if (settings.closeOnClick && !$(event.target).parent().closest('li').hasClass(prefix+'_parent')) {\n                        //Emulate menu close if set\n                        $($this.btn).click();\n                    }\n            });\n\n            //also close on click if parent links are set\n            if (settings.closeOnClick && settings.allowParentLinks) {\n                item.children('a').children('a').click(function (event) {\n                    //Emulate menu close\n                    $($this.btn).click();\n                });\n\n                item.find('.'+prefix+'_parent-link a:not(.'+prefix+'_item)').click(function(event){\n                    //Emulate menu close\n                        $($this.btn).click();\n                });\n            }\n        });\n\n        // structure is in place, now hide appropriate items\n        $(items).each(function () {\n            var data = $(this).data('menu');\n            if (!settings.showChildren){\n                $this._visibilityToggle(data.children, null, false, null, true);\n            }\n        });\n\n        // finally toggle entire menu\n        $this._visibilityToggle($this.mobileNav, null, false, 'init', true);\n\n        // accessibility for menu button\n        $this.mobileNav.attr('role','menu');\n\n        // outline prevention when using mouse\n        $(document).mousedown(function(){\n            $this._outlines(false);\n        });\n\n        $(document).keyup(function(){\n            $this._outlines(true);\n        });\n\n        // menu button click\n        $($this.btn).click(function (e) {\n            e.preventDefault();\n            $this._menuToggle();\n        });\n\n        // click on menu parent\n        $this.mobileNav.on('click', '.' + prefix + '_item', function (e) {\n            e.preventDefault();\n            $this._itemClick($(this));\n        });\n\n        // check for enter key on menu button and menu parents\n        $($this.btn).keydown(function (e) {\n            var ev = e || event;\n            if(ev.keyCode === 13) {\n                e.preventDefault();\n                $this._menuToggle();\n            }\n        });\n\n        $this.mobileNav.on('keydown', '.'+prefix+'_item', function(e) {\n            var ev = e || event;\n            if(ev.keyCode === 13) {\n                e.preventDefault();\n                $this._itemClick($(e.target));\n            }\n        });\n\n        // allow links clickable within parent tags if set\n        if (settings.allowParentLinks && settings.nestedParentLinks) {\n            $('.'+prefix+'_item a').click(function(e){\n                    e.stopImmediatePropagation();\n            });\n        }\n    };\n\n    //toggle menu\n    Plugin.prototype._menuToggle = function (el) {\n        var $this = this;\n        var btn = $this.btn;\n        var mobileNav = $this.mobileNav;\n\n        if (btn.hasClass(prefix+'_collapsed')) {\n            btn.removeClass(prefix+'_collapsed');\n            btn.addClass(prefix+'_open');\n        } else {\n            btn.removeClass(prefix+'_open');\n            btn.addClass(prefix+'_collapsed');\n        }\n        btn.addClass(prefix+'_animating');\n        $this._visibilityToggle(mobileNav, btn.parent(), true, btn);\n    };\n\n    // toggle clicked items\n    Plugin.prototype._itemClick = function (el) {\n        var $this = this;\n        var settings = $this.settings;\n        var data = el.data('menu');\n        if (!data) {\n            data = {};\n            data.arrow = el.children('.'+prefix+'_arrow');\n            data.ul = el.next('ul');\n            data.parent = el.parent();\n            //Separated parent link structure\n            if (data.parent.hasClass(prefix+'_parent-link')) {\n                data.parent = el.parent().parent();\n                data.ul = el.parent().next('ul');\n            }\n            el.data('menu', data);\n        }\n        if (data.parent.hasClass(prefix+'_collapsed')) {\n            data.arrow.html(settings.openedSymbol);\n            data.parent.removeClass(prefix+'_collapsed');\n            data.parent.addClass(prefix+'_open');\n            data.parent.addClass(prefix+'_animating');\n            $this._visibilityToggle(data.ul, data.parent, true, el);\n        } else {\n            data.arrow.html(settings.closedSymbol);\n            data.parent.addClass(prefix+'_collapsed');\n            data.parent.removeClass(prefix+'_open');\n            data.parent.addClass(prefix+'_animating');\n            $this._visibilityToggle(data.ul, data.parent, true, el);\n        }\n    };\n\n    // toggle actual visibility and accessibility tags\n    Plugin.prototype._visibilityToggle = function(el, parent, animate, trigger, init) {\n        var $this = this;\n        var settings = $this.settings;\n        var items = $this._getActionItems(el);\n        var duration = 0;\n        if (animate) {\n            duration = settings.duration;\n        }\n\n        if (el.hasClass(prefix+'_hidden')) {\n            el.removeClass(prefix+'_hidden');\n             //Fire beforeOpen callback\n                if (!init) {\n                    settings.beforeOpen(trigger);\n                }\n            el.slideDown(duration, settings.easingOpen, function(){\n\n                $(trigger).removeClass(prefix+'_animating');\n                $(parent).removeClass(prefix+'_animating');\n\n                //Fire afterOpen callback\n                if (!init) {\n                    settings.afterOpen(trigger);\n                }\n            });\n            el.attr('aria-hidden','false');\n            items.attr('tabindex', '0');\n            $this._setVisAttr(el, false);\n        } else {\n            el.addClass(prefix+'_hidden');\n\n            //Fire init or beforeClose callback\n            if (!init){\n                settings.beforeClose(trigger);\n            }\n\n            el.slideUp(duration, this.settings.easingClose, function() {\n                el.attr('aria-hidden','true');\n                items.attr('tabindex', '-1');\n                $this._setVisAttr(el, true);\n                el.hide(); //jQuery 1.7 bug fix\n\n                $(trigger).removeClass(prefix+'_animating');\n                $(parent).removeClass(prefix+'_animating');\n\n                //Fire init or afterClose callback\n                if (!init){\n                    settings.afterClose(trigger);\n                } else if (trigger === 'init'){\n                    settings.init();\n                }\n            });\n        }\n    };\n\n    // set attributes of element and children based on visibility\n    Plugin.prototype._setVisAttr = function(el, hidden) {\n        var $this = this;\n\n        // select all parents that aren't hidden\n        var nonHidden = el.children('li').children('ul').not('.'+prefix+'_hidden');\n\n        // iterate over all items setting appropriate tags\n        if (!hidden) {\n            nonHidden.each(function(){\n                var ul = $(this);\n                ul.attr('aria-hidden','false');\n                var items = $this._getActionItems(ul);\n                items.attr('tabindex', '0');\n                $this._setVisAttr(ul, hidden);\n            });\n        } else {\n            nonHidden.each(function(){\n                var ul = $(this);\n                ul.attr('aria-hidden','true');\n                var items = $this._getActionItems(ul);\n                items.attr('tabindex', '-1');\n                $this._setVisAttr(ul, hidden);\n            });\n        }\n    };\n\n    // get all 1st level items that are clickable\n    Plugin.prototype._getActionItems = function(el) {\n        var data = el.data(\"menu\");\n        if (!data) {\n            data = {};\n            var items = el.children('li');\n            var anchors = items.find('a');\n            data.links = anchors.add(items.find('.'+prefix+'_item'));\n            el.data('menu', data);\n        }\n        return data.links;\n    };\n\n    Plugin.prototype._outlines = function(state) {\n        if (!state) {\n            $('.'+prefix+'_item, .'+prefix+'_btn').css('outline','none');\n        } else {\n            $('.'+prefix+'_item, .'+prefix+'_btn').css('outline','');\n        }\n    };\n\n    Plugin.prototype.toggle = function(){\n        var $this = this;\n        $this._menuToggle();\n    };\n\n    Plugin.prototype.open = function(){\n        var $this = this;\n        if ($this.btn.hasClass(prefix+'_collapsed')) {\n            $this._menuToggle();\n        }\n    };\n\n    Plugin.prototype.close = function(){\n        var $this = this;\n        if ($this.btn.hasClass(prefix+'_open')) {\n            $this._menuToggle();\n        }\n    };\n\n    $.fn[mobileMenu] = function ( options ) {\n        var args = arguments;\n\n        // Is the first parameter an object (options), or was omitted, instantiate a new instance\n        if (options === undefined || typeof options === 'object') {\n            return this.each(function () {\n\n                // Only allow the plugin to be instantiated once due to methods\n                if (!$.data(this, 'plugin_' + mobileMenu)) {\n\n                    // if it has no instance, create a new one, pass options to our plugin constructor,\n                    // and store the plugin instance in the elements jQuery data object.\n                    $.data(this, 'plugin_' + mobileMenu, new Plugin( this, options ));\n                }\n            });\n\n        // If is a string and doesn't start with an underscore or 'init' function, treat this as a call to a public method.\n        } else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {\n\n            // Cache the method call to make it possible to return a value\n            var returns;\n\n            this.each(function () {\n                var instance = $.data(this, 'plugin_' + mobileMenu);\n\n                // Tests that there's already a plugin-instance and checks that the requested public method exists\n                if (instance instanceof Plugin && typeof instance[options] === 'function') {\n\n                    // Call the method of our plugin instance, and pass it the supplied arguments.\n                    returns = instance[options].apply( instance, Array.prototype.slice.call( args, 1 ) );\n                }\n            });\n\n            // If the earlier cached method gives a value back return the value, otherwise return this to preserve chainability.\n            return returns !== undefined ? returns : this;\n        }\n    };\n}(jQuery, document, window));\n"],"names":["e","n","$","document","window","defaults","mobileMenu","prefix","Plugin","element","options","$this","menu","settings","iconClass","menuBar","i","brand","items","item","data","a","containsAnchor","nodes","wrapElement","$wrap","arrowElement","event","ev","el","btn","mobileNav","parent","animate","trigger","init","duration","hidden","nonHidden","ul","anchors","state","args","returns","instance"],"mappings":"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"}