{ "version": 3, "sources": ["../../../node_modules/jquery-ujs/src/rails.js", "../../../node_modules/sticky-kit/dist/sticky-kit.js", "../../../node_modules/js-cookie/src/js.cookie.js", "../../../node_modules/waypoints/lib/jquery.waypoints.js", "../../../node_modules/bootstrap/js/modal.js", "../../javascript/extensions/array-join-sentence.js", "../../javascript/extensions/index.js", "../../javascript/models/accordion.js", "../../javascript/models/algolia-source.js", "../../javascript/models/beer-autocomplete-suggestion.js", "../../javascript/models/beer-metadata.js", "../../javascript/models/browser.js", "../../javascript/models/menu-sections.js", "../../javascript/models/servings.js", "../../javascript/models/script-inserter.js", "../../javascript/models/stripe-loader.js", "../../javascript/models/tv-menu-loader.js", "../../javascript/models/index.js", "../../javascript/shared/checklists.js", "../../javascript/shared/dom.js", "../../javascript/shared/input-focuser.js", "../../javascript/shared/messages.js", "../../javascript/shared/modals.js", "../../javascript/shared/on-premise-tracker.js", "../../javascript/shared/shared.js", "../../javascript/shared/index.js", "../../javascript/application-shared.js"], "sourcesContent": ["(function($, undefined) {\n\n/**\n * Unobtrusive scripting adapter for jQuery\n * https://github.com/rails/jquery-ujs\n *\n * Requires jQuery 1.8.0 or later.\n *\n * Released under the MIT license\n *\n */\n\n // Cut down on the number of issues from people inadvertently including jquery_ujs twice\n // by detecting and raising an error when it happens.\n 'use strict';\n\n if ( $.rails !== undefined ) {\n $.error('jquery-ujs has already been loaded!');\n }\n\n // Shorthand to make it a little easier to call public rails functions from within rails.js\n var rails;\n var $document = $(document);\n\n $.rails = rails = {\n // Link elements bound by jquery-ujs\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n\n // Button elements bound by jquery-ujs\n buttonClickSelector: 'button[data-remote]:not([form]):not(form button), button[data-confirm]:not([form]):not(form button)',\n\n // Select elements bound by jquery-ujs\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n\n // Form elements bound by jquery-ujs\n formSubmitSelector: 'form',\n\n // Form input elements bound by jquery-ujs\n formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n\n // Form input elements disabled during form submission\n disableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n\n // Form input elements re-enabled after form submission\n enableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n\n // Form required input elements\n requiredInputSelector: 'input[name][required]:not([disabled]), textarea[name][required]:not([disabled])',\n\n // Form file input elements\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n\n // Link onClick disable selector with possible reenable after remote submission\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n\n // Button onClick disable selector with possible reenable after remote submission\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]',\n\n // Up-to-date Cross-Site Request Forgery token\n csrfToken: function() {\n return $('meta[name=csrf-token]').attr('content');\n },\n\n // URL param that must contain the CSRF token\n csrfParam: function() {\n return $('meta[name=csrf-param]').attr('content');\n },\n\n // Make sure that every Ajax request sends the CSRF token\n CSRFProtection: function(xhr) {\n var token = rails.csrfToken();\n if (token) xhr.setRequestHeader('X-CSRF-Token', token);\n },\n\n // Make sure that all forms have actual up-to-date tokens (cached forms contain old ones)\n refreshCSRFTokens: function(){\n $('form input[name=\"' + rails.csrfParam() + '\"]').val(rails.csrfToken());\n },\n\n // Triggers an event on an element and returns false if the event result is false\n fire: function(obj, name, data) {\n var event = $.Event(name);\n obj.trigger(event, data);\n return event.result !== false;\n },\n\n // Default confirm dialog, may be overridden with custom confirm dialog in $.rails.confirm\n confirm: function(message) {\n return confirm(message);\n },\n\n // Default ajax function, may be overridden with custom function in $.rails.ajax\n ajax: function(options) {\n return $.ajax(options);\n },\n\n // Default way to get an element's href. May be overridden at $.rails.href.\n href: function(element) {\n return element[0].href;\n },\n\n // Checks \"data-remote\" if true to handle the request through a XHR request.\n isRemote: function(element) {\n return element.data('remote') !== undefined && element.data('remote') !== false;\n },\n\n // Submits \"remote\" forms and links with ajax\n handleRemote: function(element) {\n var method, url, data, withCredentials, dataType, options;\n\n if (rails.fire(element, 'ajax:before')) {\n withCredentials = element.data('with-credentials') || null;\n dataType = element.data('type') || ($.ajaxSettings && $.ajaxSettings.dataType);\n\n if (element.is('form')) {\n method = element.data('ujs:submit-button-formmethod') || element.attr('method');\n url = element.data('ujs:submit-button-formaction') || element.attr('action');\n data = $(element[0]).serializeArray();\n // memoized value from clicked submit button\n var button = element.data('ujs:submit-button');\n if (button) {\n data.push(button);\n element.data('ujs:submit-button', null);\n }\n element.data('ujs:submit-button-formmethod', null);\n element.data('ujs:submit-button-formaction', null);\n } else if (element.is(rails.inputChangeSelector)) {\n method = element.data('method');\n url = element.data('url');\n data = element.serialize();\n if (element.data('params')) data = data + '&' + element.data('params');\n } else if (element.is(rails.buttonClickSelector)) {\n method = element.data('method') || 'get';\n url = element.data('url');\n data = element.serialize();\n if (element.data('params')) data = data + '&' + element.data('params');\n } else {\n method = element.data('method');\n url = rails.href(element);\n data = element.data('params') || null;\n }\n\n options = {\n type: method || 'GET', data: data, dataType: dataType,\n // stopping the \"ajax:beforeSend\" event will cancel the ajax request\n beforeSend: function(xhr, settings) {\n if (settings.dataType === undefined) {\n xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);\n }\n if (rails.fire(element, 'ajax:beforeSend', [xhr, settings])) {\n element.trigger('ajax:send', xhr);\n } else {\n return false;\n }\n },\n success: function(data, status, xhr) {\n element.trigger('ajax:success', [data, status, xhr]);\n },\n complete: function(xhr, status) {\n element.trigger('ajax:complete', [xhr, status]);\n },\n error: function(xhr, status, error) {\n element.trigger('ajax:error', [xhr, status, error]);\n },\n crossDomain: rails.isCrossDomain(url)\n };\n\n // There is no withCredentials for IE6-8 when\n // \"Enable native XMLHTTP support\" is disabled\n if (withCredentials) {\n options.xhrFields = {\n withCredentials: withCredentials\n };\n }\n\n // Only pass url to `ajax` options if not blank\n if (url) { options.url = url; }\n\n return rails.ajax(options);\n } else {\n return false;\n }\n },\n\n // Determines if the request is a cross domain request.\n isCrossDomain: function(url) {\n var originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n var urlAnchor = document.createElement('a');\n\n try {\n urlAnchor.href = url;\n // This is a workaround to a IE bug.\n urlAnchor.href = urlAnchor.href;\n\n // If URL protocol is false or is a string containing a single colon\n // *and* host are false, assume it is not a cross-domain request\n // (should only be the case for IE7 and IE compatibility mode).\n // Otherwise, evaluate protocol and host of the URL against the origin\n // protocol and host.\n return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) ||\n (originAnchor.protocol + '//' + originAnchor.host ===\n urlAnchor.protocol + '//' + urlAnchor.host));\n } catch (e) {\n // If there is an error parsing the URL, assume it is crossDomain.\n return true;\n }\n },\n\n // Handles \"data-method\" on links such as:\n // <a href=\"/users/5\" data-method=\"delete\" rel=\"nofollow\" data-confirm=\"Are you sure?\">Delete</a>\n handleMethod: function(link) {\n var href = rails.href(link),\n method = link.data('method'),\n target = link.attr('target'),\n csrfToken = rails.csrfToken(),\n csrfParam = rails.csrfParam(),\n form = $('<form method=\"post\" action=\"' + href + '\"></form>'),\n metadataInput = '<input name=\"_method\" value=\"' + method + '\" type=\"hidden\" />';\n\n if (csrfParam !== undefined && csrfToken !== undefined && !rails.isCrossDomain(href)) {\n metadataInput += '<input name=\"' + csrfParam + '\" value=\"' + csrfToken + '\" type=\"hidden\" />';\n }\n\n if (target) { form.attr('target', target); }\n\n form.hide().append(metadataInput).appendTo('body');\n form.submit();\n },\n\n // Helper function that returns form elements that match the specified CSS selector\n // If form is actually a \"form\" element this will return associated elements outside the from that have\n // the html form attribute set\n formElements: function(form, selector) {\n return form.is('form') ? $(form[0].elements).filter(selector) : form.find(selector);\n },\n\n /* Disables form elements:\n - Caches element value in 'ujs:enable-with' data store\n - Replaces element text with value of 'data-disable-with' attribute\n - Sets disabled property to true\n */\n disableFormElements: function(form) {\n rails.formElements(form, rails.disableSelector).each(function() {\n rails.disableFormElement($(this));\n });\n },\n\n disableFormElement: function(element) {\n var method, replacement;\n\n method = element.is('button') ? 'html' : 'val';\n replacement = element.data('disable-with');\n\n if (replacement !== undefined) {\n element.data('ujs:enable-with', element[method]());\n element[method](replacement);\n }\n\n element.prop('disabled', true);\n element.data('ujs:disabled', true);\n },\n\n /* Re-enables disabled form elements:\n - Replaces element text with cached value from 'ujs:enable-with' data store (created in `disableFormElements`)\n - Sets disabled property to false\n */\n enableFormElements: function(form) {\n rails.formElements(form, rails.enableSelector).each(function() {\n rails.enableFormElement($(this));\n });\n },\n\n enableFormElement: function(element) {\n var method = element.is('button') ? 'html' : 'val';\n if (element.data('ujs:enable-with') !== undefined) {\n element[method](element.data('ujs:enable-with'));\n element.removeData('ujs:enable-with'); // clean up cache\n }\n element.prop('disabled', false);\n element.removeData('ujs:disabled');\n },\n\n /* For 'data-confirm' attribute:\n - Fires `confirm` event\n - Shows the confirmation dialog\n - Fires the `confirm:complete` event\n\n Returns `true` if no function stops the chain and user chose yes; `false` otherwise.\n Attaching a handler to the element's `confirm` event that returns a `falsy` value cancels the confirmation dialog.\n Attaching a handler to the element's `confirm:complete` event that returns a `falsy` value makes this function\n return false. The `confirm:complete` event is fired whether or not the user answered true or false to the dialog.\n */\n allowAction: function(element) {\n var message = element.data('confirm'),\n answer = false, callback;\n if (!message) { return true; }\n\n if (rails.fire(element, 'confirm')) {\n try {\n answer = rails.confirm(message);\n } catch (e) {\n (console.error || console.log).call(console, e.stack || e);\n }\n callback = rails.fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n },\n\n // Helper function which checks for blank inputs in a form that match the specified CSS selector\n blankInputs: function(form, specifiedSelector, nonBlank) {\n var foundInputs = $(),\n input,\n valueToCheck,\n radiosForNameWithNoneSelected,\n radioName,\n selector = specifiedSelector || 'input,textarea',\n requiredInputs = form.find(selector),\n checkedRadioButtonNames = {};\n\n requiredInputs.each(function() {\n input = $(this);\n if (input.is('input[type=radio]')) {\n\n // Don't count unchecked required radio as blank if other radio with same name is checked,\n // regardless of whether same-name radio input has required attribute or not. The spec\n // states https://www.w3.org/TR/html5/forms.html#the-required-attribute\n radioName = input.attr('name');\n\n // Skip if we've already seen the radio with this name.\n if (!checkedRadioButtonNames[radioName]) {\n\n // If none checked\n if (form.find('input[type=radio]:checked[name=\"' + radioName + '\"]').length === 0) {\n radiosForNameWithNoneSelected = form.find(\n 'input[type=radio][name=\"' + radioName + '\"]');\n foundInputs = foundInputs.add(radiosForNameWithNoneSelected);\n }\n\n // We only need to check each name once.\n checkedRadioButtonNames[radioName] = radioName;\n }\n } else {\n valueToCheck = input.is('input[type=checkbox],input[type=radio]') ? input.is(':checked') : !!input.val();\n if (valueToCheck === nonBlank) {\n foundInputs = foundInputs.add(input);\n }\n }\n });\n return foundInputs.length ? foundInputs : false;\n },\n\n // Helper function which checks for non-blank inputs in a form that match the specified CSS selector\n nonBlankInputs: function(form, specifiedSelector) {\n return rails.blankInputs(form, specifiedSelector, true); // true specifies nonBlank\n },\n\n // Helper function, needed to provide consistent behavior in IE\n stopEverything: function(e) {\n $(e.target).trigger('ujs:everythingStopped');\n e.stopImmediatePropagation();\n return false;\n },\n\n // Replace element's html with the 'data-disable-with' after storing original html\n // and prevent clicking on it\n disableElement: function(element) {\n var replacement = element.data('disable-with');\n\n if (replacement !== undefined) {\n element.data('ujs:enable-with', element.html()); // store enabled state\n element.html(replacement);\n }\n\n element.bind('click.railsDisable', function(e) { // prevent further clicking\n return rails.stopEverything(e);\n });\n element.data('ujs:disabled', true);\n },\n\n // Restore element to its original state which was disabled by 'disableElement' above\n enableElement: function(element) {\n if (element.data('ujs:enable-with') !== undefined) {\n element.html(element.data('ujs:enable-with')); // set to old enabled state\n element.removeData('ujs:enable-with'); // clean up cache\n }\n element.unbind('click.railsDisable'); // enable element\n element.removeData('ujs:disabled');\n }\n };\n\n if (rails.fire($document, 'rails:attachBindings')) {\n\n $.ajaxPrefilter(function(options, originalOptions, xhr){ if ( !options.crossDomain ) { rails.CSRFProtection(xhr); }});\n\n // This event works the same as the load event, except that it fires every\n // time the page is loaded.\n //\n // See https://github.com/rails/jquery-ujs/issues/357\n // See https://developer.mozilla.org/en-US/docs/Using_Firefox_1.5_caching\n $(window).on('pageshow.rails', function () {\n $($.rails.enableSelector).each(function () {\n var element = $(this);\n\n if (element.data('ujs:disabled')) {\n $.rails.enableFormElement(element);\n }\n });\n\n $($.rails.linkDisableSelector).each(function () {\n var element = $(this);\n\n if (element.data('ujs:disabled')) {\n $.rails.enableElement(element);\n }\n });\n });\n\n $document.on('ajax:complete', rails.linkDisableSelector, function() {\n rails.enableElement($(this));\n });\n\n $document.on('ajax:complete', rails.buttonDisableSelector, function() {\n rails.enableFormElement($(this));\n });\n\n $document.on('click.rails', rails.linkClickSelector, function(e) {\n var link = $(this), method = link.data('method'), data = link.data('params'), metaClick = e.metaKey || e.ctrlKey;\n if (!rails.allowAction(link)) return rails.stopEverything(e);\n\n if (!metaClick && link.is(rails.linkDisableSelector)) rails.disableElement(link);\n\n if (rails.isRemote(link)) {\n if (metaClick && (!method || method === 'GET') && !data) { return true; }\n\n var handleRemote = rails.handleRemote(link);\n // Response from rails.handleRemote() will either be false or a deferred object promise.\n if (handleRemote === false) {\n rails.enableElement(link);\n } else {\n handleRemote.fail( function() { rails.enableElement(link); } );\n }\n return false;\n\n } else if (method) {\n rails.handleMethod(link);\n return false;\n }\n });\n\n $document.on('click.rails', rails.buttonClickSelector, function(e) {\n var button = $(this);\n\n if (!rails.allowAction(button) || !rails.isRemote(button)) return rails.stopEverything(e);\n\n if (button.is(rails.buttonDisableSelector)) rails.disableFormElement(button);\n\n var handleRemote = rails.handleRemote(button);\n // Response from rails.handleRemote() will either be false or a deferred object promise.\n if (handleRemote === false) {\n rails.enableFormElement(button);\n } else {\n handleRemote.fail( function() { rails.enableFormElement(button); } );\n }\n return false;\n });\n\n $document.on('change.rails', rails.inputChangeSelector, function(e) {\n var link = $(this);\n if (!rails.allowAction(link) || !rails.isRemote(link)) return rails.stopEverything(e);\n\n rails.handleRemote(link);\n return false;\n });\n\n $document.on('submit.rails', rails.formSubmitSelector, function(e) {\n var form = $(this),\n remote = rails.isRemote(form),\n blankRequiredInputs,\n nonBlankFileInputs;\n\n if (!rails.allowAction(form)) return rails.stopEverything(e);\n\n // Skip other logic when required values are missing or file upload is present\n if (form.attr('novalidate') === undefined) {\n if (form.data('ujs:formnovalidate-button') === undefined) {\n blankRequiredInputs = rails.blankInputs(form, rails.requiredInputSelector, false);\n if (blankRequiredInputs && rails.fire(form, 'ajax:aborted:required', [blankRequiredInputs])) {\n return rails.stopEverything(e);\n }\n } else {\n // Clear the formnovalidate in case the next button click is not on a formnovalidate button\n // Not strictly necessary to do here, since it is also reset on each button click, but just to be certain\n form.data('ujs:formnovalidate-button', undefined);\n }\n }\n\n if (remote) {\n nonBlankFileInputs = rails.nonBlankInputs(form, rails.fileInputSelector);\n if (nonBlankFileInputs) {\n // Slight timeout so that the submit button gets properly serialized\n // (make it easy for event handler to serialize form without disabled values)\n setTimeout(function(){ rails.disableFormElements(form); }, 13);\n var aborted = rails.fire(form, 'ajax:aborted:file', [nonBlankFileInputs]);\n\n // Re-enable form elements if event bindings return false (canceling normal form submission)\n if (!aborted) { setTimeout(function(){ rails.enableFormElements(form); }, 13); }\n\n return aborted;\n }\n\n rails.handleRemote(form);\n return false;\n\n } else {\n // Slight timeout so that the submit button gets properly serialized\n setTimeout(function(){ rails.disableFormElements(form); }, 13);\n }\n });\n\n $document.on('click.rails', rails.formInputClickSelector, function(event) {\n var button = $(this);\n\n if (!rails.allowAction(button)) return rails.stopEverything(event);\n\n // Register the pressed submit button\n var name = button.attr('name'),\n data = name ? {name:name, value:button.val()} : null;\n\n var form = button.closest('form');\n if (form.length === 0) {\n form = $('#' + button.attr('form'));\n }\n form.data('ujs:submit-button', data);\n\n // Save attributes from button\n form.data('ujs:formnovalidate-button', button.attr('formnovalidate'));\n form.data('ujs:submit-button-formaction', button.attr('formaction'));\n form.data('ujs:submit-button-formmethod', button.attr('formmethod'));\n });\n\n $document.on('ajax:send.rails', rails.formSubmitSelector, function(event) {\n if (this === event.target) rails.disableFormElements($(this));\n });\n\n $document.on('ajax:complete.rails', rails.formSubmitSelector, function(event) {\n if (this === event.target) rails.enableFormElements($(this));\n });\n\n $(function(){\n rails.refreshCSRFTokens();\n });\n }\n\n})( jQuery );\n", "// Generated by CoffeeScript 1.6.2\n/**\n@license Sticky-kit v1.1.3 | WTFPL | Leaf Corcoran 2015 | http://leafo.net\n*/\n\n\n(function() {\n var $, win;\n\n $ = this.jQuery || window.jQuery;\n\n win = $(window);\n\n $.fn.stick_in_parent = function(opts) {\n var doc, elm, enable_bottoming, inner_scrolling, manual_spacer, offset_top, outer_width, parent_selector, recalc_every, sticky_class, _fn, _i, _len;\n\n if (opts == null) {\n opts = {};\n }\n sticky_class = opts.sticky_class, inner_scrolling = opts.inner_scrolling, recalc_every = opts.recalc_every, parent_selector = opts.parent, offset_top = opts.offset_top, manual_spacer = opts.spacer, enable_bottoming = opts.bottoming;\n if (offset_top == null) {\n offset_top = 0;\n }\n if (parent_selector == null) {\n parent_selector = void 0;\n }\n if (inner_scrolling == null) {\n inner_scrolling = true;\n }\n if (sticky_class == null) {\n sticky_class = \"is_stuck\";\n }\n doc = $(document);\n if (enable_bottoming == null) {\n enable_bottoming = true;\n }\n outer_width = function(el) {\n var computed, w, _el;\n\n if (window.getComputedStyle) {\n _el = el[0];\n computed = window.getComputedStyle(el[0]);\n w = parseFloat(computed.getPropertyValue(\"width\")) + parseFloat(computed.getPropertyValue(\"margin-left\")) + parseFloat(computed.getPropertyValue(\"margin-right\"));\n if (computed.getPropertyValue(\"box-sizing\") !== \"border-box\") {\n w += parseFloat(computed.getPropertyValue(\"border-left-width\")) + parseFloat(computed.getPropertyValue(\"border-right-width\")) + parseFloat(computed.getPropertyValue(\"padding-left\")) + parseFloat(computed.getPropertyValue(\"padding-right\"));\n }\n return w;\n } else {\n return el.outerWidth(true);\n }\n };\n _fn = function(elm, padding_bottom, parent_top, parent_height, top, height, el_float, detached) {\n var bottomed, detach, fixed, last_pos, last_scroll_height, offset, parent, recalc, recalc_and_tick, recalc_counter, spacer, tick;\n\n if (elm.data(\"sticky_kit\")) {\n return;\n }\n elm.data(\"sticky_kit\", true);\n last_scroll_height = doc.height();\n parent = elm.parent();\n if (parent_selector != null) {\n parent = parent.closest(parent_selector);\n }\n if (!parent.length) {\n throw \"failed to find stick parent\";\n }\n fixed = false;\n bottomed = false;\n spacer = manual_spacer != null ? manual_spacer && elm.closest(manual_spacer) : $(\"<div />\");\n if (spacer) {\n spacer.css('position', elm.css('position'));\n }\n recalc = function() {\n var border_top, padding_top, restore;\n\n if (detached) {\n return;\n }\n last_scroll_height = doc.height();\n border_top = parseInt(parent.css(\"border-top-width\"), 10);\n padding_top = parseInt(parent.css(\"padding-top\"), 10);\n padding_bottom = parseInt(parent.css(\"padding-bottom\"), 10);\n parent_top = parent.offset().top + border_top + padding_top;\n parent_height = parent.height();\n if (fixed) {\n fixed = false;\n bottomed = false;\n if (manual_spacer == null) {\n elm.insertAfter(spacer);\n spacer.detach();\n }\n elm.css({\n position: \"\",\n top: \"\",\n width: \"\",\n bottom: \"\"\n }).removeClass(sticky_class);\n restore = true;\n }\n top = elm.offset().top - (parseInt(elm.css(\"margin-top\"), 10) || 0) - offset_top;\n height = elm.outerHeight(true);\n el_float = elm.css(\"float\");\n if (spacer) {\n spacer.css({\n width: outer_width(elm),\n height: height,\n display: elm.css(\"display\"),\n \"vertical-align\": elm.css(\"vertical-align\"),\n \"float\": el_float\n });\n }\n if (restore) {\n return tick();\n }\n };\n recalc();\n if (height === parent_height) {\n return;\n }\n last_pos = void 0;\n offset = offset_top;\n recalc_counter = recalc_every;\n tick = function() {\n var css, delta, recalced, scroll, will_bottom, win_height;\n\n if (detached) {\n return;\n }\n recalced = false;\n if (recalc_counter != null) {\n recalc_counter -= 1;\n if (recalc_counter <= 0) {\n recalc_counter = recalc_every;\n recalc();\n recalced = true;\n }\n }\n if (!recalced && doc.height() !== last_scroll_height) {\n recalc();\n recalced = true;\n }\n scroll = win.scrollTop();\n if (last_pos != null) {\n delta = scroll - last_pos;\n }\n last_pos = scroll;\n if (fixed) {\n if (enable_bottoming) {\n will_bottom = scroll + height + offset > parent_height + parent_top;\n if (bottomed && !will_bottom) {\n bottomed = false;\n elm.css({\n position: \"fixed\",\n bottom: \"\",\n top: offset\n }).trigger(\"sticky_kit:unbottom\");\n }\n }\n if (scroll < top) {\n fixed = false;\n offset = offset_top;\n if (manual_spacer == null) {\n if (el_float === \"left\" || el_float === \"right\") {\n elm.insertAfter(spacer);\n }\n spacer.detach();\n }\n css = {\n position: \"\",\n width: \"\",\n top: \"\"\n };\n elm.css(css).removeClass(sticky_class).trigger(\"sticky_kit:unstick\");\n }\n if (inner_scrolling) {\n win_height = win.height();\n if (height + offset_top > win_height) {\n if (!bottomed) {\n offset -= delta;\n offset = Math.max(win_height - height, offset);\n offset = Math.min(offset_top, offset);\n if (fixed) {\n elm.css({\n top: offset + \"px\"\n });\n }\n }\n }\n }\n } else {\n if (scroll > top) {\n fixed = true;\n css = {\n position: \"fixed\",\n top: offset\n };\n css.width = elm.css(\"box-sizing\") === \"border-box\" ? elm.outerWidth() + \"px\" : elm.width() + \"px\";\n elm.css(css).addClass(sticky_class);\n if (manual_spacer == null) {\n elm.after(spacer);\n if (el_float === \"left\" || el_float === \"right\") {\n spacer.append(elm);\n }\n }\n elm.trigger(\"sticky_kit:stick\");\n }\n }\n if (fixed && enable_bottoming) {\n if (will_bottom == null) {\n will_bottom = scroll + height + offset > parent_height + parent_top;\n }\n if (!bottomed && will_bottom) {\n bottomed = true;\n if (parent.css(\"position\") === \"static\") {\n parent.css({\n position: \"relative\"\n });\n }\n return elm.css({\n position: \"absolute\",\n bottom: padding_bottom,\n top: \"auto\"\n }).trigger(\"sticky_kit:bottom\");\n }\n }\n };\n recalc_and_tick = function() {\n recalc();\n return tick();\n };\n detach = function() {\n detached = true;\n win.off(\"touchmove\", tick);\n win.off(\"scroll\", tick);\n win.off(\"resize\", recalc_and_tick);\n $(document.body).off(\"sticky_kit:recalc\", recalc_and_tick);\n elm.off(\"sticky_kit:detach\", detach);\n elm.removeData(\"sticky_kit\");\n elm.css({\n position: \"\",\n bottom: \"\",\n top: \"\",\n width: \"\"\n });\n parent.position(\"position\", \"\");\n if (fixed) {\n if (manual_spacer == null) {\n if (el_float === \"left\" || el_float === \"right\") {\n elm.insertAfter(spacer);\n }\n spacer.remove();\n }\n return elm.removeClass(sticky_class);\n }\n };\n win.on(\"touchmove\", tick);\n win.on(\"scroll\", tick);\n win.on(\"resize\", recalc_and_tick);\n $(document.body).on(\"sticky_kit:recalc\", recalc_and_tick);\n elm.on(\"sticky_kit:detach\", detach);\n return setTimeout(tick, 0);\n };\n for (_i = 0, _len = this.length; _i < _len; _i++) {\n elm = this[_i];\n _fn($(elm));\n }\n return this;\n };\n\n}).call(this);\n", "/*!\n * JavaScript Cookie v2.2.0\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader = false;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api (key, value, attributes) {\n\t\t\tvar result;\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Write\n\n\t\t\tif (arguments.length > 1) {\n\t\t\t\tattributes = extend({\n\t\t\t\t\tpath: '/'\n\t\t\t\t}, api.defaults, attributes);\n\n\t\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\t\tvar expires = new Date();\n\t\t\t\t\texpires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\n\t\t\t\t\tattributes.expires = expires;\n\t\t\t\t}\n\n\t\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\t\ttry {\n\t\t\t\t\tresult = JSON.stringify(value);\n\t\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\t\tvalue = result;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\n\t\t\t\tif (!converter.write) {\n\t\t\t\t\tvalue = encodeURIComponent(String(value))\n\t\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\t\t\t\t} else {\n\t\t\t\t\tvalue = converter.write(value, key);\n\t\t\t\t}\n\n\t\t\t\tkey = encodeURIComponent(String(key));\n\t\t\t\tkey = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);\n\t\t\t\tkey = key.replace(/[\\(\\)]/g, escape);\n\n\t\t\t\tvar stringifiedAttributes = '';\n\n\t\t\t\tfor (var attributeName in attributes) {\n\t\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName];\n\t\t\t\t}\n\t\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t\t}\n\n\t\t\t// Read\n\n\t\t\tif (!key) {\n\t\t\t\tresult = {};\n\t\t\t}\n\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all. Also prevents odd result when\n\t\t\t// calling \"get()\"\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar rdecode = /(%[0-9A-Z]{2})+/g;\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!this.json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = parts[0].replace(rdecode, decodeURIComponent);\n\t\t\t\t\tcookie = converter.read ?\n\t\t\t\t\t\tconverter.read(cookie, name) : converter(cookie, name) ||\n\t\t\t\t\t\tcookie.replace(rdecode, decodeURIComponent);\n\n\t\t\t\t\tif (this.json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tresult = cookie;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!key) {\n\t\t\t\t\t\tresult[name] = cookie;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\tapi.set = api;\n\t\tapi.get = function (key) {\n\t\t\treturn api.call(api, key);\n\t\t};\n\t\tapi.getJSON = function () {\n\t\t\treturn api.apply({\n\t\t\t\tjson: true\n\t\t\t}, [].slice.call(arguments));\n\t\t};\n\t\tapi.defaults = {};\n\n\t\tapi.remove = function (key, attributes) {\n\t\t\tapi(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n", "/*!\nWaypoints - 4.0.1\nCopyright \u00A9 2011-2016 Caleb Troughton\nLicensed under the MIT license.\nhttps://github.com/imakewebthings/waypoints/blob/master/licenses.txt\n*/\n(function() {\n 'use strict'\n\n var keyCounter = 0\n var allWaypoints = {}\n\n /* http://imakewebthings.com/waypoints/api/waypoint */\n function Waypoint(options) {\n if (!options) {\n throw new Error('No options passed to Waypoint constructor')\n }\n if (!options.element) {\n throw new Error('No element option passed to Waypoint constructor')\n }\n if (!options.handler) {\n throw new Error('No handler option passed to Waypoint constructor')\n }\n\n this.key = 'waypoint-' + keyCounter\n this.options = Waypoint.Adapter.extend({}, Waypoint.defaults, options)\n this.element = this.options.element\n this.adapter = new Waypoint.Adapter(this.element)\n this.callback = options.handler\n this.axis = this.options.horizontal ? 'horizontal' : 'vertical'\n this.enabled = this.options.enabled\n this.triggerPoint = null\n this.group = Waypoint.Group.findOrCreate({\n name: this.options.group,\n axis: this.axis\n })\n this.context = Waypoint.Context.findOrCreateByElement(this.options.context)\n\n if (Waypoint.offsetAliases[this.options.offset]) {\n this.options.offset = Waypoint.offsetAliases[this.options.offset]\n }\n this.group.add(this)\n this.context.add(this)\n allWaypoints[this.key] = this\n keyCounter += 1\n }\n\n /* Private */\n Waypoint.prototype.queueTrigger = function(direction) {\n this.group.queueTrigger(this, direction)\n }\n\n /* Private */\n Waypoint.prototype.trigger = function(args) {\n if (!this.enabled) {\n return\n }\n if (this.callback) {\n this.callback.apply(this, args)\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/destroy */\n Waypoint.prototype.destroy = function() {\n this.context.remove(this)\n this.group.remove(this)\n delete allWaypoints[this.key]\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/disable */\n Waypoint.prototype.disable = function() {\n this.enabled = false\n return this\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/enable */\n Waypoint.prototype.enable = function() {\n this.context.refresh()\n this.enabled = true\n return this\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/next */\n Waypoint.prototype.next = function() {\n return this.group.next(this)\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/previous */\n Waypoint.prototype.previous = function() {\n return this.group.previous(this)\n }\n\n /* Private */\n Waypoint.invokeAll = function(method) {\n var allWaypointsArray = []\n for (var waypointKey in allWaypoints) {\n allWaypointsArray.push(allWaypoints[waypointKey])\n }\n for (var i = 0, end = allWaypointsArray.length; i < end; i++) {\n allWaypointsArray[i][method]()\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/destroy-all */\n Waypoint.destroyAll = function() {\n Waypoint.invokeAll('destroy')\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/disable-all */\n Waypoint.disableAll = function() {\n Waypoint.invokeAll('disable')\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/enable-all */\n Waypoint.enableAll = function() {\n Waypoint.Context.refreshAll()\n for (var waypointKey in allWaypoints) {\n allWaypoints[waypointKey].enabled = true\n }\n return this\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/refresh-all */\n Waypoint.refreshAll = function() {\n Waypoint.Context.refreshAll()\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/viewport-height */\n Waypoint.viewportHeight = function() {\n return window.innerHeight || document.documentElement.clientHeight\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/viewport-width */\n Waypoint.viewportWidth = function() {\n return document.documentElement.clientWidth\n }\n\n Waypoint.adapters = []\n\n Waypoint.defaults = {\n context: window,\n continuous: true,\n enabled: true,\n group: 'default',\n horizontal: false,\n offset: 0\n }\n\n Waypoint.offsetAliases = {\n 'bottom-in-view': function() {\n return this.context.innerHeight() - this.adapter.outerHeight()\n },\n 'right-in-view': function() {\n return this.context.innerWidth() - this.adapter.outerWidth()\n }\n }\n\n window.Waypoint = Waypoint\n}())\n;(function() {\n 'use strict'\n\n function requestAnimationFrameShim(callback) {\n window.setTimeout(callback, 1000 / 60)\n }\n\n var keyCounter = 0\n var contexts = {}\n var Waypoint = window.Waypoint\n var oldWindowLoad = window.onload\n\n /* http://imakewebthings.com/waypoints/api/context */\n function Context(element) {\n this.element = element\n this.Adapter = Waypoint.Adapter\n this.adapter = new this.Adapter(element)\n this.key = 'waypoint-context-' + keyCounter\n this.didScroll = false\n this.didResize = false\n this.oldScroll = {\n x: this.adapter.scrollLeft(),\n y: this.adapter.scrollTop()\n }\n this.waypoints = {\n vertical: {},\n horizontal: {}\n }\n\n element.waypointContextKey = this.key\n contexts[element.waypointContextKey] = this\n keyCounter += 1\n if (!Waypoint.windowContext) {\n Waypoint.windowContext = true\n Waypoint.windowContext = new Context(window)\n }\n\n this.createThrottledScrollHandler()\n this.createThrottledResizeHandler()\n }\n\n /* Private */\n Context.prototype.add = function(waypoint) {\n var axis = waypoint.options.horizontal ? 'horizontal' : 'vertical'\n this.waypoints[axis][waypoint.key] = waypoint\n this.refresh()\n }\n\n /* Private */\n Context.prototype.checkEmpty = function() {\n var horizontalEmpty = this.Adapter.isEmptyObject(this.waypoints.horizontal)\n var verticalEmpty = this.Adapter.isEmptyObject(this.waypoints.vertical)\n var isWindow = this.element == this.element.window\n if (horizontalEmpty && verticalEmpty && !isWindow) {\n this.adapter.off('.waypoints')\n delete contexts[this.key]\n }\n }\n\n /* Private */\n Context.prototype.createThrottledResizeHandler = function() {\n var self = this\n\n function resizeHandler() {\n self.handleResize()\n self.didResize = false\n }\n\n this.adapter.on('resize.waypoints', function() {\n if (!self.didResize) {\n self.didResize = true\n Waypoint.requestAnimationFrame(resizeHandler)\n }\n })\n }\n\n /* Private */\n Context.prototype.createThrottledScrollHandler = function() {\n var self = this\n function scrollHandler() {\n self.handleScroll()\n self.didScroll = false\n }\n\n this.adapter.on('scroll.waypoints', function() {\n if (!self.didScroll || Waypoint.isTouch) {\n self.didScroll = true\n Waypoint.requestAnimationFrame(scrollHandler)\n }\n })\n }\n\n /* Private */\n Context.prototype.handleResize = function() {\n Waypoint.Context.refreshAll()\n }\n\n /* Private */\n Context.prototype.handleScroll = function() {\n var triggeredGroups = {}\n var axes = {\n horizontal: {\n newScroll: this.adapter.scrollLeft(),\n oldScroll: this.oldScroll.x,\n forward: 'right',\n backward: 'left'\n },\n vertical: {\n newScroll: this.adapter.scrollTop(),\n oldScroll: this.oldScroll.y,\n forward: 'down',\n backward: 'up'\n }\n }\n\n for (var axisKey in axes) {\n var axis = axes[axisKey]\n var isForward = axis.newScroll > axis.oldScroll\n var direction = isForward ? axis.forward : axis.backward\n\n for (var waypointKey in this.waypoints[axisKey]) {\n var waypoint = this.waypoints[axisKey][waypointKey]\n if (waypoint.triggerPoint === null) {\n continue\n }\n var wasBeforeTriggerPoint = axis.oldScroll < waypoint.triggerPoint\n var nowAfterTriggerPoint = axis.newScroll >= waypoint.triggerPoint\n var crossedForward = wasBeforeTriggerPoint && nowAfterTriggerPoint\n var crossedBackward = !wasBeforeTriggerPoint && !nowAfterTriggerPoint\n if (crossedForward || crossedBackward) {\n waypoint.queueTrigger(direction)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n }\n }\n\n for (var groupKey in triggeredGroups) {\n triggeredGroups[groupKey].flushTriggers()\n }\n\n this.oldScroll = {\n x: axes.horizontal.newScroll,\n y: axes.vertical.newScroll\n }\n }\n\n /* Private */\n Context.prototype.innerHeight = function() {\n /*eslint-disable eqeqeq */\n if (this.element == this.element.window) {\n return Waypoint.viewportHeight()\n }\n /*eslint-enable eqeqeq */\n return this.adapter.innerHeight()\n }\n\n /* Private */\n Context.prototype.remove = function(waypoint) {\n delete this.waypoints[waypoint.axis][waypoint.key]\n this.checkEmpty()\n }\n\n /* Private */\n Context.prototype.innerWidth = function() {\n /*eslint-disable eqeqeq */\n if (this.element == this.element.window) {\n return Waypoint.viewportWidth()\n }\n /*eslint-enable eqeqeq */\n return this.adapter.innerWidth()\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/context-destroy */\n Context.prototype.destroy = function() {\n var allWaypoints = []\n for (var axis in this.waypoints) {\n for (var waypointKey in this.waypoints[axis]) {\n allWaypoints.push(this.waypoints[axis][waypointKey])\n }\n }\n for (var i = 0, end = allWaypoints.length; i < end; i++) {\n allWaypoints[i].destroy()\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/context-refresh */\n Context.prototype.refresh = function() {\n /*eslint-disable eqeqeq */\n var isWindow = this.element == this.element.window\n /*eslint-enable eqeqeq */\n var contextOffset = isWindow ? undefined : this.adapter.offset()\n var triggeredGroups = {}\n var axes\n\n this.handleScroll()\n axes = {\n horizontal: {\n contextOffset: isWindow ? 0 : contextOffset.left,\n contextScroll: isWindow ? 0 : this.oldScroll.x,\n contextDimension: this.innerWidth(),\n oldScroll: this.oldScroll.x,\n forward: 'right',\n backward: 'left',\n offsetProp: 'left'\n },\n vertical: {\n contextOffset: isWindow ? 0 : contextOffset.top,\n contextScroll: isWindow ? 0 : this.oldScroll.y,\n contextDimension: this.innerHeight(),\n oldScroll: this.oldScroll.y,\n forward: 'down',\n backward: 'up',\n offsetProp: 'top'\n }\n }\n\n for (var axisKey in axes) {\n var axis = axes[axisKey]\n for (var waypointKey in this.waypoints[axisKey]) {\n var waypoint = this.waypoints[axisKey][waypointKey]\n var adjustment = waypoint.options.offset\n var oldTriggerPoint = waypoint.triggerPoint\n var elementOffset = 0\n var freshWaypoint = oldTriggerPoint == null\n var contextModifier, wasBeforeScroll, nowAfterScroll\n var triggeredBackward, triggeredForward\n\n if (waypoint.element !== waypoint.element.window) {\n elementOffset = waypoint.adapter.offset()[axis.offsetProp]\n }\n\n if (typeof adjustment === 'function') {\n adjustment = adjustment.apply(waypoint)\n }\n else if (typeof adjustment === 'string') {\n adjustment = parseFloat(adjustment)\n if (waypoint.options.offset.indexOf('%') > - 1) {\n adjustment = Math.ceil(axis.contextDimension * adjustment / 100)\n }\n }\n\n contextModifier = axis.contextScroll - axis.contextOffset\n waypoint.triggerPoint = Math.floor(elementOffset + contextModifier - adjustment)\n wasBeforeScroll = oldTriggerPoint < axis.oldScroll\n nowAfterScroll = waypoint.triggerPoint >= axis.oldScroll\n triggeredBackward = wasBeforeScroll && nowAfterScroll\n triggeredForward = !wasBeforeScroll && !nowAfterScroll\n\n if (!freshWaypoint && triggeredBackward) {\n waypoint.queueTrigger(axis.backward)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n else if (!freshWaypoint && triggeredForward) {\n waypoint.queueTrigger(axis.forward)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n else if (freshWaypoint && axis.oldScroll >= waypoint.triggerPoint) {\n waypoint.queueTrigger(axis.forward)\n triggeredGroups[waypoint.group.id] = waypoint.group\n }\n }\n }\n\n Waypoint.requestAnimationFrame(function() {\n for (var groupKey in triggeredGroups) {\n triggeredGroups[groupKey].flushTriggers()\n }\n })\n\n return this\n }\n\n /* Private */\n Context.findOrCreateByElement = function(element) {\n return Context.findByElement(element) || new Context(element)\n }\n\n /* Private */\n Context.refreshAll = function() {\n for (var contextId in contexts) {\n contexts[contextId].refresh()\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/context-find-by-element */\n Context.findByElement = function(element) {\n return contexts[element.waypointContextKey]\n }\n\n window.onload = function() {\n if (oldWindowLoad) {\n oldWindowLoad()\n }\n Context.refreshAll()\n }\n\n\n Waypoint.requestAnimationFrame = function(callback) {\n var requestFn = window.requestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n requestAnimationFrameShim\n requestFn.call(window, callback)\n }\n Waypoint.Context = Context\n}())\n;(function() {\n 'use strict'\n\n function byTriggerPoint(a, b) {\n return a.triggerPoint - b.triggerPoint\n }\n\n function byReverseTriggerPoint(a, b) {\n return b.triggerPoint - a.triggerPoint\n }\n\n var groups = {\n vertical: {},\n horizontal: {}\n }\n var Waypoint = window.Waypoint\n\n /* http://imakewebthings.com/waypoints/api/group */\n function Group(options) {\n this.name = options.name\n this.axis = options.axis\n this.id = this.name + '-' + this.axis\n this.waypoints = []\n this.clearTriggerQueues()\n groups[this.axis][this.name] = this\n }\n\n /* Private */\n Group.prototype.add = function(waypoint) {\n this.waypoints.push(waypoint)\n }\n\n /* Private */\n Group.prototype.clearTriggerQueues = function() {\n this.triggerQueues = {\n up: [],\n down: [],\n left: [],\n right: []\n }\n }\n\n /* Private */\n Group.prototype.flushTriggers = function() {\n for (var direction in this.triggerQueues) {\n var waypoints = this.triggerQueues[direction]\n var reverse = direction === 'up' || direction === 'left'\n waypoints.sort(reverse ? byReverseTriggerPoint : byTriggerPoint)\n for (var i = 0, end = waypoints.length; i < end; i += 1) {\n var waypoint = waypoints[i]\n if (waypoint.options.continuous || i === waypoints.length - 1) {\n waypoint.trigger([direction])\n }\n }\n }\n this.clearTriggerQueues()\n }\n\n /* Private */\n Group.prototype.next = function(waypoint) {\n this.waypoints.sort(byTriggerPoint)\n var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n var isLast = index === this.waypoints.length - 1\n return isLast ? null : this.waypoints[index + 1]\n }\n\n /* Private */\n Group.prototype.previous = function(waypoint) {\n this.waypoints.sort(byTriggerPoint)\n var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n return index ? this.waypoints[index - 1] : null\n }\n\n /* Private */\n Group.prototype.queueTrigger = function(waypoint, direction) {\n this.triggerQueues[direction].push(waypoint)\n }\n\n /* Private */\n Group.prototype.remove = function(waypoint) {\n var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)\n if (index > -1) {\n this.waypoints.splice(index, 1)\n }\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/first */\n Group.prototype.first = function() {\n return this.waypoints[0]\n }\n\n /* Public */\n /* http://imakewebthings.com/waypoints/api/last */\n Group.prototype.last = function() {\n return this.waypoints[this.waypoints.length - 1]\n }\n\n /* Private */\n Group.findOrCreate = function(options) {\n return groups[options.axis][options.name] || new Group(options)\n }\n\n Waypoint.Group = Group\n}())\n;(function() {\n 'use strict'\n\n var $ = window.jQuery\n var Waypoint = window.Waypoint\n\n function JQueryAdapter(element) {\n this.$element = $(element)\n }\n\n $.each([\n 'innerHeight',\n 'innerWidth',\n 'off',\n 'offset',\n 'on',\n 'outerHeight',\n 'outerWidth',\n 'scrollLeft',\n 'scrollTop'\n ], function(i, method) {\n JQueryAdapter.prototype[method] = function() {\n var args = Array.prototype.slice.call(arguments)\n return this.$element[method].apply(this.$element, args)\n }\n })\n\n $.each([\n 'extend',\n 'inArray',\n 'isEmptyObject'\n ], function(i, method) {\n JQueryAdapter[method] = $[method]\n })\n\n Waypoint.adapters.push({\n name: 'jquery',\n Adapter: JQueryAdapter\n })\n Waypoint.Adapter = JQueryAdapter\n}())\n;(function() {\n 'use strict'\n\n var Waypoint = window.Waypoint\n\n function createExtension(framework) {\n return function() {\n var waypoints = []\n var overrides = arguments[0]\n\n if (framework.isFunction(arguments[0])) {\n overrides = framework.extend({}, arguments[1])\n overrides.handler = arguments[0]\n }\n\n this.each(function() {\n var options = framework.extend({}, overrides, {\n element: this\n })\n if (typeof options.context === 'string') {\n options.context = framework(this).closest(options.context)[0]\n }\n waypoints.push(new Waypoint(options))\n })\n\n return waypoints\n }\n }\n\n if (window.jQuery) {\n window.jQuery.fn.waypoint = createExtension(window.jQuery)\n }\n if (window.Zepto) {\n window.Zepto.fn.waypoint = createExtension(window.Zepto)\n }\n}())\n;", "/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.4.1'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (document !== e.target &&\n this.$element[0] !== e.target &&\n !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n var scrollbarWidth = this.scrollbarWidth\n if (this.bodyIsOverflowing) {\n this.$body.css('padding-right', bodyPad + scrollbarWidth)\n $(this.fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight\n var calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')\n })\n }\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n $(this.fixedContent).each(function (index, element) {\n var padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var target = $this.attr('data-target') ||\n (href && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n\n var $target = $(document).find(target)\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n", "Object.defineProperty(Array.prototype, 'joinSentence', {\n enumerable: false,\n value: function(oxford_comma) {\n var lastWord = ''\n if (this.length > 1) {\n lastWord = ' and ' + this.pop()\n if (oxford_comma && this.length > 1) {\n lastWord = ',' + lastWord\n }\n }\n return this.join(', ') + lastWord\n }\n})\n", "require(\"../extensions/array-join-sentence\")\n", "class Accordion {\n static async import() {\n await import(\"../vendor/accordion-imports.js\")\n }\n}\n\nexport default Accordion\n", "class AlgoliaSource {\n static async importLibraries() {\n var algoliasearch = await import(\"algoliasearch\")\n var autocomplete = await import(\"../vendor/autocomplete.jquery.js\")\n\n return [algoliasearch.default, autocomplete.default]\n }\n\n constructor(algoliasearch, indexName, filters) {\n const client = algoliasearch(process.env.ALGOLIA_APPLICATION_ID,\n process.env.ALGOLIA_API_KEY_SEARCH)\n this.index = client.initIndex(`${indexName}_${process.env.SEARCH_ENV}`)\n this.source = $.fn.autocomplete.sources.hits(this.index, {\n hitsPerPage: 10,\n filters: filters,\n })\n }\n}\n\nexport default AlgoliaSource\n", "class BeerAutocompleteSuggestion {\n constructor(template) {\n this.template = template\n }\n\n build(hit) {\n const suggestion = this.template.cloneNode(true)\n suggestion.classList.remove(\"hidden\")\n\n if (hit.cssClass) {\n suggestion.classList.add(hit.cssClass)\n }\n\n suggestion.querySelector(\"[data-ref='name']\").textContent = hit.name\n\n const meta = new BeerMetadata(hit).toString()\n suggestion.querySelector(\"[data-ref='meta']\").textContent = meta\n\n return suggestion\n }\n}\n\nexport default BeerAutocompleteSuggestion\n", "class BeerMetadata {\n constructor(hit) {\n this.hit = hit\n }\n\n toString() {\n const abv = this.hit.abv ? `${this.hit.abv}%` : null\n const meta = [this.hit.style, abv, this.hit.brewery_location]\n return meta.filter(Boolean).join(\" \\u00B7 \")\n }\n}\n\nexport default BeerMetadata\n", "export default class Browser {\n static isIE() {\n return /MSIE \\d|Trident.*rv:/.test(navigator.userAgent)\n }\n}\n", "export default class MenuSections {\n static showNewSectionModal(productType) {\n $(\"#new-menu-section\").modal()\n $(\"#new-menu-section #menu_section_name\").focus()\n\n if (productType) {\n $(\"#menu_section_product_type\").val(productType)\n }\n }\n}\n", "export default class Servings {\n constructor(productType, isEdit) {\n this.productType = productType\n\n if (isEdit === true || isEdit === \"true\") {\n this.formSelector = `#product_type_${productType}.edit`\n } else {\n this.formSelector = `#product_type_${productType}`\n }\n }\n\n static showEditForm() {\n document.querySelector(\"#add-serving-form\").classList.add(\"hidden\")\n document.querySelector(\"#edit-serving-form\").classList.remove(\"hidden\")\n }\n\n static hideEditForm() {\n document.querySelector(\"#edit-serving-form\").classList.add(\"hidden\")\n document.querySelector(\"#add-serving-form\").classList.remove(\"hidden\")\n }\n\n static scrollToTopOfForm() {\n const mweb = document.body.classList.contains(\"mweb\")\n const offset = mweb ? 48 : 16\n\n $(\"html, body\").animate({\n scrollTop: $(\"#serving-forms\").offset().top - offset\n }, \"normal\");\n }\n\n static updateTapNumbers() {\n const sortables = document.querySelectorAll(\"[data-controller~='sortable']\")\n sortables.forEach(sortable => {\n const controller = Stimulus.application\n .getControllerForElementAndIdentifier(sortable, \"sortable\")\n controller.savePositions(true)\n })\n }\n\n populateBeer(id, name, style_id, abv) {\n const form = document.querySelector(this.formSelector)\n window.Stimulus.application\n .getControllerForElementAndIdentifier(form, \"beer-autocomplete\")\n .populate(id, name, style_id, abv)\n }\n\n focusInputAfterBeerName() {\n const inputs = document.querySelector(`${this.formSelector} form`).elements\n const containerInput = inputs[\"servings[0][serving_type]\"]\n\n setTimeout(() => {\n if (containerInput) {\n containerInput.focus()\n } else {\n inputs[\"serving_price\"].focus()\n }\n }, 100)\n }\n\n showMissingBeerError() {\n this.clearJavaScriptMessages()\n\n document.querySelector(`${this.formSelector} .missing-beer-error`)\n .classList.remove(\"hidden\")\n }\n\n showNewBeerConfirmation(message) {\n this.clearJavaScriptMessages()\n\n const element = document.querySelector(`${this.formSelector} .new-beer-confirmation`)\n element.innerText = message\n element.classList.remove(\"hidden\")\n }\n\n clearJavaScriptMessages() {\n document.querySelector(`${this.formSelector} .missing-beer-error`)\n .classList.add(\"hidden\")\n\n document.querySelector(`${this.formSelector} .new-beer-confirmation`)\n .classList.add(\"hidden\")\n }\n\n showTab() {\n window.location.hash = this.productType\n }\n}\n", "export default class ScriptInserter {\n static insert(id, src, callback) {\n const existingScript = document.getElementById(id)\n if (existingScript) {\n callback()\n } else {\n const script = document.createElement(\"script\")\n script.src = src\n script.id = id\n script.onload = callback\n\n document.body.appendChild(script)\n }\n }\n}\n", "export default class StripeLoader {\n load() {\n if (document.getElementById('card-element') == null) { return }\n\n var stripe = Stripe($('meta[name=\"stripe-key\"]').attr('content'));\n var elements = stripe.elements();\n\n window.card = elements.create('card', {\n 'style': {\n 'base': {\n 'fontFamily': '\\'Helvetica Neue\\', Roboto, Helvetica, Arial, sans-serif',\n 'fontSize': '14px',\n },\n 'invalid': {\n 'color': '#D32548',\n },\n }\n });\n window.card.mount('#card-element');\n\n window.card.addEventListener('change', function(event) {\n var displayError = document.getElementById('card-errors');\n if (event.error) {\n displayError.textContent = event.error.message;\n } else {\n displayError.textContent = '';\n }\n });\n\n function stripeTokenHandler(token, form) {\n var $form = $(form);\n $(\".stripe-card-token\").val(token.id);\n\n if (form == \".card-token-remote\") {\n window.has_token = true;\n $.rails.fire($form, \"submit\")\n } else {\n $form.get(0).submit();\n }\n }\n\n function createToken(form) {\n var $form = $(form);\n var $original_label = $form.find(\"button[type='submit']\").data('original-label');\n\n stripe.createToken(card).then(function(result) {\n if (result.error) {\n var errorElement = document.getElementById('card-errors');\n errorElement.textContent = result.error.message;\n\n $form.find(\"button[type='submit']\").text($original_label);\n $form.find(\"button[type='submit']\").prop('disabled', false);\n } else {\n stripeTokenHandler(result.token, form);\n }\n });\n };\n\n function stripePaymentMethodHandler(result) {\n var $form = $('.new-payment-method');\n var $disabled_label = $form.find(\"button[type='submit']\").data('disable-with');\n\n if (result.error) {\n // Show error in payment form\n var errorElement = document.getElementById('card-errors');\n errorElement.textContent = result.error.message;\n\n $form.find(\"button[type='submit']\").text($original_label);\n $form.find(\"button[type='submit']\").prop('disabled', false);\n } else {\n $(\".new-stripe-payment-method\").val(result.paymentMethod.id);\n window.has_payment_method = true;\n $.rails.fire($form, \"submit\")\n }\n }\n\n $(\"body\").on(\"submit\", \".card-token\", function(e) {\n var $form = $(this);\n var $disabled_label = $form.find(\"button[type='submit']\").data('disable-with');\n\n $form.find(\"button[type='submit']\").text($disabled_label);\n $form.find(\"button[type='submit']\").prop('disabled', true);\n\n e.preventDefault();\n createToken(\".card-token\");\n });\n\n window.has_token = false;\n $(\"body\").on(\"ajax:beforeSend\", \".card-token-remote\", function(event, xhr) {\n if (window.has_token == false) {\n xhr.abort();\n\n var $form = $('.card-token-remote');\n var $disabled_label = $form.find(\"button[type='submit']\").data('disable-with');\n\n $form.find(\"button[type='submit']\").text($disabled_label);\n $form.find(\"button[type='submit']\").prop('disabled', true);\n\n createToken(\".card-token-remote\");\n }\n });\n\n window.has_payment_method = false;\n $(\"body\").on(\"ajax:beforeSend\", \".new-payment-method\", function(event, xhr) {\n if (window.has_payment_method == false) {\n xhr.abort();\n\n var $form = $('.new-payment-method');\n var $disabled_label = $form.find(\"button[type='submit']\").data('disable-with');\n\n $form.find(\"button[type='submit']\").text($disabled_label);\n $form.find(\"button[type='submit']\").prop('disabled', true);\n\n stripe.createPaymentMethod({\n type: 'card',\n card: window.card,\n billing_details: {\n },\n }).then(stripePaymentMethodHandler);\n }\n });\n\n $('.payment-method-remote').on('click', '.use-new-card', function() {\n $(\".use-new-payment-method-val\").val(true);\n $('.payment-method-remote').addClass('new-payment-method');\n $('.cards-on-file').addClass(\"hidden\");\n $('.card-form').removeClass(\"hidden\");\n $('#card-element').focus();\n return false;\n });\n\n $('.payment-method-remote').on('click', '.use-cards-on-file', function() {\n $(\".use-new-payment-method-val\").val(false);\n $('.payment-method-remote').removeClass('new-payment-method');\n $('.card-form').addClass(\"hidden\");\n $('.cards-on-file').removeClass(\"hidden\");\n return false;\n });\n\n document.querySelectorAll(\".payment_method_type_radio\").forEach(radio => {\n radio.addEventListener('change', (e) => {\n if (e.target.value == \"1\") {\n // show credit card, hide ACH\n $(\".credit-card\").removeClass(\"hidden\");\n if ($(\".card-on-file\").length == 0) { $('.pro-sign-up').addClass(\"card-token\"); }\n $(\".ach-payment\").addClass(\"hidden\");\n } else {\n // show ACH, hide credit card\n $(\".ach-payment\").removeClass(\"hidden\");\n $(\".credit-card\").addClass(\"hidden\");\n $('.pro-sign-up').removeClass(\"card-token\");\n }\n })\n })\n\n }\n}\n", "export default class TvMenuLoader {\n constructor(refreshRate, nextUrl, specialRefreshRate) {\n this.nextUrl = nextUrl\n this.refreshRate = refreshRate\n this.specialRefreshRate = specialRefreshRate\n this.setupInterval()\n this.screens = {}\n this.setupClearScreenInterval()\n }\n\n clearScreens() {\n this.screens = {}\n window.location = this.nextUrl\n }\n\n setupInterval(onSpecial) {\n if (onSpecial && this.specialRefreshRate) {\n this.interval = setInterval(this.refresh.bind(this), this.specialRefreshRate)\n } else if (this.refreshRate) {\n this.interval = setInterval(this.refresh.bind(this), this.refreshRate)\n }\n }\n\n setupClearScreenInterval() {\n if (this.clearScreenInterval) {\n clearInterval(this.clearScreenInterval)\n }\n\n const threeHours = 3 * 60 * 60 * 1000\n this.clearScreenInterval = setInterval(this.clearScreens.bind(this), threeHours)\n }\n\n success(data, textStatus, jqXHR) {\n const onSpecial = jqXHR.getResponseHeader(\"on-special\") === \"true\"\n this.setupInterval(onSpecial)\n\n const nextUrl = jqXHR.getResponseHeader(\"menu-next-url\")\n this.screens[this.nextUrl] = {\n html: data,\n nextUrl: nextUrl,\n onSpecial: onSpecial\n }\n this.nextUrl = nextUrl\n\n $(\".tv-container\").html(data)\n $(\"#drift-widget-container\").css(\"display\", \"none\")\n }\n\n error(data, textStatus, jqXHR) {\n this.setupInterval()\n\n $.ajax({\n method: 'POST',\n url: '/api/internal/logs',\n data: {\n message: \"TV Menu Error: \" + data.statusText\n }\n })\n }\n\n refresh() {\n clearInterval(this.interval)\n\n const screen = this.screens[this.nextUrl]\n if (screen) {\n $(\".tv-container\").html(screen.html)\n this.setupInterval(screen.onSpecial)\n this.nextUrl = screen.nextUrl\n } else {\n $.ajax({\n url: this.nextUrl,\n dataType: \"html\",\n data: {\n html: true\n },\n success: this.success.bind(this),\n error: this.error.bind(this)\n })\n }\n }\n}\n", "import Accordion from \"./accordion\"\nimport AlgoliaSource from \"./algolia-source\"\nimport BeerAutocompleteSuggestion from \"./beer-autocomplete-suggestion\"\nimport BeerMetadata from \"./beer-metadata\"\nimport Browser from \"./browser\"\nimport Debouncer from \"./debouncer\"\nimport MenuSections from \"./menu-sections\"\nimport Servings from \"./servings\"\nimport ScriptInserter from \"./script-inserter\"\nimport StripeLoader from \"./stripe-loader\"\nimport TvMenuLoader from \"./tv-menu-loader\"\n\nwindow.Accordion = Accordion\nwindow.AlgoliaSource = AlgoliaSource\nwindow.BeerAutocompleteSuggestion = BeerAutocompleteSuggestion\nwindow.BeerMetadata = BeerMetadata\nwindow.Browser = Browser\nwindow.Debouncer = Debouncer\nwindow.MenuSections = MenuSections\nwindow.Servings = Servings\nwindow.ScriptInserter = ScriptInserter\nwindow.StripeLoader = StripeLoader\nwindow.TvMenuLoader = TvMenuLoader\n", "BeerMenus.Checklists = {\n highlightServingForm: function() {\n const $input = $(\".aa-input\").first()\n $input.focus()\n $input.removeClass(\"shake-vertical\")\n\n setTimeout(() => {\n $input.addClass(\"shake-vertical\")\n }, 100)\n },\n\n showAddressModal: function(barID) {\n $.ajax(`/places/${barID}/addresses/new.js`)\n },\n\n showFacebookModal: function() {\n $(\"#syndicate-promo-facebook\").modal()\n },\n\n showTwitterModal: function() {\n $(\"#syndicate-promo-twitter\").modal()\n },\n\n showPrintMenuModal: function(barID) {\n $.ajax(`/places/${barID}/print_menus/new_or_last.js`)\n },\n\n showUpdateMenuMessageModal: function(partial) {\n $(`#update-menu-message-${partial}`).modal()\n },\n\n spotlight: function(hash) {\n import(\"driver.js\").then((driver) => {\n window.BeerMenus.driver = window.BeerMenus.driver || new driver.default()\n\n const element = document.querySelector(`meta[name=\"${hash}-element\"]`)\n const position = document.querySelector(`meta[name=\"${hash}-position\"]`)\n const highlight = {\n element: (element && element.content) || \"#pro-tools\",\n popover: {\n showButtons: false,\n position: (position && position.content) || \"bottom\",\n title: document.getElementById(`${hash}-title`).innerHTML,\n description: document.getElementById(`${hash}-description`).innerHTML,\n }\n }\n\n const tab = document.querySelector(`meta[name=\"${hash}-tab\"]`)\n if (tab) {\n window.location.hash = tab.content\n }\n\n setTimeout(() => {\n $(\".modal\").modal(\"hide\") // Close any open modal.\n window.BeerMenus.driver.highlight(highlight)\n }, 1) // Tick so tabs-controller has time to select tab.\n })\n },\n\n closeDriver: function() {\n // Close driver immediately, without animation.\n window.BeerMenus.driver && window.BeerMenus.driver.reset(true)\n }\n}\n", "BeerMenus.DOM = {\n insertHTML: function(html, element) {\n element.insertAdjacentHTML(\"beforeend\", html)\n }\n}\n", "BeerMenus.InputFocuser = {\n focus: function(selector) {\n this.focusNode(document.querySelector(selector))\n },\n\n focusNode: function(node) {\n node.focus()\n\n setTimeout(function() {\n // Set the cursor at the end of the input.\n node.selectionStart = node.selectionEnd = node.value.length\n }, 0) // Tick to defer until the stack is clear.\n }\n}\n", "BeerMenus.Messages = {\n setNotice: function(message) {\n this._setMessage(message, \"success\", \"check\")\n },\n\n setError: function(message) {\n this._setMessage(message, \"alert\", \"alert\")\n },\n\n clear: function() {\n $(\"#global-messages\").html(\"\")\n },\n\n // private\n\n _setMessage: function(message, cssClass, iconClass) {\n this.clear()\n\n $(\"#global-messages\").append(\n $(\"<div>\").addClass(`pure-msg pure-msg-global pure-msg-${cssClass}`).append(\n $(\"<div>\").addClass(\"content-inner\").append(\n $(\"<span>\").addClass(`pure-icon pure-icon-${iconClass}`)\n ).html(message)\n )\n )\n },\n}\n", "BeerMenus.Modals = {\n insert: function(html, selector) {\n if (selector) {\n BeerMenus.Modals.insertViaSelector(html, selector)\n } else {\n BeerMenus.DOM.insertHTML(html, document.body)\n $(document.body.lastElementChild).modal()\n }\n },\n\n // private\n\n insertViaSelector(html, selector) {\n if ($(selector).length > 0) {\n $(selector).modal(\"hide\")\n $(selector).replaceWith(html)\n } else {\n $(\"body\").append(html)\n }\n\n $(selector).modal()\n }\n}\n", "/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/main/docs/suggestions.md\n */\nBeerMenus.OnPremiseTracker = {\n track() {\n return BeerMenus.Location.get(this.success, this.failure);\n },\n\n success(latitude, longitude) {\n const data = {\n latitude,\n longitude,\n user_id: $(\"#js-data\").data(\"userId\"),\n bar_id: $(\"#js-data\").data(\"barId\"),\n api_key: $(\"#js-data\").data(\"apiKey\")\n };\n\n $.ajax({\n type: \"POST\",\n url: \"/api/internal/on_premise_views\",\n dataType: \"json\",\n data,\n success(data, status, xhr) {\n if (data[\"success\"] === true) {\n return $(\"#on-premise-message\").show();\n }\n }\n });\n\n return true;\n },\n\n failure(error) {\n return true;\n }\n};\n", "/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * DS205: Consider reworking code to avoid use of IIFEs\n * DS207: Consider shorter variations of null checks\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/main/docs/suggestions.md\n */\nconst ready = function() {\n // Pricing V4\n $('.pricing-v4, .pricing-modular').on('click', '.x-show-details', function() {\n $(this).siblings(\".plan-card-features\").removeClass(\"hidden\");\n $(this).addClass(\"hidden\");\n $(this).siblings(\".x-hide-details\").removeClass(\"hidden\");\n return false;\n });\n\n $('.pricing-v4, .pricing-modular').on('click', '.x-hide-details', function() {\n $(this).siblings(\".plan-card-features\").addClass(\"hidden\");\n $(this).addClass(\"hidden\");\n $(this).siblings(\".x-show-details\").removeClass(\"hidden\");\n return false;\n });\n\n if ($(\".pricing-v4\").length > 0) {\n const checked = function() {\n return this.checked;\n };\n const plan = $(\"input[type=radio]\").filter(checked).closest(\".pro-plan\");\n plan.addClass(\"checked\");\n $(\"span.plan-name\").text(plan.data(\"plan-name\"));\n $(\".plan-includes\").text(plan.data(\"plan-includes\"));\n }\n\n $(\".pricing-v4\").on(\"click\", \".pro-plan\", function() {\n $(\".pro-plan\").removeClass(\"checked\");\n $(this).addClass(\"checked\");\n $(this).find(\"input, radio\").prop(\"checked\", true).change();\n $(\"span.plan-name\").text($(this).data(\"plan-name\"));\n $(\".plan-includes\").text($(this).data(\"plan-includes\"));\n $(\".monthly-price\").text($(this).find(\".x-price\").data(\"monthly\"));\n $(\".annual-price\").text($(this).find(\".x-price\").data(\"annual\"));\n $(\".annual-savings\").text($(this).find(\".x-price\").data(\"annual-savings\"));\n $(\".monthly-plan\").val($(this).data(\"monthly\"));\n return $(\".annual-plan\").val($(this).data(\"annual\"));\n });\n\n // if clicked, hide \"View More <section>\" button and show loading gif\n $('.pure-list-item-more').on('click', 'a', function() {\n $(this).parents('.pure-list-item-more').addClass(\"is-loading\");\n return $(this).siblings('.loading').show();\n });\n\n //Pro Access Promos\n $(\".content, .edit-menu\").on(\"click\", \".x_syndicate_facebook\", function() {\n if ($(this).is(':checked')) {\n $(this).prop('checked', false);\n $(\"#syndicate-promo-facebook\").modal();\n\n return BeerMenus.Analytics.track('Viewed facebook um modal', {\n 'pro promo page': 'Edit menu',\n 'Pro promo feature': 'Post to Facebook'\n }\n );\n }\n });\n\n $(\".content, .edit-menu\").on(\"click\", \".x_syndicate_twitter\", function() {\n if ($(this).is(':checked')) {\n $(this).prop('checked', false);\n $(\"#syndicate-promo-twitter\").modal();\n return BeerMenus.Analytics.track('Viewed twitter um modal', {\n 'pro promo page': 'Edit menu',\n 'Pro promo feature': 'Post to Twitter'\n }\n );\n }\n });\n\n $(\".content\").on(\"click\", \".x-promo\", function() {\n $(\"#promo-modal\").modal();\n return false;\n });\n\n // save array of all hours so we can pluck from it later\n const allHoursOptions = $(\"#date_hour > option\");\n\n // Print Menu Font Sizes\n window.bindPrintMenuFonts = function() {\n const section_title_font_size = $(\"#print_menu_profile_section_title_font_size\");\n const flavor_group_title_font_size = $(\"#print_menu_profile_flavor_group_title_font_size\");\n const columns_radio_button = $(\"input[name='print_menu_profile[layout]']\");\n if (!(section_title_font_size.length > 0) || !(flavor_group_title_font_size.length > 0)) { return; }\n columns_radio_button.change(function() {\n if ($(\"input[name='print_menu_profile[layout]']:checked\").val() === \"1\") {\n section_title_font_size.val(\"14\");\n flavor_group_title_font_size.val(\"10\");\n $(\"#print_menu_profile_beer_info_font_id\").prop(\"disabled\", true);\n const beer_name_font = $(\"#print_menu_profile_beer_name_font_id\").val();\n return $(\"#print_menu_profile_beer_info_font_id\").val(beer_name_font);\n } else {\n section_title_font_size.val(\"12\");\n flavor_group_title_font_size.val(\"13\");\n return $(\"#print_menu_profile_beer_info_font_id\").prop(\"disabled\", false);\n }\n });\n\n const sort_options = $(\"input[name='print_menu_profile[sort]']\");\n sort_options.change(() => showFlavorGroupTitleFont());\n\n const show_descriptions = $(\"#print_menu_profile_beer_descriptions\");\n return show_descriptions.change(() => showBeerDescriptionFont());\n };\n\n bindPrintMenuFonts();\n\n window.matchSingleColumnBeerInfoFonts = () => $(\"#print_menu_profile_beer_name_font_id\").change(function() {\n if ($(\"input[name='print_menu_profile[layout]']:checked\").val() === \"1\") {\n const beer_name_font = $(this).val();\n return $(\"#print_menu_profile_beer_info_font_id\").val(beer_name_font);\n }\n });\n\n window.matchSingleColumnBeerInfoFonts();\n\n window.showBeerDescriptionFont = function() {\n const row = $(\"#beer_description_row\");\n if ($(\"#print_menu_profile_beer_descriptions\").is(\":checked\")) {\n row.find(\"select\").prop(\"disabled\", false);\n return row.show();\n } else {\n row.hide();\n return row.find(\"select\").prop(\"disabled\", true);\n }\n };\n\n window.showFlavorGroupTitleFont = function() {\n if ($(\"input[name='print_menu_profile[sort]']:checked\").length === 0) { return; }\n\n const row = $(\"#flavor_group_title_row\");\n const checkboxes = $(\".group-by-style-checkbox\");\n if ($(\"input[name='print_menu_profile[sort]']:checked\").val() === \"2\") {\n row.find(\"select\").prop(\"disabled\", false);\n row.show();\n checkboxes.find(\"input\").prop(\"disabled\", false);\n return checkboxes.removeClass(\"hidden\");\n } else {\n row.hide();\n row.find(\"select\").prop(\"disabled\", true);\n checkboxes.addClass(\"hidden\");\n return checkboxes.find(\"input\").prop(\"disabled\", true);\n }\n };\n\n showFlavorGroupTitleFont();\n\n // Twitter Preview\n $(\".pure-form\").on(\"keyup\", \".twitter-preview-source\", function() {\n $(\".twitter-preview-blank\").addClass(\"hidden\");\n $(\".twitter-preview\").removeClass(\"hidden\");\n let tweetContent = $(this).val();\n const hashtagLength = $(\".twitter-preview\").data(\"hashtag\").length;\n\n if (tweetContent.length > (99 - hashtagLength)) {\n tweetContent = tweetContent.substring(0,97 - hashtagLength) + \"...\";\n }\n\n return $(\".twitter-preview-content\").html(tweetContent);\n });\n\n window.selectTabForAvailability = function(availability) {\n const hash = (() => { switch (availability) {\n case 1: return \"#menu\";\n case 2: return \"#coming_soon\";\n case 3: return \"#private\";\n } })();\n\n if (window.history && history.replaceState) {\n return history.replaceState({}, '', hash);\n }\n };\n\n window.switchToPureTab = function(tabHash) {\n document.querySelector(`.pure-tabs-item[data-hash=\"${tabHash}\"]`).click()\n }\n\n // Pro Payments\n $('.card-on-file').on('click', '.use-new-card', function() {\n $('.pro-sign-up').addClass('card-token');\n $('.card-on-file').hide();\n $('.payment-form').show();\n $('#card_number').focus();\n return false;\n });\n\n $('.payment-form').on('click', '.use-card-on-file', function() {\n $('.pro-sign-up').removeClass('card-token');\n $('.payment-form').hide();\n $('.card-on-file').show();\n return false;\n });\n\n window.bindFeedExpands = function() {\n $('.x-feed-objects').unbind('click');\n $('.x-feed-objects').on('click', '.x-show-updates', function(event) {\n let text;\n event.preventDefault();\n const extra = $(this).parent().parent().find(\".x-extra\");\n\n if (extra.hasClass(\"hidden\")) {\n extra.removeClass(\"hidden\");\n text = $(this).data('hide-text');\n } else {\n extra.addClass(\"hidden\");\n text = $(this).data('show-text');\n }\n\n return $(this).text(text);\n });\n return false;\n };\n window.bindFeedExpands();\n\n $(\".x-block-link\").click(e => false);\n\n // Edit Pro Membership\n const billing_options = $(\"input.billing-option\");\n const button = $(\"#change-plan-button\");\n if ((billing_options.length > 0) && (button.data(\"annual-label\").length > 0)) {\n $(\".pro-sign-up\").on(\"change\", \"input[type='radio']\", function() {\n const plan_selected = $(\"input[name='plan_name']:checked\").val();\n const current_plan = button.data(\"current-plan\");\n const annual_billing = $(\"input.billing-option:checked\").hasClass(\"annual-plan\");\n if ((plan_selected === current_plan) && annual_billing) {\n return button.html(button.data(\"annual-label\"));\n } else {\n return button.html(button.data(\"original-label\"));\n }\n });\n }\n\n // Auto-submit follow button\n if ($(\".action\").hasClass(\"x-auto-submit\")) {\n $(\".x-auto-submit-button\").trigger(\"click\");\n }\n\n // event tracking\n window.trackAndLogEvents = () => $(\".trackable\").click(function() {\n const api_key = process.env.EVENTS_API_KEY;\n const event_type = $(this).attr(\"data-event-type\");\n const bar_id = $(this).attr(\"data-bar-id\");\n $.ajax({\n type: 'POST',\n url: '/api/internal/events',\n data: {\n bar_id,\n event_type,\n api_key\n },\n complete() {\n return true;\n }\n });\n return true;\n });\n\n window.trackAndLogEvents();\n\n window.activateAddressForm = function() {\n window.addressService = AddressService();\n window.initAutocomplete = function() {\n addressService.initAutocomplete();\n return addressService.showFullFormIfJSONAddress(addressService);\n };\n return initGooglePlaces('initAutocomplete');\n };\n\n if ($(\".update-address\").length > 0) {\n return window.activateAddressForm();\n }\n};\n\nif ((typeof Turbolinks === \"undefined\") || Turbolinks.abort) {\n // Desktop (no Turbolinks), mobile web, or legacy iOS client\n $(document).ready(ready);\n $(document).on(\"page:load\", ready);\n} else {\n // Turbolinks v5 iOS client\n $(document).on(\"turbolinks:load\", ready);\n}\n\nwindow.initGooglePlaces = function(callback) {\n if (typeof(google) === \"object\") {\n return window[callback]();\n } else {\n const script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n const key = process.env.GMAPS_V3_KEY;\n script.src = \"//maps.googleapis.com/maps/api/js?key=\" + key + \"&libraries=places&callback=\" + callback;\n return document.body.appendChild(script);\n }\n};\n\nwindow.AddressService = function() {\n const componentForm = {\n locality: 'long_name',\n administrative_area_level_1: 'short_name',\n country: 'long_name',\n postal_code: 'short_name'\n };\n let autocompletedPlace = null;\n const submittedAddress = null;\n let selectedManual = false;\n\n return {\n showFullForm() {\n $(\".enter-address-manually\").addClass(\"hidden\");\n $(\".full-address-form\").removeClass(\"hidden\");\n selectedManual = true;\n $('#autocomplete').attr('placeholder', '155 Water Street');\n return $(\"#enter-address-manually\").addClass(\"hidden\");\n },\n\n showFullFormIfJSONAddress() {\n if ($(\"#has-json-address\").length) {\n window.addressService.showFullForm();\n return false;\n }\n },\n\n initAutocomplete() {\n // if someone clicks enter on autocomplete dropdown, don't submit form\n let changeListener;\n $('.update-address').on('keypress', function(e) {\n if (e.keyCode === 13) {\n return false;\n }\n });\n\n $(\".address-submit\").on(\"click\", () => window.addressService.submitForm());\n\n $(\".show-full-form-link\").on('click', () => window.addressService.showFullForm());\n\n $('#autocomplete').on('input', function() {\n if (!selectedManual) {\n return $(\".enter-address-manually\").removeClass(\"hidden\");\n }\n });\n\n const autocomplete = new google.maps.places.Autocomplete(\n document.getElementById('autocomplete'),\n {types: ['geocode']}\n );\n\n const autocompleteForm = function() {\n $(\".enter-address-manually\").addClass(\"hidden\");\n $(\".full-address-form\").removeClass(\"hidden\");\n $('.x-address-input').addClass(\"bb-0\");\n autocompletedPlace = autocomplete.getPlace();\n return window.addressService.populateFormFields(autocompletedPlace, true);\n };\n\n if ($(\"#autocomplete\").val()) {\n $(\".enter-address-manually\").addClass(\"hidden\");\n $(\".full-address-form\").removeClass(\"hidden\");\n }\n\n return changeListener = google.maps.event.addListener(autocomplete, 'place_changed', autocompleteForm);\n },\n\n submitForm() {\n const street_address = $(\".address\").val();\n const city = $(\".city\").val();\n const state = $(\".state\").val();\n const zipcode = $(\".zipcode\").val();\n\n if (street_address && city && state && zipcode) {\n $(\".update-address button[type='submit']\").first().prop(\"disabled\", true);\n $(\".update-address button[type='submit']\").first().innerHTML = $(\".update-address .pure-button\").data(\"disable-with\");\n\n // submit the form after geocoding of the manually typed in address occurs\n this.geocode(() => $(\".update-address\").trigger(\"submit.rails\"));\n } else {\n $(\".update-address\").trigger(\"submit.rails\");\n }\n\n return false;\n },\n\n // geocode all input in case the autopopulated address was overwritten\n geocode(callback) {\n BeerMenus.Analytics.track(\"Geocoding\", {stack: \"shared/shared.coffee#395\"});\n const geocoder = new (google.maps.Geocoder);\n\n const street_address = $(\".address\").prop(\"value\");\n const city = $(\".city\").prop(\"value\");\n const state = $(\".state\").prop(\"value\");\n const zipcode = $(\".zipcode\").prop(\"value\");\n const country = $(\".country\").prop(\"value\");\n\n const address = [street_address, city, state, zipcode, country].join(' ');\n\n return geocoder.geocode({ \"address\": address }, function(results, status) {\n window.addressService.populateFormFields(results[0], false);\n return callback();\n });\n },\n\n populateFormFields(place, includeUserFields) {\n $(\".error-msg\").addClass(\"hidden\");\n\n if (place != null ? place.address_components : undefined) {\n let i = 0;\n let addressLineOne = '';\n let city = \"\";\n\n // reset auto-populated fields\n const fields = [\"address\", \"neighborhood\", \"sublocal\", \"local\", \"state\", \"zipcode\", \"country\"];\n fields.forEach(field => $(`.geo-${field}`).prop(\"value\", null));\n\n while (i < place.address_components.length) {\n var addressType = place.address_components[i].types[0];\n var short_value = place.address_components[i]['short_name'];\n var long_value = place.address_components[i]['long_name'];\n\n switch (addressType) {\n case \"route\":\n addressLineOne += \" \" + long_value;\n if (includeUserFields) { $('.address').prop(\"value\", addressLineOne); }\n $('.geo-address').prop(\"value\", addressLineOne);\n break;\n case \"street_number\": addressLineOne = short_value; break;\n case \"neighborhood\": $(\".geo-neighborhood\").prop(\"value\", long_value); break;\n case \"sublocality_level_1\":\n $(\".geo-sublocal\").prop(\"value\", long_value);\n // use this instead of city if it is in the full address\n if (place.formatted_address.includes(long_value)) {\n city = long_value;\n }\n break;\n case \"locality\":\n $(\".geo-local\").prop(\"value\", long_value);\n // fall back to this for city when it hasn't already been filled in\n if (city === \"\") { city = long_value; }\n break;\n case \"administrative_area_level_2\": $(\".geo-county\").prop(\"value\", long_value); break;\n case \"administrative_area_level_1\":\n if (includeUserFields) { $(\".state\").prop(\"value\", short_value); }\n $(\".geo-state\").prop(\"value\", short_value);\n break;\n case \"postal_code\":\n if (includeUserFields) { $(\".zipcode\").prop(\"value\", long_value); }\n $(\".geo-zipcode\").prop(\"value\", long_value);\n break;\n case \"country\":\n if (includeUserFields) { $(\".country\").prop(\"value\", long_value); }\n $(\".geo-country\").prop(\"value\", long_value);\n break;\n }\n i++;\n }\n\n $(\".latitude\").val(place.geometry.location.lat());\n $(\".longitude\").val(place.geometry.location.lng());\n if (includeUserFields) {\n $(\".city\").prop(\"value\", city);\n return $(\".full-address\").val(place.formatted_address);\n }\n } else {\n // reset lat/lng, because we couldn't geocode address\n $(\".latitude\").prop(\"value\", null);\n return $(\".longitude\").prop(\"value\", null);\n }\n }\n };\n};\n", "require(\"./beermenus\")\n\nrequire(\"../extensions\")\nrequire(\"../models\")\n\nrequire(\"./analytics\")\nrequire(\"./checklists\")\nrequire(\"./dom\")\nrequire(\"./input-focuser\")\nrequire(\"./messages\")\nrequire(\"./modals\")\nrequire(\"./on-premise-tracker\")\nrequire(\"./shared\")\n", "/* eslint no-console:0 */\n\n// CSS\nimport \"../styles/application.scss\"\n\nimport { Application } from \"@hotwired/stimulus\"\nwindow.Stimulus = { \"application\": Application.start() }\n\nimport controllers from \"./controllers/**/*.js\"\nObject.entries(controllers).forEach(([filename, controller]) => {\n if (filename.includes(\"_controller.\") || filename.includes(\"-controller.\")) {\n const identifier = filename.replace(\"./controllers/\", \"\")\n .replace(/[_-]controller..*$/, \"\")\n .replace(\"_\", \"-\")\n .replace(\"/\", \"--\")\n\n Stimulus.application.register(identifier, controller.default)\n }\n})\n\n// vendor\nimport Dialog from \"@stimulus-components/dialog\"\nimport Dropdown from \"@stimulus-components/dropdown\"\nStimulus.application.register(\"dialog\", Dialog)\nStimulus.application.register(\"dropdown\", Dropdown)\n\nimport {} from \"jquery-ujs\"\nimport {} from \"sticky-kit/dist/sticky-kit\"\nwindow.Cookies = require(\"js-cookie\")\nrequire(\"waypoints/lib/jquery.waypoints.js\")\nrequire(\"bootstrap/js/modal\")\n\n// internal\nrequire(\"./shared\")\n"], "mappings": "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", "names": ["init_rails", "__esmMin", "$", "undefined", "rails", "$document", "xhr", "token", "obj", "name", "data", "event", "message", "options", "element", "method", "url", "withCredentials", "dataType", "button", "settings", "status", "error", "originAnchor", "urlAnchor", "e", "link", "href", "target", "csrfToken", "csrfParam", "form", "metadataInput", "selector", "replacement", "answer", "callback", "specifiedSelector", "nonBlank", "foundInputs", "input", "valueToCheck", "radiosForNameWithNoneSelected", "radioName", "requiredInputs", "checkedRadioButtonNames", "originalOptions", "metaClick", "handleRemote", "remote", "blankRequiredInputs", "nonBlankFileInputs", "aborted", "require_sticky_kit", "__commonJSMin", "exports", "$", "win", "opts", "doc", "elm", "enable_bottoming", "inner_scrolling", "manual_spacer", "offset_top", "outer_width", "parent_selector", "recalc_every", "sticky_class", "_fn", "_i", "_len", "el", "computed", "w", "_el", "padding_bottom", "parent_top", "parent_height", "top", "height", "el_float", "detached", "bottomed", "detach", "fixed", "last_pos", "last_scroll_height", "offset", "parent", "recalc", "recalc_and_tick", "recalc_counter", "spacer", "tick", "border_top", "padding_top", "restore", "css", "delta", "recalced", "scroll", "will_bottom", "win_height", "require_js_cookie", "__commonJSMin", "exports", "module", "factory", "registeredInModuleLoader", "OldCookies", "api", "extend", "result", "attributes", "key", "init", "converter", "value", "expires", "e", "stringifiedAttributes", "attributeName", "cookies", "rdecode", "i", "parts", "cookie", "name", "require_jquery_waypoints", "__commonJSMin", "keyCounter", "allWaypoints", "Waypoint", "options", "direction", "args", "method", "allWaypointsArray", "waypointKey", "i", "end", "requestAnimationFrameShim", "callback", "contexts", "oldWindowLoad", "Context", "element", "waypoint", "axis", "horizontalEmpty", "verticalEmpty", "isWindow", "self", "resizeHandler", "scrollHandler", "triggeredGroups", "axes", "axisKey", "isForward", "wasBeforeTriggerPoint", "nowAfterTriggerPoint", "crossedForward", "crossedBackward", "groupKey", "contextOffset", "adjustment", "oldTriggerPoint", "elementOffset", "freshWaypoint", "contextModifier", "wasBeforeScroll", "nowAfterScroll", "triggeredBackward", "triggeredForward", "contextId", "requestFn", "byTriggerPoint", "a", "b", "byReverseTriggerPoint", "groups", "Group", "waypoints", "reverse", "index", "isLast", "$", "JQueryAdapter", "createExtension", "framework", "overrides", "require_modal", "__commonJSMin", "$", "Modal", "element", "options", "_relatedTarget", "that", "e", "transition", "callback", "animate", "doAnimate", "callbackRemove", "modalIsOverflowing", "fullWindowWidth", "documentElementRect", "bodyPad", "scrollbarWidth", "index", "actualPadding", "calculatedPadding", "padding", "scrollDiv", "Plugin", "option", "$this", "data", "old", "href", "target", "$target", "showEvent", "require_array_join_sentence", "__commonJSMin", "oxford_comma", "lastWord", "require_extensions", "__commonJSMin", "Accordion", "accordion_default", "init_accordion", "__esmMin", "AlgoliaSource", "algolia_source_default", "init_algolia_source", "__esmMin", "algoliasearch", "autocomplete", "indexName", "filters", "client", "BeerAutocompleteSuggestion", "beer_autocomplete_suggestion_default", "init_beer_autocomplete_suggestion", "__esmMin", "template", "hit", "suggestion", "meta", "BeerMetadata", "beer_metadata_default", "init_beer_metadata", "__esmMin", "hit", "abv", "Browser", "init_browser", "__esmMin", "MenuSections", "init_menu_sections", "__esmMin", "productType", "Servings", "init_servings", "__esmMin", "productType", "isEdit", "offset", "sortable", "id", "name", "style_id", "abv", "form", "inputs", "containerInput", "message", "element", "ScriptInserter", "init_script_inserter", "__esmMin", "id", "src", "callback", "script", "StripeLoader", "init_stripe_loader", "__esmMin", "stripe", "elements", "event", "displayError", "stripeTokenHandler", "token", "form", "$form", "createToken", "$original_label", "result", "errorElement", "stripePaymentMethodHandler", "$disabled_label", "e", "xhr", "radio", "TvMenuLoader", "init_tv_menu_loader", "__esmMin", "refreshRate", "nextUrl", "specialRefreshRate", "onSpecial", "threeHours", "data", "textStatus", "jqXHR", "screen", "models_exports", "init_models", "__esmMin", "init_accordion", "init_algolia_source", "init_beer_autocomplete_suggestion", "init_beer_metadata", "init_browser", "init_debouncer", "init_menu_sections", "init_servings", "init_script_inserter", "init_stripe_loader", "init_tv_menu_loader", "accordion_default", "algolia_source_default", "beer_autocomplete_suggestion_default", "beer_metadata_default", "Browser", "Debouncer", "MenuSections", "Servings", "ScriptInserter", "StripeLoader", "TvMenuLoader", "require_checklists", "__commonJSMin", "$input", "barID", "partial", "hash", "driver", "element", "position", "highlight", "tab", "require_dom", "__commonJSMin", "html", "element", "require_input_focuser", "__commonJSMin", "selector", "node", "require_messages", "__commonJSMin", "message", "cssClass", "iconClass", "require_modals", "__commonJSMin", "html", "selector", "require_on_premise_tracker", "__commonJSMin", "latitude", "longitude", "data", "status", "xhr", "error", "require_shared", "__commonJSMin", "ready", "checked", "plan", "allHoursOptions", "section_title_font_size", "flavor_group_title_font_size", "columns_radio_button", "beer_name_font", "row", "checkboxes", "tweetContent", "hashtagLength", "availability", "hash", "tabHash", "event", "text", "extra", "e", "billing_options", "button", "plan_selected", "current_plan", "annual_billing", "api_key", "event_type", "bar_id", "callback", "script", "key", "componentForm", "autocompletedPlace", "submittedAddress", "selectedManual", "changeListener", "autocomplete", "autocompleteForm", "street_address", "city", "state", "zipcode", "geocoder", "country", "address", "results", "status", "place", "includeUserFields", "i", "addressLineOne", "field", "addressType", "short_value", "long_value", "require_shared", "__commonJSMin", "application_shared_exports", "import_sticky_kit", "init_application_shared", "__esmMin", "init_", "init_stimulus", "init__", "init_stimulus_dialog", "init_stimulus_dropdown", "init_rails", "Application", "__default", "filename", "controller", "identifier", "Dialog", "Dropdown"] }