{"version":3,"file":"../../../coffee/application/components/morph-dropdown.js","sources":["application/components/morph-dropdown.coffee"],"names":[],"mappings":"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","sourcesContent":["# Morph Dropdown\n#\n# Morph dropdown script inspired by Stripe\n#\n(($, window, document) ->\n \"use strict\"\n\n _defaults =\n duration: 0.5\n animate: \"TweenLite\"\n selectors:\n link: '.has-morph-dropdown'\n dropdown_target: '.morph-dropdown'\n dropdown_list: '.morph-dropdown-list'\n dropdown_wrapper: '.morph-dropdown-wrapper'\n content: '.morph-content'\n events:\n link_create: 'morph.linkCreate'\n threshold:\n xl: 32\n lg: 32\n md: 32\n sm: 16\n xs: 8\n screen: # Refers to the current screen size\n xs: 0\n sm: 768\n md: 992\n lg: 1200\n xl: 1560\n\n\n $.morphDropdown = (element, options) ->\n @settings = $.extend {}, _defaults\n\n @element = $(element)\n @links = $(@settings.selectors.link, @element)\n @dropdown_targets = $(@settings.selectors.dropdown_target, @element)\n @dropdown_list = $(@settings.selectors.dropdown_list, @element)\n @dropdown_wrapper = $(@settings.selectors.dropdown_wrapper, @element)\n\n if @dropdown_wrapper.hasClass '-left'\n @from = 'left'\n else\n @from = 'right'\n\n @initialize = =>\n @link_create_bindings()\n @dropdown_bindings()\n @resize_bindings()\n @touch_bindings()\n\n @set_responsive_context()\n @set_threshold()\n\n @init_animator()\n @init_link_bindings()\n return\n\n\n @touch_bindings = =>\n @dropdown_wrapper.on 'touchstart', (=>)\n @links.on 'touchstart', (=>)\n return\n\n\n @dropdown_bindings = =>\n @dropdown_wrapper.on 'mouseenter', =>\n @cancel_hide_dropdown()\n return\n\n @dropdown_wrapper.on 'mouseleave', =>\n @hide_dropdown()\n return\n return\n\n\n @link_create_bindings = =>\n @element.on @settings.events.link_create, (e, link) =>\n target = $(link.attr('href'))\n content = $(@settings.selectors.content, target)\n\n link.on 'mouseenter', (e) =>\n @show_dropdown link, target, content\n return\n\n .on 'mouseleave', (e) =>\n @link_hovered = false\n\n @hide_dropdown()\n return\n\n .on 'click', (e) =>\n e.preventDefault()\n return\n return\n return\n\n\n @cancel_hide_dropdown = =>\n @show_dropdown @current_link, @current_target, @current_content\n\n return\n\n @hide_dropdown = =>\n @dropdown_targets.removeClass '-active'\n @animate.to @dropdown_list, @settings.duration,\n width: 0\n height: 0\n x: 0\n return\n\n\n @show_dropdown = (link, target, content) =>\n @current_link = link\n @current_target = target\n @current_content = content\n\n @link_hovered = true\n\n width = content.outerWidth(true)\n height = content.outerHeight(true)\n\n width = @window_width - 2 * @threshold if width + @threshold > @window_width\n\n if @from == 'right'\n x = (@element.width() - link.width() / 2) -\n (link.offset().left - @element.offset().left) -\n width / 2\n\n x = @threshold if x < @threshold\n x = @window_width - width - @threshold if x + width + @threshold > @window_width\n x = -x\n\n else\n x = (link.offset().left - @element.offset().left) -\n (width / 2 - link.width() / 2)\n x = @threshold if x < @threshold\n x = @window_width - width - @threshold if x + width + @threshold > @window_width\n\n @dropdown_targets.removeClass '-active'\n\n clearTimeout @link_timeout\n @link_timeout = setTimeout =>\n target.addClass '-active'\n return\n , @settings.duration\n\n @animate.to @dropdown_list, @settings.duration,\n width: width\n height: height\n 'margin-right': -x\n return\n\n\n @set_threshold = =>\n @threshold = @settings.threshold[@current_responsive_size]\n return\n\n\n @resize_bindings = =>\n @set_window_size = =>\n @window_width = $(window).width()\n @window_height = $(window).height()\n return\n\n $(window).on 'resize', =>\n @set_window_size()\n @set_threshold()\n return\n\n @set_window_size()\n return\n\n\n @init_link_bindings = =>\n @links.each (index, link) =>\n @element.triggerHandler @settings.events.link_create, [$(link)]\n return\n\n\n @init_animator = =>\n @animate = window[@settings.animate]\n return\n\n\n ###\n Set current responsive range parameter as xs, sm, md, lg or xl\n ###\n @set_responsive_context = =>\n if @window_width >= @settings.screen.xl\n @current_responsive_size = 'xl'\n else if @window_width >= @settings.screen.lg\n @current_responsive_size = 'lg'\n else if @window_width >= @settings.screen.md\n @current_responsive_size = 'md'\n else if @window_width >= @settings.screen.sm\n @current_responsive_size = 'sm'\n else\n @current_responsive_size = 'xs'\n return\n\n\n @initialize()\n return\n\n # Lightweight plugin wrapper that prevents multiple instantiations.\n #\n $.fn.morphDropdown = (opts) ->\n @each (index, element) ->\n unless $.data element, \"morphDropdown\"\n $.data element, \"morphDropdown\", new $.morphDropdown element, opts\n\n) window.jQuery, window, document\n"]}