UNPKG

8.23 kBSource Map (JSON)View Raw
1{"version":3,"sources":["zeynep.js"],"names":["$","pluginName","defaults","htmlClass","Plugin","element","options","this","eventController","extend","initialized","init","prototype","zeynep","bind","find","on","event","preventDefault","eventDetails","subMenuId","attr","subMenuEl","length","subMenu","menuId","removeClass","addClass","hasClass","scrollTo","top","last","open","close","disableEvent","destroy","removeData","name","handler","eventBinder","call","type","details","Error","fn","instance","data","window","jQuery","cash"],"mappings":"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","file":"zeynep.min.js","sourcesContent":["(function ($, pluginName) {\n var defaults = {\n htmlClass: true\n }\n\n function Plugin (element, options) {\n this.element = element\n this.eventController = eventController\n this.options = $.extend({}, defaults, options)\n this.options.initialized = false\n\n this.init()\n }\n\n Plugin.prototype.init = function () {\n var zeynep = this.element\n var options = this.options\n var eventController = this.eventController.bind(this)\n\n // exit if already initialized\n if (options.initialized === true) return\n\n eventController('loading')\n\n // handle subMenu links/triggers click events\n zeynep.find('[data-submenu]').on('click', function (event) {\n event.preventDefault()\n\n var self = $(this)\n var subMenuId = self.attr('data-submenu')\n var subMenuEl = $('#' + subMenuId)\n\n // if subMenu not found, do nothing\n if (!subMenuEl.length) return\n\n var eventDetails = {\n subMenu: true,\n menuId: subMenuId\n }\n\n eventController('opening', eventDetails)\n\n // open the subMenu\n zeynep.find('.submenu.current').removeClass('current')\n subMenuEl.addClass('opened current')\n !zeynep.hasClass('submenu-opened') && zeynep.addClass('submenu-opened')\n\n // scroll to top before submenu transition\n zeynep[0].scrollTo({ top: 0 })\n\n eventController('opened', eventDetails)\n })\n\n // handle subMenu closers click events\n zeynep.find('[data-submenu-close]').on('click', function (event) {\n event.preventDefault()\n\n var self = $(this)\n var subMenuId = self.attr('data-submenu-close')\n var subMenuEl = $('#' + subMenuId)\n\n // if subMenu not found, do nothing\n if (!subMenuEl.length) return\n\n var eventDetails = {\n subMenu: true,\n menuId: subMenuId\n }\n\n eventController('closing', eventDetails)\n\n // close subMenu\n subMenuEl.removeClass('opened current')\n zeynep.find('.submenu.opened').last().addClass('current')\n !zeynep.find('.submenu.opened').length && zeynep.removeClass('submenu-opened')\n\n // scroll to top between submenu transitions\n subMenuEl[0].scrollTo({ top: 0 })\n\n eventController('closed', eventDetails)\n })\n\n eventController('load')\n\n // zeynepjs successfully initialized\n this.options.htmlClass && !$('html').hasClass('zeynep-initialized') && $('html').addClass('zeynep-initialized')\n\n options.initialized = true\n }\n\n Plugin.prototype.open = function () {\n this.eventController(\n 'opening',\n { subMenu: false }\n )\n\n // zeynepjs menu is opened\n this.element.addClass('opened')\n this.options.htmlClass && $('html').addClass('zeynep-opened')\n\n this.eventController(\n 'opened',\n { subMenu: false }\n )\n }\n\n Plugin.prototype.close = function (disableEvent) {\n !disableEvent && this.eventController('closing', { subMenu: false })\n\n // zeynepjs menu is opened\n this.element.removeClass('opened')\n this.options.htmlClass && $('html').removeClass('zeynep-opened')\n\n !disableEvent && this.eventController('closed', { subMenu: false })\n }\n\n Plugin.prototype.destroy = function () {\n this.eventController('destroying')\n\n // close the menu without firing any event\n this.close(true)\n\n // close submenus\n this.element.find('.submenu.opened').removeClass('opened')\n\n // clear/remove the instance on the element\n this.element.removeData(pluginName)\n\n this.eventController('destroyed')\n\n // reset options\n this.options = defaults\n\n this.options.htmlClass && $('html').removeClass('zeynep-initialized')\n\n delete this.element\n delete this.options\n delete this.eventController\n }\n\n Plugin.prototype.on = function (name, handler) {\n eventBinder.call(this, name, handler)\n }\n\n var eventController = function (type, details) {\n if (!this.options[type]) return\n if (typeof this.options[type] !== 'function') throw Error('event handler must be a function: ' + type)\n\n // call the event\n this.options[type].call(this, this.element, this.options, details)\n }\n\n var getInstance = function (element, options) {\n var instance = null\n\n if (!element.data(pluginName)) {\n // zeynepjs is not initialized for the element\n // crceate a new instance\n instance = new Plugin(element, options || {})\n\n // put the instance on element\n element.data(pluginName, instance)\n } else {\n // return the already initialized instance\n instance = element.data(pluginName)\n }\n\n return instance\n }\n\n var eventBinder = function (name, handler) {\n if (typeof name !== 'string') throw Error('event name is expected to be a string but got: ' + typeof name)\n if (typeof handler !== 'function') throw Error('event handler is not a function for: ' + name)\n\n // update options\n this.options[name] = handler\n }\n\n // a really lightweight plugin wrapper around the constructor\n // preventing against multiple instantiations\n $.fn[pluginName] = function (options) {\n // get a zeynepjs instance\n var instance = getInstance($(this[0]), options)\n\n return instance\n }\n})(window.jQuery || window.cash, 'zeynep')\n"]}
\No newline at end of file